diff --git a/.document b/.document index 230c50e3874960..746ca2929d1617 100644 --- a/.document +++ b/.document @@ -14,3 +14,6 @@ lib # and some of the ext/ directory (which has its own .document file) ext + +# rdoc files +doc/*.rdoc diff --git a/.gdbinit b/.gdbinit index a542b71ba002cd..ab3962fe041e25 100644 --- a/.gdbinit +++ b/.gdbinit @@ -614,8 +614,68 @@ define rb_p call rb_p($arg0) end +define rb_numtable_entry + set $rb_numtable_tbl = $arg0 + set $rb_numtable_id = (st_data_t)$arg1 + set $rb_numtable_key = 0 + set $rb_numtable_rec = 0 + if $rb_numtable_tbl->entries_packed + set $rb_numtable_p = $rb_numtable_tbl->bins + while $rb_numtable_p && $rb_numtable_p < $rb_numtable_tbl->bins+$rb_numtable_tbl->num_entries + if (st_data_t)$rb_numtable_p[0] == $rb_numtable_id + set $rb_numtable_key = (st_data_t)$rb_numtable_p[0] + set $rb_numtable_rec = (st_data_t)$rb_numtable_p[1] + set $rb_numtable_p = 0 + else + set $rb_numtable_p = $rb_numtable_p + 2 + end + end + else + set $rb_numtable_p = $rb_numtable_tbl->bins[$rb_numtable_id % $rb_numtable_tbl->num_bins] + while $rb_numtable_p + if $rb_numtable_p->key == $rb_numtable_id + set $rb_numtable_key = $rb_numtable_p->key + set $rb_numtable_rec = $rb_numtable_p->record + set $rb_numtable_p = 0 + else + set $rb_numtable_p = $rb_numtable_p->next + end + end + end +end + define rb_id2name - call rb_id2name($arg0) + rb_numtable_entry global_symbols.id_str (ID)$arg0 + if $rb_numtable_rec + rp $rb_numtable_rec + else + echo undef\n + end +end +document rb_id2name + Print the name of id +end + +define rb_method_entry + set $rb_method_entry_klass = (struct RClass *)$arg0 + set $rb_method_entry_id = (ID)$arg1 + set $rb_method_entry_me = (rb_method_entry_t *)0 + while !$rb_method_entry_me && $rb_method_entry_klass + rb_numtable_entry $rb_method_entry_klass->m_tbl $rb_method_entry_id + set $rb_method_entry_me = (rb_method_entry_t *)$rb_numtable_rec + if !$rb_method_entry_me + set $rb_method_entry_klass = (struct RClass *)$rb_method_entry_klass->ptr->super + end + end + if $rb_method_entry_me + print *$rb_method_entry_klass + print *$rb_method_entry_me + else + echo method not found\n + end +end +document rb_method_entry + Search method entry by class and id end define rb_classname @@ -652,3 +712,41 @@ define iseq print *(ADJUST*)($arg0) end end + +define rb_ps + rb_ps_vm ruby_current_vm +end +document rb_ps +Dump all threads and their callstacks +end + +define rb_ps_vm + print $ps_vm = (rb_vm_t*)$arg0 + set $ps_threads = (st_table*)$ps_vm->living_threads + if $ps_threads->entries_packed + set $ps_threads_i = 0 + while $ps_threads_i < $ps_threads->num_entries + set $ps_threads_key = (st_data_t)$ps_threads->bins[$ps_threads_i * 2] + set $ps_threads_val = (st_data_t)$ps_threads->bins[$ps_threads_i * 2 + 1] + rb_ps_thread $ps_threads_key $ps_threads_val + set $ps_threads_i = $ps_threads_i + 1 + end + else + set $ps_threads_ptr = (st_table_entry*)$ps_threads->head + while $ps_threads_ptr + set $ps_threads_key = (st_data_t)$ps_threads_ptr->key + set $ps_threads_val = (st_data_t)$ps_threads_ptr->record + rb_ps_thread $ps_threads_key $ps_threads_val + set $ps_threads_ptr = (st_table_entry*)$ps_threads_ptr->fore + end + end +end +document rb_ps_vm +Dump all threads in a (rb_vm_t*) and their callstacks +end + +define rb_ps_thread + set $ps_thread = (struct RTypedData*)$arg0 + set $ps_thread_id = $arg1 + print $ps_thread_th = (rb_thread_t*)$ps_thread->data +end diff --git a/.gitignore b/.gitignore index ff509d4ffcaf06..645d1c4f022c73 100644 --- a/.gitignore +++ b/.gitignore @@ -45,6 +45,8 @@ /enc/trans/*.c /encdb.h /ext/win32ole/.document +/goruby +/id.h /largefile.h /lex.c /libruby*.* diff --git a/ChangeLog b/ChangeLog index 03c64fbd5dcfe6..02d08825234f3d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,2810 @@ +Wed Dec 2 23:51:28 2009 NAKAMURA, Hiroshi + + * ext/openssl/ossl_ssl.c: initialize @hostname of SSLSocket to avoid + warning at SSLSocket#connect. + +Tue Dec 1 18:01:43 2009 NAKAMURA, Hiroshi + + * test/digest/test_digest_extend.rb: added tests for digest framework. + +Tue Dec 1 12:01:13 2009 Nobuyoshi Nakada + + * parse.y (dyna_push_gen, dyna_pop_gen): no needs to save both of + args and vars. [ruby-core:26961] + + * parse.y (dyna_push_gen): use rb_node_newnode() for ripper. + [ruby-core:26961] + + * parse.y (dyna_push_gen, dyna_pop_gen): adjust local vtable level + for the case of syntax errors in method name or argument inside + do block. [ruby-core:26961] + +Mon Nov 30 16:57:45 2009 Nobuyoshi Nakada + + * ext/extmk.rb (command_output): $makeflags are already quoted. + +Mon Nov 30 16:54:22 2009 Nobuyoshi Nakada + + * configure.in, win32/Makefile.sub (EXECUTABLE_EXTS): moved from + dln.c:dln_find_1(). + + * lib/mkmf.rb (def find_executable0): use EXECUTABLE_EXTS, not + only EXEEXT. [ruby-core:26821] + +Mon Nov 30 11:00:12 2009 Nobuyoshi Nakada + + * parse.y (parser_yylex): suppress an extra error message after + numeric literal without digits. based on a patch from ujihisa . + in [ruby-dev:39811]. [ruby-dev:39798] + +Sun Nov 29 16:56:24 2009 Nobuyoshi Nakada + + * vm_eval.c (check_funcall_failed): pass ID. [ruby-core:26934] + +Sun Nov 29 06:37:53 2009 Aaron Patterson + + * lib/rexml/formatters/default.rb (write_attribute): fix an + exception when printing a document when duplicate namespaced + attributes exist. Thanks, Alexey Froloff [ruby-core:26837] + +Sat Nov 28 09:05:53 2009 Yukihiro Matsumoto + + * vm_eval.c (check_funcall_failed): should rescue user raised + NoMethodError. rescue all NoMethodError if receiver does not + respond to the method name. [ruby-dev:39796] + +Thu Nov 26 21:14:30 2009 Yuki Sonoda (Yugui) + + * test/ruby/test_complex.rb (@unify): fix the detection if math + loaded. This makes test_complex.rb work fine with the previous + commit. + + * test/ruby/test_rational.rb (@unify): ditto. + +Thu Nov 26 21:13:36 2009 Yuki Sonoda (Yugui) + + * test/test_mathn.rb (TestMathn): new test case. + test for r25067. + +Thu Nov 26 21:11:23 2009 Yuki Sonoda (Yugui) + + * test/openssl/test_config.rb (OpenSSL::TestConfig): new test case. + test for r25017. + +Thu Nov 26 21:08:54 2009 Yuki Sonoda (Yugui) + + * test/ruby/test_range.rb (TestRange#test_comparison_when_recursive): + test for r25010. + + * test/ruby/test_struct.rb (TestStruct#test_comparison_when_recursive): + ditto. + +Thu Nov 26 20:18:02 2009 NARUSE, Yui + + * gem_prelude.rb (Gem.set_home): must dup before force_encoding + and must force_encoding before gsub. + cf. Yen Sign problem of SJIS [ruby-core:26910] + +Thu Nov 26 17:54:37 2009 NAKAMURA Usaku + + * win32/{configure.bat, setup.mak, Makefile.sub}: add new configure + option ``--with-ntver''. + +Thu Nov 26 11:42:22 2009 Nobuyoshi Nakada + + * test/mkmf/base.rb: use $INCFLAGS to add -I option. [Bug#2387] + +Thu Nov 26 07:17:58 2009 wanabe + + * marshal.c (mark_dump_arg): mark str. see also [ruby-dev:39735] + +Thu Nov 26 00:05:58 2009 NAKAMURA, Hiroshi + + * test/digest/test_digest_extend.rb: Added tests for current digest + framework. + +Wed Nov 25 20:46:37 2009 Tanaka Akira + + * vm_eval.c (rb_search_method_entry): refine error message. + +Wed Nov 25 19:29:05 2009 Akinori MUSHA + + * ext/digest/digest.c (rb_digest_instance_method_unimpl): Do not + call rb_inspect() on an object that does not implement necessary + methods; reported by NaHi. + +Wed Nov 25 19:30:30 2009 Martin Duerst + + * transcode.c: Added a check for an internal error + (with Tatsuya Mizuno) + +Tue Nov 24 22:57:46 2009 Tanaka Akira + + * test/ruby/envutil.rb (EnvUtil.invoke_ruby): raise Timeout::Error + instead of flunk. reported by Yusuke Endoh. + +Tue Nov 24 22:31:44 2009 Yusuke Endoh + + * vm.c (ruby_vm_destruct, thread_memsize): fix argument type to make + RUBY_MARK_FREE_DEBUG available. + +Tue Nov 24 21:25:21 2009 Tanaka Akira + + * error.c: include errno.h at beginning. + +Tue Nov 24 20:11:37 2009 Tanaka Akira + + * strftime.c: %Y format a year with 4 digits at least. + + * lib/time.rb: format a year with 4 digits at least. + +Tue Nov 24 20:05:27 2009 Tanaka Akira + + * defs/known_errors.def: more errors. + +Tue Nov 24 20:01:49 2009 Tanaka Akira + + * include/ruby/ruby.h (rb_bug_errno): declared. + + * include/ruby/intern.h (rb_strerrno): declaration removed. + + * error.c (rb_strerrno): make it static. return NULL for unknown + errors. + (rb_bug_errno): defined. + + * thread_pthread.c: use rb_bug_errno. + + * signal.c (ruby_signal): use rb_bug_errno. + +Tue Nov 24 10:17:38 2009 NARUSE, Yui + + * file.c (file_path_convert): fix fs_encoding is not assign. + +Tue Nov 24 10:00:00 2009 Nobuyoshi Nakada + + * error.c (rb_strerrno): constified. + +Tue Nov 24 09:49:31 2009 Tanaka Akira + + * error.c (rb_strerrno): return "UNKNOWNERROR" for non-zero unknown + error. + +Tue Nov 24 09:18:33 2009 Tanaka Akira + + * include/ruby/intern.h (rb_strerrno): declared. + + * template/known_errors.inc.tmpl: generate defined_error() and + undefined_error() instead of set_syserr. + + * error.c (Init_syserr): define defined_error() and undefined_error() + to follow the above change. + (rb_strerrno): defined. + + * thread_pthread.c: show error message and errno macro name with + rb_bug. + +Mon Nov 23 16:06:53 2009 Nobuyoshi Nakada + + * thread_pthread.c (RUBY_STACK_MIN, RUBY_STACK_SPACE): delay for + platforms where PTHREAD_STACK_MIN is not compile time constant. + [ruby-dev:39751] + +Mon Nov 23 11:26:45 2009 Nobuyoshi Nakada + + * dln.c (dln_find_1): removed duplication. + +Mon Nov 23 04:12:00 2009 Tanaka Akira + + * enc/trans/newline.trans (fun_so_universal_newline): generate \n + after \r\n detection instead of just after \r. + [ruby-list:45988] [ruby-core:25881] [ruby-core:26788] + +Sat Nov 21 18:48:35 2009 Tanaka Akira + + * vm_eval.c (rb_search_method_entry): show flags and klass value in + not implemented error message. + +Sat Nov 21 16:38:50 2009 Nobuyoshi Nakada + + * marshal.c (marshal_dump): use normal object as the buffer so + that no hidden object is exposed to ruby-level. [ruby-dev:39744] + +Sat Nov 21 15:58:43 2009 NARUSE, Yui + + * io.c (read_all): fix: false negative invalid byte seequence + on reading from pipes. [ruby-dev:39743] + fix: assigin the variable 'pos' as relative value from recent pos. + +Sat Nov 21 14:44:16 2009 NARUSE, Yui + + * file.c (file_path_convert): delay getting UTF8-MAC encoding + while really needed. [ruby-core:26807] + +Fri Nov 20 21:16:54 2009 Tanaka Akira + + * vm_eval.c (rb_search_method_entry): avoid trigraph. + +Thu Nov 19 23:17:06 2009 Shugo Maeda + + * lib/net/ftp.rb (putbinaryfile): use APPE for resume. + Thanks, Tomoyuki Chikanaga. + +Thu Nov 19 22:50:05 2009 Shugo Maeda + + * lib/net/imap.rb (flag_list): untaint strings to intern in the safe + level 1. + + * lib/net/imap.rb (max_flag_count=): new methods to set the max + number of flags interned to symbols. + +Thu Nov 19 20:43:39 2009 NAKAMURA Usaku + + * ext/socket/getnameinfo.c: need to include extconf.h for HAVE_* macros. + reported by Kenta Murata via IRC. + +Thu Nov 19 17:00:59 2009 NAKAMURA Usaku + + * win32/Makefile.sub: nmake execute the file named echo if it exists + in the PATH. reported by Kenta Murata via IRC. + +Thu Nov 19 02:50:47 2009 Tanaka Akira + + * vm_eval.c (rb_search_method_entry): show the type of the hidden + object. + (rb_type_str): new function for above. + +Thu Nov 19 00:47:09 2009 Tanaka Akira + + * io.c (MORE_CHAR_SUSPENDED): renamed from MORE_CHAR_CBUF_FULL. + +Wed Nov 18 22:00:13 2009 Tanaka Akira + + * io.c (fill_cbuf): extracted from more_char. + (io_shift_cbuf): fix memmove condition. + (read_all): use fill_cbuf directly to avoid ECONV_AFTER_OUTPUT. + [ruby-dev:39708] + +Wed Nov 18 18:25:09 2009 Nobuyoshi Nakada + + * thread.c (rb_thread_atfork_internal): reinitialize global lock + at fork to get rid of deadlock. based on the patch from Hongli + Lai in [ruby-core:26783]. [ruby-core:23572] + +Wed Nov 18 17:48:22 2009 Nobuyoshi Nakada + + * thread.c (terminate_atfork_i): all mutex locks by other threads + have been abandoned at fork. + +Wed Nov 18 15:27:20 2009 NAKAMURA Usaku + + * file.c (file_path_convert): delay getting filesystem encoding + while really needed. + +Wed Nov 18 12:33:42 2009 NARUSE, Yui + + * encoding.c (enc_set_default_encoding): reset filesytem + encoding because on resetting default_external because + Unix's filesystem encoding depends on default_external. + + * encoding.c (enc_set_filesystem_encoding): added. + + * ruby.c (process_options): don't call rb_filesystem_encoding + because filesystem encoding is reset when default_external + is reset. + +Wed Nov 18 11:57:32 2009 TAKANO Mitsuhiro (takano32) + + * math.c (math_gamma): fix incorrect comparison expression. + see also [ruby-dev:39709] [Bug #2381] + +Wed Nov 18 11:37:05 2009 NARUSE, Yui + + * io.c (rb_scan_open_args): move path encoding conversion + for filesystem encoding of Mac OS X. + + * file.c (file_path_convert): added for convert encoding + of file path. + + * file.c (rb_get_path_check): add file_path_convert. + +Wed Nov 18 10:17:09 2009 Nobuyoshi Nakada + + * string.c (str_utf8_nth): no count_utf8_lead_bytes_with_word + optimization for short string. [ruby-core:26787] + + * string.c (str_utf8_offset): str_utf8_nth never return NULL. + +Wed Nov 18 10:12:34 2009 Shugo Maeda + + * vm_method.c (rb_undef): should raise TypeError if klass is nil. + 1.instance_eval { undef to_s } causes SEGV before this fix. + + * test/ruby/test_undef.rb: new tests for undef. + +Wed Nov 18 08:41:42 2009 Nobuyoshi Nakada + + * string.c (str_utf8_nth): fixed overrun. [ruby-core:26787] + +Wed Nov 18 07:51:01 2009 Tanaka Akira + + * io.c (parse_mode_enc): fix invalid access. + +Tue Nov 17 23:50:06 2009 Shugo Maeda + + * vm_method.c (rb_alias): should raise TypeError if klass is nil. + 1.instance_eval { alias to_string to_s } causes SEGV before this + fix. + + * test/ruby/test_alias.rb (test_special_const_alias): ditto. + +Tue Nov 17 17:53:53 2009 Martin Duerst + + * enc/big5.c, enc/trans/big5.trans, enc/trans/big5-uao-tbl.rb, + test/ruby/test-transcode.rb: Added Encoding 'Big5-UAO' and transcoding + for it (from Tatsuya Mizuno) (see Bug #1784) + +Tue Nov 17 16:26:24 2009 Nobuyoshi Nakada + + * insns.def (opt_case_dispatch): runtime value cannot be used as + an element initializer. + + * vm_insnhelper.c (opt_case_dispatch_i): gets rid of type-punning + calls. + +Mon Nov 16 15:51:53 2009 Shugo Maeda + + * vm_insnhelper.c (vm_call_method): protected singleton methods of + an object should not be able to called from other instances of the + class of the object. [ruby-core:26761] + + * vm_eval.c (rb_method_call_status): ditto. + + * test/ruby/test_module.rb (test_protected_singleton_method): ditto. + +Mon Nov 16 14:03:53 2009 wanabe + + * io.c (read_all): shift read buffer if exception occured. + pointed out in [ruby-dev:39702]. + +Mon Nov 16 07:59:38 2009 wanabe + + * io.c (read_all): don't call io_shift_cbuf until bufffering enough or + econv_finished. [ruby-dev:39696] + + * io.c (more_char): don't call clear_readconv to read buffer after + econv_finished. + + * io.c (appendline, rb_io_each_codepoint): clear readconv when done. + +Mon Nov 16 01:58:08 2009 Yusuke Endoh + + * include/ruby/ruby.h (rb_classext_t): annotate @internal. + +Mon Nov 16 01:35:34 2009 Tanaka Akira + + * encoding.c (rb_filesystem_encindex): use default external encoding + instead of locale encoding in Unix. + + * ruby.c (process_options): delay filesystem encoding + initialization until default external encoding initialization. + +Mon Nov 16 00:06:26 2009 Yusuke Endoh + + * thread.c (thread_cleanup_func): delete locking_mutex when thread + object become dummy because of fork. [ruby-core:26744] + [ruby-core:26745] + + * bootstraptest/test_thread.rb: add a test for above. + +Sat Nov 14 21:54:46 2009 Yusuke Endoh + + * class.c (rb_mod_init_copy): fix memory leak of Class#dup. + [ruby-dev:39687] + +Sat Nov 14 17:09:39 2009 Nobuyoshi Nakada + + * configure.in (--with-opt-dir): ignore and suppress a warning. + [ruby-dev:39684] + +Sat Nov 14 16:43:24 2009 Nobuyoshi Nakada + + * hash.c (ruby_setenv): get rid of crash in Solaris 8 and 10. + [ruby-core:26668] + +Sat Nov 14 09:16:54 2009 Marc-Andre Lafortune + + * ext/bigdecimal/bigdecimal.c (BigDecimalCmp): Fix comparisons + [ruby-core:26646] + + * test/bigdecimal/test_bigdecimal.rb (class): Fix and improve tests. + +Sat Nov 14 04:07:06 2009 Hidetoshi NAGAI + + * ext/tk/lib/tk/variable.rb (TkVariable::coerce): fix bug on a + numeric value. + +Sat Nov 14 03:35:29 2009 Hidetoshi NAGAI + + * ext/tk/lib/tk/variable.rb: TkVariable#*(other) and /(other) have a + bug on handling of the "other" value. + +Fri Nov 13 21:18:15 2009 Yusuke Endoh + + * ext/zlib/zlib.c (rb_zlib_adler32): fix typo. + +Fri Nov 13 16:22:00 2009 Nobuyoshi Nakada + + * thread.c (thread_start_func_2): see first_func, not first_proc, + to decide which to use. + + * gc.c (vm_xrealloc): use the given object space. + +Fri Nov 13 00:46:24 2009 Takeyuki FUJIOKA + + * lib/cgi/util.rb (CGI::pretty): fix the overflow bug + if stripped string.[ruby-dev:37975] + +Thu Nov 12 23:08:11 2009 Takeyuki FUJIOKA + + * lib/cgi/core.rb (read_from_cmdline): this code is better. + [ruby-core:25991] + +Thu Nov 12 22:55:42 2009 Takeyuki FUJIOKA + + * lib/net/telnet.rb: don't use simple delegate. + because SimpleDelegate behavior changed. + +Thu Nov 12 14:33:21 2009 Nobuyoshi Nakada + + * thread_win32.c (thread_errno): CreateThread does not set errno. + + * thread.c (thread_create_core): moved failure handling from + native_thread_core(). + + * thread_pthread.c (native_thread_create): constified. + +Thu Nov 12 10:08:56 2009 NARUSE, Yui + + * .document: remove documents not in rdoc format until + rdoc supports non rdoc files. [ruby-core:26459] + +Thu Nov 12 06:42:38 2009 Nobuyoshi Nakada + + * lib/tempfile.rb (Tempfile#initialize): option hash may not be + given. [ruby-core:26681] + +Thu Nov 12 01:29:15 2009 Yusuke Endoh + + * enumerator.c (yielder_yield_push): Yielder#<< should return self. + [ruby-dev:39660] + +Wed Nov 11 19:17:35 2009 Nobuyoshi Nakada + + * lib/tempfile.rb (Tempfile#initialize): merge mode option. + + * lib/tmpdir.rb (Dir::Tmpname#create): splat options. + +Wed Nov 11 12:54:02 2009 Nobuyoshi Nakada + + * hash.c (ruby_setenv): use ruby_strdup(). + +Wed Nov 11 12:19:27 2009 NAKAMURA Usaku + + * hash.c (ruby_setenv): also set CRT workarea. ref [ruby-core:25010] + +Wed Nov 11 09:36:02 2009 Nobuyoshi Nakada + + * marshal.c (w_object, r_object0): use RHASH_IFNONE but not ifnone + directly. + +Wed Nov 11 08:32:45 2009 Tanaka Akira + + * thread.c (blocking_region_begin): define before BLOCKING_REGION. + reported by Luis Lavena. [ruby-core:26670] + +Wed Nov 11 08:22:19 2009 Tanaka Akira + + * util.c (ruby_strtod): use dval() consistently. + +Wed Nov 11 02:14:48 2009 Yuki Sonoda (Yugui) + + * test/matrix/test_matrix.rb (TestMatrix#test_rank): + added a test method for r24969. + +Tue Nov 10 08:23:21 2009 Nobuyoshi Nakada + + * process.c (rb_f_exec, rb_f_system, rb_f_spawn): mentioned abou + the shell to be used when the command line is single string. + See [ruby-core:26652] + +Mon Nov 9 20:15:16 2009 Tanaka Akira + + * thread.c (rb_gc_save_machine_context): don't save the stack pointer + in this function. + (RB_GC_SAVE_MACHINE_CONTEXT): call rb_gc_save_machine_context and + save the stack pointer at caller side. + (rb_thread_schedule_rec): use RB_GC_SAVE_MACHINE_CONTEXT instead of + rb_gc_save_machine_context. + (blocking_region_begin): changed to a macro. use + RB_GC_SAVE_MACHINE_CONTEXT instead of rb_gc_save_machine_context. + [ruby-dev:39659] + +Mon Nov 9 11:28:29 2009 Nobuyoshi Nakada + + * configure.in (warnflags): add -Wno-long-long. + +Sun Nov 8 18:13:12 2009 Nobuyoshi Nakada + + * hash.c: use RHASH_IFNONE but not ifnone directly. + +Sat Nov 7 21:02:57 2009 Tanaka Akira + + * lib/pp.rb (PP::ObjectMixin#pretty_print): use to_s regardless of + instance variables. + +Sat Nov 7 20:59:11 2009 Nobuyoshi Nakada + + * vm_insnhelper.c (vm_push_frame): get rid of out-of-bounds + access. + +Sat Nov 7 12:41:19 2009 Yukihiro Matsumoto + + * vm_insnhelper.c (VM_CALLEE_SETUP_ARG): revert r25521. + [ruby-core:26427] [ruby-core:26447] + +Fri Nov 6 18:33:47 2009 Yukihiro Matsumoto + + * vm_insnhelper.c (vm_push_frame): add CHECK_STACK_OVERFLOW. + [ruby-dev:39592] + + * eval.c (rb_longjmp): add 1 level backtrace for sysstack_error + without calling any method to prevent further stack overflow. + + * eval.c (make_exception): don't call #exception for + sysstack_error to prevent stack overflow. + + * proc.c (Init_Proc): don't freeze sysstack_error. + + * eval.c (rb_longjmp): move reentrant check after exception + preparation. + +Fri Nov 6 17:13:45 2009 Nobuyoshi Nakada + + * lib/mkmf.rb (create_header): split the line by tabs. + +Fri Nov 6 12:02:32 2009 NARUSE, Yui + + * configure.in (MINIDLNOBJ): set default as dmydln.o. + Now LLVM clang seems to be able to build Ruby 1.9. + +Fri Nov 6 09:29:32 2009 NARUSE, Yui + + * encoding.c (rb_filesystem_encindex): add fallback to + ASCII-8BIT on Windows. + +Fri Nov 6 07:29:07 2009 Kazuhiro NISHIYAMA + + * test/ruby/test_case.rb: merged r25658 from ruby_1_8. + +Thu Nov 5 12:27:07 2009 NARUSE, Yui + + * gem_prelude.rb (Gem.user_home): force_encoding( + Encoding.find('filesystem')). [ruby-core:26525] + +Thu Nov 5 07:47:31 2009 Nobuyoshi Nakada + + * parse.y (BEGIN): now local_push and local_pop are necessary in + ripper. + +Wed Nov 4 21:39:10 2009 NARUSE, Yui + + * .document: add some README files to default rdoc's of trunk. + patched by Roger Pack [ruby-core:26459] + +Wed Nov 4 16:06:11 2009 Nobuyoshi Nakada + + * include/ruby/st.h (SIZEOF_ST_INDEX_T): moved from st.c for + Init_RandomSeed(). + +Wed Nov 4 15:50:16 2009 URABE Shyouhei + + * include/ruby/ruby.h (NUM2CHR): prefix __extension__ for + braced-groups within expressions. + +Wed Nov 4 15:46:30 2009 Nobuyoshi Nakada + + * ruby.c (set_{internal,external}_encoding_once): fixed typos. + +Wed Nov 4 12:49:18 2009 Marc-Andre Lafortune + + * proc.c (mnew): Fix scope issue [ruby-core:26069] + +Wed Nov 4 08:50:51 2009 Nobuyoshi Nakada + + * random.c (rb_hash_start): moved from string.c. + + * random.c (Init_RandomSeed2): register global address before set. + + * random.c (Init_RandomSeed): initialize hashseed. + +Wed Nov 4 08:26:00 2009 Nobuyoshi Nakada + + * dir.c (dir_check): moved other checks from GetDIR. + + * dir.c (GetDIR): fixed a variable name. + +Wed Nov 4 08:19:31 2009 Nobuyoshi Nakada + + * cont.c (rb_fiber_start): fixed unconditional test. + +Wed Nov 4 02:08:14 2009 Aaron Patterson + + * ext/dl/cptr.c (rb_dlptr_eql, rb_dlptr_cmp): DL::CPtr#== and DL::CPtr#<=> + should not raise an exception when compared to a different object. + +Wed Nov 4 00:05:36 2009 NARUSE, Yui + + * string.c (rb_str_upto): make next object before yield its block. + fix: can modify original begin string of String#upto. + [ruby-dev:26384] [ruby-dev:39626] + +Mon Nov 2 18:33:21 2009 wanabe + + * cont.c (fiber_free): don't free unallocated local_storage. see #1325. + + * cont.c (cont_init): clear local_storage not to use current thread's. + + * cont.c (fiber_t_alloc, root_fiber_alloc): link itself always for + a case that fiber_link_remove() is called before fiber_link_join(). + + * cont.c (fiber_init): clear cont->vm_stack and th->stack before + root_fiber_alloc() in rb_fiber_current(). + +Mon Nov 2 14:52:53 2009 Nobuyoshi Nakada + + * eval.c (rb_exc_raise, rb_exc_fatal, rb_make_exception): + suppressed shorten-64-to-32 warnings. + +Mon Nov 2 14:43:48 2009 NAKAMURA Usaku + + * thread_pthread.c (native_stop_timer_thread): delay joining timer + thread after unlocking mutex. + +Mon Nov 2 13:31:14 2009 NAKAMURA Usaku + + * thread_pthread.c (native_stop_timer_thread): need to join timer thread + only when really stopping it. + +Mon Nov 2 12:55:50 2009 NAKAMURA Usaku + + * thread_{pthread,win32}.c (native_stop_timer_thread): join the thread + here. + + * thread_{pthread,win32}.c (native_reset_timer_thread): new function. + + * thread.c (rb_thread_stop_timer_thread, rb_thread_reset_timer_thread): + call above function instead of simply setting 0. + +Mon Nov 2 11:22:19 2009 NARUSE, Yui + + * ext/dl/win32/lib/win32/registry.rb: update rdoc. [ruby-core:26022] + +Sun Nov 1 20:16:03 2009 NARUSE, Yui + + * ext/bigdecimal/bigdecimal.c: fixed rdoc. [ruby-core:26457] + +Sun Nov 1 16:24:16 2009 Nobuyoshi Nakada + + * configure.in (rb_cv_stack_grow_dir): fix for universal binary. + + * configure.in (sitehdrdir, vendorhdrdir): fixed default values. + +Sun Nov 1 13:31:16 2009 wanabe + + * win32/win32.c (overlapped_socket_io, recvmsg, sendmsg): pass handle + instead of pointer to CloseHandle(). + +Sun Nov 1 13:11:27 2009 wanabe + + * ext/socket/socket.c (socket_s_ip_address_list): use FreeLibrary() to + free HMODULE. + +Sun Nov 1 08:17:48 2009 Nobuyoshi Nakada + + * gc.c (GET_STACK_BOUNDS): refactored common code. based on a + patch from Suraj N. Kurapati in + [ruby-core:26443]. + +Sat Oct 31 23:44:35 2009 Yukihiro Matsumoto + + * enum.c (enum_count): remove optimization using #size. + revert r25560. + + * vm_eval.c (rb_funcall_no_recursive): remove method. + +Sat Oct 31 23:28:49 2009 Yukihiro Matsumoto + + * vm_eval.c (check_funcall): logic updated according to + [ruby-dev:39594]. search method entry, call if it exists; + otherwise check method_missing, call if it was overridden, + protecting exceptions; if NoMethodError happens, check method + name. + + * vm_eval.c (vm_call0): use idMethodMissing. + + * vm_eval.c (rb_search_method_entry): typo fixed. + +Sat Oct 31 17:19:28 2009 NAKAMURA, Hiroshi + + * lib/net/http.rb (Net::HTTPResponse#each_response_header): + cosmetic: '?\ ' -> '?\s' + +Fri Oct 30 22:09:47 2009 NAKAMURA, Hiroshi + + * lib/net/http.rb (Net::HTTPResponse#each_response_header): + accept multiline message header of HTTP response. see #1796. + cf. RFC 2616 '4.2 Message Header'. + + * test/net/http/test_httpresponse.rb: added. + +Fri Oct 30 18:54:04 2009 Yukihiro Matsumoto + + * string.c (trnext): detect empty range and raise exception. + [ruby-dev:39108] + +Fri Oct 30 17:01:46 2009 Nobuyoshi Nakada + + * vm_eval.c (enum call_type): get rid of last comma. + + * vm_eval.c (vm_call0, vm_call_super, rb_f_send, rb_f_public_send): + fixed call_type. [ruby-dev:39581] + + * vm_eval.c (rb_search_method_entry, rb_method_call_status): split + from rb_call0(). + + * vm_eval.c (rb_check_funcall): get rid of raising exceptions and + hiding further exceptions. [ruby-dev:39584] + + * vm_eval.c (rb_funcall_no_recursive): ditto. + +Fri Oct 30 13:36:39 2009 Nobuyoshi Nakada + + * thread.c (rb_thread_blocking_region): reverted r25566, and added + description that no exception is allowed inside `func', instead. + see [ruby-dev:39582] + +Fri Oct 30 13:13:16 2009 NAKAMURA Usaku + + * win32.c (recvmsg, sendmsg, link): shouldn't raise ruby's exceptions + in the functions expected as system API. see [ruby-dev:39579] and + [ruby-dev:39582] + +Fri Oct 30 12:59:20 2009 NAKAMURA Usaku + + * thread.c (rb_thread_blocking_region): standard C doesn't accept + preprocessing directive within macro expansion. + +Fri Oct 30 10:55:36 2009 Nobuyoshi Nakada + + * thread.c (rb_thread_blocking_region): must ensure to unlock GVL. + [ruby-dev:39579] + +Fri Oct 30 04:47:26 2009 Nobuyoshi Nakada + + * include/ruby/ruby.h (RSTRING_END): trivial optimization. + + * string.c (rb_str_sub_bang): trivial optimization. + +Fri Oct 30 02:11:36 2009 Yukihiro Matsumoto + + * enum.c (enum_count): call #size using rb_funcall_no_recursive() + to prevent infinite recursive calls. [ruby-core:24794] + + * vm_eval.c (rb_funcall_no_recursive): utility function to check + direct recursive call. + + * vm_eval.c (rb_check_funcall): move from eval.c. [refactoring] + +Thu Oct 29 18:37:02 2009 NARUSE, Yui + + * encoding.c (Init_Encoding): revert previous commit. + + * ruby.c (process_options): ditto. + +Thu Oct 29 15:35:39 2009 NARUSE, Yui + + * encoding.c (Init_Encoding): set locale and filesystem encindex. + + * ruby.c (process_options): move setting func of filesystem + encoding to Init_Encoding. + +Thu Oct 29 15:43:25 2009 Nobuyoshi Nakada + + * vm_core.h (rb_name_err_mesg_new): added prototype. + +Thu Oct 29 13:53:18 2009 Yukihiro Matsumoto + + * array.c (rb_ary_to_ary): do not use #respond_to? to detect + to_ary. Just call. [ruby-core:23738] + + * eval.c (rb_check_funcall): new function with method existence + check. returns Qundef when the method does not exist. + + * enumerator.c (enumerator_rewind): just call method, using + rb_check_funcall(). [ruby-core:23738] + + * error.c (exc_equal): ditto. + + * object.c (convert_type): ditto. + + * error.c (rb_name_err_mesg_new): export function. + + * eval.c (make_exception): ditto. + + * io.c (pop_last_hash): return early when the last argument is nil. + + * io.c (rb_io_puts): treat T_STRING specially for small + optimization. + + * vm_eval.c (raise_method_missing): skip method call if possible + using rb_method_basic_definition_p(). + + * vm_eval.c (method_missing): ditto. + + * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_debug): test + suites changed to ignore exceptions caused by just-call policy. + +Thu Oct 29 04:41:44 2009 NARUSE, Yui + + * ruby.c (process_options): call rb_filesystem_encoding(). + +Thu Oct 29 04:40:36 2009 NARUSE, Yui + + * io.c (Init_IO): rb_default_rs should be US-ASCII. + +Thu Oct 29 01:22:01 2009 Yutaka Kanemoto + + * ext/socket/extconf.rb : Compilation failure on AIX. + ss_len (a member of struct sockaddr_storage) has preceding __, + but ss_family does not have it from AIX 5.2. + +Wed Oct 28 16:32:49 2009 NARUSE, Yui + + * encoding.c (get_filesystem_encoding): removed. + + * encoding.c (rb_locale_encindex): added. + + * encoding.c (rb_filesystem_encindex): added. + + * encoding.c (rb_filesystem_encindex): add an alias 'filesystem'. + [ruby-dev:39574] + + * encoding.c (enc_find): add rdoc about special aliases. + + * gem_prelude.rb (Gem.set_home): use Encoding.find('filesystem'). + + * gem_prelude.rb (Gem.set_paths): ditto. + +Wed Oct 28 15:02:31 2009 NARUSE, Yui + + * gem_prelude.rb (Gem.set_home): + force_encoding(Encoding.filesystem_encoding) + [ruby-core:25959] + + * gem_prelude.rb (Gem.set_paths): ditto. + +Wed Oct 28 14:24:45 2009 NARUSE, Yui + + * encoding.c (get_filesystem_encoding): + add Encoding.filesystem_encoding [ruby-dev:39546] + also see [ruby-core:25959] + +Wed Oct 28 14:51:31 2009 Nobuyoshi Nakada + + * ext/etc/etc.c (etc_each_group): fixed typo. + + +Wed Oct 28 13:02:10 2009 Shugo Maeda + + * lib/net/ftp.rb (Net::FTP#initialize): sets @binary to true. + + * lib/net/ftp.rb (Net::FTP#binary=): sends a TYPE command only when + logged in. [ruby-dev:39548] + + * lib/net/ftp.rb (Net::FTP#send_type_command): new private method + which sends an appropriate TYPE command according to the value of + @binary. + + * lib/net/ftp.rb (Net::FTP#login): calls send_type_command instead + of binary=. + +Wed Oct 28 12:26:51 2009 Yukihiro Matsumoto + + * vm_insnhelper.c (vm_setup_method): should push call frame before + raising exception, to put the Ruby-defined method name in the + error message. [ruby-core:26333] + + * vm_insnhelper.c (VM_CALLEE_SETUP_ARG): macro modified. + + * vm_insnhelper.c (vm_yield_setup_args): modified for new + VM_CALLEE_SETUP_ARG macro. + +Tue Oct 27 22:46:44 2009 NARUSE, Yui + + * lib/net/ftp.rb (Net::FTP#initialize): @sock = nil. + + * lib/net/ftp.rb (Net::FTP#binary=): send command only when + socket is open. [ruby-dev:39548] + +Tue Oct 27 22:22:38 2009 Nobuyoshi Nakada + + * ext/stringio/stringio.c (Init_stringio): added read_nonblock and + write_nonblock aliases. [ruby-dev:39551] + + * ext/stringio/stringio.c (strio_data_type): typed. + +Tue Oct 27 21:20:35 2009 Hidetoshi NAGAI + + * ext/tk/lib/tk/variable.rb: add TkVariable#+@ and -@ method. + +Tue Oct 27 16:36:52 2009 Nobuyoshi Nakada + + * string.c (chopped_length): get rid of unexpected exception. + see [ruby-core:26336]. + +Tue Oct 27 15:53:10 2009 Tanaka Akira + + * gc.h (SET_MACHINE_STACK_END): use __i386. + Some compiler may not define __i386__. + Solaris 64-bit Developer's Guide: + http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view + +Tue Oct 27 15:44:48 2009 Shugo Maeda + + * lib/net/ftp.rb (getbinaryfile, list): call to_s to convert + a Pathname instance into a string. [ruby-core:26237] + +Tue Oct 27 12:30:16 2009 Nobuyoshi Nakada + + * gc.h (SET_MACHINE_STACK_END): use __i386__ instead of __i386, + and explicit size qualifiers. + +Tue Oct 27 09:40:55 2009 NARUSE, Yui + + * gc.h (SET_MACHINE_STACK_END): add x86_64 version by nobu. + +Tue Oct 27 09:27:59 2009 NARUSE, Yui + + * vm_exec.c (DECL_SC_REG): use __clang__. + +Tue Oct 27 08:56:11 2009 Nobuyoshi Nakada + + * mkconfig.rb: reverted r25443 because build_os is used in mkmf.rb + on some platforms. [ruby-core:26332] + +Tue Oct 27 08:01:57 2009 Kazuhiro NISHIYAMA + + * parse.y (ripper_filename): add Ripper#filename. [ruby-dev:37856] + + * test/ripper/test_filter.rb: add more tests. + +Tue Oct 27 07:53:25 2009 Yukihiro Matsumoto + + * gc.c (garbage_collect_with_gvl): do not garbage_collect when + dont_gc flag turned on. [ruby-core:26327] + +Tue Oct 27 07:38:39 2009 Hidetoshi NAGAI + + * ext/tk/tcltklib.c,stubs.c: remove errors or warnings when compiled + with old ruby 1.8.x. + + * ext/tk/tkutil/tkutil.c: ditto. + +Tue Oct 27 05:56:39 2009 NARUSE, Yui + + * vm.c (invoke_block_from_c): return Qnil when its iseq is + SPECIAL CONST. [ruby-core:26335] + +Tue Oct 27 05:11:49 2009 NARUSE, Yui + + * vm_exec.c (DECL_SC_REG): check defined(__asm__) before use it. + LLVM/clang defines __GNUC__ but doesn't have __asm__. + +Tue Oct 27 03:45:39 2009 Nobuyoshi Nakada + + * win32/Makefile.sub (config.h): added RUBY_SITEARCH to use + different name from RUBY_ARCH. [ruby-core:26324] + +Mon Oct 26 20:04:13 2009 Marc-Andre Lafortune + + * array.c (rb_ary_cmp): Array#<=> returns nil when comparison fails + [ruby-core:26316] + +Mon Oct 26 18:37:57 2009 Yukihiro Matsumoto + + * hash.c (default_proc_arity_check): new support function. + + * hash.c (rb_hash_initialize): should do arity check as #default_proc=. + [ruby-core:26281] + +Mon Oct 26 13:24:17 2009 Hidetoshi NAGAI + + * ext/tk/lib/remote-tk.rb: typo fixed. + +Mon Oct 26 12:34:08 2009 Yusuke Endoh + + * ruby.c (usage): -T and -W descriptions updated. see + [ruby-dev:39539] + + * man/ruby.1: ditto. + +Mon Oct 26 12:06:27 2009 Nobuyoshi Nakada + + * io.c (io_fwrite): adjust stdio file position after direct write on + BSDish platforms. [ruby-core:26300] + +Sun Oct 25 15:44:24 2009 Nobuyoshi Nakada + + * ext/dl/handle.c (dlhandle_sym): fixed an invalid local variable + declaration. + +Sun Oct 25 13:33:58 2009 Nobuyoshi Nakada + + * io.c (io_cntl): F_DUPFD is platform dependent. + +Sun Oct 25 10:19:09 2009 Nobuyoshi Nakada + + * ext/dl/handle.c (rb_dlhandle_close): fixed an invalid local + variable declaration. + +Sun Oct 25 05:44:34 2009 Marc-Andre Lafortune + + * lib/matrix.rb (**): Optimization (up to 45% faster) + +Sat Oct 24 14:28:40 2009 Yukihiro Matsumoto + + * hash.c (rb_hash_set_default_proc): checks arity of default_proc + of a Hash. [ruby-core:26087] + +Sat Oct 24 13:38:45 2009 Yukihiro Matsumoto + + * object.c (rb_obj_cmp): defines Object#<=>. [ruby-core:24063] + +Sat Oct 24 09:51:28 2009 Yukihiro Matsumoto + + * enum.c (enum_flat_map): new method that concatenates the values + from given block. also provides alias #collect_concat. + +Sat Oct 24 00:36:47 2009 Tanaka Akira + + * io.c (io_cntl): update max file descriptor by the result of + fcntl(F_DUPFD). + +Fri Oct 23 16:31:14 2009 Yukihiro Matsumoto + + * class.c (rb_class_new): move class check to rb_check_inheritable(). + + * class.c (rb_check_inheritable): should not allow subclass of + class Class. [ruby-core:26225] + +Fri Oct 23 14:25:54 2009 Nobuyoshi Nakada + + * configure.in (target, target_alias): replace with real cpu. + + * mkconfig.rb: build* are not needed in rbconfig.rb. + + * configure.in (warnflags): use -Wextra only when + -Wno-missing-field-initializers is available. + + * configure.in (optflags): removed -fomit-frame-pointer by default. + +Fri Oct 23 09:12:59 2009 Nobuyoshi Nakada + + * lib/pathname.rb (Pathname::SAME_PATHS): FNM_SYSCASE is always + non-nil. + +Fri Oct 23 07:32:37 2009 Nobuyoshi Nakada + + * configure.in, Makefile.in, win32/Makefile.sub (XRUBY): runnable + ruby without current libraries. + + * common.mk (rdoc): use XRUBY. + +Fri Oct 23 07:28:50 2009 Nobuyoshi Nakada + + * configure.in (warnflags): use -Wextra instead of -Wall. + + * gc.c (mark_current_machine_context): get rid of warning. + +Thu Oct 22 21:10:39 2009 NAKAMURA Usaku + + * class.c (rb_obj_basic_to_s_p): typo. Please become familiar with + the ANSI style. + +Thu Oct 22 20:20:27 2009 Tanaka Akira + + * test/ruby/envutil.rb (assert_in_out_err): test_stdout and + test_stderr should be an array. + + * test/ruby/test_rubyoptions.rb (test_notfound): test_stdin of + assert_in_out_err should be a string. + +Thu Oct 22 17:49:05 2009 Akinori MUSHA + + * lib/fileutils.rb (FileUtils#fu_get_uid, fu_get_gid): Do not + convert an integer back and forth. + +Thu Oct 22 17:29:51 2009 Nobuyoshi Nakada + + * parse.y (arg_prepend): removed. a patch from Mikhail T. in + [ruby-core:26217]. + +Thu Oct 22 04:54:41 2009 Yukihiro Matsumoto + + * object.c (rb_obj_inspect): print instance variables only when + Object#to_s is not overridden. [ruby-core:24425] + + * class.c (rb_obj_basic_to_s_p): new function. + +Wed Oct 21 19:32:52 2009 Nobuyoshi Nakada + + * object.c (rb_obj_inspect): fixed rdoc about the case that to_s + is called. [ruby-core:24425] + +Wed Oct 21 08:17:17 2009 Nobuyoshi Nakada + + * test/logger/test_logger.rb (TestLogDevice#test_write): check + also error message. + +Wed Oct 21 03:54:41 2009 Marc-Andre Lafortune + + * lib/matrix.rb: + Creator functions now strict with their arguments + Support for empty matrices (see new method Matrix.empty) + Matrix#trace raises an ErrDimensionMismatch if the matrix is not square + Enumerators are returned when no block given + Consistent results when accessing elements with out of bounds indices + Details in [ruby-core:23598]. + +Wed Oct 21 00:27:15 2009 NAKAMURA, Hiroshi + + * lib/webrick/httpauth/digestauth.rb: typo in exception message fixed. + +Wed Oct 21 00:17:28 2009 NAKAMURA, Hiroshi + + * lib/logger.rb: imported upstream version (logger/1.2.7) see #2238. + * do not raise an exception even if log writing failed. + * do not raise ShiftingError if an aged file already exists. + (no ShiftingError will be raised from 1.2.7, just warn() instead) + * test/logger/test_logger.rb: ditto. + +Tue Oct 20 22:29:06 2009 Keiju Ishitsuka + + * lib/matrix.rb: Bug fix. See detail [ruby-core:23598]. + +Tue Oct 20 17:57:31 2009 Nobuyoshi Nakada + + * marshal.c (w_symbol, r_symreal): fixed the order of symbol and + its encoding modifier, in order to make the dump readable from + 1.8. [ruby-dev:39515] + +Tue Oct 20 16:41:18 2009 NAKAMURA Usaku + + * include/ruby/win32.h (finite, scalb): inline'ed non-standard + identifier macros. [ruby-core:26166] + +Tue Oct 20 15:38:02 2009 Nobuyoshi Nakada + + * parse.y (ripper_intern): enable literal optimization. + + * parse.y (method_call): dispatch symbols. a patch from Andy Keep in + [ruby-core:26169]. [ruby-core:26165] + + * parse.y (mlhs_basic): fixed handling splat in middle of mlhs. a + patch from Andy Keep in [ruby-core:26163] + + * parse.y (parser_here_document): dispatch delayed heredoc + contents. based on a patch from Andy Keep in [ruby-core:24855]. + +Mon Oct 19 15:17:29 2009 Nobuyoshi Nakada + + * .gdbinit (rb_method_entry): search method entry by class and id. + +Mon Oct 19 15:03:31 2009 NAKAMURA Usaku + + * win32/Makefile.sub (enc/unicode/name2ctype.h): no need to create + directory if it already exists. + +Mon Oct 19 11:34:38 2009 Nobuyoshi Nakada + + * .gdbinit (rb_ps): dump all threads and their callstacks. based + on [ruby-core:26155] by Joshua ben Jore . + +Mon Oct 19 10:59:36 2009 Nobuyoshi Nakada + + * iseq.c (prepare_iseq_build, rb_iseq_build_for_ruby2cext): + untrust mark array. [ruby-core:26137] + +Mon Oct 19 05:49:53 2009 Marc-Andre Lafortune + + * lib/rexml/element.rb (text=): false should be converted to string. + A patch by Teruo Oshida [ruby-dev:38351] + +Sun Oct 18 22:33:25 2009 Tadayoshi Funaba + + * lib/date.rb: do not require lib/delta.rb. + + * lib/date/delta.rb: follows the above change. + +Sun Oct 18 19:14:21 2009 Tanaka Akira + + * parse.y (is_special_global_name): add boundary check. + +Sun Oct 18 18:31:58 2009 Nobuyoshi Nakada + + * ruby.c (ruby_init_loadpath_safe): should not dup tmp string. a + patch from neomjp neomjp in [ruby-core:24251]. + +Sun Oct 18 09:49:14 2009 Yuki Sonoda (Yugui) + + * test/test_prime.rb + (TestPrime#test_eratosthenes_works_fine_after_timeout): + test for [ruby-dev:39465]. + + * lib/prime.rb (Prime::EratosthenesSieve): + fixed [ruby-dev:39465]. + suppressed memory reallocation. + constantified some magic numbers. + +Sat Oct 17 22:11:03 2009 Nobuyoshi Nakada + + * marshal.c (id2encidx): register encoding name. + (r_object0): register object before encoding name. + [ruby-core:24882] + +Sat Oct 17 17:56:58 2009 Yuki Sonoda (Yugui) + + * test/rake/test_fileutils.rb (Rake::TestFileUtils#test_sh): uses + FileUtils::RUBY instead of fixed "ruby" so that the ruby command + works fine in Ruby's "make test-all". + (test_sh_with_a_single_string_argument): ditto. + (test_sh_with_multiple_arguments): ditto. + (test_sh_failure): ditto + (test_sh_special_handling): ditto. + +Sat Oct 17 17:30:06 2009 Yusuke Endoh + + * bignum.c (big_split): fix off-by-one error. [ruby-dev:39501] + +Sat Oct 17 16:34:27 2009 Tanaka Akira + + * parse.y (parser_yylex): fix token even after trailing under score. + +Sat Oct 17 11:27:44 2009 Yukihiro Matsumoto + + * vm_method.c (basic_obj_respond_to): call #respond_to_missing? + always with two arguments. [ruby-core:26090] + +Sat Oct 17 08:51:44 2009 Yukihiro Matsumoto + + * lib/delegate.rb (Delegator#respond_to_missing): warn only when + specified method is a private. [ruby-dev:39498] + +Fri Oct 17 00:05:53 2009 wanabe + + * st.c (unpack_entries): save table->bins and never change the table + during unpacking. Because st_insert() may cause GC and refer the + table, i.e. st_foreach(). [Bug #2196] + +Fri Oct 16 22:20:25 2009 Tanaka Akira + + * prelude.rb (require_relative): defined as a module function of + Kernel. + +Fri Oct 16 20:18:28 2009 Yukihiro Matsumoto + + * lib/delegate.rb (Delegator#method_missing): remove backtrace + lines _until_ `method_missing'. + +Fri Oct 16 20:09:55 2009 Yukihiro Matsumoto + + * lib/delegate.rb (Delegator#freeze): #freeze should freeze self + and the target at once. [ruby-core:26118] + +Fri Oct 16 19:39:28 2009 Yukihiro Matsumoto + + * lib/delegate.rb (Delegator#respond_to_missing): warn if optional + include_private argument is not false. Delegator does (and + should) not forward private methods. [ruby-core:26080] + + * lib/delegate.rb (Delegator#respond_to_missing): instead of + redefining #respond_to?, use #respond_to_missing?. [ruby-core:26081] + +Fri Oct 16 18:42:18 2009 Nobuyoshi Nakada + + * bootstraptest/test_gc.rb: added tests based on [ruby-dev:39484] + from wanabe . + +Fri Oct 16 16:09:01 2009 NAKAMURA Usaku + + * win32/win32.c (rb_w32_spawn): `\'' is also quote character. + +Fri Oct 16 13:40:09 2009 Nobuyoshi Nakada + + * gc.h (rb_gc_debug_body): constified. + +Fri Oct 16 13:20:39 2009 NARUSE, Yui + + * ext/bigdecimal/bigdecimal.c (VpMidRound): remove warnings. + patch from Charlie Savage. [ruby-core:22869] + + * ext/digest/bubblebabble/bubblebabble.c (bubblebabble_str_new): ditto. + + * ext/digest/digest.c (hexencode_str_new): ditto. + + * ext/iconv/iconv.c (iconv_convert): ditto. + + * ext/socket/socket.c (inspect_sockaddr): ditto. + + * ext/socket/raddrinfo.c (sockaddr_obj): ditto. + + * ext/syck/emitter.c (syck_emitter_write): ditto. + + * ext/syck/emitter.c (syck_emitter_flush): ditto. + + * ext/syck/emitter.c (syck_emit_tag): ditto. + +Fri Oct 16 12:03:31 2009 NARUSE, Yui + + * lib/csv.rb (CSV#raw_encoding): returns ASCII-8BIT when the io + doesn't have encoding. + +Fri Oct 16 03:15:52 2009 NARUSE, Yui + + * lib/csv.rb (CSV#read_to_char): set encoding and verify data + which read from io before encode it to @encoding. + + * lib/csv.rb (CSV#raw_encoding): add to get @io's encoding. + + * lib/csv.rb (CSV#read_io): add to read string and set @io's + encoding. + +Thu Oct 15 18:26:12 2009 Nobuyoshi Nakada + + * parse.y (rb_intern3): check symbol table overflow before generate + next id. [ruby-core:26092] + +Thu Oct 15 15:14:15 2009 Nobuyoshi Nakada + + * io.c (io_encoding_set): get rid of parsing non-ascii string, and + refine messages for invalid name encoding. + + * io.c (io_reopen): unread current buffer before telling the + position, for the case of reopening same file. [ruby-dev:39479] + +Thu Oct 15 14:20:58 2009 Nobuyoshi Nakada + + * ext/iconv/iconv.c (iconv_create): cannot retry with given block. + [ruby-dev:39487] + +Thu Oct 15 09:25:07 2009 NAKAMURA Usaku + + * ext/socket/init.c (rsock_init_sock): mswin doesn't have S_IFSOCK + flag in st_mode of struct stat. so, use rb_w32_issocket() function + instead of S_ISSOCK macro. + +Thu Oct 15 00:47:42 2009 NARUSE, Yui + + * tool/enc-unicode.rb, + enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt, + enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src: + use UTS#18 for POSIX character class. + http://rubyspec.org/issues/show/161 + +Thu Oct 15 00:26:07 2009 Tanaka Akira + + * ext/socket/init.c (rsock_init_sock): validate file descriptor. + +Wed Oct 14 13:24:14 2009 Nobuyoshi Nakada + + * ruby.c (process_options): script name should not be shown in an + error message before loaded. + +Wed Oct 14 09:06:38 2009 Nobuyoshi Nakada + + * eval.c (ruby_run_node): need to call ruby_cleanup() always even + if any error occurred so far. + +Wed Oct 14 08:08:12 2009 Marc-Andre Lafortune + + * proc.c (mnew): Method#new checks for respond_to_missing? with + private set to true + [ruby-core:26069] + +Tue Oct 13 21:05:01 2009 NARUSE, Yui + + * tool/enc-unicode.rb, + enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt, + enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src: + Add DerivedCoreProperties, PropList (Binary Property), + PropertyAlias and PropertyValueAlias. + Now users of tool/enc-unicode.rb should specify + the directory of UCD files. + +Tue Oct 13 18:54:25 2009 Hidetoshi NAGAI + + * ext/tk/variable.rb: bug fix. additional trace definition changes the + option of first trace definition. + +Tue Oct 13 18:23:17 2009 Nobuyoshi Nakada + + * parse.y (token_info_push, token_info_pop): reduced ifdefs. + + * parse.y (parser_magic_comment): fixed normalization. + +Tue Oct 13 09:04:14 2009 Marc-Andre Lafortune + + * thread.c: Revert changes to Thread#raise made in r25278 + [ruby-core:25367] + + * eval_intern.h: ditto + +Mon Oct 12 23:27:57 2009 Shugo Maeda + + * lib/net/ftp.rb (login): use "anonymous@" as a default password. + [ruby-dev:39451] + +Mon Oct 12 22:48:25 2009 Shugo Maeda + + * lib/net/ftp.rb (retrlines): added a new block parameter. + + * lib/net/ftp.rb (gettextfile): preserve missing end-of-line at end + of files. [ruby-core:24590] + +Mon Oct 12 19:48:33 2009 Nobuyoshi Nakada + + * eval.c (ruby_run_node): if an exception occurred in ruby_option, + the result is not executable. + +Mon Oct 12 05:51:11 2009 NARUSE, Yui + + * regparse.c (fetch_token): warn invalid back reference + and subexp call. (\k and \g). + +Mon Oct 12 03:47:42 2009 NARUSE, Yui + + * marshal.c (has_encoding): added for check the regexp + is dumped by 1.8 or 1.9. + + * marshal.c (r_object0): use has_encoding. + +Sun Oct 11 15:54:52 2009 Nobuyoshi Nakada + + * ext/gdbm/gdbm.c (fgdbm_select): fixed rdoc. a patch from Justin + Collins in [ruby-core:26050]. + +Sun Oct 11 10:27:09 2009 Nobuyoshi Nakada + + * lib/irb/context.rb (IRB::Context#irb_name): removed duplicated + attr_reader. [ruby-core:26047] + + * lib/irb/ruby-lex.rb (RubyLex#lex_int2): removed duplicated + character class range. + +Sun Oct 11 10:04:35 2009 NARUSE, Yui + + * regparse.c (fetch_token_in_cc): warn when \p is not + followed by property name. + + * regparse.c (fetch_token): ditto. + +Sun Oct 11 09:44:46 2009 NARUSE, Yui + + * regerror.c (onig_vsnprintf_with_pattern): added. + + * regparse.c (onig_syntax_warn): use above. + +Sun Oct 11 09:04:08 2009 Nobuyoshi Nakada + + * include/ruby/ruby.h (RB_GC_GUARD_PTR): workaround for gcc + optimization. + + * include/ruby/ruby.h (ruby_exec_node): declared. + +Sun Oct 11 03:10:50 2009 NARUSE, Yui + + * regparse.c (onig_syntax_warn): added. + + * regparse.c (CC_ESC_WARN, CLOSE_BRACKET_WITHOUT_ESC_WARN, + CC_DUP_WARN, UNKNOWN_ESC_WARN): use onig_syntax_warn. + +Sun Oct 11 00:14:38 2009 Nobuyoshi Nakada + + * marshal.c (marshal_dump, marshal_load): prevent from GC. + +Sat Oct 10 23:57:44 2009 Nobuyoshi Nakada + + * file.c (path_check_0): prevent from GC. + +Sat Oct 10 23:51:22 2009 Nobuyoshi Nakada + + * transcode.c (rb_transcoding, str_transcoding_resize): fixed + types. + +Sat Oct 10 20:35:27 2009 Yuki Sonoda (Yugui) + + * math.c (math_atanh): reverted r25279. + +Sat Oct 10 19:03:29 2009 Tanaka Akira + + * ext/curses/curses.c: use rb_thread_blocking_region to avoid + rb_read_check. This makes other threads runnable in getstr and + wgetstr. + (getch_func): extracted from curses_getch. + (curses_getch): use rb_thread_blocking_region with getch_func. + (getstr_func): extracted from curses_getstr. + (curses_getstr): use rb_thread_blocking_region with getstr_func. + (wgetch_func): extracted from window_getch. + (window_getch): use rb_thread_blocking_region with wgetch_func. + (wgetstr_func): extracted from window_getstr. + (window_getstr): use rb_thread_blocking_region with wgetstr_func. + + * include/ruby/io.h (rb_read_check): deprecated because it access + internal of stdio. + +Sat Oct 10 18:59:17 2009 Nobuyoshi Nakada + + * configure.in (cflags, cxxflags): remove duplicating options. + +Sat Oct 10 18:19:03 2009 Nobuyoshi Nakada + + * configure.in, Makefile.in (LIBRUBY_SO), common.mk (ruby.imp), + win32/mkexports.rb (each_export): exclude _threadptr_ functions. + +Sat Oct 10 17:55:57 2009 Nobuyoshi Nakada + + * eval.c (rb_threadptr_errinfo): renamed. + +Sat Oct 10 17:03:22 2009 Nobuyoshi Nakada + + * eval.c (ruby_exec_node): removed unused argument. + +Sat Oct 10 14:55:55 2009 Marc-Andre Lafortune + + * math.c (math_atanh): Fix bug for Math.atanh(+/-1). It now returns + +-Infinity. [ruby-core:26028] + +Sat Oct 10 14:09:40 2009 Marc-Andre Lafortune + + * thread.c (rb_threadptr_execute_interrupts_rec, rb_threadptr_raise): + Thread#raise with no argument will now re-raise the current exception + if there is one [ruby-core:25367] + + * eval.c (get_errinfo, rb_rubylevel_thread_errinfo): Getter for + current exception for a given thread + +Fri Oct 9 23:10:04 2009 Yukihiro Matsumoto + + * vm_method.c (rb_method_boundp): should exclude NOEX_RESPONDS. + based on the patch from Nikolai Lugovoi. [ruby-core:25949] + +Fri Oct 9 21:14:40 2009 Tanaka Akira + + * lib/resolv.rb (Resolv::DNS::Requester::ConnectedUDP): disable + reverse lookup. + (Resolv::DNS::Requester::UnconnectedUDP): ditto. + +Fri Oct 9 10:12:13 2009 NARUSE, Yui + + * lib/irb/context.rb (IRB::Context#initialize): + remove warnings when $VERBOSE is set as true in .irbrc. + +Fri Oct 9 02:58:18 2009 NARUSE, Yui + + * tool/enc-unicode.rb: optimized. + + * enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt, + enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src: + U+100000-U+10FFFD is assigned, not Cn. + +Fri Oct 9 02:12:02 2009 Marc-Andre Lafortune + + * ext/curses/curses.c: Many functions of module Curses could cause a + crash if the ncurses library was not properly initialized. + Fix pointed out by Alexander Beisig [ruby-core:22592] + Functions fixed: attroff, attron, attrset, bkgd, bkgdset, + can_change_color, close_screen, closed, color_content, curs_set, + def_prog_mode, delch, deleteln, getmouse, getstr, has_colors, + init_color, init_pair, insertln, keyname, mouseinterval, mousemask, + pair_content, pair_number, reset_prog_mode, resizeterm, scrl, + setscrreg, standend, standout, start_color, timeout, ungetmouse, + use_default_colors + +Fri Oct 9 01:07:34 2009 Yusuke Endoh + + * compile.c (ADD_TRACE): fire coverage event in ensure clause. + [ruby-dev:39303] + + * iseq.h, iseq.c: ditto. + +Fri Oct 9 00:33:29 2009 Marc-Andre Lafortune + + * lib/net/telnet.rb (cmd): Pass FailEOF options: patch by Brian + Candler [ruby-core:22723] + +Fri Oct 9 00:01:17 2009 Tanaka Akira + + * ext/socket/lib/socket.rb (Socket.udp_server_recv): extracted from + Socket.udp_server_loop_on. + +Thu Oct 8 05:45:14 2009 NARUSE, Yui + + * tool/enc-unicode.rb: parse range notation of UnicodeData.txt. + + * enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt, + enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src: + follow above change. [ruby-dev:39444] + +Thu Oct 8 02:46:24 2009 Nobuyoshi Nakada + + * string.c (rb_str_inspect): copy by chunks. + +Thu Oct 8 01:23:18 2009 Nobuyoshi Nakada + + * iseq.c (iseq_s_disasm): accept proc objects. [ruby-core:18762] + +Wed Oct 7 16:42:28 2009 Nobuyoshi Nakada + + * marshal.c (mark_dump_arg, mark_load_arg): ignore already cleaned + data. [ruby-core:25969] + + * marshal.c (clear_dump_arg, clear_load_arg): clear freed fields. + +Wed Oct 7 16:06:30 2009 Nobuyoshi Nakada + + * include/ruby/ruby.h (rb_long2int): evaluates the argument only + once. + + * struct.c (rb_struct_alloc): check array length overflow. + +Wed Oct 7 09:23:49 2009 NARUSE, Yui + + * string.c (rb_str_inspect): don't assign -1 to unsigned int. + +Wed Oct 7 00:27:01 2009 Tanaka Akira + + * lib/resolv.rb (Resolv::DNS.bind_random_port): bind to "::" for IPv6. + (Resolv::DNS::ConnectedUDP#initialize): specify is_ipv6 argument of + bind_random_port. + [ruby-core:25970] + +Tue Oct 6 23:32:38 2009 Yukihiro Matsumoto + + * string.c (rb_str_upto): RDoc updated. a patch from Nobuhiro + IMAI in [ruby-dev:39440]. [ruby-dev:39439] + +Tue Oct 6 21:30:58 2009 Tanaka Akira + + * io.c (io_reopen): avoid close if possible. + +Tue Oct 6 18:56:09 2009 Yukihiro Matsumoto + + * struct.c (rb_struct_select): Struct#select should return + enumerator when no block given. + +Tue Oct 6 06:26:00 2009 Hidetoshi NAGAI + + * * ext/tk/lib/tk/canvas.rb: *** POTENTIALLY INCOMPATIBLE *** + 'tags' option of a TkcItem object should give a list of TkcTag objs. + + * ext/tk/lib/tkextlib/vu/dial.rb: fix logical bug. + + * ext/tk/lib/tk/canvas.rb, ext/tk/lib/tkextlib/blt/component.rb: + lack of support for methodcall_optkeys. + +Mon Oct 5 17:19:33 2009 Yukihiro Matsumoto + + * lib/delegate.rb (Delegator::public_api): take snapshot of + public method at the beginning time. + + * lib/delegate.rb (SimpleDelegator#initialize): use + Delegator.public_api since public_method might be added after + initialization. [ruby-dev:39383] + + * lib/delegate.rb (DelegateClass): ditto. + +Mon Oct 5 12:22:12 2009 Yukihiro Matsumoto + + * array.c (rb_ary_{times, shuffle_bang, sample}): reducing macro + calls inside of the loop by keeping pointers in local + variables. a patch from Masahiro Kanai (CanI) in [ruby-dev:39406]. + It was found and fixed at Security and Programming camp 2009. + + * string.c (rb_str_{times, split_m}): ditto. + + * struct.c (rb_struct_{getmember, set, aref_id, aset_id}, {make, + inspect}_struct, recursive_{equal, hash, eql}): ditto. + +Mon Oct 5 00:09:57 2009 Yukihiro Matsumoto + + * vm_method.c (basic_obj_respond_to): should not call + #respond_to_missing? for not implemented methods. + [ruby-core:25909] + + * vm_method.c (rb_method_boundp): returns exceptional value 2 for + not-implemented methods when called from #respond_to? (specifies + by new constant NOEX_RESPONDS). + + * method.h (enum): new constant NOEX_RESPONDS added. + +Sun Oct 4 22:16:29 2009 Takeyuki FUJIOKA + + * lib/cgi/cookie.rb: add default value to @@accept_charset + if have not defined. [ruby-dev:38987] + + * lib/cgi/util.rb: ditto. + +Sun Oct 4 19:30:54 2009 Nobuyoshi Nakada + + * marshal.c (struct {dump,load}_arg): manage with dfree, instead + of using local variable which may be moved by context switch. + [ruby-dev:39425] + +Sun Oct 4 15:00:32 2009 Nobuyoshi Nakada + + * pack.c (NATINT_LEN, pack_pack): suppressed warnings. + +Sun Oct 4 14:01:10 2009 Nobuyoshi Nakada + + * lib/rubygems.rb (Gem::binary_mode): binary mode uses binary + encoding. + +Sun Oct 4 08:27:10 2009 Tanaka Akira + + * enum.c (slicebefore_ii): use id_eqq. + +Sun Oct 4 06:40:09 2009 Alexander Zavorine + + * symbian/setup (ruby.mmp): added macro RUBY_EXPORT to match the + change in dln.c + +Sun Oct 4 05:34:34 2009 Hidetoshi NAGAI + + * ext/tk/lib/tk/variable.rb: add TkVariable#to_hash,to_proc,to_int, + to_str,to_ary + +Sun Oct 4 00:59:52 2009 Takeyuki FUJIOKA + + * lib/cgi/core.rb: fix command-line option of + non-interactive terminal. [ruby-core:23016] + +Sun Oct 4 00:40:18 2009 Nobuyoshi Nakada + + * lib/rake/contrib: added. [ruby-core:25918] + +Sat Oct 3 22:14:18 2009 Nobuyoshi Nakada + + * parse.y (bv_decls, bvar): fix for block variables. + [ruby-dev:39423] + +Sat Oct 3 21:19:18 2009 Nobuyoshi Nakada + + * vm_method.c (rb_add_method_def): no redefinition warning on + undef. + +Sat Oct 3 18:51:11 2009 Yukihiro Matsumoto + + * object.c (rb_f_integer): now Integer() takes optional base + argument. base will be ignored for non string values. + suggested by Sam Carr at RubyFoo Lounge at London. + + * test/ruby/test_integer.rb (TestInteger#test_Integer): test + updated. + +Sat Oct 3 04:34:25 2009 Nobuyoshi Nakada + + * parse.y (assignable_gen): parser_yyerror takes two arguments. + +Sat Oct 3 04:07:52 2009 Nobuyoshi Nakada + + * lib/rake: updated to rake code to rake-0.8.7 source code base. + + * lib/rake/loaders/makefile.rb (Rake::MakefileLoader#process_line): + respace dependencies too. + +Sat Oct 3 02:59:21 2009 Nobuyoshi Nakada + + * parse.y (assignable_gen): get rid of macro collision. + +Sat Oct 3 02:49:50 2009 Nobuyoshi Nakada + + * array.c (ary_make_shared): should count frozen array itself. + +Sat Oct 3 01:01:20 2009 NARUSE, Yui + + * enc/unicode/name2ctype.h: Updated to Unicode 5.2.0. + +Sat Oct 3 01:01:03 2009 Nobuyoshi Nakada + + * configure.in: workaround for regexp metacharacters of expr in + prefix path. + +Sat Oct 3 00:47:52 2009 Nobuyoshi Nakada + + * test/ripper/dummyparser.rb (DummyParser): improvement by Magnus + Holm in [ruby-core:25884]. + * remove scanner events which simply returned the first argument. + * all parser events are now automatically generated. + * simplify blocks. + +Sat Oct 3 00:43:52 2009 NARUSE, Yui + + * method.h (rb_method_type_t): remove a comma at end of + enumerator list. + +Sat Oct 3 00:31:04 2009 Nobuyoshi Nakada + + * range.c (discrete_object_p): needs the argument type to get rid + of truncation on platforms where VALUE is larger than int. + +Fri Oct 2 22:30:15 2009 NARUSE, Yui + + * enc/unicode/name2ctype.h.blt, enc/unicode/name2ctype.kwd, + enc/unicode/name2ctype.src: Updated to Unicode 5.2.0. + NOTE: when you update these data, download UnicodeData.txt + and Scripts.txt from http://www.unicode.org/Public/UNIDATA/ + and run + ruby1.9 tool/enc-unicode.rb UnicodeData.txt Scripts.txt \ + > enc/unicode/name2ctype.kwd + + * enc/unicode/Scripts.txt: removed. + + * enc/unicode/UnicodeData.txt: removed. + +Fri Oct 2 20:49:19 2009 Tanaka Akira + + * enum.c (enum_slice_before): take a pattern if no block given. + +Fri Oct 2 20:37:37 2009 Nobuyoshi Nakada + + * parse.y (ripper_yylval_id, ripper_get_{id,value}): wrap ID by + NODE to track local variable assignment. + + * parse.y (lvar_defined_gen, assignable_gen): enable local + variable check. [ruby-core:24923] + + * parse.y (validate): use value only. + + * test/ripper/test_parser_events.rb (test_local_variables): tests + based on a patch from Magnus Holm in [ruby-core:25885]. + +Fri Oct 2 15:34:15 2009 Nobuyoshi Nakada + + * thread.c (ruby_suppress_tracing): get rid of clobbering by + longjmp. + +Fri Oct 2 09:20:35 2009 NAKAMURA Usaku + + * eval.c (rb_origenviron): remove unused old variable. + [ruby-dev:39412] + +Thu Oct 1 14:16:39 2009 NAKAMURA Usaku + + * win32/{setup.mak,Makefile.sub,win32.c},include/ruby/win32.h (RT_VER): + split compiler specification and runtime library specification. + + * win32/Makefile.sub (LD_SHARED*, config.status): no need to embed + manifest if not exist. + +Thu Oct 1 13:23:14 2009 NAKAMURA Usaku + + * win32/win32.c (rb_w32_getpid): simply call GetCurrentProcessId() + instead of calling MSVCRT's getpid(). + +Wed Sep 30 13:15:45 2009 Nobuyoshi Nakada + + * vm_method.c (rb_add_method_def): show the location where + overwritten method was defined. [ruby-dev:39400] + +Wed Sep 30 00:37:27 2009 Nobuyoshi Nakada + + * enumerator.c (enumerator_block_call): extracted. + +Wed Sep 30 00:00:25 2009 NARUSE, Yui + + * string.c (rb_str_inspect): escape as \x{XXXX} when the encoding is + other than Unicode. [ruby-dev:39388] + +Wed Sep 30 00:00:30 2009 Nobuyoshi Nakada + + * configure.in (THREAD_MODEL): modified message when no thread + model is available. + +Tue Sep 29 23:17:32 2009 Nobuyoshi Nakada + + * io.c (rb_scan_open_args): rb_utf8mac_encoding is undefined. + +Tue Sep 29 22:25:41 2009 Tanaka Akira + + * include/ruby/intern.h (rb_struct_iv_get): deprecated because it is + not used and access internal structure. + +Tue Sep 29 22:19:36 2009 Tanaka Akira + + * lib/test/unit/assertions.rb (assert_equal): use Time#subsec if nsec + is not enough to distinguish arguments. + +Tue Sep 29 21:16:35 2009 NARUSE, Yui + + * io.c (rb_scan_open_args): add UTF8-MAC to no-convertion encoding. + +Tue Sep 29 21:21:15 2009 Nobuyoshi Nakada + + * configure.in (--enable-pthread): deprecated. + +Tue Sep 29 21:03:59 2009 Yusuke Endoh + + * lib/pp.rb (Kernel#pp): returns its arguments, like Kernel#p. + [ruby-dev:34830] + +Tue Sep 29 17:02:45 2009 Nobuyoshi Nakada + + * ext/json/lib/json/common.rb (recurse_proc): removed needless + module_function, since visibility is already module_function. + +Tue Sep 29 13:48:58 2009 Nobuyoshi Nakada + + * vm_method.c (rb_method_definition_eq): non-null definition is + not equal to null definition. + + * vm_method.c (rb_add_method_def): nothing to do if old method had + same definition. [ruby-dev:39397] + +Tue Sep 29 06:50:32 2009 NARUSE, Yui + + * string.c (rb_str_inspect): dump as \uXXXX when the + string is in Unicode. [ruby-dev:39388] + +Tue Sep 29 06:49:16 2009 NARUSE, Yui + + * encoding.c (rb_enc_unicode_p): defined. + Returns 1 when the encoding is Unicode series + other than UTF-7 else 0. + +Tue Sep 29 04:14:08 2009 NARUSE, Yui + + * encoding.c (rb_filesystem_encoding): On Unix systems, + filesystem encoding should be locale encoding. + [ruby-dev:39393] + +Tue Sep 29 04:07:58 2009 NARUSE, Yui + + * hash.c (rb_f_getenv): use rb_filesystem_str_new_cstr + instead of rb_str_new2. + ENV['PATH'].encoding should be Filesystem Encoding + because its content is related to filesystem. + see [ruby-dev:39393] + + * hash.c (env_fetch): ditto. + + * string.c (rb_filesystem_str_new): defined. + + * string.c (rb_filesystem_str_new_cstr): ditto. + + * include/ruby/intern.h (rb_filesystem_str_new): added. + + * include/ruby/intern.h (rb_filesystem_str_new_cstr): ditto. + +Tue Sep 29 04:06:18 2009 NARUSE, Yui + + * include/ruby/st.h: include inttypes.h and stdint.h. + +Tue Sep 29 00:07:06 2009 Nobuyoshi Nakada + + * hash.c (rb_f_getenv, env_fetch): env string may be overwritten. + +Mon Sep 28 23:30:59 2009 Nobuyoshi Nakada + + * dln.c (load_lib, dln_find_exe_r): env string may be overwritten. + + * dln.c (dln_{exit,loaderror,memerror,notimplement}): renamed as + independent names. + + * dln.c (aix_loaderror): needs format string. + +Mon Sep 28 19:36:20 2009 NAKAMURA Usaku + + * win32/win32.c (LK_ERR): with overlapped I/O, LockFileEx() returns + ERROR_IO_PENDING if the file is locked. + +Mon Sep 28 19:05:05 2009 Martin Duerst + + * include/ruby/st.h: aligned prototype of st_hash_uint32 with function + definition (fixing compiling problem on cygwin) + +Mon Sep 28 12:13:15 2009 Yukihiro Matsumoto + + * method.h (enum): new method type VM_METHOD_TYPE_MISSING. + + * vm_eval.c (vm_call0): invoking VM_METHOD_TYPE_MISSING method + objects. + + * vm_insnhelper.c (vm_call_method): invoking method defined from + VM_METHOD_TYPE_MISSING. + + * proc.c (rb_method_entry_arity): ditto. + + * vm_method.c (rb_method_entry_eq): two method object wraps + method_missing with same symbol should be equal. + [ruby-core:25755] + + * proc.c (mnew): should always return method object. + +Mon Sep 28 11:38:07 2009 NAKAMURA Usaku + + * parse.y (parser_tokadd_string): the byte after ``\'' may be a part of + multibyte character, so pushback it. [ruby-list:46416] + +Mon Sep 28 10:06:38 2009 NARUSE, Yui + + * stringio/stringio.c (strio_read): set ASCII-8BIT encoding + when length argument is given. + +Mon Sep 28 01:28:17 2009 Yutaka Kanemoto + + * Makefile.in (miniruby): suppress duplication warning on AIX. + +Mon Sep 28 01:13:25 2009 Yutaka Kanemoto + + * common.mk (ruby.imp): add text section [Bug #2064]. + + * common.mk (ruby.imp): do not export Init_*. + +Sun Sep 27 13:06:43 2009 Tanaka Akira + + * lib/pp.rb (PP:ObjectMixin#pretty_print): delegates has no inspect + method. [ruby-core:25804] + +Sun Sep 27 12:01:42 2009 Nobuyoshi Nakada + + * string.c (str_buf_cat2): optimize since all second arguments are + constant literals. + + * string.c (str_cat_char): unused now. + + * string.c (rb_hash_{uint{32,},end}): removed. + +Sun Sep 27 11:58:23 2009 Nobuyoshi Nakada + + * configure.in (optflags): add -fomit-frame-pointer by default. + +Sun Sep 27 11:28:15 2009 Tanaka Akira + + * enum.c (enum_minmax): use struct for memo. + (enum_minmax_by): ditto. + +Sun Sep 27 10:21:16 2009 Nobuyoshi Nakada + + * configure.in (warnflags): check all flags if each are available. + +Sun Sep 27 05:35:17 2009 NARUSE, Yui + + * ext/json/ext/generator/generator.c: Documentation patch by okkez. + [Bug #2075] + +Sun Sep 27 04:20:55 2009 NARUSE, Yui + + * string.c (rb_str_inspect): result's encoding should be fixed. + If default_internal is not nil, the encoding is default_internal. + Else if default_external is not nil, the encoding is default_external. + But the encoding is not ASCII-compatible, the encoding is replaced by + US-ASCII. + Characters in ASCII-incompatible encoding or non ASCII characters + in other than the encoding will be \xXX escaped. + [ruby-dev:39343] + + * string.c (str_buf_cat2): defined. + + * string.c (prefix_escape): removed. + +Sun Sep 27 05:37:45 2009 Alexander Zavorine + + * symbian/missing-pips.c: Updated to work with the latest PIPS 1.6. + + * symbian/setup: ditto. + + * symbian/README.SYMBIAN: ditto. + +Sun Sep 27 02:00:46 2009 Koichi Sasada + + * string.c: use rename-macro instead of RUBY_ALIAS_FUNCTION_TYPE. + Because build causes failure. + +Sat Sep 26 23:29:11 2009 Nobuyoshi Nakada + + * st.c: moved murmur hash from string.c. [ruby-dev:39376] + +Sun Sep 26 00:24:14 2009 Alexander Zavorine + + * symbian/setup: Updated .mmp file generation due to blockinlining.c removal. + +Sat Sep 26 22:39:24 2009 Yuki Sonoda (Yugui) + + * Makefile.in(test-rubyspec): explicitly executes run subcommand of + mspec. + + * spec/README: typo fix + +Sat Sep 26 17:53:13 2009 Nobuyoshi Nakada + + * st.c (COLLISION): improved collision log feature. + + * string.c (hash): updated to MurmurHash 2.0 2009-09-19. + + * string.c (rb_hash_start): fixed shift width on 128bit platform. + + * include/ruby/intern.h (rb_hash_{start,uint32,uint,end}): fixed + prototypes. + +Sat Sep 26 13:26:55 2009 Marc-Andre Lafortune + + * lib/net/http.rb (transport_request): Handle timeout error by + closing socket if exception raised. [ruby-core:20976] + +Sat Sep 26 12:08:17 2009 Yukihiro Matsumoto + + * vm_method.c (rb_method_entry_eq): method defined from same + block/proc should be equal. [ruby-core:25755] [ruby-core:24791] + +Sat Sep 26 08:35:12 2009 Koichi Sasada + + * iseq.c (compile_string): rename to parse_string(), because + this function only parse String to NODE. + +Fri Sep 25 16:01:45 2009 NAKAMURA Usaku + + * win32/win32.c, include/ruby/win32.h (rb_w32_access): new function to + replace MSVCRT's access(). + [ruby-core:25761] + + * file.c (eaccess): workaround for recent MSVCRT is no longer needed. + +Fri Sep 25 13:04:46 2009 Nobuyoshi Nakada + + * proc.c (mnew): fix for instance method of Module, BasicObject + and subclass of a class which overrides respond_to_missing?. + based on a patch from Nikolai Lugovoi in + [ruby-core:25748]. + +Fri Sep 25 11:56:50 2009 Nobuyoshi Nakada + + * vm_method.c (rb_mod_method_defined): should return true or false. + +Thu Sep 24 13:32:53 2009 Yukihiro Matsumoto + + * proc.c (mnew): generate method object that wraps method_missing, + when #respond_to_missing? is defined. + + * test/ruby/test_object.rb (test_respond_to_missing): add test + suites for #respond_to_missing? changes. + +Thu Sep 24 09:41:42 2009 Marc-Andre Lafortune + + * lib/mathn.rb (Bignum#**): Fixed bignum**fixnum that was broken when + requiring lib/mathn + [ruby-core:25740] + +Thu Sep 24 02:21:23 2009 Nobuyoshi Nakada + + * ext/bigdecimal/lib/bigdecimal/math.rb (atan): atan(Infinity) is + PI/2. + + * ext/bigdecimal/lib/bigdecimal/math.rb (atan): reduce loop with + the double-angle formula. based on a patch from Masahiro + Kanai (CanI) in [ruby-dev:39367]. + +Thu Sep 24 01:14:18 2009 Yutaka Kanemoto + + * dln.c (aix_loaderror): fixed typo. suppress warnings. + +Thu Sep 24 00:17:06 2009 Tanaka Akira + + * enum.c (enum_minmax): reduce comparison. + (enum_minmax_by): ditto. + +Wed Sep 23 22:58:57 2009 Tanaka Akira + + * lib/thread.rb (ConditionVariable#wait): add timeout argument. + [ruby-talk:346154] + +Wed Sep 23 21:25:20 2009 Nobuyoshi Nakada + + * ext/bigdecimal/lib/bigdecimal/math.rb (atan): refined. + +Wed Sep 23 17:08:30 2009 Nobuyoshi Nakada + + * parse.y (assign_in_cond): also should warn assignment to dvar in + conditional. [ruby-dev:39363] + +Wed Sep 23 13:14:21 2009 Nobuyoshi Nakada + + * string.c (rb_str_upto): keep first width. [ruby-dev:39361] + +Wed Sep 23 11:28:06 2009 Nobuyoshi Nakada + + * tool/instruction.rb (make_header_prepare_stack): check stack + overflow. [ruby-core:25714] + + * tool/instruction.rb (make_footer_stack_val): ditto. + + +Wed Sep 23 05:03:36 2009 Marc-Andre Lafortune + + * proc.c (umethod_bind, rb_mod_define_method): Fix bug that + disallowed methods from singleton classes to be used for + UnboundMethod#bind, Kernel#define_singleton_method and + Module#define_method, even when that singleton class was of the right + kind_of. A patch by Shane O'Brien [ruby-core:25632] + +Tue Sep 22 22:56:48 2009 Yukihiro Matsumoto + + * vm_method.c (basic_obj_respond_to): new function to fundamental + behavior for #respond_to? + + * vm_method.c (basic_obj_respond_to): calls #respond_to_missing + method if overridden, to check responsiveness of methods + implemented by #method_missing. + +Tue Sep 22 16:34:33 2009 Nobuyoshi Nakada + + * st.c (st_table_entry, st_get_key): use st_index_t. + +Tue Sep 22 16:28:41 2009 Nobuyoshi Nakada + + * regenc.h (PosixBracketEntryType): constified. + + * regenc.h (PosixBracketEntryInit): suppress warnings. + + * regerror.c (onig_error_code_to_str, onig_snprintf_with_pattern): + fixed type. + + * regparse.c (st_str_end_key, str_end_cmp, str_end_hash): + constified. + + * tool/transcode-tblgen.rb (transcode_generated_code): fixed type. + +Tue Sep 22 10:29:06 2009 Tanaka Akira + + * enum.c (enum_chunk): new method Enumerable#chunk. + * enum.c (enum_slice_before): new method Enumerable#slice_before. + [ruby-dev:38392] [ruby-dev:39240] + +Tue Sep 22 05:58:25 2009 Nobuyoshi Nakada + + * compile.c, cont.c, gc.c, insns.def, iseq.c, iseq.h, process.c, + thread.c, vm.c, vm_core.h, vm_dump.c, vm_eval.c, + vm_insnhelper.c, vm_method.c, template/insns_info.inc.tmpl, + tool/instruction.rb: fixed types. + +Tue Sep 22 05:04:08 2009 Nobuyoshi Nakada + + * ext/bigdecimal/lib/bigdecimal/{ludcmp,math}.rb: depend on + bigdecimal. + + * ext/bigdecimal/lib/bigdecimal/*.rb: made module functions. + +Tue Sep 22 04:47:37 2009 Nobuyoshi Nakada + + * ext/bigdecimal/bigdecimal.c (GetVpValue): support conversion from + Rational. [ruby-core:25697] + +Tue Sep 22 04:43:42 2009 Nobuyoshi Nakada + + * Makefile.in, win32/Makefile.sub (INSNS): depend on tools. + +Tue Sep 22 01:10:22 2009 Marc-Andre Lafortune + + * ossl_ocsp.c (ossl_ocspres_to_der): Bug fix in Response#to_def. + Patch by Chris Chandler [ruby-core:18411] + +Tue Sep 22 01:10:02 2009 Marc-Andre Lafortune + + * ossl_config.c (ossl_config_add_value_m, ossl_config_set_section): + Check if frozen (or untrusted for $SAFE >= 4) [ruby-core:18377] + +Mon Sep 21 17:12:10 2009 Nobuyoshi Nakada + + * proc.c (proc_binding): allow proc from method. [ruby-core:25589] + + * vm.c (collect_local_variables_in_env): block iseq can be NULL. + +Mon Sep 21 10:50:37 2009 Yukihiro Matsumoto + + * time.c (rb_time_succ): make Time#succ obsolete since time is not + a discrete value. + + * range.c (discrete_object_p): treat time objects specially to + determine discrete values, since time objects have #succ yet are + discrete (for now at least). + +Mon Sep 21 10:13:22 2009 Nobuyoshi Nakada + + * cont.c (cont_new, cont_capture, fiber_t_alloc): needs already + running thread. cf. [ruby-core:25681] + +Mon Sep 21 00:07:36 2009 Nobuyoshi Nakada + + * ext/bigdecimal/lib/bigdecimal/math.rb (sin, cos, atan, exp, log): + improved precision and performance. based on a patch from Makoto + Yamashita in [ruby-core:25600] and [ruby-core:25602]. + +Sun Sep 20 11:11:34 2009 Marc-Andre Lafortune + + * struct.c (rb_struct_equal, rb_struct_eql): Handle comparison of + recursive structures [ruby-core:24759] + + * range.c (range_eq, range_eql): ditto for ranges + +Sat Sep 19 17:46:46 2009 Nobuyoshi Nakada + + * vm_core.h (ENABLE_VM_OBJSPACE): socklist needs st_table in + rb_w32_sysinit(), before object space initialization. + +Sat Sep 19 17:32:59 2009 Nobuyoshi Nakada + + * dir.c (GlobPathValue), file.c (rb_get_path_check): path names + must be ASCII compatible. + +Sat Sep 19 00:02:19 2009 Nobuyoshi Nakada + + * include/ruby/ruby.h (rb_type): forward declaration to suppress a + warning. a patch from Naohisa Goto at [ruby-dev:39350] + +Fri Sep 18 23:59:27 2009 Nobuyoshi Nakada + + * dir.c (GlobPathValue): adjust return types. based on a patch + from Naohisa Goto at [ruby-dev:39350]. + +Fri Sep 18 23:51:17 2009 Nobuyoshi Nakada + + * marshal.c (r_object0): entry regexp object before its encoding + name. [ruby-core:25625] + +Fri Sep 18 16:29:16 2009 Nobuyoshi Nakada + + * common.mk (eval.o): needs vm.h. + + * eval.c (ruby_cleanup): destruct current VM before exit. + + * gc.c (rb_objspace_free): free object space. + + * vm.c (ruby_vm_destruct): destruct and free VM struct. + +Fri Sep 18 16:15:04 2009 Nobuyoshi Nakada + + * compile.c (iseq_compile_each), parse.y (stmt, arg): arg_concat() + on op_asgn was inversed. [ruby-core:25629] [Bug #2050] + +Fri Sep 18 16:06:27 2009 Nobuyoshi Nakada + + * dir.c (GlobPathValue): glob allows null bytes as separators. + +Fri Sep 18 10:11:53 2009 Nobuyoshi Nakada + + * doc/re.rdoc: use rdoc mode. + + * misc/rdoc-mode.el: added. + +Fri Sep 18 09:02:49 2009 Nobuyoshi Nakada + + * lib/rdoc/rdoc.rb (RDoc::RDoc#parse_files): don't branch by + RUBY_VERSION. + + * lib/rdoc/rdoc.rb (RDoc::RDoc#parse_files): emacs local variables + are delimited by a semicolon. supported Vim style. + +Fri Sep 18 07:06:41 2009 Kazuhiro NISHIYAMA + + * test/fileutils/test_fileutils.rb: add a test for [ruby-dev:39345] + +Fri Sep 18 06:47:13 2009 Nobuyoshi Nakada + + * dir.c (push_glob): str should be a string always. + + * dir.c (rb_push_glob, dir_globs): use #to_path to convert non- + string values. cf. [ruby-dev:39345] + +Fri Sep 18 06:36:51 2009 Nobuyoshi Nakada + + * lib/mkmf.rb (rm_f, rm_rf): FileUtils.rm can take an array. + [ruby-dev:39345] + + * lib/mkmf.rb (create_header): open in binmode. + +Thu Sep 17 18:34:19 2009 Nobuyoshi Nakada + + * gc.c (vm_xrealloc): free as like standard free if size is zero. + +Thu Sep 17 15:41:02 2009 Koichi Sasada + + * eval_intern.h: use rb_node_newnode() directly. + +Thu Sep 17 15:01:32 2009 Koichi Sasada + + * blockinlining.c: removed. + + * README.EXT: ditto. + + * README.EXT.ja: ditto. + +Thu Sep 17 13:50:50 2009 Nobuyoshi Nakada + + * thread.c (rb_thread_s_debug_set): set level, not only boolean. + +Thu Sep 17 13:12:37 2009 Nobuyoshi Nakada + + * lib/rdoc/parser/ruby.rb (RDoc::Parser::Ruby): parse also rdoc + files. + + * doc/re.rdoc: renamed from re.rb. + +Thu Sep 17 09:37:28 2009 NARUSE, Yui + + * doc/re.rb: New document for Ruby's fork of Oniguruma. + written by Run Paint Run Run [ruby-core:25420] + + * re.c: import document in doc/re.rb. + + * .document: add doc/re.rb. + +Thu Sep 17 06:03:40 2009 Marc-Andre Lafortune + + * lib/matrix.rb (Matrix#rank): Two bug fixes. One made + Matrix[[0,0],[0,0],[1,0]].rank raise a NoMethodError while the other + one had Matrix[[0,1],[0,0],[1,0]].rank raise a TypeError. + +Thu Sep 17 06:02:04 2009 Marc-Andre Lafortune + + * lib/matrix.rb: Optimizations + +Thu Sep 17 00:36:01 2009 Tanaka Akira + + * time.c (time_mdump): error message refined. + +Wed Sep 16 19:27:43 2009 Yukihiro Matsumoto + + * test/ruby/test_thread.rb (TestThread#test_recursive): remove + implementation dependent test. + +Wed Sep 16 17:42:52 2009 NAKAMURA Usaku + + * win32/Makefile.sub (config.status): install-capi needs docdir. And, + mandir, infodir and ridir are also depend on datadir like docdir. + +Wed Sep 16 17:20:49 2009 Marc-Andre Lafortune + + * lib/matrix.rb (Matrix#/): Fix obvious bug + +Wed Sep 16 16:59:34 2009 NAKAMURA Usaku + + * win32/Makefile.sub (DOCTARGETS): rdoc is default. + +Wed Sep 16 16:27:40 2009 NAKAMURA Usaku + + * win32/Makefile.sub: typo. + +Wed Sep 16 16:20:17 2009 Nobuyoshi Nakada + + * configure.in (CAPITARGET): enable iff doxygen is available. + + * configure.in (INSTALLDOC): enable if rdoc or doxygen are enabled. + + * common.mk (docs): target to make documents. + + * Makefile.in, win32/Makefile.sub (install-{all,nodoc}): trigger + by $(INSTALLDOC) from install. + +Wed Sep 16 13:39:10 2009 Marc-Andre Lafortune + + * lib/matrix.rb (determinant): Bug fix where determinant failed on + some matrices [ruby-core:23597] + +Wed Sep 16 13:30:20 2009 Marc-Andre Lafortune + + * lib/matrix.rb: trivial optimizations + +Wed Sep 16 13:15:17 2009 NAKAMURA Usaku + + * template/Doxyfile.tmpl: RbConfig::CONFIG['DOT'] is sometimes nil. + +Wed Sep 16 10:14:54 2009 Nobuyoshi Nakada + + * README.EXT, README.EXT.ja (rb_protect, rb_jump_tag): added. + +Wed Sep 16 10:12:56 2009 Nobuyoshi Nakada + + * common.mk (main): makes also encs. + +Wed Sep 16 06:30:07 2009 Marc-Andre Lafortune + + * thread.c (rb_exec_recursive_outer, rb_exec_recursive): Added method + to short-circuit to the outermost level in case of recursion + + * test/ruby/test_thread.rb (test_recursive_outer): Test for above + + * hash.c (rb_hash_hash): Return a sensible hash for in case of + recursion [ruby-core:24648] + + * range.c (rb_range_hash): ditto + + * struct.c (rb_struct_hash): ditto + + * array.c (rb_array_hash): ditto + + * test/ruby/test_array.rb (test_hash2): test for above + +Wed Sep 16 06:17:33 2009 Marc-Andre Lafortune + + * vm_eval.c (rb_catch_obj, rb_catch, rb_f_catch): No longer use the + obsolete function rb_iterate. + +Tue Sep 15 21:48:12 2009 Tanaka Akira + + * configure.in (--enable-frame-address): removed. + +Tue Sep 15 15:21:01 2009 NAKAMURA Usaku + + * win32/{configure.bat,Makefile.sub} (RDOCTARGET): the meaning of this + macro was changed at r24923. + +Tue Sep 15 15:16:14 2009 Nobuyoshi Nakada + + * common.mk (install-rdoc), configure.in (RDOCTARGET): removed + circular dependency. [ruby-dev:39339] + +Tue Sep 15 15:09:13 2009 NAKAMURA Usaku + + * win32/configure.bat: need a space before a tab to output the tab by + echo. + +Tue Sep 15 14:24:52 2009 NARUSE, Yui + + * string.c (rb_str_split_m): use rb_isspace when the + string may be ASCII-incompatible. + + * string.c (rb_str_lstrip_bang): ditto. + + * string.c (rb_str_rstrip_bang): ditto. + +Tue Sep 15 12:12:27 2009 Nobuyoshi Nakada + + * configure.in (RUBY_USE_BUILTIN_FRAME_ADDRESS): check after real + target CPU is set. + + * configure.in (RUBY_UNIVERSAL_ARCH): check real target CPU after + AC_PROG_CC. + +Tue Sep 15 06:42:59 2009 Nobuyoshi Nakada + + * common.mk (install-all): target to install all. + + * tool/rbinstall.rb (parse_args): accept all install targets. + + * tool/rbinstall.rb (parse_args): show help message and exit if + rbconfig could not load. + +Tue Sep 15 04:25:03 2009 Nobuyoshi Nakada + + * configure.in (RDOCTARGET): use install-all. [ruby-dev:39334] + +Tue Sep 15 03:00:35 2009 Yukihiro Matsumoto + + * string.c (rb_str_lstrip_bang): use ascii_isspace(). [ruby-dev:39322] + + * string.c (rb_str_rstrip_bang): ditto. + + * string.c (rb_str_split_m): ditto. + +Mon Sep 14 16:39:14 2009 Nobuyoshi Nakada + + * debug.c, parse.y: fixed types. + + * node.h (nd_line): limit to int. + +Mon Sep 14 11:23:45 2009 Nobuyoshi Nakada + + * configure.in, common.mk, */configure.bat (rdoc): make before + install if rdoc is enabled. [ruby-dev:39325] + +Mon Sep 14 10:56:40 2009 Nobuyoshi Nakada + + * common.mk (check-ruby): run all test of ruby itself. + +Mon Sep 14 10:44:47 2009 Nobuyoshi Nakada + + * include/ruby/ruby.h (RB_TYPE_P): should not use BUILTIN_TYPE for + special constants. + +Mon Sep 14 10:08:19 2009 NARUSE, Yui + + * string.c (rb_str_inspect): use rb_enc_mbc_to_codepoint + because we already knew char is found and got length. + +Mon Sep 14 09:59:03 2009 NAKAMURA Usaku + + * include/ruby/ruby.h (NUM2INT, NUM2LL, INT2NUM, UINT2NUM), + (LONG2NUM, ULONG2NUM, NUM2CHR): get rid of backward references of + macros. the code couldn't compile by VC. + +Mon Sep 14 08:33:11 2009 Marc-Andre Lafortune + + * lib/net/http.rb (each_*): return enumerator if no block present. + Patch by Arthur Schreiber [ruby-core:18310] + +Mon Sep 14 06:42:21 2009 Marc-Andre Lafortune + + * lib/cgi/cookie.rb (value): Keep CGI::Cookie#value in sync with the + cookie itself. Based on a patch by Arthur Schreiber [ruby-core:17634] + +Mon Sep 14 05:21:12 2009 Marc-Andre Lafortune + + * lib/net/http.rb (fetch): Handle properly default values; a patch by + Arthur Schreiber [ruby-core:18308] + +Mon Sep 14 04:07:09 2009 Marc-Andre Lafortune + + * lib/set.rb (==): Optimization; patch by Arthur Schreiber [ruby-core:17203] + +Mon Sep 14 03:30:23 2009 Alexander Zavorine + + * symbian/pre-build: added rule to generate id.h for Symbian build. + + * symbian/configure.bat: fixed harmless error message. + + +Sun Sep 13 22:18:33 2009 Nobuyoshi Nakada + + * variable.c (rb_mod_remove_const): do not change VM state when an + exception will occur. + +Sun Sep 13 21:25:01 2009 Masaki Suketa + + * ext/win32ole/win32ole.c (oletypelib_get_libattr): some refactoring + by adding oletypelib_get_libattr. + +Sun Sep 13 20:55:19 2009 Masaki Suketa + + * ext/win32ole/win32ole.c (oletypelib_get_typelib): some refactoring + by adding oletypelib_get_typelib. + +Sun Sep 13 20:18:49 2009 Nobuyoshi Nakada + + * ruby.c (process_sflag, proc_options, load_file_internal): fixed + types. + +Sun Sep 13 19:39:59 2009 Masaki Suketa + + * ext/win32ole/win32ole.c: some refactoring. + +Sun Sep 13 19:38:34 2009 Nobuyoshi Nakada + + * ruby.c (load_file_internal): no need to define DATA when error. + +Sun Sep 13 18:48:43 2009 Nobuyoshi Nakada + + * configure.in (XLDFLAGS): link startup code with ObjC support. + +Sun Sep 13 13:38:00 2009 Marc-Andre Lafortune + + * thread.c (recursive_*): refactored the access to the inspect + table used by rb_exec_recursive_*. The functions recursive_push, + pop and check now assume a valid hash table as their first + argument. Added documentation. + +Sun Sep 13 12:07:49 2009 Nobuyoshi Nakada + + * include/ruby/ruby.h (SYM2ID): needs parens. + + * include/ruby/ruby.h (NUM2INT, NUM2LL, INT2NUM, UINT2NUM), + (LONG2NUM, ULONG2NUM, NUM2CHR, rb_type_p, rb_special_const_p): + GCC specific optimization. + +Sun Sep 13 11:06:12 2009 Tanaka Akira + + * lib/open-uri.rb (OpenURI::Meta#content_type_parse): strip quotes. + +Sun Sep 13 09:38:06 2009 Nobuyoshi Nakada + + * lib/prime.rb (EratosthenesGenerator#initialize): call super. + (TrialDivisionGenerator, Generator23): ditto. [ruby-core:25539] + +Sun Sep 13 09:34:10 2009 Nobuyoshi Nakada + + * vm_method.c (rb_add_method_def): no warning for inherited + method. + +Sun Sep 13 08:30:30 2009 Masaki Suketa + + * ext/win32ole/win32ole.c: fix WIN32OLE_TYPELIB.new when the 1st + argument is the non-registered file. + +Sun Sep 13 02:08:43 2009 Koichi Sasada + + * vm_core.h: change members of iseq_inline_cache_entry. + make cache value members to one union member "ic_value". + + * insns.def: ditto. + + * vm_insnhelper.c: ditto. + +Sun Sep 13 01:15:49 2009 Tanaka Akira + + * lib/open-uri.rb (URI::FTP#buffer_open): fix the %2F handling. + +Sun Sep 13 00:46:39 2009 Nobuyoshi Nakada + + * vm_method.c (CALL_METHOD_HOOK): refined with macro. + + * vm_method.c (rb_remove_method_id): no definition body is + undefined. + + * vm_method.c (rb_add_method, rb_add_method_me): call method added + hook after definition. [ruby-core:25536] + + * vm_method.c (rb_alias): hooks are called from rb_add_method_def. + +Sat Sep 12 22:47:24 2009 Tanaka Akira + + * lib/open-uri.rb (URI::FTP#buffer_open): use the port specified in + the URI. + +Sat Sep 12 17:31:42 2009 Nobuyoshi Nakada + + * configure.in (GCC): subst for GCC depending extension libraries. + +Sat Sep 12 07:52:59 2009 Masaki Suketa + + * ext/win32ole/win32ole.c (EVENTSINK_Invoke): initialize result + variant value. + +Fri Sep 11 21:52:13 2009 Nobuyoshi Nakada + + * NEWS: update for 1.9.2. based on a patch from Run Paint Run Run + in [ruby-core:25534]. + +Fri Sep 11 21:38:13 2009 Nobuyoshi Nakada + + * configure.in: check for real target cpu on darwin 10. + +Fri Sep 11 18:51:57 2009 NARUSE, Yui + + * test/fileutils: use require_relative to require fileasserts. + +Fri Sep 11 14:22:45 2009 Nobuyoshi Nakada + + * configure.in (debugflags): use gdb by default on linux and + darwin. + + * configure.in (XLDFLAGS): keep ARCHFILE macro on AIX. + + * configure.in (RUBY_REPLACE_TYPE): define typename to default + type if the latter is found. + +Fri Sep 11 13:57:36 2009 Nobuyoshi Nakada + + * include/ruby/win32.h (fstat): override if large file support is + enabled. + +Fri Sep 11 11:33:30 2009 Nobuyoshi Nakada + + * tool/config.{guess,sub}: updated to automake-1.11. + +Fri Sep 11 10:38:33 2009 URABE Shyouhei + + * lib/net/http.rb (Net::HTTPHeader::encode_kvpair): also call to_s + to k. A patch from swdyh + http://github.com/swdyh/ruby/tree/c847f43c2ccb679b9ff728f8b1b16c6ceeb57f39 + Fri Sep 11 09:45:11 2009 Nobuyoshi Nakada * dln.c (aix_loaderror): get rid of using uninitialized value in the @@ -187,7 +2994,7 @@ Mon Sep 7 05:38:34 2009 Koichi Sasada * vm_insnhelper.h (CALL_SIMPLE_METHOD): add a version which use an inline cache. USE_IC_FOR_SPECIALIZED_METHOD macro - switchs the behaviour. This change also removes + switches the behaviour. This change also removes CALL_SIMPLE_METHOD_IC() macro. * tool/instruction.rb: fix elimination process to ignore @@ -210,7 +3017,7 @@ Mon Sep 7 03:21:40 2009 NARUSE, Yui * lib/uri/common.rb (URI.escape): obsoleted. - * lib/uri/common.rb (URI,unescape): ditto. + * lib/uri/common.rb (URI.unescape): ditto. Sun Sep 6 18:13:54 2009 Koichi Sasada @@ -234,7 +3041,7 @@ Sun Sep 6 17:31:28 2009 Koichi Sasada Sun Sep 6 16:13:06 2009 Koichi Sasada - * insns.def (setinstancevariable), vm_insnhelper.c (vm_setivar): + * insns.def (setinstancevariable), vm_insnhelper.c (vm_setivar): fix to use inline cache (trivial optimization). Sun Sep 6 10:34:19 2009 Nobuyoshi Nakada @@ -341,11 +3148,11 @@ Mon Aug 31 14:17:09 2009 Yuki Sonoda (Yugui) (rb_singleton_class): refactored. (rb_define_singleton_method): it needs a metaclass only but not its metametaclass. - + * object.c: booting class hierarchy was moved to class.c for keeping dependency between compilation units least. - (Init_Object): extracting the booting into - Init_class_hierarchy. + (Init_Object): extracting the booting into + Init_class_hierarchy. (boot_defclass): moved to class.c. Sun Aug 30 23:44:09 2009 Tanaka Akira @@ -386,7 +3193,7 @@ Sun Aug 30 03:59:43 2009 Tanaka Akira * timev.h (TIME_SCALE): defined as 1000000000. (struct vtm): subsec is replaced by subsecx. subsec * TIME_SCALE == subsecx. - + * time.c: avoid rational in most cases. (struct time_object): timev is replaced by timexv. timev * TIME_SCALE == timexv. @@ -626,7 +3433,7 @@ Sun Aug 23 15:12:22 2009 Tanaka Akira * bootstraptest/runner.rb (Dir.mktmpdir): updated to latest. (in_temporary_working_directory): temporary directory name changed. - + Sun Aug 23 00:56:13 2009 Tanaka Akira * thread.c (rb_thread_schedule): don't recur infinitely. @@ -1658,7 +4465,7 @@ Sun Jul 26 01:09:14 2009 Alexander Zavorine Sat Jul 25 17:49:03 2009 Nobuyoshi Nakada * io.c (argf_eof): should not have reached EOF before trying to - read. based on a patch by Heesob Park a + read. based on a patch by Heesob Park in [ruby-core:24559]. [ruby-core:24557] Sat Jul 25 13:44:28 2009 Nobuyoshi Nakada @@ -5103,7 +7910,7 @@ Sat Mar 28 11:10:32 2009 Nobuyoshi Nakada * common.mk (ruby.imp): all symbols in static library need to be exported, so that encoding-extensions can be loaded. based on a - patch from Yutaka Kanemoto a + patch from Yutaka Kanemoto in [ruby-talk:332282]. Sat Mar 28 08:49:47 2009 Nobuyoshi Nakada diff --git a/Makefile.in b/Makefile.in index 5843ed030d7337..f328d2ad342811 100644 --- a/Makefile.in +++ b/Makefile.in @@ -34,7 +34,8 @@ ruby_version = @ruby_version@ TESTUI = console TESTS = -RDOCTARGET = @RDOCTARGET@ +INSTALLDOC = @INSTALLDOC@ +DOCTARGETS = @RDOCTARGET@ @CAPITARGET@ EXTOUT = @EXTOUT@ arch_hdrdir = $(EXTOUT)/include/$(arch) @@ -74,6 +75,7 @@ PROGRAM=$(RUBY_INSTALL_NAME)$(EXEEXT) RUBY = $(RUBY_INSTALL_NAME) MINIRUBY = @MINIRUBY@ $(MINIRUBYOPT) RUNRUBY = @RUNRUBY@ $(RUNRUBYOPT) -- +XRUBY = @XRUBY@ #### End of system configuration section. #### @@ -137,7 +139,7 @@ all: miniruby$(EXEEXT): @-if test -f $@; then $(MV) -f $@ $@.old; $(RM) $@.old; fi - $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(MAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(DMYEXT) $(ARCHFILE) $(LIBS) $(OUTFLAG)$@ + $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(MAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(DMYEXT) $(LIBS) $(OUTFLAG)$@ $(PROGRAM): @$(RM) $@ @@ -154,7 +156,7 @@ $(LIBRUBY_A): $(LIBRUBY_SO): @-$(PRE_LIBRUBY_UPDATE) $(LDSHARED) $(DLDFLAGS) $(OBJS) $(DLDOBJS) $(SOLIBS) $(OUTFLAG)$@ - -$(OBJCOPY) -w -L '@EXPORT_PREFIX@Init_*' $@ + -$(OBJCOPY) -w -L '@EXPORT_PREFIX@Init_*' -L '@EXPORT_PREFIX@*_threadptr_*' $@ @-$(MINIRUBY) -e 'ARGV.each{|link| File.delete link if File.exist? link; \ File.symlink "$(LIBRUBY_SO)", link}' \ $(LIBRUBY_ALIASES) || true @@ -188,10 +190,11 @@ incs: id.h # Things which should be considered: # * with gperf v.s. without gperf +# * committers may have various versions of gperf # * ./configure v.s. ../ruby/configure # * GNU make v.s. HP-UX make # HP-UX make invokes the action if lex.c and keywords has same mtime. # * svn checkout generate a file with mtime as current time -# * XFS has a mtime with fractional part +# * ext4 and XFS has a mtime with fractional part lex.c: defs/keywords @\ if cmp -s $(srcdir)/defs/lex.c.src $?; then \ @@ -297,10 +300,12 @@ update-rubyspec: update-mspec test-rubyspec: @if [ ! -d $(srcdir)/spec/rubyspec ]; then echo No rubyspec here. make update-rubyspec first.; exit 1; fi - $(RUNRUBY) $(srcdir)/spec/mspec/bin/mspec -B $(srcdir)/spec/default.mspec $(MSPECOPT) + $(RUNRUBY) $(srcdir)/spec/mspec/bin/mspec run -B $(srcdir)/spec/default.mspec $(MSPECOPT) INSNS = opt_sc.inc optinsn.inc optunifs.inc insns.inc insns_info.inc \ vmtc.inc vm.inc -$(INSNS): $(srcdir)/insns.def vm_opts.h $(srcdir)/defs/opt_operand.def $(srcdir)/defs/opt_insn_unif.def +$(INSNS): $(srcdir)/insns.def vm_opts.h \ + $(srcdir)/defs/opt_operand.def $(srcdir)/defs/opt_insn_unif.def \ + $(srcdir)/tool/instruction.rb $(srcdir)/tool/insns2vm.rb $(BASERUBY) -Ks $(srcdir)/tool/insns2vm.rb $(INSNS2VMOPT) $@ diff --git a/NEWS b/NEWS index 492177e05f4e28..3adf36ec6ed439 100644 --- a/NEWS +++ b/NEWS @@ -20,6 +20,12 @@ with all sufficient information, see the ChangeLog file. * new method: * Dir.home + * Enumerable + * New methods: + * Enumerable#join + * Enumerable#chunk + * Enumerable#slice_before + * Enumerator * new methods: * Enumerator#peek @@ -37,6 +43,9 @@ with all sufficient information, see the ChangeLog file. if defined. * #next doesn't clear the position at end. + * ENV + * Uses locale's encoding + * IO * new method: * IO#fdatasync @@ -49,10 +58,16 @@ with all sufficient information, see the ChangeLog file. * IO::WaitWritable They are used to extend non-blocking exceptions. + * MatchData + * New method: + * MatchData#== + * Process * extended methods: * Process.spawn accepts [:child, FD] for a redirect target. + * Random (new library for generating pseudo-random numbers) + * String * extended methods: * string[regexp, name] is supported for named capture. @@ -73,6 +88,9 @@ with all sufficient information, see the ChangeLog file. not 1999 AD. * Kernel + * new method: + * Kernel#require_relative + * extended methods: * respond_to? can be used to detect methods not implemented. For example, Process.respond_to?(:fork) returns false on Windows. @@ -96,6 +114,9 @@ with all sufficient information, see the ChangeLog file. * RSS::Maker: item.guid.permanent_link= * new alias of item.guid.isPermaLink= +* JSON + * Update to JSON 1.1.9 + * REXML * REXML::Document.entity_expansion_limit= @@ -181,9 +202,9 @@ with all sufficient information, see the ChangeLog file. * BasicSocket#getsockopt accepts a Socket::Option object. * constant names can be accepted as well as constant values. - i.e. Socket.new(:PF_INET, :SOCK_STREAM, 0) + i.e. Socket.new(:PF_INET, :SOCK_STREAM, 0) The constant names can be specified without the prefix. - i.e. Socket.new(:INET, :STREAM, 0) + i.e. Socket.new(:INET, :STREAM, 0) * protocol/address family * socket type * socket option protocol level @@ -209,10 +230,19 @@ with all sufficient information, see the ChangeLog file. * incompatible changes: * Time.parse raises ArgumentError when no date information. +* thread + * extended method: + * ConditionVariable#wait takes timeout argument. + * securerandom * new methods: * SecureRandom.urlsafe_base64 +* URI + * Obsoleted methods: + * URI#escape + * URI#unescape + * etc * new methods: * Etc::Passwd.each @@ -222,14 +252,26 @@ with all sufficient information, see the ChangeLog file. * new methods: * Zlib::GzipFile#path +=== Language changes + +* Regexp properties (\p{}) names now ignore underscores, spaces, and case, so + \p{ol chiki} is the same as \p{Ol_Chiki} +* Regexps now support Unicode 5.1 (new characters and scripts) +* \d, \s, and \w are now ASCII only; use POSIX bracket classes and \p{} for + Unicode semantics +* $: no longer includes the current directory, use require_relative + === Compilation options -* --program-prefix and --program-suffix no longer act on the shared object +* --program-prefix and --program-suffix no longer act on the shared object names nor paths to libraries. - use --with-rubylibprefix='${libruby}/${RUBY_INSTALL_NAME}' and + use --with-rubylibprefix='${libruby}/${RUBY_INSTALL_NAME}' and --with-soname='${RUBY_INSTALL_NAME}' for the same result as Ruby 1.9.1. +* --with-arch is added for universal binary, instead of + --enable-fat-binary option. + === Compatibility issues (excluding feature bug fixes) * Enumerator#rewind @@ -245,5 +287,7 @@ with all sufficient information, see the ChangeLog file. * Time.mktime * Time.parse * --program-prefix and --program-suffix + * --enable-fat-binary + * $: See above. diff --git a/README.EXT b/README.EXT index da0f6148f11fea..e29b3ae89d7a75 100644 --- a/README.EXT +++ b/README.EXT @@ -89,8 +89,10 @@ There are also faster check macros for fixnums and nil. 1.3 Convert VALUE into C data -The data for type T_NIL, T_FALSE, T_TRUE are nil, true, false +The data for type T_NIL, T_FALSE, T_TRUE are nil, false, true respectively. They are singletons for the data type. +The equivalent C constants are: Qnil, Qfalse, Qtrue. +Note that Qfalse is false in C also (i.e. 0), but not Qnil. The T_FIXNUM data is a 31bit length fixed integer (63bit length on some machines), which can be converted to a C integer by using the @@ -115,8 +117,8 @@ You can also use the macro named StringValueCStr(). This is just like StringValuePtr(), but always add nul character at the end of the result. If the result contains nul character, this macro causes the ArgumentError exception. -StringValuePtr() doesn't gurantee to exist nul at the end of the -result, and the result may contain nul. +StringValuePtr() doesn't guarantee the existence of a nul at the end +of the result, and the result may contain nul. Other data types have corresponding C structures, e.g. struct RArray for T_ARRAY etc. The VALUE of the type which has the corresponding @@ -334,7 +336,7 @@ There are two functions to define private/protected methods: void rb_define_protected_method(VALUE klass, const char *name, VALUE (*func)(), int argc) -At last, rb_define_module_funcion defines a module functions, +At last, rb_define_module_function defines a module functions, which are private AND singleton methods of the module. For example, sqrt is the module function defined in Math module. It can be called in the following way: @@ -351,7 +353,7 @@ To define module functions, use: void rb_define_module_function(VALUE module, const char *name, VALUE (*func)(), int argc) -Oh, in addition, function-like methods, which are private methods defined +In addition, function-like methods, which are private methods defined in the Kernel module, can be defined using: void rb_define_global_function(const char *name, VALUE (*func)(), int argc) @@ -360,7 +362,7 @@ To define an alias for the method, void rb_define_alias(VALUE module, const char* new, const char* old); -To define an reader/writer to an attribute, +To define a reader/writer for an attribute, void rb_define_attr(VALUE klass, const char *name, int read, int write) @@ -369,8 +371,8 @@ To define and undefine the `allocate' class method, void rb_define_alloc_func(VALUE klass, VALUE (*func)(VALUE klass)); void rb_undef_alloc_func(VALUE klass); -func have to take the klass as the argument and return a newly -allocated instance. This instance should be empty as possible, +func has to take the klass as the argument and return a newly +allocated instance. This instance should be as empty as possible, without any expensive (including external) resources. 2.1.3 Constant definition @@ -402,7 +404,7 @@ function: VALUE rb_eval_string_protect(const char *str, int *state) -It returns nil when an error occur. And *state is zero if str was +It returns nil when an error occur. Moreover, *state is zero if str was successfully evaluated, or nonzero otherwise. @@ -467,7 +469,8 @@ See 2.1.3 for defining new constant. 3.1 Ruby constants that C can be accessed from C -The following Ruby constants can be referred from C. +As stated in section 1.3, +the following Ruby constants can be referred from C. Qtrue Qfalse @@ -800,7 +803,6 @@ ruby syntax parser -> lex.c : automatically generated ruby evaluator (a.k.a. YARV) - blockinlining.c compile.c eval.c eval_error.c @@ -1191,7 +1193,20 @@ exception occurs, from func2 otherwise. Calls the function func1 with arg1 as the argument, then calls func2 with arg2 if execution terminated. The return value from -rb_ensure() is that of func1. +rb_ensure() is that of func1 when no exception occured. + + VALUE rb_protect(VALUE (*func) (VALUE), VALUE arg, int *state) + +Calls the function func with arg as the argument. If no exception +occured during func, it returns the result of func and *state is zero. +Otherwise, it returns Qnil and sets *state to nonzero. If state is +NULL, it is not set in both cases. + + void rb_jump_tag(int state) + +Continues the exception caught by rb_protect() and rb_eval_string_protect(). +state must be the returned value from those functions. This function +never return to the caller. ** Exceptions and Errors diff --git a/README.EXT.ja b/README.EXT.ja index c6b5dfed9f6b4c..c35de7d42dd114 100644 --- a/README.EXT.ja +++ b/README.EXT.ja @@ -906,8 +906,7 @@ Ruby keywords : ͽÌó¸ì -> lex.c : ¼«Æ°À¸À® -Ruby¤Îɾ²Á´ï(Ä̾ÎYARV) - blockinlining.c +Ruby¤Îɾ²Á´ï (Ä̾ÎYARV) compile.c eval.c eval_error.c @@ -1292,6 +1291,18 @@ VALUE rb_ensure(VALUE (*func1)(), VALUE arg1, void (*func2)(), VALUE arg2) ȯÀ¸¤·¤Æ¤â) func2¤òarg2¤ò°ú¿ô¤È¤·¤Æ¼Â¹Ô¤¹¤ë¡¥Ìá¤êÃͤÏfunc1 ¤ÎÌá¤êÃͤǤ¢¤ë(Îã³°¤¬È¯À¸¤·¤¿»þ¤ÏÌá¤é¤Ê¤¤)¡¥ +VALUE rb_protect(VALUE (*func) (VALUE), VALUE arg, int *state) + + ´Ø¿ôfunc¤òarg¤ò°ú¿ô¤È¤·¤Æ¼Â¹Ô¤·, Îã³°¤¬È¯À¸¤·¤Ê¤±¤ì¤Ð¤½¤ÎÌá + ¤êÃͤòÊÖ¤¹¡¥Îã³°¤¬È¯À¸¤·¤¿¾ì¹ç¤Ï, *state¤ËÈó0¤ò¥»¥Ã¥È¤·¤Æ + Qnil¤òÊÖ¤¹¡¥ + +void rb_jump_tag(int state) + + rb_protect()¤ärb_eval_string_protect()¤ÇÊ᪤µ¤ì¤¿Îã³°¤òºÆ + Á÷¤¹¤ë¡¥state¤Ï¤½¤ì¤é¤Î´Ø¿ô¤«¤éÊÖ¤µ¤ì¤¿ÃͤǤʤ±¤ì¤Ð¤Ê¤é¤Ê¤¤¡¥ + ¤³¤Î´Ø¿ô¤ÏľÀܤθƤӽФ·¸µ¤ËÌá¤é¤Ê¤¤¡¥ + ** Îã³°¡¦¥¨¥é¡¼ void rb_warning(const char *fmt, ...) diff --git a/array.c b/array.c index d16cccb7512c9a..c4cd30cd63c372 100644 --- a/array.c +++ b/array.c @@ -418,7 +418,7 @@ ary_make_shared(VALUE ary) else if (OBJ_FROZEN(ary)) { ary_resize_capa(ary, ARY_HEAP_LEN(ary)); FL_SET_SHARED_ROOT(ary); - ARY_SET_SHARED_NUM(ary, 0); + ARY_SET_SHARED_NUM(ary, 1); return ary; } else { @@ -1223,12 +1223,9 @@ rb_ary_rindex(int argc, VALUE *argv, VALUE ary) VALUE rb_ary_to_ary(VALUE obj) { - if (TYPE(obj) == T_ARRAY) { - return obj; - } - if (rb_respond_to(obj, rb_intern("to_ary"))) { - return to_ary(obj); - } + VALUE tmp = rb_check_array_type(obj); + + if (!NIL_P(tmp)) return tmp; return rb_ary_new3(1, obj); } @@ -2708,8 +2705,8 @@ rb_ary_concat(VALUE x, VALUE y) static VALUE rb_ary_times(VALUE ary, VALUE times) { - VALUE ary2, tmp; - long i, len; + VALUE ary2, tmp, *ptr, *ptr2; + long i, t, len; tmp = rb_check_string_type(times); if (!NIL_P(tmp)) { @@ -2732,8 +2729,11 @@ rb_ary_times(VALUE ary, VALUE times) ary2 = ary_new(rb_obj_class(ary), len); ARY_SET_LEN(ary2, len); - for (i=0; i other_array -> -1, 0, +1 + * array <=> other_array -> -1, 0, +1 or nil * * Comparison---Returns an integer (-1, 0, * or +1) if this array is less than, equal to, or greater than @@ -2982,7 +2984,8 @@ rb_ary_cmp(VALUE ary1, VALUE ary2) long len; VALUE v; - ary2 = to_ary(ary2); + ary2 = rb_check_array_type(ary2); + if (NIL_P(ary2)) return Qnil; if (ary1 == ary2) return INT2FIX(0); v = rb_exec_recursive_paired(recursive_cmp, ary1, ary2, ary2); if (v != Qundef) return v; @@ -3489,14 +3492,16 @@ rb_ary_flatten(int argc, VALUE *argv, VALUE ary) static VALUE rb_ary_shuffle_bang(VALUE ary) { + VALUE *ptr; long i = RARRAY_LEN(ary); rb_ary_modify(ary); + ptr = RARRAY_PTR(ary); while (i) { long j = (long)(rb_genrand_real()*i); - VALUE tmp = RARRAY_PTR(ary)[--i]; - RARRAY_PTR(ary)[i] = RARRAY_PTR(ary)[j]; - RARRAY_PTR(ary)[j] = tmp; + VALUE tmp = ptr[--i]; + ptr[i] = ptr[j]; + ptr[j] = tmp; } return ary; } @@ -3574,6 +3579,7 @@ rb_ary_sample(int argc, VALUE *argv, VALUE ary) return rb_ary_new3(3, ptr[i], ptr[j], ptr[k]); } if ((size_t)n < sizeof(idx)/sizeof(idx[0])) { + VALUE *ptr_result; long sorted[sizeof(idx)/sizeof(idx[0])]; sorted[0] = idx[0] = (long)(rb_genrand_real()*len); for (i=1; i numeric => -1, 0, +1 + * big <=> numeric => -1, 0, +1 or nil * * Comparison---Returns -1, 0, or +1 depending on whether big is * less than, equal to, or greater than numeric. This is the @@ -1388,9 +1388,9 @@ rb_big_eql(VALUE x, VALUE y) /* * call-seq: - * -big => other_big + * -big => integer * - * Unary minus (returns a new Bignum whose value is 0-big) + * Unary minus (returns an integer whose value is 0-big) */ static VALUE @@ -1758,7 +1758,7 @@ bigmul1_single(VALUE x, VALUE y) n = (BDIGIT_DBL)xds[0] * yds[0]; zds[0] = BIGLO(n); - zds[1] = BIGDN(n); + zds[1] = (BDIGIT)BIGDN(n); return z; } @@ -1848,13 +1848,13 @@ big_split(VALUE v, long n, volatile VALUE *ph, volatile VALUE *pl) while (--hn && !vds[hn + ln]); h = bignew(hn += 2, 1); - MEMCPY(BDIGITS(h), vds + ln, BDIGIT, hn); - BDIGITS(h)[hn - 1] = 0; + MEMCPY(BDIGITS(h), vds + ln, BDIGIT, hn - 1); + BDIGITS(h)[hn - 1] = 0; /* margin for carry */ while (--ln && !vds[ln]); l = bignew(ln += 2, 1); - MEMCPY(BDIGITS(l), vds, BDIGIT, ln); - BDIGITS(l)[ln - 1] = 0; + MEMCPY(BDIGITS(l), vds, BDIGIT, ln - 1); + BDIGITS(l)[ln - 1] = 0; /* margin for carry */ *pl = l; *ph = h; @@ -1904,8 +1904,8 @@ bigmul1_karatsuba(VALUE x, VALUE y) if (!BIGZEROP(xl) && !BIGZEROP(yl)) { /* t2 <- xl * yl */ - t2 = bigmul0(xl, yl); - t2n = big_real_len(t2); + t2 = bigmul0(xl, yl); + t2n = big_real_len(t2); /* copy t2 into low bytes of the result (z0) */ MEMCPY(zds, BDIGITS(t2), BDIGIT, t2n); @@ -2013,7 +2013,7 @@ dump_bignum(VALUE x) long i; printf("0x0"); for (i = RBIGNUM_LEN(x); i--; ) { - printf("_%08x", BDIGITS(x)[i]); + printf("_%08x", BDIGITS(x)[i]); } puts(""); } @@ -2041,7 +2041,7 @@ bigmul0(VALUE x, VALUE y) normal: if (x == y) return bigsqr_fast(x); if (xn == 1 && yn == 1) return bigmul1_single(x, y); - return bigmul1_normal(x, y); + return bigmul1_normal(x, y); } /* normal multiplication when x or y is a sparse bignum */ diff --git a/blockinlining.c b/blockinlining.c deleted file mode 100644 index f9eb8af2296737..00000000000000 --- a/blockinlining.c +++ /dev/null @@ -1,464 +0,0 @@ -/********************************************************************** - - blockinlining.c - - - $Author$ - - Copyright (C) 2004-2007 Koichi Sasada - -**********************************************************************/ - -#include "ruby/ruby.h" -#include "vm_core.h" - -static VALUE -iseq_special_block(rb_iseq_t *iseq, void *builder) -{ -#if OPT_BLOCKINLINING - VALUE parent = Qfalse; - VALUE iseqval; - - if (iseq->argc > 1 || iseq->arg_simple == 0) { - /* argument check */ - return 0; - } - - if (iseq->cached_special_block_builder) { - if (iseq->cached_special_block_builder == builder) { - return iseq->cached_special_block; - } - else { - return 0; - } - } - else { - iseq->cached_special_block_builder = (void *)1; - } - - if (iseq->parent_iseq) { - parent = iseq->parent_iseq->self; - } - iseqval = rb_iseq_new_with_bopt(iseq->node, iseq->name, iseq->filename, - parent, iseq->type, - GC_GUARDED_PTR(builder)); - if (0) { - printf("%s\n", RSTRING_PTR(rb_iseq_disasm(iseqval))); - } - iseq->cached_special_block = iseqval; - iseq->cached_special_block_builder = builder; - return iseqval; -#else - return 0; -#endif -} - -static NODE * -new_block(NODE * head, NODE * tail) -{ - head = NEW_BLOCK(head); - tail = NEW_BLOCK(tail); - head->nd_next = tail; - return head; -} - -static NODE * -new_ary(NODE * head, NODE * tail) -{ - head = NEW_ARRAY(head); - head->nd_next = tail; - return head; -} - -static NODE * -new_assign(NODE * lnode, NODE * rhs) -{ - switch (nd_type(lnode)) { - case NODE_LASGN:{ - return NEW_NODE(NODE_LASGN, lnode->nd_vid, rhs, lnode->nd_cnt); - /* NEW_LASGN(lnode->nd_vid, rhs); */ - } - case NODE_GASGN:{ - return NEW_GASGN(lnode->nd_vid, rhs); - } - case NODE_DASGN:{ - return NEW_DASGN(lnode->nd_vid, rhs); - } - case NODE_ATTRASGN:{ - NODE *args = 0; - if (lnode->nd_args) { - args = NEW_ARRAY(lnode->nd_args->nd_head); - args->nd_next = NEW_ARRAY(rhs); - args->nd_alen = 2; - } - else { - args = NEW_ARRAY(rhs); - } - - return NEW_ATTRASGN(lnode->nd_recv, - lnode->nd_mid, - args); - } - default: - rb_bug("unimplemented (block inlining): %s", ruby_node_name(nd_type(lnode))); - } - return 0; -} - -static NODE * -build_Integer_times_node(rb_iseq_t *iseq, NODE * node, NODE * lnode, - VALUE param_vars, VALUE local_vars) -{ - /* Special Block for Integer#times - {|e, _self| - _e = e - while(e < _self) - e = _e - redo_point: - BODY - next_point: - _e = _e.succ - end - } - - {|e, _self| - while(e < _self) - BODY - next_point: - e = e.succ - end - } - */ - ID _self; - CONST_ID(_self, "#_self"); - if (iseq->argc == 0) { - ID e; - CONST_ID(e, "#e"); - rb_ary_push(param_vars, ID2SYM(e)); - rb_ary_push(param_vars, ID2SYM(_self)); - iseq->argc += 2; - - node = - NEW_WHILE(NEW_CALL - (NEW_DVAR(e), idLT, new_ary(NEW_DVAR(_self), 0)), - new_block(NEW_OPTBLOCK(node), - NEW_DASGN(e, - NEW_CALL(NEW_DVAR(e), idSucc, 0))), - Qundef); - } - else { - ID _e; - ID e = SYM2ID(rb_ary_entry(param_vars, 0)); - NODE *assign; - - CONST_ID(_e, "#_e"); - rb_ary_push(param_vars, ID2SYM(_self)); - rb_ary_push(local_vars, ID2SYM(_e)); - iseq->argc++; - - if (nd_type(lnode) == NODE_DASGN_CURR) { - assign = NEW_DASGN(e, NEW_DVAR(_e)); - } - else { - assign = new_assign(lnode, NEW_DVAR(_e)); - } - - node = - new_block(NEW_DASGN(_e, NEW_DVAR(e)), - NEW_WHILE(NEW_CALL - (NEW_DVAR(_e), idLT, - new_ary(NEW_DVAR(_self), 0)), - new_block(assign, - new_block(NEW_OPTBLOCK(node), - NEW_DASGN(_e, - NEW_CALL - (NEW_DVAR(_e), - idSucc, 0)))), - Qundef)); - } - return node; -} - -VALUE -invoke_Integer_times_special_block(VALUE num) -{ - rb_thread_t *th = GET_THREAD(); - rb_block_t *orig_block = GC_GUARDED_PTR_REF(th->cfp->lfp[0]); - - if (orig_block && BUILTIN_TYPE(orig_block->iseq) != T_NODE) { - VALUE tsiseqval = iseq_special_block(orig_block->iseq, - build_Integer_times_node); - rb_iseq_t *tsiseq; - VALUE argv[2], val; - - if (tsiseqval) { - rb_block_t block = *orig_block; - GetISeqPtr(tsiseqval, tsiseq); - block.iseq = tsiseq; - th->cfp->lfp[0] = GC_GUARDED_PTR(&block); - argv[0] = INT2FIX(0); - argv[1] = num; - val = rb_yield_values(2, argv); - if (val == Qundef) { - return num; - } - else { - return val; - } - } - } - return Qundef; -} - -static NODE * -build_Range_each_node(rb_iseq_t *iseq, NODE * node, NODE * lnode, - VALUE param_vars, VALUE local_vars, ID mid) -{ - /* Special Block for Range#each - {|e, _last| - _e = e - while _e < _last - e = _e - next_point: - BODY - redo_point: - _e = _e.succ - end - } - {|e, _last| - while e < _last - BODY - redo_point: - e = e.succ - end - } - */ - ID _last; - CONST_ID(_last, "#_last"); - if (iseq->argc == 0) { - ID e; - CONST_ID(e, "#e"); - rb_ary_push(param_vars, ID2SYM(e)); - rb_ary_push(param_vars, ID2SYM(_last)); - iseq->argc += 2; - - node = - NEW_WHILE(NEW_CALL(NEW_DVAR(e), mid, new_ary(NEW_DVAR(_last), 0)), - new_block(NEW_OPTBLOCK(node), - NEW_DASGN(e, - NEW_CALL(NEW_DVAR(e), idSucc, 0))), - Qundef); - } - else { - ID _e; - ID e = SYM2ID(rb_ary_entry(param_vars, 0)); - NODE *assign; - - CONST_ID(_e, "#_e"); - rb_ary_push(param_vars, ID2SYM(_last)); - rb_ary_push(local_vars, ID2SYM(_e)); - iseq->argc++; - - if (nd_type(lnode) == NODE_DASGN_CURR) { - assign = NEW_DASGN(e, NEW_DVAR(_e)); - } - else { - assign = new_assign(lnode, NEW_DVAR(_e)); - } - - node = - new_block(NEW_DASGN(_e, NEW_DVAR(e)), - NEW_WHILE(NEW_CALL - (NEW_DVAR(_e), mid, - new_ary(NEW_DVAR(_last), 0)), - new_block(assign, - new_block(NEW_OPTBLOCK(node), - NEW_DASGN(_e, - NEW_CALL - (NEW_DVAR(_e), - idSucc, 0)))), - Qundef)); - } - return node; -} - -static NODE * -build_Range_each_node_LE(rb_iseq_t *iseq, NODE * node, NODE * lnode, - VALUE param_vars, VALUE local_vars) -{ - return build_Range_each_node(iseq, node, lnode, - param_vars, local_vars, idLE); -} - -static NODE * -build_Range_each_node_LT(rb_iseq_t *iseq, NODE * node, NODE * lnode, - VALUE param_vars, VALUE local_vars) -{ - return build_Range_each_node(iseq, node, lnode, - param_vars, local_vars, idLT); -} - -VALUE -invoke_Range_each_special_block(VALUE range, - VALUE beg, VALUE end, int excl) -{ - rb_thread_t *th = GET_THREAD(); - rb_block_t *orig_block = GC_GUARDED_PTR_REF(th->cfp->lfp[0]); - - if (BUILTIN_TYPE(orig_block->iseq) != T_NODE) { - void *builder = - excl ? build_Range_each_node_LT : build_Range_each_node_LE; - VALUE tsiseqval = iseq_special_block(orig_block->iseq, builder); - rb_iseq_t *tsiseq; - VALUE argv[2]; - - if (tsiseqval) { - VALUE val; - rb_block_t block = *orig_block; - GetISeqPtr(tsiseqval, tsiseq); - block.iseq = tsiseq; - th->cfp->lfp[0] = GC_GUARDED_PTR(&block); - argv[0] = beg; - argv[1] = end; - val = rb_yield_values(2, argv); - if (val == Qundef) { - return range; - } - else { - return val; - } - } - } - return Qundef; -} - - -static NODE * -build_Array_each_node(rb_iseq_t *iseq, NODE * node, NODE * lnode, - VALUE param_vars, VALUE local_vars) -{ - /* Special block for Array#each - ary.each{|e| - BODY - } - => - {|e, _self| - _i = 0 - while _i < _self.length - e = _self[_i] - redo_point: - BODY - next_point: - _i = _i.succ - end - } - - ary.each{ - BODY - } - => - {|_i, _self| - _i = 0 - while _i < _self.length - redo_point: - BODY - next_point: - _i = _i.succ - end - } - */ - - ID _self, _i; - - CONST_ID(_self, "#_self"); - CONST_ID(_i, "#_i"); - if (iseq->argc == 0) { - ID _e; - CONST_ID(_e, "#_e"); - rb_ary_push(param_vars, ID2SYM(_e)); - rb_ary_push(param_vars, ID2SYM(_self)); - iseq->argc += 2; - rb_ary_push(local_vars, ID2SYM(_i)); - - node = - new_block(NEW_DASGN(_i, NEW_LIT(INT2FIX(0))), - NEW_WHILE(NEW_CALL(NEW_DVAR(_i), idLT, - new_ary(NEW_CALL - (NEW_DVAR(_self), idLength, - 0), 0)), - new_block(NEW_OPTBLOCK(node), - NEW_DASGN(_i, - NEW_CALL(NEW_DVAR(_i), - idSucc, 0))), - Qundef)); - } - else { - ID e = SYM2ID(rb_ary_entry(param_vars, 0)); - NODE *assign; - - rb_ary_push(param_vars, ID2SYM(_self)); - iseq->argc++; - rb_ary_push(local_vars, ID2SYM(_i)); - - if (nd_type(lnode) == NODE_DASGN_CURR) { - assign = NEW_DASGN(e, - NEW_CALL(NEW_DVAR(_self), idAREF, - new_ary(NEW_DVAR(_i), 0))); - } - else { - assign = new_assign(lnode, - NEW_CALL(NEW_DVAR(_self), idAREF, - new_ary(NEW_DVAR(_i), 0))); - } - - node = - new_block(NEW_DASGN(_i, NEW_LIT(INT2FIX(0))), - NEW_WHILE(NEW_CALL(NEW_DVAR(_i), idLT, - new_ary(NEW_CALL - (NEW_DVAR(_self), idLength, - 0), 0)), new_block(assign, - new_block - (NEW_OPTBLOCK - (node), - NEW_DASGN - (_i, - NEW_CALL - (NEW_DVAR - (_i), - idSucc, - 0)))), - Qundef)); - } - return node; -} - -VALUE -invoke_Array_each_special_block(VALUE ary) -{ - rb_thread_t *th = GET_THREAD(); - rb_block_t *orig_block = GC_GUARDED_PTR_REF(th->cfp->lfp[0]); - - if (BUILTIN_TYPE(orig_block->iseq) != T_NODE) { - VALUE tsiseqval = iseq_special_block(orig_block->iseq, - build_Array_each_node); - rb_iseq_t *tsiseq; - VALUE argv[2]; - - if (tsiseqval) { - VALUE val; - rb_block_t block = *orig_block; - GetISeqPtr(tsiseqval, tsiseq); - block.iseq = tsiseq; - th->cfp->lfp[0] = GC_GUARDED_PTR(&block); - argv[0] = 0; - argv[1] = ary; - val = rb_yield_values(2, argv); - if (val == Qundef) { - return ary; - } - else { - return val; - } - } - } - return Qundef; -} diff --git a/bootstraptest/test_eval.rb b/bootstraptest/test_eval.rb index 452ce43107a7e9..f63d995ffbe9ff 100644 --- a/bootstraptest/test_eval.rb +++ b/bootstraptest/test_eval.rb @@ -308,3 +308,14 @@ def kaboom! binding end }, '[ruby-core:25125]' + +assert_normal_exit %q{ + hash = {} + ("aaaa".."matz").each_with_index do |s, i| + hash[s] = i + end + begin + eval "class C; @@h = #{hash.inspect}; end" + rescue SystemStackError + end +}, '[ruby-core:25714]' diff --git a/bootstraptest/test_gc.rb b/bootstraptest/test_gc.rb new file mode 100644 index 00000000000000..eb68c9845e37c9 --- /dev/null +++ b/bootstraptest/test_gc.rb @@ -0,0 +1,34 @@ +assert_normal_exit %q{ +a = [] +ms = "a".."k" +("A".."Z").each do |mod| + mod = eval("module #{mod}; self; end") + ms.each do |meth| + iseq = RubyVM::InstructionSequence.compile("module #{mod}; def #{meth}; end; end") + GC.stress = true + iseq.eval + GC.stress = false + end + o = Object.new.extend(mod) + ms.each do |meth| + o.send(meth) + end +end +}, '[ruby-dev:39453]' + +assert_normal_exit %q{ +a = [] +ms = "a".."k" +("A".."Z").each do |mod| + mod = eval("module #{mod}; self; end") + ms.each do |meth| + GC.stress = true + mod.module_eval {define_method(meth) {}} + GC.stress = false + end + o = Object.new.extend(mod) + ms.each do |meth| + o.send(meth) + end +end +}, '[ruby-dev:39453]' diff --git a/bootstraptest/test_io.rb b/bootstraptest/test_io.rb index 22946542112587..24a5b3c680ce2d 100644 --- a/bootstraptest/test_io.rb +++ b/bootstraptest/test_io.rb @@ -14,6 +14,7 @@ require "timeout" timeout(3) do r, w = IO.pipe + w.nonblock? w.nonblock = true w.write_nonblock("a" * 100000) w.nonblock = false @@ -26,7 +27,7 @@ t1.join t2.join end - rescue LoadError, TimeoutError + rescue LoadError, TimeoutError, NotImplementedError end }, '[ruby-dev:32566]' diff --git a/bootstraptest/test_syntax.rb b/bootstraptest/test_syntax.rb index 6843b232858004..2e8639b3f49385 100644 --- a/bootstraptest/test_syntax.rb +++ b/bootstraptest/test_syntax.rb @@ -836,3 +836,44 @@ class X < RuntimeError;end assert_equal 'ok', %q{ "o" "#{}k" }, '[ruby-dev:38980]' + +bug2415 = '[ruby-core:26961]' +assert_normal_exit %q{ + 0.times do + 0.times do + def x(a=1, b, *rest); nil end + end + end +}, bug2415 + +assert_normal_exit %q{ + 0.times do + 0.times do + def x@; nil end + end + end +}, bug2415 + +assert_normal_exit %q{ + 0.times do + 0.times do + def x(a = 0.times do + def y(a=1, b, *rest); nil; end + end) + nil + end + end + end +}, bug2415 + +assert_normal_exit %q{ + 0.times do + 0.times do + def x(a = 0.times do + def x@; nil; end + end) + nil + end + end + end +}, bug2415 diff --git a/bootstraptest/test_thread.rb b/bootstraptest/test_thread.rb index c82ad22ebe432a..446c9ff4d2b4d7 100644 --- a/bootstraptest/test_thread.rb +++ b/bootstraptest/test_thread.rb @@ -188,18 +188,18 @@ Thread.current[:a] }.value + Thread.current[:a] } -assert_equal %q{100}, %q{ +assert_normal_exit %q{ begin 100.times do |i| begin - Thread.start(Thread.current) {|u| u.raise } + th = Thread.start(Thread.current) {|u| u.raise } raise rescue ensure + th.join end end rescue - 100 end }, '[ruby-dev:31371]' @@ -385,3 +385,53 @@ def m end :ok } + +assert_equal 'ok', %{ + open("zzz.rb", "w") do |f| + f.puts <<-END + begin + m = Mutex.new + Thread.new { m.lock; sleep 1 } + sleep 0.3 + parent = Thread.current + Thread.new do + sleep 0.3 + begin + fork { GC.start } + rescue Exception + parent.raise $! + end + end + m.lock + pid, status = Process.wait2 + $result = status.success? ? :ok : :ng + rescue NotImplementedError + $result = :ok + end + END + end + require "./zzz.rb" + $result +} + +assert_finish 3, %q{ + require 'thread' + + lock = Mutex.new + cond = ConditionVariable.new + t = Thread.new do + lock.synchronize do + cond.wait(lock) + end + end + + begin + pid = fork do + # Child + STDOUT.write "This is the child process.\n" + STDOUT.write "Child process exiting.\n" + end + Process.waitpid(pid) + rescue NotImplementedError + end +}, '[ruby-core:26361]' diff --git a/class.c b/class.c index 865197b8434097..056e1715beabcf 100644 --- a/class.c +++ b/class.c @@ -97,6 +97,9 @@ rb_check_inheritable(VALUE super) if (RBASIC(super)->flags & FL_SINGLETON) { rb_raise(rb_eTypeError, "can't make subclass of singleton class"); } + if (super == rb_cClass) { + rb_raise(rb_eTypeError, "can't make subclass of Class"); + } } @@ -111,9 +114,6 @@ rb_class_new(VALUE super) { Check_Type(super, T_CLASS); rb_check_inheritable(super); - if (super == rb_cClass) { - rb_raise(rb_eTypeError, "can't make subclass of Class"); - } return rb_class_boot(super); } @@ -151,6 +151,9 @@ rb_mod_init_copy(VALUE clone, VALUE orig) if (RCLASS_IV_TBL(orig)) { ID id; + if (RCLASS_IV_TBL(clone)) { + st_free_table(RCLASS_IV_TBL(clone)); + } RCLASS_IV_TBL(clone) = st_copy(RCLASS_IV_TBL(orig)); CONST_ID(id, "__classpath__"); st_delete(RCLASS_IV_TBL(clone), (st_data_t*)&id, 0); @@ -159,6 +162,11 @@ rb_mod_init_copy(VALUE clone, VALUE orig) } if (RCLASS_M_TBL(orig)) { struct clone_method_data data; + + if (RCLASS_M_TBL(clone)) { + extern void rb_free_m_table(st_table *tbl); + rb_free_m_table(RCLASS_M_TBL(clone)); + } data.tbl = RCLASS_M_TBL(clone) = st_init_numtable(); data.klass = clone; st_foreach(RCLASS_M_TBL(orig), clone_method, @@ -1035,7 +1043,7 @@ rb_obj_singleton_methods(int argc, VALUE *argv, VALUE obj) *
* This form takes two parameters: self and args. * \a self is the receiver. \a args is an Array object which - * containts the arguments. + * contains the arguments. * * \code * static VALUE my_method(VALUE self, VALUE args); @@ -1257,6 +1265,16 @@ rb_define_attr(VALUE klass, const char *name, int read, int write) rb_attr(klass, rb_intern(name), read, write, FALSE); } +int +rb_obj_basic_to_s_p(VALUE obj) +{ + const rb_method_entry_t *me = rb_method_entry(CLASS_OF(obj), rb_intern("to_s")); + if (me && me->def && me->def->type == VM_METHOD_TYPE_CFUNC && + me->def->body.cfunc.func == rb_any_to_s) + return 1; + return 0; +} + #include int diff --git a/common.mk b/common.mk index 18901abafead65..d11866c8c15c17 100644 --- a/common.mk +++ b/common.mk @@ -124,9 +124,9 @@ BOOTSTRAPRUBY = $(BASERUBY) COMPILE_PRELUDE = $(MINIRUBY) -I$(srcdir) -I. -rrbconfig $(srcdir)/tool/compile_prelude.rb -all: encs exts main +all: encs exts main docs -main: exts +main: encs exts @$(RUNCMD) $(MKMAIN_CMD) $(MAKE) exts: $(MKMAIN_CMD) @@ -170,10 +170,19 @@ $(STATIC_RUBY)$(EXEEXT): $(MAINOBJ) $(DLDOBJS) $(EXTOBJS) $(LIBRUBY_A) $(PURIFY) $(CC) $(MAINOBJ) $(DLDOBJS) $(EXTOBJS) $(LIBRUBY_A) $(MAINLIBS) $(EXTLIBS) $(LIBS) $(OUTFLAG)$@ $(LDFLAGS) $(XLDFLAGS) ruby.imp: $(EXPORTOBJS) - @$(NM) -Pgp $(EXPORTOBJS) | awk 'BEGIN{print "#!"}; $$2~/^[BD]$$/{print $$1}' | sort -u -o $@ - -install: install-nodoc $(RDOCTARGET) -install-all: install-nodoc install-doc install-capi + @$(NM) -Pgp $(EXPORTOBJS) | \ + awk 'BEGIN{print "#!"}; $$2~/^[BDT]$$/&&$$1!~/^(Init_|.*_threadptr_|\.)/{print $$1}' | \ + sort -u -o $@ + +install: install-$(INSTALLDOC) +docs: $(DOCTARGETS) + +install-all: doc pre-install-all do-install-all post-install-all +pre-install-all:: pre-install-local pre-install-ext pre-install-doc +do-install-all: $(PROGRAM) + $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=all --rdoc-output="$(RDOCOUT)" +post-install-all:: post-install-local post-install-ext post-install-doc + @$(NULLCMD) install-nodoc: pre-install-nodoc do-install-nodoc post-install-nodoc pre-install-nodoc:: pre-install-local pre-install-ext @@ -248,9 +257,14 @@ post-install-capi:: @$(NULLCMD) what-where: no-install -no-install: no-install-nodoc no-install-doc +no-install: no-install-$(INSTALLDOC) what-where-all: no-install-all -no-install-all: no-install-nodoc +no-install-all: pre-no-install-all dont-install-all post-no-install-all +pre-no-install-all:: pre-no-install-local pre-no-install-ext pre-no-install-doc +dont-install-all: $(PROGRAM) + $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=all --rdoc-output="$(RDOCOUT)" +post-no-install-all:: post-no-install-local post-no-install-ext post-no-install-doc + @$(NULLCMD) what-where-nodoc: no-install-nodoc no-install-nodoc: pre-no-install-nodoc dont-install-nodoc post-no-install-nodoc @@ -336,7 +350,8 @@ post-install-doc:: rdoc: $(PROGRAM) PHONY @echo Generating RDoc documentation - $(RUNRUBY) "$(srcdir)/bin/rdoc" --all --ri --op "$(RDOCOUT)" "$(srcdir)" + $(XRUBY) "$(srcdir)/bin/rdoc" --all --ri --op "$(RDOCOUT)" "$(srcdir)" +nodoc: PHONY what-where-doc: no-install-doc no-install-doc: pre-no-install-doc dont-install-doc post-no-install-doc @@ -351,7 +366,7 @@ CLEAR_INSTALLED_LIST = clear-installed-list install-prereq: $(CLEAR_INSTALLED_LIST) PHONY clear-installed-list: PHONY - @exit > $(INSTALLED_LIST) + @set MAKE="$(MAKE)" > $(INSTALLED_LIST) clean: clean-ext clean-local clean-enc clean-golf clean-rdoc clean-extout clean-local:: PHONY @@ -389,6 +404,7 @@ clean-enc distclean-enc realclean-enc: @-$(MAKE) -f $(ENC_MK) $(MFLAGS) $(@:-enc=) check: test test-all +check-ruby: test test-ruby btest: miniruby$(EXEEXT) $(TEST_RUNNABLE)-btest no-btest: PHONY @@ -417,6 +433,11 @@ no-test-all: PHONY yes-test-all: PHONY $(RUNRUBY) "$(srcdir)/test/runner.rb" $(TESTS) +test-ruby: $(TEST_RUNNABLE)-test-ruby +no-test-ruby: PHONY +yes-test-ruby: PHONY + $(RUNRUBY) "$(srcdir)/test/runner.rb" ruby + extconf: $(PREP) $(MAKEDIRS) "$(EXTCONFDIR)" $(RUNRUBY) -C "$(EXTCONFDIR)" $(EXTCONF) $(EXTCONFARGS) @@ -517,7 +538,7 @@ enum.$(OBJEXT): {$(VPATH)}enum.c $(RUBY_H_INCLUDES) {$(VPATH)}node.h \ enumerator.$(OBJEXT): {$(VPATH)}enumerator.c $(RUBY_H_INCLUDES) error.$(OBJEXT): {$(VPATH)}error.c {$(VPATH)}known_errors.inc \ $(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES) {$(VPATH)}debug.h -eval.$(OBJEXT): {$(VPATH)}eval.c {$(VPATH)}eval_intern.h \ +eval.$(OBJEXT): {$(VPATH)}eval.c {$(VPATH)}eval_intern.h {$(VPATH)}vm.h \ $(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES) {$(VPATH)}eval_error.c \ {$(VPATH)}eval_jump.c {$(VPATH)}debug.h {$(VPATH)}gc.h {$(VPATH)}iseq.h load.$(OBJEXT): {$(VPATH)}load.c {$(VPATH)}eval_intern.h \ @@ -607,7 +628,7 @@ variable.$(OBJEXT): {$(VPATH)}variable.c $(RUBY_H_INCLUDES) \ {$(VPATH)}node.h {$(VPATH)}util.h {$(VPATH)}encoding.h \ {$(VPATH)}oniguruma.h version.$(OBJEXT): {$(VPATH)}version.c $(RUBY_H_INCLUDES) \ - {$(VPATH)}version.h $(srcdir)/revision.h + {$(VPATH)}version.h $(srcdir)/revision.h {$(VPATH)}config.h compile.$(OBJEXT): {$(VPATH)}compile.c {$(VPATH)}iseq.h \ $(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES) {$(VPATH)}insns.inc \ diff --git a/compar.c b/compar.c index e8ebfc5bfafdaa..4db42913db95d7 100644 --- a/compar.c +++ b/compar.c @@ -163,7 +163,9 @@ cmp_between(VALUE x, VALUE min, VALUE max) * may be ordered. The class must define the <=> operator, * which compares the receiver against another object, returning -1, 0, * or +1 depending on whether the receiver is less than, equal to, or - * greater than the other object. Comparable uses + * greater than the other object. If the other object is not comparable + * then the <=> operator should return nil. + * Comparable uses * <=> to implement the conventional comparison operators * (<, <=, ==, >=, * and >) and the method between?. diff --git a/compile.c b/compile.c index 3999e69de650fd..5581ea8439e10a 100644 --- a/compile.c +++ b/compile.c @@ -50,7 +50,7 @@ typedef struct iseq_label_data { typedef struct iseq_insn_data { LINK_ELEMENT link; enum ruby_vminsn_type insn_id; - long line_no; + int line_no; int operand_size; int sc_state; VALUE *operands; @@ -59,7 +59,7 @@ typedef struct iseq_insn_data { typedef struct iseq_adjust_data { LINK_ELEMENT link; LABEL *label; - long line_no; + int line_no; } ADJUST; struct ensure_range { @@ -223,8 +223,9 @@ PRINTF_ARGS(void ruby_debug_printf(const char*, ...), 1, 2); #define ADD_TRACE(seq, line, event) \ do { \ if ((event) == RUBY_EVENT_LINE && iseq->coverage && \ - RARRAY_PTR(iseq->coverage)[(line) - 1] == Qnil) { \ + (line) != iseq->compile_data->last_coverable_line) { \ RARRAY_PTR(iseq->coverage)[(line) - 1] = INT2FIX(0); \ + iseq->compile_data->last_coverable_line = (line); \ ADD_INSN1(seq, line, trace, INT2FIX(RUBY_EVENT_COVERAGE)); \ } \ if (iseq->compile_data->option->trace_instruction) { \ @@ -253,12 +254,12 @@ PRINTF_ARGS(void ruby_debug_printf(const char*, ...), 1, 2); (debug_compile("== " desc "\n", \ iseq_compile_each(iseq, anchor, node, 0))) -/* compile node, this node's value will be poped */ +/* compile node, this node's value will be popped */ #define COMPILE_POPED(anchor, desc, node) \ (debug_compile("== " desc "\n", \ iseq_compile_each(iseq, anchor, node, 1))) -/* compile node, which is poped when 'poped' is true */ +/* compile node, which is popped when 'poped' is true */ #define COMPILE_(anchor, desc, node, poped) \ (debug_compile("== " desc "\n", \ iseq_compile_each(iseq, anchor, node, poped))) @@ -327,9 +328,9 @@ static int calc_sp_depth(int depth, INSN *iobj); static void ADD_ELEM(ISEQ_ARG_DECLARE LINK_ANCHOR *anchor, LINK_ELEMENT *elem); -static INSN *new_insn_body(rb_iseq_t *iseq, long line_no, int insn_id, int argc, ...); +static INSN *new_insn_body(rb_iseq_t *iseq, int line_no, int insn_id, int argc, ...); static LABEL *new_label_body(rb_iseq_t *iseq, long line); -static ADJUST *new_adjust_body(rb_iseq_t *iseq, LABEL *label, long line); +static ADJUST *new_adjust_body(rb_iseq_t *iseq, LABEL *label, int line); static int iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *anchor, NODE * n, int); static int iseq_setup(rb_iseq_t *iseq, LINK_ANCHOR *anchor); @@ -849,7 +850,7 @@ new_label_body(rb_iseq_t *iseq, long line) } static ADJUST * -new_adjust_body(rb_iseq_t *iseq, LABEL *label, long line) +new_adjust_body(rb_iseq_t *iseq, LABEL *label, int line) { ADJUST *adjust = compile_data_alloc_adjust(iseq); adjust->link.type = ISEQ_ELEMENT_ADJUST; @@ -860,7 +861,7 @@ new_adjust_body(rb_iseq_t *iseq, LABEL *label, long line) } static INSN * -new_insn_core(rb_iseq_t *iseq, long line_no, +new_insn_core(rb_iseq_t *iseq, int line_no, int insn_id, int argc, VALUE *argv) { INSN *iobj = compile_data_alloc_insn(iseq); @@ -876,7 +877,7 @@ new_insn_core(rb_iseq_t *iseq, long line_no, } static INSN * -new_insn_body(rb_iseq_t *iseq, long line_no, int insn_id, int argc, ...) +new_insn_body(rb_iseq_t *iseq, int line_no, int insn_id, int argc, ...) { VALUE *operands = 0; va_list argv; @@ -1054,7 +1055,7 @@ iseq_set_arguments(rb_iseq_t *iseq, LINK_ANCHOR *optargs, NODE *node_args) } /* - * new argument infromation: + * new argument information: * NODE_ARGS [m: int, o: NODE_OPT_ARG, ->] * NODE_ARGS_AUX [r: ID, b: ID, ->] * NODE_ARGS_AUX [Pst: id, Plen: int, init: NODE*] @@ -1283,7 +1284,7 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor) { lobj = (LABEL *)list; lobj->position = pos; - lobj->set = Qtrue; + lobj->set = TRUE; break; } case ISEQ_ELEMENT_NONE: @@ -1365,7 +1366,7 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor) { /* label(destination position) */ lobj = (LABEL *)operands[j]; - if (lobj->set != Qtrue) { + if (!lobj->set) { rb_compile_error(RSTRING_PTR(iseq->filename), iobj->line_no, "unknown label"); } @@ -1391,7 +1392,7 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor) VALUE lv = rb_ary_entry(lits, i+1); lobj = (LABEL *)(lv & ~1); - if (lobj->set != Qtrue) { + if (!lobj->set) { rb_compile_error(RSTRING_PTR(iseq->filename), iobj->line_no, "unknown label"); } @@ -2210,12 +2211,12 @@ compile_branch_condition(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * cond, case NODE_LIT: /* NODE_LIT is always not true */ case NODE_TRUE: case NODE_STR: - /* printf("useless conditon eliminate (%s)\n", ruby_node_name(nd_type(cond))); */ + /* printf("useless condition eliminate (%s)\n", ruby_node_name(nd_type(cond))); */ ADD_INSNL(ret, nd_line(cond), jump, then_label); break; case NODE_FALSE: case NODE_NIL: - /* printf("useless conditon eliminate (%s)\n", ruby_node_name(nd_type(cond))); */ + /* printf("useless condition eliminate (%s)\n", ruby_node_name(nd_type(cond))); */ ADD_INSNL(ret, nd_line(cond), jump, else_label); break; default: @@ -2429,7 +2430,7 @@ compile_massign_opt(rb_iseq_t *iseq, LINK_ANCHOR *ret, while (rhsn) { if (llen <= rlen) { - COMPILE_POPED(ret, "masgn val (poped)", rhsn->nd_head); + COMPILE_POPED(ret, "masgn val (popped)", rhsn->nd_head); } else { COMPILE(ret, "masgn val", rhsn->nd_head); @@ -2655,13 +2656,13 @@ defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *ret, case NODE_VCALL: case NODE_FCALL: case NODE_ATTRASGN:{ - int self = Qtrue; + int self = TRUE; switch (type) { case NODE_ATTRASGN: if (node->nd_recv == (NODE *)1) break; case NODE_CALL: - self = Qfalse; + self = FALSE; break; default: /* through */; @@ -3167,7 +3168,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped) LABEL *prev_start_label = iseq->compile_data->start_label; LABEL *prev_end_label = iseq->compile_data->end_label; LABEL *prev_redo_label = iseq->compile_data->redo_label; - VALUE prev_loopval_popped = iseq->compile_data->loopval_popped; + int prev_loopval_popped = iseq->compile_data->loopval_popped; struct iseq_compile_data_ensure_node_stack enl; @@ -3517,7 +3518,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped) ADD_INSN(ret, nd_line(node), pop); } - /* resgister catch entry */ + /* register catch entry */ ADD_CATCH_ENTRY(CATCH_TYPE_RESCUE, lstart, lend, rescue, lcont); ADD_CATCH_ENTRY(CATCH_TYPE_RETRY, lend, lcont, 0, lstart); break; @@ -3760,9 +3761,9 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped) ADD_INSN(ret, nd_line(node), putnil); } COMPILE(ret, "NODE_OP_ASGN1 recv", node->nd_recv); - if (nd_type(node->nd_args->nd_body) != NODE_ZARRAY) { + if (nd_type(node->nd_args->nd_head) != NODE_ZARRAY) { INIT_ANCHOR(args); - argc = setup_args(iseq, args, node->nd_args->nd_body, &flag); + argc = setup_args(iseq, args, node->nd_args->nd_head, &flag); ADD_SEQ(ret, args); } else { @@ -3795,7 +3796,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped) } ADD_INSN(ret, nd_line(node), pop); - COMPILE(ret, "NODE_OP_ASGN1 args->head: ", node->nd_args->nd_head); + COMPILE(ret, "NODE_OP_ASGN1 args->body: ", node->nd_args->nd_body); if (!poped) { ADD_INSN1(ret, nd_line(node), setn, FIXNUM_INC(argc, 2)); } @@ -3819,7 +3820,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped) ADD_LABEL(ret, lfin); } else { - COMPILE(ret, "NODE_OP_ASGN1 args->head: ", node->nd_args->nd_head); + COMPILE(ret, "NODE_OP_ASGN1 args->body: ", node->nd_args->nd_body); ADD_SEND(ret, nd_line(node), ID2SYM(id), INT2FIX(1)); if (!poped) { ADD_INSN1(ret, nd_line(node), setn, FIXNUM_INC(argc, 2)); @@ -4038,7 +4039,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped) } } #endif - /* reciever */ + /* receiver */ if (type == NODE_CALL) { COMPILE(recv, "recv", node->nd_recv); } @@ -4148,7 +4149,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped) } } - /* dummy reciever */ + /* dummy receiver */ ADD_INSN1(ret, nd_line(node), putobject, nd_type(node) == NODE_ZSUPER ? Qfalse : Qtrue); ADD_SEQ(ret, args); @@ -4370,11 +4371,11 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped) INT2FIX(0)); break; case NODE_MATCH2: - COMPILE(recv, "reciever", node->nd_recv); + COMPILE(recv, "receiver", node->nd_recv); COMPILE(val, "value", node->nd_value); break; case NODE_MATCH3: - COMPILE(recv, "reciever", node->nd_value); + COMPILE(recv, "receiver", node->nd_value); COMPILE(val, "value", node->nd_recv); break; } @@ -4700,7 +4701,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped) } case NODE_DOT2: case NODE_DOT3:{ - int flag = type == NODE_DOT2 ? INT2FIX(0) : INT2FIX(1); + VALUE flag = type == NODE_DOT2 ? INT2FIX(0) : INT2FIX(1); COMPILE(ret, "min", (NODE *) node->nd_beg); COMPILE(ret, "max", (NODE *) node->nd_end); if (poped) { @@ -4924,7 +4925,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped) } default: rb_bug("iseq_compile_each: unknown node: %s", ruby_node_name(type)); - return Qnil; + return COMPILE_NG; } debug_node_end(); @@ -5173,10 +5174,10 @@ static int iseq_build_body(rb_iseq_t *iseq, LINK_ANCHOR *anchor, VALUE body, struct st_table *labels_table) { - /* TODO: body should be freezed */ + /* TODO: body should be frozen */ VALUE *ptr = RARRAY_PTR(body); - int len = RARRAY_LEN(body); - int i, j; + long i, len = RARRAY_LEN(body); + int j; int line_no = 0; /* * index -> LABEL *label @@ -5199,7 +5200,7 @@ iseq_build_body(rb_iseq_t *iseq, LINK_ANCHOR *anchor, } else if (TYPE(obj) == T_ARRAY) { VALUE *argv = 0; - int argc = (int)RARRAY_LEN(obj) - 1; + int argc = RARRAY_LENINT(obj) - 1; VALUE insn_id; VALUE insn; @@ -5286,7 +5287,7 @@ iseq_build_body(rb_iseq_t *iseq, LINK_ANCHOR *anchor, } ADD_ELEM(anchor, (LINK_ELEMENT*)new_insn_core(iseq, line_no, - insn_id, argc, argv)); + (enum ruby_vminsn_type)insn_id, argc, argv)); } else { rb_raise(rb_eTypeError, "unexpected object for instruction"); @@ -5314,7 +5315,7 @@ rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE locals, VALUE args, INIT_ANCHOR(anchor); - iseq->local_table_size = RARRAY_LEN(locals); + iseq->local_table_size = RARRAY_LENINT(locals); iseq->local_table = tbl = (ID *)ALLOC_N(ID *, iseq->local_table_size); iseq->local_size = iseq->local_table_size + 1; @@ -5343,7 +5344,7 @@ rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE locals, VALUE args, iseq->arg_post_len = FIX2INT(arg_post_len); iseq->arg_post_start = FIX2INT(arg_post_start); iseq->arg_block = FIX2INT(arg_block); - iseq->arg_opts = RARRAY_LEN(arg_opt_labels); + iseq->arg_opts = RARRAY_LENINT(arg_opt_labels); iseq->arg_opt_table = (VALUE *)ALLOC_N(VALUE, iseq->arg_opts); if (iseq->arg_block != -1) { diff --git a/complex.c b/complex.c index 0a4f4aae22c449..c6c9d37fd90217 100644 --- a/complex.c +++ b/complex.c @@ -1051,9 +1051,9 @@ nucomp_polar(VALUE self) /* * call-seq: * cmp.conj -> complex - * cmp.conjucate -> complex + * cmp.conjugate -> complex * - * Returns the complex conjucate. + * Returns the complex conjugate. */ static VALUE nucomp_conj(VALUE self) @@ -1590,7 +1590,7 @@ string_to_c_strict(VALUE self) * * Returns a complex which denotes the string form. The parser * ignores leading whitespaces and trailing garbage. Any digit - * sequences can be separeted by an underscore. Returns zero for null + * sequences can be separated by an underscore. Returns zero for null * or garbage string. * * For example: @@ -1793,7 +1793,7 @@ numeric_polar(VALUE self) /* * call-seq: * num.conj -> self - * num.conjucate -> self + * num.conjugate -> self * * Returns self. */ diff --git a/configure.in b/configure.in index bc0a2c0e201893..0c6f2fcde9e2ee 100644 --- a/configure.in +++ b/configure.in @@ -16,7 +16,7 @@ dnl note that spaces after comma need to be quoted. dnl environment section { AC_ARG_WITH(baseruby, - AS_HELP_STRING([--with-baseruby=RUBY], [ use RUBY as baseruby; RUBY is the pathname of ruby]), + AS_HELP_STRING([--with-baseruby=RUBY], [use RUBY as baseruby; RUBY is the pathname of ruby]), [ case "$withval" in when(*ruby*) @@ -155,6 +155,8 @@ AC_ARG_WITH(arch, entirely, then the package will be built only for the target platform]), [target_archs="$withval"], [unset target_archs]) + +AC_DEFUN([RUBY_UNIVERSAL_ARCH], [ test ${CFLAGS+set} && CFLAGS=`echo "$CFLAGS" | sed 's/ *-arch *[^ ]*//g'` test ${LDFLAGS+set} && LDFLAGS=`echo "$LDFLAGS" | sed 's/ *-arch *[^ ]*//g'` unset ARCH_FLAG universal_binary universal_archnames @@ -187,34 +189,49 @@ if test ${target_archs+set}; then esac AC_MSG_RESULT([$target_archs]) + target=`echo $target | sed "s/^$target_cpu-/-/"` + target_alias=`echo $target_alias | sed "s/^$target_cpu-/-/"` if test "${universal_binary-no}" = yes; then RUBY_PREREQ_AC(2.63, [ to compile universal binary]) AC_SUBST(try_header,try_compile) - target=`echo $target | sed "s/^$target_cpu-/universal-/"` - target_alias=`echo $target_alias | sed "s/^$target_cpu-/universal-/"` target_cpu=universal real_cross_compiling=$cross_compiling else - target=`echo $target | sed "s/^$target_cpu-/${target_archs}-/"` - target_alias=`echo $target_alias | sed "s/^$target_cpu-/${target_archs}-/"` target_cpu=${target_archs} fi + case "$target" in when(-*) target="$target_cpu${target}";; esac + case "$target_alias" in when(-*) target_alias="$target_cpu${target_alias}";; esac CFLAGS="$CFLAGS ${ARCH_FLAG}" LDFLAGS="${LDFLAGS+$LDFLAGS }${ARCH_FLAG}" else + if test x"$target_alias" = x; then + case "$target_os" in + when(darwin*) + AC_MSG_CHECKING([for real target cpu]) + target=`echo $target | sed "s/^$target_cpu-/-/"` + target_cpu=`$CC -E - 2>/dev/null <tag) rb_raise(rb_eThreadError, "not running thread"); \ + } while (0) static void cont_mark(void *ptr) @@ -195,7 +198,8 @@ fiber_free(void *ptr) if (ptr) { rb_fiber_t *fib = ptr; - if (fib->cont.type != ROOT_FIBER_CONTEXT) { + if (fib->cont.type != ROOT_FIBER_CONTEXT && + fib->cont.saved_thread.local_storage) { st_free_table(fib->cont.saved_thread.local_storage); } fiber_link_remove(fib); @@ -276,12 +280,11 @@ static const rb_data_type_t cont_data_type = { }; static void -cont_init(rb_context_t *cont) +cont_init(rb_context_t *cont, rb_thread_t *th) { - rb_thread_t *th = GET_THREAD(); - /* save thread context */ cont->saved_thread = *th; + cont->saved_thread.local_storage = 0; } static rb_context_t * @@ -289,10 +292,12 @@ cont_new(VALUE klass) { rb_context_t *cont; volatile VALUE contval; + rb_thread_t *th = GET_THREAD(); + THREAD_MUST_BE_RUNNING(th); contval = TypedData_Make_Struct(klass, rb_context_t, &cont_data_type, cont); cont->self = contval; - cont_init(cont); + cont_init(cont, th); return cont; } @@ -305,6 +310,7 @@ cont_capture(volatile int *stat) rb_thread_t *th = GET_THREAD(), *sth; volatile VALUE contval; + THREAD_MUST_BE_RUNNING(th); rb_vm_stack_to_heap(th); cont = cont_new(rb_cContinuation); contval = cont->self; @@ -677,7 +683,7 @@ rb_cont_call(int argc, VALUE *argv, VALUE contval) * 2 * FiberError: dead fiber called * - * The Fiber#resume method accepts an arbitary number of + * The Fiber#resume method accepts an arbitrary number of * parameters, if it is the first call to resume then they * will be passed as block arguments. Otherwise they will be the return * value of the call to Fiber.yield @@ -716,12 +722,15 @@ fiber_alloc(VALUE klass) static rb_fiber_t* fiber_t_alloc(VALUE fibval) { - rb_fiber_t *fib = ALLOC(rb_fiber_t); + rb_fiber_t *fib; + rb_thread_t *th = GET_THREAD(); + THREAD_MUST_BE_RUNNING(th); + fib = ALLOC(rb_fiber_t); memset(fib, 0, sizeof(rb_fiber_t)); fib->cont.self = fibval; fib->cont.type = FIBER_CONTEXT; - cont_init(&fib->cont); + cont_init(&fib->cont, th); fib->prev = Qnil; fib->status = CREATED; @@ -737,12 +746,15 @@ fiber_init(VALUE fibval, VALUE proc) rb_context_t *cont = &fib->cont; rb_thread_t *th = &cont->saved_thread; - fiber_link_join(fib); /* initialize cont */ cont->vm_stack = 0; th->stack = 0; + th->stack_size = 0; + + fiber_link_join(fib); + th->stack_size = FIBER_VM_STACK_SIZE; th->stack = ALLOC_N(VALUE, th->stack_size); @@ -769,6 +781,7 @@ fiber_init(VALUE fibval, VALUE proc) return fibval; } +/* :nodoc: */ static VALUE rb_fiber_init(VALUE fibval) { @@ -845,7 +858,7 @@ rb_fiber_start(void) TH_POP_TAG(); if (state) { - if (TAG_RAISE) { + if (state == TAG_RAISE) { th->thrown_errinfo = th->errinfo; } else { @@ -1029,7 +1042,7 @@ rb_fiber_m_resume(int argc, VALUE *argv, VALUE fib) * stopped or starting it if it was not resumed before. The calling * fiber will be suspended much like in a call to Fiber.yield. * - * The fiber which recieves the transfer call is treats it much like + * The fiber which receives the transfer call is treats it much like * a resume call. Arguments passed to transfer are treated like those * passed to resume. * diff --git a/debug.c b/debug.c index b3eafa14ea3278..7832910ec2db87 100644 --- a/debug.c +++ b/debug.c @@ -77,9 +77,9 @@ ruby_debug_print_indent(int level, int debug_level, int indent_level) if (level < debug_level) { fprintf(stderr, "%*s", indent_level, ""); fflush(stderr); - return Qtrue; + return TRUE; } - return Qfalse; + return FALSE; } void @@ -124,7 +124,7 @@ NODE * ruby_debug_print_node(int level, int debug_level, const char *header, const NODE *node) { if (level < debug_level) { - fprintf(stderr, "DBG> %s: %s (%lu)\n", header, + fprintf(stderr, "DBG> %s: %s (%u)\n", header, ruby_node_name(nd_type(node)), nd_line(node)); } return (NODE *)node; diff --git a/defs/known_errors.def b/defs/known_errors.def index 9f09aa9c22944a..3cebe90a8e543b 100644 --- a/defs/known_errors.def +++ b/defs/known_errors.def @@ -120,3 +120,26 @@ ENAVAIL EISNAM EREMOTEIO EDQUOT +ECANCELED +EKEYEXPIRED +EKEYREJECTED +EKEYREVOKED +EMEDIUMTYPE +ENOKEY +ENOMEDIUM +ENOTRECOVERABLE +EOWNERDEAD +ERFKILL +EAUTH +EBADRPC +EDOOFUS +EFTYPE +ENEEDAUTH +ENOATTR +ENOTSUP +EPROCLIM +EPROCUNAVAIL +EPROGMISMATCH +EPROGUNAVAIL +ERPCMISMATCH +EIPSEC diff --git a/dir.c b/dir.c index 4e20230a6567c3..e49e9bdc7545fc 100644 --- a/dir.c +++ b/dir.c @@ -339,6 +339,15 @@ static const rb_data_type_t dir_data_type = { static VALUE dir_close(VALUE); +#define GlobPathValue(str, safe) \ + /* can contain null bytes as separators */ \ + (!RB_TYPE_P(str, T_STRING) ? \ + FilePathValue(str) : \ + (check_safe_glob(str, safe), \ + check_glob_encoding(str), (str))) +#define check_safe_glob(str, safe) ((safe) ? rb_check_safe_obj(str) : (void)0) +#define check_glob_encoding(str) rb_enc_check((str), rb_enc_from_encoding(rb_usascii_encoding())) + static VALUE dir_s_alloc(VALUE klass) { @@ -385,7 +394,7 @@ dir_initialize(int argc, VALUE *argv, VALUE dir) } } - FilePathValue(dirname); + GlobPathValue(dirname, FALSE); TypedData_Get_Struct(dir, struct dir_data, &dir_data_type, dp); if (dp->dir) closedir(dp->dir); @@ -438,19 +447,19 @@ dir_closed(void) rb_raise(rb_eIOError, "closed directory"); } -static void +static struct dir_data * dir_check(VALUE dir) { + struct dir_data *dirp; if (!OBJ_UNTRUSTED(dir) && rb_safe_level() >= 4) rb_raise(rb_eSecurityError, "Insecure: operation on trusted Dir"); rb_check_frozen(dir); + dirp = rb_check_typeddata(dir, &dir_data_type); + if (!dirp->dir) dir_closed(); + return dirp; } -#define GetDIR(obj, dirp) do {\ - dir_check(dir);\ - TypedData_Get_Struct(obj, struct dir_data, &dir_data_type, dirp); \ - if (dirp->dir == NULL) dir_closed();\ -} while (0) +#define GetDIR(obj, dirp) (dirp = dir_check(obj)) /* @@ -1613,7 +1622,7 @@ push_glob(VALUE ary, VALUE str, int flags) args.value = ary; args.enc = enc; - return ruby_brace_glob0(StringValuePtr(str), flags | GLOB_VERBOSE, + return ruby_brace_glob0(RSTRING_PTR(str), flags | GLOB_VERBOSE, rb_glob_caller, (VALUE)&args, enc); } @@ -1623,7 +1632,7 @@ rb_push_glob(VALUE str, int flags) /* '\0' is delimiter */ long offset = 0; VALUE ary; - StringValue(str); + GlobPathValue(str, TRUE); ary = rb_ary_new(); while (offset < RSTRING_LEN(str)) { @@ -1653,7 +1662,7 @@ dir_globs(long argc, VALUE *argv, int flags) for (i = 0; i < argc; ++i) { int status; VALUE str = argv[i]; - SafeStringValue(str); + GlobPathValue(str, TRUE); status = push_glob(ary, str, flags); if (status) GLOB_JUMP_TAG(status); } diff --git a/dln.c b/dln.c index 4837048138239f..7409ce30e3f9b5 100644 --- a/dln.c +++ b/dln.c @@ -9,7 +9,18 @@ **********************************************************************/ +#ifdef RUBY_EXPORT #include "ruby/ruby.h" +#define dln_notimplement rb_notimplement +#define dln_memerror rb_memerror +#define dln_exit rb_exit +#define dln_loaderror rb_loaderror +#else +#define dln_notimplement --->>> dln not implemented <<<--- +#define dln_memerror abort +#define dln_exit exit +static void dln_loaderror(const char *format, ...); +#endif #include "dln.h" #ifdef HAVE_STDLIB_H @@ -77,6 +88,18 @@ char *getenv(); # include #endif +#ifndef dln_loaderror +static void +dln_loaderror(const char *format, ...) +{ + va_list ap; + va_start(ap, format); + vfprintf(stderr, format, ap); + va_end(ap); + abort(); +} +#endif + #ifndef NO_DLN_LOAD #if defined(HAVE_DLOPEN) && !defined(USE_DLN_A_OUT) && !defined(_AIX) && !defined(MACOSX_DYLD) && !defined(_UNICOSMP) @@ -119,7 +142,7 @@ init_funcname_len(char **buf, const char *file) char *tmp = ALLOCA_N(char, len+1);\ if (!tmp) {\ free(*buf);\ - rb_memerror();\ + dln_memerror();\ }\ strlcpy(tmp, *buf, len + 1);\ free(*buf);\ @@ -451,7 +474,7 @@ dln_undefined(void) if (undef_tbl->num_entries > 0) { fprintf(stderr, "dln: Calling undefined function\n"); dln_print_undef(); - rb_exit(1); + dln_exit(1); } } @@ -884,12 +907,13 @@ struct symdef { int lib_offset; }; -char *dln_librrb_ary_path = DLN_DEFAULT_LIB_PATH; +const char *dln_librrb_ary_path = DLN_DEFAULT_LIB_PATH; static int load_lib(const char *lib) { char *path, *file, fbuf[MAXPATHLEN]; + char *envpath = 0; char armagic[SARMAG]; int fd, size; struct ar_hdr ahdr; @@ -919,8 +943,10 @@ load_lib(const char *lib) /* if path is still NULL, use "." for path. */ path = getenv("DLN_LIBRARY_PATH"); if (path == NULL) path = dln_librrb_ary_path; + else path = envpath = strdup(path); file = dln_find_file_r(lib, path, fbuf, sizeof(fbuf)); + if (envpath) free(envpath); fd = open(file, O_RDONLY); if (fd == -1) goto syserr; size = read(fd, armagic, SARMAG); @@ -1094,6 +1120,7 @@ dln_sym(const char *name) #include #endif +#if ! defined _AIX static const char * dln_strerror(void) { @@ -1143,7 +1170,7 @@ dln_strerror(void) return message; #endif } - +#endif #if defined(_AIX) && ! defined(_IA64) static void @@ -1154,7 +1181,7 @@ aix_loaderror(const char *pathname) static const struct errtab { int errnum; - char *errstr; + const char * errstr; } load_errtab[] = { {L_ERROR_TOOMANY, "too many errors, rest skipped."}, {L_ERROR_NOLIB, "can't load library:"}, @@ -1176,7 +1203,7 @@ aix_loaderror(const char *pathname) snprintf(errbuf, sizeof(errbuf), "load failed - %s ", pathname); message[0] = NULL; - if (!loadquery(L_GETMESSAGE, &message[0], sizeof(message))) + if (!loadquery(L_GETMESSAGES, &message[0], sizeof(message))) ERRBUF_APPEND(strerror(errno)); for(i = 0; message[i] && *message[i]; i++) { int nerr = atoi(message[i]); @@ -1189,8 +1216,7 @@ aix_loaderror(const char *pathname) ERRBUF_APPEND("\n"); } errbuf[strlen(errbuf)-1] = '\0'; /* trim off last newline */ - rb_loaderror(errbuf); - return; + dln_loaderror("%s", errbuf); } #endif @@ -1200,7 +1226,7 @@ void* dln_load(const char *file) { #ifdef NO_DLN_LOAD - rb_raise(rb_eLoadError, "this executable file can't load extension libraries"); + dln_loaderror("this executable file can't load extension libraries"); #else #if !defined(_AIX) && !defined(NeXT) @@ -1214,7 +1240,7 @@ dln_load(const char *file) void (*init_fct)(); char *buf; - if (strlen(file) >= MAXPATHLEN) rb_loaderror("filename too long"); + if (strlen(file) >= MAXPATHLEN) dln_loaderror("filename too long"); /* Load the file as an object one */ init_funcname(&buf, file); @@ -1228,7 +1254,7 @@ dln_load(const char *file) } if ((init_fct = (void(*)())GetProcAddress(handle, buf)) == NULL) { - rb_loaderror("%s - %s\n%s", dln_strerror(), buf, file); + dln_loaderror("%s - %s\n%s", dln_strerror(), buf, file); } /* Call the init code */ @@ -1298,14 +1324,14 @@ dln_load(const char *file) lib = shl_load(file, flags, 0); if (lib == NULL) { extern int errno; - rb_loaderror("%s - %s", strerror(errno), file); + dln_loaderror("%s - %s", strerror(errno), file); } shl_findsym(&lib, buf, TYPE_PROCEDURE, (void*)&init_fct); if (init_fct == NULL) { shl_findsym(&lib, buf, TYPE_UNDEFINED, (void*)&init_fct); if (init_fct == NULL) { errno = ENOSYM; - rb_loaderror("%s - %s", strerror(ENOSYM), file); + dln_loaderror("%s - %s", strerror(ENOSYM), file); } } (*init_fct)(); @@ -1358,21 +1384,21 @@ dln_load(const char *file) if(rld_load(s, NULL, object_files, NULL) == 0) { NXFlush(s); NXClose(s); - rb_loaderror("Failed to load %.200s", file); + dln_loaderror("Failed to load %.200s", file); } /* lookup the initial function */ if(rld_lookup(s, buf, &init_address) == 0) { NXFlush(s); NXClose(s); - rb_loaderror("Failed to lookup Init function %.200s", file); + dln_loaderror("Failed to lookup Init function %.200s", file); } NXFlush(s); NXClose(s); /* Cannot call *init_address directory, so copy this value to - funtion pointer */ + function pointer */ init_fct = (void(*)())init_address; (*init_fct)(); return (void*)init_address; @@ -1390,14 +1416,14 @@ dln_load(const char *file) dyld_result = NSCreateObjectFileImageFromFile(file, &obj_file); if (dyld_result != NSObjectFileImageSuccess) { - rb_loaderror("Failed to load %.200s", file); + dln_loaderror("Failed to load %.200s", file); } NSLinkModule(obj_file, file, NSLINKMODULE_OPTION_BINDNOW); /* lookup the initial function */ if(!NSIsSymbolNameDefined(buf)) { - rb_loaderror("Failed to lookup Init function %.200s",file); + dln_loaderror("Failed to lookup Init function %.200s",file); } init_fct = NSAddressOfSymbol(NSLookupAndBindSymbol(buf)); (*init_fct)(); @@ -1411,13 +1437,13 @@ dln_load(const char *file) # define DLN_DEFINED { status_t err_stat; /* BeOS error status code */ - image_id img_id; /* extention module unique id */ - void (*init_fct)(); /* initialize function for extention module */ + image_id img_id; /* extension module unique id */ + void (*init_fct)(); /* initialize function for extension module */ - /* load extention module */ + /* load extension module */ img_id = load_add_on(file); if (img_id <= 0) { - rb_loaderror("Failed to load add_on %.200s error_code=%x", + dln_loaderror("Failed to load add_on %.200s error_code=%x", file, img_id); } @@ -1441,12 +1467,12 @@ dln_load(const char *file) if ((B_BAD_IMAGE_ID == err_stat) || (B_BAD_INDEX == err_stat)) { unload_add_on(img_id); - rb_loaderror("Failed to lookup Init function %.200s", file); + dln_loaderror("Failed to lookup Init function %.200s", file); } else if (B_NO_ERROR != err_stat) { char errmsg[] = "Internal of BeOS version. %.200s (symbol_name = %s)"; unload_add_on(img_id); - rb_loaderror(errmsg, strerror(err_stat), buf); + dln_loaderror(errmsg, strerror(err_stat), buf); } /* call module initialize function. */ @@ -1456,14 +1482,14 @@ dln_load(const char *file) #endif /* __BEOS__*/ #ifndef DLN_DEFINED - rb_notimplement(); + dln_notimplement(); #endif #endif /* USE_DLN_A_OUT */ #endif #if !defined(_AIX) && !defined(NeXT) failed: - rb_loaderror("%s - %s", error, file); + dln_loaderror("%s - %s", error, file); #endif #endif /* NO_DLN_LOAD */ @@ -1475,8 +1501,11 @@ static char *dln_find_1(const char *fname, const char *path, char *buf, size_t s char * dln_find_exe_r(const char *fname, const char *path, char *buf, size_t size) { + char *envpath = 0; + if (!path) { path = getenv(PATH_ENV); + if (path) path = envpath = strdup(path); } if (!path) { @@ -1486,7 +1515,9 @@ dln_find_exe_r(const char *fname, const char *path, char *buf, size_t size) path = "/usr/local/bin:/usr/ucb:/usr/bin:/bin:."; #endif } - return dln_find_1(fname, path, buf, size, 1); + buf = dln_find_1(fname, path, buf, size, 1); + if (envpath) free(envpath); + return buf; } char * @@ -1521,13 +1552,17 @@ dln_find_1(const char *fname, const char *path, char *fbuf, size_t size, size_t i, fspace; #ifdef DOSISH static const char extension[][5] = { - ".exe", ".com", ".cmd", ".bat", + EXECUTABLE_EXTS, }; size_t j; int is_abs = 0, has_path = 0; const char *ext = 0; - const char *p = fname; #endif + const char *p = fname; + + static const char pathname_too_long[] = "openpath: pathname too long (ignored)\n\ +\tDirectory \"%.*s\"\n\tFile \"%s\"\n"; +#define PATHNAME_TOO_LONG() fprintf(stderr, pathname_too_long, (int)(bp - fbuf), fbuf, fname) #define RETURN_IF(expr) if (expr) return (char *)fname; @@ -1585,10 +1620,11 @@ dln_find_1(const char *fname, const char *path, char *fbuf, size_t size, memcpy(fbuf, fname, i + 1); goto needs_extension; } + p = fname; #endif - RETURN_IF(fname[0] == '/'); - RETURN_IF(strncmp("./", fname, 2) == 0 || strncmp("../", fname, 3) == 0); + if (*p == '.' && *++p == '.') ++p; + RETURN_IF(*p == '/'); RETURN_IF(exe_flag && strchr(fname, '/')); #undef RETURN_IF @@ -1650,10 +1686,7 @@ dln_find_1(const char *fname, const char *path, char *fbuf, size_t size, i = strlen(fname); if (fspace < i) { toolong: - fprintf(stderr, "openpath: pathname too long (ignored)\n"); - *bp = '\0'; - fprintf(stderr, "\tDirectory \"%s\"\n", fbuf); - fprintf(stderr, "\tFile \"%s\"\n", fname); + PATHNAME_TOO_LONG(); goto next; } fspace -= i; @@ -1664,9 +1697,7 @@ dln_find_1(const char *fname, const char *path, char *fbuf, size_t size, needs_extension: for (j = 0; j < sizeof(extension) / sizeof(extension[0]); j++) { if (fspace < strlen(extension[j])) { - fprintf(stderr, "openpath: pathname too long (ignored)\n"); - fprintf(stderr, "\tDirectory \"%.*s\"\n", (int) (bp - fbuf), fbuf); - fprintf(stderr, "\tFile \"%s%s\"\n", fname, extension[j]); + PATHNAME_TOO_LONG(); continue; } strlcpy(bp + i, extension[j], fspace); diff --git a/doc/rake/CHANGES b/doc/rake/CHANGES new file mode 100644 index 00000000000000..3b1a02b812e0c9 --- /dev/null +++ b/doc/rake/CHANGES @@ -0,0 +1,440 @@ + += Rake Changelog + +== Version 0.8.7 + +* Fixed EXEEXT for JRuby on windows. + +== Version 0.8.6 + +* Minor fixes to the RDoc generation (removed dependency on darkfish + and removed inline source option). + +== Version 0.8.5 + +* Better support for the system command on Windows. + +== Version 0.8.4 + +* Preserve case when locating rakefiles (patch from James + M. Lawrence/quix) + +* Better support for windows paths in the test task (patch from Simon + Chiang/bahuvrihi) + +* Windows system dir search order is now: HOME, HOMEDRIVE + HOMEPATH, + APPDATA, USERPROFILE (patch from Luis Lavena) + +* MingGW is now recognized as a windows platform. (patch from Luis + Lavena) + +* Numerous fixes to the windows test suite (patch from Luis Lavena). + +* Improved Rakefile case insensitivity testing (patch from Luis + Lavena). + +* Fixed stray ARGV option problem that was interfering with + Test::Unit::Runner. + +* Fixed default verbose mode (was accidently changed to false). + +* Removed reference to manage_gem to fix the warning produced by the + gem package task. + +== Version 0.8.3 + +* Enhanced the system directory detection in windows. We now check + HOMEDRIVE/HOMEPATH and USERPROFILE if APPDATA isn't found. (Patch + supplied by James Tucker). Rake no long aborts if it can't find the + directory. + +* Added fix to handle ruby installations in directories with spaces in + their name. + +== Version 0.8.2 + +* Fixed bug in package task so that it will include the subdir + directory in the package for testing. (Bug found by Adam Majer) + +* Added ENV var to rakefile to prevent OS X from including extended + attribute junk in a tar file. (Bug found by Adam Majer) + +* Fixed filename dependency order bug in test_inspect_pending and + test_to_s_pending. (Bug found by Adam Majer) + +* Fixed check for file utils options to make them immune to the + symbol/string differences. (Patch supplied by Edwin Pratomo) + +* Fixed bug with rules involving multiple source (Patch supplied by + Emanuel Indermühle) + +* Switched from getoptlong to optparse (patches supplied by Edwin + Pratomo) + +* The -T option will now attempt to dynamically sense the size of the + terminal. RAKE_COLUMNS will override any dynamic sensing. + +* FileList#clone and FileList#dup have better sematics w.r.t. taint + and freeze. + +* Added ability clear prerequisites, and/or actions from an existing + task. + +* Added the ability to reenable a task to be invoked a second time. + +* Changed RDoc test task to have no default template. This makes it + easier for the tempate to pick up the template from the environment. + +* Changed from using Mutex to Monitor. Evidently Mutex causes thread + join errors when Ruby is compiled with -disable-pthreads. (Patch + supplied by Ittay Dror) + +* Fixed bug in makefile parser that had problems with extra spaces in + file task names. (Patch supplied by Ittay Dror) + +* Added a performance patch for reading large makefile dependency + files. (Patch supplied by Ittay Dror) + +* Default values for task arguments can easily be specified with the + :with_defaults method. (Idea for default argument merging supplied + by (Adam Q. Salter) + +* The -T output will only self-truncate if the output is a tty. + However, if RAKE_COLUMNS is explicitly set, it will be honored in + any case. (Patch provided by Gavin Stark). + +* Numerous fixes for running under windows. A big thanks to Bheeshmar + Redheendran for spending a good part of the afternoon at the + Lonestar Ruby Conference to help me work out these issues. + +== Version 0.8.1 + +* Removed requires on parsedate.rb (in Ftptools) +* Removed ftools from rake.rb. Made it options in sys.rb + +== Version 0.8.0 + +* Added task parameters (e.g. "rake build[version7]") +* Made task parameters passable to prerequisites. +* Comments are limited to 80 columns or so (suggested by Jamis Buck). +* Added -D to display full comments (suggested by Jamis Buck). +* The rake program will set the status value used in any explicit + exit(n) calls. (patch provided by Stephen Touset) +* Fixed error in functional tests that were not including session (and + silently skipping the functionl tests. +* Removed --usage and make -h the same as -H. +* Make a prettier inspect for tasks. + +== Version 0.7.3 + +* Added existing and existing! methods to FileList +* FileLists now claim to be Arrays (via is_a?) to get better support + from the FileUtil module. +* Added init and top_level for custom rake applications. + +== Version 0.7.2 + +* Error messages are now send to stderr rather than stdout (from + Payton Quackenbush). +* Better error handling on invalid command line arguments (from Payton + Quackenbush). +* Added rcov task and updated unit testing for better code coverage. +* Fixed some bugs where the application object was going to the global + appliation instead of using its own data. +* Added square and curly bracket patterns to FileList#include (Tilman + Sauerbeck). +* Added plain filename support to rule dependents (suggested by Nobu + Nakada). +* Added pathmap support to rule dependents. +* Added a 'tasks' method to a namespace to get a list of tasks + associated with the namespace. +* Fixed the method name leak from FileUtils (bug found by Glenn + Vanderburg). +* Added rake_extension to handle detection of extension collisions. +* Added test for noop, bad_option and verbose flags to sh command. +* Removed dependency on internal fu_xxx functions from FileUtils. +* Added a 'shame' task to the Rakefile. +* Added tar_command and zip_command options to the Package task. +* Added a description to the gem task in GemPackageTask. +* Fixed a bug when rules have multiple prerequisites (patch by Joel + VanderWerf) +* Added a protected 'require "rubygems"' to test/test_application to + unbreak cruisecontrol.rb. +* Added the handful of RakeFileUtils to the private method as well. +* Added block based exclusion. +* The clean task will no longer delete 'core' if it is a directory. +* Removed rake_dup. Now we just simply rescue a bad dup. +* Refactored the FileList reject logic to remove duplication. +* Removed if __FILE__ at the end of the rake.rb file. + +== Version 0.7.1 + +* Added optional filter parameter to the --tasks command line option. +* Added flatten to allow rule transform procs to return lists of + prereqs (Joel VanderWerf provided patch). +* Added pathmap to String and FileList. +* The -r option will now load .rake files (but a straight require + doesn't yet). NOTE: This is experimental ... it may be + discontinued. +* The -f option without a value will disable the search for a + Rakefile. The assumption is that the -r files are adequate. +* Fixed the safe_ln function to fall back to cp in more error + scenarios. + +== Version 0.7.0 + +* Added Rake.original_dir to return the original starting directory of + the rake application. +* Added safe_ln support for openAFS (from Ludvig Omholt). +* Added --trace reminder on short exception messages (David Heinemeier + Hansson suggestion). +* Added multitask declaration that executes prerequisites in + parallel. (Doug Young providied an initial implementation). +* Fixed missing_const hack to be compatible with Rails. (Jamis Buck + supplied test case). +* Made the RDoc task default to internal (in-process) RDoc formatting. + The old behavior is still available by setting the +external+ flag + to true. +* Rakefiles are now loaded with the expanded path to prevent + accidental polution from the Ruby load path. +* The +namespace+ command now returns a NameSpace object that can be + used to lookup tasks defined in that namespace. This allows for + better anonymous namespace behavior. +* Task objects my now be used in prerequisite lists directly. + +== Version 0.6.1 + +* Rebuilt 0.6.0 gem without signing. + +== Version 0.6.0 + +* Fixed file creation bug in the unit tests (caused infinite loop on + windows). +* Fixed bug where session based functional tests were run under + windows. +* Fixed bug in directory tasks so that updating a directory will not + retrigger file tasks depending on the directory (see + FileCreationTask and EarlyTime). +* Added egrep to FileList +* ruby command now runs same ruby version as rake. +* Added investigation to task object. (suggested by Martin Fowler) +* Added ruby_opts to the test task to allow arbitrary ruby options to + be passed to the test script. (Greg Fast) +* Fixed the test loader to ignore options. (Greg Fast) +* Moved Task, FileTask, FileCreationTask and RakeApp into the Rake + module namespace. Old style namespace behavior can be invoked via + the --classic-namespace option. (requested by Kelly Felkins). +* GemTask is now sensitive to the gem platform (Masao Mutoh). +* A non-existing file prerequisite will no longer cause an exception + (Philipp Neubeck). +* Multiple prerequisites on Rake rules now allowed (initial patch + supplied by Stuart Jansen). + +== Version 0.5.4 + +* Added double quotes to the test runner. +* Added .svn to default ignore list. +* Updated FileList#include to support nested arrays and filelists. + +== Version 0.5.3 + +* Added support for importing Rakefile and other dependencies. +* Fixed bug so that now rules can chain off of existing tasks as well + as existing files. +* Fixed verbose flag bug in the testing task. Shortened some failure + messages. +* Make FileUtils methods private at the top level module to avoid + accidental method leaking into other objects. +* Added test loader option to test task. "testrb" is no longer the + default test loader. It is now eating syntax errors that should + halt the unit tests. +* Revamped FileList so that it works more like and array (addressed + flatten bug). Added many tests around file list. +* Added +ext+ method to both String and FileList. + +== Version 0.5.0 + +* Fixed documentation that was lacking the Rake module name (Tilman + Sauerbeck). +* Added tar.gz and tar.bz2 support to package task (Tilman Sauerbeck). +* Recursive rules are now supported (Tilman Sauerbeck). +* Added warning option for the Test Task (requested by Eric Hodel). +* The jamis rdoc template is only used if it exists. +* Added fix for Ruby 1.8.2 test/unit and rails problem. +* Added contributed rake man file (Jani Monoses). +* Added Brian Candler's fix for problems in --trace and --dry-run + mode. + +== Version 0.4.15 + +* Fixed a bug that prevented the TESTOPTS flag from working with the + revised for 1.8.2 test task. +* Updated the docs on --trace to indicate that it also enables a full + backtrace on errors. + +== Version 0.4.14 + +* Modified the TestTask to workaround the Ruby 1.8.2 change in + autoexecuting unit tests. + +== Version 0.4.13 + +* Fixed the dry-run flag so it is operating again. +* Multiple arguments to sh and ruby commands will not be interpreted + by the shell (patch provided by Jonathan Paisley). + +== Version 0.4.12 + +* Added --silent (-s) to suppress the (in directory) rake message. + +== Version 0.4.11 + +* Changed the "don't know how to rake" message (finally) +* Changes references to a literal "Rakefile" to reference the global + variable $rakefile (which contains the actual name of the rakefile). + +== Version 0.4.10 + +* Added block support to the "sh" command, allowing users to take + special actions on the result of the system call. E.g. + + sh "shell_command" do |ok, res| + puts "Program returned #{res.exitstatus}" if ! ok + end + +== Version 0.4.9 + +* Switched to Jamis Buck's RDoc template. +* Removed autorequire from Rake's gem spec. This prevents the Rake + libraries from loading while using rails. + +== Version 0.4.8 + +* Added support for .rb versions of Rakefile. +* Removed \\\n's from test task. +* Fixed Ruby 1.9 compatibility issue with FileList. + +== Version 0.4.7 + +* Fixed problem in FileList that caused Ruby 1.9 to go into infinite + recursion. Since to_a was removed from Object, it does not need to + added back into the list of methods to rewrite in FileList. (Thanks + to Kent Sibilev for pointing this out). + +== Version 0.4.6 +* Removed test version of ln in FileUtils that prevented safe_ln from + using ln. + +== Version 0.4.5 +* Upgraded comments in TestTask. +* FileList to_s and inspect now automatically resolve pending changes. +* FileList#exclude properly returns the FileList. + +== Version 0.4.4 +* Fixed initialization problem with @comment. +* Now using multi -r technique in TestTask. Switch Rakefile back to + using the built-in test task macros because the rake runtime is no + longer needed. +* Added 'TEST=filename' and 'TESTOPTS=options' to the Test Task + macros. +* Allow a +test_files+ attribute in test tasks. This allows more + flexibility in specifying test files. + +== Version 0.4.3 +* Fixed Comment leakage. + +== Version 0.4.2 +* Added safe_ln that falls back to a copy if a file link is not supported. +* Package builder now uses safe_ln. + +== Version 0.4.1 +* Task comments are now additive, combined with "/". +* Works with (soon to be released) rubygems 0.6.2 (or 0.7.0) + +== Version 0.4.0 +* FileList now uses deferred loading. The file system is not searched + until the first call that needs the file names. +* VAR=VALUE options are now accepted on the command line and are + treated like environment variables. The values may be tested in a + Rakefile by referencing ENV['VAR']. +* File.mtime is now used (instead of File.new().mtime). + +== Version 0.3.2.x + +* Removed some hidden dependencies on rubygems. Tests now will test + gems only if they are installed. +* Removed Sys from some example files. I believe that is that last + reference to Sys outside of the contrib area. +* Updated all copyright notices to include 2004. + +== Version 0.3.2 + +* GEM Installation now works with the application stub. + +== Version 0.3.1 + +* FileLists now automatically ignore CVS, .bak, ! +* GEM Installation now works. + +== Version 0.3.0 + +Promoted 0.2.10. + +== Version 0.2.10 +General + +* Added title to Rake's rdocs +* Contrib packages are no longer included in the documentation. + +RDoc Issues + +* Removed default for the '--main' option +* Fixed rendering of the rdoc options +* Fixed clean/clobber confusion with rerdoc +* 'title' attribute added + +Package Task Library Issues + +* Version (or explicit :noversion) is required. +* +package_file+ attribute is now writable + +FileList Issues + +* Dropped bang version of exclude. Now using ant-like include/exclude semantics. +* Enabled the "yield self" idiom in FileList#initialize. + +== Version 0.2.9 + +This version contains numerous changes as the RubyConf.new(2003) +presentation was being prepared. The changes include: + +* The monolithic rubyapp task library is in the process of being + dropped in favor of lighter weight task libraries. + +== Version 0.2.7 + +* Added "desc" for task descriptions. +* -T will now display tasks with descriptions. +* -P will display tasks and prerequisites. +* Dropped the Sys module in favor of the 1.8.x FileUtils module. Sys + is still supported in the contrib area. + +== Version 0.2.6 + +* Moved to RubyForge + +== Version 0.2.5 + +* Switched to standard ruby app builder. +* Added no_match option to file matcher. + +== Version 0.2.4 + +* Fixed indir, which neglected to actually change directories. + +== Version 0.2.3 + +* Added rake module for a help target +* Added 'for_files' to Sys +* Added a $rakefile constant +* Added test for selecting proper rule with multiple targets. diff --git a/doc/rake/README b/doc/rake/README new file mode 100644 index 00000000000000..41668dd7275746 --- /dev/null +++ b/doc/rake/README @@ -0,0 +1,196 @@ += RAKE -- Ruby Make + +Supporting Rake version: 0.8.6 + +This package contains Rake, a simple ruby build program with +capabilities similar to make. + +Rake has the following features: + +* Rakefiles (rake's version of Makefiles) are completely defined in + standard Ruby syntax. No XML files to edit. No quirky Makefile + syntax to worry about (is that a tab or a space?) + +* Users can specify tasks with prerequisites. + +* Rake supports rule patterns to synthesize implicit tasks. + +* Flexible FileLists that act like arrays but know about manipulating + file names and paths. + +* A library of prepackaged tasks to make building rakefiles easier. For example, + tasks for building tarballs, gems and RDoc output are provided. + +* Supports parallel execution of tasks. + + +== Installation + +=== Gem Installation + +Download and install rake with the following. + + gem install rake + +=== Normal Installation + +You can download the source tarball of the latest version of Rake from + +* http://rubyforge.org/project/showfiles.php?group_id=50 + +Extract the tarball and run + + % ruby install.rb + +from its distribution directory. + +== Usage + +=== Simple Example + +First, you must write a "Rakefile" file which contains the build rules. Here's +a simple example: + + task :default => [:test] + + task :test do + ruby "test/unittest.rb" + end + +This Rakefile has two tasks: + +* A task named "test", which - upon invocation - will run a unit test file in + Ruby. +* A task named "default". This task does nothing by itself, but it has exactly + one dependency, namely the "test" task. Invoking the "default" task will + cause Rake to invoke the "test" task as well. + +Running the "rake" command without any options will cause it to run the +"default" task in the Rakefile: + + % ls + Rakefile test/ + % rake + (in /home/some_user/Projects/rake) + ruby test/unittest.rb + ....unit test output here... + +Type "rake --help" for all available options. + + +=== More Information + +* For details on Rake's command-line invocation, read + doc/command_line_usage.rdoc[http://rake.rubyforge.org/files/doc/command_line_usage_rdoc.html] +* For details on writing Rakefiles, see + doc/rakefile.rdoc[http://rake.rubyforge.org/files/doc/rakefile_rdoc.html]. +* For the original announcement of Rake, see + doc/rational.rdoc[http://rake.rubyforge.org/files/doc/rational_rdoc.html]. +* For a glossary of terms, see + doc/glossary.rdoc[http://rake.rubyforge.org/files/doc/glossary_rdoc.html]. + + +== Development + +=== Source Repository + +Rake is currently hosted at github. The github web page is +http://github.com/jimweirich/rake. The public git clone URL is + +* git://github.com/jimweirich/rake.git + +=== Running the Rake Test Suite + +If you wish to run the unit and functional tests that come with Rake: + +* Install the 'session' gem in order to run the functional tests. +* CD into the top project directory of rake. +* Type one of the following: + + rake # If you have a version of rake installed + ruby -Ilib bin/rake # If you do not have a version of rake installed. + +=== Issues and Bug Reports + +Bugs, features requests and other issues can be logged at + +* http://onestepback.org/redmine/projects/show/rake + +You will need an account to before you can post issues. Register at +http://onestepback.org/redmine/account/register. Or you can send me +an email (at jim dot weirich at gmail dot com) + + +== Online Resources + +=== Rake References + +* Rake Documentation Home: http://docs.rubyrake.org +* Rake Project Page: http://rubyforge.org/projects/rake +* Rake API Documents: http://rake.rubyforge.org +* Rake Source Code Repo: http://github.com/jimweirich/rake +* Rake Git Repo Clone URL: git://github.com/jimweirich/rake.git + +=== Presentations and Articles about Rake + +* Jim Weirich's 2003 RubyConf presentation: http://onestepback.org/articles/buildingwithrake/ +* Martin Fowler's article on Rake: http://martinfowler.com/articles/rake.html + +== Other Make Reinvisionings ... + +Rake is a late entry in the make replacement field. Here are links to +other projects with similar (and not so similar) goals. + +* http://directory.fsf.org/bras.html -- Bras, one of earliest + implementations of "make in a scripting language". +* http://www.a-a-p.org -- Make in Python +* http://www.aromatic.com/tools/jam.txt -- JAM, Java Automated Make +* http://ant.apache.org -- The Ant project +* http://ppt.perl.org/commands/make/index.html -- Make from the Perl + Power Tools implementation. +* http://search.cpan.org/search?query=PerlBuildSystem -- The Perl Build System +* http://make.rubyforge.org -- Rant, another Ruby make tool. + +== Credits + +[Ryan Dlugosz] For the initial conversation that sparked Rake. + +[nobu.nokada@softhome.net] For the initial patch for rule support. + +[Tilman Sauerbeck ] For the recursive rule patch. + +== License + +Rake is available under an MIT-style license. + +:include: MIT-LICENSE + +== Support + +The Rake homepage is http://rake.rubyforge.org. You can find the Rake +RubyForge page at http://rubyforge.org/projects/rake. + +Feel free to submit commits or feature requests. If you send a patch, +remember to update the corresponding unit tests. If fact, I prefer +new feature to be submitted in the form of new unit tests. + +For other information, feel free to ask on the ruby-talk mailing list +(which is mirrored to comp.lang.ruby) or contact +jim dot weirich at gmail.com. + +--- + += Other stuff + +Author:: Jim Weirich +Requires:: Ruby 1.8.0 or later +License:: Copyright 2003-2008 by Jim Weirich. + Released under an MIT-style license. See the LICENSE file + included in the distribution. + +== Warranty + +This software is provided "as is" and without any express or +implied warranties, including, without limitation, the implied +warranties of merchantibility and fitness for a particular +purpose. diff --git a/doc/rake/command_line_usage.rdoc b/doc/rake/command_line_usage.rdoc new file mode 100644 index 00000000000000..c60e53f51a23ff --- /dev/null +++ b/doc/rake/command_line_usage.rdoc @@ -0,0 +1,102 @@ += Rake Command Line Usage + +Rake is invoked from the command line using: + + % rake [options ...] [VAR=VALUE] [targets ...] + +Options are: + +[name=value] + Set the environment variable name to value + during the execution of the rake command. You can access + the value by using ENV['name']. + +[--classic-namespace (-n)] + Import the Task, FileTask, and FileCreateTask into the top-level + scope to be compatible with older versions of Rake. Alternatively + you can include the line require + 'rake/classic_namespace' in your Rakefile to get the + classic behavior. + +[--describe _pattern_ (-D)] + Describe the tasks (matching optional PATTERN), then exit. + +[--dry-run (-n)] + Do a dry run. Print the tasks invoked and executed, but do not + actually execute any of the actions. + +[--execute _code_ (-e)] + Execute some Ruby code and exit. + +[--execute-print _code_ (-p)] + Execute some Ruby code, print the result, and exit. + +[--execute-continue _code_ (-p)] + Execute some Ruby code, then continue with normal task processing. + +[--help (-H)] + Display some help text and exit. + +[--libdir _directory_ (-I)] + Add _directory_ to the list of directories searched for require. + +[--nosearch (-N)] + Do not search for a Rakefile in parent directories. + +[--prereqs (-P)] + Display a list of all tasks and their immediate prerequisites. + +[--quiet (-q)] + Do not echo commands from FileUtils. + +[--rakefile _filename_ (-f)] + Use _filename_ as the name of the rakefile. The default rakefile + names are +rakefile+ and +Rakefile+ (with +rakefile+ taking + precedence). If the rakefile is not found in the current + directory, +rake+ will search parent directories for a match. The + directory where the Rakefile is found will become the current + directory for the actions executed in the Rakefile. + +[--rakelibdir _rakelibdir_ (-R)] + Auto-import any .rake files in RAKELIBDIR. (default is 'rakelib') + +[--require _name_ (-r)] + Require _name_ before executing the Rakefile. + +[--rules] + Trace the rules resolution. + +[--silent (-s)] + Like --quiet, but also suppresses the 'in directory' announcement. + +[--system (-g)] + Use the system wide (global) rakefiles. The project Rakefile is + ignored. By default, the system wide rakefiles are used only if no + project Rakefile is found. On Unix-like system, the system wide + rake files are located in $HOME/.rake. On a windows system they + are stored in $APPDATA/Rake. + +[--no-system (-G)] + Use the project level Rakefile, ignoring the system-wide (global) + rakefiles. + +[--tasks (-T)] + Display a list of the major tasks and their comments. Comments + are defined using the "desc" command. + +[--trace (-t)] + Turn on invoke/execute tracing. Also enable full backtrace on + errors. + +[--usage (-h)] + Display a usage message and exit. + +[--verbose (-v)] + Echo the Sys commands to standard output. + +[--version (-V)] + Display the program version and exit. + +In addition, any command line option of the form +VAR=VALUE will be added to the environment hash +ENV and may be tested in the Rakefile. diff --git a/doc/rake/example/Rakefile1 b/doc/rake/example/Rakefile1 new file mode 100644 index 00000000000000..39f8bcceb08505 --- /dev/null +++ b/doc/rake/example/Rakefile1 @@ -0,0 +1,38 @@ +# Example Rakefile -*- ruby -*- + +task :default => [:main] + +file "a.o" => ["a.c"] do |t| + src = t.name.sub(/\.o$/, '.c') + sh "gcc #{src} -c -o #{t.name}" +end + +file "b.o" => ["b.c"] do |t| + src = t.name.sub(/\.o$/, '.c') + sh "gcc #{src} -c -o #{t.name}" +end + +file "main.o" => ["main.c"] do |t| + src = t.name.sub(/\.o$/, '.c') + sh "gcc #{src} -c -o #{t.name}" +end + +OBJFILES = ["a.o", "b.o", "main.o"] +task :obj => OBJFILES + +file "main" => OBJFILES do |t| + sh "gcc -o #{t.name} main.o a.o b.o" +end + +task :clean do + rm_f FileList['*.o'] + Dir['*~'].each { |fn| rm_f fn } +end + +task :clobber => [:clean] do + rm_f "main" +end + +task :run => ["main"] do + sh "./main" +end diff --git a/doc/rake/example/Rakefile2 b/doc/rake/example/Rakefile2 new file mode 100644 index 00000000000000..35310eceb53675 --- /dev/null +++ b/doc/rake/example/Rakefile2 @@ -0,0 +1,35 @@ +# Example Rakefile -*- ruby -*- +# Using the power of Ruby + +task :default => [:main] + +def ext(fn, newext) + fn.sub(/\.[^.]+$/, newext) +end + +SRCFILES = Dir['*.c'] +OBJFILES = SRCFILES.collect { |fn| ext(fn,".o") } + +OBJFILES.each do |objfile| + srcfile = ext(objfile, ".c") + file objfile => [srcfile] do |t| + sh "gcc #{srcfile} -c -o #{t.name}" + end +end + +file "main" => OBJFILES do |t| + sh "gcc -o #{t.name} main.o a.o b.o" +end + +task :clean do + rm_f FileList['*.o'] + Dir['*~'].each { |fn| rm_f fn } +end + +task :clobber => [:clean] do + rm_f "main" +end + +task :run => ["main"] do + sh "./main" +end diff --git a/doc/rake/example/a.c b/doc/rake/example/a.c new file mode 100644 index 00000000000000..620e6f8007e721 --- /dev/null +++ b/doc/rake/example/a.c @@ -0,0 +1,6 @@ +#include + +void a() +{ + printf ("In function a\n"); +} diff --git a/doc/rake/example/b.c b/doc/rake/example/b.c new file mode 100644 index 00000000000000..9b24aa1273f832 --- /dev/null +++ b/doc/rake/example/b.c @@ -0,0 +1,6 @@ +#include + +void b() +{ + printf ("In function b\n"); +} diff --git a/doc/rake/example/main.c b/doc/rake/example/main.c new file mode 100644 index 00000000000000..a04558a25133a1 --- /dev/null +++ b/doc/rake/example/main.c @@ -0,0 +1,11 @@ +#include + +extern void a(); +extern void b(); + +int main () +{ + a(); + b(); + return 0; +} diff --git a/doc/rake/glossary.rdoc b/doc/rake/glossary.rdoc new file mode 100644 index 00000000000000..0ca1869306973a --- /dev/null +++ b/doc/rake/glossary.rdoc @@ -0,0 +1,51 @@ += Glossary + +[action] + Code to be executed in order to perform a task. Actions in a + rakefile are specified in a code block (usually delimited by + +do+/+end+ pairs. + +[execute] + When a task is executed, all of its actions are performed, in + the order they were defined. Note that unlike + invoke, execute always executes the actions + (without invoking or executing the prerequisites). + +[file task (FileTask)] + A file task is a task whose purpose is to create a file + (which has the same name as the task). When invoked, a file + task will only execute if one or more of the following + conditions are true. + + 1. The associated file does not exist. + 2. A prerequisite has a later time stamp than the existing file. + + Because normal Tasks always have the current time as + timestamp, a FileTask that has a normal Task prerequisite + will always execute. + +[invoke] + When a task is invoked, first we check to see if it has been + invoked before. if it has been, then nothing else is done. + If this is the first time its been invoked, then we invoke + each of its prerequisites. Finally, we check to see if we + need to execute the actions of this task by calling + needed?. Finally, if the task is needed, we execute + its actions. + + NOTE: Currently prerequisites are invoked even if the task is + not needed. This may change in the future. + +[prerequisites] + Every task has a set (possiblity empty) of prerequisites. A + prerequisite P to Task T is itself a task that must be invoked + before Task T. + +[rule] + A rule is a recipe for synthesizing a task when no task is + explicitly defined. Rules generally synthesize file tasks. + +[task (Task)] + Basic unit of work in a rakefile. A task has a name, a set of + prerequisites and a list of actions to be performed. + diff --git a/doc/rake/jamis.rb b/doc/rake/jamis.rb new file mode 100644 index 00000000000000..c7439d88ea7334 --- /dev/null +++ b/doc/rake/jamis.rb @@ -0,0 +1,591 @@ +module RDoc +module Page + +FONTS = "\"Bitstream Vera Sans\", Verdana, Arial, Helvetica, sans-serif" + +STYLE = < pre { + padding: 0.5em; + border: 1px dotted black; + background: #FFE; +} + +CSS + +XHTML_PREAMBLE = %{ + +} + +HEADER = XHTML_PREAMBLE + < + + %title% + + + + + + + +ENDHEADER + +FILE_PAGE = < + + + + +
File
%short_name%
+ + + + + + + + + +
Path:%full_path% +IF:cvsurl +  (CVS) +ENDIF:cvsurl +
Modified:%dtm_modified%
+
+ +
+HTML + +################################################################### + +CLASS_PAGE = < + %classmod%
%full_name% + + + + + + +IF:parent + + + + +ENDIF:parent +
In: +START:infiles +HREF:full_path_url:full_path: +IF:cvsurl + (CVS) +ENDIF:cvsurl +END:infiles +
Parent: +IF:par_url + +ENDIF:par_url +%parent% +IF:par_url + +ENDIF:par_url +
+ + + +HTML + +################################################################### + +METHOD_LIST = < +IF:diagram +
+ %diagram% +
+ENDIF:diagram + +IF:description +
%description%
+ENDIF:description + +IF:requires +
Required Files
+
    +START:requires +
  • HREF:aref:name:
  • +END:requires +
+ENDIF:requires + +IF:toc +
Contents
+ +ENDIF:toc + +IF:methods +
Methods
+
    +START:methods +
  • HREF:aref:name:
  • +END:methods +
+ENDIF:methods + +IF:includes +
Included Modules
+
    +START:includes +
  • HREF:aref:name:
  • +END:includes +
+ENDIF:includes + +START:sections +IF:sectitle + +IF:seccomment +
+%seccomment% +
+ENDIF:seccomment +ENDIF:sectitle + +IF:classlist +
Classes and Modules
+ %classlist% +ENDIF:classlist + +IF:constants +
Constants
+ +START:constants + + + + + +IF:desc + + + + +ENDIF:desc +END:constants +
%name%=%value%
 %desc%
+ENDIF:constants + +IF:attributes +
Attributes
+ +START:attributes + + + + + +END:attributes +
+IF:rw +[%rw%] +ENDIF:rw + %name%%a_desc%
+ENDIF:attributes + +IF:method_list +START:method_list +IF:methods +
%type% %category% methods
+START:methods +
+
+IF:callseq + %callseq% +ENDIF:callseq +IFNOT:callseq + %name%%params% +ENDIF:callseq +IF:codeurl +[ source ] +ENDIF:codeurl +
+IF:m_desc +
+ %m_desc% +
+ENDIF:m_desc +IF:aka +
+ This method is also aliased as +START:aka + %name% +END:aka +
+ENDIF:aka +IF:sourcecode +
+ +
+
+%sourcecode%
+
+
+
+ENDIF:sourcecode +
+END:methods +ENDIF:methods +END:method_list +ENDIF:method_list +END:sections + +HTML + +FOOTER = < + +ENDFOOTER + +BODY = HEADER + < + +
+ #{METHOD_LIST} +
+ + #{FOOTER} +ENDBODY + +########################## Source code ########################## + +SRC_PAGE = XHTML_PREAMBLE + < +%title% + + + + +
%code%
+ + +HTML + +########################## Index ################################ + +FR_INDEX_BODY = < + + + + + + + +
+START:entries +%name%
+END:entries +
+ +HTML + +CLASS_INDEX = FILE_INDEX +METHOD_INDEX = FILE_INDEX + +INDEX = XHTML_PREAMBLE + < + + %title% + + + + + + + + + +IF:inline_source + +ENDIF:inline_source +IFNOT:inline_source + + + + +ENDIF:inline_source + + <body bgcolor="white"> + Click <a href="html/index.html">here</a> for a non-frames + version of this page. + </body> + + + + +HTML + +end +end + + diff --git a/doc/rake/proto_rake.rdoc b/doc/rake/proto_rake.rdoc new file mode 100644 index 00000000000000..39b9b88c1f60fd --- /dev/null +++ b/doc/rake/proto_rake.rdoc @@ -0,0 +1,127 @@ += Original Prototype Rake + +This is the original 100 line prototype rake program. + +--- + #!/usr/bin/env ruby + + require 'ftools' + + class Task + TASKS = Hash.new + + attr_reader :prerequisites + + def initialize(task_name) + @name = task_name + @prerequisites = [] + @actions = [] + end + + def enhance(deps=nil, &block) + @prerequisites |= deps if deps + @actions << block if block_given? + self + end + + def name + @name.to_s + end + + def invoke + @prerequisites.each { |n| Task[n].invoke } + execute if needed? + end + + def execute + return if @triggered + @triggered = true + @actions.collect { |act| result = act.call(self) }.last + end + + def needed? + true + end + + def timestamp + Time.now + end + + class << self + def [](task_name) + TASKS[intern(task_name)] or fail "Don't know how to rake #{task_name}" + end + + def define_task(args, &block) + case args + when Hash + fail "Too Many Target Names: #{args.keys.join(' ')}" if args.size > 1 + fail "No Task Name Given" if args.size < 1 + task_name = args.keys[0] + deps = args[task_name] + else + task_name = args + deps = [] + end + deps = deps.collect {|d| intern(d) } + get(task_name).enhance(deps, &block) + end + + def get(task_name) + name = intern(task_name) + TASKS[name] ||= self.new(name) + end + + def intern(task_name) + (Symbol === task_name) ? task_name : task_name.intern + end + end + end + + class FileTask < Task + def needed? + return true unless File.exist?(name) + latest_prereq = @prerequisites.collect{|n| Task[n].timestamp}.max + return false if latest_prereq.nil? + timestamp < latest_prereq + end + + def timestamp + File.new(name.to_s).mtime + end + end + + def task(args, &block) + Task.define_task(args, &block) + end + + def file(args, &block) + FileTask.define_task(args, &block) + end + + def sys(cmd) + puts cmd + system(cmd) or fail "Command Failed: [#{cmd}]" + end + + def rake + begin + here = Dir.pwd + while ! File.exist?("Rakefile") + Dir.chdir("..") + fail "No Rakefile found" if Dir.pwd == here + here = Dir.pwd + end + puts "(in #{Dir.pwd})" + load "./Rakefile" + ARGV.push("default") if ARGV.size == 0 + ARGV.each { |task_name| Task[task_name].invoke } + rescue Exception => ex + puts "rake aborted ... #{ex.message}" + puts ex.backtrace.find {|str| str =~ /Rakefile/ } || "" + end + end + + if __FILE__ == $0 then + rake + end diff --git a/doc/rake/rakefile.rdoc b/doc/rake/rakefile.rdoc new file mode 100644 index 00000000000000..f8ae72c32ad1b8 --- /dev/null +++ b/doc/rake/rakefile.rdoc @@ -0,0 +1,534 @@ += Rakefile Format (as of version 0.8.3) + +First of all, there is no special format for a Rakefile. A Rakefile +contains executable Ruby code. Anything legal in a ruby script is +allowed in a Rakefile. + +Now that we understand there is no special syntax in a Rakefile, there +are some conventions that are used in a Rakefile that are a little +unusual in a typical Ruby program. Since a Rakefile is tailored to +specifying tasks and actions, the idioms used in a Rakefile are +designed to support that. + +So, what goes into a Rakefile? + +== Tasks + +Tasks are the main unit of work in a Rakefile. Tasks have a name +(usually given as a symbol or a string), a list of prerequisites (more +symbols or strings) and a list of actions (given as a block). + +=== Simple Tasks + +A task is declared by using the +task+ method. +task+ takes a single +parameter that is the name of the task. + + task :name + +=== Tasks with Prerequisites + +Any prerequisites are given as a list (inclosed in square brackets) +following the name and an arrow (=>). + + task :name => [:prereq1, :prereq2] + +NOTE: Although this syntax looks a little funky, it is legal +Ruby. We are constructing a hash where the key is :name and the value +for that key is the list of prerequisites. It is equivalent to the +following ... + + hash = Hash.new + hash[:name] = [:prereq1, :prereq2] + task(hash) + +=== Tasks with Actions + +Actions are defined by passing a block to the +task+ method. Any Ruby +code can be placed in the block. The block may reference the task +object via the block paramter.. + + task :name => [:prereq1, :prereq2] do |t| + # actions (may reference t) + end + +=== Multiple Definitions + +A task may be specified more than once. Each specification adds its +prerequisites and actions to the existing definition. This allows one +part of a rakefile to specify the actions and a different rakefile +(perhaps separately generated) to specify the dependencies. + +For example, the following is equivalent to the single task +specification given above. + + task :name + task :name => [:prereq1] + task :name => [:prereq2] + task :name do |t| + # actions + end + +== File Tasks + +Some tasks are designed to create a file from one or more other files. +Tasks that generate these files may be skipped if the file already +exists. File tasks are used to specify file creation tasks. + +File tasks are declared using the +file+ method (instead of the +task+ +method). In addition, file tasks are usually named with a string +rather than a symbol. + +The following file task creates a executable program (named +prog+) +given two object files name a.o and b.o. The tasks +for creating a.o and b.o are not shown. + + file "prog" => ["a.o", "b.o"] do |t| + sh "cc -o #{t.name} #{t.prerequisites.join(' ')}" + end + +== Directory Tasks + +It is common to need to create directories upon demand. The ++directory+ convenience method is a short-hand for creating a FileTask +that creates the directory. For example, the following declaration +... + + directory "testdata/examples/doc" + +is equivalent to ... + + file "testdata" do |t| mkdir t.name end + file "testdata/examples" do |t| mkdir t.name end + file "testdata/examples/doc" do |t| mkdir t.name end + +The +directory+ method does not accept prerequisites or actions, but +both prerequisites and actions can be added later. For example ... + + directory "testdata" + file "testdata" => ["otherdata"] + file "testdata" do + cp Dir["standard_data/*.data"], "testdata" + end + +== Tasks with Parallel Prerequisites + +Rake allows parallel execution of prerequisites using the following syntax: + + multitask :copy_files => [:copy_src, :copy_doc, :copy_bin] do + puts "All Copies Complete" + end + +In this example, +copy_files+ is a normal rake task. Its actions are +executed whereever all of its prerequisites are done. The big +difference is that the prerequisites (+copy_src+, +copy_bin+ and ++copy_doc+) are executed in parallel. Each of the prerequisites are +run in their own Ruby thread, possibly allowing faster overall runtime. + +=== Secondary Prerequisites + +If any of the primary prerequites of a multitask have common secondary +prerequisites, all of the primary/parallel prerequisites will wait +until the common prerequisites have been run. + +For example, if the copy_xxx tasks have the +following prerequisites: + + task :copy_src => [:prep_for_copy] + task :copy_bin => [:prep_for_copy] + task :copy_doc => [:prep_for_copy] + +Then the +prep_for_copy+ task is run before starting all the copies in +parallel. Once +prep_for_copy+ is complete, +copy_src+, +copy_bin+, +and +copy_doc+ are all run in parallel. Note that +prep_for_copy+ is +run only once, even though it is referenced in multiple threads. + +=== Thread Safety + +The Rake internal data structures are thread-safe with respect +to the multitask parallel execution, so there is no need for the user +to do extra synchronization for Rake's benefit. However, if there are +user data structures shared between the parallel prerequisites, the +user must do whatever is necessary to prevent race conditions. + +== Tasks with Arguments + +Prior to version 0.8.0, rake was only able to handle command line +arguments of the form NAME=VALUE that were passed into Rake via the +ENV hash. Many folks had asked for some kind of simple command line +arguments, perhaps using "--" to separate regular task names from +argument values on the command line. The problem is that there was no +easy way to associate positional arguments on the command line with +different tasks. Suppose both tasks :a and :b expect a command line +argument: does the first value go with :a? What if :b is run first? +Should it then get the first command line argument. + +Rake 0.8.0 solves this problem by explicitly passing values directly +to the tasks that need them. For example, if I had a release task +that required a version number, I could say: + + rake release[0.8.2] + +And the string "0.8.2" will be passed to the :release task. Multiple +arguments can be passed by separating them with a comma, for example: + + rake name[john,doe] + +Just a few words of caution. The rake task name and its arguments +need to be a single command line argument to rake. This generally +means no spaces. If spaces are needed, then the entire rake + +argument string should be quoted. Something like this: + + rake "name[billy bob, smith]" + +(Quoting rules vary between operating systems and shells, so make sure +you consult the proper docs for your OS/shell). + +=== Tasks that Expect Parameters + +Parameters are only given to tasks that are setup to expect them. In +order to handle named parameters, the task declaration syntax for +tasks has been extended slightly. + +For example, a task that needs a first name and last name might be +declared as: + + task :name, [:first_name, :last_name] + +The first argument is still the name of the task (:name in this case). +The next to argumements are the names of the parameters expected by +:name in an array (:first_name and :last_name in the example). + +To access the values of the paramters, the block defining the task +behaviour can now accept a second parameter: + + task :name, [:first_name, :last_name] do |t, args| + puts "First name is #{args.first_name}" + puts "Last name is #{args.last_name}" + end + +The first argument of the block "t" is always bound to the current +task object. The second argument "args" is an open-struct like object +that allows access to the task arguments. Extra command line +arguments to a task are ignored. Missing command line arguments are +given the nil value. + +If you wish to specify default values for the arguments, you can use +the with_defaults method in the task body. Here is the above example +where we specify default values for the first and last names: + + task :name, [:first_name, :last_name] do |t, args| + args.with_defaults(:first_name => "John", :last_name => "Dough") + puts "First name is #{args.first_name}" + puts "Last name is #{args.last_name}" + end + +=== Tasks that Expect Parameters and Have Prerequisites + +Tasks that use parameters have a slightly different format for +prerequisites. Use the arrow notation to indicate the prerequisites +for tasks with arguments. For example: + + task :name, [:first_name, :last_name] => [:pre_name] do |t, args| + args.with_defaults(:first_name => "John", :last_name => "Dough") + puts "First name is #{args.first_name}" + puts "Last name is #{args.last_name}" + end + +=== Deprecated Task Parameters Format + +There is an older format for declaring task parameters that omitted +the task argument array and used the :needs keyword to introduce the +dependencies. That format is still supported for compatibility, but +is not recommended for use. + +== Accessing Task Programatically + +Sometimes it is useful to manipulate tasks programatically in a +Rakefile. To find a task object, use the :[] operator on the +Rake::Task. + +=== Programmatic Task Example + +For example, the following Rakefile defines two tasks. The :doit task +simply prints a simple "DONE" message. The :dont class will lookup +the doit class and remove (clear) all of its prerequisites and +actions. + + task :doit do + puts "DONE" + end + + task :dont do + Rake::Task[:doit].clear + end + +Running this example: + + $ rake doit + (in /Users/jim/working/git/rake/x) + DONE + $ rake dont doit + (in /Users/jim/working/git/rake/x) + $ + +The ability to programmatically manipulate tasks gives rake very +powerful meta-programming capabilities w.r.t. task execution, but +should be used with cation. + +== Rules + +When a file is named as a prerequisite, but does not have a file task +defined for it, Rake will attempt to synthesize a task by looking at a +list of rules supplied in the Rakefile. + +Suppose we were trying to invoke task "mycode.o", but no task is +defined for it. But the rakefile has a rule that look like this ... + + rule '.o' => ['.c'] do |t| + sh "cc #{t.source} -c -o #{t.name}" + end + +This rule will synthesize any task that ends in ".o". It has a +prerequisite a source file with an extension of ".c" must exist. If +Rake is able to find a file named "mycode.c", it will automatically +create a task that builds "mycode.o" from "mycode.c". + +If the file "mycode.c" does not exist, rake will attempt +to recursively synthesize a rule for it. + +When a task is synthesized from a rule, the +source+ attribute of the +task is set to the matching source file. This allows us to write +rules with actions that reference the source file. + +=== Advanced Rules + +Any regular expression may be used as the rule pattern. Additionally, +a proc may be used to calculate the name of the source file. This +allows for complex patterns and sources. + +The following rule is equivalent to the example above. + + rule( /\.o$/ => [ + proc {|task_name| task_name.sub(/\.[^.]+$/, '.c') } + ]) do |t| + sh "cc #{t.source} -c -o #{t.name}" + end + +NOTE: Because of a _quirk_ in Ruby syntax, parenthesis are +required on *rule* when the first argument is a regular expression. + +The following rule might be used for Java files ... + + rule '.java' => [ + proc { |tn| tn.sub(/\.class$/, '.java').sub(/^classes\//, 'src/') } + ] do |t| + java_compile(t.source, t.name) + end + +NOTE: +java_compile+ is a hypothetical method that invokes the +java compiler. + +== Importing Dependencies + +Any ruby file (including other rakefiles) can be included with a +standard Ruby +require+ command. The rules and declarations in the +required file are just added to the definitions already accumulated. + +Because the files are loaded _before_ the rake targets are evaluated, +the loaded files must be "ready to go" when the rake command is +invoked. This make generated dependency files difficult to use. By +the time rake gets around to updating the dependencies file, it is too +late to load it. + +The +import+ command addresses this by specifying a file to be loaded +_after_ the main rakefile is loaded, but _before_ any targets on the +command line are specified. In addition, if the file name matches an +explicit task, that task is invoked before loading the file. This +allows dependency files to be generated and used in a single rake +command invocation. + +=== Example: + + require 'rake/loaders/makefile' + + file ".depends.mf" => [SRC_LIST] do |t| + sh "makedepend -f- -- #{CFLAGS} -- #{t.prerequisites} > #{t.name}" + end + + import ".depends.mf" + +If ".depends" does not exist, or is out of date w.r.t. the source +files, a new ".depends" file is generated using +makedepend+ before +loading. + +== Comments + +Standard Ruby comments (beginning with "#") can be used anywhere it is +legal in Ruby source code, including comments for tasks and rules. +However, if you wish a task to be described using the "-T" switch, +then you need to use the +desc+ command to describe the task. + +=== Example: + + desc "Create a distribution package" + task :package => [ ... ] do ... end + +The "-T" switch (or "--tasks" if you like to spell things out) will +display a list of tasks that have a defined comment. If you use ++desc+ to describe your major tasks, you have a semi-automatic way of +generating a summary of your Rake file. + + traken$ rake -T + (in /home/.../rake) + rake clean # Remove any temporary products. + rake clobber # Remove any generated file. + rake clobber_rdoc # Remove rdoc products + rake contrib_test # Run tests for contrib_test + rake default # Default Task + rake install # Install the application + rake lines # Count lines in the main rake file + rake rdoc # Build the rdoc HTML Files + rake rerdoc # Force a rebuild of the RDOC files + rake test # Run tests + rake testall # Run all test targets + +Only tasks with descriptions will be displayed with the "-T" switch. +Use "-P" (or "--prereqs") to get a list of all tasks and their +prerequisites. + +== Namespaces + +As projects grow (and along with it, the number of tasks), it is +common for task names to begin to clash. For example, if you might +have a main program and a set of sample programs built by a single +Rakefile. By placing the tasks related to the main program in one +namespace, and the tasks for building the sample programs in a +different namespace, the task names will not will not interfer with +each other. + +For example: + + namespace "main" + task :build do + # Build the main program + end + end + + namespace "samples" do + task :build do + # Build the sample programs + end + end + + task :build => ["main:build", "samples:build"] + +Referencing a task in a separate namespace can be achieved by +prefixing the task name with the namespace and a colon +(e.g. "main:build" refers to the :build task in the +main+ namespace). +Nested namespaces are supported, so + +Note that the name given in the +task+ command is always the unadorned +task name without any namespace prefixes. The +task+ command always +defines a task in the current namespace. + +=== FileTasks + +File task names are not scoped by the namespace command. Since the +name of a file task is the name of an actual file in the file system, +it makes little sense to include file task names in name space. +Directory tasks (created by the +directory+ command) are a type of +file task and are also not affected by namespaces. + +=== Name Resolution + +When looking up a task name, rake will start with the current +namespace and attempt to find the name there. If it fails to find a +name in the current namespace, it will search the parent namespaces +until a match is found (or an error occurs if there is no match). + +The "rake" namespace is a special implicit namespace that refers to +the toplevel names. + +If a task name begins with a "^" character, the name resolution will +start in the parent namespace. Multiple "^" characters are allowed. + +Here is an example file with multiple :run tasks and how various names +resolve in different locations. + + task :run + + namespace "one" do + task :run + + namespace "two" do + task :run + + # :run => "one:two:run" + # "two:run" => "one:two:run" + # "one:two:run" => "one:two:run" + # "one:run" => "one:run" + # "^run" => "one:run" + # "^^run" => "rake:run" (the top level task) + # "rake:run" => "rake:run" (the top level task) + end + + # :run => "one:run" + # "two:run" => "one:two:run" + # "^run" => "rake:run" + end + + # :run => "rake:run" + # "one:run" => "one:run" + # "one:two:run" => "one:two:run" + +== FileLists + +FileLists are the way Rake manages lists of files. You can treat a +FileList as an array of strings for the most part, but FileLists +support some additional operations. + +=== Creating a FileList + +Creating a file list is easy. Just give it the list of file names: + + fl = FileList['file1.rb', file2.rb'] + +Or give it a glob pattern: + + fl = FileList['*.rb'] + +== Odds and Ends + +=== do/end verses { } + +Blocks may be specified with either a +do+/+end+ pair, or with curly +braces in Ruby. We _strongly_ recommend using +do+/+end+ to specify the +actions for tasks and rules. Because the rakefile idiom tends to +leave off parenthesis on the task/file/rule methods, unusual +ambiguities can arise when using curly braces. + +For example, suppose that the method +object_files+ returns a list of +object files in a project. Now we use +object_files+ as the +prerequistes in a rule specified with actions in curly braces. + + # DON'T DO THIS! + file "prog" => object_files { + # Actions are expected here (but it doesn't work)! + } + +Because curly braces have a higher precedence than +do+/+end+, the +block is associated with the +object_files+ method rather than the ++file+ method. + +This is the proper way to specify the task ... + + # THIS IS FINE + file "prog" => object_files do + # Actions go here + end + +---- + +== See + +* README -- Main documentation for Rake. diff --git a/doc/rake/rational.rdoc b/doc/rake/rational.rdoc new file mode 100644 index 00000000000000..f741e65bf81b1f --- /dev/null +++ b/doc/rake/rational.rdoc @@ -0,0 +1,151 @@ += Why rake? + +Ok, let me state from the beginning that I never intended to write this +code. I'm not convinced it is useful, and I'm not convinced anyone +would even be interested in it. All I can say is that Why's onion truck +must by been passing through the Ohio valley. + +What am I talking about? ... A Ruby version of Make. + +See, I can sense you cringing already, and I agree. The world certainly +doesn't need yet another reworking of the "make" program. I mean, we +already have "ant". Isn't that enough? + +It started yesterday. I was helping a coworker fix a problem in one of +the Makefiles we use in our project. Not a particularly tough problem, +but during the course of the conversation I began lamenting some of the +shortcomings of make. In particular, in one of my makefiles I wanted to +determine the name of a file dynamically and had to resort to some +simple scripting (in Ruby) to make it work. "Wouldn't it be nice if you +could just use Ruby inside a Makefile" I said. + +My coworker (a recent convert to Ruby) agreed, but wondered what it +would look like. So I sketched the following on the whiteboard... + + "What if you could specify the make tasks in Ruby, like this ..." + + task "build" do + java_compile(...args, etc ...) + end + + "The task function would register "build" as a target to be made, + and the block would be the action executed whenever the build + system determined that it was time to do the build target." + +We agreed that would be cool, but writing make from scratch would be WAY +too much work. And that was the end of that! + +... Except I couldn't get the thought out of my head. What exactly +would be needed to make the about syntax work as a make file? Hmmm, you +would need to register the tasks, you need some way of specifying +dependencies between tasks, and some way of kicking off the process. +Hey! What if we did ... and fifteen minutes later I had a working +prototype of Ruby make, complete with dependencies and actions. + +I showed the code to my coworker and we had a good laugh. It was just +about a page worth of code that reproduced an amazing amount of the +functionality of make. We were both truely stunned with the power of +Ruby. + +But it didn't do everything make did. In particular, it didn't have +timestamp based file dependencies (where a file is rebuilt if any of its +prerequisite files have a later timestamp). Obviously THAT would be a +pain to add and so Ruby Make would remain an interesting experiment. + +... Except as I walked back to my desk, I started thinking about what +file based dependecies would really need. Rats! I was hooked again, +and by adding a new class and two new methods, file/timestamp +dependencies were implemented. + +Ok, now I was really hooked. Last night (during CSI!) I massaged the +code and cleaned it up a bit. The result is a bare-bones replacement +for make in exactly 100 lines of code. + +For the curious, you can see it at ... +* doc/proto_rake.rdoc + +Oh, about the name. When I wrote the example Ruby Make task on my +whiteboard, my coworker exclaimed "Oh! I have the perfect name: Rake ... +Get it? Ruby-Make. Rake!" He said he envisioned the tasks as leaves +and Rake would clean them up ... or something like that. Anyways, the +name stuck. + +Some quick examples ... + +A simple task to delete backup files ... + + task :clean do + Dir['*~'].each {|fn| rm fn rescue nil} + end + +Note that task names are symbols (they are slightly easier to type +than quoted strings ... but you may use quoted string if you would +rather). Rake makes the methods of the FileUtils module directly +available, so we take advantage of the rm command. Also note +the use of "rescue nil" to trap and ignore errors in the rm +command. + +To run it, just type "rake clean". Rake will automatically find a +Rakefile in the current directory (or above!) and will invoke the +targets named on the command line. If there are no targets explicitly +named, rake will invoke the task "default". + +Here's another task with dependencies ... + + task :clobber => [:clean] do + rm_r "tempdir" + end + +Task :clobber depends upon task :clean, so :clean will be run before +:clobber is executed. + +Files are specified by using the "file" command. It is similar to the +task command, except that the task name represents a file, and the task +will be run only if the file doesn't exist, or if its modification time +is earlier than any of its prerequisites. + +Here is a file based dependency that will compile "hello.cc" to +"hello.o". + + file "hello.cc" + file "hello.o" => ["hello.cc"] do |t| + srcfile = t.name.sub(/\.o$/, ".cc") + sh %{g++ #{srcfile} -c -o #{t.name}} + end + +I normally specify file tasks with string (rather than symbols). Some +file names can't be represented by symbols. Plus it makes the +distinction between them more clear to the casual reader. + +Currently writing a task for each and every file in the project would be +tedious at best. I envision a set of libraries to make this job +easier. For instance, perhaps something like this ... + + require 'rake/ctools' + Dir['*.c'].each do |fn| + c_source_file(fn) + end + +where "c_source_file" will create all the tasks need to compile all the +C source files in a directory. Any number of useful libraries could be +created for rake. + +That's it. There's no documentation (other than whats in this +message). Does this sound interesting to anyone? If so, I'll continue +to clean it up and write it up and publish it on RAA. Otherwise, I'll +leave it as an interesting excerise and a tribute to the power of Ruby. + +Why /might/ rake be interesting to Ruby programmers. I don't know, +perhaps ... + +* No weird make syntax (only weird Ruby syntax :-) +* No need to edit or read XML (a la ant) +* Platform independent build scripts. +* Will run anywhere Ruby exists, so no need to have "make" installed. + If you stay away from the "sys" command and use things like + 'ftools', you can have a perfectly platform independent + build script. Also rake is only 100 lines of code, so it can + easily be packaged along with the rest of your code. + +So ... Sorry for the long rambling message. Like I said, I never +intended to write this code at all. diff --git a/doc/rake/release_notes/rake-0.8.7.rdoc b/doc/rake/release_notes/rake-0.8.7.rdoc new file mode 100644 index 00000000000000..fb0c5d4e36ebc6 --- /dev/null +++ b/doc/rake/release_notes/rake-0.8.7.rdoc @@ -0,0 +1,55 @@ += Rake 0.8.7 Released + +Rake version 0.8.5 introduced greatly improved support for executing +commands on Windows. The "sh" command now has the same semantics on +Windows that it has on Unix based platforms. + +Rake version 0.8.6 includes minor fixes the the RDoc generation. +Rake version 0.8.7 includes a minor fix for JRuby running on windows. + +== Changes + +=== New Features / Enhancements in Version 0.8.5 + +* Improved implementation of the Rake system command for Windows. + (patch from James M. Lawrence/quix) + +* Support for Ruby 1.9's improved system command. (patch from James + M. Lawrence/quix) + +* Rake now includes the configured extension when invoking an + executable (Config::CONFIG['EXEEXT]) + +=== Bug Fixes in Version 0.8.5 + +* Environment variable keys are now correctly cased (it matters in + some implementations). + +== What is Rake + +Rake is a build tool similar to the make program in many ways. But +instead of cryptic make recipes, Rake uses standard Ruby code to +declare tasks and dependencies. You have the full power of a modern +scripting language built right into your build tool. + +== Availability + +The easiest way to get and install rake is via RubyGems ... + + gem install rake (you may need root/admin privileges) + +Otherwise, you can get it from the more traditional places: + +Home Page:: http://rake.rubyforge.org/ +Download:: http://rubyforge.org/project/showfiles.php?group_id=50 +GitHub:: git://github.com/jimweirich/rake.git + +== Thanks + +As usual, it was input from users that drove a alot of these changes. The +following people either contributed patches, made suggestions or made +otherwise helpful comments. Thanks to ... + +* Charles Nutter + +-- Jim Weirich diff --git a/doc/re.rdoc b/doc/re.rdoc new file mode 100644 index 00000000000000..6ca33256823f82 --- /dev/null +++ b/doc/re.rdoc @@ -0,0 +1,584 @@ +# -*- mode: rdoc; coding: utf-8; fill-column: 74; -*- +=begin rdoc + +Regular expressions (regexps) are patterns which describe the +contents of a string. They're used for testing whether a string contains a +given pattern, or extracting the portions that match. They are created +with the /pat/ and +%r{pat} literals or the Regexp.new +constructor. + +A regexp is usually delimited with forward slashes (/). For +example: + + /hay/ =~ 'haystack' #=> 0 + /y/.match('haystack') #=> # + +If a string contains the pattern it is said to match. A literal +string matches itself. + + # 'haystack' does not contain the pattern 'needle', so doesn't match. + /needle/.match('haystack') #=> nil + # 'haystack' does contain the pattern 'hay', so it matches + /hay/.match('haystack') #=> # + +Specifically, /st/ requires that the string contains the letter +_s_ followed by the letter _t_, so it matches _haystack_, also. + +== Metacharacters and Escapes + +The following are metacharacters (, ), +[, ], {, }, ., ?, ++, *. They have a specific meaning when appearing in a +pattern. To match them literally they must be backslash-escaped. To match +a backslash literally backslash-escape that: \\\\\\. + + /1 \+ 2 = 3\?/.match('Does 1 + 2 = 3?') #=> # + +Patterns behave like double-quoted strings so can contain the same +backslash escapes. + + /\s\u{6771 4eac 90fd}/.match("Go to æ±äº¬éƒ½") + #=> # + +Arbitrary Ruby expressions can be embedded into patterns with the +#{...} construct. + + place = "æ±äº¬éƒ½" + /#{place}/.match("Go to æ±äº¬éƒ½") + #=> # + +== Character Classes + +A character class is delimited with square brackets ([, +]) and lists characters that may appear at that point in the +match. /[ab]/ means _a_ or _b_, as opposed to /ab/ which +means _a_ followed by _b_. + + /W[aeiou]rd/.match("Word") #=> # + +Within a character class the hyphen (-) is a metacharacter +denoting an inclusive range of characters. [abcd] is equivalent +to [a-d]. A range can be followed by another range, so +[abcdwxyz] is equivalent to [a-dw-z]. The order in which +ranges or individual characters appear inside a character class is +irrelevant. + + /[0-9a-f]/.match('9f') #=> # + /[9f]/.match('9f') #=> # + +If the first character of a character class is a caret (^) the +class is inverted: it matches any character _except_ those named. + + /[^a-eg-z]/.match('f') #=> # + +A character class may contain another character class. By itself this +isn't useful because [a-z[0-9]] describes the same set as +[a-z0-9]. However, character classes also support the && +operator which performs set intersection on its arguments. The two can be +combined as follows: + + /[a-w&&[^c-g]z]/ # ([a-w] AND ([^c-g] OR z)) + # This is equivalent to: + /[abh-w]/ + +The following metacharacters also behave like character classes: + +* /./ - Any character except a newline. +* /./m - Any character (the +m+ modifier enables multiline mode) +* /\w/ - A word character ([a-zA-Z0-9_]) +* /\W/ - A non-word character ([^a-zA-Z0-9_]) +* /\d/ - A digit character ([0-9]) +* /\D/ - A non-digit character ([^0-9]) +* /\h/ - A hexdigit character ([0-9a-fA-F]) +* /\H/ - A non-hexdigit character ([^0-9a-fA-F]) +* /\s/ - A whitespace character: /[ \t\r\n\f]/ +* /\S/ - A non-whitespace character: /[^ \t\r\n\f]/ + +POSIX bracket expressions are also similar to character classes. +They provide a portable alternative to the above, with the added benefit +that they encompass non-ASCII characters. For instance, /\d/ +matches only the ASCII decimal digits (0-9); whereas /[[:digit:]]/ +matches any character in the Unicode _Nd_ category. + +* /[[:alnum:]]/ - Alphabetic and numeric character +* /[[:alpha:]]/ - Alphabetic character +* /[[:blank:]]/ - Space or tab +* /[[:cntrl:]]/ - Control character +* /[[:digit:]]/ - Digit +* /[[:graph:]]/ - Non-blank character (excludes spaces, control + characters, and similar) +* /[[:lower:]]/ - Lowercase alphabetical character +* /[[:print:]]/ - Like [:graph:], but includes the space character +* /[[:punct:]]/ - Punctuation character +* /[[:space:]]/ - Whitespace character ([:blank:], newline, + carriage return, etc.) +* /[[:upper:]]/ - Uppercase alphabetical +* /[[:xdigit:]]/ - Digit allowed in a hexadecimal number (i.e., + 0-9a-fA-F) + +Ruby also supports the following non-POSIX character classes: + +* /[[:word:]]/ - A character in one of the following Unicode + general categories _Letter_, _Mark_, _Number_, + Connector_Punctuation +* /[[:ascii:]]/ - A character in the ASCII character set + + # U+06F2 is "EXTENDED ARABIC-INDIC DIGIT TWO" + /[[:digit:]]/.match("\u06F2") #=> # + /[[:upper:]][[:lower:]]/.match("Hello") #=> # + /[[:xdigit:]][[:xdigit:]]/.match("A6") #=> # + +== Repetition + +The constructs described so far match a single character. They can be +followed by a repetition metacharacter to specify how many times they need +to occur. Such metacharacters are called quantifiers. + +* * - Zero or more times +* + - One or more times +* ? - Zero or one times (optional) +* {n} - Exactly n times +* {n,} - n or more times +* {,m} - m or less times +* {n,m} - At least n and + at most m times + + # At least one uppercase character ('H'), at least one lowercase + # character ('e'), two 'l' characters, then one 'o' + "Hello".match(/[[:upper:]]+[[:lower:]]+l{2}o/) #=> # + +Repetition is greedy by default: as many occurrences as possible +are matched while still allowing the overall match to succeed. By +contrast, lazy matching makes the minimal amount of matches +necessary for overall success. A greedy metacharacter can be made lazy by +following it with ?. + + # Both patterns below match the string. The fist uses a greedy + # quantifier so '.+' matches ''; the second uses a lazy + # quantifier so '.+?' matches ''. + /<.+>/.match("") #=> #"> + /<.+?>/.match("") #=> #"> + +A quantifier followed by + matches possessively: once it +has matched it does not backtrack. They behave like greedy quantifiers, +but having matched they refuse to "give up" their match even if this +jeopardises the overall match. + +== Capturing + +Parentheses can be used for capturing. The text enclosed by the +nth group of parentheses can be subsequently referred to +with n. Within a pattern use the backreference +\n; outside of the pattern use +MatchData[n]. + + # 'at' is captured by the first group of parentheses, then referred to + # later with \1 + /[csh](..) [csh]\1 in/.match("The cat sat in the hat") + #=> # + # Regexp#match returns a MatchData object which makes the captured + # text available with its #[] method. + /[csh](..) [csh]\1 in/.match("The cat sat in the hat")[1] #=> 'at' + +Capture groups can be referred to by name when defined with the +(?<name>) or (?'name') +constructs. + + /\$(?\d+)\.(?\d+)/.match("$3.67") + => # + /\$(?\d+)\.(?\d+)/.match("$3.67")[:dollars] #=> "3" + +Named groups can be backreferenced with \k<name>, +where _name_ is the group name. + + /(?[aeiou]).\k.\k/.match('ototomy') + #=> # + +*Note*: A regexp can't use named backreferences and numbered +backreferences simultaneously. + +When named capture groups are used with a literal regexp on the left-hand +side of an expression and the =~ operator, the captured text is +also assigned to local variables with corresponding names. + + /\$(?\d+)\.(?\d+)/ =~ "$3.67" #=> 0 + dollars #=> "3" + +== Grouping + +Parentheses also group the terms they enclose, allowing them to be +quantified as one atomic whole. + + # The pattern below matches a vowel followed by 2 word characters: + # 'aen' + /[aeiou]\w{2}/.match("Caenorhabditis elegans") #=> # + # Whereas the following pattern matches a vowel followed by a word + # character, twice, i.e. [aeiou]\w[aeiou]\w: 'enor'. + /([aeiou]\w){2}/.match("Caenorhabditis elegans") + #=> # + +The (?:...) construct provides grouping without +capturing. That is, it combines the terms it contains into an atomic whole +without creating a backreference. This benefits performance at the slight +expense of readabilty. + + # The group of parentheses captures 'n' and the second 'ti'. The + # second group is referred to later with the backreference \2 + /I(n)ves(ti)ga\2ons/.match("Investigations") + #=> # + # The first group of parentheses is now made non-capturing with '?:', + # so it still matches 'n', but doesn't create the backreference. Thus, + # the backreference \1 now refers to 'ti'. + /I(?:n)ves(ti)ga\1ons/.match("Investigations") + #=> # + +=== Atomic Grouping + +Grouping can be made atomic with +(?>pat). This causes the subexpression pat +to be matched independently of the rest of the expression such that what +it matches becomes fixed for the remainder of the match, unless the entire +subexpression must be abandoned and subsequently revisited. In this +way pat is treated as a non-divisible whole. Atomic grouping is +typically used to optimise patterns so as to prevent the regular +expression engine from backtracking needlesly. + + # The " in the pattern below matches the first character of + # the string, then .* matches Quote". This causes the + # overall match to fail, so the text matched by .* is + # backtracked by one position, which leaves the final character of the + # string available to match " + /".*"/.match('"Quote"') #=> # + # If .* is grouped atomically, it refuses to backtrack + # Quote", even though this means that the overall match fails + /"(?>.*)"/.match('"Quote"') #=> nil + +== Subexpression Calls + +The \g<name> syntax matches the previous +subexpression named _name_, which can be a group name or number, again. +This differs from backreferences in that it re-executes the group rather +than simply trying to re-match the same text. + + # Matches a ( character and assigns it to the paren + # group, tries to call that the paren sub-expression again + # but fails, then matches a literal ). + /\A(?\(\g*\))*\z/ =~ '()' + + + /\A(?\(\g*\))*\z/ =~ '(())' #=> 0 + # ^1 + # ^2 + # ^3 + # ^4 + # ^5 + # ^6 + # ^7 + # ^8 + # ^9 + # ^10 + +1. Matches at the beginning of the string, i.e. before the first + character. +2. Enters a named capture group called paren +3. Matches a literal (, the first character in the string +4. Calls the paren group again, i.e. recurses back to the + second step +5. Re-enters the paren group +6. Matches a literal (, the second character in the + string +7. Try to call paren a third time, but fail because + doing so would prevent an overall successful match +8. Match a literal ), the third character in the string. + Marks the end of the second recursive call +9. Match a literal ), the fourth character in the string +10. Match the end of the string + +== Alternation + +The vertical bar metacharacter (|) combines two expressions into +a single one that matches either of the expressions. Each expression is an +alternative. + + /\w(and|or)\w/.match("Feliformia") #=> # + /\w(and|or)\w/.match("furandi") #=> # + /\w(and|or)\w/.match("dissemblance") #=> nil + +== Character Properties + +The \p{} construct matches characters with the named property, +much like POSIX bracket classes. + +* /\p{Alnum}/ - Alphabetic and numeric character +* /\p{Alpha}/ - Alphabetic character +* /\p{Blank}/ - Space or tab +* /\p{Cntrl}/ - Control character +* /\p{Digit}/ - Digit +* /\p{Graph}/ - Non-blank character (excludes spaces, control + characters, and similar) +* /\p{Lower}/ - Lowercase alphabetical character +* /\p{Print}/ - Like \p{Graph}, but includes the space character +* /\p{Punct}/ - Punctuation character +* /\p{Space}/ - Whitespace character ([:blank:], newline, + carriage return, etc.) +* /\p{Upper}/ - Uppercase alphabetical +* /\p{XDigit}/ - Digit allowed in a hexadecimal number (i.e., 0-9a-fA-F) +* /\p{Word}/ - A member of one of the following Unicode general + category Letter, Mark, Number, + Connector\_Punctuation +* /\p{ASCII}/ - A character in the ASCII character set +* /\p{Any}/ - Any Unicode character (including unassigned + characters) +* /\p{Assigned}/ - An assigned character + +A Unicode character's General Category value can also be matched +with \p{Ab} where Ab is the category's +abbreviation as described below: + +* /\p{L}/ - 'Letter' +* /\p{Ll}/ - 'Letter: Lowercase' +* /\p{Lm}/ - 'Letter: Mark' +* /\p{Lo}/ - 'Letter: Other' +* /\p{Lt}/ - 'Letter: Titlecase' +* /\p{Lu}/ - 'Letter: Uppercase +* /\p{Lo}/ - 'Letter: Other' +* /\p{M}/ - 'Mark' +* /\p{Mn}/ - 'Mark: Nonspacing' +* /\p{Mc}/ - 'Mark: Spacing Combining' +* /\p{Me}/ - 'Mark: Enclosing' +* /\p{N}/ - 'Number' +* /\p{Nd}/ - 'Number: Decimal Digit' +* /\p{Nl}/ - 'Number: Letter' +* /\p{No}/ - 'Number: Other' +* /\p{P}/ - 'Punctuation' +* /\p{Pc}/ - 'Punctuation: Connector' +* /\p{Pd}/ - 'Punctuation: Dash' +* /\p{Ps}/ - 'Punctuation: Open' +* /\p{Pe}/ - 'Punctuation: Close' +* /\p{Pi}/ - 'Punctuation: Initial Quote' +* /\p{Pf}/ - 'Punctuation: Final Quote' +* /\p{Po}/ - 'Punctuation: Other' +* /\p{S}/ - 'Symbol' +* /\p{Sm}/ - 'Symbol: Math' +* /\p{Sc}/ - 'Symbol: Currency' +* /\p{Sc}/ - 'Symbol: Currency' +* /\p{Sk}/ - 'Symbol: Modifier' +* /\p{So}/ - 'Symbol: Other' +* /\p{Z}/ - 'Separator' +* /\p{Zs}/ - 'Separator: Space' +* /\p{Zl}/ - 'Separator: Line' +* /\p{Zp}/ - 'Separator: Paragraph' +* /\p{C}/ - 'Other' +* /\p{Cc}/ - 'Other: Control' +* /\p{Cf}/ - 'Other: Format' +* /\p{Cn}/ - 'Other: Not Assigned' +* /\p{Co}/ - 'Other: Private Use' +* /\p{Cs}/ - 'Other: Surrogate' + +Lastly, \p{} matches a character's Unicode script. The +following scripts are supported: Arabic, Armenian, +Balinese, Bengali, Bopomofo, Braille, +Buginese, Buhid, Canadian_Aboriginal, Carian, +Cham, Cherokee, Common, Coptic, +Cuneiform, Cypriot, Cyrillic, Deseret, +Devanagari, Ethiopic, Georgian, Glagolitic, +Gothic, Greek, Gujarati, Gurmukhi, Han, +Hangul, Hanunoo, Hebrew, Hiragana, +Inherited, Kannada, Katakana, Kayah_Li, +Kharoshthi, Khmer, Lao, Latin, Lepcha, +Limbu, Linear_B, Lycian, Lydian, +Malayalam, Mongolian, Myanmar, New_Tai_Lue, +Nko, Ogham, Ol_Chiki, Old_Italic, +Old_Persian, Oriya, Osmanya, Phags_Pa, +Phoenician, Rejang, Runic, Saurashtra, +Shavian, Sinhala, Sundanese, Syloti_Nagri, +Syriac, Tagalog, Tagbanwa, Tai_Le, +Tamil, Telugu, Thaana, Thai, Tibetan, +Tifinagh, Ugaritic, Vai, and Yi. + + # Unicode codepoint U+06E9 is named "ARABIC PLACE OF SAJDAH" and + # belongs to the Arabic script. + /\p{Arabic}/.match("\u06E9") #=> # + +All character properties can be inverted by prefixing their name with a +caret (^). + + # Letter 'A' is not in the Unicode Ll (Letter; Lowercase) category, so + # this match succeeds + /\p{^Ll}/.match("A") #=> # + +== Anchors + +Anchors are metacharacter that match the zero-width positions between +characters, anchoring the match to a specific position. + +* ^ - Matches beginning of line +* $ - Matches end of line +* \A - Matches beginning of string. +* \Z - Matches end of string. If string ends with a newline, + it matches just before newline +* \z - Matches end of string +* \G - Matches point where last match finished +* \b - Matches word boundaries when outside brackets; backspace + (0x08) inside brackets +* \B - Matches non-word boundaries +* (?=pat) - Positive lookahead assertion: + ensures that the following characters match pat, but doesn't + include those characters in the matched text +* (?!pat) - Negative lookahead assertion: + ensures that the following characters do not match pat, but + doesn't include those characters in the matched text +* (?<=pat) - Positive lookbehind + assertion: ensures that the preceding characters match pat, but + doesn't include those characters in the matched text +* (?pat) - Negative lookbehind + assertion: ensures that the preceding characters do not match + pat, but doesn't include those characters in the matched text + + # If a pattern isn't anchored it can begin at any point in the string + /real/.match("surrealist") #=> # + # Anchoring the pattern to the beginning of the string forces the + # match to start there. 'real' doesn't occur at the beginning of the + # string, so now the match fails + /\Areal/.match("surrealist") #=> nil + # The match below fails because although 'Demand' contains 'and', the + pattern does not occur at a word boundary. + /\band/.match("Demand") + # Whereas in the following example 'and' has been anchored to a + # non-word boundary so instead of matching the first 'and' it matches + # from the fourth letter of 'demand' instead + /\Band.+/.match("Supply and demand curve") #=> # + # The pattern below uses positive lookahead and positive lookbehind to + # match text appearing in tags without including the tags in the + # match + /(?<=)\w+(?=<\/b>)/.match("Fortune favours the bold") + #=> # + +== Options + +The end delimiter for a regexp can be followed by one or more single-letter +options which control how the pattern can match. + +* /pat/i - Ignore case +* /pat/m - Treat a newline as a character matched by . +* /pat/x - Ignore whitespace and comments in the pattern +* /pat/o - Perform #{} interpolation only once + +i, m, and x can also be applied on the +subexpression level with the +(?on-off) construct, which +enables options on, and disables options off for the +expression enclosed by the parentheses. + + /a(?i:b)c/.match('aBc') #=> # + /a(?i:b)c/.match('abc') #=> # + +== Free-Spacing Mode and Comments + +As mentioned above, the x option enables free-spacing +mode. Literal white space inside the pattern is ignored, and the +octothorpe (#) character introduces a comment until the end of +the line. This allows the components of the pattern to be organised in a +potentially more readable fashion. + + # A contrived pattern to match a number with optional decimal places + float_pat = /\A + [[:digit:]]+ # 1 or more digits before the decimal point + (\. # Decimal point + [[:digit:]]+ # 1 or more digits after the decimal point + )? # The decimal point and following digits are optional + \Z/x + float_pat.match('3.14') #=> # + +*Note*: To match whitespace in an x pattern use an escape such as +\s or \p{Space}. + +Comments can be included in a non-x pattern with the +(?#comment) construct, where comment is +arbitrary text ignored by the regexp engine. + +== Encoding + +Regular expressions are assumed to use the source encoding. This can be +overridden with one of the following modifiers. + +* /pat/u - UTF-8 +* /pat/e - EUC-JP +* /pat/s - Windows-31J +* /pat/n - ASCII-8BIT + +A regexp can be matched against a string when they either share an +encoding, or the regexp's encoding is _US-ASCII_ and the string's encoding +is ASCII-compatible. + +If a match between incompatible encodings is attempted an +Encoding::CompatibilityError exception is raised. + +The Regexp#fixed_encoding? predicate indicates whether the regexp +has a fixed encoding, that is one incompatible with ASCII. A +regexp's encoding can be explicitly fixed by supplying +Regexp::FIXEDENCODING as the second argument of +Regexp.new: + + r = Regexp.new("a".force_encoding("iso-8859-1"),Regexp::FIXEDENCODING) + r =~"a\u3042" + #=> Encoding::CompatibilityError: incompatible encoding regexp match + (ISO-8859-1 regexp with UTF-8 string) + +== Performance + +Certain pathological combinations of constructs can lead to abysmally bad +performance. + +Consider a string of 25 as, a d, 4 as, and a +c. + + s = 'a' * 25 + 'd' 'a' * 4 + 'c' + #=> "aaaaaaaaaaaaaaaaaaaaaaaaadadadadac" + +The following patterns match instantly as you would expect: + + /(b|a)/ =~ s #=> 0 + /(b|a+)/ =~ s #=> 0 + /(b|a+)*\/ =~ s #=> 0 + +However, the following pattern takes appreciably longer: + + /(b|a+)*c/ =~ s #=> 32 + +This happens because an atom in the regexp is quantified by both an +immediate + and an enclosing * with nothing to +differentiate which is in control of any particular character. The +nondeterminism that results produces super-linear performance. (Consult +Mastering Regular Expressions (3rd ed.), pp 222, by +Jeffery Friedl, for an in-depth analysis). This particular case +can be fixed by use of atomic grouping, which prevents the unnecessary +backtracking: + + (start = Time.now) && /(b|a+)*c/ =~ s && (Time.now - start) + #=> 24.702736882 + (start = Time.now) && /(?>b|a+)*c/ =~ s && (Time.now - start) + #=> 0.000166571 + +A similar case is typified by the following example, which takes +approximately 60 seconds to execute for me: + + # Match a string of 29 as against a pattern of 29 optional + # as followed by 29 mandatory as. + Regexp.new('a?' * 29 + 'a' * 29) =~ 'a' * 29 + +The 29 optional as match the string, but this prevents the 29 +mandatory as that follow from matching. Ruby must then backtrack +repeatedly so as to satisfy as many of the optional matches as it can +while still matching the mandatory 29. It is plain to us that none of the +optional matches can succeed, but this fact unfortunately eludes Ruby. + +One approach for improving performance is to anchor the match to the +beginning of the string, thus significantly reducing the amount of +backtracking needed. + + Regexp.new('\A' 'a?' * 29 + 'a' * 29).match('a' * 29) + #=> # +=end +class Regexp; end diff --git a/enc/big5.c b/enc/big5.c index 4a7a91a231e6cf..c4a088d531e64c 100644 --- a/enc/big5.c +++ b/enc/big5.c @@ -67,6 +67,26 @@ static const int EncLen_BIG5_HKSCS[] = { /* F */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, }; +static const int EncLen_BIG5_UAO[] = { + /* LEN 0 1 2 3 4 5 6 7 8 9 A B C D E F */ + /* 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, + /* 2 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + /* 3 */ 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, + /* 5 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + /* 6 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + /* 7 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + /* 8 */ 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + /* 9 */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + /* A */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + /* B */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + /* C */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + /* D */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + /* E */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + /* F */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, +}; + typedef enum { FAILURE = -2, ACCEPT = -1, S0 = 0, S1 } state_t; #define A ACCEPT #define F FAILURE @@ -156,6 +176,12 @@ big5_hkscs_mbc_enc_len(const UChar* p, const UChar* e, OnigEncoding enc ARG_UNUS return big5_mbc_enc_len0(p, e, 2, EncLen_BIG5_HKSCS); } +static int +big5_uao_mbc_enc_len(const UChar* p, const UChar* e, OnigEncoding enc ARG_UNUSED) +{ + return big5_mbc_enc_len0(p, e, 2, EncLen_BIG5_UAO); +} + static OnigCodePoint big5_mbc_to_code(const UChar* p, const UChar* end, OnigEncoding enc) { @@ -211,6 +237,8 @@ static const char BIG5_CAN_BE_TRAIL_TABLE[256] = { }; #define BIG5_HKSCS_P(enc) ((enc)->precise_mbc_enc_len == big5_hkscs_mbc_enc_len) +#define BIG5_UAO_P(enc) ((enc)->precise_mbc_enc_len == big5_uao_mbc_enc_len) + #define BIG5_ISMB_FIRST(byte) ( \ BIG5_HKSCS_P(enc) ? EncLen_BIG5_HKSCS[byte] > 1 : \ EncLen_BIG5[byte] > 1 \ @@ -300,3 +328,26 @@ OnigEncodingDefine(big5_hkscs, BIG5_HKSCS) = { big5_is_allowed_reverse_match }; ENC_ALIAS("CP951", "Big5-HKSCS") + +/* + * Name: Big5-UAO [NOT registered by IANA!] + * Source: http://moztw.org/docs/big5/table/big5_2003-b2u.txt + */ +OnigEncodingDefine(big5_uao, BIG5_UAO) = { + big5_uao_mbc_enc_len, + "Big5-UAO", /* 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 +}; diff --git a/enc/trans/big5-uao-tbl.rb b/enc/trans/big5-uao-tbl.rb new file mode 100644 index 00000000000000..295fbfdda5fe0b --- /dev/null +++ b/enc/trans/big5-uao-tbl.rb @@ -0,0 +1,19784 @@ +BIG5_UAO_TO_UCS_TBL = [ + ["8140",0x4E17], + ["8141",0x4E22], + ["8142",0x4E2C], + ["8143",0x4E55], + ["8144",0x4E62], + ["8145",0x4E8A], + ["8146",0x4EB0], + ["8147",0x4EEB], + ["8148",0x4EED], + ["8149",0x4EFC], + ["814A",0x4F1C], + ["814B",0x4F8A], + ["814C",0x4FFF], + ["814D",0x5042], + ["814E",0x5050], + ["814F",0x5078], + ["8150",0x50D8], + ["8151",0x50DE], + ["8152",0x50F4], + ["8153",0x5116], + ["8154",0x514A], + ["8155",0x5151], + ["8156",0x5164], + ["8157",0x516A], + ["8158",0x5185], + ["8159",0x5190], + ["815A",0x519D], + ["815B",0x51A6], + ["815C",0x51A8], + ["815D",0x51A9], + ["815E",0x51C7], + ["815F",0x51D6], + ["8160",0x51DB], + ["8161",0x51EC], + ["8162",0x51FC], + ["8163",0x520B], + ["8164",0x5214], + ["8165",0x5215], + ["8166",0x5220], + ["8167",0x522B], + ["8168",0x5239], + ["8169",0x524F], + ["816A",0x5271], + ["816B",0x5290], + ["816C",0x5292], + ["816D",0x5294], + ["816E",0x529C], + ["816F",0x52AF], + ["8170",0x52B5], + ["8171",0x52D0], + ["8172",0x5300], + ["8173",0x5307], + ["8174",0x5324], + ["8175",0x5346], + ["8176",0x535F], + ["8177",0x5393], + ["8178",0x53B0], + ["8179",0x53DD], + ["817A",0x5423], + ["817B",0x5450], + ["817C",0x5451], + ["817D",0x548A], + ["817E",0x549D], + ["81A1",0x54A3], + ["81A2",0x54B4], + ["81A3",0x54D0], + ["81A4",0x5523], + ["81A5",0x553F], + ["81A6",0x554C], + ["81A7",0x5553], + ["81A8",0x555D], + ["81A9",0x556C], + ["81AA",0x559E], + ["81AB",0x55A9], + ["81AC",0x55EC], + ["81AD",0x55F5], + ["81AE",0x5623], + ["81AF",0x5650], + ["81B0",0x567C], + ["81B1",0x568A], + ["81B2",0x5694], + ["81B3",0x56A0], + ["81B4",0x56AF], + ["81B5",0x56D8], + ["81B6",0x5700], + ["81B7",0x5759], + ["81B8",0x5765], + ["81B9",0x577F], + ["81BA",0x5785], + ["81BB",0x5789], + ["81BC",0x57A1], + ["81BD",0x57AC], + ["81BE",0x57B4], + ["81BF",0x57C0], + ["81C0",0x57C8], + ["81C1",0x57D3], + ["81C2",0x57EF], + ["81C3",0x5844], + ["81C4",0x586C], + ["81C5",0x5892], + ["81C6",0x589A], + ["81C7",0x58B2], + ["81C8",0x58B8], + ["81C9",0x58E5], + ["81CA",0x58FB], + ["81CB",0x5902], + ["81CC",0x590B], + ["81CD",0x5910], + ["81CE",0x5918], + ["81CF",0x591B], + ["81D0",0x748C], + ["81D1",0x748D], + ["81D2",0x7499], + ["81D3",0x749B], + ["81D4",0x74A4], + ["81D5",0x74B4], + ["81D6",0x74B9], + ["81D7",0x74C8], + ["81D8",0x74CC], + ["81D9",0x74D0], + ["81DA",0x74D3], + ["81DB",0x7542], + ["81DC",0x7555], + ["81DD",0x756E], + ["81DE",0x758D], + ["81DF",0x759E], + ["81E0",0x75DC], + ["81E1",0x762C], + ["81E2",0x764F], + ["81E3",0x7651], + ["81E4",0x7673], + ["81E5",0x7674], + ["81E6",0x76A5], + ["81E7",0x76D9], + ["81E8",0x770E], + ["81E9",0x770F], + ["81EA",0x7758], + ["81EB",0x7772], + ["81EC",0x7777], + ["81ED",0x7778], + ["81EE",0x777A], + ["81EF",0x777B], + ["81F0",0x7798], + ["81F1",0x77AF], + ["81F2",0x77BE], + ["81F3",0x77C3], + ["81F4",0x77C5], + ["81F5",0x77CB], + ["81F6",0x77DD], + ["81F7",0x77E6], + ["81F8",0x77F4], + ["81F9",0x781E], + ["81FA",0x783D], + ["81FB",0x7842], + ["81FC",0x7844], + ["81FD",0x784B], + ["81FE",0x7851], + ["8240",0x5516], + ["8241",0x58F7], + ["8242",0x9834], + ["8243",0x845B], + ["8244",0x7114], + ["8245",0x8276], + ["8246",0x8956], + ["8247",0x9D2C], + ["8248",0x9D0E], + ["8249",0x8EAF], + ["824A",0x6062], + ["824B",0x6666], + ["824C",0x86CE], + ["824D",0x64B9], + ["824E",0x938C], + ["824F",0x565B], + ["8250",0x6F45], + ["8251",0x8ACC], + ["8252",0x7149], + ["8253",0x5DCC], + ["8254",0x8749], + ["8255",0x9A28], + ["8256",0x7BAA], + ["8257",0x8D0B], + ["8258",0x9957], + ["8259",0x5C2D], + ["825A",0x7E4B], + ["825B",0x981A], + ["825C",0x5026], + ["825D",0x6372], + ["825E",0x9E78], + ["825F",0x783F], + ["8260",0x9EB9], + ["8261",0x9EBA], + ["8262",0x8CCE], + ["8263",0x8B83], + ["8264",0xEF79], + ["8265",0x848B], + ["8266",0x91A4], + ["8267",0x7A63], + ["8268",0x64B0], + ["8269",0x5DFD], + ["826A",0x5E96], + ["826B",0x8061], + ["826C",0x6955], + ["826D",0x7AEA], + ["826E",0x7026], + ["826F",0x68BC], + ["8270",0x7977], + ["8271",0x6D9C], + ["8272",0x8FE9], + ["8273",0x7962], + ["8274",0x56A2], + ["8275",0x877F], + ["8276",0x5265], + ["8277",0x7984], + ["8278",0x6E8C], + ["8279",0x9197], + ["827A",0x7B86], + ["827B",0x982C], + ["827C",0x685D], + ["827D",0x4FAD], + ["827E",0x85AE], + ["82A1",0x7BED], + ["82A2",0x874B], + ["82A3",0x5036], + ["82A4",0x690D], + ["82A5",0x6B96], + ["82A6",0x614E], + ["82A7",0x5177], + ["82A8",0x771F], + ["82A9",0x5024], + ["82AA",0x7F6E], + ["82AB",0x76F4], + ["82AC",0x69D9], + ["82AD",0x60E3], + ["82AE",0x62F6], + ["82AF",0x545F], + ["82B0",0x9784], + ["82B1",0x564C], + ["82B2",0x50C5], + ["82B3",0x5618], + ["82B4",0x865E], + ["82B5",0x5932], + ["82B6",0x595B], + ["82B7",0x595D], + ["82B8",0x5963], + ["82B9",0x596C], + ["82BA",0x599B], + ["82BB",0x59D7], + ["82BC",0x59EB], + ["82BD",0x5A1A], + ["82BE",0x5AAA], + ["82BF",0x5AD0], + ["82C0",0x5AF1], + ["82C1",0x5B36], + ["82C2",0x5BC9], + ["82C3",0x5BF3], + ["82C4",0x5C13], + ["82C5",0x5C1C], + ["82C6",0x5C1E], + ["82C7",0x5C53], + ["82C8",0x5C99], + ["82C9",0x5C9C], + ["82CA",0x5CBA], + ["82CB",0x5CBB], + ["82CC",0x5CC1], + ["82CD",0x5CF5], + ["82CE",0x5CFA], + ["82CF",0x5D15], + ["82D0",0x5D18], + ["82D1",0x5D3E], + ["82D2",0x5D53], + ["82D3",0x5D5C], + ["82D4",0x5D6D], + ["82D5",0x5D73], + ["82D6",0x5D74], + ["82D7",0x5D8C], + ["82D8",0x5D90], + ["82D9",0x5DB9], + ["82DA",0x5DD0], + ["82DB",0x5DD3], + ["82DC",0x5E47], + ["82DD",0x5E64], + ["82DE",0x5ECF], + ["82DF",0x5ED0], + ["82E0",0x5EEA], + ["82E1",0x5EF0], + ["82E2",0x5F09], + ["82E3",0x5F0C], + ["82E4",0x5F11], + ["82E5",0x5F21], + ["82E6",0x5F34], + ["82E7",0x5F41], + ["82E8",0x5F45], + ["82E9",0x5F51], + ["82EA",0x5F5C], + ["82EB",0x5F66], + ["82EC",0x5F83], + ["82ED",0x5FF0], + ["82EE",0x604A], + ["82EF",0x6060], + ["82F0",0x608B], + ["82F1",0x60A6], + ["82F2",0x60DE], + ["82F3",0x6111], + ["82F4",0x6120], + ["82F5",0x6121], + ["82F6",0x613C], + ["82F7",0x613D], + ["82F8",0x6198], + ["82F9",0x61B7], + ["82FA",0x61F4], + ["82FB",0x6213], + ["82FC",0x621D], + ["82FD",0x621E], + ["82FE",0x6237], + ["8340",0x5E7A], + ["8341",0x6C10], + ["8342",0x53CE], + ["8343",0x4F2B], + ["8344",0x4F4E], + ["8345",0x5434], + ["8346",0x56F1], + ["8347",0x58EE], + ["8348",0x5939], + ["8349",0x5986], + ["834A",0x5C2C], + ["834B",0x51B3], + ["834C",0x51B2], + ["834D",0x707E], + ["834E",0x89C1], + ["834F",0x89D2], + ["8350",0x8D1D], + ["8351",0x8F66], + ["8352",0x4E9A], + ["8353",0x6765], + ["8354",0x4ED1], + ["8355",0x4E24], + ["8356",0x534F], + ["8357",0x5C4A], + ["8358",0x5188], + ["8359",0x5E95], + ["835A",0x62B5], + ["835B",0x4E1C], + ["835C",0x4E89], + ["835D",0x72B6], + ["835E",0x7C7C], + ["835F",0x7EA0], + ["8360",0x5367], + ["8361",0x8F67], + ["8362",0x90B8], + ["8363",0x957F], + ["8364",0x95E8], + ["8365",0x4FA0], + ["8366",0x4FA3], + ["8367",0x5156], + ["8368",0x5219], + ["8369",0x52B2], + ["836A",0x5374], + ["836B",0x5942], + ["836C",0x5E05], + ["836D",0x67E2], + ["836E",0x6C79], + ["836F",0x4E3A], + ["8370",0x7EA3], + ["8371",0x7EA2], + ["8372",0x7EAA], + ["8373",0x7EAB], + ["8374",0x7EA5], + ["8375",0x7EA6], + ["8376",0x7EA1], + ["8377",0x80DD], + ["8378",0x82CE], + ["8379",0x8BA1], + ["837A",0x8BA2], + ["837B",0x8BA3], + ["837C",0x8D1E], + ["837D",0x8D1F], + ["837E",0x519B], + ["83A1",0x8F68], + ["83A2",0x95E9], + ["83A3",0x97E6], + ["83A4",0x9875], + ["83A5",0x98CE], + ["83A6",0x98DE], + ["83A7",0x4FE9], + ["83A8",0x4EEC], + ["83A9",0x4F25], + ["83AA",0x4E2A], + ["83AB",0x4F26], + ["83AC",0x4ED3], + ["83AD",0x51BB], + ["83AE",0x521A], + ["83AF",0x5265], + ["83B0",0x5458], + ["83B1",0x5A31], + ["83B2",0x5B59], + ["83B3",0x5CE1], + ["83B4",0x5C9B], + ["83B5",0x5C98], + ["83B6",0x5E08], + ["83B7",0x5E93], + ["83B8",0x5F84], + ["83B9",0x631F], + ["83BA",0x65F6], + ["83BB",0x664B], + ["83BC",0x4E66], + ["83BD",0x6CFE], + ["83BE",0x6D43], + ["83BF",0x4E4C], + ["83C0",0x72ED], + ["83C1",0x72C8], + ["83C2",0x4EA9], + ["83C3",0x7825], + ["83C4",0x79EA], + ["83C5",0x7EBA], + ["83C6",0x7EB1], + ["83C7",0x7EB9], + ["83C8",0x7EAF], + ["83C9",0x7EBD], + ["83CA",0x7EB0], + ["83CB",0x7EA7], + ["83CC",0x7EAD], + ["83CD",0x7EB3], + ["83CE",0x7EB8], + ["83CF",0x7EB7], + ["83D0",0x80C1], + ["83D1",0x8109], + ["83D2",0x520D], + ["83D3",0x8BB0], + ["83D4",0x8BA6], + ["83D5",0x8BA8], + ["83D6",0x8BA7], + ["83D7",0x8BAA], + ["83D8",0x8BAF], + ["83D9",0x8BAD], + ["83DA",0x8BAB], + ["83DB",0x5C82], + ["83DC",0x8D22], + ["83DD",0x8D21], + ["83DE",0x8F69], + ["83DF",0x8F6B], + ["83E0",0x9489], + ["83E1",0x9488], + ["83E2",0x948A], + ["83E3",0x948B], + ["83E4",0x95EA], + ["83E5",0x9635], + ["83E6",0x9655], + ["83E7",0x9649], + ["83E8",0x9965], + ["83E9",0x9A6C], + ["83EA",0x9AA8], + ["83EB",0x4F2A], + ["83EC",0x4F1F], + ["83ED",0x4FA6], + ["83EE",0x4FA7], + ["83EF",0x52A1], + ["83F0",0x52A8], + ["83F1",0x533A], + ["83F2",0x53C2], + ["83F3",0x54D1], + ["83F4",0x95EE], + ["83F5",0x8854], + ["83F6",0x56FD], + ["83F7",0x575A], + ["83F8",0x57A9], + ["83F9",0x6267], + ["83FA",0x591F], + ["83FB",0x5A04], + ["83FC",0x5987], + ["83FD",0x4E13], + ["83FE",0x5C06], + ["8440",0x5C49], + ["8441",0x5CE5], + ["8442",0x5C97], + ["8443",0x5E26], + ["8444",0x5E10], + ["8445",0x5F20], + ["8446",0x5F3A], + ["8447",0x4ECE], + ["8448",0x5F95], + ["8449",0x51C4], + ["844A",0x6005], + ["844B",0x626B], + ["844C",0x6302], + ["844D",0x626A], + ["844E",0x62A1], + ["844F",0x6323], + ["8450",0x8D25], + ["8451",0x542F], + ["8452",0x659B], + ["8453",0x65A9], + ["8454",0x663C], + ["8455",0x52D6], + ["8456",0x5F03], + ["8457",0x6761], + ["8458",0x67AD], + ["8459",0x6740], + ["845A",0x6C22], + ["845B",0x51C9], + ["845C",0x6D45], + ["845D",0x6E0A], + ["845E",0x6CEA], + ["845F",0x6CA6], + ["8460",0x51C0], + ["8461",0x7275], + ["8462",0x72F0], + ["8463",0x73B0], + ["8464",0x4EA7], + ["8465",0x6BD5], + ["8466",0x5F02], + ["8467",0x4F17], + ["8468",0x7ECA], + ["8469",0x7EDF], + ["846A",0x7ECD], + ["846B",0x7ECB], + ["846C",0x7ECC], + ["846D",0x7EC6], + ["846E",0x7EC5], + ["846F",0x7EC4], + ["8470",0x7EC8], + ["8471",0x7EC1], + ["8472",0x7EC2], + ["8473",0x94B5], + ["8474",0x4E60], + ["8475",0x835A], + ["8476",0x830E], + ["8477",0x8392], + ["8478",0x5E84], + ["8479",0x82CB], + ["847A",0x5904], + ["847B",0x672F], + ["847C",0x886E], + ["847D",0x89C5], + ["847E",0x89C4], + ["84A1",0x8BBF], + ["84A2",0x8BB6], + ["84A3",0x8BC0], + ["84A4",0x8BB7], + ["84A5",0x8BB8], + ["84A6",0x8BBE], + ["84A7",0x8BBC], + ["84A8",0x8BB9], + ["84A9",0x8D29], + ["84AA",0x8D23], + ["84AB",0x8D2F], + ["84AC",0x8D27], + ["84AD",0x8D2A], + ["84AE",0x8D2B], + ["84AF",0x8F6D], + ["84B0",0x8F6F], + ["84B1",0x8FD9], + ["84B2",0x8FDE], + ["84B3",0x8FF3], + ["84B4",0x9497], + ["84B5",0x9493], + ["84B6",0x948F], + ["84B7",0x9492], + ["84B8",0x95ED], + ["84B9",0x9648], + ["84BA",0x9646], + ["84BB",0x9634], + ["84BC",0x9876], + ["84BD",0x9877], + ["84BE",0x9C7C], + ["84BF",0x9E1F], + ["84C0",0x5364], + ["84C1",0x9EA6], + ["84C2",0x5907], + ["84C3",0x4F27], + ["84C4",0x4F1E], + ["84C5",0x51EF], + ["84C6",0x5240], + ["84C7",0x521B], + ["84C8",0x52B3], + ["84C9",0x52CB], + ["84CA",0x4E27], + ["84CB",0x5355], + ["84CC",0x54DF], + ["84CD",0x5524], + ["84CE",0x4E54], + ["84CF",0x56F4], + ["84D0",0x5C27], + ["84D1",0x573A], + ["84D2",0x62A5], + ["84D3",0x57DA], + ["84D4",0x58F6], + ["84D5",0x5A32], + ["84D6",0x5BFB], + ["84D7",0x5C9A], + ["84D8",0x5E27], + ["84D9",0x5E0F], + ["84DA",0x5395], + ["84DB",0x53A9], + ["84DC",0x6076], + ["84DD",0x95F7], + ["84DE",0x60EC], + ["84DF",0x607B], + ["84E0",0x607C], + ["84E1",0x62E3], + ["84E2",0x6325], + ["84E3",0x6362], + ["84E4",0x626C], + ["84E5",0x67A3], + ["84E6",0x680B], + ["84E7",0x6808], + ["84E8",0x94A6], + ["84E9",0x6B8B], + ["84EA",0x58F3], + ["84EB",0x6C2F], + ["84EC",0x6C29], + ["84ED",0x6D8C], + ["84EE",0x51D1], + ["84EF",0x6E6E], + ["84F0",0x6DA1], + ["84F1",0x6C64], + ["84F2",0x6D4B], + ["84F3",0x6D51], + ["84F4",0x6DA3], + ["84F5",0x65E0], + ["84F6",0x72B9], + ["84F7",0x82CF], + ["84F8",0x753B], + ["84F9",0x75C9], + ["84FA",0x53D1], + ["84FB",0x76D7], + ["84FC",0x781A], + ["84FD",0x79C6], + ["84FE",0x7A97], + ["8540",0x7B14], + ["8541",0x7B0B], + ["8542",0x7EDE], + ["8543",0x7ED3], + ["8544",0x7ED2], + ["8545",0x7EDD], + ["8546",0x4E1D], + ["8547",0x7EDC], + ["8548",0x7ED9], + ["8549",0x7EDA], + ["854A",0x7ED6], + ["854B",0x7EDB], + ["854C",0x8083], + ["854D",0x80BE], + ["854E",0x80C0], + ["854F",0x534E], + ["8550",0x83B1], + ["8551",0x82CC], + ["8552",0x865A], + ["8553",0x89C6], + ["8554",0x8BC4], + ["8555",0x8BCD], + ["8556",0x8BC1], + ["8557",0x8BC2], + ["8558",0x8BCF], + ["8559",0x8BC5], + ["855A",0x8BC8], + ["855B",0x8BCB], + ["855C",0x8BC9], + ["855D",0x8BCA], + ["855E",0x8BC3], + ["855F",0x8D2E], + ["8560",0x8D34], + ["8561",0x8D30], + ["8562",0x8D3B], + ["8563",0x8D32], + ["8564",0x8D39], + ["8565",0x8D3A], + ["8566",0x8D35], + ["8567",0x4E70], + ["8568",0x8D2C], + ["8569",0x8D38], + ["856A",0x8D37], + ["856B",0x8F72], + ["856C",0x8F74], + ["856D",0x8F76], + ["856E",0x8FDB], + ["856F",0x90AE], + ["8570",0x4E61], + ["8571",0x949E], + ["8572",0x94AE], + ["8573",0x9499], + ["8574",0x94A0], + ["8575",0x94A7], + ["8576",0x949D], + ["8577",0x94A4], + ["8578",0x94A3], + ["8579",0x95F5], + ["857A",0x95F0], + ["857B",0x5F00], + ["857C",0x95F2], + ["857D",0x95F4], + ["857E",0x95F3], + ["85A1",0x961F], + ["85A2",0x9636], + ["85A3",0x9633], + ["85A4",0x97E7], + ["85A5",0x9879], + ["85A6",0x987A], + ["85A7",0x987B], + ["85A8",0x996A], + ["85A9",0x996D], + ["85AA",0x9968], + ["85AB",0x996E], + ["85AC",0x996C], + ["85AD",0x51AF], + ["85AE",0x9A6D], + ["85AF",0x4E71], + ["85B0",0x503A], + ["85B1",0x4F20], + ["85B2",0x4EC5], + ["85B3",0x503E], + ["85B4",0x4F24], + ["85B5",0x506C], + ["85B6",0x94F2], + ["85B7",0x52BF], + ["85B8",0x79EF], + ["85B9",0x6C47], + ["85BA",0x5417], + ["85BB",0x545C], + ["85BC",0x545B], + ["85BD",0x56ED], + ["85BE",0x5706], + ["85BF",0x6D82], + ["85C0",0x5757], + ["85C1",0x575E], + ["85C2",0x57D8], + ["85C3",0x8314], + ["85C4",0x5965], + ["85C5",0x5988], + ["85C6",0x7231], + ["85C7",0x5FFE], + ["85C8",0x6006], + ["85C9",0x607A], + ["85CA",0x635F], + ["85CB",0x62A2], + ["85CC",0x6363], + ["85CD",0x6784], + ["85CE",0x6656], + ["85CF",0x6655], + ["85D0",0x65F8], + ["85D1",0x4F1A], + ["85D2",0x4E1A], + ["85D3",0x6781], + ["85D4",0x6768], + ["85D5",0x6862], + ["85D6",0x67AB], + ["85D7",0x5C81], + ["85D8",0x6C9F], + ["85D9",0x706D], + ["85DA",0x6E7F], + ["85DB",0x6ED1], + ["85DC",0x6CA7], + ["85DD",0x70E6], + ["85DE",0x70BC], + ["85DF",0x7080], + ["85E0",0x7115], + ["85E1",0x7237], + ["85E2",0x72EE], + ["85E3",0x733E], + ["85E4",0x73F2], + ["85E5",0x5F53], + ["85E6",0x76CF], + ["85E7",0x7750], + ["85E8",0x7741], + ["85E9",0x96CE], + ["85EA",0x788C], + ["85EB",0x8282], + ["85EC",0x7B15], + ["85ED",0x7CA4], + ["85EE",0x7ECF], + ["85EF",0x7EE2], + ["85F0",0x7ED1], + ["85F1",0x7EE5], + ["85F2",0x7EE6], + ["85F3",0x4E49], + ["85F4",0x7FA1], + ["85F5",0x5723], + ["85F6",0x80A0], + ["85F7",0x811A], + ["85F8",0x80BF], + ["85F9",0x8111], + ["85FA",0x8364], + ["85FB",0x82C7], + ["85FC",0x53F6], + ["85FD",0x83B4], + ["85FE",0x865E], + ["8640",0x864F], + ["8641",0x53F7], + ["8642",0x8708], + ["8643",0x86AC], + ["8644",0x8865], + ["8645",0x88C5], + ["8646",0x8BE7], + ["8647",0x8BE5], + ["8648",0x8BE6], + ["8649",0x8BD5], + ["864A",0x8BD7], + ["864B",0x8BD8], + ["864C",0x8BD9], + ["864D",0x8BE3], + ["864E",0x8BDA], + ["864F",0x8BDD], + ["8650",0x8BDB], + ["8651",0x8BE1], + ["8652",0x8BE2], + ["8653",0x8BE0], + ["8654",0x8BDF], + ["8655",0x8D3C], + ["8656",0x8D44], + ["8657",0x8D3E], + ["8658",0x8D3F], + ["8659",0x8D40], + ["865A",0x8D41], + ["865B",0x8D42], + ["865C",0x8D45], + ["865D",0x8F83], + ["865E",0x8F7D], + ["865F",0x8F7C], + ["8660",0x8F7E], + ["8661",0x519C], + ["8662",0x8FD0], + ["8663",0x8FBE], + ["8664",0x8FDD], + ["8665",0x8FC7], + ["8666",0x90B9], + ["8667",0x94B4], + ["8668",0x94B3], + ["8669",0x94B9], + ["866A",0x94B8], + ["866B",0x94BE], + ["866C",0x94C0], + ["866D",0x94C5], + ["866E",0x94A9], + ["866F",0x94C2], + ["8670",0x94C3], + ["8671",0x94C9], + ["8672",0x94CB], + ["8673",0x949C], + ["8674",0x94CD], + ["8675",0x94BF], + ["8676",0x94C6], + ["8677",0x95F8], + ["8678",0x9668], + ["8679",0x96BD], + ["867A",0x7535], + ["867B",0x9884], + ["867C",0x987D], + ["867D",0x987F], + ["867E",0x987C], + ["86A1",0x9881], + ["86A2",0x9882], + ["86A3",0x9972], + ["86A4",0x9974], + ["86A5",0x9971], + ["86A6",0x9970], + ["86A7",0x9A70], + ["86A8",0x9A6E], + ["86A9",0x9A6F], + ["86AA",0x9E20], + ["86AB",0x4FA5], + ["86AC",0x4FA8], + ["86AD",0x532E], + ["86AE",0x538C], + ["86AF",0x5C1D], + ["86B0",0x5455], + ["86B1",0x53F9], + ["86B2",0x55BD], + ["86B3",0x5567], + ["86B4",0x54D4], + ["86B5",0x56E2], + ["86B6",0x56FE], + ["86B7",0x5C18], + ["86B8",0x57AB], + ["86B9",0x5811], + ["86BA",0x5BFF], + ["86BB",0x68A6], + ["86BC",0x593A], + ["86BD",0x5941], + ["86BE",0x59AA], + ["86BF",0x5B9E], + ["86C0",0x5BDD], + ["86C1",0x5BF9], + ["86C2",0x5C61], + ["86C3",0x5D2D], + ["86C4",0x5C96], + ["86C5",0x5E01], + ["86C6",0x5E3C], + ["86C7",0x5F7B], + ["86C8",0x6001], + ["86C9",0x60EF], + ["86CA",0x6078], + ["86CB",0x60ED], + ["86CC",0x60E8], + ["86CD",0x6402], + ["86CE",0x63B4], + ["86CF",0x63BA], + ["86D0",0x7545], + ["86D1",0x8363], + ["86D2",0x67AA], + ["86D3",0x6EDA], + ["86D4",0x6E0D], + ["86D5",0x6C49], + ["86D6",0x6EE1], + ["86D7",0x6EDE], + ["86D8",0x6E10], + ["86D9",0x6DA8], + ["86DA",0x6D9F], + ["86DB",0x6CAA], + ["86DC",0x6E14], + ["86DD",0x6E17], + ["86DE",0x6DA4], + ["86DF",0x8367], + ["86E0",0x5C14], + ["86E1",0x8366], + ["86E2",0x72F1], + ["86E3",0x7410], + ["86E4",0x739B], + ["86E5",0x759F], + ["86E6",0x75A1], + ["86E7",0x75AF], + ["86E8",0x75EA], + ["86E9",0x5C3D], + ["86EA",0x76D1], + ["86EB",0x7855], + ["86EC",0x796F], + ["86ED",0x7978], + ["86EE",0x79CD], + ["86EF",0x79F0], + ["86F0",0x6D3C], + ["86F1",0x7A9D], + ["86F2",0x7B3A], + ["86F3",0x7B5D], + ["86F4",0x7EFD], + ["86F5",0x7EFE], + ["86F6",0x7EFC], + ["86F7",0x7EF0], + ["86F8",0x7EEB], + ["86F9",0x7EFF], + ["86FA",0x7D27], + ["86FB",0x7F00], + ["86FC",0x7EB2], + ["86FD",0x7EEE], + ["86FE",0x7EF8], + ["8740",0x7EF5], + ["8741",0x7EB6], + ["8742",0x7EF4], + ["8743",0x7EEA], + ["8744",0x7F01], + ["8745",0x7EF6], + ["8746",0x7F5A], + ["8747",0x95FB], + ["8748",0x8385], + ["8749",0x76D6], + ["874A",0x836A], + ["874B",0x82CD], + ["874C",0x8680], + ["874D",0x8BF5], + ["874E",0x8BED], + ["874F",0x8BEC], + ["8750",0x8BA4], + ["8751",0x8BEB], + ["8752",0x8BEF], + ["8753",0x8BF4], + ["8754",0x8BF0], + ["8755",0x8BF2], + ["8756",0x8BF1], + ["8757",0x8BF3], + ["8758",0x8BEE], + ["8759",0x5BBE], + ["875A",0x8D48], + ["875B",0x8D4A], + ["875C",0x8D75], + ["875D",0x8D76], + ["875E",0x8F85], + ["875F",0x8F84], + ["8760",0x8F7B], + ["8761",0x8FDC], + ["8762",0x900A], + ["8763",0x9012], + ["8764",0x94F0], + ["8765",0x94F6], + ["8766",0x94DC], + ["8767",0x94ED], + ["8768",0x94E2], + ["8769",0x94EC], + ["876A",0x94E8], + ["876B",0x94F5], + ["876C",0x94E3], + ["876D",0x9602], + ["876E",0x95FA], + ["876F",0x95FD], + ["8770",0x9601], + ["8771",0x9600], + ["8772",0x9645], + ["8773",0x9887], + ["8774",0x9886], + ["8775",0x98D2], + ["8776",0x997A], + ["8777",0x997C], + ["8778",0x9975], + ["8779",0x9977], + ["877A",0x9A73], + ["877B",0x80AE], + ["877C",0x9AB0], + ["877D",0x9E23], + ["877E",0x9E22], + ["87A1",0x51E4], + ["87A2",0x9F50], + ["87A3",0x4EBF], + ["87A4",0x4EEA], + ["87A5",0x4EF7], + ["87A6",0x4FAC], + ["87A7",0x4FA9], + ["87A8",0x4FED], + ["87A9",0x5267], + ["87AA",0x5218], + ["87AB",0x5251], + ["87AC",0x523D], + ["87AD",0x5389], + ["87AE",0x5520], + ["87AF",0x5634], + ["87B0",0x54D7], + ["87B1",0x5618], + ["87B2",0x55B7], + ["87B3",0x5578], + ["87B4",0x53FD], + ["87B5",0x589F], + ["87B6",0x575F], + ["87B7",0x5760], + ["87B8",0x5815], + ["87B9",0x5A34], + ["87BA",0x5A75], + ["87BB",0x59A9], + ["87BC",0x5A07], + ["87BD",0x5A06], + ["87BE",0x5BBD], + ["87BF",0x5BA1], + ["87C0",0x5199], + ["87C1",0x5C42], + ["87C2",0x5D94], + ["87C3",0x5E1C], + ["87C4",0x5E9F], + ["87C5",0x53A8], + ["87C6",0x5E99], + ["87C7",0x53AE], + ["87C8",0x5E7F], + ["87C9",0x5F39], + ["87CA",0x5E86], + ["87CB",0x8651], + ["87CC",0x5FE7], + ["87CD",0x6002], + ["87CE",0x60AF], + ["87CF",0x60EE], + ["87D0",0x6124], + ["87D1",0x6003], + ["87D2",0x631A], + ["87D3",0x6251], + ["87D4",0x635E], + ["87D5",0x62E8], + ["87D6",0x6320], + ["87D7",0x629A], + ["87D8",0x63B8], + ["87D9",0x63FF], + ["87DA",0x654C], + ["87DB",0x6570], + ["87DC",0x6682], + ["87DD",0x6635], + ["87DE",0x6837], + ["87DF",0x6869], + ["87E0",0x67A2], + ["87E1",0x6807], + ["87E2",0x697C], + ["87E3",0x6868], + ["87E4",0x4E50], + ["87E5",0x679E], + ["87E6",0x6B27], + ["87E7",0x6B87], + ["87E8",0x6BB4], + ["87E9",0x6D46], + ["87EA",0x6CFC], + ["87EB",0x6D01], + ["87EC",0x6D47], + ["87ED",0x6E83], + ["87EE",0x6DA6], + ["87EF",0x6DA7], + ["87F0",0x6D54], + ["87F1",0x70ED], + ["87F2",0x5956], + ["87F3",0x83B9], + ["87F4",0x75AE], + ["87F5",0x7691], + ["87F6",0x76B1], + ["87F7",0x76D8], + ["87F8",0x786E], + ["87F9",0x7801], + ["87FA",0x7A91], + ["87FB",0x7A77], + ["87FC",0x7F14], + ["87FD",0x7EC3], + ["87FE",0x7EAC], + ["8840",0x7F04], + ["8841",0x7F05], + ["8842",0x7F09], + ["8843",0x7F16], + ["8844",0x7F18], + ["8845",0x7EBF], + ["8846",0x7F0E], + ["8847",0x7F13], + ["8848",0x7F0D], + ["8849",0x7F02], + ["884A",0x7F08], + ["884B",0x7F07], + ["884C",0x9A82], + ["884D",0x7F62], + ["884E",0x80F6], + ["884F",0x80A4], + ["8850",0x83B2], + ["8851",0x836B], + ["8852",0x848B], + ["8853",0x867E], + ["8854",0x8717], + ["8855",0x536B], + ["8856",0x8C0A], + ["8857",0x8C05], + ["8858",0x8C08], + ["8859",0x8C06], + ["885A",0x8BDE], + ["885B",0x8BF7], + ["885C",0x8BF8], + ["885D",0x8BFE], + ["885E",0x8BFF], + ["885F",0x8C04], + ["8860",0x8C03], + ["8861",0x8C01], + ["8862",0x8BBA], + ["8863",0x8BE4], + ["8864",0x8C07], + ["8865",0x8BFD], + ["8866",0x8C00], + ["8867",0x7AD6], + ["8868",0x8D54], + ["8869",0x8D4F], + ["886A",0x8D4B], + ["886B",0x8D31], + ["886C",0x8D26], + ["886D",0x8D4C], + ["886E",0x8D24], + ["886F",0x5356], + ["8870",0x8D50], + ["8871",0x8D28], + ["8872",0x8D53], + ["8873",0x8DF5], + ["8874",0x8F89], + ["8875",0x8F86], + ["8876",0x8F8D], + ["8877",0x8F88], + ["8878",0x8F87], + ["8879",0x8F6E], + ["887A",0x8F8E], + ["887B",0x8F8B], + ["887C",0x8F8A], + ["887D",0x9002], + ["887E",0x8FC1], + ["88A1",0x90BB], + ["88A2",0x90D1], + ["88A3",0x9093], + ["88A4",0x950C], + ["88A5",0x9511], + ["88A6",0x9500], + ["88A7",0x94FA], + ["88A8",0x94D0], + ["88A9",0x9504], + ["88AA",0x94DD], + ["88AB",0x9510], + ["88AC",0x9509], + ["88AD",0x950B], + ["88AE",0x94A1], + ["88AF",0x9502], + ["88B0",0x95FE], + ["88B1",0x9605], + ["88B2",0x5DE9], + ["88B3",0x9889], + ["88B4",0x988C], + ["88B5",0x517B], + ["88B6",0x997F], + ["88B7",0x9981], + ["88B8",0x9A7C], + ["88B9",0x9A7B], + ["88BA",0x9A77], + ["88BB",0x9A76], + ["88BC",0x9A7D], + ["88BD",0x9A7E], + ["88BE",0x9A79], + ["88BF",0x9A78], + ["88C0",0x9AB7], + ["88C1",0x95F9], + ["88C2",0x9C7F], + ["88C3",0x9C81], + ["88C4",0x9E29], + ["88C5",0x9E26], + ["88C6",0x9EB8], + ["88C7",0x9F7F], + ["88C8",0x4FE6], + ["88C9",0x50A7], + ["88CA",0x4FAA], + ["88CB",0x5E42], + ["88CC",0x5242], + ["88CD",0x5428], + ["88CE",0x54DD], + ["88CF",0x55F3], + ["88D0",0x57A6], + ["88D1",0x575B], + ["88D2",0x594B], + ["88D3",0x8885], + ["88D4",0x5B66], + ["88D5",0x5BFC], + ["88D6",0x5BAA], + ["88D7",0x51ED], + ["88D8",0x60EB], + ["88D9",0x61D4], + ["88DA",0x5FC6], + ["88DB",0x6218], + ["88DC",0x62E5], + ["88DD",0x6321], + ["88DE",0x631E], + ["88DF",0x636E], + ["88E0",0x63B3], + ["88E1",0x62E9], + ["88E2",0x6361], + ["88E3",0x62C5], + ["88E4",0x631D], + ["88E5",0x5386], + ["88E6",0x6653], + ["88E7",0x6654], + ["88E8",0x6619], + ["88E9",0x6866], + ["88EA",0x6A2A], + ["88EB",0x6811], + ["88EC",0x692D], + ["88ED",0x6865], + ["88EE",0x673A], + ["88EF",0x6861], + ["88F0",0x6DC0], + ["88F1",0x6D53], + ["88F2",0x6CFD], + ["88F3",0x6D4A], + ["88F4",0x6CA3], + ["88F5",0x6FA6], + ["88F6",0x6E11], + ["88F7",0x70BD], + ["88F8",0x70E7], + ["88F9",0x706F], + ["88FA",0x70EB], + ["88FB",0x7116], + ["88FC",0x72EC], + ["88FD",0x7391], + ["88FE",0x74EF], + ["8940",0x7618], + ["8941",0x5362], + ["8942",0x7792], + ["8943",0x7816], + ["8944",0x789B], + ["8945",0x79EF], + ["8946",0x9896], + ["8947",0x7A23], + ["8948",0x7AA5], + ["8949",0x7B03], + ["894A",0x7B5B], + ["894B",0x7F22], + ["894C",0x7F23], + ["894D",0x8426], + ["894E",0x7F1A], + ["894F",0x53BF], + ["8950",0x7F1F], + ["8951",0x7F1C], + ["8952",0x7F19], + ["8953",0x7EC9], + ["8954",0x817B], + ["8955",0x5174], + ["8956",0x8231], + ["8957",0x8361], + ["8958",0x8427], + ["8959",0x829C], + ["895A",0x8682], + ["895B",0x8424], + ["895C",0x88E4], + ["895D",0x4EB2], + ["895E",0x89CE], + ["895F",0x8C1B], + ["8960",0x8C1A], + ["8961",0x8C0F], + ["8962",0x8BB3], + ["8963",0x8C0B], + ["8964",0x8C0D], + ["8965",0x8C10], + ["8966",0x8C18], + ["8967",0x8BFA], + ["8968",0x8C12], + ["8969",0x8C13], + ["896A",0x8BBD], + ["896B",0x8C15], + ["896C",0x8C19], + ["896D",0x8C0C], + ["896E",0x8C16], + ["896F",0x8D56], + ["8970",0x8F90], + ["8971",0x8F91], + ["8972",0x8F93], + ["8973",0x8F8F], + ["8974",0x529E], + ["8975",0x9009], + ["8976",0x8FDF], + ["8977",0x8FBD], + ["8978",0x9057], + ["8979",0x90BA], + ["897A",0x952D], + ["897B",0x952F], + ["897C",0x9530], + ["897D",0x9519], + ["897E",0x94B1], + ["89A1",0x94A2], + ["89A2",0x9521], + ["89A3",0x5F55], + ["89A4",0x94EE], + ["89A5",0x9525], + ["89A6",0x9526], + ["89A7",0x951F], + ["89A8",0x9522], + ["89A9",0x9531], + ["89AA",0x960E], + ["89AB",0x968F], + ["89AC",0x9669], + ["89AD",0x9759], + ["89AE",0x817C], + ["89AF",0x988A], + ["89B0",0x9888], + ["89B1",0x9891], + ["89B2",0x9894], + ["89B3",0x5934], + ["89B4",0x9893], + ["89B5",0x9890], + ["89B6",0x9986], + ["89B7",0x996F], + ["89B8",0x9984], + ["89B9",0x9985], + ["89BA",0x9A87], + ["89BB",0x9A88], + ["89BC",0x9A86], + ["89BD",0x9AB8], + ["89BE",0x9ABC], + ["89BF",0x9C8D], + ["89C0",0x9E35], + ["89C1",0x9E2A], + ["89C2",0x9E2F], + ["89C3",0x9E2D], + ["89C4",0x9E33], + ["89C5",0x9F99], + ["89C6",0x9F9F], + ["89C7",0x4F18], + ["89C8",0x507F], + ["89C9",0x50A8], + ["89CA",0x52B1], + ["89CB",0x549B], + ["89CC",0x5413], + ["89CD",0x538B], + ["89CE",0x57D9], + ["89CF",0x5A74], + ["89D0",0x5AD4], + ["89D1",0x5B37], + ["89D2",0x5C34], + ["89D3",0x5C66], + ["89D4",0x5C7F], + ["89D5",0x5D58], + ["89D6",0x5E2E], + ["89D7",0x5F25], + ["89D8",0x5E94], + ["89D9",0x6073], + ["89DA",0x620F], + ["89DB",0x51FB], + ["89DC",0x6324], + ["89DD",0x62E7], + ["89DE",0x62DF], + ["89DF",0x6401], + ["89E0",0x655B], + ["89E1",0x6BD9], + ["89E2",0x66A7], + ["89E3",0x6863], + ["89E4",0x68C0], + ["89E5",0x6867], + ["89E6",0x6809], + ["89E7",0x6A2F], + ["89E8",0x6B93], + ["89E9",0x6BE1], + ["89EA",0x6CDE], + ["89EB",0x6EE8], + ["89EC",0x6D4E], + ["89ED",0x6D9B], + ["89EE",0x6EE5], + ["89EF",0x6DA9], + ["89F0",0x6F4D], + ["89F1",0x8425], + ["89F2",0x707F], + ["89F3",0x70DB], + ["89F4",0x70E9], + ["89F5",0x5899], + ["89F6",0x72DE], + ["89F7",0x83B7], + ["89F8",0x73AF], + ["89F9",0x7477], + ["89FA",0x75E8], + ["89FB",0x7597], + ["89FC",0x77EB], + ["89FD",0x78FA], + ["89FE",0x77F6], + ["8A40",0x7BD3], + ["8A41",0x7CAA], + ["8A42",0x9546], + ["8A43",0x7CC1], + ["8A44",0x7F29], + ["8A45",0x7EE9], + ["8A46",0x7F2A], + ["8A47",0x7F15], + ["8A48",0x7F27], + ["8A49",0x7EF7], + ["8A4A",0x7F1D], + ["8A4B",0x603B], + ["8A4C",0x7EB5], + ["8A4D",0x7F2B], + ["8A4E",0x7EA4], + ["8A4F",0x7F25], + ["8A50",0x7E66], + ["8A51",0x7F26], + ["8A52",0x58F0], + ["8A53",0x806A], + ["8A54",0x8054], + ["8A55",0x8038], + ["8A56",0x8113], + ["8A57",0x80C6], + ["8A58",0x8138], + ["8A59",0x810D], + ["8A5A",0x4E34], + ["8A5B",0x4E3E], + ["8A5C",0x8270], + ["8A5D",0x8537], + ["8A5E",0x84DF], + ["8A5F",0x4E8F], + ["8A60",0x877C], + ["8A61",0x8748], + ["8A62",0x4EB5], + ["8A63",0x891B], + ["8A64",0x89CA], + ["8A65",0x8C1C], + ["8A66",0x8C24], + ["8A67",0x8C26], + ["8A68",0x8BB2], + ["8A69",0x8C0E], + ["8A6A",0x8C23], + ["8A6B",0x8C22], + ["8A6C",0x8A8A], + ["8A6D",0x8C27], + ["8A6E",0x8D5A], + ["8A6F",0x8D5B], + ["8A70",0x8D2D], + ["8A71",0x8D59], + ["8A72",0x8D8B], + ["8A73",0x8F96], + ["8A74",0x8F97], + ["8A75",0x6BC2], + ["8A76",0x8F95], + ["8A77",0x8206], + ["8A78",0x8FD8], + ["8A79",0x8FC8], + ["8A7A",0x915D], + ["8A7B",0x9540], + ["8A7C",0x9541], + ["8A7D",0x951A], + ["8A7E",0x952E], + ["8AA1",0x9532], + ["8AA2",0x9505], + ["8AA3",0x9524], + ["8AA4",0x953A], + ["8AA5",0x9539], + ["8AA6",0x953B], + ["8AA7",0x953E], + ["8AA8",0x9537], + ["8AA9",0x9614], + ["8AAA",0x9615], + ["8AAB",0x9611], + ["8AAC",0x95F1], + ["8AAD",0x9690], + ["8AAE",0x96B6], + ["8AAF",0x867D], + ["8AB0",0x97E9], + ["8AB1",0x9897], + ["8AB2",0x98D3], + ["8AB3",0x9A8B], + ["8AB4",0x9A8F], + ["8AB5",0x9C9C], + ["8AB6",0x9C9B], + ["8AB7",0x9C94], + ["8AB8",0x9C91], + ["8AB9",0x9E3F], + ["8ABA",0x9E3D], + ["8ABB",0x70B9], + ["8ABC",0x658B], + ["8ABD",0x4E1B], + ["8ABE",0x565C], + ["8ABF",0x5739], + ["8AC0",0x5792], + ["8AC1",0x5A76], + ["8AC2",0x61D1], + ["8AC3",0x6269], + ["8AC4",0x63B7], + ["8AC5",0x6270], + ["8AC6",0x64B5], + ["8AC7",0x6446], + ["8AC8",0x64DE], + ["8AC9",0x64B7], + ["8ACA",0x65AD], + ["8ACB",0x69DF], + ["8ACC",0x67DC], + ["8ACD",0x69DB], + ["8ACE",0x67E0], + ["8ACF",0x6B24], + ["8AD0",0x5F52], + ["8AD1",0x6BA1], + ["8AD2",0x6CFB], + ["8AD3",0x6E16], + ["8AD4",0x6EE4], + ["8AD5",0x6E0E], + ["8AD6",0x6E85], + ["8AD7",0x6D4F], + ["8AD8",0x70EC], + ["8AD9",0x7118], + ["8ADA",0x72B7], + ["8ADB",0x730E], + ["8ADC",0x74EE], + ["8ADD",0x75A0], + ["8ADE",0x7751], + ["8ADF",0x7840], + ["8AE0",0x793C], + ["8AE1",0x7A51], + ["8AE2",0x79FD], + ["8AE3",0x7A9C], + ["8AE4",0x7A8D], + ["8AE5",0x7BAB], + ["8AE6",0x7C27], + ["8AE7",0x7BAA], + ["8AE8",0x7BD1], + ["8AE9",0x7B80], + ["8AEA",0x7CAE], + ["8AEB",0x7EC7], + ["8AEC",0x7F2E], + ["8AED",0x7ED5], + ["8AEE",0x7F2D], + ["8AEF",0x7EE3], + ["8AF0",0x7F2F], + ["8AF1",0x7FD8], + ["8AF2",0x804C], + ["8AF3",0x8042], + ["8AF4",0x8110], + ["8AF5",0x8191], + ["8AF6",0x65E7], + ["8AF7",0x8428], + ["8AF8",0x84DD], + ["8AF9",0x8360], + ["8AFA",0x86F2], + ["8AFB",0x8749], + ["8AFC",0x89D0], + ["8AFD",0x89DE], + ["8AFE",0x8C1F], + ["8B40",0x8C28], + ["8B41",0x8C2C], + ["8B42",0x8C2A], + ["8B43",0x8D58], + ["8B44",0x8E52], + ["8B45",0x8FF9], + ["8B46",0x8DF8], + ["8B47",0x8EAF], + ["8B48",0x8F6C], + ["8B49",0x8F99], + ["8B4A",0x8FE9], + ["8B4B",0x533B], + ["8B4C",0x9171], + ["8B4D",0x9551], + ["8B4E",0x9501], + ["8B4F",0x94A8], + ["8B50",0x954D], + ["8B51",0x9547], + ["8B52",0x9550], + ["8B53",0x9552], + ["8B54",0x9549], + ["8B55",0x9616], + ["8B56",0x95EF], + ["8B57",0x9617], + ["8B58",0x9619], + ["8B59",0x6742], + ["8B5A",0x53CC], + ["8B5B",0x96CF], + ["8B5C",0x9E21], + ["8B5D",0x989D], + ["8B5E",0x989C], + ["8B5F",0x9898], + ["8B60",0x989A], + ["8B61",0x989B], + ["8B62",0x998F], + ["8B63",0x998A], + ["8B64",0x9988], + ["8B65",0x9A91], + ["8B66",0x9AC1], + ["8B67",0x9CA8], + ["8B68",0x9CA4], + ["8B69",0x9CAB], + ["8B6A",0x9CA7], + ["8B6B",0x9E43], + ["8B6C",0x9E45], + ["8B6D",0x9E44], + ["8B6E",0x5784], + ["8B6F",0x575C], + ["8B70",0x5BA0], + ["8B71",0x5E9E], + ["8B72",0x5E90], + ["8B73",0x60E9], + ["8B74",0x6000], + ["8B75",0x61D2], + ["8B76",0x62E2], + ["8B77",0x65F7], + ["8B78",0x6A71], + ["8B79",0x691F], + ["8B7A",0x6988], + ["8B7B",0x6A79], + ["8B7C",0x6F47], + ["8B7D",0x6FD1], + ["8B7E",0x6CA5], + ["8BA1",0x6FD2], + ["8BA2",0x6CF8], + ["8BA3",0x70C1], + ["8BA4",0x724D], + ["8BA5",0x728A], + ["8BA6",0x517D], + ["8BA7",0x736D], + ["8BA8",0x73BA], + ["8BA9",0x743C], + ["8BAA",0x7574], + ["8BAB",0x762A], + ["8BAC",0x788D], + ["8BAD",0x7977], + ["8BAE",0x7A33], + ["8BAF",0x7B7E], + ["8BB0",0x8327], + ["8BB1",0x7ECE], + ["8BB2",0x7EF3], + ["8BB3",0x7ED8], + ["8BB4",0x7F57], + ["8BB5",0x7F34], + ["8BB6",0x81BB], + ["8BB7",0x827A], + ["8BB8",0x85AE], + ["8BB9",0x836F], + ["8BBA",0x8681], + ["8BBB",0x8747], + ["8BBC",0x88C6], + ["8BBD",0x8884], + ["8BBE",0x8C31], + ["8BBF",0x8BC6], + ["8BC0",0x8C2D], + ["8BC1",0x8C32], + ["8BC2",0x8BA5], + ["8BC3",0x8C2F], + ["8BC4",0x8D60], + ["8BC5",0x8D5E], + ["8BC6",0x8DF7], + ["8BC7",0x8F9A], + ["8BC8",0x8F7F], + ["8BC9",0x8F9E], + ["8BCA",0x8FB9], + ["8BCB",0x955C], + ["8BCC",0x955D], + ["8BCD",0x955E], + ["8BCE",0x94FE], + ["8BCF",0x9557], + ["8BD0",0x9558], + ["8BD1",0x9556], + ["8BD2",0x9559], + ["8BD3",0x9535], + ["8BD4",0x9542], + ["8BD5",0x94FF], + ["8BD6",0x933E], + ["8BD7",0x5173], + ["8BD8",0x9647], + ["8BD9",0x96BE], + ["8BDA",0x96FE], + ["8BDB",0x97EC], + ["8BDC",0x97F5], + ["8BDD",0x7C7B], + ["8BDE",0x98A0], + ["8BDF",0x98D5], + ["8BE0",0x9992], + ["8BE1",0x9991], + ["8BE2",0x9A9B], + ["8BE3",0x9A97], + ["8BE4",0x9CB8], + ["8BE5",0x9CB3], + ["8BE6",0x9CAD], + ["8BE7",0x9CB7], + ["8BE8",0x9E51], + ["8BE9",0x9E49], + ["8BEA",0x9E4A], + ["8BEB",0x9E4C], + ["8BEC",0x9E4F], + ["8BED",0x4E3D], + ["8BEE",0x9EB4], + ["8BEF",0x529D], + ["8BF0",0x5499], + ["8BF1",0x5624], + ["8BF2",0x4E25], + ["8BF3",0x5B9D], + ["8BF4",0x60AC], + ["8BF5",0x5FCF], + ["8BF6",0x62E6], + ["8BF7",0x6400], + ["8BF8",0x80E7], + ["8BF9",0x6987], + ["8BFA",0x6F9C], + ["8BFB",0x6F4B], + ["8BFC",0x7089], + ["8BFD",0x73D1], + ["8BFE",0x77FF], + ["8C40",0x783A], + ["8C41",0x77FE], + ["8C42",0x783E], + ["8C43",0x7AA6], + ["8C44",0x7ADE], + ["8C45",0x7B79], + ["8C46",0x7BEE], + ["8C47",0x8FAB], + ["8C48",0x7F24], + ["8C49",0x7EE7], + ["8C4A",0x7F42], + ["8C4B",0x80EA], + ["8C4C",0x8230], + ["8C4D",0x853C], + ["8C4E",0x853A], + ["8C4F",0x82A6], + ["8C50",0x82F9], + ["8C51",0x8574], + ["8C52",0x869D], + ["8C53",0x8934], + ["8C54",0x89C9], + ["8C55",0x89E6], + ["8C56",0x8BAE], + ["8C57",0x8BD1], + ["8C58",0x8C35], + ["8C59",0x8D62], + ["8C5A",0x8D61], + ["8C5B",0x8DB8], + ["8C5C",0x91CA], + ["8C5D",0x949F], + ["8C5E",0x94D9], + ["8C5F",0x9508], + ["8C60",0x9610], + ["8C61",0x98D8], + ["8C62",0x9976], + ["8C63",0x9965], + ["8C64",0x9A9E], + ["8C65",0x817E], + ["8C66",0x9A9A], + ["8C67",0x9CC3], + ["8C68",0x9CC5], + ["8C69",0x515A], + ["8C6A",0x9F83], + ["8C6B",0x9F84], + ["8C6C",0x4FEA], + ["8C6D",0x55EB], + ["8C6E",0x556D], + ["8C6F",0x56A3], + ["8C70",0x5C5E], + ["8C71",0x60E7], + ["8C72",0x6151], + ["8C73",0x6444], + ["8C74",0x643A], + ["8C75",0x6593], + ["8C76",0x6A31], + ["8C77",0x680F], + ["8C78",0x68C2], + ["8C79",0x6B7C], + ["8C7A",0x70C2], + ["8C7B",0x727A], + ["8C7C",0x9576], + ["8C7D",0x748E], + ["8C7E",0x765E], + ["8CA1",0x7F20], + ["8CA2",0x7EED], + ["8CA3",0x5170], + ["8CA4",0x85D3], + ["8CA5",0x86CE], + ["8CA6",0x89C8], + ["8CA7",0x8C34], + ["8CA8",0x62A4], + ["8CA9",0x8A89], + ["8CAA",0x8D43], + ["8CAB",0x8E0C], + ["8CAC",0x8DC3], + ["8CAD",0x8DFB], + ["8CAE",0x8F70], + ["8CAF",0x8FA9], + ["8CB0",0x9570], + ["8CB1",0x956D], + ["8CB2",0x94C1], + ["8CB3",0x94DB], + ["8CB4",0x94CE], + ["8CB5",0x956F], + ["8CB6",0x954C], + ["8CB7",0x54CD], + ["8CB8",0x987E], + ["8CB9",0x98A2], + ["8CBA",0x98E8], + ["8CBB",0x9A71], + ["8CBC",0x9AA0], + ["8CBD",0x84E6], + ["8CBE",0x9AA1], + ["8CBF",0x9AC5], + ["8CC0",0x9CCD], + ["8CC1",0x9CCF], + ["8CC2",0x83BA], + ["8CC3",0x9E64], + ["8CC4",0x9E5E], + ["8CC5",0x9F87], + ["8CC6",0x9F88], + ["8CC7",0x556E], + ["8CC8",0x4FE8], + ["8CC9",0x50A5], + ["8CCA",0x5453], + ["8CCB",0x5B6A], + ["8CCC",0x5DC5], + ["8CCD",0x5CE6], + ["8CCE",0x5F2F], + ["8CCF",0x644A], + ["8CD0",0x6743], + ["8CD1",0x6B22], + ["8CD2",0x6EE9], + ["8CD3",0x7321], + ["8CD4",0x53E0], + ["8CD5",0x763E], + ["8CD6",0x7663], + ["8CD7",0x7B3C], + ["8CD8",0x7C41], + ["8CD9",0x804B], + ["8CDA",0x810F], + ["8CDB",0x88AD], + ["8CDC",0x886C], + ["8CDD",0x8BFB], + ["8CDE",0x8D4E], + ["8CDF",0x8D5D], + ["8CE0",0x8E2F], + ["8CE1",0x8E2C], + ["8CE2",0x8F94], + ["8CE3",0x90E6], + ["8CE4",0x94F8], + ["8CE5",0x9274], + ["8CE6",0x9701], + ["8CE7",0x9791], + ["8CE8",0x7E6E], + ["8CE9",0x98A4], + ["8CEA",0x9A84], + ["8CEB",0x9A81], + ["8CEC",0x9CD6], + ["8CED",0x9CA2], + ["8CEE",0x9CD4], + ["8CEF",0x9CD7], + ["8CF0",0x9E67], + ["8CF1",0x9E25], + ["8CF2",0x9F39], + ["8CF3",0x9F89], + ["8CF4",0x9F8A], + ["8CF5",0x9F9A], + ["8CF6",0x604B], + ["8CF7",0x631B], + ["8CF8",0x6405], + ["8CF9",0x74D2], + ["8CFA",0x7A83], + ["8CFB",0x7F28], + ["8CFC",0x81E2], + ["8CFD",0x841D], + ["8CFE",0x86CA], + ["8D40",0x53D8], + ["8D41",0x9026], + ["8D42",0x903B], + ["8D43",0x9573], + ["8D44",0x94C4], + ["8D45",0x9765], + ["8D46",0x663E], + ["8D47",0x990D], + ["8D48",0x60CA], + ["8D49",0x9A7F], + ["8D4A",0x9A8C], + ["8D4B",0x9AD3], + ["8D4C",0x9AD1], + ["8D4D",0x9CDD], + ["8D4E",0x9CDE], + ["8D4F",0x9CDC], + ["8D50",0x9E36], + ["8D51",0x5631], + ["8D52",0x575D], + ["8D53",0x63FD], + ["8D54",0x762B], + ["8D55",0x766B], + ["8D56",0x7F81], + ["8D57",0x8695], + ["8D58",0x8BA9], + ["8D59",0x8C17], + ["8D5A",0x8C36], + ["8D5B",0x8273], + ["8D5C",0x8D63], + ["8D5D",0x917F], + ["8D5E",0x96F3], + ["8D5F",0x7075], + ["8D60",0x972D], + ["8D61",0x98A6], + ["8D62",0x9AA4], + ["8D63",0x9B13], + ["8D64",0x9B47], + ["8D65",0x9C8E], + ["8D66",0x9E70], + ["8D67",0x9E6D], + ["8D68",0x7877], + ["8D69",0x76D0], + ["8D6A",0x9CCC], + ["8D6B",0x9F8C], + ["8D6C",0x9F8B], + ["8D6D",0x5385], + ["8D6E",0x6984], + ["8D6F",0x6E7E], + ["8D70",0x7BF1], + ["8D71",0x7BA9], + ["8D72",0x86EE], + ["8D73",0x89C2], + ["8D74",0x8E51], + ["8D75",0x8845], + ["8D76",0x94A5], + ["8D77",0x9885], + ["8D78",0x998B], + ["8D79",0x9ACB], + ["8D7A",0x9EC9], + ["8D7B",0x6EE6], + ["8D7C",0x77A9], + ["8D7D",0x954A], + ["8D7E",0x97AF], + ["8DA1",0x9A74], + ["8DA2",0x9AA5], + ["8DA3",0x7F06], + ["8DA4",0x8C20], + ["8DA5",0x8E8F], + ["8DA6",0x917D], + ["8DA7",0x94BB], + ["8DA8",0x92AE], + ["8DA9",0x9523], + ["8DAA",0x9CC4], + ["8DAB",0x9C88], + ["8DAC",0x9EE9], + ["8DAD",0x51FF], + ["8DAE",0x9E66], + ["8DAF",0x9A8A], + ["8DB0",0x9E73], + ["8DB1",0x9E3E], + ["8DB2",0x94BA], + ["8DB3",0x4EC2], + ["8DB4",0x864D], + ["8DB5",0x6B92], + ["8DB6",0x57A7], + ["8DB7",0x577B], + ["8DB8",0x620B], + ["8DB9",0x4FE3], + ["8DBA",0x522D], + ["8DBB",0x538D], + ["8DBC",0x5459], + ["8DBD",0x537A], + ["8DBE",0x7EA8], + ["8DBF",0x8307], + ["8DC0",0x9487], + ["8DC1",0x9486], + ["8DC2",0x5457], + ["8DC3",0x5F2A], + ["8DC4",0x7953], + ["8DC5",0x7EBE], + ["8DC6",0x90CF], + ["8DC7",0x948C], + ["8DC8",0x5250], + ["8DC9",0x5326], + ["8DCA",0x56F5], + ["8DCB",0x57AD], + ["8DCC",0x5A05], + ["8DCD",0x5CBD], + ["8DCE",0x5D03], + ["8DCF",0x6D9E], + ["8DD0",0x6E0C], + ["8DD1",0x70C3], + ["8DD2",0x7726], + ["8DD3",0x7EC0], + ["8DD4",0x7ED0], + ["8DD5",0x80EB], + ["8DD6",0x948E], + ["8DD7",0x9490], + ["8DD8",0x9495], + ["8DD9",0x948D], + ["8DDA",0x95EB], + ["8DDB",0x59AB], + ["8DDC",0x5D5B], + ["8DDD",0x607D], + ["8DDE",0x6860], + ["8DDF",0x67A8], + ["8DE0",0x6CA9], + ["8DE1",0x6D48], + ["8DE2",0x7572], + ["8DE3",0x7817], + ["8DE4",0x7ED7], + ["8DE5",0x83DD], + ["8DE6",0x89C7], + ["8DE7",0x8BB5], + ["8DE8",0x8BCE], + ["8DE9",0x8BD2], + ["8DEA",0x8D36], + ["8DEB",0x8D33], + ["8DEC",0x8F7A], + ["8DED",0x8F75], + ["8DEE",0x8F78], + ["8DEF",0x902F], + ["8DF0",0x90D3], + ["8DF1",0x9104], + ["8DF2",0x94AB], + ["8DF3",0x94AC], + ["8DF4",0x949B], + ["8DF5",0x94AF], + ["8DF6",0x94AD], + ["8DF7",0x94AA], + ["8DF8",0x95F6], + ["8DF9",0x9667], + ["8DFA",0x9878], + ["8DFB",0x996B], + ["8DFC",0x9EF9], + ["8DFD",0x4F1B], + ["8DFE",0x507B], + ["8E40",0x4F65], + ["8E41",0x5522], + ["8E42",0x57B2], + ["8E43",0x5DEF], + ["8E44",0x5FAD], + ["8E45",0x709C], + ["8E46",0x8315], + ["8E47",0x72F2], + ["8E48",0x73AE], + ["8E49",0x7EE8], + ["8E4A",0x7EE0], + ["8E4B",0x7EE1], + ["8E4C",0x7F9F], + ["8E4D",0x836D], + ["8E4E",0x86F1], + ["8E4F",0x8BD3], + ["8E50",0x8BD6], + ["8E51",0x8BE9], + ["8E52",0x8BD4], + ["8E53",0x8BDC], + ["8E54",0x8D91], + ["8E55",0x8F82], + ["8E56",0x8F81], + ["8E57",0x90AC], + ["8E58",0x94CA], + ["8E59",0x94C8], + ["8E5A",0x94B0], + ["8E5B",0x94B2], + ["8E5C",0x94B6], + ["8E5D",0x950D], + ["8E5E",0x94CC], + ["8E5F",0x94BD], + ["8E60",0x94BC], + ["8E61",0x9883], + ["8E62",0x9880], + ["8E63",0x51EB], + ["8E64",0x9EFE], + ["8E65",0x507E], + ["8E66",0x551B], + ["8E67",0x5D5D], + ["8E68",0x5E3B], + ["8E69",0x60AB], + ["8E6A",0x60AD], + ["8E6B",0x6004], + ["8E6C",0x622C], + ["8E6D",0x6217], + ["8E6E",0x629F], + ["8E6F",0x62A0], + ["8E70",0x63BC], + ["8E71",0x6864], + ["8E72",0x6769], + ["8E73",0x8365], + ["8E74",0x6D52], + ["8E75",0x6CA4], + ["8E76",0x709D], + ["8E77",0x76B2], + ["8E78",0x7800], + ["8E79",0x7EFB], + ["8E7A",0x7EF2], + ["8E7B",0x7EEF], + ["8E7C",0x7EFA], + ["8E7D",0x83B3], + ["8E7E",0x89CB], + ["8EA1",0x8BF6], + ["8EA2",0x8D47], + ["8EA3",0x94F1], + ["8EA4",0x94D2], + ["8EA5",0x94D1], + ["8EA6",0x94D5], + ["8EA7",0x94DF], + ["8EA8",0x94EB], + ["8EA9",0x94EF], + ["8EAA",0x94EA], + ["8EAB",0x94F7], + ["8EAC",0x94D6], + ["8EAD",0x94E5], + ["8EAE",0x98D1], + ["8EAF",0x523F], + ["8EB0",0x52A2], + ["8EB1",0x54D3], + ["8EB2",0x5452], + ["8EB3",0x5D02], + ["8EB4",0x5CE4], + ["8EB5",0x5E91], + ["8EB6",0x6126], + ["8EB7",0x6322], + ["8EB8",0x6920], + ["8EB9",0x6BF5], + ["8EBA",0x988D], + ["8EBB",0x6D9D], + ["8EBC",0x6F62], + ["8EBD",0x6DA0], + ["8EBE",0x6ED7], + ["8EBF",0x740F], + ["8EC0",0x7481], + ["8EC1",0x7617], + ["8EC2",0x7F03], + ["8EC3",0x7F17], + ["8EC4",0x7F0C], + ["8EC5",0x7F0F], + ["8EC6",0x7F11], + ["8EC7",0x835C], + ["8EC8",0x848C], + ["8EC9",0x8311], + ["8ECA",0x82C1], + ["8ECB",0x8BF9], + ["8ECC",0x8BFC], + ["8ECD",0x8C02], + ["8ECE",0x8D55], + ["8ECF",0x90F8], + ["8ED0",0x9512], + ["8ED1",0x94D7], + ["8ED2",0x94FD], + ["8ED3",0x9513], + ["8ED4",0x950A], + ["8ED5",0x94E4], + ["8ED6",0x9506], + ["8ED7",0x9507], + ["8ED8",0x9514], + ["8ED9",0x9606], + ["8EDA",0x9603], + ["8EDB",0x9753], + ["8EDC",0x988F], + ["8EDD",0x997D], + ["8EDE",0x9A75], + ["8EDF",0x9A80], + ["8EE0",0x9C82], + ["8EE1",0x9E28], + ["8EE2",0x54D2], + ["8EE3",0x54D5], + ["8EE4",0x54D9], + ["8EE5",0x5AD2], + ["8EE6",0x5CC4], + ["8EE7",0x603F], + ["8EE8",0x6B9A], + ["8EE9",0x6D4D], + ["8EEA",0x70E8], + ["8EEB",0x7303], + ["8EEC",0x72EF], + ["8EED",0x789C], + ["8EEE",0x7AAD], + ["8EEF",0x7E17], + ["8EF0",0x7F1B], + ["8EF1",0x8487], + ["8EF2",0x8368], + ["8EF3",0x8489], + ["8EF4",0x835E], + ["8EF5",0x83B8], + ["8EF6",0x8297], + ["8EF7",0x86F3], + ["8EF8",0x8BE8], + ["8EF9",0x8C11], + ["8EFA",0x8C14], + ["8EFB",0x8C1D], + ["8EFC",0x90D0], + ["8EFD",0x9529], + ["8EFE",0x952C], + ["8F40",0x9516], + ["8F41",0x9517], + ["8F42",0x94FC], + ["8F43",0x951B], + ["8F44",0x9515], + ["8F45",0x951E], + ["8F46",0x9494], + ["8F47",0x960F], + ["8F48",0x9608], + ["8F49",0x9609], + ["8F4A",0x960A], + ["8F4B",0x960C], + ["8F4C",0x960D], + ["8F4D",0x9E32], + ["8F4E",0x9E31], + ["8F4F",0x54DC], + ["8F50",0x5E31], + ["8F51",0x6079], + ["8F52",0x6448], + ["8F53",0xE3C1], + ["8F54",0x6CF6], + ["8F55",0x7315], + ["8F56",0x7513], + ["8F57",0x7605], + ["8F58",0x75EB], + ["8F59",0x7857], + ["8F5A",0x7BA6], + ["8F5B",0x7B5A], + ["8F5C",0x7CE8], + ["8F5D",0x7F21], + ["8F5E",0x8027], + ["8F5F",0x835F], + ["8F60",0x83B6], + ["8F61",0x86F0], + ["8F62",0x88E2], + ["8F63",0x89CF], + ["8F64",0x8C21], + ["8F65",0x8BCC], + ["8F66",0x8C25], + ["8F67",0x8DC4], + ["8F68",0x9538], + ["8F69",0x9534], + ["8F6A",0x94E1], + ["8F6B",0x9536], + ["8F6C",0x9612], + ["8F6D",0x9967], + ["8F6E",0x9C92], + ["8F6F",0x9C95], + ["8F70",0x9E38], + ["8F71",0x9E39], + ["8F72",0x9E3A], + ["8F73",0x9F80], + ["8F74",0x603C], + ["8F75",0x6445], + ["8F76",0x64B8], + ["8F77",0x6CFA], + ["8F78",0x7596], + ["8F79",0x7F0B], + ["8F7A",0x8069], + ["8F7B",0x8369], + ["8F7C",0x87E5], + ["8F7D",0x866E], + ["8F7E",0x8BB4], + ["8FA1",0x8C29], + ["8FA2",0x8D5C], + ["8FA3",0x8D3D], + ["8FA4",0x8F98], + ["8FA5",0x909D], + ["8FA6",0x9553], + ["8FA7",0x94E0], + ["8FA8",0x953C], + ["8FA9",0x954F], + ["8FAA",0x84E5], + ["8FAB",0x97EA], + ["8FAC",0x9969], + ["8FAD",0x9A90], + ["8FAE",0x9A92], + ["8FAF",0x9A93], + ["8FB0",0x960B], + ["8FB1",0x9CA9], + ["8FB2",0x9CA0], + ["8FB3",0x9E48], + ["8FB4",0x9E41], + ["8FB5",0x9E46], + ["8FB6",0x53A3], + ["8FB7",0x5456], + ["8FB8",0x5786], + ["8FB9",0x69E0], + ["8FBA",0x680E], + ["8FBB",0x6C07], + ["8FBC",0x6CF7], + ["8FBD",0x6F46], + ["8FBE",0x7962], + ["8FBF",0x7F32], + ["8FC0",0x7F33], + ["8FC1",0x7F74], + ["8FC2",0x8223], + ["8FC3",0x86CF], + ["8FC4",0x867F], + ["8FC5",0x88E3], + ["8FC6",0x89D1], + ["8FC7",0x89EF], + ["8FC8",0x8C2E], + ["8FC9",0x955B], + ["8FCA",0x955F], + ["8FCB",0x956A], + ["8FCC",0x9546], + ["8FCD",0x94E9], + ["8FCE",0x97EB], + ["8FCF",0x98A1], + ["8FD0",0x9990], + ["8FD1",0x9AC2], + ["8FD2",0x9CB5], + ["8FD3",0x9CB6], + ["8FD4",0x9CBB], + ["8FD5",0x9CB1], + ["8FD6",0x9E4E], + ["8FD7",0x9E2B], + ["8FD8",0x9EFC], + ["8FD9",0x55BE], + ["8FDA",0x6484], + ["8FDB",0x680A], + ["8FDC",0x67A5], + ["8FDD",0x680C], + ["8FDE",0x7F31], + ["8FDF",0x804D], + ["8FE0",0x830F], + ["8FE1",0x82C8], + ["8FE2",0x8572], + ["8FE3",0x86F4], + ["8FE4",0x877E], + ["8FE5",0x94F4], + ["8FE6",0x9566], + ["8FE7",0x9568], + ["8FE8",0x9561], + ["8FE9",0x9563], + ["8FEA",0x9544], + ["8FEB",0x956B], + ["8FEC",0x94E7], + ["8FED",0x9564], + ["8FEE",0x94F9], + ["8FEF",0x961A], + ["8FF0",0x989F], + ["8FF1",0x9994], + ["8FF2",0x9A7A], + ["8FF3",0x9A9D], + ["8FF4",0x9A9F], + ["8FF5",0x9A98], + ["8FF6",0x9E57], + ["8FF7",0x9E5A], + ["8FF8",0x9E5C], + ["8FF9",0x9F86], + ["8FFA",0x9F85], + ["8FFB",0x50A9], + ["8FFC",0x5CBF], + ["8FFD",0x75C8], + ["8FFE",0x64BA], + ["9040",0x6989], + ["9041",0x6EE0], + ["9042",0x783B], + ["9043",0x7C9D], + ["9044",0x7EA9], + ["9045",0x7F2C], + ["9046",0x8539], + ["9047",0x8D46], + ["9048",0x9571], + ["9049",0x95FC], + ["904A",0x98D9], + ["904B",0x9AA2], + ["904C",0x9A96], + ["904D",0x9A9C], + ["904E",0x9CA5], + ["904F",0x9CCE], + ["9050",0x9CD0], + ["9051",0x9E63], + ["9052",0x9E58], + ["9053",0x9E7E], + ["9054",0x5181], + ["9055",0x5A08], + ["9056",0x7055], + ["9057",0x6512], + ["9058",0x763F], + ["9059",0x7BA8], + ["905A",0x7C74], + ["905B",0x823B], + ["905C",0x89CC], + ["905D",0x8DF9], + ["905E",0x8DDE], + ["905F",0x8F79], + ["9060",0x9554], + ["9061",0x956C], + ["9062",0x9AA3], + ["9063",0x9A85], + ["9064",0x9CD5], + ["9065",0x9CA3], + ["9066",0x9CA6], + ["9067",0x9E68], + ["9068",0x9E37], + ["9069",0x9F9B], + ["906A",0x683E], + ["906B",0x6924], + ["906C",0x84E0], + ["906D",0x96E0], + ["906E",0x8F73], + ["906F",0x9CDF], + ["9070",0x9C9F], + ["9071",0x9E69], + ["9072",0x9E6C], + ["9073",0x9E6A], + ["9074",0x9E6B], + ["9075",0x9E47], + ["9076",0x704F], + ["9077",0x7C16], + ["9078",0x8C30], + ["9079",0x9ACC], + ["907A",0x7B3E], + ["907B",0x7C9C], + ["907C",0x7F35], + ["907D",0x8114], + ["907E",0x8E7F], + ["90A1",0x9567], + ["90A2",0x9C9A], + ["90A3",0x8DB1], + ["90A4",0x8E9C], + ["90A5",0x917E], + ["90A6",0x8C33], + ["90A7",0x989E], + ["90A8",0x98A7], + ["90A9",0x9AA7], + ["90AA",0x9E2C], + ["90AB",0x6206], + ["90AC",0x9604], + ["90AD",0x9CA1], + ["90AE",0x9E42], + ["90AF",0x79B8], + ["90B0",0x62D4], + ["90B1",0x8DCB], + ["90B2",0x73D0], + ["90B3",0x5BAB], + ["90B4",0x62D0], + ["90B5",0x6BC1], + ["90B6",0x51CF], + ["90B7",0x7984], + ["90B8",0x5415], + ["90B9",0x6F5C], + ["90BA",0x889C], + ["90BB",0x90E7], + ["90BC",0x5179], + ["90BD",0x6238], + ["90BE",0x629B], + ["90BF",0x6327], + ["90C0",0x63BB], + ["90C1",0x63DE], + ["90C2",0x63FA], + ["90C3",0x6491], + ["90C4",0x64C0], + ["90C5",0x64E1], + ["90C6",0x64F6], + ["90C7",0x6505], + ["90C8",0x6535], + ["90C9",0x654E], + ["90CA",0x656B], + ["90CB",0x6588], + ["90CC",0x65D9], + ["90CD",0x661E], + ["90CE",0x663B], + ["90CF",0x663F], + ["90D0",0x6644], + ["90D1",0x6657], + ["90D2",0x6669], + ["90D3",0x6673], + ["90D4",0x6683], + ["90D5",0x66BC], + ["90D6",0x66BF], + ["90D7",0x66C1], + ["90D8",0x66F5], + ["90D9",0x66FA], + ["90DA",0x66FB], + ["90DB",0x670E], + ["90DC",0x6716], + ["90DD",0x6737], + ["90DE",0x6764], + ["90DF",0x6766], + ["90E0",0x67A6], + ["90E1",0x67A7], + ["90E2",0x67A9], + ["90E3",0x67FB], + ["90E4",0x67FD], + ["90E5",0x6800], + ["90E6",0x6801], + ["90E7",0x6805], + ["90E8",0x681E], + ["90E9",0x684A], + ["90EA",0x6852], + ["90EB",0x6855], + ["90EC",0x6859], + ["90ED",0x688D], + ["90EE",0x68B9], + ["90EF",0x68CF], + ["90F0",0x5088], + ["90F1",0x9528], + ["90F2",0x9C97], + ["90F3",0x6922], + ["90F4",0x6926], + ["90F5",0x00DC], + ["90F6",0xE4DF], + ["90F7",0xE4E0], + ["90F8",0x00FC], + ["90F9",0xE4E2], + ["90FA",0xE4E3], + ["90FB",0x00DC], + ["90FC",0x00FC], + ["90FD",0x6936], + ["90FE",0x6961], + ["9140",0x82C5], + ["9141",0x82CA], + ["9142",0x82D8], + ["9143",0x8318], + ["9144",0x831A], + ["9145",0x8323], + ["9146",0x8346], + ["9147",0x835B], + ["9148",0x8362], + ["9149",0x836C], + ["914A",0x836E], + ["914B",0x839C], + ["914C",0x839F], + ["914D",0x83B5], + ["914E",0x83BC], + ["914F",0x83F7], + ["9150",0x842A], + ["9151",0x8448], + ["9152",0x845C], + ["9153",0x8462], + ["9154",0x8484], + ["9155",0x8488], + ["9156",0x84DC], + ["9157",0x84E3], + ["9158",0x8538], + ["9159",0x855A], + ["915A",0x8597], + ["915B",0x85AB], + ["915C",0x85C1], + ["915D",0x8613], + ["915E",0x8616], + ["915F",0x220B], + ["9160",0x8715], + ["9161",0x8770], + ["9162",0x877D], + ["9163",0x878B], + ["9164",0x87A8], + ["9165",0x87C7], + ["9166",0x87D0], + ["9167",0x8807], + ["9168",0x880E], + ["9169",0x8827], + ["916A",0x88AE], + ["916B",0x2208], + ["916C",0x88B5], + ["916D",0x88BF], + ["916E",0x88E5], + ["916F",0x88F5], + ["9170",0x891C], + ["9171",0x891D], + ["9172",0x8977], + ["9173",0x89E7], + ["9174",0x8A37], + ["9175",0x8AAC], + ["9176",0x8ADA], + ["9177",0x8B5B], + ["9178",0x8B71], + ["9179",0x8C2B], + ["917A",0x8C3A], + ["917B",0x8C7C], + ["917C",0x8C8E], + ["917D",0x8CAE], + ["917E",0x8D12], + ["91A1",0x8D49], + ["91A2",0x8D4D], + ["91A3",0x8D71], + ["91A4",0x8E08], + ["91A5",0x8E3A], + ["91A6",0x8E70], + ["91A7",0x8E99], + ["91A8",0x8EB0], + ["91A9",0x8EB1], + ["91AA",0x8EC5], + ["91AB",0x8EC6], + ["91AC",0x8ECE], + ["91AD",0x8EE3], + ["91AE",0x8F0C], + ["91AF",0x8F71], + ["91B0",0x8F77], + ["91B1",0x8FA7], + ["91B2",0x8FEF], + ["91B3",0x900E], + ["91B4",0x9039], + ["91B5",0x9065], + ["91B6",0x9089], + ["91B7",0x90DE], + ["91B8",0x9115], + ["91B9",0x91D6], + ["91BA",0x91DB], + ["91BB",0x91DE], + ["91BC",0x91E1], + ["91BD",0x91E5], + ["91BE",0x91F6], + ["91BF",0x91FC], + ["91C0",0x9229], + ["91C1",0x922C], + ["91C2",0xFF07], + ["91C3",0x9259], + ["91C4",0x9277], + ["91C5",0x92ED], + ["91C6",0x933A], + ["91C7",0xE54D], + ["91C8",0xE54E], + ["91C9",0x722B], + ["91CA",0x5182], + ["91CB",0x5196], + ["91CC",0x4E37], + ["91CD",0x516B], + ["91CE",0x513F], + ["91CF",0xE555], + ["91D0",0xE556], + ["91D1",0x6729], + ["91D2",0x6C3A], + ["91D3",0x5382], + ["91D4",0x7592], + ["91D5",0x8080], + ["91D6",0x8864], + ["91D7",0x4E06], + ["91D8",0xE55E], + ["91D9",0xE55F], + ["91DA",0xE560], + ["91DB",0x2E97], + ["91DC",0x52F9], + ["91DD",0x5315], + ["91DE",0x2021], + ["91DF",0xE565], + ["91E0",0x3404], + ["91E1",0xE567], + ["91E2",0xE568], + ["91E3",0xE569], + ["91E4",0xE56A], + ["91E5",0xE56B], + ["91E6",0x51F5], + ["91E7",0xE56D], + ["91E8",0x5C6E], + ["91E9",0xE56F], + ["91EA",0x56D7], + ["91EB",0x4EA0], + ["91EC",0x51AB], + ["91ED",0x2E80], + ["91EE",0x69C7], + ["91EF",0xE575], + ["91F0",0x254E], + ["91F1",0x25D8], + ["91F2",0x25D9], + ["91F3",0x2642], + ["91F4",0x25B6], + ["91F5",0x25C4], + ["91F6",0x2195], + ["91F7",0x203C], + ["91F8",0x00B6], + ["91F9",0x2200], + ["91FA",0x21A8], + ["91FB",0x2194], + ["91FC",0x2302], + ["91FD",0xE583], + ["91FE",0xE584], + ["9240",0x4E9C], + ["9241",0x60AA], + ["9242",0x5727], + ["9243",0x56F2], + ["9244",0x533B], + ["9245",0x58F1], + ["9246",0x9038], + ["9247",0x96A0], + ["9248",0x6804], + ["9249",0x55B6], + ["924A",0x99C5], + ["924B",0x8B01], + ["924C",0x5186], + ["924D",0x7E01], + ["924E",0x5FDC], + ["924F",0x6B27], + ["9250",0x6BB4], + ["9251",0x685C], + ["9252",0x5965], + ["9253",0x7A4F], + ["9254",0x4EEE], + ["9255",0x4FA1], + ["9256",0x753B], + ["9257",0x7070], + ["9258",0x4F1A], + ["9259",0x6094], + ["925A",0x6D77], + ["925B",0x7D75], + ["925C",0x58CA], + ["925D",0x61D0], + ["925E",0x62E1], + ["925F",0x6BBB], + ["9260",0x899A], + ["9261",0x5B66], + ["9262",0x697D], + ["9263",0x559D], + ["9264",0x6E07], + ["9265",0xE5AA], + ["9266",0x5DFB], + ["9267",0x9665], + ["9268",0x52E7], + ["9269",0x5BDB], + ["926A",0x6F22], + ["926B",0x95A2], + ["926C",0x6B53], + ["926D",0x89B3], + ["926E",0x6C17], + ["926F",0x5E30], + ["9270",0x622F], + ["9271",0x72A0], + ["9272",0x8650], + ["9273",0x65E7], + ["9274",0x6025], + ["9275",0x62E0], + ["9276",0x6319], + ["9277",0x865A], + ["9278",0x5CE1], + ["9279",0x631F], + ["927A",0x72ED], + ["927B",0x90F7], + ["927C",0x97FF], + ["927D",0x6681], + ["927E",0x52E4], + ["92A1",0x8B39], + ["92A2",0x533A], + ["92A3",0x99C6], + ["92A4",0x52F2], + ["92A5",0xE5C8], + ["92A6",0x5F84], + ["92A7",0x830E], + ["92A8",0x6075], + ["92A9",0x63B2], + ["92AA",0x6E13], + ["92AB",0x7D4C], + ["92AC",0x86CD], + ["92AD",0x8EFD], + ["92AE",0x7D99], + ["92AF",0x9D8F], + ["92B0",0x6483], + ["92B1",0x770C], + ["92B2",0x5039], + ["92B3",0x5263], + ["92B4",0x967A], + ["92B5",0x570F], + ["92B6",0x691C], + ["92B7",0x6A29], + ["92B8",0x9855], + ["92B9",0x9A13], + ["92BA",0x53B3], + ["92BB",0x5449], + ["92BC",0x5A2F], + ["92BD",0x8AA4], + ["92BE",0x5E83], + ["92BF",0x6E2F], + ["92C0",0x9271], + ["92C1",0x53F7], + ["92C2",0x56FD], + ["92C3",0x9ED2], + ["92C4",0x7A40], + ["92C5",0x7815], + ["92C6",0x6E08], + ["92C7",0x658E], + ["92C8",0x6B73], + ["92C9",0x5264], + ["92CA",0x96D1], + ["92CB",0x53C2], + ["92CC",0x685F], + ["92CD",0x60E8], + ["92CE",0x8CDB], + ["92CF",0x6B8B], + ["92D0",0x6B6F], + ["92D1",0x5150], + ["92D2",0x8F9E], + ["92D3",0x6E7F], + ["92D4",0x5B9F], + ["92D5",0x5199], + ["92D6",0x820E], + ["92D7",0x6368], + ["92D8",0x91C8], + ["92D9",0x5BFF], + ["92DA",0x53CE], + ["92DB",0x8846], + ["92DC",0x5F93], + ["92DD",0x6E0B], + ["92DE",0x7363], + ["92DF",0x7E26], + ["92E0",0x7C9B], + ["92E1",0x51E6], + ["92E2",0x5C06], + ["92E3",0x79F0], + ["92E4",0x6E09], + ["92E5",0x713C], + ["92E6",0x5968], + ["92E7",0x6761], + ["92E8",0x72B6], + ["92E9",0x4E57], + ["92EA",0x6D44], + ["92EB",0x5270], + ["92EC",0x7573], + ["92ED",0x7E04], + ["92EE",0x58CC], + ["92EF",0x5B22], + ["92F0",0x8B72], + ["92F1",0x91B8], + ["92F2",0x89E6], + ["92F3",0x5631], + ["92F4",0x5BDD], + ["92F5",0x5C3D], + ["92F6",0x56F3], + ["92F7",0x7C8B], + ["92F8",0x9154], + ["92F9",0x7A42], + ["92FA",0x968F], + ["92FB",0x9AC4], + ["92FC",0x67A2], + ["92FD",0x6570], + ["92FE",0x636E], + ["9340",0x702C], + ["9341",0x58F0], + ["9342",0x6589], + ["9343",0x9759], + ["9344",0x7A83], + ["9345",0x6442], + ["9346",0x7D76], + ["9347",0x5C02], + ["9348",0x6D45], + ["9349",0x6226], + ["934A",0x8DF5], + ["934B",0x92AD], + ["934C",0x6F5C], + ["934D",0x9077], + ["934E",0x9078], + ["934F",0x7E4A], + ["9350",0x7985], + ["9351",0x758E], + ["9352",0x58EE], + ["9353",0x4E89], + ["9354",0x8358], + ["9355",0x635C], + ["9356",0x633F], + ["9357",0x5DE3], + ["9358",0x7A93], + ["9359",0x88C5], + ["935A",0x50E7], + ["935B",0x5C64], + ["935C",0x7DCF], + ["935D",0x9A12], + ["935E",0x5897], + ["935F",0x618E], + ["9360",0x8535], + ["9361",0x8D08], + ["9362",0x81D3], + ["9363",0x5C5E], + ["9364",0x7D9A], + ["9365",0x5815], + ["9366",0x5BFE], + ["9367",0x5E2F], + ["9368",0x6EDE], + ["9369",0x6EDD], + ["936A",0x629E], + ["936B",0x6CA2], + ["936C",0x6FEF], + ["936D",0x5358], + ["936E",0x5606], + ["936F",0x56E3], + ["9370",0x65AD], + ["9371",0x5F3E], + ["9372",0x9045], + ["9373",0x663C], + ["9374",0x92F3], + ["9375",0x5E81], + ["9376",0x5FB4], + ["9377",0x8074], + ["9378",0x61F2], + ["9379",0x585A], + ["937A",0x9013], + ["937B",0x9244], + ["937C",0x70B9], + ["937D",0x8EE2], + ["937E",0x4F1D], + ["93A1",0x96FB], + ["93A2",0x706F], + ["93A3",0x5F53], + ["93A4",0x515A], + ["93A5",0x76D7], + ["93A6",0x7A32], + ["93A7",0x95D8], + ["93A8",0x5FB3], + ["93A9",0x6BD2], + ["93AA",0x72EC], + ["93AB",0x8AAD], + ["93AC",0x5C4A], + ["93AD",0x96E3], + ["93AE",0x5F10], + ["93AF",0x60A9], + ["93B0",0x8133], + ["93B1",0x62DD], + ["93B2",0x5EC3], + ["93B3",0x58F2], + ["93B4",0x6885], + ["93B5",0x535A], + ["93B6",0x8584], + ["93B7",0x9EA6], + ["93B8",0x7E1B], + ["93B9",0x767A], + ["93BA",0x9AEA], + ["93BB",0x629C], + ["93BC",0x6D5C], + ["93BD",0x6D5C], + ["93BE",0x654F], + ["93BF",0x6577], + ["93C0",0x4FAE], + ["93C1",0x6255], + ["93C2",0x4ECF], + ["93C3",0x8FBA], + ["93C4",0x5909], + ["93C5",0x6B69], + ["93C6",0x8217], + ["93C7",0x7C3F], + ["93C8",0x5305], + ["93C9",0x5B9D], + ["93CA",0x62B1], + ["93CB",0x6CE1], + ["93CC",0x80DE], + ["93CD",0x7832], + ["93CE",0x8C4A], + ["93CF",0x98FD], + ["93D0",0x58A8], + ["93D1",0x6BCE], + ["93D2",0x6E80], + ["93D3",0x8108], + ["93D4",0x9ED9], + ["93D5",0x8A33], + ["93D6",0x85AC], + ["93D7",0x8E8D], + ["93D8",0x4E0E], + ["93D9",0x8A89], + ["93DA",0x6447], + ["93DB",0x69D8], + ["93DC",0x8B21], + ["93DD",0x66DC], + ["93DE",0x6765], + ["93DF",0x983C], + ["93E0",0x4E71], + ["93E1",0x89A7], + ["93E2",0x7ADC], + ["93E3",0x9686], + ["93E4",0x65C5], + ["93E5",0x4E21], + ["93E6",0x731F], + ["93E7",0x7DD1], + ["93E8",0x6D99], + ["93E9",0x5841], + ["93EA",0x793C], + ["93EB",0x52B1], + ["93EC",0x623B], + ["93ED",0x970A], + ["93EE",0x9F62], + ["93EF",0x66A6], + ["93F0",0x6B74], + ["93F1",0x604B], + ["93F2",0x7DF4], + ["93F3",0x932C], + ["93F4",0x7089], + ["93F5",0x52B4], + ["93F6",0x697C], + ["93F7",0x9332], + ["93F8",0x6E7E], + ["93F9",0x5F25], + ["93FA",0x4E80], + ["93FB",0x66FD], + ["93FC",0x59C9], + ["93FD",0x5B8D], + ["93FE",0x5D8B], + ["9440",0x6A2B], + ["9441",0x691B], + ["9442",0x55B0], + ["9443",0x7C82], + ["9444",0x8FBC], + ["9445",0x698A], + ["9446",0x54B2], + ["9447",0x9D2B], + ["9448",0x96EB], + ["9449",0x6919], + ["944A",0x63C3], + ["944B",0x99C4], + ["944C",0x51E7], + ["944D",0x6802], + ["944E",0x8FBB], + ["944F",0x50CD], + ["9450",0x5CE0], + ["9451",0x6803], + ["9452",0x51EA], + ["9453",0x5302], + ["9454",0x7872], + ["9455",0x7551], + ["9456",0x7560], + ["9457",0x567A], + ["9458",0x92F2], + ["9459",0x5840], + ["945A",0x67FE], + ["945B",0x4FE3], + ["945C",0x6762], + ["945D",0x7C7E], + ["945E",0x5301], + ["945F",0x4FE4], + ["9460",0x4FE5], + ["9461",0x51E9], + ["9462",0x53FA], + ["9463",0x54D8], + ["9464",0x56CE], + ["9465",0x5726], + ["9466",0x5737], + ["9467",0x5738], + ["9468",0x5788], + ["9469",0x57B3], + ["946A",0x57AA], + ["946B",0x57B0], + ["946C",0x57D6], + ["946D",0x5870], + ["946E",0x58B9], + ["946F",0x58D7], + ["9470",0x5C76], + ["9471",0x5CBC], + ["9472",0x5CC5], + ["9473",0x5CBE], + ["9474",0x5D76], + ["9475",0x5F16], + ["9476",0x603A], + ["9477",0x63B5], + ["9478",0x6741], + ["9479",0x6763], + ["947A",0x67A1], + ["947B",0x68BA], + ["947C",0x6925], + ["947D",0x6928], + ["947E",0x6A7A], + ["94A1",0x6923], + ["94A2",0x6921], + ["94A3",0x697E], + ["94A4",0x6981], + ["94A5",0x69DD], + ["94A6",0x6A2E], + ["94A7",0x6A72], + ["94A8",0x6B1F], + ["94A9",0x6BDF], + ["94AA",0x6E15], + ["94AB",0x7195], + ["94AC",0x74E7], + ["94AD",0x74F2], + ["94AE",0x74F0], + ["94AF",0x74F1], + ["94B0",0x74F8], + ["94B1",0x7505], + ["94B2",0x7569], + ["94B3",0x766A], + ["94B4",0x7874], + ["94B5",0x7ACD], + ["94B6",0x7ACF], + ["94B7",0x7AD5], + ["94B8",0x7AD3], + ["94B9",0x7AE1], + ["94BA",0x7AF0], + ["94BB",0x7B02], + ["94BC",0x7C13], + ["94BD",0x7C17], + ["94BE",0x7C90], + ["94BF",0x7CAD], + ["94C0",0x7CC0], + ["94C1",0x7CD8], + ["94C2",0x7D9B], + ["94C3",0x7E05], + ["94C4",0x7E67], + ["94C5",0x7E83], + ["94C6",0x7E90], + ["94C7",0x81A4], + ["94C8",0x825D], + ["94C9",0x8422], + ["94CA",0x84D9], + ["94CB",0x8630], + ["94CC",0x86AB], + ["94CD",0x86EF], + ["94CE",0x88B0], + ["94CF",0x88C3], + ["94D0",0x88C4], + ["94D1",0x8904], + ["94D2",0xE72F], + ["94D3",0x8EBE], + ["94D4",0x8EC8], + ["94D5",0x8F4C], + ["94D6",0x8FB7], + ["94D7",0x8FDA], + ["94D8",0x9027], + ["94D9",0x9056], + ["94DA",0x9335], + ["94DB",0x933B], + ["94DC",0x93B9], + ["94DD",0x958A], + ["94DE",0x9596], + ["94DF",0x9779], + ["94E0",0x9786], + ["94E1",0x9790], + ["94E2",0x98AA], + ["94E3",0x9B96], + ["94E4",0x9B97], + ["94E5",0x9BB4], + ["94E6",0x9BCF], + ["94E7",0x9BD1], + ["94E8",0x9BD2], + ["94E9",0x9BF2], + ["94EA",0x9BF1], + ["94EB",0x9C30], + ["94EC",0x9C47], + ["94ED",0x9C5A], + ["94EE",0x9CF0], + ["94EF",0x9D46], + ["94F0",0x9D64], + ["94F1",0x9DAB], + ["94F2",0x4E44], + ["94F3",0x544F], + ["94F4",0x6318], + ["94F5",0x9BB1], + ["94F6",0x9C69], + ["94F7",0x9D47], + ["94F8",0x9D65], + ["94F9",0x9C2F], + ["94FA",0x9EBF], + ["94FB",0x51B4], + ["94FC",0x546A], + ["94FD",0x67A0], + ["94FE",0x9B8E], + ["9540",0x90A8], + ["9541",0x51B2], + ["9542",0x362D], + ["9543",0x62C5], + ["9544",0x52C5], + ["9545",0x67B1], + ["9546",0x54CD], + ["9547",0x6052], + ["9548",0x53C1], + ["9549",0x70F1], + ["954A",0x5803], + ["954B",0x555F], + ["954C",0x920E], + ["954D",0x7740], + ["954E",0x743C], + ["954F",0x714A], + ["9550",0x6ED9], + ["9551",0x53E0], + ["9552",0x732E], + ["9553",0x88CF], + ["9554",0x788D], + ["9555",0x7FA3], + ["9556",0x7DAB], + ["9557",0x8E2A], + ["9558",0x945B], + ["9559",0x636C], + ["955A",0x5FA7], + ["955B",0x5C05], + ["955C",0x803B], + ["955D",0x5CEF], + ["955E",0x39B8], + ["955F",0x7151], + ["9560",0x8CCD], + ["9561",0x97EE], + ["9562",0x5872], + ["9563",0x5A63], + ["9564",0x7F78], + ["9565",0x5D57], + ["9566",0x616F], + ["9567",0x6998], + ["9568",0x7D89], + ["9569",0x7CAE], + ["956A",0x7DB3], + ["956B",0x6F81], + ["956C",0x5AFA], + ["956D",0x58BB], + ["956E",0x7255], + ["956F",0x764E], + ["9570",0x8F2D], + ["9571",0x92B9], + ["9572",0x9D5E], + ["9573",0x9EAF], + ["9574",0x7F47], + ["9575",0x9DC4], + ["9576",0x8D18], + ["9577",0x51B3], + ["9578",0x866C], + ["9579",0x54A4], + ["957A",0x53A6], + ["957B",0x5226], + ["957C",0x6736], + ["957D",0x4E21], + ["957E",0x5374], + ["95A1",0x5EF9], + ["95A2",0x52B9], + ["95A3",0x548F], + ["95A4",0x5EF8], + ["95A5",0x59AC], + ["95A6",0x6031], + ["95A7",0x7240], + ["95A8",0x8117], + ["95A9",0x763B], + ["95AA",0x5F0D], + ["95AB",0x664B], + ["95AC",0x66A8], + ["95AD",0x6164], + ["95AE",0x634F], + ["95AF",0x70DF], + ["95B0",0x6D24], + ["95B1",0x7CA7], + ["95B2",0x7CC9], + ["95B3",0x53D9], + ["95B4",0x654D], + ["95B5",0x5742], + ["95B6",0x73CF], + ["95B7",0x80C6], + ["95B8",0x3551], + ["95B9",0x6B35], + ["95BA",0x7881], + ["95BB",0x53CC], + ["95BC",0x732B], + ["95BD",0x732A], + ["95BE",0x73C9], + ["95BF",0x754A], + ["95C0",0x59F9], + ["95C1",0x71C4], + ["95C2",0x750E], + ["95C3",0x7DDC], + ["95C4",0x99E1], + ["95C5",0x89A9], + ["95C6",0x6FF6], + ["95C7",0x3A57], + ["95C8",0x64EA], + ["95C9",0x3BED], + ["95CA",0x6CA1], + ["95CB",0x6E7C], + ["95CC",0x7567], + ["95CD",0x5869], + ["95CE",0x5869], + ["95CF",0x5204], + ["95D0",0xE7CA], + ["95D1",0x6187], + ["95D2",0x643A], + ["95D3",0x81EF], + ["95D4",0xE7CE], + ["95D5",0x51B5], + ["95D6",0x51D1], + ["95D7",0x6C79], + ["95D8",0x591F], + ["95D9",0x8FF9], + ["95DA",0x98F1], + ["95DB",0x6537], + ["95DC",0x8109], + ["95DD",0x88B4], + ["95DE",0x3A2A], + ["95DF",0x8EAD], + ["95E0",0x7F97], + ["95E1",0x9A10], + ["95E2",0x7D25], + ["95E3",0x6AC8], + ["95E4",0x518C], + ["95E5",0x5227], + ["95E6",0xE7E0], + ["95E7",0x811A], + ["95E8",0x53A0], + ["95E9",0x53A2], + ["95EA",0x6C5A], + ["95EB",0x6C37], + ["95EC",0x8218], + ["95ED",0x5586], + ["95EE",0x5EFB], + ["95EF",0x51C9], + ["95F0",0x78B1], + ["95F1",0x9262], + ["95F2",0x536D], + ["95F3",0x51C3], + ["95F4",0xE7EE], + ["95F5",0x8471], + ["95F6",0x8987], + ["95F7",0x976D], + ["95F8",0x8B90], + ["95F9",0x96A3], + ["95FA",0x5EFC], + ["95FB",0x96B7], + ["95FC",0x514E], + ["95FD",0x9C10], + ["95FE",0x6630], + ["9640",0x9255], + ["9641",0x7808], + ["9642",0x9345], + ["9643",0x9273], + ["9644",0x9369], + ["9645",0xE7FE], + ["9646",0xE7FF], + ["9647",0xE800], + ["9648",0xE801], + ["9649",0x91DF], + ["964A",0x91DA], + ["964B",0x7854], + ["964C",0x7866], + ["964D",0x7888], + ["964E",0x78B6], + ["964F",0x78C7], + ["9650",0x78D2], + ["9651",0x78D7], + ["9652",0x212B], + ["9653",0x21CB], + ["9654",0x78E4], + ["9655",0x78EE], + ["9656",0x78F0], + ["9657",0x78F1], + ["9658",0x78F5], + ["9659",0x7932], + ["965A",0x7933], + ["965B",0x7936], + ["965C",0x7958], + ["965D",0x3013], + ["965E",0x7959], + ["965F",0x7971], + ["9660",0x797E], + ["9661",0x7983], + ["9662",0x7986], + ["9663",0x7987], + ["9664",0x7991], + ["9665",0x7999], + ["9666",0x799F], + ["9667",0x79A5], + ["9668",0x79E2], + ["9669",0x79F1], + ["966A",0x79F4], + ["966B",0x7A2A], + ["966C",0x7A3A], + ["966D",0x7A45], + ["966E",0x7A65], + ["966F",0x7ABC], + ["9670",0x7AC2], + ["9671",0x7AC9], + ["9672",0x7ADB], + ["9673",0x7AE9], + ["9674",0x7AFE], + ["9675",0x7B0C], + ["9676",0x7B27], + ["9677",0x7B29], + ["9678",0x7B42], + ["9679",0x7B43], + ["967A",0x7B55], + ["967B",0x7B6F], + ["967C",0x7BB2], + ["967D",0x69DE], + ["967E",0x69F9], + ["96A1",0x9176], + ["96A2",0x815A], + ["96A3",0x82F7], + ["96A4",0x544B], + ["96A5",0x8132], + ["96A6",0x80BD], + ["96A7",0x8418], + ["96A8",0x915E], + ["96A9",0x9170], + ["96AA",0x918C], + ["96AB",0x8148], + ["96AC",0xE843], + ["96AD",0x4436], + ["96AE",0x8159], + ["96AF",0x809F], + ["96B0",0xE847], + ["96B1",0x5549], + ["96B2",0x5421], + ["96B3",0x54DA], + ["96B4",0x5432], + ["96B5",0x55B9], + ["96B6",0x5494], + ["96B7",0xE84E], + ["96B8",0x7852], + ["96B9",0x7845], + ["96BA",0x784C], + ["96BB",0xE852], + ["96BC",0x84BD], + ["96BD",0x841C], + ["96BE",0x82C4], + ["96BF",0xE856], + ["96C0",0x847B], + ["96C1",0x8B2D], + ["96C2",0xE859], + ["96C3",0x574B], + ["96C4",0xE85B], + ["96C5",0xE85C], + ["96C6",0x5745], + ["96C7",0x87CE], + ["96C8",0x5660], + ["96C9",0x55EA], + ["96CA",0x567B], + ["96CB",0x80BC], + ["96CC",0xE863], + ["96CD",0x78B8], + ["96CE",0x6A0C], + ["96CF",0x54CC], + ["96D0",0x7BD0], + ["96D1",0x7BEC], + ["96D2",0x7BFA], + ["96D3",0x7C15], + ["96D4",0x7C1B], + ["96D5",0x7C35], + ["96D6",0x7C44], + ["96D7",0x7C6D], + ["96D8",0x7C8E], + ["96D9",0x7CB8], + ["96DA",0x7CC3], + ["96DB",0x7CE6], + ["96DC",0x7CED], + ["96DD",0x7CF3], + ["96DE",0x7CF5], + ["96DF",0x7CF9], + ["96E0",0xE877], + ["96E1",0x7CFC], + ["96E2",0x7D8B], + ["96E3",0x7D97], + ["96E4",0x7DA4], + ["96E5",0x7DA8], + ["96E6",0x7DCD], + ["96E7",0x7DD0], + ["96E8",0x7DD3], + ["96E9",0x7DE5], + ["96EA",0x7DFD], + ["96EB",0x6A12], + ["96EC",0x6A22], + ["96ED",0x6A30], + ["96EE",0x6A36], + ["96EF",0x6A65], + ["96F0",0xE887], + ["96F1",0xE888], + ["96F2",0xE889], + ["96F3",0xE88A], + ["96F4",0xE88B], + ["96F5",0xE88C], + ["96F6",0xE88D], + ["96F7",0xE88E], + ["96F8",0x6A73], + ["96F9",0x6A78], + ["96FA",0xE891], + ["96FB",0xE892], + ["96FC",0x6A7C], + ["96FD",0x6AA9], + ["96FE",0x6AAA], + ["9740",0x24EA], + ["9741",0x2460], + ["9742",0x2461], + ["9743",0x2462], + ["9744",0x2463], + ["9745",0x2464], + ["9746",0x2465], + ["9747",0x2466], + ["9748",0x2467], + ["9749",0x2468], + ["974A",0x2469], + ["974B",0x246A], + ["974C",0x246B], + ["974D",0x246C], + ["974E",0x246D], + ["974F",0x246E], + ["9750",0x246F], + ["9751",0x2470], + ["9752",0x2471], + ["9753",0x2472], + ["9754",0x2473], + ["9755",0x9344], + ["9756",0x93AD], + ["9757",0x93C6], + ["9758",0x93E5], + ["9759",0x941A], + ["975A",0x9421], + ["975B",0x943E], + ["975C",0x9441], + ["975D",0x9453], + ["975E",0x945A], + ["975F",0x949A], + ["9760",0x94B7], + ["9761",0x94D8], + ["9762",0x94DE], + ["9763",0x94F3], + ["9764",0x9503], + ["9765",0x950E], + ["9766",0x950F], + ["9767",0x9518], + ["9768",0x951D], + ["9769",0x952A], + ["976A",0x952B], + ["976B",0x953F], + ["976C",0x9545], + ["976D",0x954E], + ["976E",0x9562], + ["976F",0x9565], + ["9770",0x9569], + ["9771",0x9572], + ["9772",0x9587], + ["9773",0x9599], + ["9774",0x95A0], + ["9775",0x95B2], + ["9776",0x9666], + ["9777",0x969D], + ["9778",0x96AF], + ["9779",0x96B2], + ["977A",0x9733], + ["977B",0x973B], + ["977C",0x974D], + ["977D",0x974F], + ["977E",0x9751], + ["97A1",0x9755], + ["97A2",0x9764], + ["97A3",0x976B], + ["97A4",0x9771], + ["97A5",0x9792], + ["97A6",0x97B2], + ["97A7",0x97F2], + ["97A8",0x983D], + ["97A9",0x9854], + ["97AA",0x98A5], + ["97AB",0x98C3], + ["97AC",0x98DA], + ["97AD",0x98EE], + ["97AE",0x991D], + ["97AF",0x9920], + ["97B0",0x9963], + ["97B1",0x9980], + ["97B2",0x9987], + ["97B3",0x998D], + ["97B4",0x9993], + ["97B5",0x9995], + ["97B6",0x99BC], + ["97B7",0x99C8], + ["97B8",0x99F2], + ["97B9",0x9AB6], + ["97BA",0x9AD9], + ["97BB",0x9ADE], + ["97BC",0x9B0F], + ["97BD",0x9B49], + ["97BE",0x9B72], + ["97BF",0x9B83], + ["97C0",0x9B9F], + ["97C1",0x9BBB], + ["97C2",0x9BE3], + ["97C3",0x9BF5], + ["97C4",0x9C00], + ["97C5",0x9C04], + ["97C6",0x9C1B], + ["97C7",0x24B6], + ["97C8",0x24B7], + ["97C9",0x24B8], + ["97CA",0x24B9], + ["97CB",0x24BA], + ["97CC",0x24BB], + ["97CD",0x24BC], + ["97CE",0x24BD], + ["97CF",0x24BE], + ["97D0",0x24BF], + ["97D1",0x24C0], + ["97D2",0x24C1], + ["97D3",0x24C2], + ["97D4",0x24C3], + ["97D5",0x24C4], + ["97D6",0x24C5], + ["97D7",0x24C6], + ["97D8",0x24C7], + ["97D9",0x24C8], + ["97DA",0x24C9], + ["97DB",0x24CA], + ["97DC",0x24CB], + ["97DD",0x24CC], + ["97DE",0x24CD], + ["97DF",0x24CE], + ["97E0",0x24CF], + ["97E1",0x24D0], + ["97E2",0x24D1], + ["97E3",0x24D2], + ["97E4",0x24D3], + ["97E5",0x24D4], + ["97E6",0x24D5], + ["97E7",0x24D6], + ["97E8",0x24D7], + ["97E9",0x24D8], + ["97EA",0x24D9], + ["97EB",0x24DA], + ["97EC",0x24DB], + ["97ED",0x24DC], + ["97EE",0x24DD], + ["97EF",0x24DE], + ["97F0",0x24DF], + ["97F1",0x24E0], + ["97F2",0x24E1], + ["97F3",0x24E2], + ["97F4",0x24E3], + ["97F5",0x24E4], + ["97F6",0x24E5], + ["97F7",0x24E6], + ["97F8",0x24E7], + ["97F9",0x24E8], + ["97FA",0x24E9], + ["97FB",0x00AE], + ["97FC",0x2122], + ["97FD",0xE931], + ["97FE",0xE932], + ["9840",0x9C76], + ["9841",0x278A], + ["9842",0x278B], + ["9843",0x278C], + ["9844",0x278D], + ["9845",0x278E], + ["9846",0x278F], + ["9847",0x2790], + ["9848",0x2791], + ["9849",0x2792], + ["984A",0x2793], + ["984B",0x9C85], + ["984C",0x9C86], + ["984D",0x9C87], + ["984E",0x9C8B], + ["984F",0x9C90], + ["9850",0x9C9E], + ["9851",0x9CAE], + ["9852",0x9CB0], + ["9853",0x9CB2], + ["9854",0x9CB4], + ["9855",0x9CBA], + ["9856",0x9CBC], + ["9857",0x9CBD], + ["9858",0x9CC6], + ["9859",0x9CC7], + ["985A",0x9CCA], + ["985B",0x9CCB], + ["985C",0x9CD3], + ["985D",0x9CD8], + ["985E",0x9CD9], + ["985F",0x9CE2], + ["9860",0x9CEB], + ["9861",0x9CEC], + ["9862",0x9D2A], + ["9863",0x9D48], + ["9864",0x9D50], + ["9865",0x9D7A], + ["9866",0x9DC6], + ["9867",0x9E4B], + ["9868",0x9E55], + ["9869",0x9E5B], + ["986A",0x9E71], + ["986B",0x9EAA], + ["986C",0x9EBD], + ["986D",0x9EC4], + ["986E",0x9EE2], + ["986F",0x9EEA], + ["9870",0x9F08], + ["9871",0x9F0B], + ["9872",0x9F0D], + ["9873",0x9F21], + ["9874",0x9F44], + ["9875",0x9F51], + ["9876",0x9F9D], + ["9877",0xFA0E], + ["9878",0xFA0F], + ["9879",0xFA11], + ["987A",0xFA13], + ["987B",0xFA14], + ["987C",0xFA18], + ["987D",0xFA1F], + ["987E",0xFA20], + ["98A1",0xFA21], + ["98A2",0xFA23], + ["98A3",0xFA24], + ["98A4",0xFA27], + ["98A5",0xFA28], + ["98A6",0xFA29], + ["98A7",0x4E04], + ["98A8",0x4E2F], + ["98A9",0x4E81], + ["98AA",0x4E87], + ["98AB",0x4EA3], + ["98AC",0x4EB7], + ["98AD",0x4EBC], + ["98AE",0x4EF8], + ["98AF",0x4F28], + ["98B0",0x4F29], + ["98B1",0x4F37], + ["98B2",0x4F42], + ["98B3",0x4F45], + ["98B4",0x4F4B], + ["98B5",0x4F72], + ["98B6",0x4FA2], + ["98B7",0x4FB0], + ["98B8",0x4FBD], + ["98B9",0x4FC8], + ["98BA",0x4FCC], + ["98BB",0x4FF0], + ["98BC",0x4FF2], + ["98BD",0x4FF9], + ["98BE",0x5003], + ["98BF",0x5008], + ["98C0",0x5034], + ["98C1",0x503B], + ["98C2",0x5058], + ["98C3",0x5066], + ["98C4",0x5081], + ["98C5",0x5090], + ["98C6",0x50BC], + ["98C7",0x50D0], + ["98C8",0x50DF], + ["98C9",0x50E1], + ["98CA",0x50FC], + ["98CB",0x510D], + ["98CC",0x512B], + ["98CD",0x5160], + ["98CE",0x51AE], + ["98CF",0x51B8], + ["98D0",0x51D2], + ["98D1",0x51E2], + ["98D2",0x5205], + ["98D3",0x5234], + ["98D4",0x523C], + ["98D5",0x5259], + ["98D6",0x5268], + ["98D7",0x5279], + ["98D8",0x52A4], + ["98D9",0x52CC], + ["98DA",0x5327], + ["98DB",0x5342], + ["98DC",0x535D], + ["98DD",0x537D], + ["98DE",0x537E], + ["98DF",0x53C5], + ["98E0",0x53D0], + ["98E1",0x53D2], + ["98E2",0x53FE], + ["98E3",0x546D], + ["98E4",0x5485], + ["98E5",0x5493], + ["98E6",0x549E], + ["98E7",0x54B9], + ["98E8",0x54E3], + ["98E9",0x54EF], + ["98EA",0x550D], + ["98EB",0x5518], + ["98EC",0x5525], + ["98ED",0x5528], + ["98EE",0x552B], + ["98EF",0x5547], + ["98F0",0x5579], + ["98F1",0x5590], + ["98F2",0x55B4], + ["98F3",0x55C1], + ["98F4",0x55D7], + ["98F5",0x55D8], + ["98F6",0x55FB], + ["98F7",0x4FB4], + ["98F8",0x5621], + ["98F9",0x2203], + ["98FA",0x5652], + ["98FB",0xE9CC], + ["98FC",0x263B], + ["98FD",0xE9CE], + ["98FE",0xE9CF], + ["9940",0x565D], + ["9941",0x2474], + ["9942",0x2475], + ["9943",0x2476], + ["9944",0x2477], + ["9945",0x2478], + ["9946",0x2479], + ["9947",0x247A], + ["9948",0x247B], + ["9949",0x247C], + ["994A",0x247D], + ["994B",0x247E], + ["994C",0x247F], + ["994D",0x2480], + ["994E",0x2481], + ["994F",0x2482], + ["9950",0x2483], + ["9951",0x2484], + ["9952",0x2485], + ["9953",0x2486], + ["9954",0x2487], + ["9955",0x5661], + ["9956",0x5689], + ["9957",0x568B], + ["9958",0x569E], + ["9959",0x56A1], + ["995A",0x56B1], + ["995B",0x56B9], + ["995C",0x56BF], + ["995D",0x56D6], + ["995E",0x56EF], + ["995F",0x5715], + ["9960",0x571D], + ["9961",0x5732], + ["9962",0x573D], + ["9963",0x573F], + ["9964",0x5743], + ["9965",0x21D4], + ["9966",0x577E], + ["9967",0x578A], + ["9968",0x578D], + ["9969",0x5790], + ["996A",0x579C], + ["996B",0x57BB], + ["996C",0x57BE], + ["996D",0x57C4], + ["996E",0x57DE], + ["996F",0x57FE], + ["9970",0x5812], + ["9971",0x5822], + ["9972",0x5847], + ["9973",0x585C], + ["9974",0x585F], + ["9975",0x5873], + ["9976",0x58A7], + ["9977",0x58AA], + ["9978",0x58B0], + ["9979",0x58B5], + ["997A",0x58B6], + ["997B",0x58CB], + ["997C",0x58D0], + ["997D",0x58E0], + ["997E",0x5905], + ["99A1",0x5911], + ["99A2",0x5989], + ["99A3",0x5994], + ["99A4",0x599A], + ["99A5",0x599F], + ["99A6",0x59B0], + ["99A7",0x59B8], + ["99A8",0x59C4], + ["99A9",0x59EF], + ["99AA",0x59F0], + ["99AB",0x59F8], + ["99AC",0x5A02], + ["99AD",0x5A0B], + ["99AE",0x5A0D], + ["99AF",0x5A12], + ["99B0",0x5A21], + ["99B1",0x5A24], + ["99B2",0x5A27], + ["99B3",0x5A2A], + ["99B4",0x5A2B], + ["99B5",0x5A2C], + ["99B6",0x5A3D], + ["99B7",0x5A45], + ["99B8",0x5A54], + ["99B9",0x5A59], + ["99BA",0x5A61], + ["99BB",0x5A68], + ["99BC",0x5A6B], + ["99BD",0x5A6E], + ["99BE",0x5A71], + ["99BF",0x5A79], + ["99C0",0x5A7E], + ["99C1",0x5A81], + ["99C2",0x5A82], + ["99C3",0x5A86], + ["99C4",0x5A88], + ["99C5",0x5A91], + ["99C6",0x5A99], + ["99C7",0x5AA0], + ["99C8",0x5AA1], + ["99C9",0x5AAB], + ["99CA",0x5AC3], + ["99CB",0x5ACE], + ["99CC",0x5ACF], + ["99CD",0x5AD3], + ["99CE",0x5AE4], + ["99CF",0x5AF0], + ["99D0",0x5AFE], + ["99D1",0x5B0D], + ["99D2",0x5B11], + ["99D3",0x5B15], + ["99D4",0x5B1F], + ["99D5",0x5B2B], + ["99D6",0x5B41], + ["99D7",0x5B44], + ["99D8",0x5B46], + ["99D9",0x5B4A], + ["99DA",0x5B4F], + ["99DB",0x5B68], + ["99DC",0x5B74], + ["99DD",0x5B76], + ["99DE",0x5B7C], + ["99DF",0x5B82], + ["99E0",0x5B90], + ["99E1",0x249C], + ["99E2",0x249D], + ["99E3",0x249E], + ["99E4",0x249F], + ["99E5",0x24A0], + ["99E6",0x24A1], + ["99E7",0x24A2], + ["99E8",0x24A3], + ["99E9",0x24A4], + ["99EA",0x24A5], + ["99EB",0x24A6], + ["99EC",0x24A7], + ["99ED",0x24A8], + ["99EE",0x24A9], + ["99EF",0x24AA], + ["99F0",0x24AB], + ["99F1",0x24AC], + ["99F2",0x24AD], + ["99F3",0x24AE], + ["99F4",0x24AF], + ["99F5",0x24B0], + ["99F6",0x24B1], + ["99F7",0x24B2], + ["99F8",0x24B3], + ["99F9",0x24B4], + ["99FA",0x24B5], + ["99FB",0xEA69], + ["99FC",0x3232], + ["99FD",0x3231], + ["99FE",0x6AAB], + ["9A40",0x5B96], + ["9A41",0x2488], + ["9A42",0x2489], + ["9A43",0x248A], + ["9A44",0x248B], + ["9A45",0x248C], + ["9A46",0x248D], + ["9A47",0x248E], + ["9A48",0x248F], + ["9A49",0x2490], + ["9A4A",0x2491], + ["9A4B",0x2492], + ["9A4C",0x2493], + ["9A4D",0x2494], + ["9A4E",0x2495], + ["9A4F",0x2496], + ["9A50",0x2497], + ["9A51",0x2498], + ["9A52",0x2499], + ["9A53",0x249A], + ["9A54",0x249B], + ["9A55",0x5BD5], + ["9A56",0x5BD7], + ["9A57",0x5C23], + ["9A58",0x5C85], + ["9A59",0x5C9E], + ["9A5A",0x5CC2], + ["9A5B",0x5D10], + ["9A5C",0x5D2C], + ["9A5D",0x5D2F], + ["9A5E",0x5D48], + ["9A5F",0x5D56], + ["9A60",0x5D70], + ["9A61",0x5D7B], + ["9A62",0x5D85], + ["9A63",0x5DA4], + ["9A64",0x5DAB], + ["9A65",0x5DB6], + ["9A66",0x5DC1], + ["9A67",0x5DD7], + ["9A68",0x5E09], + ["9A69",0x5E48], + ["9A6A",0x5E92], + ["9A6B",0x5EBD], + ["9A6C",0x5F0E], + ["9A6D",0x5F72], + ["9A6E",0x5FB1], + ["9A6F",0x5FC2], + ["9A70",0x5FDB], + ["9A71",0x5FDF], + ["9A72",0x6023], + ["9A73",0x607E], + ["9A74",0x60D7], + ["9A75",0x6107], + ["9A76",0x610C], + ["9A77",0x6119], + ["9A78",0x6122], + ["9A79",0x6150], + ["9A7A",0x6160], + ["9A7B",0x6181], + ["9A7C",0x6195], + ["9A7D",0x61B9], + ["9A7E",0x61C0], + ["9AA1",0x61CF], + ["9AA2",0x61D3], + ["9AA3",0x61DA], + ["9AA4",0x6290], + ["9AA5",0x6331], + ["9AA6",0x2283], + ["9AA7",0x6337], + ["9AA8",0x6379], + ["9AA9",0x638B], + ["9AAA",0x63C1], + ["9AAB",0x63E2], + ["9AAC",0x63E6], + ["9AAD",0x63FB], + ["9AAE",0x63FE], + ["9AAF",0x6407], + ["9AB0",0x6432], + ["9AB1",0x6438], + ["9AB2",0x643B], + ["9AB3",0x645A], + ["9AB4",0x6471], + ["9AB5",0x647C], + ["9AB6",0x648D], + ["9AB7",0x64AF], + ["9AB8",0x64B4], + ["9AB9",0x64B6], + ["9ABA",0x64DD], + ["9ABB",0x64E5], + ["9ABC",0x650A], + ["9ABD",0x6511], + ["9ABE",0x651F], + ["9ABF",0x655F], + ["9AC0",0x656D], + ["9AC1",0x6586], + ["9AC2",0x65B5], + ["9AC3",0x65BE], + ["9AC4",0x65D1], + ["9AC5",0x65D4], + ["9AC6",0x65E3], + ["9AC7",0x65FF], + ["9AC8",0x6618], + ["9AC9",0x6623], + ["9ACA",0x6663], + ["9ACB",0x666B], + ["9ACC",0x667D], + ["9ACD",0x6685], + ["9ACE",0x6692], + ["9ACF",0x669A], + ["9AD0",0x66A4], + ["9AD1",0x66AD], + ["9AD2",0x66B3], + ["9AD3",0x66B6], + ["9AD4",0x66CD], + ["9AD5",0x66CE], + ["9AD6",0x6702], + ["9AD7",0x670C], + ["9AD8",0x6719], + ["9AD9",0x6744], + ["9ADA",0x676B], + ["9ADB",0x678F], + ["9ADC",0x67A4], + ["9ADD",0x67BF], + ["9ADE",0x67D6], + ["9ADF",0x67D7], + ["9AE0",0x2282], + ["9AE1",0x680D], + ["9AE2",0x6810], + ["9AE3",0x681B], + ["9AE4",0x6836], + ["9AE5",0x6847], + ["9AE6",0x6856], + ["9AE7",0x6884], + ["9AE8",0x6888], + ["9AE9",0x68BD], + ["9AEA",0x68C3], + ["9AEB",0x68C5], + ["9AEC",0x6902], + ["9AED",0x6903], + ["9AEE",0x6909], + ["9AEF",0x6918], + ["9AF0",0x6943], + ["9AF1",0x6946], + ["9AF2",0x6964], + ["9AF3",0x6967], + ["9AF4",0x6972], + ["9AF5",0x6985], + ["9AF6",0x699F], + ["9AF7",0x69A2], + ["9AF8",0x69D1], + ["9AF9",0x69D5], + ["9AFA",0x69D6], + ["9AFB",0x9A21], + ["9AFC",0x9A26], + ["9AFD",0x9A2F], + ["9AFE",0x6AC1], + ["9B40",0x59BF], + ["9B41",0x69E1], + ["9B42",0x6A03], + ["9B43",0x6A1A], + ["9B44",0x6A1C], + ["9B45",0x6A2C], + ["9B46",0x6A2D], + ["9B47",0x6A33], + ["9B48",0x6A43], + ["9B49",0x6A45], + ["9B4A",0x6A4C], + ["9B4B",0x6A53], + ["9B4C",0x6A57], + ["9B4D",0x6A63], + ["9B4E",0x6A74], + ["9B4F",0x6A82], + ["9B50",0x6A8A], + ["9B51",0x6A8F], + ["9B52",0x6A99], + ["9B53",0x6AA7], + ["9B54",0x6AB1], + ["9B55",0x6AB5], + ["9B56",0x6ABE], + ["9B57",0x6AC9], + ["9B58",0x6AD4], + ["9B59",0x6AD8], + ["9B5A",0x6AF6], + ["9B5B",0x6B57], + ["9B5C",0x6B7A], + ["9B5D",0x6BDC], + ["9B5E",0x6C1C], + ["9B5F",0x6C31], + ["9B60",0x6C58], + ["9B61",0x6C6E], + ["9B62",0x6C75], + ["9B63",0x6C7F], + ["9B64",0x6CAF], + ["9B65",0x6CCB], + ["9B66",0x6CDF], + ["9B67",0x6CFF], + ["9B68",0x6D02], + ["9B69",0x6D05], + ["9B6A",0x6D06], + ["9B6B",0x6D26], + ["9B6C",0x6D57], + ["9B6D",0x6D5B], + ["9B6E",0x6D71], + ["9B6F",0x6D81], + ["9B70",0x6D8F], + ["9B71",0x6DA5], + ["9B72",0x6DB1], + ["9B73",0x6DFE], + ["9B74",0x6E02], + ["9B75",0x6E04], + ["9B76",0x6E0F], + ["9B77",0x6E18], + ["9B78",0x6E2A], + ["9B79",0x6E50], + ["9B7A",0x6E59], + ["9B7B",0x6E9A], + ["9B7C",0x6EB5], + ["9B7D",0x6EB8], + ["9B7E",0x6EDB], + ["9BA1",0x6EFA], + ["9BA2",0x6F04], + ["9BA3",0x6F0B], + ["9BA4",0x6F0C], + ["9BA5",0x6F16], + ["9BA6",0x6F17], + ["9BA7",0x6F34], + ["9BA8",0x6F3D], + ["9BA9",0x6F56], + ["9BAA",0x6F79], + ["9BAB",0x6F8A], + ["9BAC",0x6F9D], + ["9BAD",0x6F9F], + ["9BAE",0x6FBB], + ["9BAF",0x6FBE], + ["9BB0",0x6FD3], + ["9BB1",0x6FD9], + ["9BB2",0x6FF8], + ["9BB3",0x7003], + ["9BB4",0x704B], + ["9BB5",0x704D], + ["9BB6",0x7050], + ["9BB7",0x7054], + ["9BB8",0x705C], + ["9BB9",0x7067], + ["9BBA",0x7077], + ["9BBB",0x7079], + ["9BBC",0x708B], + ["9BBD",0x708F], + ["9BBE",0x70A0], + ["9BBF",0x70A3], + ["9BC0",0x70A5], + ["9BC1",0x70A6], + ["9BC2",0x70A7], + ["9BC3",0x70C4], + ["9BC4",0x70CC], + ["9BC5",0x70D0], + ["9BC6",0x70D6], + ["9BC7",0x026A], + ["9BC8",0x025B], + ["9BC9",0x00E6], + ["9BCA",0x028C], + ["9BCB",0x0251], + ["9BCC",0x0254], + ["9BCD",0x028A], + ["9BCE",0x025D], + ["9BCF",0x0259], + ["9BD0",0x025A], + ["9BD1",0x025C], + ["9BD2",0x0261], + ["9BD3",0x1E43], + ["9BD4",0x1E49], + ["9BD5",0x014A], + ["9BD6",0x1E3B], + ["9BD7",0x0275], + ["9BD8",0x00F0], + ["9BD9",0x0283], + ["9BDA",0x0292], + ["9BDB",0x02A7], + ["9BDC",0x02A4], + ["9BDD",0x00E3], + ["9BDE",0xEB86], + ["9BDF",0xEB87], + ["9BE0",0x026F], + ["9BE1",0x0278], + ["9BE2",0x0287], + ["9BE3",0xEB8B], + ["9BE4",0x00C7], + ["9BE5",0x0153], + ["9BE6",0x0252], + ["9BE7",0xFF47], + ["9BE8",0x02CB], + ["9BE9",0x02CF], + ["9BEA",0xFF41], + ["9BEB",0xFF42], + ["9BEC",0xFF44], + ["9BED",0xFF45], + ["9BEE",0xFF46], + ["9BEF",0xFF48], + ["9BF0",0xFF49], + ["9BF1",0xFF4A], + ["9BF2",0xFF4B], + ["9BF3",0xFF4C], + ["9BF4",0xFF4D], + ["9BF5",0xFF4E], + ["9BF6",0xFF4F], + ["9BF7",0xFF50], + ["9BF8",0xFF52], + ["9BF9",0xFF53], + ["9BFA",0xFF54], + ["9BFB",0xFF55], + ["9BFC",0xFF56], + ["9BFD",0xFF57], + ["9BFE",0xFF5A], + ["9C40",0x70F5], + ["9C41",0x3220], + ["9C42",0x3221], + ["9C43",0x3222], + ["9C44",0x3223], + ["9C45",0x3224], + ["9C46",0x3225], + ["9C47",0x3226], + ["9C48",0x3227], + ["9C49",0x3228], + ["9C4A",0x3229], + ["9C4B",0x70FE], + ["9C4C",0x7105], + ["9C4D",0x711D], + ["9C4E",0x7129], + ["9C4F",0x712B], + ["9C50",0x712C], + ["9C51",0x7133], + ["9C52",0x7135], + ["9C53",0x713B], + ["9C54",0x713E], + ["9C55",0x7140], + ["9C56",0x714F], + ["9C57",0x716B], + ["9C58",0x7175], + ["9C59",0x7177], + ["9C5A",0x717C], + ["9C5B",0x717E], + ["9C5C",0x718C], + ["9C5D",0x718E], + ["9C5E",0x7191], + ["9C5F",0x7196], + ["9C60",0x71A2], + ["9C61",0x71A3], + ["9C62",0x71AD], + ["9C63",0x71B4], + ["9C64",0x71B7], + ["9C65",0x71BA], + ["9C66",0x71D1], + ["9C67",0x71DD], + ["9C68",0x71EB], + ["9C69",0x7200], + ["9C6A",0x7209], + ["9C6B",0x720E], + ["9C6C",0x720F], + ["9C6D",0x7216], + ["9C6E",0x7217], + ["9C6F",0x7224], + ["9C70",0x5AA4], + ["9C71",0x722E], + ["9C72",0x2286], + ["9C73",0x7257], + ["9C74",0x725C], + ["9C75",0x7294], + ["9C76",0x7304], + ["9C77",0x7310], + ["9C78",0x7341], + ["9C79",0x7374], + ["9C7A",0x738C], + ["9C7B",0x738F], + ["9C7C",0x7398], + ["9C7D",0x739C], + ["9C7E",0x739E], + ["9CA1",0x73A7], + ["9CA2",0x73AA], + ["9CA3",0x73D5], + ["9CA4",0x73E1], + ["9CA5",0x73E2], + ["9CA6",0x73E4], + ["9CA7",0x73E6], + ["9CA8",0x73EF], + ["9CA9",0x73F3], + ["9CAA",0x2287], + ["9CAB",0x73F9], + ["9CAC",0x73FB], + ["9CAD",0x7402], + ["9CAE",0x7411], + ["9CAF",0x7412], + ["9CB0",0x7414], + ["9CB1",0x7415], + ["9CB2",0x7417], + ["9CB3",0x7419], + ["9CB4",0x741C], + ["9CB5",0x741E], + ["9CB6",0x741F], + ["9CB7",0x7437], + ["9CB8",0x7438], + ["9CB9",0x7439], + ["9CBA",0x7443], + ["9CBB",0x7445], + ["9CBC",0x7447], + ["9CBD",0x7448], + ["9CBE",0x7449], + ["9CBF",0x7453], + ["9CC0",0x7456], + ["9CC1",0x7465], + ["9CC2",0x746B], + ["9CC3",0x746C], + ["9CC4",0x7474], + ["9CC5",0x747A], + ["9CC6",0x7482], + ["9CC7",0x5382], + ["9CC8",0x5E7F], + ["9CC9",0x4E28], + ["9CCA",0x5E7A], + ["9CCB",0x5196], + ["9CCC",0x5B80], + ["9CCD",0x5369], + ["9CCE",0x2E87], + ["9CCF",0xEC14], + ["9CD0",0x5303], + ["9CD1",0x2612], + ["9CD2",0x8279], + ["9CD3",0x4491], + ["9CD4",0x2E8C], + ["9CD5",0x2E8A], + ["9CD6",0x4E36], + ["9CD7",0xEC1C], + ["9CD8",0x531A], + ["9CD9",0xEC1E], + ["9CDA",0xEC1F], + ["9CDB",0x2E95], + ["9CDC",0xEC21], + ["9CDD",0xEC22], + ["9CDE",0x2514], + ["9CDF",0x4E5A], + ["9CE0",0x8FB6], + ["9CE1",0x5EF4], + ["9CE2",0x5188], + ["9CE3",0x4E85], + ["9CE4",0xEC29], + ["9CE5",0x4E3F], + ["9CE6",0xEC2B], + ["9CE7",0xEC2C], + ["9CE8",0x4E5B], + ["9CE9",0x53B6], + ["9CEA",0x8F66], + ["9CEB",0x7E9F], + ["9CEC",0x8BA0], + ["9CED",0x8D1D], + ["9CEE",0x9E1F], + ["9CEF",0x95E8], + ["9CF0",0x9485], + ["9CF1",0x961D], + ["9CF2",0x624C], + ["9CF3",0x6C35], + ["9CF4",0x4EBB], + ["9CF5",0x5FC4], + ["9CF6",0x706C], + ["9CF7",0x2EAE], + ["9CF8",0x53E3], + ["9CF9",0x6AE2], + ["9CFA",0x9A3B], + ["9CFB",0x9A3C], + ["9CFC",0x9A58], + ["9CFD",0x9A5C], + ["9CFE",0x9A63], + ["9D40",0x260E], + ["9D41",0x2192], + ["9D42",0x2190], + ["9D43",0x2191], + ["9D44",0x2193], + ["9D45",0x21E8], + ["9D46",0x21E6], + ["9D47",0x21E7], + ["9D48",0x21E9], + ["9D49",0x21E8], + ["9D4A",0x21E6], + ["9D4B",0x21E7], + ["9D4C",0x21E9], + ["9D4D",0x261E], + ["9D4E",0x261C], + ["9D4F",0x261B], + ["9D50",0x261F], + ["9D51",0x3016], + ["9D52",0x3017], + ["9D53",0x25CB], + ["9D54",0x2715], + ["9D55",0x2713], + ["9D56",0x56FB], + ["9D57",0x263D], + ["9D58",0x591D], + ["9D59",0x664D], + ["9D5A",0x7225], + ["9D5B",0x2729], + ["9D5C",0x2721], + ["9D5D",0x263A], + ["9D5E",0x2639], + ["9D5F",0xEC63], + ["9D60",0xEC64], + ["9D61",0xEC65], + ["9D62",0xEC66], + ["9D63",0xEC67], + ["9D64",0x5C78], + ["9D65",0x266C], + ["9D66",0x266A], + ["9D67",0x5AD1], + ["9D68",0x5BB7], + ["9D69",0x5CFC], + ["9D6A",0xEC6E], + ["9D6B",0x2709], + ["9D6C",0x2702], + ["9D6D",0xEC71], + ["9D6E",0xEC72], + ["9D6F",0xEC73], + ["9D70",0xEC74], + ["9D71",0x5CD5], + ["9D72",0x676E], + ["9D73",0x7461], + ["9D74",0x749D], + ["9D75",0x7F53], + ["9D76",0x8593], + ["9D77",0x274F], + ["9D78",0xEC7C], + ["9D79",0xEC7D], + ["9D7A",0x5D78], + ["9D7B",0x5F3B], + ["9D7C",0xEC80], + ["9D7D",0x2501], + ["9D7E",0x2503], + ["9DA1",0xEC83], + ["9DA2",0xEC84], + ["9DA3",0xEC85], + ["9DA4",0xEC86], + ["9DA5",0xEC87], + ["9DA6",0xEC88], + ["9DA7",0xEC89], + ["9DA8",0xEC8A], + ["9DA9",0xEC8B], + ["9DAA",0xEC8C], + ["9DAB",0xEC8D], + ["9DAC",0xEC8E], + ["9DAD",0xEC8F], + ["9DAE",0xEC90], + ["9DAF",0xEC91], + ["9DB0",0x9AB2], + ["9DB1",0x9AE0], + ["9DB2",0x9B14], + ["9DB3",0x9B34], + ["9DB4",0x9B39], + ["9DB5",0x9B40], + ["9DB6",0x9B50], + ["9DB7",0x9B7F], + ["9DB8",0x263C], + ["9DB9",0x7D95], + ["9DBA",0x2601], + ["9DBB",0x9734], + ["9DBC",0x2602], + ["9DBD",0xEC9F], + ["9DBE",0xECA0], + ["9DBF",0xECA1], + ["9DC0",0x2708], + ["9DC1",0xECA3], + ["9DC2",0xECA4], + ["9DC3",0xECA5], + ["9DC4",0xECA6], + ["9DC5",0xECA7], + ["9DC6",0xECA8], + ["9DC7",0xECA9], + ["9DC8",0x213B], + ["9DC9",0x2121], + ["9DCA",0x66E7], + ["9DCB",0x6E57], + ["9DCC",0xECAE], + ["9DCD",0x7157], + ["9DCE",0x79CA], + ["9DCF",0x2116], + ["9DD0",0x816C], + ["9DD1",0x8AF9], + ["9DD2",0x9856], + ["9DD3",0xECB5], + ["9DD4",0xECB6], + ["9DD5",0x2620], + ["9DD6",0xECB8], + ["9DD7",0x2664], + ["9DD8",0x2660], + ["9DD9",0x2667], + ["9DDA",0x2663], + ["9DDB",0x2662], + ["9DDC",0x2666], + ["9DDD",0x2661], + ["9DDE",0x2665], + ["9DDF",0xECC1], + ["9DE0",0xECC2], + ["9DE1",0x6AE4], + ["9DE2",0x211E], + ["9DE3",0x33C2], + ["9DE4",0x33D8], + ["9DE5",0x33A1], + ["9DE6",0xECC8], + ["9DE7",0x33A5], + ["9DE8",0xECCA], + ["9DE9",0xECCB], + ["9DEA",0xECCC], + ["9DEB",0xECCD], + ["9DEC",0xECCE], + ["9DED",0x2611], + ["9DEE",0x9B81], + ["9DEF",0x9B8B], + ["9DF0",0x9B8D], + ["9DF1",0x9BDD], + ["9DF2",0x9BE9], + ["9DF3",0x9BED], + ["9DF4",0x9BF4], + ["9DF5",0x9C1F], + ["9DF6",0x9C20], + ["9DF7",0x9C26], + ["9DF8",0x9C53], + ["9DF9",0x9C5D], + ["9DFA",0x9C7B], + ["9DFB",0x9D0C], + ["9DFC",0x9D16], + ["9DFD",0x21B2], + ["9DFE",0x6B05], + ["9E40",0x8CE9], + ["9E41",0x8CF2], + ["9E42",0x8D03], + ["9E43",0x8D11], + ["9E44",0x8D1C], + ["9E45",0x8D7A], + ["9E46",0x8DA9], + ["9E47",0x8DC0], + ["9E48",0x8E01], + ["9E49",0x8E0E], + ["9E4A",0x8E46], + ["9E4B",0x8E68], + ["9E4C",0x8E71], + ["9E4D",0x8E7E], + ["9E4E",0x8E80], + ["9E4F",0x8EB6], + ["9E50",0x8EB9], + ["9E51",0x8EBC], + ["9E52",0x8EC3], + ["9E53",0x8EE4], + ["9E54",0x8EED], + ["9E55",0x8EF2], + ["9E56",0x8F30], + ["9E57",0x8F41], + ["9E58",0x8F4A], + ["9E59",0x8FA5], + ["9E5A",0x8FB3], + ["9E5B",0x8FB8], + ["9E5C",0x8FCA], + ["9E5D",0x8FCF], + ["9E5E",0x9008], + ["9E5F",0x9033], + ["9E60",0x9037], + ["9E61",0x9064], + ["9E62",0x906C], + ["9E63",0x91A9], + ["9E64",0x91B6], + ["9E65",0x91C4], + ["9E66",0x91FA], + ["9E67",0x9208], + ["9E68",0x9213], + ["9E69",0x9221], + ["9E6A",0x9228], + ["9E6B",0x922B], + ["9E6C",0x9235], + ["9E6D",0x923C], + ["9E6E",0x9241], + ["9E6F",0x9258], + ["9E70",0x925D], + ["9E71",0x925F], + ["9E72",0x926B], + ["9E73",0x926E], + ["9E74",0x9281], + ["9E75",0x9284], + ["9E76",0x9289], + ["9E77",0x928F], + ["9E78",0x92B1], + ["9E79",0x92BA], + ["9E7A",0x92BF], + ["9E7B",0x92D4], + ["9E7C",0x92DB], + ["9E7D",0x92E3], + ["9E7E",0x92E5], + ["9EA1",0x92EB], + ["9EA2",0x92EC], + ["9EA3",0x92F4], + ["9EA4",0x92F6], + ["9EA5",0x92FD], + ["9EA6",0x9303], + ["9EA7",0x9307], + ["9EA8",0x9330], + ["9EA9",0x9331], + ["9EAA",0x9340], + ["9EAB",0x9342], + ["9EAC",0x9343], + ["9EAD",0x935F], + ["9EAE",0x9362], + ["9EAF",0x9366], + ["9EB0",0x9368], + ["9EB1",0x9373], + ["9EB2",0x9374], + ["9EB3",0x9378], + ["9EB4",0x937D], + ["9EB5",0x9381], + ["9EB6",0x9384], + ["9EB7",0x9386], + ["9EB8",0x9387], + ["9EB9",0x9390], + ["9EBA",0x939C], + ["9EBB",0x93A0], + ["9EBC",0x93B8], + ["9EBD",0x93BB], + ["9EBE",0x93BD], + ["9EBF",0x93BF], + ["9EC0",0x93CB], + ["9EC1",0x93D3], + ["9EC2",0x93DB], + ["9EC3",0x93E0], + ["9EC4",0x93F0], + ["9EC5",0x93F1], + ["9EC6",0x93F3], + ["9EC7",0x93F4], + ["9EC8",0x9401], + ["9EC9",0x9404], + ["9ECA",0x9408], + ["9ECB",0x9417], + ["9ECC",0x941B], + ["9ECD",0x941D], + ["9ECE",0x9424], + ["9ECF",0x9425], + ["9ED0",0x9426], + ["9ED1",0x942D], + ["9ED2",0x9442], + ["9ED3",0x9443], + ["9ED4",0x944D], + ["9ED5",0x9454], + ["9ED6",0x9458], + ["9ED7",0x9465], + ["9ED8",0x9467], + ["9ED9",0x946C], + ["9EDA",0x9479], + ["9EDB",0x947B], + ["9EDC",0x9578], + ["9EDD",0x9585], + ["9EDE",0x95A6], + ["9EDF",0x95AA], + ["9EE0",0x9656], + ["9EE1",0x967B], + ["9EE2",0x96A5], + ["9EE3",0x96F4], + ["9EE4",0x971B], + ["9EE5",0x9736], + ["9EE6",0x9740], + ["9EE7",0x9741], + ["9EE8",0x9757], + ["9EE9",0x9787], + ["9EEA",0x9789], + ["9EEB",0x979B], + ["9EEC",0x97B1], + ["9EED",0x97BD], + ["9EEE",0x97C0], + ["9EEF",0x97C2], + ["9EF0",0x97D2], + ["9EF1",0x97E0], + ["9EF2",0x9814], + ["9EF3",0x9815], + ["9EF4",0x9823], + ["9EF5",0x9833], + ["9EF6",0x9868], + ["9EF7",0x98B7], + ["9EF8",0x98B9], + ["9EF9",0x98C7], + ["9EFA",0x98CA], + ["9EFB",0x98E0], + ["9EFC",0x98E1], + ["9EFD",0x98EC], + ["9EFE",0x98F5], + ["9F40",0x9D21], + ["9F41",0x9D34], + ["9F42",0x9D39], + ["9F43",0x9D49], + ["9F44",0x9D4E], + ["9F45",0x9D6D], + ["9F46",0x2237], + ["9F47",0x9D6E], + ["9F48",0x9D7C], + ["9F49",0x9D83], + ["9F4A",0x9D93], + ["9F4B",0x9DA5], + ["9F4C",0x222C], + ["9F4D",0x9DBD], + ["9F4E",0x6B81], + ["9F4F",0x6BB1], + ["9F50",0x9C4F], + ["9F51",0x9E90], + ["9F52",0x9DC0], + ["9F53",0xED91], + ["9F54",0xED92], + ["9F55",0x262F], + ["9F56",0x2630], + ["9F57",0x2637], + ["9F58",0x2633], + ["9F59",0x2634], + ["9F5A",0x2635], + ["9F5B",0x2632], + ["9F5C",0x2636], + ["9F5D",0x2631], + ["9F5E",0x9DC9], + ["9F5F",0x9DD4], + ["9F60",0x9DFC], + ["9F61",0x9E0A], + ["9F62",0x9E0C], + ["9F63",0x9E0E], + ["9F64",0x9E18], + ["9F65",0x9E7B], + ["9F66",0x9E85], + ["9F67",0x9EA2], + ["9F68",0x9EAC], + ["9F69",0x9EB1], + ["9F6A",0x9EC1], + ["9F6B",0x9EC6], + ["9F6C",0x9EC7], + ["9F6D",0x9EF1], + ["9F6E",0x9EF8], + ["9F6F",0x9F27], + ["9F70",0x990E], + ["9F71",0x9919], + ["9F72",0x991C], + ["9F73",0x9937], + ["9F74",0x995D], + ["9F75",0x9962], + ["9F76",0x999B], + ["9F77",0x99A4], + ["9F78",0x99AA], + ["9F79",0x99B8], + ["9F7A",0x99E0], + ["9F7B",0x99E6], + ["9F7C",0x99F5], + ["9F7D",0x9A1F], + ["9F7E",0x7DFE], + ["9FA1",0x7E07], + ["9FA2",0x7E5B], + ["9FA3",0x7E65], + ["9FA4",0x7E6C], + ["9FA5",0x7F37], + ["9FA6",0x7F40], + ["9FA7",0x7F41], + ["9FA8",0x7F49], + ["9FA9",0x7F52], + ["9FAA",0x7F8F], + ["9FAB",0x7F93], + ["9FAC",0x7FB4], + ["9FAD",0x7FDD], + ["9FAE",0x7FE7], + ["9FAF",0x7FFA], + ["9FB0",0x8002], + ["9FB1",0x8008], + ["9FB2",0x802E], + ["9FB3",0x802F], + ["9FB4",0x803C], + ["9FB5",0x80A7], + ["9FB6",0x810C], + ["9FB7",0x812A], + ["9FB8",0x8134], + ["9FB9",0x8142], + ["9FBA",0x8156], + ["9FBB",0x8184], + ["9FBC",0x81A5], + ["9FBD",0x81E4], + ["9FBE",0x8254], + ["9FBF",0x8265], + ["9FC0",0x827B], + ["9FC1",0x8287], + ["9FC2",0x82BF], + ["9FC3",0x82E2], + ["9FC4",0x82EE], + ["9FC5",0x82F8], + ["9FC6",0x82FC], + ["9FC7",0x82FF], + ["9FC8",0x830B], + ["9FC9",0x831D], + ["9FCA",0x833D], + ["9FCB",0x8357], + ["9FCC",0x8391], + ["9FCD",0x83AC], + ["9FCE",0x83CD], + ["9FCF",0x83ED], + ["9FD0",0x8405], + ["9FD1",0x8414], + ["9FD2",0x8416], + ["9FD3",0x8421], + ["9FD4",0x842E], + ["9FD5",0x843E], + ["9FD6",0x844A], + ["9FD7",0x8453], + ["9FD8",0x8455], + ["9FD9",0x8458], + ["9FDA",0x8464], + ["9FDB",0x8472], + ["9FDC",0x847F], + ["9FDD",0x8480], + ["9FDE",0x8492], + ["9FDF",0x8493], + ["9FE0",0x8496], + ["9FE1",0x84A3], + ["9FE2",0x84BE], + ["9FE3",0x84DE], + ["9FE4",0x84E1], + ["9FE5",0x84E2], + ["9FE6",0x84E4], + ["9FE7",0x84F8], + ["9FE8",0x8503], + ["9FE9",0x8505], + ["9FEA",0x8510], + ["9FEB",0x8533], + ["9FEC",0x2010], + ["9FED",0x8542], + ["9FEE",0x854C], + ["9FEF",0x8552], + ["9FF0",0x855F], + ["9FF1",0x856F], + ["9FF2",0x8570], + ["9FF3",0x8573], + ["9FF4",0x85D6], + ["9FF5",0x85E0], + ["9FF6",0x85EE], + ["9FF7",0x85FC], + ["9FF8",0x860D], + ["9FF9",0x860F], + ["9FFA",0x8614], + ["9FFB",0x8628], + ["9FFC",0x8642], + ["9FFD",0x8645], + ["9FFE",0x8672], + ["A040",0x889C], + ["A041",0x5B6D], + ["A042",0x8137], + ["A043",0xEE1E], + ["A044",0x9938], + ["A045",0x5572], + ["A046",0x556B], + ["A047",0xEE22], + ["A048",0x35CE], + ["A049",0x5571], + ["A04A",0x55BA], + ["A04B",0x55F1], + ["A04C",0x35D2], + ["A04D",0x55F0], + ["A04E",0x5605], + ["A04F",0x5622], + ["A050",0x562D], + ["A051",0x5643], + ["A052",0x561E], + ["A053",0x5692], + ["A054",0x7CCD], + ["A055",0x541A], + ["A056",0x5413], + ["A057",0x5497], + ["A058",0x66F1], + ["A059",0x7534], + ["A05A",0x544D], + ["A05B",0x56A4], + ["A05C",0x569F], + ["A05D",0x64D3], + ["A05E",0x632E], + ["A05F",0x63F8], + ["A060",0x651E], + ["A061",0x4E78], + ["A062",0x6BEA], + ["A063",0x6C32], + ["A064",0x6C3D], + ["A065",0x6C62], + ["A066",0x6CB2], + ["A067",0x6DF8], + ["A068",0x6E29], + ["A069",0x6E76], + ["A06A",0x6E82], + ["A06B",0x6E86], + ["A06C",0x6EBB], + ["A06D",0x6EDF], + ["A06E",0x6EE2], + ["A06F",0x6F11], + ["A070",0x6F24], + ["A071",0x6F74], + ["A072",0x6F91], + ["A073",0x6FB5], + ["A074",0x6FF3], + ["A075",0x6FF5], + ["A076",0x70BB], + ["A077",0x70C0], + ["A078",0x710F], + ["A079",0x2202], + ["A07A",0x7155], + ["A07B",0x7173], + ["A07C",0x717A], + ["A07D",0xEE58], + ["A07E",0x5223], + ["A0A1",0xEE5A], + ["A0A2",0x3451], + ["A0A3",0xEE5C], + ["A0A4",0x8FCC], + ["A0A5",0xEE5E], + ["A0A6",0xEE5F], + ["A0A7",0x00C0], + ["A0A8",0x00C8], + ["A0A9",0x00CC], + ["A0AA",0x00D2], + ["A0AB",0x00D9], + ["A0AC",0x00C1], + ["A0AD",0x00CD], + ["A0AE",0x00D3], + ["A0AF",0x00DA], + ["A0B0",0x0101], + ["A0B1",0x0113], + ["A0B2",0x012B], + ["A0B3",0x014D], + ["A0B4",0x016B], + ["A0B5",0x01D6], + ["A0B6",0x00C4], + ["A0B7",0x00CB], + ["A0B8",0x00CF], + ["A0B9",0x00D6], + ["A0BA",0x00DC], + ["A0BB",0x00C6], + ["A0BC",0x00C7], + ["A0BD",0x00D1], + ["A0BE",0x00C3], + ["A0BF",0x00D5], + ["A0C0",0x00E1], + ["A0C1",0x00E9], + ["A0C2",0x00ED], + ["A0C3",0x00F3], + ["A0C4",0x00FA], + ["A0C5",0x01D8], + ["A0C6",0x00E4], + ["A0C7",0x00EB], + ["A0C8",0x00EF], + ["A0C9",0x00F6], + ["A0CA",0x00FC], + ["A0CB",0x00E6], + ["A0CC",0x00E7], + ["A0CD",0x00F1], + ["A0CE",0x00E3], + ["A0CF",0x00F5], + ["A0D0",0x01CE], + ["A0D1",0x011B], + ["A0D2",0x01D0], + ["A0D3",0x01D2], + ["A0D4",0x01D4], + ["A0D5",0x01DA], + ["A0D6",0x00C5], + ["A0D7",0x00C9], + ["A0D8",0x7188], + ["A0D9",0x00D8], + ["A0DA",0x00D0], + ["A0DB",0x1EF2], + ["A0DC",0x00DE], + ["A0DD",0x00DF], + ["A0DE",0x00AA], + ["A0DF",0x00A1], + ["A0E0",0x00E0], + ["A0E1",0x00E8], + ["A0E2",0x00EC], + ["A0E3",0x00F2], + ["A0E4",0x00F9], + ["A0E5",0x01DC], + ["A0E6",0x00E5], + ["A0E7",0x7198], + ["A0E8",0x71D7], + ["A0E9",0x00F8], + ["A0EA",0x00F0], + ["A0EB",0x1EF3], + ["A0EC",0x00FE], + ["A0ED",0x00FF], + ["A0EE",0x00BA], + ["A0EF",0x00BF], + ["A0F0",0x00E2], + ["A0F1",0x00EA], + ["A0F2",0x00EE], + ["A0F3",0x00F4], + ["A0F4",0x00FB], + ["A0F5",0x71F5], + ["A0F6",0x00C2], + ["A0F7",0x00CA], + ["A0F8",0x00CE], + ["A0F9",0x00D4], + ["A0FA",0x00DB], + ["A0FB",0x00B8], + ["A0FC",0x00A4], + ["A0FD",0xEEB6], + ["A0FE",0x0192], + ["A140",0x3000], + ["A141",0xFF0C], + ["A142",0x3001], + ["A143",0x3002], + ["A144",0xFF0E], + ["A145",0x2027], + ["A146",0xFF1B], + ["A147",0xFF1A], + ["A148",0xFF1F], + ["A149",0xFF01], + ["A14A",0xFE30], + ["A14B",0x2026], + ["A14C",0x2025], + ["A14D",0xFE50], + ["A14E",0xFE51], + ["A14F",0xFE52], + ["A150",0x00B7], + ["A151",0xFE54], + ["A152",0xFE55], + ["A153",0xFE56], + ["A154",0xFE57], + ["A155",0xFF5C], + ["A156",0x2013], + ["A157",0xFE31], + ["A158",0x2014], + ["A159",0xFE33], + ["A15A",0x2574], + ["A15B",0xFE34], + ["A15C",0xFE4F], + ["A15D",0xFF08], + ["A15E",0xFF09], + ["A15F",0xFE35], + ["A160",0xFE36], + ["A161",0xFF5B], + ["A162",0xFF5D], + ["A163",0xFE37], + ["A164",0xFE38], + ["A165",0x3014], + ["A166",0x3015], + ["A167",0xFE39], + ["A168",0xFE3A], + ["A169",0x3010], + ["A16A",0x3011], + ["A16B",0xFE3B], + ["A16C",0xFE3C], + ["A16D",0x300A], + ["A16E",0x300B], + ["A16F",0xFE3D], + ["A170",0xFE3E], + ["A171",0x3008], + ["A172",0x3009], + ["A173",0xFE3F], + ["A174",0xFE40], + ["A175",0x300C], + ["A176",0x300D], + ["A177",0xFE41], + ["A178",0xFE42], + ["A179",0x300E], + ["A17A",0x300F], + ["A17B",0xFE43], + ["A17C",0xFE44], + ["A17D",0xFE59], + ["A17E",0xFE5A], + ["A1A1",0xFE5B], + ["A1A2",0xFE5C], + ["A1A3",0xFE5D], + ["A1A4",0xFE5E], + ["A1A5",0x2018], + ["A1A6",0x2019], + ["A1A7",0x201C], + ["A1A8",0x201D], + ["A1A9",0x301D], + ["A1AA",0x301E], + ["A1AB",0x2035], + ["A1AC",0x2032], + ["A1AD",0xFF03], + ["A1AE",0xFF06], + ["A1AF",0xFF0A], + ["A1B0",0x203B], + ["A1B1",0x00A7], + ["A1B2",0x3003], + ["A1B3",0x25CB], + ["A1B4",0x25CF], + ["A1B5",0x25B3], + ["A1B6",0x25B2], + ["A1B7",0x25CE], + ["A1B8",0x2606], + ["A1B9",0x2605], + ["A1BA",0x25C7], + ["A1BB",0x25C6], + ["A1BC",0x25A1], + ["A1BD",0x25A0], + ["A1BE",0x25BD], + ["A1BF",0x25BC], + ["A1C0",0x32A3], + ["A1C1",0x2105], + ["A1C2",0x00AF], + ["A1C3",0xFFE3], + ["A1C4",0xFF3F], + ["A1C5",0x02CD], + ["A1C6",0xFE49], + ["A1C7",0xFE4A], + ["A1C8",0xFE4D], + ["A1C9",0xFE4E], + ["A1CA",0xFE4B], + ["A1CB",0xFE4C], + ["A1CC",0xFE5F], + ["A1CD",0xFE60], + ["A1CE",0xFE61], + ["A1CF",0xFF0B], + ["A1D0",0xFF0D], + ["A1D1",0x00D7], + ["A1D2",0x00F7], + ["A1D3",0x00B1], + ["A1D4",0x221A], + ["A1D5",0xFF1C], + ["A1D6",0xFF1E], + ["A1D7",0xFF1D], + ["A1D8",0x2266], + ["A1D9",0x2267], + ["A1DA",0x2260], + ["A1DB",0x221E], + ["A1DC",0x2252], + ["A1DD",0x2261], + ["A1DE",0xFE62], + ["A1DF",0xFE63], + ["A1E0",0xFE64], + ["A1E1",0xFE65], + ["A1E2",0xFE66], + ["A1E3",0xFF5E], + ["A1E4",0x2229], + ["A1E5",0x222A], + ["A1E6",0x22A5], + ["A1E7",0x2220], + ["A1E8",0x221F], + ["A1E9",0x22BF], + ["A1EA",0x33D2], + ["A1EB",0x33D1], + ["A1EC",0x222B], + ["A1ED",0x222E], + ["A1EE",0x2235], + ["A1EF",0x2234], + ["A1F0",0x2640], + ["A1F1",0x2642], + ["A1F2",0x2295], + ["A1F3",0x2299], + ["A1F4",0x2191], + ["A1F5",0x2193], + ["A1F6",0x2190], + ["A1F7",0x2192], + ["A1F8",0x2196], + ["A1F9",0x2197], + ["A1FA",0x2199], + ["A1FB",0x2198], + ["A1FC",0x2225], + ["A1FD",0x2223], + ["A1FE",0xFF0F], + ["A240",0xFF3C], + ["A241",0x2215], + ["A242",0xFE68], + ["A243",0xFF04], + ["A244",0xFFE5], + ["A245",0x3012], + ["A246",0xFFE0], + ["A247",0xFFE1], + ["A248",0xFF05], + ["A249",0xFF20], + ["A24A",0x2103], + ["A24B",0x2109], + ["A24C",0xFE69], + ["A24D",0xFE6A], + ["A24E",0xFE6B], + ["A24F",0x33D5], + ["A250",0x339C], + ["A251",0x339D], + ["A252",0x339E], + ["A253",0x33CE], + ["A254",0x33A1], + ["A255",0x338E], + ["A256",0x338F], + ["A257",0x33C4], + ["A258",0x00B0], + ["A259",0x5159], + ["A25A",0x515B], + ["A25B",0x515E], + ["A25C",0x515D], + ["A25D",0x5161], + ["A25E",0x5163], + ["A25F",0x55E7], + ["A260",0x74E9], + ["A261",0x7CCE], + ["A262",0x2581], + ["A263",0x2582], + ["A264",0x2583], + ["A265",0x2584], + ["A266",0x2585], + ["A267",0x2586], + ["A268",0x2587], + ["A269",0x2588], + ["A26A",0x258F], + ["A26B",0x258E], + ["A26C",0x258D], + ["A26D",0x258C], + ["A26E",0x258B], + ["A26F",0x258A], + ["A270",0x2589], + ["A271",0x253C], + ["A272",0x2534], + ["A273",0x252C], + ["A274",0x2524], + ["A275",0x251C], + ["A276",0x2594], + ["A277",0x2500], + ["A278",0x2502], + ["A279",0x2595], + ["A27A",0x250C], + ["A27B",0x2510], + ["A27C",0x2514], + ["A27D",0x2518], + ["A27E",0x256D], + ["A2A1",0x256E], + ["A2A2",0x2570], + ["A2A3",0x256F], + ["A2A4",0x2550], + ["A2A5",0x255E], + ["A2A6",0x256A], + ["A2A7",0x2561], + ["A2A8",0x25E2], + ["A2A9",0x25E3], + ["A2AA",0x25E5], + ["A2AB",0x25E4], + ["A2AC",0x2571], + ["A2AD",0x2572], + ["A2AE",0x2573], + ["A2AF",0xFF10], + ["A2B0",0xFF11], + ["A2B1",0xFF12], + ["A2B2",0xFF13], + ["A2B3",0xFF14], + ["A2B4",0xFF15], + ["A2B5",0xFF16], + ["A2B6",0xFF17], + ["A2B7",0xFF18], + ["A2B8",0xFF19], + ["A2B9",0x2160], + ["A2BA",0x2161], + ["A2BB",0x2162], + ["A2BC",0x2163], + ["A2BD",0x2164], + ["A2BE",0x2165], + ["A2BF",0x2166], + ["A2C0",0x2167], + ["A2C1",0x2168], + ["A2C2",0x2169], + ["A2C3",0x3021], + ["A2C4",0x3022], + ["A2C5",0x3023], + ["A2C6",0x3024], + ["A2C7",0x3025], + ["A2C8",0x3026], + ["A2C9",0x3027], + ["A2CA",0x3028], + ["A2CB",0x3029], + ["A2CC",0x5341], + ["A2CD",0x5344], + ["A2CE",0x5345], + ["A2CF",0xFF21], + ["A2D0",0xFF22], + ["A2D1",0xFF23], + ["A2D2",0xFF24], + ["A2D3",0xFF25], + ["A2D4",0xFF26], + ["A2D5",0xFF27], + ["A2D6",0xFF28], + ["A2D7",0xFF29], + ["A2D8",0xFF2A], + ["A2D9",0xFF2B], + ["A2DA",0xFF2C], + ["A2DB",0xFF2D], + ["A2DC",0xFF2E], + ["A2DD",0xFF2F], + ["A2DE",0xFF30], + ["A2DF",0xFF31], + ["A2E0",0xFF32], + ["A2E1",0xFF33], + ["A2E2",0xFF34], + ["A2E3",0xFF35], + ["A2E4",0xFF36], + ["A2E5",0xFF37], + ["A2E6",0xFF38], + ["A2E7",0xFF39], + ["A2E8",0xFF3A], + ["A2E9",0xFF41], + ["A2EA",0xFF42], + ["A2EB",0xFF43], + ["A2EC",0xFF44], + ["A2ED",0xFF45], + ["A2EE",0xFF46], + ["A2EF",0xFF47], + ["A2F0",0xFF48], + ["A2F1",0xFF49], + ["A2F2",0xFF4A], + ["A2F3",0xFF4B], + ["A2F4",0xFF4C], + ["A2F5",0xFF4D], + ["A2F6",0xFF4E], + ["A2F7",0xFF4F], + ["A2F8",0xFF50], + ["A2F9",0xFF51], + ["A2FA",0xFF52], + ["A2FB",0xFF53], + ["A2FC",0xFF54], + ["A2FD",0xFF55], + ["A2FE",0xFF56], + ["A340",0xFF57], + ["A341",0xFF58], + ["A342",0xFF59], + ["A343",0xFF5A], + ["A344",0x0391], + ["A345",0x0392], + ["A346",0x0393], + ["A347",0x0394], + ["A348",0x0395], + ["A349",0x0396], + ["A34A",0x0397], + ["A34B",0x0398], + ["A34C",0x0399], + ["A34D",0x039A], + ["A34E",0x039B], + ["A34F",0x039C], + ["A350",0x039D], + ["A351",0x039E], + ["A352",0x039F], + ["A353",0x03A0], + ["A354",0x03A1], + ["A355",0x03A3], + ["A356",0x03A4], + ["A357",0x03A5], + ["A358",0x03A6], + ["A359",0x03A7], + ["A35A",0x03A8], + ["A35B",0x03A9], + ["A35C",0x03B1], + ["A35D",0x03B2], + ["A35E",0x03B3], + ["A35F",0x03B4], + ["A360",0x03B5], + ["A361",0x03B6], + ["A362",0x03B7], + ["A363",0x03B8], + ["A364",0x03B9], + ["A365",0x03BA], + ["A366",0x03BB], + ["A367",0x03BC], + ["A368",0x03BD], + ["A369",0x03BE], + ["A36A",0x03BF], + ["A36B",0x03C0], + ["A36C",0x03C1], + ["A36D",0x03C3], + ["A36E",0x03C4], + ["A36F",0x03C5], + ["A370",0x03C6], + ["A371",0x03C7], + ["A372",0x03C8], + ["A373",0x03C9], + ["A374",0x3105], + ["A375",0x3106], + ["A376",0x3107], + ["A377",0x3108], + ["A378",0x3109], + ["A379",0x310A], + ["A37A",0x310B], + ["A37B",0x310C], + ["A37C",0x310D], + ["A37D",0x310E], + ["A37E",0x310F], + ["A3A1",0x3110], + ["A3A2",0x3111], + ["A3A3",0x3112], + ["A3A4",0x3113], + ["A3A5",0x3114], + ["A3A6",0x3115], + ["A3A7",0x3116], + ["A3A8",0x3117], + ["A3A9",0x3118], + ["A3AA",0x3119], + ["A3AB",0x311A], + ["A3AC",0x311B], + ["A3AD",0x311C], + ["A3AE",0x311D], + ["A3AF",0x311E], + ["A3B0",0x311F], + ["A3B1",0x3120], + ["A3B2",0x3121], + ["A3B3",0x3122], + ["A3B4",0x3123], + ["A3B5",0x3124], + ["A3B6",0x3125], + ["A3B7",0x3126], + ["A3B8",0x3127], + ["A3B9",0x3128], + ["A3BA",0x3129], + ["A3BB",0x02D9], + ["A3BC",0x02C9], + ["A3BD",0x02CA], + ["A3BE",0x02C7], + ["A3BF",0x02CB], + ["A3C0",0x2400], + ["A3C1",0x2401], + ["A3C2",0x2402], + ["A3C3",0x2403], + ["A3C4",0x2404], + ["A3C5",0x2405], + ["A3C6",0x2406], + ["A3C7",0x2407], + ["A3C8",0x2408], + ["A3C9",0x2409], + ["A3CA",0x240A], + ["A3CB",0x240B], + ["A3CC",0x240C], + ["A3CD",0x240D], + ["A3CE",0x240E], + ["A3CF",0x240F], + ["A3D0",0x2410], + ["A3D1",0x2411], + ["A3D2",0x2412], + ["A3D3",0x2413], + ["A3D4",0x2414], + ["A3D5",0x2415], + ["A3D6",0x2416], + ["A3D7",0x2417], + ["A3D8",0x2418], + ["A3D9",0x2419], + ["A3DA",0x241A], + ["A3DB",0x241B], + ["A3DC",0x241C], + ["A3DD",0x241D], + ["A3DE",0x241E], + ["A3DF",0x241F], + ["A3E0",0x2421], + ["A3E1",0x20AC], + ["A3E2",0xF849], + ["A3E3",0xF84A], + ["A3E4",0xF84B], + ["A3E5",0xF84C], + ["A3E6",0xF84D], + ["A3E7",0xF84E], + ["A3E8",0xF84F], + ["A3E9",0xF850], + ["A3EA",0xF851], + ["A3EB",0xF852], + ["A3EC",0xF853], + ["A3ED",0xF854], + ["A3EE",0xF855], + ["A3EF",0xF856], + ["A3F0",0xF857], + ["A3F1",0xF858], + ["A3F2",0xF859], + ["A3F3",0xF85A], + ["A3F4",0xF85B], + ["A3F5",0xF85C], + ["A3F6",0xF85D], + ["A3F7",0xF85E], + ["A3F8",0xF85F], + ["A3F9",0xF860], + ["A3FA",0xF861], + ["A3FB",0xF862], + ["A3FC",0xF863], + ["A3FD",0xF864], + ["A3FE",0xF865], + ["A440",0x4E00], + ["A441",0x4E59], + ["A442",0x4E01], + ["A443",0x4E03], + ["A444",0x4E43], + ["A445",0x4E5D], + ["A446",0x4E86], + ["A447",0x4E8C], + ["A448",0x4EBA], + ["A449",0x513F], + ["A44A",0x5165], + ["A44B",0x516B], + ["A44C",0x51E0], + ["A44D",0x5200], + ["A44E",0x5201], + ["A44F",0x529B], + ["A450",0x5315], + ["A451",0x5341], + ["A452",0x535C], + ["A453",0x53C8], + ["A454",0x4E09], + ["A455",0x4E0B], + ["A456",0x4E08], + ["A457",0x4E0A], + ["A458",0x4E2B], + ["A459",0x4E38], + ["A45A",0x51E1], + ["A45B",0x4E45], + ["A45C",0x4E48], + ["A45D",0x4E5F], + ["A45E",0x4E5E], + ["A45F",0x4E8E], + ["A460",0x4EA1], + ["A461",0x5140], + ["A462",0x5203], + ["A463",0x52FA], + ["A464",0x5343], + ["A465",0x53C9], + ["A466",0x53E3], + ["A467",0x571F], + ["A468",0x58EB], + ["A469",0x5915], + ["A46A",0x5927], + ["A46B",0x5973], + ["A46C",0x5B50], + ["A46D",0x5B51], + ["A46E",0x5B53], + ["A46F",0x5BF8], + ["A470",0x5C0F], + ["A471",0x5C22], + ["A472",0x5C38], + ["A473",0x5C71], + ["A474",0x5DDD], + ["A475",0x5DE5], + ["A476",0x5DF1], + ["A477",0x5DF2], + ["A478",0x5DF3], + ["A479",0x5DFE], + ["A47A",0x5E72], + ["A47B",0x5EFE], + ["A47C",0x5F0B], + ["A47D",0x5F13], + ["A47E",0x624D], + ["A4A1",0x4E11], + ["A4A2",0x4E10], + ["A4A3",0x4E0D], + ["A4A4",0x4E2D], + ["A4A5",0x4E30], + ["A4A6",0x4E39], + ["A4A7",0x4E4B], + ["A4A8",0x5C39], + ["A4A9",0x4E88], + ["A4AA",0x4E91], + ["A4AB",0x4E95], + ["A4AC",0x4E92], + ["A4AD",0x4E94], + ["A4AE",0x4EA2], + ["A4AF",0x4EC1], + ["A4B0",0x4EC0], + ["A4B1",0x4EC3], + ["A4B2",0x4EC6], + ["A4B3",0x4EC7], + ["A4B4",0x4ECD], + ["A4B5",0x4ECA], + ["A4B6",0x4ECB], + ["A4B7",0x4EC4], + ["A4B8",0x5143], + ["A4B9",0x5141], + ["A4BA",0x5167], + ["A4BB",0x516D], + ["A4BC",0x516E], + ["A4BD",0x516C], + ["A4BE",0x5197], + ["A4BF",0x51F6], + ["A4C0",0x5206], + ["A4C1",0x5207], + ["A4C2",0x5208], + ["A4C3",0x52FB], + ["A4C4",0x52FE], + ["A4C5",0x52FF], + ["A4C6",0x5316], + ["A4C7",0x5339], + ["A4C8",0x5348], + ["A4C9",0x5347], + ["A4CA",0x5345], + ["A4CB",0x535E], + ["A4CC",0x5384], + ["A4CD",0x53CB], + ["A4CE",0x53CA], + ["A4CF",0x53CD], + ["A4D0",0x58EC], + ["A4D1",0x5929], + ["A4D2",0x592B], + ["A4D3",0x592A], + ["A4D4",0x592D], + ["A4D5",0x5B54], + ["A4D6",0x5C11], + ["A4D7",0x5C24], + ["A4D8",0x5C3A], + ["A4D9",0x5C6F], + ["A4DA",0x5DF4], + ["A4DB",0x5E7B], + ["A4DC",0x5EFF], + ["A4DD",0x5F14], + ["A4DE",0x5F15], + ["A4DF",0x5FC3], + ["A4E0",0x6208], + ["A4E1",0x6236], + ["A4E2",0x624B], + ["A4E3",0x624E], + ["A4E4",0x652F], + ["A4E5",0x6587], + ["A4E6",0x6597], + ["A4E7",0x65A4], + ["A4E8",0x65B9], + ["A4E9",0x65E5], + ["A4EA",0x66F0], + ["A4EB",0x6708], + ["A4EC",0x6728], + ["A4ED",0x6B20], + ["A4EE",0x6B62], + ["A4EF",0x6B79], + ["A4F0",0x6BCB], + ["A4F1",0x6BD4], + ["A4F2",0x6BDB], + ["A4F3",0x6C0F], + ["A4F4",0x6C34], + ["A4F5",0x706B], + ["A4F6",0x722A], + ["A4F7",0x7236], + ["A4F8",0x723B], + ["A4F9",0x7247], + ["A4FA",0x7259], + ["A4FB",0x725B], + ["A4FC",0x72AC], + ["A4FD",0x738B], + ["A4FE",0x4E19], + ["A540",0x4E16], + ["A541",0x4E15], + ["A542",0x4E14], + ["A543",0x4E18], + ["A544",0x4E3B], + ["A545",0x4E4D], + ["A546",0x4E4F], + ["A547",0x4E4E], + ["A548",0x4EE5], + ["A549",0x4ED8], + ["A54A",0x4ED4], + ["A54B",0x4ED5], + ["A54C",0x4ED6], + ["A54D",0x4ED7], + ["A54E",0x4EE3], + ["A54F",0x4EE4], + ["A550",0x4ED9], + ["A551",0x4EDE], + ["A552",0x5145], + ["A553",0x5144], + ["A554",0x5189], + ["A555",0x518A], + ["A556",0x51AC], + ["A557",0x51F9], + ["A558",0x51FA], + ["A559",0x51F8], + ["A55A",0x520A], + ["A55B",0x52A0], + ["A55C",0x529F], + ["A55D",0x5305], + ["A55E",0x5306], + ["A55F",0x5317], + ["A560",0x531D], + ["A561",0x4EDF], + ["A562",0x534A], + ["A563",0x5349], + ["A564",0x5361], + ["A565",0x5360], + ["A566",0x536F], + ["A567",0x536E], + ["A568",0x53BB], + ["A569",0x53EF], + ["A56A",0x53E4], + ["A56B",0x53F3], + ["A56C",0x53EC], + ["A56D",0x53EE], + ["A56E",0x53E9], + ["A56F",0x53E8], + ["A570",0x53FC], + ["A571",0x53F8], + ["A572",0x53F5], + ["A573",0x53EB], + ["A574",0x53E6], + ["A575",0x53EA], + ["A576",0x53F2], + ["A577",0x53F1], + ["A578",0x53F0], + ["A579",0x53E5], + ["A57A",0x53ED], + ["A57B",0x53FB], + ["A57C",0x56DB], + ["A57D",0x56DA], + ["A57E",0x5916], + ["A5A1",0x592E], + ["A5A2",0x5931], + ["A5A3",0x5974], + ["A5A4",0x5976], + ["A5A5",0x5B55], + ["A5A6",0x5B83], + ["A5A7",0x5C3C], + ["A5A8",0x5DE8], + ["A5A9",0x5DE7], + ["A5AA",0x5DE6], + ["A5AB",0x5E02], + ["A5AC",0x5E03], + ["A5AD",0x5E73], + ["A5AE",0x5E7C], + ["A5AF",0x5F01], + ["A5B0",0x5F18], + ["A5B1",0x5F17], + ["A5B2",0x5FC5], + ["A5B3",0x620A], + ["A5B4",0x6253], + ["A5B5",0x6254], + ["A5B6",0x6252], + ["A5B7",0x6251], + ["A5B8",0x65A5], + ["A5B9",0x65E6], + ["A5BA",0x672E], + ["A5BB",0x672C], + ["A5BC",0x672A], + ["A5BD",0x672B], + ["A5BE",0x672D], + ["A5BF",0x6B63], + ["A5C0",0x6BCD], + ["A5C1",0x6C11], + ["A5C2",0x6C10], + ["A5C3",0x6C38], + ["A5C4",0x6C41], + ["A5C5",0x6C40], + ["A5C6",0x6C3E], + ["A5C7",0x72AF], + ["A5C8",0x7384], + ["A5C9",0x7389], + ["A5CA",0x74DC], + ["A5CB",0x74E6], + ["A5CC",0x7518], + ["A5CD",0x751F], + ["A5CE",0x7528], + ["A5CF",0x7529], + ["A5D0",0x7530], + ["A5D1",0x7531], + ["A5D2",0x7532], + ["A5D3",0x7533], + ["A5D4",0x758B], + ["A5D5",0x767D], + ["A5D6",0x76AE], + ["A5D7",0x76BF], + ["A5D8",0x76EE], + ["A5D9",0x77DB], + ["A5DA",0x77E2], + ["A5DB",0x77F3], + ["A5DC",0x793A], + ["A5DD",0x79BE], + ["A5DE",0x7A74], + ["A5DF",0x7ACB], + ["A5E0",0x4E1E], + ["A5E1",0x4E1F], + ["A5E2",0x4E52], + ["A5E3",0x4E53], + ["A5E4",0x4E69], + ["A5E5",0x4E99], + ["A5E6",0x4EA4], + ["A5E7",0x4EA6], + ["A5E8",0x4EA5], + ["A5E9",0x4EFF], + ["A5EA",0x4F09], + ["A5EB",0x4F19], + ["A5EC",0x4F0A], + ["A5ED",0x4F15], + ["A5EE",0x4F0D], + ["A5EF",0x4F10], + ["A5F0",0x4F11], + ["A5F1",0x4F0F], + ["A5F2",0x4EF2], + ["A5F3",0x4EF6], + ["A5F4",0x4EFB], + ["A5F5",0x4EF0], + ["A5F6",0x4EF3], + ["A5F7",0x4EFD], + ["A5F8",0x4F01], + ["A5F9",0x4F0B], + ["A5FA",0x5149], + ["A5FB",0x5147], + ["A5FC",0x5146], + ["A5FD",0x5148], + ["A5FE",0x5168], + ["A640",0x5171], + ["A641",0x518D], + ["A642",0x51B0], + ["A643",0x5217], + ["A644",0x5211], + ["A645",0x5212], + ["A646",0x520E], + ["A647",0x5216], + ["A648",0x52A3], + ["A649",0x5308], + ["A64A",0x5321], + ["A64B",0x5320], + ["A64C",0x5370], + ["A64D",0x5371], + ["A64E",0x5409], + ["A64F",0x540F], + ["A650",0x540C], + ["A651",0x540A], + ["A652",0x5410], + ["A653",0x5401], + ["A654",0x540B], + ["A655",0x5404], + ["A656",0x5411], + ["A657",0x540D], + ["A658",0x5408], + ["A659",0x5403], + ["A65A",0x540E], + ["A65B",0x5406], + ["A65C",0x5412], + ["A65D",0x56E0], + ["A65E",0x56DE], + ["A65F",0x56DD], + ["A660",0x5733], + ["A661",0x5730], + ["A662",0x5728], + ["A663",0x572D], + ["A664",0x572C], + ["A665",0x572F], + ["A666",0x5729], + ["A667",0x5919], + ["A668",0x591A], + ["A669",0x5937], + ["A66A",0x5938], + ["A66B",0x5984], + ["A66C",0x5978], + ["A66D",0x5983], + ["A66E",0x597D], + ["A66F",0x5979], + ["A670",0x5982], + ["A671",0x5981], + ["A672",0x5B57], + ["A673",0x5B58], + ["A674",0x5B87], + ["A675",0x5B88], + ["A676",0x5B85], + ["A677",0x5B89], + ["A678",0x5BFA], + ["A679",0x5C16], + ["A67A",0x5C79], + ["A67B",0x5DDE], + ["A67C",0x5E06], + ["A67D",0x5E76], + ["A67E",0x5E74], + ["A6A1",0x5F0F], + ["A6A2",0x5F1B], + ["A6A3",0x5FD9], + ["A6A4",0x5FD6], + ["A6A5",0x620E], + ["A6A6",0x620C], + ["A6A7",0x620D], + ["A6A8",0x6210], + ["A6A9",0x6263], + ["A6AA",0x625B], + ["A6AB",0x6258], + ["A6AC",0x6536], + ["A6AD",0x65E9], + ["A6AE",0x65E8], + ["A6AF",0x65EC], + ["A6B0",0x65ED], + ["A6B1",0x66F2], + ["A6B2",0x66F3], + ["A6B3",0x6709], + ["A6B4",0x673D], + ["A6B5",0x6734], + ["A6B6",0x6731], + ["A6B7",0x6735], + ["A6B8",0x6B21], + ["A6B9",0x6B64], + ["A6BA",0x6B7B], + ["A6BB",0x6C16], + ["A6BC",0x6C5D], + ["A6BD",0x6C57], + ["A6BE",0x6C59], + ["A6BF",0x6C5F], + ["A6C0",0x6C60], + ["A6C1",0x6C50], + ["A6C2",0x6C55], + ["A6C3",0x6C61], + ["A6C4",0x6C5B], + ["A6C5",0x6C4D], + ["A6C6",0x6C4E], + ["A6C7",0x7070], + ["A6C8",0x725F], + ["A6C9",0x725D], + ["A6CA",0x767E], + ["A6CB",0x7AF9], + ["A6CC",0x7C73], + ["A6CD",0x7CF8], + ["A6CE",0x7F36], + ["A6CF",0x7F8A], + ["A6D0",0x7FBD], + ["A6D1",0x8001], + ["A6D2",0x8003], + ["A6D3",0x800C], + ["A6D4",0x8012], + ["A6D5",0x8033], + ["A6D6",0x807F], + ["A6D7",0x8089], + ["A6D8",0x808B], + ["A6D9",0x808C], + ["A6DA",0x81E3], + ["A6DB",0x81EA], + ["A6DC",0x81F3], + ["A6DD",0x81FC], + ["A6DE",0x820C], + ["A6DF",0x821B], + ["A6E0",0x821F], + ["A6E1",0x826E], + ["A6E2",0x8272], + ["A6E3",0x827E], + ["A6E4",0x866B], + ["A6E5",0x8840], + ["A6E6",0x884C], + ["A6E7",0x8863], + ["A6E8",0x897F], + ["A6E9",0x9621], + ["A6EA",0x4E32], + ["A6EB",0x4EA8], + ["A6EC",0x4F4D], + ["A6ED",0x4F4F], + ["A6EE",0x4F47], + ["A6EF",0x4F57], + ["A6F0",0x4F5E], + ["A6F1",0x4F34], + ["A6F2",0x4F5B], + ["A6F3",0x4F55], + ["A6F4",0x4F30], + ["A6F5",0x4F50], + ["A6F6",0x4F51], + ["A6F7",0x4F3D], + ["A6F8",0x4F3A], + ["A6F9",0x4F38], + ["A6FA",0x4F43], + ["A6FB",0x4F54], + ["A6FC",0x4F3C], + ["A6FD",0x4F46], + ["A6FE",0x4F63], + ["A740",0x4F5C], + ["A741",0x4F60], + ["A742",0x4F2F], + ["A743",0x4F4E], + ["A744",0x4F36], + ["A745",0x4F59], + ["A746",0x4F5D], + ["A747",0x4F48], + ["A748",0x4F5A], + ["A749",0x514C], + ["A74A",0x514B], + ["A74B",0x514D], + ["A74C",0x5175], + ["A74D",0x51B6], + ["A74E",0x51B7], + ["A74F",0x5225], + ["A750",0x5224], + ["A751",0x5229], + ["A752",0x522A], + ["A753",0x5228], + ["A754",0x52AB], + ["A755",0x52A9], + ["A756",0x52AA], + ["A757",0x52AC], + ["A758",0x5323], + ["A759",0x5373], + ["A75A",0x5375], + ["A75B",0x541D], + ["A75C",0x542D], + ["A75D",0x541E], + ["A75E",0x543E], + ["A75F",0x5426], + ["A760",0x544E], + ["A761",0x5427], + ["A762",0x5446], + ["A763",0x5443], + ["A764",0x5433], + ["A765",0x5448], + ["A766",0x5442], + ["A767",0x541B], + ["A768",0x5429], + ["A769",0x544A], + ["A76A",0x5439], + ["A76B",0x543B], + ["A76C",0x5438], + ["A76D",0x542E], + ["A76E",0x5435], + ["A76F",0x5436], + ["A770",0x5420], + ["A771",0x543C], + ["A772",0x5440], + ["A773",0x5431], + ["A774",0x542B], + ["A775",0x541F], + ["A776",0x542C], + ["A777",0x56EA], + ["A778",0x56F0], + ["A779",0x56E4], + ["A77A",0x56EB], + ["A77B",0x574A], + ["A77C",0x5751], + ["A77D",0x5740], + ["A77E",0x574D], + ["A7A1",0x5747], + ["A7A2",0x574E], + ["A7A3",0x573E], + ["A7A4",0x5750], + ["A7A5",0x574F], + ["A7A6",0x573B], + ["A7A7",0x58EF], + ["A7A8",0x593E], + ["A7A9",0x599D], + ["A7AA",0x5992], + ["A7AB",0x59A8], + ["A7AC",0x599E], + ["A7AD",0x59A3], + ["A7AE",0x5999], + ["A7AF",0x5996], + ["A7B0",0x598D], + ["A7B1",0x59A4], + ["A7B2",0x5993], + ["A7B3",0x598A], + ["A7B4",0x59A5], + ["A7B5",0x5B5D], + ["A7B6",0x5B5C], + ["A7B7",0x5B5A], + ["A7B8",0x5B5B], + ["A7B9",0x5B8C], + ["A7BA",0x5B8B], + ["A7BB",0x5B8F], + ["A7BC",0x5C2C], + ["A7BD",0x5C40], + ["A7BE",0x5C41], + ["A7BF",0x5C3F], + ["A7C0",0x5C3E], + ["A7C1",0x5C90], + ["A7C2",0x5C91], + ["A7C3",0x5C94], + ["A7C4",0x5C8C], + ["A7C5",0x5DEB], + ["A7C6",0x5E0C], + ["A7C7",0x5E8F], + ["A7C8",0x5E87], + ["A7C9",0x5E8A], + ["A7CA",0x5EF7], + ["A7CB",0x5F04], + ["A7CC",0x5F1F], + ["A7CD",0x5F64], + ["A7CE",0x5F62], + ["A7CF",0x5F77], + ["A7D0",0x5F79], + ["A7D1",0x5FD8], + ["A7D2",0x5FCC], + ["A7D3",0x5FD7], + ["A7D4",0x5FCD], + ["A7D5",0x5FF1], + ["A7D6",0x5FEB], + ["A7D7",0x5FF8], + ["A7D8",0x5FEA], + ["A7D9",0x6212], + ["A7DA",0x6211], + ["A7DB",0x6284], + ["A7DC",0x6297], + ["A7DD",0x6296], + ["A7DE",0x6280], + ["A7DF",0x6276], + ["A7E0",0x6289], + ["A7E1",0x626D], + ["A7E2",0x628A], + ["A7E3",0x627C], + ["A7E4",0x627E], + ["A7E5",0x6279], + ["A7E6",0x6273], + ["A7E7",0x6292], + ["A7E8",0x626F], + ["A7E9",0x6298], + ["A7EA",0x626E], + ["A7EB",0x6295], + ["A7EC",0x6293], + ["A7ED",0x6291], + ["A7EE",0x6286], + ["A7EF",0x6539], + ["A7F0",0x653B], + ["A7F1",0x6538], + ["A7F2",0x65F1], + ["A7F3",0x66F4], + ["A7F4",0x675F], + ["A7F5",0x674E], + ["A7F6",0x674F], + ["A7F7",0x6750], + ["A7F8",0x6751], + ["A7F9",0x675C], + ["A7FA",0x6756], + ["A7FB",0x675E], + ["A7FC",0x6749], + ["A7FD",0x6746], + ["A7FE",0x6760], + ["A840",0x6753], + ["A841",0x6757], + ["A842",0x6B65], + ["A843",0x6BCF], + ["A844",0x6C42], + ["A845",0x6C5E], + ["A846",0x6C99], + ["A847",0x6C81], + ["A848",0x6C88], + ["A849",0x6C89], + ["A84A",0x6C85], + ["A84B",0x6C9B], + ["A84C",0x6C6A], + ["A84D",0x6C7A], + ["A84E",0x6C90], + ["A84F",0x6C70], + ["A850",0x6C8C], + ["A851",0x6C68], + ["A852",0x6C96], + ["A853",0x6C92], + ["A854",0x6C7D], + ["A855",0x6C83], + ["A856",0x6C72], + ["A857",0x6C7E], + ["A858",0x6C74], + ["A859",0x6C86], + ["A85A",0x6C76], + ["A85B",0x6C8D], + ["A85C",0x6C94], + ["A85D",0x6C98], + ["A85E",0x6C82], + ["A85F",0x7076], + ["A860",0x707C], + ["A861",0x707D], + ["A862",0x7078], + ["A863",0x7262], + ["A864",0x7261], + ["A865",0x7260], + ["A866",0x72C4], + ["A867",0x72C2], + ["A868",0x7396], + ["A869",0x752C], + ["A86A",0x752B], + ["A86B",0x7537], + ["A86C",0x7538], + ["A86D",0x7682], + ["A86E",0x76EF], + ["A86F",0x77E3], + ["A870",0x79C1], + ["A871",0x79C0], + ["A872",0x79BF], + ["A873",0x7A76], + ["A874",0x7CFB], + ["A875",0x7F55], + ["A876",0x8096], + ["A877",0x8093], + ["A878",0x809D], + ["A879",0x8098], + ["A87A",0x809B], + ["A87B",0x809A], + ["A87C",0x80B2], + ["A87D",0x826F], + ["A87E",0x8292], + ["A8A1",0x828B], + ["A8A2",0x828D], + ["A8A3",0x898B], + ["A8A4",0x89D2], + ["A8A5",0x8A00], + ["A8A6",0x8C37], + ["A8A7",0x8C46], + ["A8A8",0x8C55], + ["A8A9",0x8C9D], + ["A8AA",0x8D64], + ["A8AB",0x8D70], + ["A8AC",0x8DB3], + ["A8AD",0x8EAB], + ["A8AE",0x8ECA], + ["A8AF",0x8F9B], + ["A8B0",0x8FB0], + ["A8B1",0x8FC2], + ["A8B2",0x8FC6], + ["A8B3",0x8FC5], + ["A8B4",0x8FC4], + ["A8B5",0x5DE1], + ["A8B6",0x9091], + ["A8B7",0x90A2], + ["A8B8",0x90AA], + ["A8B9",0x90A6], + ["A8BA",0x90A3], + ["A8BB",0x9149], + ["A8BC",0x91C6], + ["A8BD",0x91CC], + ["A8BE",0x9632], + ["A8BF",0x962E], + ["A8C0",0x9631], + ["A8C1",0x962A], + ["A8C2",0x962C], + ["A8C3",0x4E26], + ["A8C4",0x4E56], + ["A8C5",0x4E73], + ["A8C6",0x4E8B], + ["A8C7",0x4E9B], + ["A8C8",0x4E9E], + ["A8C9",0x4EAB], + ["A8CA",0x4EAC], + ["A8CB",0x4F6F], + ["A8CC",0x4F9D], + ["A8CD",0x4F8D], + ["A8CE",0x4F73], + ["A8CF",0x4F7F], + ["A8D0",0x4F6C], + ["A8D1",0x4F9B], + ["A8D2",0x4F8B], + ["A8D3",0x4F86], + ["A8D4",0x4F83], + ["A8D5",0x4F70], + ["A8D6",0x4F75], + ["A8D7",0x4F88], + ["A8D8",0x4F69], + ["A8D9",0x4F7B], + ["A8DA",0x4F96], + ["A8DB",0x4F7E], + ["A8DC",0x4F8F], + ["A8DD",0x4F91], + ["A8DE",0x4F7A], + ["A8DF",0x5154], + ["A8E0",0x5152], + ["A8E1",0x5155], + ["A8E2",0x5169], + ["A8E3",0x5177], + ["A8E4",0x5176], + ["A8E5",0x5178], + ["A8E6",0x51BD], + ["A8E7",0x51FD], + ["A8E8",0x523B], + ["A8E9",0x5238], + ["A8EA",0x5237], + ["A8EB",0x523A], + ["A8EC",0x5230], + ["A8ED",0x522E], + ["A8EE",0x5236], + ["A8EF",0x5241], + ["A8F0",0x52BE], + ["A8F1",0x52BB], + ["A8F2",0x5352], + ["A8F3",0x5354], + ["A8F4",0x5353], + ["A8F5",0x5351], + ["A8F6",0x5366], + ["A8F7",0x5377], + ["A8F8",0x5378], + ["A8F9",0x5379], + ["A8FA",0x53D6], + ["A8FB",0x53D4], + ["A8FC",0x53D7], + ["A8FD",0x5473], + ["A8FE",0x5475], + ["A940",0x5496], + ["A941",0x5478], + ["A942",0x5495], + ["A943",0x5480], + ["A944",0x547B], + ["A945",0x5477], + ["A946",0x5484], + ["A947",0x5492], + ["A948",0x5486], + ["A949",0x547C], + ["A94A",0x5490], + ["A94B",0x5471], + ["A94C",0x5476], + ["A94D",0x548C], + ["A94E",0x549A], + ["A94F",0x5462], + ["A950",0x5468], + ["A951",0x548B], + ["A952",0x547D], + ["A953",0x548E], + ["A954",0x56FA], + ["A955",0x5783], + ["A956",0x5777], + ["A957",0x576A], + ["A958",0x5769], + ["A959",0x5761], + ["A95A",0x5766], + ["A95B",0x5764], + ["A95C",0x577C], + ["A95D",0x591C], + ["A95E",0x5949], + ["A95F",0x5947], + ["A960",0x5948], + ["A961",0x5944], + ["A962",0x5954], + ["A963",0x59BE], + ["A964",0x59BB], + ["A965",0x59D4], + ["A966",0x59B9], + ["A967",0x59AE], + ["A968",0x59D1], + ["A969",0x59C6], + ["A96A",0x59D0], + ["A96B",0x59CD], + ["A96C",0x59CB], + ["A96D",0x59D3], + ["A96E",0x59CA], + ["A96F",0x59AF], + ["A970",0x59B3], + ["A971",0x59D2], + ["A972",0x59C5], + ["A973",0x5B5F], + ["A974",0x5B64], + ["A975",0x5B63], + ["A976",0x5B97], + ["A977",0x5B9A], + ["A978",0x5B98], + ["A979",0x5B9C], + ["A97A",0x5B99], + ["A97B",0x5B9B], + ["A97C",0x5C1A], + ["A97D",0x5C48], + ["A97E",0x5C45], + ["A9A1",0x5C46], + ["A9A2",0x5CB7], + ["A9A3",0x5CA1], + ["A9A4",0x5CB8], + ["A9A5",0x5CA9], + ["A9A6",0x5CAB], + ["A9A7",0x5CB1], + ["A9A8",0x5CB3], + ["A9A9",0x5E18], + ["A9AA",0x5E1A], + ["A9AB",0x5E16], + ["A9AC",0x5E15], + ["A9AD",0x5E1B], + ["A9AE",0x5E11], + ["A9AF",0x5E78], + ["A9B0",0x5E9A], + ["A9B1",0x5E97], + ["A9B2",0x5E9C], + ["A9B3",0x5E95], + ["A9B4",0x5E96], + ["A9B5",0x5EF6], + ["A9B6",0x5F26], + ["A9B7",0x5F27], + ["A9B8",0x5F29], + ["A9B9",0x5F80], + ["A9BA",0x5F81], + ["A9BB",0x5F7F], + ["A9BC",0x5F7C], + ["A9BD",0x5FDD], + ["A9BE",0x5FE0], + ["A9BF",0x5FFD], + ["A9C0",0x5FF5], + ["A9C1",0x5FFF], + ["A9C2",0x600F], + ["A9C3",0x6014], + ["A9C4",0x602F], + ["A9C5",0x6035], + ["A9C6",0x6016], + ["A9C7",0x602A], + ["A9C8",0x6015], + ["A9C9",0x6021], + ["A9CA",0x6027], + ["A9CB",0x6029], + ["A9CC",0x602B], + ["A9CD",0x601B], + ["A9CE",0x6216], + ["A9CF",0x6215], + ["A9D0",0x623F], + ["A9D1",0x623E], + ["A9D2",0x6240], + ["A9D3",0x627F], + ["A9D4",0x62C9], + ["A9D5",0x62CC], + ["A9D6",0x62C4], + ["A9D7",0x62BF], + ["A9D8",0x62C2], + ["A9D9",0x62B9], + ["A9DA",0x62D2], + ["A9DB",0x62DB], + ["A9DC",0x62AB], + ["A9DD",0x62D3], + ["A9DE",0x62D4], + ["A9DF",0x62CB], + ["A9E0",0x62C8], + ["A9E1",0x62A8], + ["A9E2",0x62BD], + ["A9E3",0x62BC], + ["A9E4",0x62D0], + ["A9E5",0x62D9], + ["A9E6",0x62C7], + ["A9E7",0x62CD], + ["A9E8",0x62B5], + ["A9E9",0x62DA], + ["A9EA",0x62B1], + ["A9EB",0x62D8], + ["A9EC",0x62D6], + ["A9ED",0x62D7], + ["A9EE",0x62C6], + ["A9EF",0x62AC], + ["A9F0",0x62CE], + ["A9F1",0x653E], + ["A9F2",0x65A7], + ["A9F3",0x65BC], + ["A9F4",0x65FA], + ["A9F5",0x6614], + ["A9F6",0x6613], + ["A9F7",0x660C], + ["A9F8",0x6606], + ["A9F9",0x6602], + ["A9FA",0x660E], + ["A9FB",0x6600], + ["A9FC",0x660F], + ["A9FD",0x6615], + ["A9FE",0x660A], + ["AA40",0x6607], + ["AA41",0x670D], + ["AA42",0x670B], + ["AA43",0x676D], + ["AA44",0x678B], + ["AA45",0x6795], + ["AA46",0x6771], + ["AA47",0x679C], + ["AA48",0x6773], + ["AA49",0x6777], + ["AA4A",0x6787], + ["AA4B",0x679D], + ["AA4C",0x6797], + ["AA4D",0x676F], + ["AA4E",0x6770], + ["AA4F",0x677F], + ["AA50",0x6789], + ["AA51",0x677E], + ["AA52",0x6790], + ["AA53",0x6775], + ["AA54",0x679A], + ["AA55",0x6793], + ["AA56",0x677C], + ["AA57",0x676A], + ["AA58",0x6772], + ["AA59",0x6B23], + ["AA5A",0x6B66], + ["AA5B",0x6B67], + ["AA5C",0x6B7F], + ["AA5D",0x6C13], + ["AA5E",0x6C1B], + ["AA5F",0x6CE3], + ["AA60",0x6CE8], + ["AA61",0x6CF3], + ["AA62",0x6CB1], + ["AA63",0x6CCC], + ["AA64",0x6CE5], + ["AA65",0x6CB3], + ["AA66",0x6CBD], + ["AA67",0x6CBE], + ["AA68",0x6CBC], + ["AA69",0x6CE2], + ["AA6A",0x6CAB], + ["AA6B",0x6CD5], + ["AA6C",0x6CD3], + ["AA6D",0x6CB8], + ["AA6E",0x6CC4], + ["AA6F",0x6CB9], + ["AA70",0x6CC1], + ["AA71",0x6CAE], + ["AA72",0x6CD7], + ["AA73",0x6CC5], + ["AA74",0x6CF1], + ["AA75",0x6CBF], + ["AA76",0x6CBB], + ["AA77",0x6CE1], + ["AA78",0x6CDB], + ["AA79",0x6CCA], + ["AA7A",0x6CAC], + ["AA7B",0x6CEF], + ["AA7C",0x6CDC], + ["AA7D",0x6CD6], + ["AA7E",0x6CE0], + ["AAA1",0x7095], + ["AAA2",0x708E], + ["AAA3",0x7092], + ["AAA4",0x708A], + ["AAA5",0x7099], + ["AAA6",0x722C], + ["AAA7",0x722D], + ["AAA8",0x7238], + ["AAA9",0x7248], + ["AAAA",0x7267], + ["AAAB",0x7269], + ["AAAC",0x72C0], + ["AAAD",0x72CE], + ["AAAE",0x72D9], + ["AAAF",0x72D7], + ["AAB0",0x72D0], + ["AAB1",0x73A9], + ["AAB2",0x73A8], + ["AAB3",0x739F], + ["AAB4",0x73AB], + ["AAB5",0x73A5], + ["AAB6",0x753D], + ["AAB7",0x759D], + ["AAB8",0x7599], + ["AAB9",0x759A], + ["AABA",0x7684], + ["AABB",0x76C2], + ["AABC",0x76F2], + ["AABD",0x76F4], + ["AABE",0x77E5], + ["AABF",0x77FD], + ["AAC0",0x793E], + ["AAC1",0x7940], + ["AAC2",0x7941], + ["AAC3",0x79C9], + ["AAC4",0x79C8], + ["AAC5",0x7A7A], + ["AAC6",0x7A79], + ["AAC7",0x7AFA], + ["AAC8",0x7CFE], + ["AAC9",0x7F54], + ["AACA",0x7F8C], + ["AACB",0x7F8B], + ["AACC",0x8005], + ["AACD",0x80BA], + ["AACE",0x80A5], + ["AACF",0x80A2], + ["AAD0",0x80B1], + ["AAD1",0x80A1], + ["AAD2",0x80AB], + ["AAD3",0x80A9], + ["AAD4",0x80B4], + ["AAD5",0x80AA], + ["AAD6",0x80AF], + ["AAD7",0x81E5], + ["AAD8",0x81FE], + ["AAD9",0x820D], + ["AADA",0x82B3], + ["AADB",0x829D], + ["AADC",0x8299], + ["AADD",0x82AD], + ["AADE",0x82BD], + ["AADF",0x829F], + ["AAE0",0x82B9], + ["AAE1",0x82B1], + ["AAE2",0x82AC], + ["AAE3",0x82A5], + ["AAE4",0x82AF], + ["AAE5",0x82B8], + ["AAE6",0x82A3], + ["AAE7",0x82B0], + ["AAE8",0x82BE], + ["AAE9",0x82B7], + ["AAEA",0x864E], + ["AAEB",0x8671], + ["AAEC",0x521D], + ["AAED",0x8868], + ["AAEE",0x8ECB], + ["AAEF",0x8FCE], + ["AAF0",0x8FD4], + ["AAF1",0x8FD1], + ["AAF2",0x90B5], + ["AAF3",0x90B8], + ["AAF4",0x90B1], + ["AAF5",0x90B6], + ["AAF6",0x91C7], + ["AAF7",0x91D1], + ["AAF8",0x9577], + ["AAF9",0x9580], + ["AAFA",0x961C], + ["AAFB",0x9640], + ["AAFC",0x963F], + ["AAFD",0x963B], + ["AAFE",0x9644], + ["AB40",0x9642], + ["AB41",0x96B9], + ["AB42",0x96E8], + ["AB43",0x9752], + ["AB44",0x975E], + ["AB45",0x4E9F], + ["AB46",0x4EAD], + ["AB47",0x4EAE], + ["AB48",0x4FE1], + ["AB49",0x4FB5], + ["AB4A",0x4FAF], + ["AB4B",0x4FBF], + ["AB4C",0x4FE0], + ["AB4D",0x4FD1], + ["AB4E",0x4FCF], + ["AB4F",0x4FDD], + ["AB50",0x4FC3], + ["AB51",0x4FB6], + ["AB52",0x4FD8], + ["AB53",0x4FDF], + ["AB54",0x4FCA], + ["AB55",0x4FD7], + ["AB56",0x4FAE], + ["AB57",0x4FD0], + ["AB58",0x4FC4], + ["AB59",0x4FC2], + ["AB5A",0x4FDA], + ["AB5B",0x4FCE], + ["AB5C",0x4FDE], + ["AB5D",0x4FB7], + ["AB5E",0x5157], + ["AB5F",0x5192], + ["AB60",0x5191], + ["AB61",0x51A0], + ["AB62",0x524E], + ["AB63",0x5243], + ["AB64",0x524A], + ["AB65",0x524D], + ["AB66",0x524C], + ["AB67",0x524B], + ["AB68",0x5247], + ["AB69",0x52C7], + ["AB6A",0x52C9], + ["AB6B",0x52C3], + ["AB6C",0x52C1], + ["AB6D",0x530D], + ["AB6E",0x5357], + ["AB6F",0x537B], + ["AB70",0x539A], + ["AB71",0x53DB], + ["AB72",0x54AC], + ["AB73",0x54C0], + ["AB74",0x54A8], + ["AB75",0x54CE], + ["AB76",0x54C9], + ["AB77",0x54B8], + ["AB78",0x54A6], + ["AB79",0x54B3], + ["AB7A",0x54C7], + ["AB7B",0x54C2], + ["AB7C",0x54BD], + ["AB7D",0x54AA], + ["AB7E",0x54C1], + ["ABA1",0x54C4], + ["ABA2",0x54C8], + ["ABA3",0x54AF], + ["ABA4",0x54AB], + ["ABA5",0x54B1], + ["ABA6",0x54BB], + ["ABA7",0x54A9], + ["ABA8",0x54A7], + ["ABA9",0x54BF], + ["ABAA",0x56FF], + ["ABAB",0x5782], + ["ABAC",0x578B], + ["ABAD",0x57A0], + ["ABAE",0x57A3], + ["ABAF",0x57A2], + ["ABB0",0x57CE], + ["ABB1",0x57AE], + ["ABB2",0x5793], + ["ABB3",0x5955], + ["ABB4",0x5951], + ["ABB5",0x594F], + ["ABB6",0x594E], + ["ABB7",0x5950], + ["ABB8",0x59DC], + ["ABB9",0x59D8], + ["ABBA",0x59FF], + ["ABBB",0x59E3], + ["ABBC",0x59E8], + ["ABBD",0x5A03], + ["ABBE",0x59E5], + ["ABBF",0x59EA], + ["ABC0",0x59DA], + ["ABC1",0x59E6], + ["ABC2",0x5A01], + ["ABC3",0x59FB], + ["ABC4",0x5B69], + ["ABC5",0x5BA3], + ["ABC6",0x5BA6], + ["ABC7",0x5BA4], + ["ABC8",0x5BA2], + ["ABC9",0x5BA5], + ["ABCA",0x5C01], + ["ABCB",0x5C4E], + ["ABCC",0x5C4F], + ["ABCD",0x5C4D], + ["ABCE",0x5C4B], + ["ABCF",0x5CD9], + ["ABD0",0x5CD2], + ["ABD1",0x5DF7], + ["ABD2",0x5E1D], + ["ABD3",0x5E25], + ["ABD4",0x5E1F], + ["ABD5",0x5E7D], + ["ABD6",0x5EA0], + ["ABD7",0x5EA6], + ["ABD8",0x5EFA], + ["ABD9",0x5F08], + ["ABDA",0x5F2D], + ["ABDB",0x5F65], + ["ABDC",0x5F88], + ["ABDD",0x5F85], + ["ABDE",0x5F8A], + ["ABDF",0x5F8B], + ["ABE0",0x5F87], + ["ABE1",0x5F8C], + ["ABE2",0x5F89], + ["ABE3",0x6012], + ["ABE4",0x601D], + ["ABE5",0x6020], + ["ABE6",0x6025], + ["ABE7",0x600E], + ["ABE8",0x6028], + ["ABE9",0x604D], + ["ABEA",0x6070], + ["ABEB",0x6068], + ["ABEC",0x6062], + ["ABED",0x6046], + ["ABEE",0x6043], + ["ABEF",0x606C], + ["ABF0",0x606B], + ["ABF1",0x606A], + ["ABF2",0x6064], + ["ABF3",0x6241], + ["ABF4",0x62DC], + ["ABF5",0x6316], + ["ABF6",0x6309], + ["ABF7",0x62FC], + ["ABF8",0x62ED], + ["ABF9",0x6301], + ["ABFA",0x62EE], + ["ABFB",0x62FD], + ["ABFC",0x6307], + ["ABFD",0x62F1], + ["ABFE",0x62F7], + ["AC40",0x62EF], + ["AC41",0x62EC], + ["AC42",0x62FE], + ["AC43",0x62F4], + ["AC44",0x6311], + ["AC45",0x6302], + ["AC46",0x653F], + ["AC47",0x6545], + ["AC48",0x65AB], + ["AC49",0x65BD], + ["AC4A",0x65E2], + ["AC4B",0x6625], + ["AC4C",0x662D], + ["AC4D",0x6620], + ["AC4E",0x6627], + ["AC4F",0x662F], + ["AC50",0x661F], + ["AC51",0x6628], + ["AC52",0x6631], + ["AC53",0x6624], + ["AC54",0x66F7], + ["AC55",0x67FF], + ["AC56",0x67D3], + ["AC57",0x67F1], + ["AC58",0x67D4], + ["AC59",0x67D0], + ["AC5A",0x67EC], + ["AC5B",0x67B6], + ["AC5C",0x67AF], + ["AC5D",0x67F5], + ["AC5E",0x67E9], + ["AC5F",0x67EF], + ["AC60",0x67C4], + ["AC61",0x67D1], + ["AC62",0x67B4], + ["AC63",0x67DA], + ["AC64",0x67E5], + ["AC65",0x67B8], + ["AC66",0x67CF], + ["AC67",0x67DE], + ["AC68",0x67F3], + ["AC69",0x67B0], + ["AC6A",0x67D9], + ["AC6B",0x67E2], + ["AC6C",0x67DD], + ["AC6D",0x67D2], + ["AC6E",0x6B6A], + ["AC6F",0x6B83], + ["AC70",0x6B86], + ["AC71",0x6BB5], + ["AC72",0x6BD2], + ["AC73",0x6BD7], + ["AC74",0x6C1F], + ["AC75",0x6CC9], + ["AC76",0x6D0B], + ["AC77",0x6D32], + ["AC78",0x6D2A], + ["AC79",0x6D41], + ["AC7A",0x6D25], + ["AC7B",0x6D0C], + ["AC7C",0x6D31], + ["AC7D",0x6D1E], + ["AC7E",0x6D17], + ["ACA1",0x6D3B], + ["ACA2",0x6D3D], + ["ACA3",0x6D3E], + ["ACA4",0x6D36], + ["ACA5",0x6D1B], + ["ACA6",0x6CF5], + ["ACA7",0x6D39], + ["ACA8",0x6D27], + ["ACA9",0x6D38], + ["ACAA",0x6D29], + ["ACAB",0x6D2E], + ["ACAC",0x6D35], + ["ACAD",0x6D0E], + ["ACAE",0x6D2B], + ["ACAF",0x70AB], + ["ACB0",0x70BA], + ["ACB1",0x70B3], + ["ACB2",0x70AC], + ["ACB3",0x70AF], + ["ACB4",0x70AD], + ["ACB5",0x70B8], + ["ACB6",0x70AE], + ["ACB7",0x70A4], + ["ACB8",0x7230], + ["ACB9",0x7272], + ["ACBA",0x726F], + ["ACBB",0x7274], + ["ACBC",0x72E9], + ["ACBD",0x72E0], + ["ACBE",0x72E1], + ["ACBF",0x73B7], + ["ACC0",0x73CA], + ["ACC1",0x73BB], + ["ACC2",0x73B2], + ["ACC3",0x73CD], + ["ACC4",0x73C0], + ["ACC5",0x73B3], + ["ACC6",0x751A], + ["ACC7",0x752D], + ["ACC8",0x754F], + ["ACC9",0x754C], + ["ACCA",0x754E], + ["ACCB",0x754B], + ["ACCC",0x75AB], + ["ACCD",0x75A4], + ["ACCE",0x75A5], + ["ACCF",0x75A2], + ["ACD0",0x75A3], + ["ACD1",0x7678], + ["ACD2",0x7686], + ["ACD3",0x7687], + ["ACD4",0x7688], + ["ACD5",0x76C8], + ["ACD6",0x76C6], + ["ACD7",0x76C3], + ["ACD8",0x76C5], + ["ACD9",0x7701], + ["ACDA",0x76F9], + ["ACDB",0x76F8], + ["ACDC",0x7709], + ["ACDD",0x770B], + ["ACDE",0x76FE], + ["ACDF",0x76FC], + ["ACE0",0x7707], + ["ACE1",0x77DC], + ["ACE2",0x7802], + ["ACE3",0x7814], + ["ACE4",0x780C], + ["ACE5",0x780D], + ["ACE6",0x7946], + ["ACE7",0x7949], + ["ACE8",0x7948], + ["ACE9",0x7947], + ["ACEA",0x79B9], + ["ACEB",0x79BA], + ["ACEC",0x79D1], + ["ACED",0x79D2], + ["ACEE",0x79CB], + ["ACEF",0x7A7F], + ["ACF0",0x7A81], + ["ACF1",0x7AFF], + ["ACF2",0x7AFD], + ["ACF3",0x7C7D], + ["ACF4",0x7D02], + ["ACF5",0x7D05], + ["ACF6",0x7D00], + ["ACF7",0x7D09], + ["ACF8",0x7D07], + ["ACF9",0x7D04], + ["ACFA",0x7D06], + ["ACFB",0x7F38], + ["ACFC",0x7F8E], + ["ACFD",0x7FBF], + ["ACFE",0x8004], + ["AD40",0x8010], + ["AD41",0x800D], + ["AD42",0x8011], + ["AD43",0x8036], + ["AD44",0x80D6], + ["AD45",0x80E5], + ["AD46",0x80DA], + ["AD47",0x80C3], + ["AD48",0x80C4], + ["AD49",0x80CC], + ["AD4A",0x80E1], + ["AD4B",0x80DB], + ["AD4C",0x80CE], + ["AD4D",0x80DE], + ["AD4E",0x80E4], + ["AD4F",0x80DD], + ["AD50",0x81F4], + ["AD51",0x8222], + ["AD52",0x82E7], + ["AD53",0x8303], + ["AD54",0x8305], + ["AD55",0x82E3], + ["AD56",0x82DB], + ["AD57",0x82E6], + ["AD58",0x8304], + ["AD59",0x82E5], + ["AD5A",0x8302], + ["AD5B",0x8309], + ["AD5C",0x82D2], + ["AD5D",0x82D7], + ["AD5E",0x82F1], + ["AD5F",0x8301], + ["AD60",0x82DC], + ["AD61",0x82D4], + ["AD62",0x82D1], + ["AD63",0x82DE], + ["AD64",0x82D3], + ["AD65",0x82DF], + ["AD66",0x82EF], + ["AD67",0x8306], + ["AD68",0x8650], + ["AD69",0x8679], + ["AD6A",0x867B], + ["AD6B",0x867A], + ["AD6C",0x884D], + ["AD6D",0x886B], + ["AD6E",0x8981], + ["AD6F",0x89D4], + ["AD70",0x8A08], + ["AD71",0x8A02], + ["AD72",0x8A03], + ["AD73",0x8C9E], + ["AD74",0x8CA0], + ["AD75",0x8D74], + ["AD76",0x8D73], + ["AD77",0x8DB4], + ["AD78",0x8ECD], + ["AD79",0x8ECC], + ["AD7A",0x8FF0], + ["AD7B",0x8FE6], + ["AD7C",0x8FE2], + ["AD7D",0x8FEA], + ["AD7E",0x8FE5], + ["ADA1",0x8FED], + ["ADA2",0x8FEB], + ["ADA3",0x8FE4], + ["ADA4",0x8FE8], + ["ADA5",0x90CA], + ["ADA6",0x90CE], + ["ADA7",0x90C1], + ["ADA8",0x90C3], + ["ADA9",0x914B], + ["ADAA",0x914A], + ["ADAB",0x91CD], + ["ADAC",0x9582], + ["ADAD",0x9650], + ["ADAE",0x964B], + ["ADAF",0x964C], + ["ADB0",0x964D], + ["ADB1",0x9762], + ["ADB2",0x9769], + ["ADB3",0x97CB], + ["ADB4",0x97ED], + ["ADB5",0x97F3], + ["ADB6",0x9801], + ["ADB7",0x98A8], + ["ADB8",0x98DB], + ["ADB9",0x98DF], + ["ADBA",0x9996], + ["ADBB",0x9999], + ["ADBC",0x4E58], + ["ADBD",0x4EB3], + ["ADBE",0x500C], + ["ADBF",0x500D], + ["ADC0",0x5023], + ["ADC1",0x4FEF], + ["ADC2",0x5026], + ["ADC3",0x5025], + ["ADC4",0x4FF8], + ["ADC5",0x5029], + ["ADC6",0x5016], + ["ADC7",0x5006], + ["ADC8",0x503C], + ["ADC9",0x501F], + ["ADCA",0x501A], + ["ADCB",0x5012], + ["ADCC",0x5011], + ["ADCD",0x4FFA], + ["ADCE",0x5000], + ["ADCF",0x5014], + ["ADD0",0x5028], + ["ADD1",0x4FF1], + ["ADD2",0x5021], + ["ADD3",0x500B], + ["ADD4",0x5019], + ["ADD5",0x5018], + ["ADD6",0x4FF3], + ["ADD7",0x4FEE], + ["ADD8",0x502D], + ["ADD9",0x502A], + ["ADDA",0x4FFE], + ["ADDB",0x502B], + ["ADDC",0x5009], + ["ADDD",0x517C], + ["ADDE",0x51A4], + ["ADDF",0x51A5], + ["ADE0",0x51A2], + ["ADE1",0x51CD], + ["ADE2",0x51CC], + ["ADE3",0x51C6], + ["ADE4",0x51CB], + ["ADE5",0x5256], + ["ADE6",0x525C], + ["ADE7",0x5254], + ["ADE8",0x525B], + ["ADE9",0x525D], + ["ADEA",0x532A], + ["ADEB",0x537F], + ["ADEC",0x539F], + ["ADED",0x539D], + ["ADEE",0x53DF], + ["ADEF",0x54E8], + ["ADF0",0x5510], + ["ADF1",0x5501], + ["ADF2",0x5537], + ["ADF3",0x54FC], + ["ADF4",0x54E5], + ["ADF5",0x54F2], + ["ADF6",0x5506], + ["ADF7",0x54FA], + ["ADF8",0x5514], + ["ADF9",0x54E9], + ["ADFA",0x54ED], + ["ADFB",0x54E1], + ["ADFC",0x5509], + ["ADFD",0x54EE], + ["ADFE",0x54EA], + ["AE40",0x54E6], + ["AE41",0x5527], + ["AE42",0x5507], + ["AE43",0x54FD], + ["AE44",0x550F], + ["AE45",0x5703], + ["AE46",0x5704], + ["AE47",0x57C2], + ["AE48",0x57D4], + ["AE49",0x57CB], + ["AE4A",0x57C3], + ["AE4B",0x5809], + ["AE4C",0x590F], + ["AE4D",0x5957], + ["AE4E",0x5958], + ["AE4F",0x595A], + ["AE50",0x5A11], + ["AE51",0x5A18], + ["AE52",0x5A1C], + ["AE53",0x5A1F], + ["AE54",0x5A1B], + ["AE55",0x5A13], + ["AE56",0x59EC], + ["AE57",0x5A20], + ["AE58",0x5A23], + ["AE59",0x5A29], + ["AE5A",0x5A25], + ["AE5B",0x5A0C], + ["AE5C",0x5A09], + ["AE5D",0x5B6B], + ["AE5E",0x5C58], + ["AE5F",0x5BB0], + ["AE60",0x5BB3], + ["AE61",0x5BB6], + ["AE62",0x5BB4], + ["AE63",0x5BAE], + ["AE64",0x5BB5], + ["AE65",0x5BB9], + ["AE66",0x5BB8], + ["AE67",0x5C04], + ["AE68",0x5C51], + ["AE69",0x5C55], + ["AE6A",0x5C50], + ["AE6B",0x5CED], + ["AE6C",0x5CFD], + ["AE6D",0x5CFB], + ["AE6E",0x5CEA], + ["AE6F",0x5CE8], + ["AE70",0x5CF0], + ["AE71",0x5CF6], + ["AE72",0x5D01], + ["AE73",0x5CF4], + ["AE74",0x5DEE], + ["AE75",0x5E2D], + ["AE76",0x5E2B], + ["AE77",0x5EAB], + ["AE78",0x5EAD], + ["AE79",0x5EA7], + ["AE7A",0x5F31], + ["AE7B",0x5F92], + ["AE7C",0x5F91], + ["AE7D",0x5F90], + ["AE7E",0x6059], + ["AEA1",0x6063], + ["AEA2",0x6065], + ["AEA3",0x6050], + ["AEA4",0x6055], + ["AEA5",0x606D], + ["AEA6",0x6069], + ["AEA7",0x606F], + ["AEA8",0x6084], + ["AEA9",0x609F], + ["AEAA",0x609A], + ["AEAB",0x608D], + ["AEAC",0x6094], + ["AEAD",0x608C], + ["AEAE",0x6085], + ["AEAF",0x6096], + ["AEB0",0x6247], + ["AEB1",0x62F3], + ["AEB2",0x6308], + ["AEB3",0x62FF], + ["AEB4",0x634E], + ["AEB5",0x633E], + ["AEB6",0x632F], + ["AEB7",0x6355], + ["AEB8",0x6342], + ["AEB9",0x6346], + ["AEBA",0x634F], + ["AEBB",0x6349], + ["AEBC",0x633A], + ["AEBD",0x6350], + ["AEBE",0x633D], + ["AEBF",0x632A], + ["AEC0",0x632B], + ["AEC1",0x6328], + ["AEC2",0x634D], + ["AEC3",0x634C], + ["AEC4",0x6548], + ["AEC5",0x6549], + ["AEC6",0x6599], + ["AEC7",0x65C1], + ["AEC8",0x65C5], + ["AEC9",0x6642], + ["AECA",0x6649], + ["AECB",0x664F], + ["AECC",0x6643], + ["AECD",0x6652], + ["AECE",0x664C], + ["AECF",0x6645], + ["AED0",0x6641], + ["AED1",0x66F8], + ["AED2",0x6714], + ["AED3",0x6715], + ["AED4",0x6717], + ["AED5",0x6821], + ["AED6",0x6838], + ["AED7",0x6848], + ["AED8",0x6846], + ["AED9",0x6853], + ["AEDA",0x6839], + ["AEDB",0x6842], + ["AEDC",0x6854], + ["AEDD",0x6829], + ["AEDE",0x68B3], + ["AEDF",0x6817], + ["AEE0",0x684C], + ["AEE1",0x6851], + ["AEE2",0x683D], + ["AEE3",0x67F4], + ["AEE4",0x6850], + ["AEE5",0x6840], + ["AEE6",0x683C], + ["AEE7",0x6843], + ["AEE8",0x682A], + ["AEE9",0x6845], + ["AEEA",0x6813], + ["AEEB",0x6818], + ["AEEC",0x6841], + ["AEED",0x6B8A], + ["AEEE",0x6B89], + ["AEEF",0x6BB7], + ["AEF0",0x6C23], + ["AEF1",0x6C27], + ["AEF2",0x6C28], + ["AEF3",0x6C26], + ["AEF4",0x6C24], + ["AEF5",0x6CF0], + ["AEF6",0x6D6A], + ["AEF7",0x6D95], + ["AEF8",0x6D88], + ["AEF9",0x6D87], + ["AEFA",0x6D66], + ["AEFB",0x6D78], + ["AEFC",0x6D77], + ["AEFD",0x6D59], + ["AEFE",0x6D93], + ["AF40",0x6D6C], + ["AF41",0x6D89], + ["AF42",0x6D6E], + ["AF43",0x6D5A], + ["AF44",0x6D74], + ["AF45",0x6D69], + ["AF46",0x6D8C], + ["AF47",0x6D8A], + ["AF48",0x6D79], + ["AF49",0x6D85], + ["AF4A",0x6D65], + ["AF4B",0x6D94], + ["AF4C",0x70CA], + ["AF4D",0x70D8], + ["AF4E",0x70E4], + ["AF4F",0x70D9], + ["AF50",0x70C8], + ["AF51",0x70CF], + ["AF52",0x7239], + ["AF53",0x7279], + ["AF54",0x72FC], + ["AF55",0x72F9], + ["AF56",0x72FD], + ["AF57",0x72F8], + ["AF58",0x72F7], + ["AF59",0x7386], + ["AF5A",0x73ED], + ["AF5B",0x7409], + ["AF5C",0x73EE], + ["AF5D",0x73E0], + ["AF5E",0x73EA], + ["AF5F",0x73DE], + ["AF60",0x7554], + ["AF61",0x755D], + ["AF62",0x755C], + ["AF63",0x755A], + ["AF64",0x7559], + ["AF65",0x75BE], + ["AF66",0x75C5], + ["AF67",0x75C7], + ["AF68",0x75B2], + ["AF69",0x75B3], + ["AF6A",0x75BD], + ["AF6B",0x75BC], + ["AF6C",0x75B9], + ["AF6D",0x75C2], + ["AF6E",0x75B8], + ["AF6F",0x768B], + ["AF70",0x76B0], + ["AF71",0x76CA], + ["AF72",0x76CD], + ["AF73",0x76CE], + ["AF74",0x7729], + ["AF75",0x771F], + ["AF76",0x7720], + ["AF77",0x7728], + ["AF78",0x77E9], + ["AF79",0x7830], + ["AF7A",0x7827], + ["AF7B",0x7838], + ["AF7C",0x781D], + ["AF7D",0x7834], + ["AF7E",0x7837], + ["AFA1",0x7825], + ["AFA2",0x782D], + ["AFA3",0x7820], + ["AFA4",0x781F], + ["AFA5",0x7832], + ["AFA6",0x7955], + ["AFA7",0x7950], + ["AFA8",0x7960], + ["AFA9",0x795F], + ["AFAA",0x7956], + ["AFAB",0x795E], + ["AFAC",0x795D], + ["AFAD",0x7957], + ["AFAE",0x795A], + ["AFAF",0x79E4], + ["AFB0",0x79E3], + ["AFB1",0x79E7], + ["AFB2",0x79DF], + ["AFB3",0x79E6], + ["AFB4",0x79E9], + ["AFB5",0x79D8], + ["AFB6",0x7A84], + ["AFB7",0x7A88], + ["AFB8",0x7AD9], + ["AFB9",0x7B06], + ["AFBA",0x7B11], + ["AFBB",0x7C89], + ["AFBC",0x7D21], + ["AFBD",0x7D17], + ["AFBE",0x7D0B], + ["AFBF",0x7D0A], + ["AFC0",0x7D20], + ["AFC1",0x7D22], + ["AFC2",0x7D14], + ["AFC3",0x7D10], + ["AFC4",0x7D15], + ["AFC5",0x7D1A], + ["AFC6",0x7D1C], + ["AFC7",0x7D0D], + ["AFC8",0x7D19], + ["AFC9",0x7D1B], + ["AFCA",0x7F3A], + ["AFCB",0x7F5F], + ["AFCC",0x7F94], + ["AFCD",0x7FC5], + ["AFCE",0x7FC1], + ["AFCF",0x8006], + ["AFD0",0x8018], + ["AFD1",0x8015], + ["AFD2",0x8019], + ["AFD3",0x8017], + ["AFD4",0x803D], + ["AFD5",0x803F], + ["AFD6",0x80F1], + ["AFD7",0x8102], + ["AFD8",0x80F0], + ["AFD9",0x8105], + ["AFDA",0x80ED], + ["AFDB",0x80F4], + ["AFDC",0x8106], + ["AFDD",0x80F8], + ["AFDE",0x80F3], + ["AFDF",0x8108], + ["AFE0",0x80FD], + ["AFE1",0x810A], + ["AFE2",0x80FC], + ["AFE3",0x80EF], + ["AFE4",0x81ED], + ["AFE5",0x81EC], + ["AFE6",0x8200], + ["AFE7",0x8210], + ["AFE8",0x822A], + ["AFE9",0x822B], + ["AFEA",0x8228], + ["AFEB",0x822C], + ["AFEC",0x82BB], + ["AFED",0x832B], + ["AFEE",0x8352], + ["AFEF",0x8354], + ["AFF0",0x834A], + ["AFF1",0x8338], + ["AFF2",0x8350], + ["AFF3",0x8349], + ["AFF4",0x8335], + ["AFF5",0x8334], + ["AFF6",0x834F], + ["AFF7",0x8332], + ["AFF8",0x8339], + ["AFF9",0x8336], + ["AFFA",0x8317], + ["AFFB",0x8340], + ["AFFC",0x8331], + ["AFFD",0x8328], + ["AFFE",0x8343], + ["B040",0x8654], + ["B041",0x868A], + ["B042",0x86AA], + ["B043",0x8693], + ["B044",0x86A4], + ["B045",0x86A9], + ["B046",0x868C], + ["B047",0x86A3], + ["B048",0x869C], + ["B049",0x8870], + ["B04A",0x8877], + ["B04B",0x8881], + ["B04C",0x8882], + ["B04D",0x887D], + ["B04E",0x8879], + ["B04F",0x8A18], + ["B050",0x8A10], + ["B051",0x8A0E], + ["B052",0x8A0C], + ["B053",0x8A15], + ["B054",0x8A0A], + ["B055",0x8A17], + ["B056",0x8A13], + ["B057",0x8A16], + ["B058",0x8A0F], + ["B059",0x8A11], + ["B05A",0x8C48], + ["B05B",0x8C7A], + ["B05C",0x8C79], + ["B05D",0x8CA1], + ["B05E",0x8CA2], + ["B05F",0x8D77], + ["B060",0x8EAC], + ["B061",0x8ED2], + ["B062",0x8ED4], + ["B063",0x8ECF], + ["B064",0x8FB1], + ["B065",0x9001], + ["B066",0x9006], + ["B067",0x8FF7], + ["B068",0x9000], + ["B069",0x8FFA], + ["B06A",0x8FF4], + ["B06B",0x9003], + ["B06C",0x8FFD], + ["B06D",0x9005], + ["B06E",0x8FF8], + ["B06F",0x9095], + ["B070",0x90E1], + ["B071",0x90DD], + ["B072",0x90E2], + ["B073",0x9152], + ["B074",0x914D], + ["B075",0x914C], + ["B076",0x91D8], + ["B077",0x91DD], + ["B078",0x91D7], + ["B079",0x91DC], + ["B07A",0x91D9], + ["B07B",0x9583], + ["B07C",0x9662], + ["B07D",0x9663], + ["B07E",0x9661], + ["B0A1",0x965B], + ["B0A2",0x965D], + ["B0A3",0x9664], + ["B0A4",0x9658], + ["B0A5",0x965E], + ["B0A6",0x96BB], + ["B0A7",0x98E2], + ["B0A8",0x99AC], + ["B0A9",0x9AA8], + ["B0AA",0x9AD8], + ["B0AB",0x9B25], + ["B0AC",0x9B32], + ["B0AD",0x9B3C], + ["B0AE",0x4E7E], + ["B0AF",0x507A], + ["B0B0",0x507D], + ["B0B1",0x505C], + ["B0B2",0x5047], + ["B0B3",0x5043], + ["B0B4",0x504C], + ["B0B5",0x505A], + ["B0B6",0x5049], + ["B0B7",0x5065], + ["B0B8",0x5076], + ["B0B9",0x504E], + ["B0BA",0x5055], + ["B0BB",0x5075], + ["B0BC",0x5074], + ["B0BD",0x5077], + ["B0BE",0x504F], + ["B0BF",0x500F], + ["B0C0",0x506F], + ["B0C1",0x506D], + ["B0C2",0x515C], + ["B0C3",0x5195], + ["B0C4",0x51F0], + ["B0C5",0x526A], + ["B0C6",0x526F], + ["B0C7",0x52D2], + ["B0C8",0x52D9], + ["B0C9",0x52D8], + ["B0CA",0x52D5], + ["B0CB",0x5310], + ["B0CC",0x530F], + ["B0CD",0x5319], + ["B0CE",0x533F], + ["B0CF",0x5340], + ["B0D0",0x533E], + ["B0D1",0x53C3], + ["B0D2",0x66FC], + ["B0D3",0x5546], + ["B0D4",0x556A], + ["B0D5",0x5566], + ["B0D6",0x5544], + ["B0D7",0x555E], + ["B0D8",0x5561], + ["B0D9",0x5543], + ["B0DA",0x554A], + ["B0DB",0x5531], + ["B0DC",0x5556], + ["B0DD",0x554F], + ["B0DE",0x5555], + ["B0DF",0x552F], + ["B0E0",0x5564], + ["B0E1",0x5538], + ["B0E2",0x552E], + ["B0E3",0x555C], + ["B0E4",0x552C], + ["B0E5",0x5563], + ["B0E6",0x5533], + ["B0E7",0x5541], + ["B0E8",0x5557], + ["B0E9",0x5708], + ["B0EA",0x570B], + ["B0EB",0x5709], + ["B0EC",0x57DF], + ["B0ED",0x5805], + ["B0EE",0x580A], + ["B0EF",0x5806], + ["B0F0",0x57E0], + ["B0F1",0x57E4], + ["B0F2",0x57FA], + ["B0F3",0x5802], + ["B0F4",0x5835], + ["B0F5",0x57F7], + ["B0F6",0x57F9], + ["B0F7",0x5920], + ["B0F8",0x5962], + ["B0F9",0x5A36], + ["B0FA",0x5A41], + ["B0FB",0x5A49], + ["B0FC",0x5A66], + ["B0FD",0x5A6A], + ["B0FE",0x5A40], + ["B140",0x5A3C], + ["B141",0x5A62], + ["B142",0x5A5A], + ["B143",0x5A46], + ["B144",0x5A4A], + ["B145",0x5B70], + ["B146",0x5BC7], + ["B147",0x5BC5], + ["B148",0x5BC4], + ["B149",0x5BC2], + ["B14A",0x5BBF], + ["B14B",0x5BC6], + ["B14C",0x5C09], + ["B14D",0x5C08], + ["B14E",0x5C07], + ["B14F",0x5C60], + ["B150",0x5C5C], + ["B151",0x5C5D], + ["B152",0x5D07], + ["B153",0x5D06], + ["B154",0x5D0E], + ["B155",0x5D1B], + ["B156",0x5D16], + ["B157",0x5D22], + ["B158",0x5D11], + ["B159",0x5D29], + ["B15A",0x5D14], + ["B15B",0x5D19], + ["B15C",0x5D24], + ["B15D",0x5D27], + ["B15E",0x5D17], + ["B15F",0x5DE2], + ["B160",0x5E38], + ["B161",0x5E36], + ["B162",0x5E33], + ["B163",0x5E37], + ["B164",0x5EB7], + ["B165",0x5EB8], + ["B166",0x5EB6], + ["B167",0x5EB5], + ["B168",0x5EBE], + ["B169",0x5F35], + ["B16A",0x5F37], + ["B16B",0x5F57], + ["B16C",0x5F6C], + ["B16D",0x5F69], + ["B16E",0x5F6B], + ["B16F",0x5F97], + ["B170",0x5F99], + ["B171",0x5F9E], + ["B172",0x5F98], + ["B173",0x5FA1], + ["B174",0x5FA0], + ["B175",0x5F9C], + ["B176",0x607F], + ["B177",0x60A3], + ["B178",0x6089], + ["B179",0x60A0], + ["B17A",0x60A8], + ["B17B",0x60CB], + ["B17C",0x60B4], + ["B17D",0x60E6], + ["B17E",0x60BD], + ["B1A1",0x60C5], + ["B1A2",0x60BB], + ["B1A3",0x60B5], + ["B1A4",0x60DC], + ["B1A5",0x60BC], + ["B1A6",0x60D8], + ["B1A7",0x60D5], + ["B1A8",0x60C6], + ["B1A9",0x60DF], + ["B1AA",0x60B8], + ["B1AB",0x60DA], + ["B1AC",0x60C7], + ["B1AD",0x621A], + ["B1AE",0x621B], + ["B1AF",0x6248], + ["B1B0",0x63A0], + ["B1B1",0x63A7], + ["B1B2",0x6372], + ["B1B3",0x6396], + ["B1B4",0x63A2], + ["B1B5",0x63A5], + ["B1B6",0x6377], + ["B1B7",0x6367], + ["B1B8",0x6398], + ["B1B9",0x63AA], + ["B1BA",0x6371], + ["B1BB",0x63A9], + ["B1BC",0x6389], + ["B1BD",0x6383], + ["B1BE",0x639B], + ["B1BF",0x636B], + ["B1C0",0x63A8], + ["B1C1",0x6384], + ["B1C2",0x6388], + ["B1C3",0x6399], + ["B1C4",0x63A1], + ["B1C5",0x63AC], + ["B1C6",0x6392], + ["B1C7",0x638F], + ["B1C8",0x6380], + ["B1C9",0x637B], + ["B1CA",0x6369], + ["B1CB",0x6368], + ["B1CC",0x637A], + ["B1CD",0x655D], + ["B1CE",0x6556], + ["B1CF",0x6551], + ["B1D0",0x6559], + ["B1D1",0x6557], + ["B1D2",0x555F], + ["B1D3",0x654F], + ["B1D4",0x6558], + ["B1D5",0x6555], + ["B1D6",0x6554], + ["B1D7",0x659C], + ["B1D8",0x659B], + ["B1D9",0x65AC], + ["B1DA",0x65CF], + ["B1DB",0x65CB], + ["B1DC",0x65CC], + ["B1DD",0x65CE], + ["B1DE",0x665D], + ["B1DF",0x665A], + ["B1E0",0x6664], + ["B1E1",0x6668], + ["B1E2",0x6666], + ["B1E3",0x665E], + ["B1E4",0x66F9], + ["B1E5",0x52D7], + ["B1E6",0x671B], + ["B1E7",0x6881], + ["B1E8",0x68AF], + ["B1E9",0x68A2], + ["B1EA",0x6893], + ["B1EB",0x68B5], + ["B1EC",0x687F], + ["B1ED",0x6876], + ["B1EE",0x68B1], + ["B1EF",0x68A7], + ["B1F0",0x6897], + ["B1F1",0x68B0], + ["B1F2",0x6883], + ["B1F3",0x68C4], + ["B1F4",0x68AD], + ["B1F5",0x6886], + ["B1F6",0x6885], + ["B1F7",0x6894], + ["B1F8",0x689D], + ["B1F9",0x68A8], + ["B1FA",0x689F], + ["B1FB",0x68A1], + ["B1FC",0x6882], + ["B1FD",0x6B32], + ["B1FE",0x6BBA], + ["B240",0x6BEB], + ["B241",0x6BEC], + ["B242",0x6C2B], + ["B243",0x6D8E], + ["B244",0x6DBC], + ["B245",0x6DF3], + ["B246",0x6DD9], + ["B247",0x6DB2], + ["B248",0x6DE1], + ["B249",0x6DCC], + ["B24A",0x6DE4], + ["B24B",0x6DFB], + ["B24C",0x6DFA], + ["B24D",0x6E05], + ["B24E",0x6DC7], + ["B24F",0x6DCB], + ["B250",0x6DAF], + ["B251",0x6DD1], + ["B252",0x6DAE], + ["B253",0x6DDE], + ["B254",0x6DF9], + ["B255",0x6DB8], + ["B256",0x6DF7], + ["B257",0x6DF5], + ["B258",0x6DC5], + ["B259",0x6DD2], + ["B25A",0x6E1A], + ["B25B",0x6DB5], + ["B25C",0x6DDA], + ["B25D",0x6DEB], + ["B25E",0x6DD8], + ["B25F",0x6DEA], + ["B260",0x6DF1], + ["B261",0x6DEE], + ["B262",0x6DE8], + ["B263",0x6DC6], + ["B264",0x6DC4], + ["B265",0x6DAA], + ["B266",0x6DEC], + ["B267",0x6DBF], + ["B268",0x6DE6], + ["B269",0x70F9], + ["B26A",0x7109], + ["B26B",0x710A], + ["B26C",0x70FD], + ["B26D",0x70EF], + ["B26E",0x723D], + ["B26F",0x727D], + ["B270",0x7281], + ["B271",0x731C], + ["B272",0x731B], + ["B273",0x7316], + ["B274",0x7313], + ["B275",0x7319], + ["B276",0x7387], + ["B277",0x7405], + ["B278",0x740A], + ["B279",0x7403], + ["B27A",0x7406], + ["B27B",0x73FE], + ["B27C",0x740D], + ["B27D",0x74E0], + ["B27E",0x74F6], + ["B2A1",0x74F7], + ["B2A2",0x751C], + ["B2A3",0x7522], + ["B2A4",0x7565], + ["B2A5",0x7566], + ["B2A6",0x7562], + ["B2A7",0x7570], + ["B2A8",0x758F], + ["B2A9",0x75D4], + ["B2AA",0x75D5], + ["B2AB",0x75B5], + ["B2AC",0x75CA], + ["B2AD",0x75CD], + ["B2AE",0x768E], + ["B2AF",0x76D4], + ["B2B0",0x76D2], + ["B2B1",0x76DB], + ["B2B2",0x7737], + ["B2B3",0x773E], + ["B2B4",0x773C], + ["B2B5",0x7736], + ["B2B6",0x7738], + ["B2B7",0x773A], + ["B2B8",0x786B], + ["B2B9",0x7843], + ["B2BA",0x784E], + ["B2BB",0x7965], + ["B2BC",0x7968], + ["B2BD",0x796D], + ["B2BE",0x79FB], + ["B2BF",0x7A92], + ["B2C0",0x7A95], + ["B2C1",0x7B20], + ["B2C2",0x7B28], + ["B2C3",0x7B1B], + ["B2C4",0x7B2C], + ["B2C5",0x7B26], + ["B2C6",0x7B19], + ["B2C7",0x7B1E], + ["B2C8",0x7B2E], + ["B2C9",0x7C92], + ["B2CA",0x7C97], + ["B2CB",0x7C95], + ["B2CC",0x7D46], + ["B2CD",0x7D43], + ["B2CE",0x7D71], + ["B2CF",0x7D2E], + ["B2D0",0x7D39], + ["B2D1",0x7D3C], + ["B2D2",0x7D40], + ["B2D3",0x7D30], + ["B2D4",0x7D33], + ["B2D5",0x7D44], + ["B2D6",0x7D2F], + ["B2D7",0x7D42], + ["B2D8",0x7D32], + ["B2D9",0x7D31], + ["B2DA",0x7F3D], + ["B2DB",0x7F9E], + ["B2DC",0x7F9A], + ["B2DD",0x7FCC], + ["B2DE",0x7FCE], + ["B2DF",0x7FD2], + ["B2E0",0x801C], + ["B2E1",0x804A], + ["B2E2",0x8046], + ["B2E3",0x812F], + ["B2E4",0x8116], + ["B2E5",0x8123], + ["B2E6",0x812B], + ["B2E7",0x8129], + ["B2E8",0x8130], + ["B2E9",0x8124], + ["B2EA",0x8202], + ["B2EB",0x8235], + ["B2EC",0x8237], + ["B2ED",0x8236], + ["B2EE",0x8239], + ["B2EF",0x838E], + ["B2F0",0x839E], + ["B2F1",0x8398], + ["B2F2",0x8378], + ["B2F3",0x83A2], + ["B2F4",0x8396], + ["B2F5",0x83BD], + ["B2F6",0x83AB], + ["B2F7",0x8392], + ["B2F8",0x838A], + ["B2F9",0x8393], + ["B2FA",0x8389], + ["B2FB",0x83A0], + ["B2FC",0x8377], + ["B2FD",0x837B], + ["B2FE",0x837C], + ["B340",0x8386], + ["B341",0x83A7], + ["B342",0x8655], + ["B343",0x5F6A], + ["B344",0x86C7], + ["B345",0x86C0], + ["B346",0x86B6], + ["B347",0x86C4], + ["B348",0x86B5], + ["B349",0x86C6], + ["B34A",0x86CB], + ["B34B",0x86B1], + ["B34C",0x86AF], + ["B34D",0x86C9], + ["B34E",0x8853], + ["B34F",0x889E], + ["B350",0x8888], + ["B351",0x88AB], + ["B352",0x8892], + ["B353",0x8896], + ["B354",0x888D], + ["B355",0x888B], + ["B356",0x8993], + ["B357",0x898F], + ["B358",0x8A2A], + ["B359",0x8A1D], + ["B35A",0x8A23], + ["B35B",0x8A25], + ["B35C",0x8A31], + ["B35D",0x8A2D], + ["B35E",0x8A1F], + ["B35F",0x8A1B], + ["B360",0x8A22], + ["B361",0x8C49], + ["B362",0x8C5A], + ["B363",0x8CA9], + ["B364",0x8CAC], + ["B365",0x8CAB], + ["B366",0x8CA8], + ["B367",0x8CAA], + ["B368",0x8CA7], + ["B369",0x8D67], + ["B36A",0x8D66], + ["B36B",0x8DBE], + ["B36C",0x8DBA], + ["B36D",0x8EDB], + ["B36E",0x8EDF], + ["B36F",0x9019], + ["B370",0x900D], + ["B371",0x901A], + ["B372",0x9017], + ["B373",0x9023], + ["B374",0x901F], + ["B375",0x901D], + ["B376",0x9010], + ["B377",0x9015], + ["B378",0x901E], + ["B379",0x9020], + ["B37A",0x900F], + ["B37B",0x9022], + ["B37C",0x9016], + ["B37D",0x901B], + ["B37E",0x9014], + ["B3A1",0x90E8], + ["B3A2",0x90ED], + ["B3A3",0x90FD], + ["B3A4",0x9157], + ["B3A5",0x91CE], + ["B3A6",0x91F5], + ["B3A7",0x91E6], + ["B3A8",0x91E3], + ["B3A9",0x91E7], + ["B3AA",0x91ED], + ["B3AB",0x91E9], + ["B3AC",0x9589], + ["B3AD",0x966A], + ["B3AE",0x9675], + ["B3AF",0x9673], + ["B3B0",0x9678], + ["B3B1",0x9670], + ["B3B2",0x9674], + ["B3B3",0x9676], + ["B3B4",0x9677], + ["B3B5",0x966C], + ["B3B6",0x96C0], + ["B3B7",0x96EA], + ["B3B8",0x96E9], + ["B3B9",0x7AE0], + ["B3BA",0x7ADF], + ["B3BB",0x9802], + ["B3BC",0x9803], + ["B3BD",0x9B5A], + ["B3BE",0x9CE5], + ["B3BF",0x9E75], + ["B3C0",0x9E7F], + ["B3C1",0x9EA5], + ["B3C2",0x9EBB], + ["B3C3",0x50A2], + ["B3C4",0x508D], + ["B3C5",0x5085], + ["B3C6",0x5099], + ["B3C7",0x5091], + ["B3C8",0x5080], + ["B3C9",0x5096], + ["B3CA",0x5098], + ["B3CB",0x509A], + ["B3CC",0x6700], + ["B3CD",0x51F1], + ["B3CE",0x5272], + ["B3CF",0x5274], + ["B3D0",0x5275], + ["B3D1",0x5269], + ["B3D2",0x52DE], + ["B3D3",0x52DD], + ["B3D4",0x52DB], + ["B3D5",0x535A], + ["B3D6",0x53A5], + ["B3D7",0x557B], + ["B3D8",0x5580], + ["B3D9",0x55A7], + ["B3DA",0x557C], + ["B3DB",0x558A], + ["B3DC",0x559D], + ["B3DD",0x5598], + ["B3DE",0x5582], + ["B3DF",0x559C], + ["B3E0",0x55AA], + ["B3E1",0x5594], + ["B3E2",0x5587], + ["B3E3",0x558B], + ["B3E4",0x5583], + ["B3E5",0x55B3], + ["B3E6",0x55AE], + ["B3E7",0x559F], + ["B3E8",0x553E], + ["B3E9",0x55B2], + ["B3EA",0x559A], + ["B3EB",0x55BB], + ["B3EC",0x55AC], + ["B3ED",0x55B1], + ["B3EE",0x557E], + ["B3EF",0x5589], + ["B3F0",0x55AB], + ["B3F1",0x5599], + ["B3F2",0x570D], + ["B3F3",0x582F], + ["B3F4",0x582A], + ["B3F5",0x5834], + ["B3F6",0x5824], + ["B3F7",0x5830], + ["B3F8",0x5831], + ["B3F9",0x5821], + ["B3FA",0x581D], + ["B3FB",0x5820], + ["B3FC",0x58F9], + ["B3FD",0x58FA], + ["B3FE",0x5960], + ["B440",0x5A77], + ["B441",0x5A9A], + ["B442",0x5A7F], + ["B443",0x5A92], + ["B444",0x5A9B], + ["B445",0x5AA7], + ["B446",0x5B73], + ["B447",0x5B71], + ["B448",0x5BD2], + ["B449",0x5BCC], + ["B44A",0x5BD3], + ["B44B",0x5BD0], + ["B44C",0x5C0A], + ["B44D",0x5C0B], + ["B44E",0x5C31], + ["B44F",0x5D4C], + ["B450",0x5D50], + ["B451",0x5D34], + ["B452",0x5D47], + ["B453",0x5DFD], + ["B454",0x5E45], + ["B455",0x5E3D], + ["B456",0x5E40], + ["B457",0x5E43], + ["B458",0x5E7E], + ["B459",0x5ECA], + ["B45A",0x5EC1], + ["B45B",0x5EC2], + ["B45C",0x5EC4], + ["B45D",0x5F3C], + ["B45E",0x5F6D], + ["B45F",0x5FA9], + ["B460",0x5FAA], + ["B461",0x5FA8], + ["B462",0x60D1], + ["B463",0x60E1], + ["B464",0x60B2], + ["B465",0x60B6], + ["B466",0x60E0], + ["B467",0x611C], + ["B468",0x6123], + ["B469",0x60FA], + ["B46A",0x6115], + ["B46B",0x60F0], + ["B46C",0x60FB], + ["B46D",0x60F4], + ["B46E",0x6168], + ["B46F",0x60F1], + ["B470",0x610E], + ["B471",0x60F6], + ["B472",0x6109], + ["B473",0x6100], + ["B474",0x6112], + ["B475",0x621F], + ["B476",0x6249], + ["B477",0x63A3], + ["B478",0x638C], + ["B479",0x63CF], + ["B47A",0x63C0], + ["B47B",0x63E9], + ["B47C",0x63C9], + ["B47D",0x63C6], + ["B47E",0x63CD], + ["B4A1",0x63D2], + ["B4A2",0x63E3], + ["B4A3",0x63D0], + ["B4A4",0x63E1], + ["B4A5",0x63D6], + ["B4A6",0x63ED], + ["B4A7",0x63EE], + ["B4A8",0x6376], + ["B4A9",0x63F4], + ["B4AA",0x63EA], + ["B4AB",0x63DB], + ["B4AC",0x6452], + ["B4AD",0x63DA], + ["B4AE",0x63F9], + ["B4AF",0x655E], + ["B4B0",0x6566], + ["B4B1",0x6562], + ["B4B2",0x6563], + ["B4B3",0x6591], + ["B4B4",0x6590], + ["B4B5",0x65AF], + ["B4B6",0x666E], + ["B4B7",0x6670], + ["B4B8",0x6674], + ["B4B9",0x6676], + ["B4BA",0x666F], + ["B4BB",0x6691], + ["B4BC",0x667A], + ["B4BD",0x667E], + ["B4BE",0x6677], + ["B4BF",0x66FE], + ["B4C0",0x66FF], + ["B4C1",0x671F], + ["B4C2",0x671D], + ["B4C3",0x68FA], + ["B4C4",0x68D5], + ["B4C5",0x68E0], + ["B4C6",0x68D8], + ["B4C7",0x68D7], + ["B4C8",0x6905], + ["B4C9",0x68DF], + ["B4CA",0x68F5], + ["B4CB",0x68EE], + ["B4CC",0x68E7], + ["B4CD",0x68F9], + ["B4CE",0x68D2], + ["B4CF",0x68F2], + ["B4D0",0x68E3], + ["B4D1",0x68CB], + ["B4D2",0x68CD], + ["B4D3",0x690D], + ["B4D4",0x6912], + ["B4D5",0x690E], + ["B4D6",0x68C9], + ["B4D7",0x68DA], + ["B4D8",0x696E], + ["B4D9",0x68FB], + ["B4DA",0x6B3E], + ["B4DB",0x6B3A], + ["B4DC",0x6B3D], + ["B4DD",0x6B98], + ["B4DE",0x6B96], + ["B4DF",0x6BBC], + ["B4E0",0x6BEF], + ["B4E1",0x6C2E], + ["B4E2",0x6C2F], + ["B4E3",0x6C2C], + ["B4E4",0x6E2F], + ["B4E5",0x6E38], + ["B4E6",0x6E54], + ["B4E7",0x6E21], + ["B4E8",0x6E32], + ["B4E9",0x6E67], + ["B4EA",0x6E4A], + ["B4EB",0x6E20], + ["B4EC",0x6E25], + ["B4ED",0x6E23], + ["B4EE",0x6E1B], + ["B4EF",0x6E5B], + ["B4F0",0x6E58], + ["B4F1",0x6E24], + ["B4F2",0x6E56], + ["B4F3",0x6E6E], + ["B4F4",0x6E2D], + ["B4F5",0x6E26], + ["B4F6",0x6E6F], + ["B4F7",0x6E34], + ["B4F8",0x6E4D], + ["B4F9",0x6E3A], + ["B4FA",0x6E2C], + ["B4FB",0x6E43], + ["B4FC",0x6E1D], + ["B4FD",0x6E3E], + ["B4FE",0x6ECB], + ["B540",0x6E89], + ["B541",0x6E19], + ["B542",0x6E4E], + ["B543",0x6E63], + ["B544",0x6E44], + ["B545",0x6E72], + ["B546",0x6E69], + ["B547",0x6E5F], + ["B548",0x7119], + ["B549",0x711A], + ["B54A",0x7126], + ["B54B",0x7130], + ["B54C",0x7121], + ["B54D",0x7136], + ["B54E",0x716E], + ["B54F",0x711C], + ["B550",0x724C], + ["B551",0x7284], + ["B552",0x7280], + ["B553",0x7336], + ["B554",0x7325], + ["B555",0x7334], + ["B556",0x7329], + ["B557",0x743A], + ["B558",0x742A], + ["B559",0x7433], + ["B55A",0x7422], + ["B55B",0x7425], + ["B55C",0x7435], + ["B55D",0x7436], + ["B55E",0x7434], + ["B55F",0x742F], + ["B560",0x741B], + ["B561",0x7426], + ["B562",0x7428], + ["B563",0x7525], + ["B564",0x7526], + ["B565",0x756B], + ["B566",0x756A], + ["B567",0x75E2], + ["B568",0x75DB], + ["B569",0x75E3], + ["B56A",0x75D9], + ["B56B",0x75D8], + ["B56C",0x75DE], + ["B56D",0x75E0], + ["B56E",0x767B], + ["B56F",0x767C], + ["B570",0x7696], + ["B571",0x7693], + ["B572",0x76B4], + ["B573",0x76DC], + ["B574",0x774F], + ["B575",0x77ED], + ["B576",0x785D], + ["B577",0x786C], + ["B578",0x786F], + ["B579",0x7A0D], + ["B57A",0x7A08], + ["B57B",0x7A0B], + ["B57C",0x7A05], + ["B57D",0x7A00], + ["B57E",0x7A98], + ["B5A1",0x7A97], + ["B5A2",0x7A96], + ["B5A3",0x7AE5], + ["B5A4",0x7AE3], + ["B5A5",0x7B49], + ["B5A6",0x7B56], + ["B5A7",0x7B46], + ["B5A8",0x7B50], + ["B5A9",0x7B52], + ["B5AA",0x7B54], + ["B5AB",0x7B4D], + ["B5AC",0x7B4B], + ["B5AD",0x7B4F], + ["B5AE",0x7B51], + ["B5AF",0x7C9F], + ["B5B0",0x7CA5], + ["B5B1",0x7D5E], + ["B5B2",0x7D50], + ["B5B3",0x7D68], + ["B5B4",0x7D55], + ["B5B5",0x7D2B], + ["B5B6",0x7D6E], + ["B5B7",0x7D72], + ["B5B8",0x7D61], + ["B5B9",0x7D66], + ["B5BA",0x7D62], + ["B5BB",0x7D70], + ["B5BC",0x7D73], + ["B5BD",0x5584], + ["B5BE",0x7FD4], + ["B5BF",0x7FD5], + ["B5C0",0x800B], + ["B5C1",0x8052], + ["B5C2",0x8085], + ["B5C3",0x8155], + ["B5C4",0x8154], + ["B5C5",0x814B], + ["B5C6",0x8151], + ["B5C7",0x814E], + ["B5C8",0x8139], + ["B5C9",0x8146], + ["B5CA",0x813E], + ["B5CB",0x814C], + ["B5CC",0x8153], + ["B5CD",0x8174], + ["B5CE",0x8212], + ["B5CF",0x821C], + ["B5D0",0x83E9], + ["B5D1",0x8403], + ["B5D2",0x83F8], + ["B5D3",0x840D], + ["B5D4",0x83E0], + ["B5D5",0x83C5], + ["B5D6",0x840B], + ["B5D7",0x83C1], + ["B5D8",0x83EF], + ["B5D9",0x83F1], + ["B5DA",0x83F4], + ["B5DB",0x8457], + ["B5DC",0x840A], + ["B5DD",0x83F0], + ["B5DE",0x840C], + ["B5DF",0x83CC], + ["B5E0",0x83FD], + ["B5E1",0x83F2], + ["B5E2",0x83CA], + ["B5E3",0x8438], + ["B5E4",0x840E], + ["B5E5",0x8404], + ["B5E6",0x83DC], + ["B5E7",0x8407], + ["B5E8",0x83D4], + ["B5E9",0x83DF], + ["B5EA",0x865B], + ["B5EB",0x86DF], + ["B5EC",0x86D9], + ["B5ED",0x86ED], + ["B5EE",0x86D4], + ["B5EF",0x86DB], + ["B5F0",0x86E4], + ["B5F1",0x86D0], + ["B5F2",0x86DE], + ["B5F3",0x8857], + ["B5F4",0x88C1], + ["B5F5",0x88C2], + ["B5F6",0x88B1], + ["B5F7",0x8983], + ["B5F8",0x8996], + ["B5F9",0x8A3B], + ["B5FA",0x8A60], + ["B5FB",0x8A55], + ["B5FC",0x8A5E], + ["B5FD",0x8A3C], + ["B5FE",0x8A41], + ["B640",0x8A54], + ["B641",0x8A5B], + ["B642",0x8A50], + ["B643",0x8A46], + ["B644",0x8A34], + ["B645",0x8A3A], + ["B646",0x8A36], + ["B647",0x8A56], + ["B648",0x8C61], + ["B649",0x8C82], + ["B64A",0x8CAF], + ["B64B",0x8CBC], + ["B64C",0x8CB3], + ["B64D",0x8CBD], + ["B64E",0x8CC1], + ["B64F",0x8CBB], + ["B650",0x8CC0], + ["B651",0x8CB4], + ["B652",0x8CB7], + ["B653",0x8CB6], + ["B654",0x8CBF], + ["B655",0x8CB8], + ["B656",0x8D8A], + ["B657",0x8D85], + ["B658",0x8D81], + ["B659",0x8DCE], + ["B65A",0x8DDD], + ["B65B",0x8DCB], + ["B65C",0x8DDA], + ["B65D",0x8DD1], + ["B65E",0x8DCC], + ["B65F",0x8DDB], + ["B660",0x8DC6], + ["B661",0x8EFB], + ["B662",0x8EF8], + ["B663",0x8EFC], + ["B664",0x8F9C], + ["B665",0x902E], + ["B666",0x9035], + ["B667",0x9031], + ["B668",0x9038], + ["B669",0x9032], + ["B66A",0x9036], + ["B66B",0x9102], + ["B66C",0x90F5], + ["B66D",0x9109], + ["B66E",0x90FE], + ["B66F",0x9163], + ["B670",0x9165], + ["B671",0x91CF], + ["B672",0x9214], + ["B673",0x9215], + ["B674",0x9223], + ["B675",0x9209], + ["B676",0x921E], + ["B677",0x920D], + ["B678",0x9210], + ["B679",0x9207], + ["B67A",0x9211], + ["B67B",0x9594], + ["B67C",0x958F], + ["B67D",0x958B], + ["B67E",0x9591], + ["B6A1",0x9593], + ["B6A2",0x9592], + ["B6A3",0x958E], + ["B6A4",0x968A], + ["B6A5",0x968E], + ["B6A6",0x968B], + ["B6A7",0x967D], + ["B6A8",0x9685], + ["B6A9",0x9686], + ["B6AA",0x968D], + ["B6AB",0x9672], + ["B6AC",0x9684], + ["B6AD",0x96C1], + ["B6AE",0x96C5], + ["B6AF",0x96C4], + ["B6B0",0x96C6], + ["B6B1",0x96C7], + ["B6B2",0x96EF], + ["B6B3",0x96F2], + ["B6B4",0x97CC], + ["B6B5",0x9805], + ["B6B6",0x9806], + ["B6B7",0x9808], + ["B6B8",0x98E7], + ["B6B9",0x98EA], + ["B6BA",0x98EF], + ["B6BB",0x98E9], + ["B6BC",0x98F2], + ["B6BD",0x98ED], + ["B6BE",0x99AE], + ["B6BF",0x99AD], + ["B6C0",0x9EC3], + ["B6C1",0x9ECD], + ["B6C2",0x9ED1], + ["B6C3",0x4E82], + ["B6C4",0x50AD], + ["B6C5",0x50B5], + ["B6C6",0x50B2], + ["B6C7",0x50B3], + ["B6C8",0x50C5], + ["B6C9",0x50BE], + ["B6CA",0x50AC], + ["B6CB",0x50B7], + ["B6CC",0x50BB], + ["B6CD",0x50AF], + ["B6CE",0x50C7], + ["B6CF",0x527F], + ["B6D0",0x5277], + ["B6D1",0x527D], + ["B6D2",0x52DF], + ["B6D3",0x52E6], + ["B6D4",0x52E4], + ["B6D5",0x52E2], + ["B6D6",0x52E3], + ["B6D7",0x532F], + ["B6D8",0x55DF], + ["B6D9",0x55E8], + ["B6DA",0x55D3], + ["B6DB",0x55E6], + ["B6DC",0x55CE], + ["B6DD",0x55DC], + ["B6DE",0x55C7], + ["B6DF",0x55D1], + ["B6E0",0x55E3], + ["B6E1",0x55E4], + ["B6E2",0x55EF], + ["B6E3",0x55DA], + ["B6E4",0x55E1], + ["B6E5",0x55C5], + ["B6E6",0x55C6], + ["B6E7",0x55E5], + ["B6E8",0x55C9], + ["B6E9",0x5712], + ["B6EA",0x5713], + ["B6EB",0x585E], + ["B6EC",0x5851], + ["B6ED",0x5858], + ["B6EE",0x5857], + ["B6EF",0x585A], + ["B6F0",0x5854], + ["B6F1",0x586B], + ["B6F2",0x584C], + ["B6F3",0x586D], + ["B6F4",0x584A], + ["B6F5",0x5862], + ["B6F6",0x5852], + ["B6F7",0x584B], + ["B6F8",0x5967], + ["B6F9",0x5AC1], + ["B6FA",0x5AC9], + ["B6FB",0x5ACC], + ["B6FC",0x5ABE], + ["B6FD",0x5ABD], + ["B6FE",0x5ABC], + ["B740",0x5AB3], + ["B741",0x5AC2], + ["B742",0x5AB2], + ["B743",0x5D69], + ["B744",0x5D6F], + ["B745",0x5E4C], + ["B746",0x5E79], + ["B747",0x5EC9], + ["B748",0x5EC8], + ["B749",0x5F12], + ["B74A",0x5F59], + ["B74B",0x5FAC], + ["B74C",0x5FAE], + ["B74D",0x611A], + ["B74E",0x610F], + ["B74F",0x6148], + ["B750",0x611F], + ["B751",0x60F3], + ["B752",0x611B], + ["B753",0x60F9], + ["B754",0x6101], + ["B755",0x6108], + ["B756",0x614E], + ["B757",0x614C], + ["B758",0x6144], + ["B759",0x614D], + ["B75A",0x613E], + ["B75B",0x6134], + ["B75C",0x6127], + ["B75D",0x610D], + ["B75E",0x6106], + ["B75F",0x6137], + ["B760",0x6221], + ["B761",0x6222], + ["B762",0x6413], + ["B763",0x643E], + ["B764",0x641E], + ["B765",0x642A], + ["B766",0x642D], + ["B767",0x643D], + ["B768",0x642C], + ["B769",0x640F], + ["B76A",0x641C], + ["B76B",0x6414], + ["B76C",0x640D], + ["B76D",0x6436], + ["B76E",0x6416], + ["B76F",0x6417], + ["B770",0x6406], + ["B771",0x656C], + ["B772",0x659F], + ["B773",0x65B0], + ["B774",0x6697], + ["B775",0x6689], + ["B776",0x6687], + ["B777",0x6688], + ["B778",0x6696], + ["B779",0x6684], + ["B77A",0x6698], + ["B77B",0x668D], + ["B77C",0x6703], + ["B77D",0x6994], + ["B77E",0x696D], + ["B7A1",0x695A], + ["B7A2",0x6977], + ["B7A3",0x6960], + ["B7A4",0x6954], + ["B7A5",0x6975], + ["B7A6",0x6930], + ["B7A7",0x6982], + ["B7A8",0x694A], + ["B7A9",0x6968], + ["B7AA",0x696B], + ["B7AB",0x695E], + ["B7AC",0x6953], + ["B7AD",0x6979], + ["B7AE",0x6986], + ["B7AF",0x695D], + ["B7B0",0x6963], + ["B7B1",0x695B], + ["B7B2",0x6B47], + ["B7B3",0x6B72], + ["B7B4",0x6BC0], + ["B7B5",0x6BBF], + ["B7B6",0x6BD3], + ["B7B7",0x6BFD], + ["B7B8",0x6EA2], + ["B7B9",0x6EAF], + ["B7BA",0x6ED3], + ["B7BB",0x6EB6], + ["B7BC",0x6EC2], + ["B7BD",0x6E90], + ["B7BE",0x6E9D], + ["B7BF",0x6EC7], + ["B7C0",0x6EC5], + ["B7C1",0x6EA5], + ["B7C2",0x6E98], + ["B7C3",0x6EBC], + ["B7C4",0x6EBA], + ["B7C5",0x6EAB], + ["B7C6",0x6ED1], + ["B7C7",0x6E96], + ["B7C8",0x6E9C], + ["B7C9",0x6EC4], + ["B7CA",0x6ED4], + ["B7CB",0x6EAA], + ["B7CC",0x6EA7], + ["B7CD",0x6EB4], + ["B7CE",0x714E], + ["B7CF",0x7159], + ["B7D0",0x7169], + ["B7D1",0x7164], + ["B7D2",0x7149], + ["B7D3",0x7167], + ["B7D4",0x715C], + ["B7D5",0x716C], + ["B7D6",0x7166], + ["B7D7",0x714C], + ["B7D8",0x7165], + ["B7D9",0x715E], + ["B7DA",0x7146], + ["B7DB",0x7168], + ["B7DC",0x7156], + ["B7DD",0x723A], + ["B7DE",0x7252], + ["B7DF",0x7337], + ["B7E0",0x7345], + ["B7E1",0x733F], + ["B7E2",0x733E], + ["B7E3",0x746F], + ["B7E4",0x745A], + ["B7E5",0x7455], + ["B7E6",0x745F], + ["B7E7",0x745E], + ["B7E8",0x7441], + ["B7E9",0x743F], + ["B7EA",0x7459], + ["B7EB",0x745B], + ["B7EC",0x745C], + ["B7ED",0x7576], + ["B7EE",0x7578], + ["B7EF",0x7600], + ["B7F0",0x75F0], + ["B7F1",0x7601], + ["B7F2",0x75F2], + ["B7F3",0x75F1], + ["B7F4",0x75FA], + ["B7F5",0x75FF], + ["B7F6",0x75F4], + ["B7F7",0x75F3], + ["B7F8",0x76DE], + ["B7F9",0x76DF], + ["B7FA",0x775B], + ["B7FB",0x776B], + ["B7FC",0x7766], + ["B7FD",0x775E], + ["B7FE",0x7763], + ["B840",0x7779], + ["B841",0x776A], + ["B842",0x776C], + ["B843",0x775C], + ["B844",0x7765], + ["B845",0x7768], + ["B846",0x7762], + ["B847",0x77EE], + ["B848",0x788E], + ["B849",0x78B0], + ["B84A",0x7897], + ["B84B",0x7898], + ["B84C",0x788C], + ["B84D",0x7889], + ["B84E",0x787C], + ["B84F",0x7891], + ["B850",0x7893], + ["B851",0x787F], + ["B852",0x797A], + ["B853",0x797F], + ["B854",0x7981], + ["B855",0x842C], + ["B856",0x79BD], + ["B857",0x7A1C], + ["B858",0x7A1A], + ["B859",0x7A20], + ["B85A",0x7A14], + ["B85B",0x7A1F], + ["B85C",0x7A1E], + ["B85D",0x7A9F], + ["B85E",0x7AA0], + ["B85F",0x7B77], + ["B860",0x7BC0], + ["B861",0x7B60], + ["B862",0x7B6E], + ["B863",0x7B67], + ["B864",0x7CB1], + ["B865",0x7CB3], + ["B866",0x7CB5], + ["B867",0x7D93], + ["B868",0x7D79], + ["B869",0x7D91], + ["B86A",0x7D81], + ["B86B",0x7D8F], + ["B86C",0x7D5B], + ["B86D",0x7F6E], + ["B86E",0x7F69], + ["B86F",0x7F6A], + ["B870",0x7F72], + ["B871",0x7FA9], + ["B872",0x7FA8], + ["B873",0x7FA4], + ["B874",0x8056], + ["B875",0x8058], + ["B876",0x8086], + ["B877",0x8084], + ["B878",0x8171], + ["B879",0x8170], + ["B87A",0x8178], + ["B87B",0x8165], + ["B87C",0x816E], + ["B87D",0x8173], + ["B87E",0x816B], + ["B8A1",0x8179], + ["B8A2",0x817A], + ["B8A3",0x8166], + ["B8A4",0x8205], + ["B8A5",0x8247], + ["B8A6",0x8482], + ["B8A7",0x8477], + ["B8A8",0x843D], + ["B8A9",0x8431], + ["B8AA",0x8475], + ["B8AB",0x8466], + ["B8AC",0x846B], + ["B8AD",0x8449], + ["B8AE",0x846C], + ["B8AF",0x845B], + ["B8B0",0x843C], + ["B8B1",0x8435], + ["B8B2",0x8461], + ["B8B3",0x8463], + ["B8B4",0x8469], + ["B8B5",0x846D], + ["B8B6",0x8446], + ["B8B7",0x865E], + ["B8B8",0x865C], + ["B8B9",0x865F], + ["B8BA",0x86F9], + ["B8BB",0x8713], + ["B8BC",0x8708], + ["B8BD",0x8707], + ["B8BE",0x8700], + ["B8BF",0x86FE], + ["B8C0",0x86FB], + ["B8C1",0x8702], + ["B8C2",0x8703], + ["B8C3",0x8706], + ["B8C4",0x870A], + ["B8C5",0x8859], + ["B8C6",0x88DF], + ["B8C7",0x88D4], + ["B8C8",0x88D9], + ["B8C9",0x88DC], + ["B8CA",0x88D8], + ["B8CB",0x88DD], + ["B8CC",0x88E1], + ["B8CD",0x88CA], + ["B8CE",0x88D5], + ["B8CF",0x88D2], + ["B8D0",0x899C], + ["B8D1",0x89E3], + ["B8D2",0x8A6B], + ["B8D3",0x8A72], + ["B8D4",0x8A73], + ["B8D5",0x8A66], + ["B8D6",0x8A69], + ["B8D7",0x8A70], + ["B8D8",0x8A87], + ["B8D9",0x8A7C], + ["B8DA",0x8A63], + ["B8DB",0x8AA0], + ["B8DC",0x8A71], + ["B8DD",0x8A85], + ["B8DE",0x8A6D], + ["B8DF",0x8A62], + ["B8E0",0x8A6E], + ["B8E1",0x8A6C], + ["B8E2",0x8A79], + ["B8E3",0x8A7B], + ["B8E4",0x8A3E], + ["B8E5",0x8A68], + ["B8E6",0x8C62], + ["B8E7",0x8C8A], + ["B8E8",0x8C89], + ["B8E9",0x8CCA], + ["B8EA",0x8CC7], + ["B8EB",0x8CC8], + ["B8EC",0x8CC4], + ["B8ED",0x8CB2], + ["B8EE",0x8CC3], + ["B8EF",0x8CC2], + ["B8F0",0x8CC5], + ["B8F1",0x8DE1], + ["B8F2",0x8DDF], + ["B8F3",0x8DE8], + ["B8F4",0x8DEF], + ["B8F5",0x8DF3], + ["B8F6",0x8DFA], + ["B8F7",0x8DEA], + ["B8F8",0x8DE4], + ["B8F9",0x8DE6], + ["B8FA",0x8EB2], + ["B8FB",0x8F03], + ["B8FC",0x8F09], + ["B8FD",0x8EFE], + ["B8FE",0x8F0A], + ["B940",0x8F9F], + ["B941",0x8FB2], + ["B942",0x904B], + ["B943",0x904A], + ["B944",0x9053], + ["B945",0x9042], + ["B946",0x9054], + ["B947",0x903C], + ["B948",0x9055], + ["B949",0x9050], + ["B94A",0x9047], + ["B94B",0x904F], + ["B94C",0x904E], + ["B94D",0x904D], + ["B94E",0x9051], + ["B94F",0x903E], + ["B950",0x9041], + ["B951",0x9112], + ["B952",0x9117], + ["B953",0x916C], + ["B954",0x916A], + ["B955",0x9169], + ["B956",0x91C9], + ["B957",0x9237], + ["B958",0x9257], + ["B959",0x9238], + ["B95A",0x923D], + ["B95B",0x9240], + ["B95C",0x923E], + ["B95D",0x925B], + ["B95E",0x924B], + ["B95F",0x9264], + ["B960",0x9251], + ["B961",0x9234], + ["B962",0x9249], + ["B963",0x924D], + ["B964",0x9245], + ["B965",0x9239], + ["B966",0x923F], + ["B967",0x925A], + ["B968",0x9598], + ["B969",0x9698], + ["B96A",0x9694], + ["B96B",0x9695], + ["B96C",0x96CD], + ["B96D",0x96CB], + ["B96E",0x96C9], + ["B96F",0x96CA], + ["B970",0x96F7], + ["B971",0x96FB], + ["B972",0x96F9], + ["B973",0x96F6], + ["B974",0x9756], + ["B975",0x9774], + ["B976",0x9776], + ["B977",0x9810], + ["B978",0x9811], + ["B979",0x9813], + ["B97A",0x980A], + ["B97B",0x9812], + ["B97C",0x980C], + ["B97D",0x98FC], + ["B97E",0x98F4], + ["B9A1",0x98FD], + ["B9A2",0x98FE], + ["B9A3",0x99B3], + ["B9A4",0x99B1], + ["B9A5",0x99B4], + ["B9A6",0x9AE1], + ["B9A7",0x9CE9], + ["B9A8",0x9E82], + ["B9A9",0x9F0E], + ["B9AA",0x9F13], + ["B9AB",0x9F20], + ["B9AC",0x50E7], + ["B9AD",0x50EE], + ["B9AE",0x50E5], + ["B9AF",0x50D6], + ["B9B0",0x50ED], + ["B9B1",0x50DA], + ["B9B2",0x50D5], + ["B9B3",0x50CF], + ["B9B4",0x50D1], + ["B9B5",0x50F1], + ["B9B6",0x50CE], + ["B9B7",0x50E9], + ["B9B8",0x5162], + ["B9B9",0x51F3], + ["B9BA",0x5283], + ["B9BB",0x5282], + ["B9BC",0x5331], + ["B9BD",0x53AD], + ["B9BE",0x55FE], + ["B9BF",0x5600], + ["B9C0",0x561B], + ["B9C1",0x5617], + ["B9C2",0x55FD], + ["B9C3",0x5614], + ["B9C4",0x5606], + ["B9C5",0x5609], + ["B9C6",0x560D], + ["B9C7",0x560E], + ["B9C8",0x55F7], + ["B9C9",0x5616], + ["B9CA",0x561F], + ["B9CB",0x5608], + ["B9CC",0x5610], + ["B9CD",0x55F6], + ["B9CE",0x5718], + ["B9CF",0x5716], + ["B9D0",0x5875], + ["B9D1",0x587E], + ["B9D2",0x5883], + ["B9D3",0x5893], + ["B9D4",0x588A], + ["B9D5",0x5879], + ["B9D6",0x5885], + ["B9D7",0x587D], + ["B9D8",0x58FD], + ["B9D9",0x5925], + ["B9DA",0x5922], + ["B9DB",0x5924], + ["B9DC",0x596A], + ["B9DD",0x5969], + ["B9DE",0x5AE1], + ["B9DF",0x5AE6], + ["B9E0",0x5AE9], + ["B9E1",0x5AD7], + ["B9E2",0x5AD6], + ["B9E3",0x5AD8], + ["B9E4",0x5AE3], + ["B9E5",0x5B75], + ["B9E6",0x5BDE], + ["B9E7",0x5BE7], + ["B9E8",0x5BE1], + ["B9E9",0x5BE5], + ["B9EA",0x5BE6], + ["B9EB",0x5BE8], + ["B9EC",0x5BE2], + ["B9ED",0x5BE4], + ["B9EE",0x5BDF], + ["B9EF",0x5C0D], + ["B9F0",0x5C62], + ["B9F1",0x5D84], + ["B9F2",0x5D87], + ["B9F3",0x5E5B], + ["B9F4",0x5E63], + ["B9F5",0x5E55], + ["B9F6",0x5E57], + ["B9F7",0x5E54], + ["B9F8",0x5ED3], + ["B9F9",0x5ED6], + ["B9FA",0x5F0A], + ["B9FB",0x5F46], + ["B9FC",0x5F70], + ["B9FD",0x5FB9], + ["B9FE",0x6147], + ["BA40",0x613F], + ["BA41",0x614B], + ["BA42",0x6177], + ["BA43",0x6162], + ["BA44",0x6163], + ["BA45",0x615F], + ["BA46",0x615A], + ["BA47",0x6158], + ["BA48",0x6175], + ["BA49",0x622A], + ["BA4A",0x6487], + ["BA4B",0x6458], + ["BA4C",0x6454], + ["BA4D",0x64A4], + ["BA4E",0x6478], + ["BA4F",0x645F], + ["BA50",0x647A], + ["BA51",0x6451], + ["BA52",0x6467], + ["BA53",0x6434], + ["BA54",0x646D], + ["BA55",0x647B], + ["BA56",0x6572], + ["BA57",0x65A1], + ["BA58",0x65D7], + ["BA59",0x65D6], + ["BA5A",0x66A2], + ["BA5B",0x66A8], + ["BA5C",0x669D], + ["BA5D",0x699C], + ["BA5E",0x69A8], + ["BA5F",0x6995], + ["BA60",0x69C1], + ["BA61",0x69AE], + ["BA62",0x69D3], + ["BA63",0x69CB], + ["BA64",0x699B], + ["BA65",0x69B7], + ["BA66",0x69BB], + ["BA67",0x69AB], + ["BA68",0x69B4], + ["BA69",0x69D0], + ["BA6A",0x69CD], + ["BA6B",0x69AD], + ["BA6C",0x69CC], + ["BA6D",0x69A6], + ["BA6E",0x69C3], + ["BA6F",0x69A3], + ["BA70",0x6B49], + ["BA71",0x6B4C], + ["BA72",0x6C33], + ["BA73",0x6F33], + ["BA74",0x6F14], + ["BA75",0x6EFE], + ["BA76",0x6F13], + ["BA77",0x6EF4], + ["BA78",0x6F29], + ["BA79",0x6F3E], + ["BA7A",0x6F20], + ["BA7B",0x6F2C], + ["BA7C",0x6F0F], + ["BA7D",0x6F02], + ["BA7E",0x6F22], + ["BAA1",0x6EFF], + ["BAA2",0x6EEF], + ["BAA3",0x6F06], + ["BAA4",0x6F31], + ["BAA5",0x6F38], + ["BAA6",0x6F32], + ["BAA7",0x6F23], + ["BAA8",0x6F15], + ["BAA9",0x6F2B], + ["BAAA",0x6F2F], + ["BAAB",0x6F88], + ["BAAC",0x6F2A], + ["BAAD",0x6EEC], + ["BAAE",0x6F01], + ["BAAF",0x6EF2], + ["BAB0",0x6ECC], + ["BAB1",0x6EF7], + ["BAB2",0x7194], + ["BAB3",0x7199], + ["BAB4",0x717D], + ["BAB5",0x718A], + ["BAB6",0x7184], + ["BAB7",0x7192], + ["BAB8",0x723E], + ["BAB9",0x7292], + ["BABA",0x7296], + ["BABB",0x7344], + ["BABC",0x7350], + ["BABD",0x7464], + ["BABE",0x7463], + ["BABF",0x746A], + ["BAC0",0x7470], + ["BAC1",0x746D], + ["BAC2",0x7504], + ["BAC3",0x7591], + ["BAC4",0x7627], + ["BAC5",0x760D], + ["BAC6",0x760B], + ["BAC7",0x7609], + ["BAC8",0x7613], + ["BAC9",0x76E1], + ["BACA",0x76E3], + ["BACB",0x7784], + ["BACC",0x777D], + ["BACD",0x777F], + ["BACE",0x7761], + ["BACF",0x78C1], + ["BAD0",0x789F], + ["BAD1",0x78A7], + ["BAD2",0x78B3], + ["BAD3",0x78A9], + ["BAD4",0x78A3], + ["BAD5",0x798E], + ["BAD6",0x798F], + ["BAD7",0x798D], + ["BAD8",0x7A2E], + ["BAD9",0x7A31], + ["BADA",0x7AAA], + ["BADB",0x7AA9], + ["BADC",0x7AED], + ["BADD",0x7AEF], + ["BADE",0x7BA1], + ["BADF",0x7B95], + ["BAE0",0x7B8B], + ["BAE1",0x7B75], + ["BAE2",0x7B97], + ["BAE3",0x7B9D], + ["BAE4",0x7B94], + ["BAE5",0x7B8F], + ["BAE6",0x7BB8], + ["BAE7",0x7B87], + ["BAE8",0x7B84], + ["BAE9",0x7CB9], + ["BAEA",0x7CBD], + ["BAEB",0x7CBE], + ["BAEC",0x7DBB], + ["BAED",0x7DB0], + ["BAEE",0x7D9C], + ["BAEF",0x7DBD], + ["BAF0",0x7DBE], + ["BAF1",0x7DA0], + ["BAF2",0x7DCA], + ["BAF3",0x7DB4], + ["BAF4",0x7DB2], + ["BAF5",0x7DB1], + ["BAF6",0x7DBA], + ["BAF7",0x7DA2], + ["BAF8",0x7DBF], + ["BAF9",0x7DB5], + ["BAFA",0x7DB8], + ["BAFB",0x7DAD], + ["BAFC",0x7DD2], + ["BAFD",0x7DC7], + ["BAFE",0x7DAC], + ["BB40",0x7F70], + ["BB41",0x7FE0], + ["BB42",0x7FE1], + ["BB43",0x7FDF], + ["BB44",0x805E], + ["BB45",0x805A], + ["BB46",0x8087], + ["BB47",0x8150], + ["BB48",0x8180], + ["BB49",0x818F], + ["BB4A",0x8188], + ["BB4B",0x818A], + ["BB4C",0x817F], + ["BB4D",0x8182], + ["BB4E",0x81E7], + ["BB4F",0x81FA], + ["BB50",0x8207], + ["BB51",0x8214], + ["BB52",0x821E], + ["BB53",0x824B], + ["BB54",0x84C9], + ["BB55",0x84BF], + ["BB56",0x84C6], + ["BB57",0x84C4], + ["BB58",0x8499], + ["BB59",0x849E], + ["BB5A",0x84B2], + ["BB5B",0x849C], + ["BB5C",0x84CB], + ["BB5D",0x84B8], + ["BB5E",0x84C0], + ["BB5F",0x84D3], + ["BB60",0x8490], + ["BB61",0x84BC], + ["BB62",0x84D1], + ["BB63",0x84CA], + ["BB64",0x873F], + ["BB65",0x871C], + ["BB66",0x873B], + ["BB67",0x8722], + ["BB68",0x8725], + ["BB69",0x8734], + ["BB6A",0x8718], + ["BB6B",0x8755], + ["BB6C",0x8737], + ["BB6D",0x8729], + ["BB6E",0x88F3], + ["BB6F",0x8902], + ["BB70",0x88F4], + ["BB71",0x88F9], + ["BB72",0x88F8], + ["BB73",0x88FD], + ["BB74",0x88E8], + ["BB75",0x891A], + ["BB76",0x88EF], + ["BB77",0x8AA6], + ["BB78",0x8A8C], + ["BB79",0x8A9E], + ["BB7A",0x8AA3], + ["BB7B",0x8A8D], + ["BB7C",0x8AA1], + ["BB7D",0x8A93], + ["BB7E",0x8AA4], + ["BBA1",0x8AAA], + ["BBA2",0x8AA5], + ["BBA3",0x8AA8], + ["BBA4",0x8A98], + ["BBA5",0x8A91], + ["BBA6",0x8A9A], + ["BBA7",0x8AA7], + ["BBA8",0x8C6A], + ["BBA9",0x8C8D], + ["BBAA",0x8C8C], + ["BBAB",0x8CD3], + ["BBAC",0x8CD1], + ["BBAD",0x8CD2], + ["BBAE",0x8D6B], + ["BBAF",0x8D99], + ["BBB0",0x8D95], + ["BBB1",0x8DFC], + ["BBB2",0x8F14], + ["BBB3",0x8F12], + ["BBB4",0x8F15], + ["BBB5",0x8F13], + ["BBB6",0x8FA3], + ["BBB7",0x9060], + ["BBB8",0x9058], + ["BBB9",0x905C], + ["BBBA",0x9063], + ["BBBB",0x9059], + ["BBBC",0x905E], + ["BBBD",0x9062], + ["BBBE",0x905D], + ["BBBF",0x905B], + ["BBC0",0x9119], + ["BBC1",0x9118], + ["BBC2",0x911E], + ["BBC3",0x9175], + ["BBC4",0x9178], + ["BBC5",0x9177], + ["BBC6",0x9174], + ["BBC7",0x9278], + ["BBC8",0x9280], + ["BBC9",0x9285], + ["BBCA",0x9298], + ["BBCB",0x9296], + ["BBCC",0x927B], + ["BBCD",0x9293], + ["BBCE",0x929C], + ["BBCF",0x92A8], + ["BBD0",0x927C], + ["BBD1",0x9291], + ["BBD2",0x95A1], + ["BBD3",0x95A8], + ["BBD4",0x95A9], + ["BBD5",0x95A3], + ["BBD6",0x95A5], + ["BBD7",0x95A4], + ["BBD8",0x9699], + ["BBD9",0x969C], + ["BBDA",0x969B], + ["BBDB",0x96CC], + ["BBDC",0x96D2], + ["BBDD",0x9700], + ["BBDE",0x977C], + ["BBDF",0x9785], + ["BBE0",0x97F6], + ["BBE1",0x9817], + ["BBE2",0x9818], + ["BBE3",0x98AF], + ["BBE4",0x98B1], + ["BBE5",0x9903], + ["BBE6",0x9905], + ["BBE7",0x990C], + ["BBE8",0x9909], + ["BBE9",0x99C1], + ["BBEA",0x9AAF], + ["BBEB",0x9AB0], + ["BBEC",0x9AE6], + ["BBED",0x9B41], + ["BBEE",0x9B42], + ["BBEF",0x9CF4], + ["BBF0",0x9CF6], + ["BBF1",0x9CF3], + ["BBF2",0x9EBC], + ["BBF3",0x9F3B], + ["BBF4",0x9F4A], + ["BBF5",0x5104], + ["BBF6",0x5100], + ["BBF7",0x50FB], + ["BBF8",0x50F5], + ["BBF9",0x50F9], + ["BBFA",0x5102], + ["BBFB",0x5108], + ["BBFC",0x5109], + ["BBFD",0x5105], + ["BBFE",0x51DC], + ["BC40",0x5287], + ["BC41",0x5288], + ["BC42",0x5289], + ["BC43",0x528D], + ["BC44",0x528A], + ["BC45",0x52F0], + ["BC46",0x53B2], + ["BC47",0x562E], + ["BC48",0x563B], + ["BC49",0x5639], + ["BC4A",0x5632], + ["BC4B",0x563F], + ["BC4C",0x5634], + ["BC4D",0x5629], + ["BC4E",0x5653], + ["BC4F",0x564E], + ["BC50",0x5657], + ["BC51",0x5674], + ["BC52",0x5636], + ["BC53",0x562F], + ["BC54",0x5630], + ["BC55",0x5880], + ["BC56",0x589F], + ["BC57",0x589E], + ["BC58",0x58B3], + ["BC59",0x589C], + ["BC5A",0x58AE], + ["BC5B",0x58A9], + ["BC5C",0x58A6], + ["BC5D",0x596D], + ["BC5E",0x5B09], + ["BC5F",0x5AFB], + ["BC60",0x5B0B], + ["BC61",0x5AF5], + ["BC62",0x5B0C], + ["BC63",0x5B08], + ["BC64",0x5BEE], + ["BC65",0x5BEC], + ["BC66",0x5BE9], + ["BC67",0x5BEB], + ["BC68",0x5C64], + ["BC69",0x5C65], + ["BC6A",0x5D9D], + ["BC6B",0x5D94], + ["BC6C",0x5E62], + ["BC6D",0x5E5F], + ["BC6E",0x5E61], + ["BC6F",0x5EE2], + ["BC70",0x5EDA], + ["BC71",0x5EDF], + ["BC72",0x5EDD], + ["BC73",0x5EE3], + ["BC74",0x5EE0], + ["BC75",0x5F48], + ["BC76",0x5F71], + ["BC77",0x5FB7], + ["BC78",0x5FB5], + ["BC79",0x6176], + ["BC7A",0x6167], + ["BC7B",0x616E], + ["BC7C",0x615D], + ["BC7D",0x6155], + ["BC7E",0x6182], + ["BCA1",0x617C], + ["BCA2",0x6170], + ["BCA3",0x616B], + ["BCA4",0x617E], + ["BCA5",0x61A7], + ["BCA6",0x6190], + ["BCA7",0x61AB], + ["BCA8",0x618E], + ["BCA9",0x61AC], + ["BCAA",0x619A], + ["BCAB",0x61A4], + ["BCAC",0x6194], + ["BCAD",0x61AE], + ["BCAE",0x622E], + ["BCAF",0x6469], + ["BCB0",0x646F], + ["BCB1",0x6479], + ["BCB2",0x649E], + ["BCB3",0x64B2], + ["BCB4",0x6488], + ["BCB5",0x6490], + ["BCB6",0x64B0], + ["BCB7",0x64A5], + ["BCB8",0x6493], + ["BCB9",0x6495], + ["BCBA",0x64A9], + ["BCBB",0x6492], + ["BCBC",0x64AE], + ["BCBD",0x64AD], + ["BCBE",0x64AB], + ["BCBF",0x649A], + ["BCC0",0x64AC], + ["BCC1",0x6499], + ["BCC2",0x64A2], + ["BCC3",0x64B3], + ["BCC4",0x6575], + ["BCC5",0x6577], + ["BCC6",0x6578], + ["BCC7",0x66AE], + ["BCC8",0x66AB], + ["BCC9",0x66B4], + ["BCCA",0x66B1], + ["BCCB",0x6A23], + ["BCCC",0x6A1F], + ["BCCD",0x69E8], + ["BCCE",0x6A01], + ["BCCF",0x6A1E], + ["BCD0",0x6A19], + ["BCD1",0x69FD], + ["BCD2",0x6A21], + ["BCD3",0x6A13], + ["BCD4",0x6A0A], + ["BCD5",0x69F3], + ["BCD6",0x6A02], + ["BCD7",0x6A05], + ["BCD8",0x69ED], + ["BCD9",0x6A11], + ["BCDA",0x6B50], + ["BCDB",0x6B4E], + ["BCDC",0x6BA4], + ["BCDD",0x6BC5], + ["BCDE",0x6BC6], + ["BCDF",0x6F3F], + ["BCE0",0x6F7C], + ["BCE1",0x6F84], + ["BCE2",0x6F51], + ["BCE3",0x6F66], + ["BCE4",0x6F54], + ["BCE5",0x6F86], + ["BCE6",0x6F6D], + ["BCE7",0x6F5B], + ["BCE8",0x6F78], + ["BCE9",0x6F6E], + ["BCEA",0x6F8E], + ["BCEB",0x6F7A], + ["BCEC",0x6F70], + ["BCED",0x6F64], + ["BCEE",0x6F97], + ["BCEF",0x6F58], + ["BCF0",0x6ED5], + ["BCF1",0x6F6F], + ["BCF2",0x6F60], + ["BCF3",0x6F5F], + ["BCF4",0x719F], + ["BCF5",0x71AC], + ["BCF6",0x71B1], + ["BCF7",0x71A8], + ["BCF8",0x7256], + ["BCF9",0x729B], + ["BCFA",0x734E], + ["BCFB",0x7357], + ["BCFC",0x7469], + ["BCFD",0x748B], + ["BCFE",0x7483], + ["BD40",0x747E], + ["BD41",0x7480], + ["BD42",0x757F], + ["BD43",0x7620], + ["BD44",0x7629], + ["BD45",0x761F], + ["BD46",0x7624], + ["BD47",0x7626], + ["BD48",0x7621], + ["BD49",0x7622], + ["BD4A",0x769A], + ["BD4B",0x76BA], + ["BD4C",0x76E4], + ["BD4D",0x778E], + ["BD4E",0x7787], + ["BD4F",0x778C], + ["BD50",0x7791], + ["BD51",0x778B], + ["BD52",0x78CB], + ["BD53",0x78C5], + ["BD54",0x78BA], + ["BD55",0x78CA], + ["BD56",0x78BE], + ["BD57",0x78D5], + ["BD58",0x78BC], + ["BD59",0x78D0], + ["BD5A",0x7A3F], + ["BD5B",0x7A3C], + ["BD5C",0x7A40], + ["BD5D",0x7A3D], + ["BD5E",0x7A37], + ["BD5F",0x7A3B], + ["BD60",0x7AAF], + ["BD61",0x7AAE], + ["BD62",0x7BAD], + ["BD63",0x7BB1], + ["BD64",0x7BC4], + ["BD65",0x7BB4], + ["BD66",0x7BC6], + ["BD67",0x7BC7], + ["BD68",0x7BC1], + ["BD69",0x7BA0], + ["BD6A",0x7BCC], + ["BD6B",0x7CCA], + ["BD6C",0x7DE0], + ["BD6D",0x7DF4], + ["BD6E",0x7DEF], + ["BD6F",0x7DFB], + ["BD70",0x7DD8], + ["BD71",0x7DEC], + ["BD72",0x7DDD], + ["BD73",0x7DE8], + ["BD74",0x7DE3], + ["BD75",0x7DDA], + ["BD76",0x7DDE], + ["BD77",0x7DE9], + ["BD78",0x7D9E], + ["BD79",0x7DD9], + ["BD7A",0x7DF2], + ["BD7B",0x7DF9], + ["BD7C",0x7F75], + ["BD7D",0x7F77], + ["BD7E",0x7FAF], + ["BDA1",0x7FE9], + ["BDA2",0x8026], + ["BDA3",0x819B], + ["BDA4",0x819C], + ["BDA5",0x819D], + ["BDA6",0x81A0], + ["BDA7",0x819A], + ["BDA8",0x8198], + ["BDA9",0x8517], + ["BDAA",0x853D], + ["BDAB",0x851A], + ["BDAC",0x84EE], + ["BDAD",0x852C], + ["BDAE",0x852D], + ["BDAF",0x8513], + ["BDB0",0x8511], + ["BDB1",0x8523], + ["BDB2",0x8521], + ["BDB3",0x8514], + ["BDB4",0x84EC], + ["BDB5",0x8525], + ["BDB6",0x84FF], + ["BDB7",0x8506], + ["BDB8",0x8782], + ["BDB9",0x8774], + ["BDBA",0x8776], + ["BDBB",0x8760], + ["BDBC",0x8766], + ["BDBD",0x8778], + ["BDBE",0x8768], + ["BDBF",0x8759], + ["BDC0",0x8757], + ["BDC1",0x874C], + ["BDC2",0x8753], + ["BDC3",0x885B], + ["BDC4",0x885D], + ["BDC5",0x8910], + ["BDC6",0x8907], + ["BDC7",0x8912], + ["BDC8",0x8913], + ["BDC9",0x8915], + ["BDCA",0x890A], + ["BDCB",0x8ABC], + ["BDCC",0x8AD2], + ["BDCD",0x8AC7], + ["BDCE",0x8AC4], + ["BDCF",0x8A95], + ["BDD0",0x8ACB], + ["BDD1",0x8AF8], + ["BDD2",0x8AB2], + ["BDD3",0x8AC9], + ["BDD4",0x8AC2], + ["BDD5",0x8ABF], + ["BDD6",0x8AB0], + ["BDD7",0x8AD6], + ["BDD8",0x8ACD], + ["BDD9",0x8AB6], + ["BDDA",0x8AB9], + ["BDDB",0x8ADB], + ["BDDC",0x8C4C], + ["BDDD",0x8C4E], + ["BDDE",0x8C6C], + ["BDDF",0x8CE0], + ["BDE0",0x8CDE], + ["BDE1",0x8CE6], + ["BDE2",0x8CE4], + ["BDE3",0x8CEC], + ["BDE4",0x8CED], + ["BDE5",0x8CE2], + ["BDE6",0x8CE3], + ["BDE7",0x8CDC], + ["BDE8",0x8CEA], + ["BDE9",0x8CE1], + ["BDEA",0x8D6D], + ["BDEB",0x8D9F], + ["BDEC",0x8DA3], + ["BDED",0x8E2B], + ["BDEE",0x8E10], + ["BDEF",0x8E1D], + ["BDF0",0x8E22], + ["BDF1",0x8E0F], + ["BDF2",0x8E29], + ["BDF3",0x8E1F], + ["BDF4",0x8E21], + ["BDF5",0x8E1E], + ["BDF6",0x8EBA], + ["BDF7",0x8F1D], + ["BDF8",0x8F1B], + ["BDF9",0x8F1F], + ["BDFA",0x8F29], + ["BDFB",0x8F26], + ["BDFC",0x8F2A], + ["BDFD",0x8F1C], + ["BDFE",0x8F1E], + ["BE40",0x8F25], + ["BE41",0x9069], + ["BE42",0x906E], + ["BE43",0x9068], + ["BE44",0x906D], + ["BE45",0x9077], + ["BE46",0x9130], + ["BE47",0x912D], + ["BE48",0x9127], + ["BE49",0x9131], + ["BE4A",0x9187], + ["BE4B",0x9189], + ["BE4C",0x918B], + ["BE4D",0x9183], + ["BE4E",0x92C5], + ["BE4F",0x92BB], + ["BE50",0x92B7], + ["BE51",0x92EA], + ["BE52",0x92AC], + ["BE53",0x92E4], + ["BE54",0x92C1], + ["BE55",0x92B3], + ["BE56",0x92BC], + ["BE57",0x92D2], + ["BE58",0x92C7], + ["BE59",0x92F0], + ["BE5A",0x92B2], + ["BE5B",0x95AD], + ["BE5C",0x95B1], + ["BE5D",0x9704], + ["BE5E",0x9706], + ["BE5F",0x9707], + ["BE60",0x9709], + ["BE61",0x9760], + ["BE62",0x978D], + ["BE63",0x978B], + ["BE64",0x978F], + ["BE65",0x9821], + ["BE66",0x982B], + ["BE67",0x981C], + ["BE68",0x98B3], + ["BE69",0x990A], + ["BE6A",0x9913], + ["BE6B",0x9912], + ["BE6C",0x9918], + ["BE6D",0x99DD], + ["BE6E",0x99D0], + ["BE6F",0x99DF], + ["BE70",0x99DB], + ["BE71",0x99D1], + ["BE72",0x99D5], + ["BE73",0x99D2], + ["BE74",0x99D9], + ["BE75",0x9AB7], + ["BE76",0x9AEE], + ["BE77",0x9AEF], + ["BE78",0x9B27], + ["BE79",0x9B45], + ["BE7A",0x9B44], + ["BE7B",0x9B77], + ["BE7C",0x9B6F], + ["BE7D",0x9D06], + ["BE7E",0x9D09], + ["BEA1",0x9D03], + ["BEA2",0x9EA9], + ["BEA3",0x9EBE], + ["BEA4",0x9ECE], + ["BEA5",0x58A8], + ["BEA6",0x9F52], + ["BEA7",0x5112], + ["BEA8",0x5118], + ["BEA9",0x5114], + ["BEAA",0x5110], + ["BEAB",0x5115], + ["BEAC",0x5180], + ["BEAD",0x51AA], + ["BEAE",0x51DD], + ["BEAF",0x5291], + ["BEB0",0x5293], + ["BEB1",0x52F3], + ["BEB2",0x5659], + ["BEB3",0x566B], + ["BEB4",0x5679], + ["BEB5",0x5669], + ["BEB6",0x5664], + ["BEB7",0x5678], + ["BEB8",0x566A], + ["BEB9",0x5668], + ["BEBA",0x5665], + ["BEBB",0x5671], + ["BEBC",0x566F], + ["BEBD",0x566C], + ["BEBE",0x5662], + ["BEBF",0x5676], + ["BEC0",0x58C1], + ["BEC1",0x58BE], + ["BEC2",0x58C7], + ["BEC3",0x58C5], + ["BEC4",0x596E], + ["BEC5",0x5B1D], + ["BEC6",0x5B34], + ["BEC7",0x5B78], + ["BEC8",0x5BF0], + ["BEC9",0x5C0E], + ["BECA",0x5F4A], + ["BECB",0x61B2], + ["BECC",0x6191], + ["BECD",0x61A9], + ["BECE",0x618A], + ["BECF",0x61CD], + ["BED0",0x61B6], + ["BED1",0x61BE], + ["BED2",0x61CA], + ["BED3",0x61C8], + ["BED4",0x6230], + ["BED5",0x64C5], + ["BED6",0x64C1], + ["BED7",0x64CB], + ["BED8",0x64BB], + ["BED9",0x64BC], + ["BEDA",0x64DA], + ["BEDB",0x64C4], + ["BEDC",0x64C7], + ["BEDD",0x64C2], + ["BEDE",0x64CD], + ["BEDF",0x64BF], + ["BEE0",0x64D2], + ["BEE1",0x64D4], + ["BEE2",0x64BE], + ["BEE3",0x6574], + ["BEE4",0x66C6], + ["BEE5",0x66C9], + ["BEE6",0x66B9], + ["BEE7",0x66C4], + ["BEE8",0x66C7], + ["BEE9",0x66B8], + ["BEEA",0x6A3D], + ["BEEB",0x6A38], + ["BEEC",0x6A3A], + ["BEED",0x6A59], + ["BEEE",0x6A6B], + ["BEEF",0x6A58], + ["BEF0",0x6A39], + ["BEF1",0x6A44], + ["BEF2",0x6A62], + ["BEF3",0x6A61], + ["BEF4",0x6A4B], + ["BEF5",0x6A47], + ["BEF6",0x6A35], + ["BEF7",0x6A5F], + ["BEF8",0x6A48], + ["BEF9",0x6B59], + ["BEFA",0x6B77], + ["BEFB",0x6C05], + ["BEFC",0x6FC2], + ["BEFD",0x6FB1], + ["BEFE",0x6FA1], + ["BF40",0x6FC3], + ["BF41",0x6FA4], + ["BF42",0x6FC1], + ["BF43",0x6FA7], + ["BF44",0x6FB3], + ["BF45",0x6FC0], + ["BF46",0x6FB9], + ["BF47",0x6FB6], + ["BF48",0x6FA6], + ["BF49",0x6FA0], + ["BF4A",0x6FB4], + ["BF4B",0x71BE], + ["BF4C",0x71C9], + ["BF4D",0x71D0], + ["BF4E",0x71D2], + ["BF4F",0x71C8], + ["BF50",0x71D5], + ["BF51",0x71B9], + ["BF52",0x71CE], + ["BF53",0x71D9], + ["BF54",0x71DC], + ["BF55",0x71C3], + ["BF56",0x71C4], + ["BF57",0x7368], + ["BF58",0x749C], + ["BF59",0x74A3], + ["BF5A",0x7498], + ["BF5B",0x749F], + ["BF5C",0x749E], + ["BF5D",0x74E2], + ["BF5E",0x750C], + ["BF5F",0x750D], + ["BF60",0x7634], + ["BF61",0x7638], + ["BF62",0x763A], + ["BF63",0x76E7], + ["BF64",0x76E5], + ["BF65",0x77A0], + ["BF66",0x779E], + ["BF67",0x779F], + ["BF68",0x77A5], + ["BF69",0x78E8], + ["BF6A",0x78DA], + ["BF6B",0x78EC], + ["BF6C",0x78E7], + ["BF6D",0x79A6], + ["BF6E",0x7A4D], + ["BF6F",0x7A4E], + ["BF70",0x7A46], + ["BF71",0x7A4C], + ["BF72",0x7A4B], + ["BF73",0x7ABA], + ["BF74",0x7BD9], + ["BF75",0x7C11], + ["BF76",0x7BC9], + ["BF77",0x7BE4], + ["BF78",0x7BDB], + ["BF79",0x7BE1], + ["BF7A",0x7BE9], + ["BF7B",0x7BE6], + ["BF7C",0x7CD5], + ["BF7D",0x7CD6], + ["BF7E",0x7E0A], + ["BFA1",0x7E11], + ["BFA2",0x7E08], + ["BFA3",0x7E1B], + ["BFA4",0x7E23], + ["BFA5",0x7E1E], + ["BFA6",0x7E1D], + ["BFA7",0x7E09], + ["BFA8",0x7E10], + ["BFA9",0x7F79], + ["BFAA",0x7FB2], + ["BFAB",0x7FF0], + ["BFAC",0x7FF1], + ["BFAD",0x7FEE], + ["BFAE",0x8028], + ["BFAF",0x81B3], + ["BFB0",0x81A9], + ["BFB1",0x81A8], + ["BFB2",0x81FB], + ["BFB3",0x8208], + ["BFB4",0x8258], + ["BFB5",0x8259], + ["BFB6",0x854A], + ["BFB7",0x8559], + ["BFB8",0x8548], + ["BFB9",0x8568], + ["BFBA",0x8569], + ["BFBB",0x8543], + ["BFBC",0x8549], + ["BFBD",0x856D], + ["BFBE",0x856A], + ["BFBF",0x855E], + ["BFC0",0x8783], + ["BFC1",0x879F], + ["BFC2",0x879E], + ["BFC3",0x87A2], + ["BFC4",0x878D], + ["BFC5",0x8861], + ["BFC6",0x892A], + ["BFC7",0x8932], + ["BFC8",0x8925], + ["BFC9",0x892B], + ["BFCA",0x8921], + ["BFCB",0x89AA], + ["BFCC",0x89A6], + ["BFCD",0x8AE6], + ["BFCE",0x8AFA], + ["BFCF",0x8AEB], + ["BFD0",0x8AF1], + ["BFD1",0x8B00], + ["BFD2",0x8ADC], + ["BFD3",0x8AE7], + ["BFD4",0x8AEE], + ["BFD5",0x8AFE], + ["BFD6",0x8B01], + ["BFD7",0x8B02], + ["BFD8",0x8AF7], + ["BFD9",0x8AED], + ["BFDA",0x8AF3], + ["BFDB",0x8AF6], + ["BFDC",0x8AFC], + ["BFDD",0x8C6B], + ["BFDE",0x8C6D], + ["BFDF",0x8C93], + ["BFE0",0x8CF4], + ["BFE1",0x8E44], + ["BFE2",0x8E31], + ["BFE3",0x8E34], + ["BFE4",0x8E42], + ["BFE5",0x8E39], + ["BFE6",0x8E35], + ["BFE7",0x8F3B], + ["BFE8",0x8F2F], + ["BFE9",0x8F38], + ["BFEA",0x8F33], + ["BFEB",0x8FA8], + ["BFEC",0x8FA6], + ["BFED",0x9075], + ["BFEE",0x9074], + ["BFEF",0x9078], + ["BFF0",0x9072], + ["BFF1",0x907C], + ["BFF2",0x907A], + ["BFF3",0x9134], + ["BFF4",0x9192], + ["BFF5",0x9320], + ["BFF6",0x9336], + ["BFF7",0x92F8], + ["BFF8",0x9333], + ["BFF9",0x932F], + ["BFFA",0x9322], + ["BFFB",0x92FC], + ["BFFC",0x932B], + ["BFFD",0x9304], + ["BFFE",0x931A], + ["C040",0x9310], + ["C041",0x9326], + ["C042",0x9321], + ["C043",0x9315], + ["C044",0x932E], + ["C045",0x9319], + ["C046",0x95BB], + ["C047",0x96A7], + ["C048",0x96A8], + ["C049",0x96AA], + ["C04A",0x96D5], + ["C04B",0x970E], + ["C04C",0x9711], + ["C04D",0x9716], + ["C04E",0x970D], + ["C04F",0x9713], + ["C050",0x970F], + ["C051",0x975B], + ["C052",0x975C], + ["C053",0x9766], + ["C054",0x9798], + ["C055",0x9830], + ["C056",0x9838], + ["C057",0x983B], + ["C058",0x9837], + ["C059",0x982D], + ["C05A",0x9839], + ["C05B",0x9824], + ["C05C",0x9910], + ["C05D",0x9928], + ["C05E",0x991E], + ["C05F",0x991B], + ["C060",0x9921], + ["C061",0x991A], + ["C062",0x99ED], + ["C063",0x99E2], + ["C064",0x99F1], + ["C065",0x9AB8], + ["C066",0x9ABC], + ["C067",0x9AFB], + ["C068",0x9AED], + ["C069",0x9B28], + ["C06A",0x9B91], + ["C06B",0x9D15], + ["C06C",0x9D23], + ["C06D",0x9D26], + ["C06E",0x9D28], + ["C06F",0x9D12], + ["C070",0x9D1B], + ["C071",0x9ED8], + ["C072",0x9ED4], + ["C073",0x9F8D], + ["C074",0x9F9C], + ["C075",0x512A], + ["C076",0x511F], + ["C077",0x5121], + ["C078",0x5132], + ["C079",0x52F5], + ["C07A",0x568E], + ["C07B",0x5680], + ["C07C",0x5690], + ["C07D",0x5685], + ["C07E",0x5687], + ["C0A1",0x568F], + ["C0A2",0x58D5], + ["C0A3",0x58D3], + ["C0A4",0x58D1], + ["C0A5",0x58CE], + ["C0A6",0x5B30], + ["C0A7",0x5B2A], + ["C0A8",0x5B24], + ["C0A9",0x5B7A], + ["C0AA",0x5C37], + ["C0AB",0x5C68], + ["C0AC",0x5DBC], + ["C0AD",0x5DBA], + ["C0AE",0x5DBD], + ["C0AF",0x5DB8], + ["C0B0",0x5E6B], + ["C0B1",0x5F4C], + ["C0B2",0x5FBD], + ["C0B3",0x61C9], + ["C0B4",0x61C2], + ["C0B5",0x61C7], + ["C0B6",0x61E6], + ["C0B7",0x61CB], + ["C0B8",0x6232], + ["C0B9",0x6234], + ["C0BA",0x64CE], + ["C0BB",0x64CA], + ["C0BC",0x64D8], + ["C0BD",0x64E0], + ["C0BE",0x64F0], + ["C0BF",0x64E6], + ["C0C0",0x64EC], + ["C0C1",0x64F1], + ["C0C2",0x64E2], + ["C0C3",0x64ED], + ["C0C4",0x6582], + ["C0C5",0x6583], + ["C0C6",0x66D9], + ["C0C7",0x66D6], + ["C0C8",0x6A80], + ["C0C9",0x6A94], + ["C0CA",0x6A84], + ["C0CB",0x6AA2], + ["C0CC",0x6A9C], + ["C0CD",0x6ADB], + ["C0CE",0x6AA3], + ["C0CF",0x6A7E], + ["C0D0",0x6A97], + ["C0D1",0x6A90], + ["C0D2",0x6AA0], + ["C0D3",0x6B5C], + ["C0D4",0x6BAE], + ["C0D5",0x6BDA], + ["C0D6",0x6C08], + ["C0D7",0x6FD8], + ["C0D8",0x6FF1], + ["C0D9",0x6FDF], + ["C0DA",0x6FE0], + ["C0DB",0x6FDB], + ["C0DC",0x6FE4], + ["C0DD",0x6FEB], + ["C0DE",0x6FEF], + ["C0DF",0x6F80], + ["C0E0",0x6FEC], + ["C0E1",0x6FE1], + ["C0E2",0x6FE9], + ["C0E3",0x6FD5], + ["C0E4",0x6FEE], + ["C0E5",0x6FF0], + ["C0E6",0x71E7], + ["C0E7",0x71DF], + ["C0E8",0x71EE], + ["C0E9",0x71E6], + ["C0EA",0x71E5], + ["C0EB",0x71ED], + ["C0EC",0x71EC], + ["C0ED",0x71F4], + ["C0EE",0x71E0], + ["C0EF",0x7235], + ["C0F0",0x7246], + ["C0F1",0x7370], + ["C0F2",0x7372], + ["C0F3",0x74A9], + ["C0F4",0x74B0], + ["C0F5",0x74A6], + ["C0F6",0x74A8], + ["C0F7",0x7646], + ["C0F8",0x7642], + ["C0F9",0x764C], + ["C0FA",0x76EA], + ["C0FB",0x77B3], + ["C0FC",0x77AA], + ["C0FD",0x77B0], + ["C0FE",0x77AC], + ["C140",0x77A7], + ["C141",0x77AD], + ["C142",0x77EF], + ["C143",0x78F7], + ["C144",0x78FA], + ["C145",0x78F4], + ["C146",0x78EF], + ["C147",0x7901], + ["C148",0x79A7], + ["C149",0x79AA], + ["C14A",0x7A57], + ["C14B",0x7ABF], + ["C14C",0x7C07], + ["C14D",0x7C0D], + ["C14E",0x7BFE], + ["C14F",0x7BF7], + ["C150",0x7C0C], + ["C151",0x7BE0], + ["C152",0x7CE0], + ["C153",0x7CDC], + ["C154",0x7CDE], + ["C155",0x7CE2], + ["C156",0x7CDF], + ["C157",0x7CD9], + ["C158",0x7CDD], + ["C159",0x7E2E], + ["C15A",0x7E3E], + ["C15B",0x7E46], + ["C15C",0x7E37], + ["C15D",0x7E32], + ["C15E",0x7E43], + ["C15F",0x7E2B], + ["C160",0x7E3D], + ["C161",0x7E31], + ["C162",0x7E45], + ["C163",0x7E41], + ["C164",0x7E34], + ["C165",0x7E39], + ["C166",0x7E48], + ["C167",0x7E35], + ["C168",0x7E3F], + ["C169",0x7E2F], + ["C16A",0x7F44], + ["C16B",0x7FF3], + ["C16C",0x7FFC], + ["C16D",0x8071], + ["C16E",0x8072], + ["C16F",0x8070], + ["C170",0x806F], + ["C171",0x8073], + ["C172",0x81C6], + ["C173",0x81C3], + ["C174",0x81BA], + ["C175",0x81C2], + ["C176",0x81C0], + ["C177",0x81BF], + ["C178",0x81BD], + ["C179",0x81C9], + ["C17A",0x81BE], + ["C17B",0x81E8], + ["C17C",0x8209], + ["C17D",0x8271], + ["C17E",0x85AA], + ["C1A1",0x8584], + ["C1A2",0x857E], + ["C1A3",0x859C], + ["C1A4",0x8591], + ["C1A5",0x8594], + ["C1A6",0x85AF], + ["C1A7",0x859B], + ["C1A8",0x8587], + ["C1A9",0x85A8], + ["C1AA",0x858A], + ["C1AB",0x8667], + ["C1AC",0x87C0], + ["C1AD",0x87D1], + ["C1AE",0x87B3], + ["C1AF",0x87D2], + ["C1B0",0x87C6], + ["C1B1",0x87AB], + ["C1B2",0x87BB], + ["C1B3",0x87BA], + ["C1B4",0x87C8], + ["C1B5",0x87CB], + ["C1B6",0x893B], + ["C1B7",0x8936], + ["C1B8",0x8944], + ["C1B9",0x8938], + ["C1BA",0x893D], + ["C1BB",0x89AC], + ["C1BC",0x8B0E], + ["C1BD",0x8B17], + ["C1BE",0x8B19], + ["C1BF",0x8B1B], + ["C1C0",0x8B0A], + ["C1C1",0x8B20], + ["C1C2",0x8B1D], + ["C1C3",0x8B04], + ["C1C4",0x8B10], + ["C1C5",0x8C41], + ["C1C6",0x8C3F], + ["C1C7",0x8C73], + ["C1C8",0x8CFA], + ["C1C9",0x8CFD], + ["C1CA",0x8CFC], + ["C1CB",0x8CF8], + ["C1CC",0x8CFB], + ["C1CD",0x8DA8], + ["C1CE",0x8E49], + ["C1CF",0x8E4B], + ["C1D0",0x8E48], + ["C1D1",0x8E4A], + ["C1D2",0x8F44], + ["C1D3",0x8F3E], + ["C1D4",0x8F42], + ["C1D5",0x8F45], + ["C1D6",0x8F3F], + ["C1D7",0x907F], + ["C1D8",0x907D], + ["C1D9",0x9084], + ["C1DA",0x9081], + ["C1DB",0x9082], + ["C1DC",0x9080], + ["C1DD",0x9139], + ["C1DE",0x91A3], + ["C1DF",0x919E], + ["C1E0",0x919C], + ["C1E1",0x934D], + ["C1E2",0x9382], + ["C1E3",0x9328], + ["C1E4",0x9375], + ["C1E5",0x934A], + ["C1E6",0x9365], + ["C1E7",0x934B], + ["C1E8",0x9318], + ["C1E9",0x937E], + ["C1EA",0x936C], + ["C1EB",0x935B], + ["C1EC",0x9370], + ["C1ED",0x935A], + ["C1EE",0x9354], + ["C1EF",0x95CA], + ["C1F0",0x95CB], + ["C1F1",0x95CC], + ["C1F2",0x95C8], + ["C1F3",0x95C6], + ["C1F4",0x96B1], + ["C1F5",0x96B8], + ["C1F6",0x96D6], + ["C1F7",0x971C], + ["C1F8",0x971E], + ["C1F9",0x97A0], + ["C1FA",0x97D3], + ["C1FB",0x9846], + ["C1FC",0x98B6], + ["C1FD",0x9935], + ["C1FE",0x9A01], + ["C240",0x99FF], + ["C241",0x9BAE], + ["C242",0x9BAB], + ["C243",0x9BAA], + ["C244",0x9BAD], + ["C245",0x9D3B], + ["C246",0x9D3F], + ["C247",0x9E8B], + ["C248",0x9ECF], + ["C249",0x9EDE], + ["C24A",0x9EDC], + ["C24B",0x9EDD], + ["C24C",0x9EDB], + ["C24D",0x9F3E], + ["C24E",0x9F4B], + ["C24F",0x53E2], + ["C250",0x5695], + ["C251",0x56AE], + ["C252",0x58D9], + ["C253",0x58D8], + ["C254",0x5B38], + ["C255",0x5F5D], + ["C256",0x61E3], + ["C257",0x6233], + ["C258",0x64F4], + ["C259",0x64F2], + ["C25A",0x64FE], + ["C25B",0x6506], + ["C25C",0x64FA], + ["C25D",0x64FB], + ["C25E",0x64F7], + ["C25F",0x65B7], + ["C260",0x66DC], + ["C261",0x6726], + ["C262",0x6AB3], + ["C263",0x6AAC], + ["C264",0x6AC3], + ["C265",0x6ABB], + ["C266",0x6AB8], + ["C267",0x6AC2], + ["C268",0x6AAE], + ["C269",0x6AAF], + ["C26A",0x6B5F], + ["C26B",0x6B78], + ["C26C",0x6BAF], + ["C26D",0x7009], + ["C26E",0x700B], + ["C26F",0x6FFE], + ["C270",0x7006], + ["C271",0x6FFA], + ["C272",0x7011], + ["C273",0x700F], + ["C274",0x71FB], + ["C275",0x71FC], + ["C276",0x71FE], + ["C277",0x71F8], + ["C278",0x7377], + ["C279",0x7375], + ["C27A",0x74A7], + ["C27B",0x74BF], + ["C27C",0x7515], + ["C27D",0x7656], + ["C27E",0x7658], + ["C2A1",0x7652], + ["C2A2",0x77BD], + ["C2A3",0x77BF], + ["C2A4",0x77BB], + ["C2A5",0x77BC], + ["C2A6",0x790E], + ["C2A7",0x79AE], + ["C2A8",0x7A61], + ["C2A9",0x7A62], + ["C2AA",0x7A60], + ["C2AB",0x7AC4], + ["C2AC",0x7AC5], + ["C2AD",0x7C2B], + ["C2AE",0x7C27], + ["C2AF",0x7C2A], + ["C2B0",0x7C1E], + ["C2B1",0x7C23], + ["C2B2",0x7C21], + ["C2B3",0x7CE7], + ["C2B4",0x7E54], + ["C2B5",0x7E55], + ["C2B6",0x7E5E], + ["C2B7",0x7E5A], + ["C2B8",0x7E61], + ["C2B9",0x7E52], + ["C2BA",0x7E59], + ["C2BB",0x7F48], + ["C2BC",0x7FF9], + ["C2BD",0x7FFB], + ["C2BE",0x8077], + ["C2BF",0x8076], + ["C2C0",0x81CD], + ["C2C1",0x81CF], + ["C2C2",0x820A], + ["C2C3",0x85CF], + ["C2C4",0x85A9], + ["C2C5",0x85CD], + ["C2C6",0x85D0], + ["C2C7",0x85C9], + ["C2C8",0x85B0], + ["C2C9",0x85BA], + ["C2CA",0x85B9], + ["C2CB",0x85A6], + ["C2CC",0x87EF], + ["C2CD",0x87EC], + ["C2CE",0x87F2], + ["C2CF",0x87E0], + ["C2D0",0x8986], + ["C2D1",0x89B2], + ["C2D2",0x89F4], + ["C2D3",0x8B28], + ["C2D4",0x8B39], + ["C2D5",0x8B2C], + ["C2D6",0x8B2B], + ["C2D7",0x8C50], + ["C2D8",0x8D05], + ["C2D9",0x8E59], + ["C2DA",0x8E63], + ["C2DB",0x8E66], + ["C2DC",0x8E64], + ["C2DD",0x8E5F], + ["C2DE",0x8E55], + ["C2DF",0x8EC0], + ["C2E0",0x8F49], + ["C2E1",0x8F4D], + ["C2E2",0x9087], + ["C2E3",0x9083], + ["C2E4",0x9088], + ["C2E5",0x91AB], + ["C2E6",0x91AC], + ["C2E7",0x91D0], + ["C2E8",0x9394], + ["C2E9",0x938A], + ["C2EA",0x9396], + ["C2EB",0x93A2], + ["C2EC",0x93B3], + ["C2ED",0x93AE], + ["C2EE",0x93AC], + ["C2EF",0x93B0], + ["C2F0",0x9398], + ["C2F1",0x939A], + ["C2F2",0x9397], + ["C2F3",0x95D4], + ["C2F4",0x95D6], + ["C2F5",0x95D0], + ["C2F6",0x95D5], + ["C2F7",0x96E2], + ["C2F8",0x96DC], + ["C2F9",0x96D9], + ["C2FA",0x96DB], + ["C2FB",0x96DE], + ["C2FC",0x9724], + ["C2FD",0x97A3], + ["C2FE",0x97A6], + ["C340",0x97AD], + ["C341",0x97F9], + ["C342",0x984D], + ["C343",0x984F], + ["C344",0x984C], + ["C345",0x984E], + ["C346",0x9853], + ["C347",0x98BA], + ["C348",0x993E], + ["C349",0x993F], + ["C34A",0x993D], + ["C34B",0x992E], + ["C34C",0x99A5], + ["C34D",0x9A0E], + ["C34E",0x9AC1], + ["C34F",0x9B03], + ["C350",0x9B06], + ["C351",0x9B4F], + ["C352",0x9B4E], + ["C353",0x9B4D], + ["C354",0x9BCA], + ["C355",0x9BC9], + ["C356",0x9BFD], + ["C357",0x9BC8], + ["C358",0x9BC0], + ["C359",0x9D51], + ["C35A",0x9D5D], + ["C35B",0x9D60], + ["C35C",0x9EE0], + ["C35D",0x9F15], + ["C35E",0x9F2C], + ["C35F",0x5133], + ["C360",0x56A5], + ["C361",0x58DE], + ["C362",0x58DF], + ["C363",0x58E2], + ["C364",0x5BF5], + ["C365",0x9F90], + ["C366",0x5EEC], + ["C367",0x61F2], + ["C368",0x61F7], + ["C369",0x61F6], + ["C36A",0x61F5], + ["C36B",0x6500], + ["C36C",0x650F], + ["C36D",0x66E0], + ["C36E",0x66DD], + ["C36F",0x6AE5], + ["C370",0x6ADD], + ["C371",0x6ADA], + ["C372",0x6AD3], + ["C373",0x701B], + ["C374",0x701F], + ["C375",0x7028], + ["C376",0x701A], + ["C377",0x701D], + ["C378",0x7015], + ["C379",0x7018], + ["C37A",0x7206], + ["C37B",0x720D], + ["C37C",0x7258], + ["C37D",0x72A2], + ["C37E",0x7378], + ["C3A1",0x737A], + ["C3A2",0x74BD], + ["C3A3",0x74CA], + ["C3A4",0x74E3], + ["C3A5",0x7587], + ["C3A6",0x7586], + ["C3A7",0x765F], + ["C3A8",0x7661], + ["C3A9",0x77C7], + ["C3AA",0x7919], + ["C3AB",0x79B1], + ["C3AC",0x7A6B], + ["C3AD",0x7A69], + ["C3AE",0x7C3E], + ["C3AF",0x7C3F], + ["C3B0",0x7C38], + ["C3B1",0x7C3D], + ["C3B2",0x7C37], + ["C3B3",0x7C40], + ["C3B4",0x7E6B], + ["C3B5",0x7E6D], + ["C3B6",0x7E79], + ["C3B7",0x7E69], + ["C3B8",0x7E6A], + ["C3B9",0x7F85], + ["C3BA",0x7E73], + ["C3BB",0x7FB6], + ["C3BC",0x7FB9], + ["C3BD",0x7FB8], + ["C3BE",0x81D8], + ["C3BF",0x85E9], + ["C3C0",0x85DD], + ["C3C1",0x85EA], + ["C3C2",0x85D5], + ["C3C3",0x85E4], + ["C3C4",0x85E5], + ["C3C5",0x85F7], + ["C3C6",0x87FB], + ["C3C7",0x8805], + ["C3C8",0x880D], + ["C3C9",0x87F9], + ["C3CA",0x87FE], + ["C3CB",0x8960], + ["C3CC",0x895F], + ["C3CD",0x8956], + ["C3CE",0x895E], + ["C3CF",0x8B41], + ["C3D0",0x8B5C], + ["C3D1",0x8B58], + ["C3D2",0x8B49], + ["C3D3",0x8B5A], + ["C3D4",0x8B4E], + ["C3D5",0x8B4F], + ["C3D6",0x8B46], + ["C3D7",0x8B59], + ["C3D8",0x8D08], + ["C3D9",0x8D0A], + ["C3DA",0x8E7C], + ["C3DB",0x8E72], + ["C3DC",0x8E87], + ["C3DD",0x8E76], + ["C3DE",0x8E6C], + ["C3DF",0x8E7A], + ["C3E0",0x8E74], + ["C3E1",0x8F54], + ["C3E2",0x8F4E], + ["C3E3",0x8FAD], + ["C3E4",0x908A], + ["C3E5",0x908B], + ["C3E6",0x91B1], + ["C3E7",0x91AE], + ["C3E8",0x93E1], + ["C3E9",0x93D1], + ["C3EA",0x93DF], + ["C3EB",0x93C3], + ["C3EC",0x93C8], + ["C3ED",0x93DC], + ["C3EE",0x93DD], + ["C3EF",0x93D6], + ["C3F0",0x93E2], + ["C3F1",0x93CD], + ["C3F2",0x93D8], + ["C3F3",0x93E4], + ["C3F4",0x93D7], + ["C3F5",0x93E8], + ["C3F6",0x95DC], + ["C3F7",0x96B4], + ["C3F8",0x96E3], + ["C3F9",0x972A], + ["C3FA",0x9727], + ["C3FB",0x9761], + ["C3FC",0x97DC], + ["C3FD",0x97FB], + ["C3FE",0x985E], + ["C440",0x9858], + ["C441",0x985B], + ["C442",0x98BC], + ["C443",0x9945], + ["C444",0x9949], + ["C445",0x9A16], + ["C446",0x9A19], + ["C447",0x9B0D], + ["C448",0x9BE8], + ["C449",0x9BE7], + ["C44A",0x9BD6], + ["C44B",0x9BDB], + ["C44C",0x9D89], + ["C44D",0x9D61], + ["C44E",0x9D72], + ["C44F",0x9D6A], + ["C450",0x9D6C], + ["C451",0x9E92], + ["C452",0x9E97], + ["C453",0x9E93], + ["C454",0x9EB4], + ["C455",0x52F8], + ["C456",0x56A8], + ["C457",0x56B7], + ["C458",0x56B6], + ["C459",0x56B4], + ["C45A",0x56BC], + ["C45B",0x58E4], + ["C45C",0x5B40], + ["C45D",0x5B43], + ["C45E",0x5B7D], + ["C45F",0x5BF6], + ["C460",0x5DC9], + ["C461",0x61F8], + ["C462",0x61FA], + ["C463",0x6518], + ["C464",0x6514], + ["C465",0x6519], + ["C466",0x66E6], + ["C467",0x6727], + ["C468",0x6AEC], + ["C469",0x703E], + ["C46A",0x7030], + ["C46B",0x7032], + ["C46C",0x7210], + ["C46D",0x737B], + ["C46E",0x74CF], + ["C46F",0x7662], + ["C470",0x7665], + ["C471",0x7926], + ["C472",0x792A], + ["C473",0x792C], + ["C474",0x792B], + ["C475",0x7AC7], + ["C476",0x7AF6], + ["C477",0x7C4C], + ["C478",0x7C43], + ["C479",0x7C4D], + ["C47A",0x7CEF], + ["C47B",0x7CF0], + ["C47C",0x8FAE], + ["C47D",0x7E7D], + ["C47E",0x7E7C], + ["C4A1",0x7E82], + ["C4A2",0x7F4C], + ["C4A3",0x8000], + ["C4A4",0x81DA], + ["C4A5",0x8266], + ["C4A6",0x85FB], + ["C4A7",0x85F9], + ["C4A8",0x8611], + ["C4A9",0x85FA], + ["C4AA",0x8606], + ["C4AB",0x860B], + ["C4AC",0x8607], + ["C4AD",0x860A], + ["C4AE",0x8814], + ["C4AF",0x8815], + ["C4B0",0x8964], + ["C4B1",0x89BA], + ["C4B2",0x89F8], + ["C4B3",0x8B70], + ["C4B4",0x8B6C], + ["C4B5",0x8B66], + ["C4B6",0x8B6F], + ["C4B7",0x8B5F], + ["C4B8",0x8B6B], + ["C4B9",0x8D0F], + ["C4BA",0x8D0D], + ["C4BB",0x8E89], + ["C4BC",0x8E81], + ["C4BD",0x8E85], + ["C4BE",0x8E82], + ["C4BF",0x91B4], + ["C4C0",0x91CB], + ["C4C1",0x9418], + ["C4C2",0x9403], + ["C4C3",0x93FD], + ["C4C4",0x95E1], + ["C4C5",0x9730], + ["C4C6",0x98C4], + ["C4C7",0x9952], + ["C4C8",0x9951], + ["C4C9",0x99A8], + ["C4CA",0x9A2B], + ["C4CB",0x9A30], + ["C4CC",0x9A37], + ["C4CD",0x9A35], + ["C4CE",0x9C13], + ["C4CF",0x9C0D], + ["C4D0",0x9E79], + ["C4D1",0x9EB5], + ["C4D2",0x9EE8], + ["C4D3",0x9F2F], + ["C4D4",0x9F5F], + ["C4D5",0x9F63], + ["C4D6",0x9F61], + ["C4D7",0x5137], + ["C4D8",0x5138], + ["C4D9",0x56C1], + ["C4DA",0x56C0], + ["C4DB",0x56C2], + ["C4DC",0x5914], + ["C4DD",0x5C6C], + ["C4DE",0x5DCD], + ["C4DF",0x61FC], + ["C4E0",0x61FE], + ["C4E1",0x651D], + ["C4E2",0x651C], + ["C4E3",0x6595], + ["C4E4",0x66E9], + ["C4E5",0x6AFB], + ["C4E6",0x6B04], + ["C4E7",0x6AFA], + ["C4E8",0x6BB2], + ["C4E9",0x704C], + ["C4EA",0x721B], + ["C4EB",0x72A7], + ["C4EC",0x74D6], + ["C4ED",0x74D4], + ["C4EE",0x7669], + ["C4EF",0x77D3], + ["C4F0",0x7C50], + ["C4F1",0x7E8F], + ["C4F2",0x7E8C], + ["C4F3",0x7FBC], + ["C4F4",0x8617], + ["C4F5",0x862D], + ["C4F6",0x861A], + ["C4F7",0x8823], + ["C4F8",0x8822], + ["C4F9",0x8821], + ["C4FA",0x881F], + ["C4FB",0x896A], + ["C4FC",0x896C], + ["C4FD",0x89BD], + ["C4FE",0x8B74], + ["C540",0x8B77], + ["C541",0x8B7D], + ["C542",0x8D13], + ["C543",0x8E8A], + ["C544",0x8E8D], + ["C545",0x8E8B], + ["C546",0x8F5F], + ["C547",0x8FAF], + ["C548",0x91BA], + ["C549",0x942E], + ["C54A",0x9433], + ["C54B",0x9435], + ["C54C",0x943A], + ["C54D",0x9438], + ["C54E",0x9432], + ["C54F",0x942B], + ["C550",0x95E2], + ["C551",0x9738], + ["C552",0x9739], + ["C553",0x9732], + ["C554",0x97FF], + ["C555",0x9867], + ["C556",0x9865], + ["C557",0x9957], + ["C558",0x9A45], + ["C559",0x9A43], + ["C55A",0x9A40], + ["C55B",0x9A3E], + ["C55C",0x9ACF], + ["C55D",0x9B54], + ["C55E",0x9B51], + ["C55F",0x9C2D], + ["C560",0x9C25], + ["C561",0x9DAF], + ["C562",0x9DB4], + ["C563",0x9DC2], + ["C564",0x9DB8], + ["C565",0x9E9D], + ["C566",0x9EEF], + ["C567",0x9F19], + ["C568",0x9F5C], + ["C569",0x9F66], + ["C56A",0x9F67], + ["C56B",0x513C], + ["C56C",0x513B], + ["C56D",0x56C8], + ["C56E",0x56CA], + ["C56F",0x56C9], + ["C570",0x5B7F], + ["C571",0x5DD4], + ["C572",0x5DD2], + ["C573",0x5F4E], + ["C574",0x61FF], + ["C575",0x6524], + ["C576",0x6B0A], + ["C577",0x6B61], + ["C578",0x7051], + ["C579",0x7058], + ["C57A",0x7380], + ["C57B",0x74E4], + ["C57C",0x758A], + ["C57D",0x766E], + ["C57E",0x766C], + ["C5A1",0x79B3], + ["C5A2",0x7C60], + ["C5A3",0x7C5F], + ["C5A4",0x807E], + ["C5A5",0x807D], + ["C5A6",0x81DF], + ["C5A7",0x8972], + ["C5A8",0x896F], + ["C5A9",0x89FC], + ["C5AA",0x8B80], + ["C5AB",0x8D16], + ["C5AC",0x8D17], + ["C5AD",0x8E91], + ["C5AE",0x8E93], + ["C5AF",0x8F61], + ["C5B0",0x9148], + ["C5B1",0x9444], + ["C5B2",0x9451], + ["C5B3",0x9452], + ["C5B4",0x973D], + ["C5B5",0x973E], + ["C5B6",0x97C3], + ["C5B7",0x97C1], + ["C5B8",0x986B], + ["C5B9",0x9955], + ["C5BA",0x9A55], + ["C5BB",0x9A4D], + ["C5BC",0x9AD2], + ["C5BD",0x9B1A], + ["C5BE",0x9C49], + ["C5BF",0x9C31], + ["C5C0",0x9C3E], + ["C5C1",0x9C3B], + ["C5C2",0x9DD3], + ["C5C3",0x9DD7], + ["C5C4",0x9F34], + ["C5C5",0x9F6C], + ["C5C6",0x9F6A], + ["C5C7",0x9F94], + ["C5C8",0x56CC], + ["C5C9",0x5DD6], + ["C5CA",0x6200], + ["C5CB",0x6523], + ["C5CC",0x652B], + ["C5CD",0x652A], + ["C5CE",0x66EC], + ["C5CF",0x6B10], + ["C5D0",0x74DA], + ["C5D1",0x7ACA], + ["C5D2",0x7C64], + ["C5D3",0x7C63], + ["C5D4",0x7C65], + ["C5D5",0x7E93], + ["C5D6",0x7E96], + ["C5D7",0x7E94], + ["C5D8",0x81E2], + ["C5D9",0x8638], + ["C5DA",0x863F], + ["C5DB",0x8831], + ["C5DC",0x8B8A], + ["C5DD",0x9090], + ["C5DE",0x908F], + ["C5DF",0x9463], + ["C5E0",0x9460], + ["C5E1",0x9464], + ["C5E2",0x9768], + ["C5E3",0x986F], + ["C5E4",0x995C], + ["C5E5",0x9A5A], + ["C5E6",0x9A5B], + ["C5E7",0x9A57], + ["C5E8",0x9AD3], + ["C5E9",0x9AD4], + ["C5EA",0x9AD1], + ["C5EB",0x9C54], + ["C5EC",0x9C57], + ["C5ED",0x9C56], + ["C5EE",0x9DE5], + ["C5EF",0x9E9F], + ["C5F0",0x9EF4], + ["C5F1",0x56D1], + ["C5F2",0x58E9], + ["C5F3",0x652C], + ["C5F4",0x705E], + ["C5F5",0x7671], + ["C5F6",0x7672], + ["C5F7",0x77D7], + ["C5F8",0x7F50], + ["C5F9",0x7F88], + ["C5FA",0x8836], + ["C5FB",0x8839], + ["C5FC",0x8862], + ["C5FD",0x8B93], + ["C5FE",0x8B92], + ["C640",0x8B96], + ["C641",0x8277], + ["C642",0x8D1B], + ["C643",0x91C0], + ["C644",0x946A], + ["C645",0x9742], + ["C646",0x9748], + ["C647",0x9744], + ["C648",0x97C6], + ["C649",0x9870], + ["C64A",0x9A5F], + ["C64B",0x9B22], + ["C64C",0x9B58], + ["C64D",0x9C5F], + ["C64E",0x9DF9], + ["C64F",0x9DFA], + ["C650",0x9E7C], + ["C651",0x9E7D], + ["C652",0x9F07], + ["C653",0x9F77], + ["C654",0x9F72], + ["C655",0x5EF3], + ["C656",0x6B16], + ["C657",0x7063], + ["C658",0x7C6C], + ["C659",0x7C6E], + ["C65A",0x883B], + ["C65B",0x89C0], + ["C65C",0x8EA1], + ["C65D",0x91C1], + ["C65E",0x9472], + ["C65F",0x9470], + ["C660",0x9871], + ["C661",0x995E], + ["C662",0x9AD6], + ["C663",0x9B23], + ["C664",0x9ECC], + ["C665",0x7064], + ["C666",0x77DA], + ["C667",0x8B9A], + ["C668",0x9477], + ["C669",0x97C9], + ["C66A",0x9A62], + ["C66B",0x9A65], + ["C66C",0x7E9C], + ["C66D",0x8B9C], + ["C66E",0x8EAA], + ["C66F",0x91C5], + ["C670",0x947D], + ["C671",0x947E], + ["C672",0x947C], + ["C673",0x9C77], + ["C674",0x9C78], + ["C675",0x9EF7], + ["C676",0x8C54], + ["C677",0x947F], + ["C678",0x9E1A], + ["C679",0x7228], + ["C67A",0x9A6A], + ["C67B",0x9B31], + ["C67C",0x9E1B], + ["C67D",0x9E1E], + ["C67E",0x7C72], + ["C6A1",0x2460], + ["C6A2",0x2461], + ["C6A3",0x2462], + ["C6A4",0x2463], + ["C6A5",0x2464], + ["C6A6",0x2465], + ["C6A7",0x2466], + ["C6A8",0x2467], + ["C6A9",0x2468], + ["C6AA",0x2469], + ["C6AB",0x2474], + ["C6AC",0x2475], + ["C6AD",0x2476], + ["C6AE",0x2477], + ["C6AF",0x2478], + ["C6B0",0x2479], + ["C6B1",0x247A], + ["C6B2",0x247B], + ["C6B3",0x247C], + ["C6B4",0x247D], + ["C6B5",0x2170], + ["C6B6",0x2171], + ["C6B7",0x2172], + ["C6B8",0x2173], + ["C6B9",0x2174], + ["C6BA",0x2175], + ["C6BB",0x2176], + ["C6BC",0x2177], + ["C6BD",0x2178], + ["C6BE",0x2179], + ["C6BF",0x4E36], + ["C6C0",0x4E3F], + ["C6C1",0x4E85], + ["C6C2",0x4EA0], + ["C6C3",0x5182], + ["C6C4",0x5196], + ["C6C5",0x51AB], + ["C6C6",0x52F9], + ["C6C7",0x5338], + ["C6C8",0x5369], + ["C6C9",0x53B6], + ["C6CA",0x590A], + ["C6CB",0x5B80], + ["C6CC",0x5DDB], + ["C6CD",0x5E7A], + ["C6CE",0x5E7F], + ["C6CF",0x5EF4], + ["C6D0",0x5F50], + ["C6D1",0x5F61], + ["C6D2",0x6534], + ["C6D3",0x65E0], + ["C6D4",0x7592], + ["C6D5",0x7676], + ["C6D6",0x8FB5], + ["C6D7",0x96B6], + ["C6D8",0x00A8], + ["C6D9",0x02C6], + ["C6DA",0x30FD], + ["C6DB",0x30FE], + ["C6DC",0x309D], + ["C6DD",0x309E], + ["C6DE",0x3003], + ["C6DF",0x4EDD], + ["C6E0",0x3005], + ["C6E1",0x3006], + ["C6E2",0x3007], + ["C6E3",0x30FC], + ["C6E4",0xFF3B], + ["C6E5",0xFF3D], + ["C6E6",0x273D], + ["C6E7",0x3041], + ["C6E8",0x3042], + ["C6E9",0x3043], + ["C6EA",0x3044], + ["C6EB",0x3045], + ["C6EC",0x3046], + ["C6ED",0x3047], + ["C6EE",0x3048], + ["C6EF",0x3049], + ["C6F0",0x304A], + ["C6F1",0x304B], + ["C6F2",0x304C], + ["C6F3",0x304D], + ["C6F4",0x304E], + ["C6F5",0x304F], + ["C6F6",0x3050], + ["C6F7",0x3051], + ["C6F8",0x3052], + ["C6F9",0x3053], + ["C6FA",0x3054], + ["C6FB",0x3055], + ["C6FC",0x3056], + ["C6FD",0x3057], + ["C6FE",0x3058], + ["C740",0x3059], + ["C741",0x305A], + ["C742",0x305B], + ["C743",0x305C], + ["C744",0x305D], + ["C745",0x305E], + ["C746",0x305F], + ["C747",0x3060], + ["C748",0x3061], + ["C749",0x3062], + ["C74A",0x3063], + ["C74B",0x3064], + ["C74C",0x3065], + ["C74D",0x3066], + ["C74E",0x3067], + ["C74F",0x3068], + ["C750",0x3069], + ["C751",0x306A], + ["C752",0x306B], + ["C753",0x306C], + ["C754",0x306D], + ["C755",0x306E], + ["C756",0x306F], + ["C757",0x3070], + ["C758",0x3071], + ["C759",0x3072], + ["C75A",0x3073], + ["C75B",0x3074], + ["C75C",0x3075], + ["C75D",0x3076], + ["C75E",0x3077], + ["C75F",0x3078], + ["C760",0x3079], + ["C761",0x307A], + ["C762",0x307B], + ["C763",0x307C], + ["C764",0x307D], + ["C765",0x307E], + ["C766",0x307F], + ["C767",0x3080], + ["C768",0x3081], + ["C769",0x3082], + ["C76A",0x3083], + ["C76B",0x3084], + ["C76C",0x3085], + ["C76D",0x3086], + ["C76E",0x3087], + ["C76F",0x3088], + ["C770",0x3089], + ["C771",0x308A], + ["C772",0x308B], + ["C773",0x308C], + ["C774",0x308D], + ["C775",0x308E], + ["C776",0x308F], + ["C777",0x3090], + ["C778",0x3091], + ["C779",0x3092], + ["C77A",0x3093], + ["C77B",0x30A1], + ["C77C",0x30A2], + ["C77D",0x30A3], + ["C77E",0x30A4], + ["C7A1",0x30A5], + ["C7A2",0x30A6], + ["C7A3",0x30A7], + ["C7A4",0x30A8], + ["C7A5",0x30A9], + ["C7A6",0x30AA], + ["C7A7",0x30AB], + ["C7A8",0x30AC], + ["C7A9",0x30AD], + ["C7AA",0x30AE], + ["C7AB",0x30AF], + ["C7AC",0x30B0], + ["C7AD",0x30B1], + ["C7AE",0x30B2], + ["C7AF",0x30B3], + ["C7B0",0x30B4], + ["C7B1",0x30B5], + ["C7B2",0x30B6], + ["C7B3",0x30B7], + ["C7B4",0x30B8], + ["C7B5",0x30B9], + ["C7B6",0x30BA], + ["C7B7",0x30BB], + ["C7B8",0x30BC], + ["C7B9",0x30BD], + ["C7BA",0x30BE], + ["C7BB",0x30BF], + ["C7BC",0x30C0], + ["C7BD",0x30C1], + ["C7BE",0x30C2], + ["C7BF",0x30C3], + ["C7C0",0x30C4], + ["C7C1",0x30C5], + ["C7C2",0x30C6], + ["C7C3",0x30C7], + ["C7C4",0x30C8], + ["C7C5",0x30C9], + ["C7C6",0x30CA], + ["C7C7",0x30CB], + ["C7C8",0x30CC], + ["C7C9",0x30CD], + ["C7CA",0x30CE], + ["C7CB",0x30CF], + ["C7CC",0x30D0], + ["C7CD",0x30D1], + ["C7CE",0x30D2], + ["C7CF",0x30D3], + ["C7D0",0x30D4], + ["C7D1",0x30D5], + ["C7D2",0x30D6], + ["C7D3",0x30D7], + ["C7D4",0x30D8], + ["C7D5",0x30D9], + ["C7D6",0x30DA], + ["C7D7",0x30DB], + ["C7D8",0x30DC], + ["C7D9",0x30DD], + ["C7DA",0x30DE], + ["C7DB",0x30DF], + ["C7DC",0x30E0], + ["C7DD",0x30E1], + ["C7DE",0x30E2], + ["C7DF",0x30E3], + ["C7E0",0x30E4], + ["C7E1",0x30E5], + ["C7E2",0x30E6], + ["C7E3",0x30E7], + ["C7E4",0x30E8], + ["C7E5",0x30E9], + ["C7E6",0x30EA], + ["C7E7",0x30EB], + ["C7E8",0x30EC], + ["C7E9",0x30ED], + ["C7EA",0x30EE], + ["C7EB",0x30EF], + ["C7EC",0x30F0], + ["C7ED",0x30F1], + ["C7EE",0x30F2], + ["C7EF",0x30F3], + ["C7F0",0x30F4], + ["C7F1",0x30F5], + ["C7F2",0x30F6], + ["C7F3",0x0410], + ["C7F4",0x0411], + ["C7F5",0x0412], + ["C7F6",0x0413], + ["C7F7",0x0414], + ["C7F8",0x0415], + ["C7F9",0x0401], + ["C7FA",0x0416], + ["C7FB",0x0417], + ["C7FC",0x0418], + ["C7FD",0x0419], + ["C7FE",0x041A], + ["C840",0x041B], + ["C841",0x041C], + ["C842",0x041D], + ["C843",0x041E], + ["C844",0x041F], + ["C845",0x0420], + ["C846",0x0421], + ["C847",0x0422], + ["C848",0x0423], + ["C849",0x0424], + ["C84A",0x0425], + ["C84B",0x0426], + ["C84C",0x0427], + ["C84D",0x0428], + ["C84E",0x0429], + ["C84F",0x042A], + ["C850",0x042B], + ["C851",0x042C], + ["C852",0x042D], + ["C853",0x042E], + ["C854",0x042F], + ["C855",0x0430], + ["C856",0x0431], + ["C857",0x0432], + ["C858",0x0433], + ["C859",0x0434], + ["C85A",0x0435], + ["C85B",0x0451], + ["C85C",0x0436], + ["C85D",0x0437], + ["C85E",0x0438], + ["C85F",0x0439], + ["C860",0x043A], + ["C861",0x043B], + ["C862",0x043C], + ["C863",0x043D], + ["C864",0x043E], + ["C865",0x043F], + ["C866",0x0440], + ["C867",0x0441], + ["C868",0x0442], + ["C869",0x0443], + ["C86A",0x0444], + ["C86B",0x0445], + ["C86C",0x0446], + ["C86D",0x0447], + ["C86E",0x0448], + ["C86F",0x0449], + ["C870",0x044A], + ["C871",0x044B], + ["C872",0x044C], + ["C873",0x044D], + ["C874",0x044E], + ["C875",0x044F], + ["C876",0x21E7], + ["C877",0x21B8], + ["C878",0x21B9], + ["C879",0x31CF], + ["C87A",0xF7E6], + ["C87B",0x4E5A], + ["C87C",0xF7E8], + ["C87D",0x5202], + ["C87E",0x4491], + ["C8A1",0x9FB0], + ["C8A2",0x5188], + ["C8A3",0x9FB1], + ["C8A4",0xF7EE], + ["C8A5",0xF7EF], + ["C8A6",0xF7F0], + ["C8A7",0xF7F1], + ["C8A8",0xF7F2], + ["C8A9",0xF7F3], + ["C8AA",0xF7F4], + ["C8AB",0xF7F5], + ["C8AC",0xF7F6], + ["C8AD",0xF7F7], + ["C8AE",0xF7F8], + ["C8AF",0xF7F9], + ["C8B0",0xF7FA], + ["C8B1",0x309B], + ["C8B2",0x309C], + ["C8B3",0x3094], + ["C8B4",0x30F7], + ["C8B5",0x30F8], + ["C8B6",0x30F9], + ["C8B7",0x30FA], + ["C8B8",0x30FB], + ["C8B9",0xFF61], + ["C8BA",0xFF62], + ["C8BB",0xFF63], + ["C8BC",0xFF64], + ["C8BD",0xFF65], + ["C8BE",0xFF66], + ["C8BF",0xFF67], + ["C8C0",0xFF68], + ["C8C1",0xFF69], + ["C8C2",0xFF6A], + ["C8C3",0xFF6B], + ["C8C4",0xFF6C], + ["C8C5",0xFF6D], + ["C8C6",0xFF6E], + ["C8C7",0xFF6F], + ["C8C8",0xFF70], + ["C8C9",0xFF71], + ["C8CA",0xFF72], + ["C8CB",0xFF73], + ["C8CC",0xFF74], + ["C8CD",0xFFE2], + ["C8CE",0xFFE4], + ["C8CF",0xFF07], + ["C8D0",0xFF02], + ["C8D1",0x3231], + ["C8D2",0x2116], + ["C8D3",0x2121], + ["C8D4",0xFF75], + ["C8D5",0xFF76], + ["C8D6",0xFF77], + ["C8D7",0xFF78], + ["C8D8",0xFF79], + ["C8D9",0xFF7A], + ["C8DA",0xFF7B], + ["C8DB",0xFF7C], + ["C8DC",0xFF7D], + ["C8DD",0xFF7E], + ["C8DE",0xFF7F], + ["C8DF",0xFF80], + ["C8E0",0xFF81], + ["C8E1",0xFF82], + ["C8E2",0xFF83], + ["C8E3",0xFF84], + ["C8E4",0xFF85], + ["C8E5",0xFF86], + ["C8E6",0xFF87], + ["C8E7",0xFF88], + ["C8E8",0xFF89], + ["C8E9",0xFF8A], + ["C8EA",0xFF8B], + ["C8EB",0xFF8C], + ["C8EC",0xFF8D], + ["C8ED",0xFF8E], + ["C8EE",0xFF8F], + ["C8EF",0xFF90], + ["C8F0",0xFF91], + ["C8F1",0xFF92], + ["C8F2",0xFF93], + ["C8F3",0xFF94], + ["C8F4",0xFF95], + ["C8F5",0xFF96], + ["C8F6",0xFF97], + ["C8F7",0xFF98], + ["C8F8",0xFF99], + ["C8F9",0xFF9A], + ["C8FA",0xFF9B], + ["C8FB",0xFF9C], + ["C8FC",0xFF9D], + ["C8FD",0xFF9E], + ["C8FE",0xFF9F], + ["C940",0x4E42], + ["C941",0x4E5C], + ["C942",0x51F5], + ["C943",0x531A], + ["C944",0x5382], + ["C945",0x4E07], + ["C946",0x4E0C], + ["C947",0x4E47], + ["C948",0x4E8D], + ["C949",0x56D7], + ["C94A",0xFA0C], + ["C94B",0x5C6E], + ["C94C",0x5F73], + ["C94D",0x4E0F], + ["C94E",0x5187], + ["C94F",0x4E0E], + ["C950",0x4E2E], + ["C951",0x4E93], + ["C952",0x4EC2], + ["C953",0x4EC9], + ["C954",0x4EC8], + ["C955",0x5198], + ["C956",0x52FC], + ["C957",0x536C], + ["C958",0x53B9], + ["C959",0x5720], + ["C95A",0x5903], + ["C95B",0x592C], + ["C95C",0x5C10], + ["C95D",0x5DFF], + ["C95E",0x65E1], + ["C95F",0x6BB3], + ["C960",0x6BCC], + ["C961",0x6C14], + ["C962",0x723F], + ["C963",0x4E31], + ["C964",0x4E3C], + ["C965",0x4EE8], + ["C966",0x4EDC], + ["C967",0x4EE9], + ["C968",0x4EE1], + ["C969",0x4EDD], + ["C96A",0x4EDA], + ["C96B",0x520C], + ["C96C",0x531C], + ["C96D",0x534C], + ["C96E",0x5722], + ["C96F",0x5723], + ["C970",0x5917], + ["C971",0x592F], + ["C972",0x5B81], + ["C973",0x5B84], + ["C974",0x5C12], + ["C975",0x5C3B], + ["C976",0x5C74], + ["C977",0x5C73], + ["C978",0x5E04], + ["C979",0x5E80], + ["C97A",0x5E82], + ["C97B",0x5FC9], + ["C97C",0x6209], + ["C97D",0x6250], + ["C97E",0x6C15], + ["C9A1",0x6C36], + ["C9A2",0x6C43], + ["C9A3",0x6C3F], + ["C9A4",0x6C3B], + ["C9A5",0x72AE], + ["C9A6",0x72B0], + ["C9A7",0x738A], + ["C9A8",0x79B8], + ["C9A9",0x808A], + ["C9AA",0x961E], + ["C9AB",0x4F0E], + ["C9AC",0x4F18], + ["C9AD",0x4F2C], + ["C9AE",0x4EF5], + ["C9AF",0x4F14], + ["C9B0",0x4EF1], + ["C9B1",0x4F00], + ["C9B2",0x4EF7], + ["C9B3",0x4F08], + ["C9B4",0x4F1D], + ["C9B5",0x4F02], + ["C9B6",0x4F05], + ["C9B7",0x4F22], + ["C9B8",0x4F13], + ["C9B9",0x4F04], + ["C9BA",0x4EF4], + ["C9BB",0x4F12], + ["C9BC",0x51B1], + ["C9BD",0x5213], + ["C9BE",0x5209], + ["C9BF",0x5210], + ["C9C0",0x52A6], + ["C9C1",0x5322], + ["C9C2",0x531F], + ["C9C3",0x534D], + ["C9C4",0x538A], + ["C9C5",0x5407], + ["C9C6",0x56E1], + ["C9C7",0x56DF], + ["C9C8",0x572E], + ["C9C9",0x572A], + ["C9CA",0x5734], + ["C9CB",0x593C], + ["C9CC",0x5980], + ["C9CD",0x597C], + ["C9CE",0x5985], + ["C9CF",0x597B], + ["C9D0",0x597E], + ["C9D1",0x5977], + ["C9D2",0x597F], + ["C9D3",0x5B56], + ["C9D4",0x5C15], + ["C9D5",0x5C25], + ["C9D6",0x5C7C], + ["C9D7",0x5C7A], + ["C9D8",0x5C7B], + ["C9D9",0x5C7E], + ["C9DA",0x5DDF], + ["C9DB",0x5E75], + ["C9DC",0x5E84], + ["C9DD",0x5F02], + ["C9DE",0x5F1A], + ["C9DF",0x5F74], + ["C9E0",0x5FD5], + ["C9E1",0x5FD4], + ["C9E2",0x5FCF], + ["C9E3",0x625C], + ["C9E4",0x625E], + ["C9E5",0x6264], + ["C9E6",0x6261], + ["C9E7",0x6266], + ["C9E8",0x6262], + ["C9E9",0x6259], + ["C9EA",0x6260], + ["C9EB",0x625A], + ["C9EC",0x6265], + ["C9ED",0x65EF], + ["C9EE",0x65EE], + ["C9EF",0x673E], + ["C9F0",0x6739], + ["C9F1",0x6738], + ["C9F2",0x673B], + ["C9F3",0x673A], + ["C9F4",0x673F], + ["C9F5",0x673C], + ["C9F6",0x6733], + ["C9F7",0x6C18], + ["C9F8",0x6C46], + ["C9F9",0x6C52], + ["C9FA",0x6C5C], + ["C9FB",0x6C4F], + ["C9FC",0x6C4A], + ["C9FD",0x6C54], + ["C9FE",0x6C4B], + ["CA40",0x6C4C], + ["CA41",0x7071], + ["CA42",0x725E], + ["CA43",0x72B4], + ["CA44",0x72B5], + ["CA45",0x738E], + ["CA46",0x752A], + ["CA47",0x767F], + ["CA48",0x7A75], + ["CA49",0x7F51], + ["CA4A",0x8278], + ["CA4B",0x827C], + ["CA4C",0x8280], + ["CA4D",0x827D], + ["CA4E",0x827F], + ["CA4F",0x864D], + ["CA50",0x897E], + ["CA51",0x9099], + ["CA52",0x9097], + ["CA53",0x9098], + ["CA54",0x909B], + ["CA55",0x9094], + ["CA56",0x9622], + ["CA57",0x9624], + ["CA58",0x9620], + ["CA59",0x9623], + ["CA5A",0x4F56], + ["CA5B",0x4F3B], + ["CA5C",0x4F62], + ["CA5D",0x4F49], + ["CA5E",0x4F53], + ["CA5F",0x4F64], + ["CA60",0x4F3E], + ["CA61",0x4F67], + ["CA62",0x4F52], + ["CA63",0x4F5F], + ["CA64",0x4F41], + ["CA65",0x4F58], + ["CA66",0x4F2D], + ["CA67",0x4F33], + ["CA68",0x4F3F], + ["CA69",0x4F61], + ["CA6A",0x518F], + ["CA6B",0x51B9], + ["CA6C",0x521C], + ["CA6D",0x521E], + ["CA6E",0x5221], + ["CA6F",0x52AD], + ["CA70",0x52AE], + ["CA71",0x5309], + ["CA72",0x5363], + ["CA73",0x5372], + ["CA74",0x538E], + ["CA75",0x538F], + ["CA76",0x5430], + ["CA77",0x5437], + ["CA78",0x542A], + ["CA79",0x5454], + ["CA7A",0x5445], + ["CA7B",0x5419], + ["CA7C",0x541C], + ["CA7D",0x5425], + ["CA7E",0x5418], + ["CAA1",0x543D], + ["CAA2",0x544F], + ["CAA3",0x5441], + ["CAA4",0x5428], + ["CAA5",0x5424], + ["CAA6",0x5447], + ["CAA7",0x56EE], + ["CAA8",0x56E7], + ["CAA9",0x56E5], + ["CAAA",0x5741], + ["CAAB",0x5745], + ["CAAC",0x574C], + ["CAAD",0x5749], + ["CAAE",0x574B], + ["CAAF",0x5752], + ["CAB0",0x5906], + ["CAB1",0x5940], + ["CAB2",0x59A6], + ["CAB3",0x5998], + ["CAB4",0x59A0], + ["CAB5",0x5997], + ["CAB6",0x598E], + ["CAB7",0x59A2], + ["CAB8",0x5990], + ["CAB9",0x598F], + ["CABA",0x59A7], + ["CABB",0x59A1], + ["CABC",0x5B8E], + ["CABD",0x5B92], + ["CABE",0x5C28], + ["CABF",0x5C2A], + ["CAC0",0x5C8D], + ["CAC1",0x5C8F], + ["CAC2",0x5C88], + ["CAC3",0x5C8B], + ["CAC4",0x5C89], + ["CAC5",0x5C92], + ["CAC6",0x5C8A], + ["CAC7",0x5C86], + ["CAC8",0x5C93], + ["CAC9",0x5C95], + ["CACA",0x5DE0], + ["CACB",0x5E0A], + ["CACC",0x5E0E], + ["CACD",0x5E8B], + ["CACE",0x5E89], + ["CACF",0x5E8C], + ["CAD0",0x5E88], + ["CAD1",0x5E8D], + ["CAD2",0x5F05], + ["CAD3",0x5F1D], + ["CAD4",0x5F78], + ["CAD5",0x5F76], + ["CAD6",0x5FD2], + ["CAD7",0x5FD1], + ["CAD8",0x5FD0], + ["CAD9",0x5FED], + ["CADA",0x5FE8], + ["CADB",0x5FEE], + ["CADC",0x5FF3], + ["CADD",0x5FE1], + ["CADE",0x5FE4], + ["CADF",0x5FE3], + ["CAE0",0x5FFA], + ["CAE1",0x5FEF], + ["CAE2",0x5FF7], + ["CAE3",0x5FFB], + ["CAE4",0x6000], + ["CAE5",0x5FF4], + ["CAE6",0x623A], + ["CAE7",0x6283], + ["CAE8",0x628C], + ["CAE9",0x628E], + ["CAEA",0x628F], + ["CAEB",0x6294], + ["CAEC",0x6287], + ["CAED",0x6271], + ["CAEE",0x627B], + ["CAEF",0x627A], + ["CAF0",0x6270], + ["CAF1",0x6281], + ["CAF2",0x6288], + ["CAF3",0x6277], + ["CAF4",0x627D], + ["CAF5",0x6272], + ["CAF6",0x6274], + ["CAF7",0x6537], + ["CAF8",0x65F0], + ["CAF9",0x65F4], + ["CAFA",0x65F3], + ["CAFB",0x65F2], + ["CAFC",0x65F5], + ["CAFD",0x6745], + ["CAFE",0x6747], + ["CB40",0x6759], + ["CB41",0x6755], + ["CB42",0x674C], + ["CB43",0x6748], + ["CB44",0x675D], + ["CB45",0x674D], + ["CB46",0x675A], + ["CB47",0x674B], + ["CB48",0x6BD0], + ["CB49",0x6C19], + ["CB4A",0x6C1A], + ["CB4B",0x6C78], + ["CB4C",0x6C67], + ["CB4D",0x6C6B], + ["CB4E",0x6C84], + ["CB4F",0x6C8B], + ["CB50",0x6C8F], + ["CB51",0x6C71], + ["CB52",0x6C6F], + ["CB53",0x6C69], + ["CB54",0x6C9A], + ["CB55",0x6C6D], + ["CB56",0x6C87], + ["CB57",0x6C95], + ["CB58",0x6C9C], + ["CB59",0x6C66], + ["CB5A",0x6C73], + ["CB5B",0x6C65], + ["CB5C",0x6C7B], + ["CB5D",0x6C8E], + ["CB5E",0x7074], + ["CB5F",0x707A], + ["CB60",0x7263], + ["CB61",0x72BF], + ["CB62",0x72BD], + ["CB63",0x72C3], + ["CB64",0x72C6], + ["CB65",0x72C1], + ["CB66",0x72BA], + ["CB67",0x72C5], + ["CB68",0x7395], + ["CB69",0x7397], + ["CB6A",0x7393], + ["CB6B",0x7394], + ["CB6C",0x7392], + ["CB6D",0x753A], + ["CB6E",0x7539], + ["CB6F",0x7594], + ["CB70",0x7595], + ["CB71",0x7681], + ["CB72",0x793D], + ["CB73",0x8034], + ["CB74",0x8095], + ["CB75",0x8099], + ["CB76",0x8090], + ["CB77",0x8092], + ["CB78",0x809C], + ["CB79",0x8290], + ["CB7A",0x828F], + ["CB7B",0x8285], + ["CB7C",0x828E], + ["CB7D",0x8291], + ["CB7E",0x8293], + ["CBA1",0x828A], + ["CBA2",0x8283], + ["CBA3",0x8284], + ["CBA4",0x8C78], + ["CBA5",0x8FC9], + ["CBA6",0x8FBF], + ["CBA7",0x909F], + ["CBA8",0x90A1], + ["CBA9",0x90A5], + ["CBAA",0x909E], + ["CBAB",0x90A7], + ["CBAC",0x90A0], + ["CBAD",0x9630], + ["CBAE",0x9628], + ["CBAF",0x962F], + ["CBB0",0x962D], + ["CBB1",0x4E33], + ["CBB2",0x4F98], + ["CBB3",0x4F7C], + ["CBB4",0x4F85], + ["CBB5",0x4F7D], + ["CBB6",0x4F80], + ["CBB7",0x4F87], + ["CBB8",0x4F76], + ["CBB9",0x4F74], + ["CBBA",0x4F89], + ["CBBB",0x4F84], + ["CBBC",0x4F77], + ["CBBD",0x4F4C], + ["CBBE",0x4F97], + ["CBBF",0x4F6A], + ["CBC0",0x4F9A], + ["CBC1",0x4F79], + ["CBC2",0x4F81], + ["CBC3",0x4F78], + ["CBC4",0x4F90], + ["CBC5",0x4F9C], + ["CBC6",0x4F94], + ["CBC7",0x4F9E], + ["CBC8",0x4F92], + ["CBC9",0x4F82], + ["CBCA",0x4F95], + ["CBCB",0x4F6B], + ["CBCC",0x4F6E], + ["CBCD",0x519E], + ["CBCE",0x51BC], + ["CBCF",0x51BE], + ["CBD0",0x5235], + ["CBD1",0x5232], + ["CBD2",0x5233], + ["CBD3",0x5246], + ["CBD4",0x5231], + ["CBD5",0x52BC], + ["CBD6",0x530A], + ["CBD7",0x530B], + ["CBD8",0x533C], + ["CBD9",0x5392], + ["CBDA",0x5394], + ["CBDB",0x5487], + ["CBDC",0x547F], + ["CBDD",0x5481], + ["CBDE",0x5491], + ["CBDF",0x5482], + ["CBE0",0x5488], + ["CBE1",0x546B], + ["CBE2",0x547A], + ["CBE3",0x547E], + ["CBE4",0x5465], + ["CBE5",0x546C], + ["CBE6",0x5474], + ["CBE7",0x5466], + ["CBE8",0x548D], + ["CBE9",0x546F], + ["CBEA",0x5461], + ["CBEB",0x5460], + ["CBEC",0x5498], + ["CBED",0x5463], + ["CBEE",0x5467], + ["CBEF",0x5464], + ["CBF0",0x56F7], + ["CBF1",0x56F9], + ["CBF2",0x576F], + ["CBF3",0x5772], + ["CBF4",0x576D], + ["CBF5",0x576B], + ["CBF6",0x5771], + ["CBF7",0x5770], + ["CBF8",0x5776], + ["CBF9",0x5780], + ["CBFA",0x5775], + ["CBFB",0x577B], + ["CBFC",0x5773], + ["CBFD",0x5774], + ["CBFE",0x5762], + ["CC40",0x5768], + ["CC41",0x577D], + ["CC42",0x590C], + ["CC43",0x5945], + ["CC44",0x59B5], + ["CC45",0x59BA], + ["CC46",0x59CF], + ["CC47",0x59CE], + ["CC48",0x59B2], + ["CC49",0x59CC], + ["CC4A",0x59C1], + ["CC4B",0x59B6], + ["CC4C",0x59BC], + ["CC4D",0x59C3], + ["CC4E",0x59D6], + ["CC4F",0x59B1], + ["CC50",0x59BD], + ["CC51",0x59C0], + ["CC52",0x59C8], + ["CC53",0x59B4], + ["CC54",0x59C7], + ["CC55",0x5B62], + ["CC56",0x5B65], + ["CC57",0x5B93], + ["CC58",0x5B95], + ["CC59",0x5C44], + ["CC5A",0x5C47], + ["CC5B",0x5CAE], + ["CC5C",0x5CA4], + ["CC5D",0x5CA0], + ["CC5E",0x5CB5], + ["CC5F",0x5CAF], + ["CC60",0x5CA8], + ["CC61",0x5CAC], + ["CC62",0x5C9F], + ["CC63",0x5CA3], + ["CC64",0x5CAD], + ["CC65",0x5CA2], + ["CC66",0x5CAA], + ["CC67",0x5CA7], + ["CC68",0x5C9D], + ["CC69",0x5CA5], + ["CC6A",0x5CB6], + ["CC6B",0x5CB0], + ["CC6C",0x5CA6], + ["CC6D",0x5E17], + ["CC6E",0x5E14], + ["CC6F",0x5E19], + ["CC70",0x5F28], + ["CC71",0x5F22], + ["CC72",0x5F23], + ["CC73",0x5F24], + ["CC74",0x5F54], + ["CC75",0x5F82], + ["CC76",0x5F7E], + ["CC77",0x5F7D], + ["CC78",0x5FDE], + ["CC79",0x5FE5], + ["CC7A",0x602D], + ["CC7B",0x6026], + ["CC7C",0x6019], + ["CC7D",0x6032], + ["CC7E",0x600B], + ["CCA1",0x6034], + ["CCA2",0x600A], + ["CCA3",0x6017], + ["CCA4",0x6033], + ["CCA5",0x601A], + ["CCA6",0x601E], + ["CCA7",0x602C], + ["CCA8",0x6022], + ["CCA9",0x600D], + ["CCAA",0x6010], + ["CCAB",0x602E], + ["CCAC",0x6013], + ["CCAD",0x6011], + ["CCAE",0x600C], + ["CCAF",0x6009], + ["CCB0",0x601C], + ["CCB1",0x6214], + ["CCB2",0x623D], + ["CCB3",0x62AD], + ["CCB4",0x62B4], + ["CCB5",0x62D1], + ["CCB6",0x62BE], + ["CCB7",0x62AA], + ["CCB8",0x62B6], + ["CCB9",0x62CA], + ["CCBA",0x62AE], + ["CCBB",0x62B3], + ["CCBC",0x62AF], + ["CCBD",0x62BB], + ["CCBE",0x62A9], + ["CCBF",0x62B0], + ["CCC0",0x62B8], + ["CCC1",0x653D], + ["CCC2",0x65A8], + ["CCC3",0x65BB], + ["CCC4",0x6609], + ["CCC5",0x65FC], + ["CCC6",0x6604], + ["CCC7",0x6612], + ["CCC8",0x6608], + ["CCC9",0x65FB], + ["CCCA",0x6603], + ["CCCB",0x660B], + ["CCCC",0x660D], + ["CCCD",0x6605], + ["CCCE",0x65FD], + ["CCCF",0x6611], + ["CCD0",0x6610], + ["CCD1",0x66F6], + ["CCD2",0x670A], + ["CCD3",0x6785], + ["CCD4",0x676C], + ["CCD5",0x678E], + ["CCD6",0x6792], + ["CCD7",0x6776], + ["CCD8",0x677B], + ["CCD9",0x6798], + ["CCDA",0x6786], + ["CCDB",0x6784], + ["CCDC",0x6774], + ["CCDD",0x678D], + ["CCDE",0x678C], + ["CCDF",0x677A], + ["CCE0",0x679F], + ["CCE1",0x6791], + ["CCE2",0x6799], + ["CCE3",0x6783], + ["CCE4",0x677D], + ["CCE5",0x6781], + ["CCE6",0x6778], + ["CCE7",0x6779], + ["CCE8",0x6794], + ["CCE9",0x6B25], + ["CCEA",0x6B80], + ["CCEB",0x6B7E], + ["CCEC",0x6BDE], + ["CCED",0x6C1D], + ["CCEE",0x6C93], + ["CCEF",0x6CEC], + ["CCF0",0x6CEB], + ["CCF1",0x6CEE], + ["CCF2",0x6CD9], + ["CCF3",0x6CB6], + ["CCF4",0x6CD4], + ["CCF5",0x6CAD], + ["CCF6",0x6CE7], + ["CCF7",0x6CB7], + ["CCF8",0x6CD0], + ["CCF9",0x6CC2], + ["CCFA",0x6CBA], + ["CCFB",0x6CC3], + ["CCFC",0x6CC6], + ["CCFD",0x6CED], + ["CCFE",0x6CF2], + ["CD40",0x6CD2], + ["CD41",0x6CDD], + ["CD42",0x6CB4], + ["CD43",0x6C8A], + ["CD44",0x6C9D], + ["CD45",0x6C80], + ["CD46",0x6CDE], + ["CD47",0x6CC0], + ["CD48",0x6D30], + ["CD49",0x6CCD], + ["CD4A",0x6CC7], + ["CD4B",0x6CB0], + ["CD4C",0x6CF9], + ["CD4D",0x6CCF], + ["CD4E",0x6CE9], + ["CD4F",0x6CD1], + ["CD50",0x7094], + ["CD51",0x7098], + ["CD52",0x7085], + ["CD53",0x7093], + ["CD54",0x7086], + ["CD55",0x7084], + ["CD56",0x7091], + ["CD57",0x7096], + ["CD58",0x7082], + ["CD59",0x709A], + ["CD5A",0x7083], + ["CD5B",0x726A], + ["CD5C",0x72D6], + ["CD5D",0x72CB], + ["CD5E",0x72D8], + ["CD5F",0x72C9], + ["CD60",0x72DC], + ["CD61",0x72D2], + ["CD62",0x72D4], + ["CD63",0x72DA], + ["CD64",0x72CC], + ["CD65",0x72D1], + ["CD66",0x73A4], + ["CD67",0x73A1], + ["CD68",0x73AD], + ["CD69",0x73A6], + ["CD6A",0x73A2], + ["CD6B",0x73A0], + ["CD6C",0x73AC], + ["CD6D",0x739D], + ["CD6E",0x74DD], + ["CD6F",0x74E8], + ["CD70",0x753F], + ["CD71",0x7540], + ["CD72",0x753E], + ["CD73",0x758C], + ["CD74",0x7598], + ["CD75",0x76AF], + ["CD76",0x76F3], + ["CD77",0x76F1], + ["CD78",0x76F0], + ["CD79",0x76F5], + ["CD7A",0x77F8], + ["CD7B",0x77FC], + ["CD7C",0x77F9], + ["CD7D",0x77FB], + ["CD7E",0x77FA], + ["CDA1",0x77F7], + ["CDA2",0x7942], + ["CDA3",0x793F], + ["CDA4",0x79C5], + ["CDA5",0x7A78], + ["CDA6",0x7A7B], + ["CDA7",0x7AFB], + ["CDA8",0x7C75], + ["CDA9",0x7CFD], + ["CDAA",0x8035], + ["CDAB",0x808F], + ["CDAC",0x80AE], + ["CDAD",0x80A3], + ["CDAE",0x80B8], + ["CDAF",0x80B5], + ["CDB0",0x80AD], + ["CDB1",0x8220], + ["CDB2",0x82A0], + ["CDB3",0x82C0], + ["CDB4",0x82AB], + ["CDB5",0x829A], + ["CDB6",0x8298], + ["CDB7",0x829B], + ["CDB8",0x82B5], + ["CDB9",0x82A7], + ["CDBA",0x82AE], + ["CDBB",0x82BC], + ["CDBC",0x829E], + ["CDBD",0x82BA], + ["CDBE",0x82B4], + ["CDBF",0x82A8], + ["CDC0",0x82A1], + ["CDC1",0x82A9], + ["CDC2",0x82C2], + ["CDC3",0x82A4], + ["CDC4",0x82C3], + ["CDC5",0x82B6], + ["CDC6",0x82A2], + ["CDC7",0x8670], + ["CDC8",0x866F], + ["CDC9",0x866D], + ["CDCA",0x866E], + ["CDCB",0x8C56], + ["CDCC",0x8FD2], + ["CDCD",0x8FCB], + ["CDCE",0x8FD3], + ["CDCF",0x8FCD], + ["CDD0",0x8FD6], + ["CDD1",0x8FD5], + ["CDD2",0x8FD7], + ["CDD3",0x90B2], + ["CDD4",0x90B4], + ["CDD5",0x90AF], + ["CDD6",0x90B3], + ["CDD7",0x90B0], + ["CDD8",0x9639], + ["CDD9",0x963D], + ["CDDA",0x963C], + ["CDDB",0x963A], + ["CDDC",0x9643], + ["CDDD",0x4FCD], + ["CDDE",0x4FC5], + ["CDDF",0x4FD3], + ["CDE0",0x4FB2], + ["CDE1",0x4FC9], + ["CDE2",0x4FCB], + ["CDE3",0x4FC1], + ["CDE4",0x4FD4], + ["CDE5",0x4FDC], + ["CDE6",0x4FD9], + ["CDE7",0x4FBB], + ["CDE8",0x4FB3], + ["CDE9",0x4FDB], + ["CDEA",0x4FC7], + ["CDEB",0x4FD6], + ["CDEC",0x4FBA], + ["CDED",0x4FC0], + ["CDEE",0x4FB9], + ["CDEF",0x4FEC], + ["CDF0",0x5244], + ["CDF1",0x5249], + ["CDF2",0x52C0], + ["CDF3",0x52C2], + ["CDF4",0x533D], + ["CDF5",0x537C], + ["CDF6",0x5397], + ["CDF7",0x5396], + ["CDF8",0x5399], + ["CDF9",0x5398], + ["CDFA",0x54BA], + ["CDFB",0x54A1], + ["CDFC",0x54AD], + ["CDFD",0x54A5], + ["CDFE",0x54CF], + ["CE40",0x54C3], + ["CE41",0x830D], + ["CE42",0x54B7], + ["CE43",0x54AE], + ["CE44",0x54D6], + ["CE45",0x54B6], + ["CE46",0x54C5], + ["CE47",0x54C6], + ["CE48",0x54A0], + ["CE49",0x5470], + ["CE4A",0x54BC], + ["CE4B",0x54A2], + ["CE4C",0x54BE], + ["CE4D",0x5472], + ["CE4E",0x54DE], + ["CE4F",0x54B0], + ["CE50",0x57B5], + ["CE51",0x579E], + ["CE52",0x579F], + ["CE53",0x57A4], + ["CE54",0x578C], + ["CE55",0x5797], + ["CE56",0x579D], + ["CE57",0x579B], + ["CE58",0x5794], + ["CE59",0x5798], + ["CE5A",0x578F], + ["CE5B",0x5799], + ["CE5C",0x57A5], + ["CE5D",0x579A], + ["CE5E",0x5795], + ["CE5F",0x58F4], + ["CE60",0x590D], + ["CE61",0x5953], + ["CE62",0x59E1], + ["CE63",0x59DE], + ["CE64",0x59EE], + ["CE65",0x5A00], + ["CE66",0x59F1], + ["CE67",0x59DD], + ["CE68",0x59FA], + ["CE69",0x59FD], + ["CE6A",0x59FC], + ["CE6B",0x59F6], + ["CE6C",0x59E4], + ["CE6D",0x59F2], + ["CE6E",0x59F7], + ["CE6F",0x59DB], + ["CE70",0x59E9], + ["CE71",0x59F3], + ["CE72",0x59F5], + ["CE73",0x59E0], + ["CE74",0x59FE], + ["CE75",0x59F4], + ["CE76",0x59ED], + ["CE77",0x5BA8], + ["CE78",0x5C4C], + ["CE79",0x5CD0], + ["CE7A",0x5CD8], + ["CE7B",0x5CCC], + ["CE7C",0x5CD7], + ["CE7D",0x5CCB], + ["CE7E",0x5CDB], + ["CEA1",0x5CDE], + ["CEA2",0x5CDA], + ["CEA3",0x5CC9], + ["CEA4",0x5CC7], + ["CEA5",0x5CCA], + ["CEA6",0x5CD6], + ["CEA7",0x5CD3], + ["CEA8",0x5CD4], + ["CEA9",0x5CCF], + ["CEAA",0x5CC8], + ["CEAB",0x5CC6], + ["CEAC",0x5CCE], + ["CEAD",0x5CDF], + ["CEAE",0x5CF8], + ["CEAF",0x5DF9], + ["CEB0",0x5E21], + ["CEB1",0x5E22], + ["CEB2",0x5E23], + ["CEB3",0x5E20], + ["CEB4",0x5E24], + ["CEB5",0x5EB0], + ["CEB6",0x5EA4], + ["CEB7",0x5EA2], + ["CEB8",0x5E9B], + ["CEB9",0x5EA3], + ["CEBA",0x5EA5], + ["CEBB",0x5F07], + ["CEBC",0x5F2E], + ["CEBD",0x5F56], + ["CEBE",0x5F86], + ["CEBF",0x6037], + ["CEC0",0x6039], + ["CEC1",0x6054], + ["CEC2",0x6072], + ["CEC3",0x605E], + ["CEC4",0x6045], + ["CEC5",0x6053], + ["CEC6",0x6047], + ["CEC7",0x6049], + ["CEC8",0x605B], + ["CEC9",0x604C], + ["CECA",0x6040], + ["CECB",0x6042], + ["CECC",0x605F], + ["CECD",0x6024], + ["CECE",0x6044], + ["CECF",0x6058], + ["CED0",0x6066], + ["CED1",0x606E], + ["CED2",0x6242], + ["CED3",0x6243], + ["CED4",0x62CF], + ["CED5",0x630D], + ["CED6",0x630B], + ["CED7",0x62F5], + ["CED8",0x630E], + ["CED9",0x6303], + ["CEDA",0x62EB], + ["CEDB",0x62F9], + ["CEDC",0x630F], + ["CEDD",0x630C], + ["CEDE",0x62F8], + ["CEDF",0x62F6], + ["CEE0",0x6300], + ["CEE1",0x6313], + ["CEE2",0x6314], + ["CEE3",0x62FA], + ["CEE4",0x6315], + ["CEE5",0x62FB], + ["CEE6",0x62F0], + ["CEE7",0x6541], + ["CEE8",0x6543], + ["CEE9",0x65AA], + ["CEEA",0x65BF], + ["CEEB",0x6636], + ["CEEC",0x6621], + ["CEED",0x6632], + ["CEEE",0x6635], + ["CEEF",0x661C], + ["CEF0",0x6626], + ["CEF1",0x6622], + ["CEF2",0x6633], + ["CEF3",0x662B], + ["CEF4",0x663A], + ["CEF5",0x661D], + ["CEF6",0x6634], + ["CEF7",0x6639], + ["CEF8",0x662E], + ["CEF9",0x670F], + ["CEFA",0x6710], + ["CEFB",0x67C1], + ["CEFC",0x67F2], + ["CEFD",0x67C8], + ["CEFE",0x67BA], + ["CF40",0x67DC], + ["CF41",0x67BB], + ["CF42",0x67F8], + ["CF43",0x67D8], + ["CF44",0x67C0], + ["CF45",0x67B7], + ["CF46",0x67C5], + ["CF47",0x67EB], + ["CF48",0x67E4], + ["CF49",0x67DF], + ["CF4A",0x67B5], + ["CF4B",0x67CD], + ["CF4C",0x67B3], + ["CF4D",0x67F7], + ["CF4E",0x67F6], + ["CF4F",0x67EE], + ["CF50",0x67E3], + ["CF51",0x67C2], + ["CF52",0x67B9], + ["CF53",0x67CE], + ["CF54",0x67E7], + ["CF55",0x67F0], + ["CF56",0x67B2], + ["CF57",0x67FC], + ["CF58",0x67C6], + ["CF59",0x67ED], + ["CF5A",0x67CC], + ["CF5B",0x67AE], + ["CF5C",0x67E6], + ["CF5D",0x67DB], + ["CF5E",0x67FA], + ["CF5F",0x67C9], + ["CF60",0x67CA], + ["CF61",0x67C3], + ["CF62",0x67EA], + ["CF63",0x67CB], + ["CF64",0x6B28], + ["CF65",0x6B82], + ["CF66",0x6B84], + ["CF67",0x6BB6], + ["CF68",0x6BD6], + ["CF69",0x6BD8], + ["CF6A",0x6BE0], + ["CF6B",0x6C20], + ["CF6C",0x6C21], + ["CF6D",0x6D28], + ["CF6E",0x6D34], + ["CF6F",0x6D2D], + ["CF70",0x6D1F], + ["CF71",0x6D3C], + ["CF72",0x6D3F], + ["CF73",0x6D12], + ["CF74",0x6D0A], + ["CF75",0x6CDA], + ["CF76",0x6D33], + ["CF77",0x6D04], + ["CF78",0x6D19], + ["CF79",0x6D3A], + ["CF7A",0x6D1A], + ["CF7B",0x6D11], + ["CF7C",0x6D00], + ["CF7D",0x6D1D], + ["CF7E",0x6D42], + ["CFA1",0x6D01], + ["CFA2",0x6D18], + ["CFA3",0x6D37], + ["CFA4",0x6D03], + ["CFA5",0x6D0F], + ["CFA6",0x6D40], + ["CFA7",0x6D07], + ["CFA8",0x6D20], + ["CFA9",0x6D2C], + ["CFAA",0x6D08], + ["CFAB",0x6D22], + ["CFAC",0x6D09], + ["CFAD",0x6D10], + ["CFAE",0x70B7], + ["CFAF",0x709F], + ["CFB0",0x70BE], + ["CFB1",0x70B1], + ["CFB2",0x70B0], + ["CFB3",0x70A1], + ["CFB4",0x70B4], + ["CFB5",0x70B5], + ["CFB6",0x70A9], + ["CFB7",0x7241], + ["CFB8",0x7249], + ["CFB9",0x724A], + ["CFBA",0x726C], + ["CFBB",0x7270], + ["CFBC",0x7273], + ["CFBD",0x726E], + ["CFBE",0x72CA], + ["CFBF",0x72E4], + ["CFC0",0x72E8], + ["CFC1",0x72EB], + ["CFC2",0x72DF], + ["CFC3",0x72EA], + ["CFC4",0x72E6], + ["CFC5",0x72E3], + ["CFC6",0x7385], + ["CFC7",0x73CC], + ["CFC8",0x73C2], + ["CFC9",0x73C8], + ["CFCA",0x73C5], + ["CFCB",0x73B9], + ["CFCC",0x73B6], + ["CFCD",0x73B5], + ["CFCE",0x73B4], + ["CFCF",0x73EB], + ["CFD0",0x73BF], + ["CFD1",0x73C7], + ["CFD2",0x73BE], + ["CFD3",0x73C3], + ["CFD4",0x73C6], + ["CFD5",0x73B8], + ["CFD6",0x73CB], + ["CFD7",0x74EC], + ["CFD8",0x74EE], + ["CFD9",0x752E], + ["CFDA",0x7547], + ["CFDB",0x7548], + ["CFDC",0x75A7], + ["CFDD",0x75AA], + ["CFDE",0x7679], + ["CFDF",0x76C4], + ["CFE0",0x7708], + ["CFE1",0x7703], + ["CFE2",0x7704], + ["CFE3",0x7705], + ["CFE4",0x770A], + ["CFE5",0x76F7], + ["CFE6",0x76FB], + ["CFE7",0x76FA], + ["CFE8",0x77E7], + ["CFE9",0x77E8], + ["CFEA",0x7806], + ["CFEB",0x7811], + ["CFEC",0x7812], + ["CFED",0x7805], + ["CFEE",0x7810], + ["CFEF",0x780F], + ["CFF0",0x780E], + ["CFF1",0x7809], + ["CFF2",0x7803], + ["CFF3",0x7813], + ["CFF4",0x794A], + ["CFF5",0x794C], + ["CFF6",0x794B], + ["CFF7",0x7945], + ["CFF8",0x7944], + ["CFF9",0x79D5], + ["CFFA",0x79CD], + ["CFFB",0x79CF], + ["CFFC",0x79D6], + ["CFFD",0x79CE], + ["CFFE",0x7A80], + ["D040",0x7A7E], + ["D041",0x7AD1], + ["D042",0x7B00], + ["D043",0x7B01], + ["D044",0x7C7A], + ["D045",0x7C78], + ["D046",0x7C79], + ["D047",0x7C7F], + ["D048",0x7C80], + ["D049",0x7C81], + ["D04A",0x7D03], + ["D04B",0x7D08], + ["D04C",0x7D01], + ["D04D",0x7F58], + ["D04E",0x7F91], + ["D04F",0x7F8D], + ["D050",0x7FBE], + ["D051",0x8007], + ["D052",0x800E], + ["D053",0x800F], + ["D054",0x8014], + ["D055",0x8037], + ["D056",0x80D8], + ["D057",0x80C7], + ["D058",0x80E0], + ["D059",0x80D1], + ["D05A",0x80C8], + ["D05B",0x80C2], + ["D05C",0x80D0], + ["D05D",0x80C5], + ["D05E",0x80E3], + ["D05F",0x80D9], + ["D060",0x80DC], + ["D061",0x80CA], + ["D062",0x80D5], + ["D063",0x80C9], + ["D064",0x80CF], + ["D065",0x80D7], + ["D066",0x80E6], + ["D067",0x80CD], + ["D068",0x81FF], + ["D069",0x8221], + ["D06A",0x8294], + ["D06B",0x82D9], + ["D06C",0x82FE], + ["D06D",0x82F9], + ["D06E",0x8307], + ["D06F",0x82E8], + ["D070",0x8300], + ["D071",0x82D5], + ["D072",0x833A], + ["D073",0x82EB], + ["D074",0x82D6], + ["D075",0x82F4], + ["D076",0x82EC], + ["D077",0x82E1], + ["D078",0x82F2], + ["D079",0x82F5], + ["D07A",0x830C], + ["D07B",0x82FB], + ["D07C",0x82F6], + ["D07D",0x82F0], + ["D07E",0x82EA], + ["D0A1",0x82E4], + ["D0A2",0x82E0], + ["D0A3",0x82FA], + ["D0A4",0x82F3], + ["D0A5",0x82ED], + ["D0A6",0x8677], + ["D0A7",0x8674], + ["D0A8",0x867C], + ["D0A9",0x8673], + ["D0AA",0x8841], + ["D0AB",0x884E], + ["D0AC",0x8867], + ["D0AD",0x886A], + ["D0AE",0x8869], + ["D0AF",0x89D3], + ["D0B0",0x8A04], + ["D0B1",0x8A07], + ["D0B2",0x8D72], + ["D0B3",0x8FE3], + ["D0B4",0x8FE1], + ["D0B5",0x8FEE], + ["D0B6",0x8FE0], + ["D0B7",0x90F1], + ["D0B8",0x90BD], + ["D0B9",0x90BF], + ["D0BA",0x90D5], + ["D0BB",0x90C5], + ["D0BC",0x90BE], + ["D0BD",0x90C7], + ["D0BE",0x90CB], + ["D0BF",0x90C8], + ["D0C0",0x91D4], + ["D0C1",0x91D3], + ["D0C2",0x9654], + ["D0C3",0x964F], + ["D0C4",0x9651], + ["D0C5",0x9653], + ["D0C6",0x964A], + ["D0C7",0x964E], + ["D0C8",0x501E], + ["D0C9",0x5005], + ["D0CA",0x5007], + ["D0CB",0x5013], + ["D0CC",0x5022], + ["D0CD",0x5030], + ["D0CE",0x501B], + ["D0CF",0x4FF5], + ["D0D0",0x4FF4], + ["D0D1",0x5033], + ["D0D2",0x5037], + ["D0D3",0x502C], + ["D0D4",0x4FF6], + ["D0D5",0x4FF7], + ["D0D6",0x5017], + ["D0D7",0x501C], + ["D0D8",0x5020], + ["D0D9",0x5027], + ["D0DA",0x5035], + ["D0DB",0x502F], + ["D0DC",0x5031], + ["D0DD",0x500E], + ["D0DE",0x515A], + ["D0DF",0x5194], + ["D0E0",0x5193], + ["D0E1",0x51CA], + ["D0E2",0x51C4], + ["D0E3",0x51C5], + ["D0E4",0x51C8], + ["D0E5",0x51CE], + ["D0E6",0x5261], + ["D0E7",0x525A], + ["D0E8",0x5252], + ["D0E9",0x525E], + ["D0EA",0x525F], + ["D0EB",0x5255], + ["D0EC",0x5262], + ["D0ED",0x52CD], + ["D0EE",0x530E], + ["D0EF",0x539E], + ["D0F0",0x5526], + ["D0F1",0x54E2], + ["D0F2",0x5517], + ["D0F3",0x5512], + ["D0F4",0x54E7], + ["D0F5",0x54F3], + ["D0F6",0x54E4], + ["D0F7",0x551A], + ["D0F8",0x54FF], + ["D0F9",0x5504], + ["D0FA",0x5508], + ["D0FB",0x54EB], + ["D0FC",0x5511], + ["D0FD",0x5505], + ["D0FE",0x54F1], + ["D140",0x550A], + ["D141",0x54FB], + ["D142",0x54F7], + ["D143",0x54F8], + ["D144",0x54E0], + ["D145",0x550E], + ["D146",0x5503], + ["D147",0x550B], + ["D148",0x5701], + ["D149",0x5702], + ["D14A",0x57CC], + ["D14B",0x5832], + ["D14C",0x57D5], + ["D14D",0x57D2], + ["D14E",0x57BA], + ["D14F",0x57C6], + ["D150",0x57BD], + ["D151",0x57BC], + ["D152",0x57B8], + ["D153",0x57B6], + ["D154",0x57BF], + ["D155",0x57C7], + ["D156",0x57D0], + ["D157",0x57B9], + ["D158",0x57C1], + ["D159",0x590E], + ["D15A",0x594A], + ["D15B",0x5A19], + ["D15C",0x5A16], + ["D15D",0x5A2D], + ["D15E",0x5A2E], + ["D15F",0x5A15], + ["D160",0x5A0F], + ["D161",0x5A17], + ["D162",0x5A0A], + ["D163",0x5A1E], + ["D164",0x5A33], + ["D165",0x5B6C], + ["D166",0x5BA7], + ["D167",0x5BAD], + ["D168",0x5BAC], + ["D169",0x5C03], + ["D16A",0x5C56], + ["D16B",0x5C54], + ["D16C",0x5CEC], + ["D16D",0x5CFF], + ["D16E",0x5CEE], + ["D16F",0x5CF1], + ["D170",0x5CF7], + ["D171",0x5D00], + ["D172",0x5CF9], + ["D173",0x5E29], + ["D174",0x5E28], + ["D175",0x5EA8], + ["D176",0x5EAE], + ["D177",0x5EAA], + ["D178",0x5EAC], + ["D179",0x5F33], + ["D17A",0x5F30], + ["D17B",0x5F67], + ["D17C",0x605D], + ["D17D",0x605A], + ["D17E",0x6067], + ["D1A1",0x6041], + ["D1A2",0x60A2], + ["D1A3",0x6088], + ["D1A4",0x6080], + ["D1A5",0x6092], + ["D1A6",0x6081], + ["D1A7",0x609D], + ["D1A8",0x6083], + ["D1A9",0x6095], + ["D1AA",0x609B], + ["D1AB",0x6097], + ["D1AC",0x6087], + ["D1AD",0x609C], + ["D1AE",0x608E], + ["D1AF",0x6219], + ["D1B0",0x6246], + ["D1B1",0x62F2], + ["D1B2",0x6310], + ["D1B3",0x6356], + ["D1B4",0x632C], + ["D1B5",0x6344], + ["D1B6",0x6345], + ["D1B7",0x6336], + ["D1B8",0x6343], + ["D1B9",0x63E4], + ["D1BA",0x6339], + ["D1BB",0x634B], + ["D1BC",0x634A], + ["D1BD",0x633C], + ["D1BE",0x6329], + ["D1BF",0x6341], + ["D1C0",0x6334], + ["D1C1",0x6358], + ["D1C2",0x6354], + ["D1C3",0x6359], + ["D1C4",0x632D], + ["D1C5",0x6347], + ["D1C6",0x6333], + ["D1C7",0x635A], + ["D1C8",0x6351], + ["D1C9",0x6338], + ["D1CA",0x6357], + ["D1CB",0x6340], + ["D1CC",0x6348], + ["D1CD",0x654A], + ["D1CE",0x6546], + ["D1CF",0x65C6], + ["D1D0",0x65C3], + ["D1D1",0x65C4], + ["D1D2",0x65C2], + ["D1D3",0x664A], + ["D1D4",0x665F], + ["D1D5",0x6647], + ["D1D6",0x6651], + ["D1D7",0x6712], + ["D1D8",0x6713], + ["D1D9",0x681F], + ["D1DA",0x681A], + ["D1DB",0x6849], + ["D1DC",0x6832], + ["D1DD",0x6833], + ["D1DE",0x683B], + ["D1DF",0x684B], + ["D1E0",0x684F], + ["D1E1",0x6816], + ["D1E2",0x6831], + ["D1E3",0x681C], + ["D1E4",0x6835], + ["D1E5",0x682B], + ["D1E6",0x682D], + ["D1E7",0x682F], + ["D1E8",0x684E], + ["D1E9",0x6844], + ["D1EA",0x6834], + ["D1EB",0x681D], + ["D1EC",0x6812], + ["D1ED",0x6814], + ["D1EE",0x6826], + ["D1EF",0x6828], + ["D1F0",0x682E], + ["D1F1",0x684D], + ["D1F2",0x683A], + ["D1F3",0x6825], + ["D1F4",0x6820], + ["D1F5",0x6B2C], + ["D1F6",0x6B2F], + ["D1F7",0x6B2D], + ["D1F8",0x6B31], + ["D1F9",0x6B34], + ["D1FA",0x6B6D], + ["D1FB",0x8082], + ["D1FC",0x6B88], + ["D1FD",0x6BE6], + ["D1FE",0x6BE4], + ["D240",0x6BE8], + ["D241",0x6BE3], + ["D242",0x6BE2], + ["D243",0x6BE7], + ["D244",0x6C25], + ["D245",0x6D7A], + ["D246",0x6D63], + ["D247",0x6D64], + ["D248",0x6D76], + ["D249",0x6D0D], + ["D24A",0x6D61], + ["D24B",0x6D92], + ["D24C",0x6D58], + ["D24D",0x6D62], + ["D24E",0x6D6D], + ["D24F",0x6D6F], + ["D250",0x6D91], + ["D251",0x6D8D], + ["D252",0x6DEF], + ["D253",0x6D7F], + ["D254",0x6D86], + ["D255",0x6D5E], + ["D256",0x6D67], + ["D257",0x6D60], + ["D258",0x6D97], + ["D259",0x6D70], + ["D25A",0x6D7C], + ["D25B",0x6D5F], + ["D25C",0x6D82], + ["D25D",0x6D98], + ["D25E",0x6D2F], + ["D25F",0x6D68], + ["D260",0x6D8B], + ["D261",0x6D7E], + ["D262",0x6D80], + ["D263",0x6D84], + ["D264",0x6D16], + ["D265",0x6D83], + ["D266",0x6D7B], + ["D267",0x6D7D], + ["D268",0x6D75], + ["D269",0x6D90], + ["D26A",0x70DC], + ["D26B",0x70D3], + ["D26C",0x70D1], + ["D26D",0x70DD], + ["D26E",0x70CB], + ["D26F",0x7F39], + ["D270",0x70E2], + ["D271",0x70D7], + ["D272",0x70D2], + ["D273",0x70DE], + ["D274",0x70E0], + ["D275",0x70D4], + ["D276",0x70CD], + ["D277",0x70C5], + ["D278",0x70C6], + ["D279",0x70C7], + ["D27A",0x70DA], + ["D27B",0x70CE], + ["D27C",0x70E1], + ["D27D",0x7242], + ["D27E",0x7278], + ["D2A1",0x7277], + ["D2A2",0x7276], + ["D2A3",0x7300], + ["D2A4",0x72FA], + ["D2A5",0x72F4], + ["D2A6",0x72FE], + ["D2A7",0x72F6], + ["D2A8",0x72F3], + ["D2A9",0x72FB], + ["D2AA",0x7301], + ["D2AB",0x73D3], + ["D2AC",0x73D9], + ["D2AD",0x73E5], + ["D2AE",0x73D6], + ["D2AF",0x73BC], + ["D2B0",0x73E7], + ["D2B1",0x73E3], + ["D2B2",0x73E9], + ["D2B3",0x73DC], + ["D2B4",0x73D2], + ["D2B5",0x73DB], + ["D2B6",0x73D4], + ["D2B7",0x73DD], + ["D2B8",0x73DA], + ["D2B9",0x73D7], + ["D2BA",0x73D8], + ["D2BB",0x73E8], + ["D2BC",0x74DE], + ["D2BD",0x74DF], + ["D2BE",0x74F4], + ["D2BF",0x74F5], + ["D2C0",0x7521], + ["D2C1",0x755B], + ["D2C2",0x755F], + ["D2C3",0x75B0], + ["D2C4",0x75C1], + ["D2C5",0x75BB], + ["D2C6",0x75C4], + ["D2C7",0x75C0], + ["D2C8",0x75BF], + ["D2C9",0x75B6], + ["D2CA",0x75BA], + ["D2CB",0x768A], + ["D2CC",0x76C9], + ["D2CD",0x771D], + ["D2CE",0x771B], + ["D2CF",0x7710], + ["D2D0",0x7713], + ["D2D1",0x7712], + ["D2D2",0x7723], + ["D2D3",0x7711], + ["D2D4",0x7715], + ["D2D5",0x7719], + ["D2D6",0x771A], + ["D2D7",0x7722], + ["D2D8",0x7727], + ["D2D9",0x7823], + ["D2DA",0x782C], + ["D2DB",0x7822], + ["D2DC",0x7835], + ["D2DD",0x782F], + ["D2DE",0x7828], + ["D2DF",0x782E], + ["D2E0",0x782B], + ["D2E1",0x7821], + ["D2E2",0x7829], + ["D2E3",0x7833], + ["D2E4",0x782A], + ["D2E5",0x7831], + ["D2E6",0x7954], + ["D2E7",0x795B], + ["D2E8",0x794F], + ["D2E9",0x795C], + ["D2EA",0x7953], + ["D2EB",0x7952], + ["D2EC",0x7951], + ["D2ED",0x79EB], + ["D2EE",0x79EC], + ["D2EF",0x79E0], + ["D2F0",0x79EE], + ["D2F1",0x79ED], + ["D2F2",0x79EA], + ["D2F3",0x79DC], + ["D2F4",0x79DE], + ["D2F5",0x79DD], + ["D2F6",0x7A86], + ["D2F7",0x7A89], + ["D2F8",0x7A85], + ["D2F9",0x7A8B], + ["D2FA",0x7A8C], + ["D2FB",0x7A8A], + ["D2FC",0x7A87], + ["D2FD",0x7AD8], + ["D2FE",0x7B10], + ["D340",0x7B04], + ["D341",0x7B13], + ["D342",0x7B05], + ["D343",0x7B0F], + ["D344",0x7B08], + ["D345",0x7B0A], + ["D346",0x7B0E], + ["D347",0x7B09], + ["D348",0x7B12], + ["D349",0x7C84], + ["D34A",0x7C91], + ["D34B",0x7C8A], + ["D34C",0x7C8C], + ["D34D",0x7C88], + ["D34E",0x7C8D], + ["D34F",0x7C85], + ["D350",0x7D1E], + ["D351",0x7D1D], + ["D352",0x7D11], + ["D353",0x7D0E], + ["D354",0x7D18], + ["D355",0x7D16], + ["D356",0x7D13], + ["D357",0x7D1F], + ["D358",0x7D12], + ["D359",0x7D0F], + ["D35A",0x7D0C], + ["D35B",0x7F5C], + ["D35C",0x7F61], + ["D35D",0x7F5E], + ["D35E",0x7F60], + ["D35F",0x7F5D], + ["D360",0x7F5B], + ["D361",0x7F96], + ["D362",0x7F92], + ["D363",0x7FC3], + ["D364",0x7FC2], + ["D365",0x7FC0], + ["D366",0x8016], + ["D367",0x803E], + ["D368",0x8039], + ["D369",0x80FA], + ["D36A",0x80F2], + ["D36B",0x80F9], + ["D36C",0x80F5], + ["D36D",0x8101], + ["D36E",0x80FB], + ["D36F",0x8100], + ["D370",0x8201], + ["D371",0x822F], + ["D372",0x8225], + ["D373",0x8333], + ["D374",0x832D], + ["D375",0x8344], + ["D376",0x8319], + ["D377",0x8351], + ["D378",0x8325], + ["D379",0x8356], + ["D37A",0x833F], + ["D37B",0x8341], + ["D37C",0x8326], + ["D37D",0x831C], + ["D37E",0x8322], + ["D3A1",0x8342], + ["D3A2",0x834E], + ["D3A3",0x831B], + ["D3A4",0x832A], + ["D3A5",0x8308], + ["D3A6",0x833C], + ["D3A7",0x834D], + ["D3A8",0x8316], + ["D3A9",0x8324], + ["D3AA",0x8320], + ["D3AB",0x8337], + ["D3AC",0x832F], + ["D3AD",0x8329], + ["D3AE",0x8347], + ["D3AF",0x8345], + ["D3B0",0x834C], + ["D3B1",0x8353], + ["D3B2",0x831E], + ["D3B3",0x832C], + ["D3B4",0x834B], + ["D3B5",0x8327], + ["D3B6",0x8348], + ["D3B7",0x8653], + ["D3B8",0x8652], + ["D3B9",0x86A2], + ["D3BA",0x86A8], + ["D3BB",0x8696], + ["D3BC",0x868D], + ["D3BD",0x8691], + ["D3BE",0x869E], + ["D3BF",0x8687], + ["D3C0",0x8697], + ["D3C1",0x8686], + ["D3C2",0x868B], + ["D3C3",0x869A], + ["D3C4",0x8685], + ["D3C5",0x86A5], + ["D3C6",0x8699], + ["D3C7",0x86A1], + ["D3C8",0x86A7], + ["D3C9",0x8695], + ["D3CA",0x8698], + ["D3CB",0x868E], + ["D3CC",0x869D], + ["D3CD",0x8690], + ["D3CE",0x8694], + ["D3CF",0x8843], + ["D3D0",0x8844], + ["D3D1",0x886D], + ["D3D2",0x8875], + ["D3D3",0x8876], + ["D3D4",0x8872], + ["D3D5",0x8880], + ["D3D6",0x8871], + ["D3D7",0x887F], + ["D3D8",0x886F], + ["D3D9",0x8883], + ["D3DA",0x887E], + ["D3DB",0x8874], + ["D3DC",0x887C], + ["D3DD",0x8A12], + ["D3DE",0x8C47], + ["D3DF",0x8C57], + ["D3E0",0x8C7B], + ["D3E1",0x8CA4], + ["D3E2",0x8CA3], + ["D3E3",0x8D76], + ["D3E4",0x8D78], + ["D3E5",0x8DB5], + ["D3E6",0x8DB7], + ["D3E7",0x8DB6], + ["D3E8",0x8ED1], + ["D3E9",0x8ED3], + ["D3EA",0x8FFE], + ["D3EB",0x8FF5], + ["D3EC",0x9002], + ["D3ED",0x8FFF], + ["D3EE",0x8FFB], + ["D3EF",0x9004], + ["D3F0",0x8FFC], + ["D3F1",0x8FF6], + ["D3F2",0x90D6], + ["D3F3",0x90E0], + ["D3F4",0x90D9], + ["D3F5",0x90DA], + ["D3F6",0x90E3], + ["D3F7",0x90DF], + ["D3F8",0x90E5], + ["D3F9",0x90D8], + ["D3FA",0x90DB], + ["D3FB",0x90D7], + ["D3FC",0x90DC], + ["D3FD",0x90E4], + ["D3FE",0x9150], + ["D440",0x914E], + ["D441",0x914F], + ["D442",0x91D5], + ["D443",0x91E2], + ["D444",0x91DA], + ["D445",0x965C], + ["D446",0x965F], + ["D447",0x96BC], + ["D448",0x98E3], + ["D449",0x9ADF], + ["D44A",0x9B2F], + ["D44B",0x4E7F], + ["D44C",0x5070], + ["D44D",0x506A], + ["D44E",0x5061], + ["D44F",0x505E], + ["D450",0x5060], + ["D451",0x5053], + ["D452",0x504B], + ["D453",0x505D], + ["D454",0x5072], + ["D455",0x5048], + ["D456",0x504D], + ["D457",0x5041], + ["D458",0x505B], + ["D459",0x504A], + ["D45A",0x5062], + ["D45B",0x5015], + ["D45C",0x5045], + ["D45D",0x505F], + ["D45E",0x5069], + ["D45F",0x506B], + ["D460",0x5063], + ["D461",0x5064], + ["D462",0x5046], + ["D463",0x5040], + ["D464",0x506E], + ["D465",0x5073], + ["D466",0x5057], + ["D467",0x5051], + ["D468",0x51D0], + ["D469",0x526B], + ["D46A",0x526D], + ["D46B",0x526C], + ["D46C",0x526E], + ["D46D",0x52D6], + ["D46E",0x52D3], + ["D46F",0x532D], + ["D470",0x539C], + ["D471",0x5575], + ["D472",0x5576], + ["D473",0x553C], + ["D474",0x554D], + ["D475",0x5550], + ["D476",0x5534], + ["D477",0x552A], + ["D478",0x5551], + ["D479",0x5562], + ["D47A",0x5536], + ["D47B",0x5535], + ["D47C",0x5530], + ["D47D",0x5552], + ["D47E",0x5545], + ["D4A1",0x550C], + ["D4A2",0x5532], + ["D4A3",0x5565], + ["D4A4",0x554E], + ["D4A5",0x5539], + ["D4A6",0x5548], + ["D4A7",0x552D], + ["D4A8",0x553B], + ["D4A9",0x5540], + ["D4AA",0x554B], + ["D4AB",0x570A], + ["D4AC",0x5707], + ["D4AD",0x57FB], + ["D4AE",0x5814], + ["D4AF",0x57E2], + ["D4B0",0x57F6], + ["D4B1",0x57DC], + ["D4B2",0x57F4], + ["D4B3",0x5800], + ["D4B4",0x57ED], + ["D4B5",0x57FD], + ["D4B6",0x5808], + ["D4B7",0x57F8], + ["D4B8",0x580B], + ["D4B9",0x57F3], + ["D4BA",0x57CF], + ["D4BB",0x5807], + ["D4BC",0x57EE], + ["D4BD",0x57E3], + ["D4BE",0x57F2], + ["D4BF",0x57E5], + ["D4C0",0x57EC], + ["D4C1",0x57E1], + ["D4C2",0x580E], + ["D4C3",0x57FC], + ["D4C4",0x5810], + ["D4C5",0x57E7], + ["D4C6",0x5801], + ["D4C7",0x580C], + ["D4C8",0x57F1], + ["D4C9",0x57E9], + ["D4CA",0x57F0], + ["D4CB",0x580D], + ["D4CC",0x5804], + ["D4CD",0x595C], + ["D4CE",0x5A60], + ["D4CF",0x5A58], + ["D4D0",0x5A55], + ["D4D1",0x5A67], + ["D4D2",0x5A5E], + ["D4D3",0x5A38], + ["D4D4",0x5A35], + ["D4D5",0x5A6D], + ["D4D6",0x5A50], + ["D4D7",0x5A5F], + ["D4D8",0x5A65], + ["D4D9",0x5A6C], + ["D4DA",0x5A53], + ["D4DB",0x5A64], + ["D4DC",0x5A57], + ["D4DD",0x5A43], + ["D4DE",0x5A5D], + ["D4DF",0x5A52], + ["D4E0",0x5A44], + ["D4E1",0x5A5B], + ["D4E2",0x5A48], + ["D4E3",0x5A8E], + ["D4E4",0x5A3E], + ["D4E5",0x5A4D], + ["D4E6",0x5A39], + ["D4E7",0x5A4C], + ["D4E8",0x5A70], + ["D4E9",0x5A69], + ["D4EA",0x5A47], + ["D4EB",0x5A51], + ["D4EC",0x5A56], + ["D4ED",0x5A42], + ["D4EE",0x5A5C], + ["D4EF",0x5B72], + ["D4F0",0x5B6E], + ["D4F1",0x5BC1], + ["D4F2",0x5BC0], + ["D4F3",0x5C59], + ["D4F4",0x5D1E], + ["D4F5",0x5D0B], + ["D4F6",0x5D1D], + ["D4F7",0x5D1A], + ["D4F8",0x5D20], + ["D4F9",0x5D0C], + ["D4FA",0x5D28], + ["D4FB",0x5D0D], + ["D4FC",0x5D26], + ["D4FD",0x5D25], + ["D4FE",0x5D0F], + ["D540",0x5D30], + ["D541",0x5D12], + ["D542",0x5D23], + ["D543",0x5D1F], + ["D544",0x5D2E], + ["D545",0x5E3E], + ["D546",0x5E34], + ["D547",0x5EB1], + ["D548",0x5EB4], + ["D549",0x5EB9], + ["D54A",0x5EB2], + ["D54B",0x5EB3], + ["D54C",0x5F36], + ["D54D",0x5F38], + ["D54E",0x5F9B], + ["D54F",0x5F96], + ["D550",0x5F9F], + ["D551",0x608A], + ["D552",0x6090], + ["D553",0x6086], + ["D554",0x60BE], + ["D555",0x60B0], + ["D556",0x60BA], + ["D557",0x60D3], + ["D558",0x60D4], + ["D559",0x60CF], + ["D55A",0x60E4], + ["D55B",0x60D9], + ["D55C",0x60DD], + ["D55D",0x60C8], + ["D55E",0x60B1], + ["D55F",0x60DB], + ["D560",0x60B7], + ["D561",0x60CA], + ["D562",0x60BF], + ["D563",0x60C3], + ["D564",0x60CD], + ["D565",0x60C0], + ["D566",0x6332], + ["D567",0x6365], + ["D568",0x638A], + ["D569",0x6382], + ["D56A",0x637D], + ["D56B",0x63BD], + ["D56C",0x639E], + ["D56D",0x63AD], + ["D56E",0x639D], + ["D56F",0x6397], + ["D570",0x63AB], + ["D571",0x638E], + ["D572",0x636F], + ["D573",0x6387], + ["D574",0x6390], + ["D575",0x636E], + ["D576",0x63AF], + ["D577",0x6375], + ["D578",0x639C], + ["D579",0x636D], + ["D57A",0x63AE], + ["D57B",0x637C], + ["D57C",0x63A4], + ["D57D",0x633B], + ["D57E",0x639F], + ["D5A1",0x6378], + ["D5A2",0x6385], + ["D5A3",0x6381], + ["D5A4",0x6391], + ["D5A5",0x638D], + ["D5A6",0x6370], + ["D5A7",0x6553], + ["D5A8",0x65CD], + ["D5A9",0x6665], + ["D5AA",0x6661], + ["D5AB",0x665B], + ["D5AC",0x6659], + ["D5AD",0x665C], + ["D5AE",0x6662], + ["D5AF",0x6718], + ["D5B0",0x6879], + ["D5B1",0x6887], + ["D5B2",0x6890], + ["D5B3",0x689C], + ["D5B4",0x686D], + ["D5B5",0x686E], + ["D5B6",0x68AE], + ["D5B7",0x68AB], + ["D5B8",0x6956], + ["D5B9",0x686F], + ["D5BA",0x68A3], + ["D5BB",0x68AC], + ["D5BC",0x68A9], + ["D5BD",0x6875], + ["D5BE",0x6874], + ["D5BF",0x68B2], + ["D5C0",0x688F], + ["D5C1",0x6877], + ["D5C2",0x6892], + ["D5C3",0x687C], + ["D5C4",0x686B], + ["D5C5",0x6872], + ["D5C6",0x68AA], + ["D5C7",0x6880], + ["D5C8",0x6871], + ["D5C9",0x687E], + ["D5CA",0x689B], + ["D5CB",0x6896], + ["D5CC",0x688B], + ["D5CD",0x68A0], + ["D5CE",0x6889], + ["D5CF",0x68A4], + ["D5D0",0x6878], + ["D5D1",0x687B], + ["D5D2",0x6891], + ["D5D3",0x688C], + ["D5D4",0x688A], + ["D5D5",0x687D], + ["D5D6",0x6B36], + ["D5D7",0x6B33], + ["D5D8",0x6B37], + ["D5D9",0x6B38], + ["D5DA",0x6B91], + ["D5DB",0x6B8F], + ["D5DC",0x6B8D], + ["D5DD",0x6B8E], + ["D5DE",0x6B8C], + ["D5DF",0x6C2A], + ["D5E0",0x6DC0], + ["D5E1",0x6DAB], + ["D5E2",0x6DB4], + ["D5E3",0x6DB3], + ["D5E4",0x6E74], + ["D5E5",0x6DAC], + ["D5E6",0x6DE9], + ["D5E7",0x6DE2], + ["D5E8",0x6DB7], + ["D5E9",0x6DF6], + ["D5EA",0x6DD4], + ["D5EB",0x6E00], + ["D5EC",0x6DC8], + ["D5ED",0x6DE0], + ["D5EE",0x6DDF], + ["D5EF",0x6DD6], + ["D5F0",0x6DBE], + ["D5F1",0x6DE5], + ["D5F2",0x6DDC], + ["D5F3",0x6DDD], + ["D5F4",0x6DDB], + ["D5F5",0x6DF4], + ["D5F6",0x6DCA], + ["D5F7",0x6DBD], + ["D5F8",0x6DED], + ["D5F9",0x6DF0], + ["D5FA",0x6DBA], + ["D5FB",0x6DD5], + ["D5FC",0x6DC2], + ["D5FD",0x6DCF], + ["D5FE",0x6DC9], + ["D640",0x6DD0], + ["D641",0x6DF2], + ["D642",0x6DD3], + ["D643",0x6DFD], + ["D644",0x6DD7], + ["D645",0x6DCD], + ["D646",0x6DE3], + ["D647",0x6DBB], + ["D648",0x70FA], + ["D649",0x710D], + ["D64A",0x70F7], + ["D64B",0x7117], + ["D64C",0x70F4], + ["D64D",0x710C], + ["D64E",0x70F0], + ["D64F",0x7104], + ["D650",0x70F3], + ["D651",0x7110], + ["D652",0x70FC], + ["D653",0x70FF], + ["D654",0x7106], + ["D655",0x7113], + ["D656",0x7100], + ["D657",0x70F8], + ["D658",0x70F6], + ["D659",0x710B], + ["D65A",0x7102], + ["D65B",0x710E], + ["D65C",0x727E], + ["D65D",0x727B], + ["D65E",0x727C], + ["D65F",0x727F], + ["D660",0x731D], + ["D661",0x7317], + ["D662",0x7307], + ["D663",0x7311], + ["D664",0x7318], + ["D665",0x730A], + ["D666",0x7308], + ["D667",0x72FF], + ["D668",0x730F], + ["D669",0x731E], + ["D66A",0x7388], + ["D66B",0x73F6], + ["D66C",0x73F8], + ["D66D",0x73F5], + ["D66E",0x7404], + ["D66F",0x7401], + ["D670",0x73FD], + ["D671",0x7407], + ["D672",0x7400], + ["D673",0x73FA], + ["D674",0x73FC], + ["D675",0x73FF], + ["D676",0x740C], + ["D677",0x740B], + ["D678",0x73F4], + ["D679",0x7408], + ["D67A",0x7564], + ["D67B",0x7563], + ["D67C",0x75CE], + ["D67D",0x75D2], + ["D67E",0x75CF], + ["D6A1",0x75CB], + ["D6A2",0x75CC], + ["D6A3",0x75D1], + ["D6A4",0x75D0], + ["D6A5",0x768F], + ["D6A6",0x7689], + ["D6A7",0x76D3], + ["D6A8",0x7739], + ["D6A9",0x772F], + ["D6AA",0x772D], + ["D6AB",0x7731], + ["D6AC",0x7732], + ["D6AD",0x7734], + ["D6AE",0x7733], + ["D6AF",0x773D], + ["D6B0",0x7725], + ["D6B1",0x773B], + ["D6B2",0x7735], + ["D6B3",0x7848], + ["D6B4",0x7852], + ["D6B5",0x7849], + ["D6B6",0x784D], + ["D6B7",0x784A], + ["D6B8",0x784C], + ["D6B9",0x7826], + ["D6BA",0x7845], + ["D6BB",0x7850], + ["D6BC",0x7964], + ["D6BD",0x7967], + ["D6BE",0x7969], + ["D6BF",0x796A], + ["D6C0",0x7963], + ["D6C1",0x796B], + ["D6C2",0x7961], + ["D6C3",0x79BB], + ["D6C4",0x79FA], + ["D6C5",0x79F8], + ["D6C6",0x79F6], + ["D6C7",0x79F7], + ["D6C8",0x7A8F], + ["D6C9",0x7A94], + ["D6CA",0x7A90], + ["D6CB",0x7B35], + ["D6CC",0x7B47], + ["D6CD",0x7B34], + ["D6CE",0x7B25], + ["D6CF",0x7B30], + ["D6D0",0x7B22], + ["D6D1",0x7B24], + ["D6D2",0x7B33], + ["D6D3",0x7B18], + ["D6D4",0x7B2A], + ["D6D5",0x7B1D], + ["D6D6",0x7B31], + ["D6D7",0x7B2B], + ["D6D8",0x7B2D], + ["D6D9",0x7B2F], + ["D6DA",0x7B32], + ["D6DB",0x7B38], + ["D6DC",0x7B1A], + ["D6DD",0x7B23], + ["D6DE",0x7C94], + ["D6DF",0x7C98], + ["D6E0",0x7C96], + ["D6E1",0x7CA3], + ["D6E2",0x7D35], + ["D6E3",0x7D3D], + ["D6E4",0x7D38], + ["D6E5",0x7D36], + ["D6E6",0x7D3A], + ["D6E7",0x7D45], + ["D6E8",0x7D2C], + ["D6E9",0x7D29], + ["D6EA",0x7D41], + ["D6EB",0x7D47], + ["D6EC",0x7D3E], + ["D6ED",0x7D3F], + ["D6EE",0x7D4A], + ["D6EF",0x7D3B], + ["D6F0",0x7D28], + ["D6F1",0x7F63], + ["D6F2",0x7F95], + ["D6F3",0x7F9C], + ["D6F4",0x7F9D], + ["D6F5",0x7F9B], + ["D6F6",0x7FCA], + ["D6F7",0x7FCB], + ["D6F8",0x7FCD], + ["D6F9",0x7FD0], + ["D6FA",0x7FD1], + ["D6FB",0x7FC7], + ["D6FC",0x7FCF], + ["D6FD",0x7FC9], + ["D6FE",0x801F], + ["D740",0x801E], + ["D741",0x801B], + ["D742",0x8047], + ["D743",0x8043], + ["D744",0x8048], + ["D745",0x8118], + ["D746",0x8125], + ["D747",0x8119], + ["D748",0x811B], + ["D749",0x812D], + ["D74A",0x811F], + ["D74B",0x812C], + ["D74C",0x811E], + ["D74D",0x8121], + ["D74E",0x8115], + ["D74F",0x8127], + ["D750",0x811D], + ["D751",0x8122], + ["D752",0x8211], + ["D753",0x8238], + ["D754",0x8233], + ["D755",0x823A], + ["D756",0x8234], + ["D757",0x8232], + ["D758",0x8274], + ["D759",0x8390], + ["D75A",0x83A3], + ["D75B",0x83A8], + ["D75C",0x838D], + ["D75D",0x837A], + ["D75E",0x8373], + ["D75F",0x83A4], + ["D760",0x8374], + ["D761",0x838F], + ["D762",0x8381], + ["D763",0x8395], + ["D764",0x8399], + ["D765",0x8375], + ["D766",0x8394], + ["D767",0x83A9], + ["D768",0x837D], + ["D769",0x8383], + ["D76A",0x838C], + ["D76B",0x839D], + ["D76C",0x839B], + ["D76D",0x83AA], + ["D76E",0x838B], + ["D76F",0x837E], + ["D770",0x83A5], + ["D771",0x83AF], + ["D772",0x8388], + ["D773",0x8397], + ["D774",0x83B0], + ["D775",0x837F], + ["D776",0x83A6], + ["D777",0x8387], + ["D778",0x83AE], + ["D779",0x8376], + ["D77A",0x839A], + ["D77B",0x8659], + ["D77C",0x8656], + ["D77D",0x86BF], + ["D77E",0x86B7], + ["D7A1",0x86C2], + ["D7A2",0x86C1], + ["D7A3",0x86C5], + ["D7A4",0x86BA], + ["D7A5",0x86B0], + ["D7A6",0x86C8], + ["D7A7",0x86B9], + ["D7A8",0x86B3], + ["D7A9",0x86B8], + ["D7AA",0x86CC], + ["D7AB",0x86B4], + ["D7AC",0x86BB], + ["D7AD",0x86BC], + ["D7AE",0x86C3], + ["D7AF",0x86BD], + ["D7B0",0x86BE], + ["D7B1",0x8852], + ["D7B2",0x8889], + ["D7B3",0x8895], + ["D7B4",0x88A8], + ["D7B5",0x88A2], + ["D7B6",0x88AA], + ["D7B7",0x889A], + ["D7B8",0x8891], + ["D7B9",0x88A1], + ["D7BA",0x889F], + ["D7BB",0x8898], + ["D7BC",0x88A7], + ["D7BD",0x8899], + ["D7BE",0x889B], + ["D7BF",0x8897], + ["D7C0",0x88A4], + ["D7C1",0x88AC], + ["D7C2",0x888C], + ["D7C3",0x8893], + ["D7C4",0x888E], + ["D7C5",0x8982], + ["D7C6",0x89D6], + ["D7C7",0x89D9], + ["D7C8",0x89D5], + ["D7C9",0x8A30], + ["D7CA",0x8A27], + ["D7CB",0x8A2C], + ["D7CC",0x8A1E], + ["D7CD",0x8C39], + ["D7CE",0x8C3B], + ["D7CF",0x8C5C], + ["D7D0",0x8C5D], + ["D7D1",0x8C7D], + ["D7D2",0x8CA5], + ["D7D3",0x8D7D], + ["D7D4",0x8D7B], + ["D7D5",0x8D79], + ["D7D6",0x8DBC], + ["D7D7",0x8DC2], + ["D7D8",0x8DB9], + ["D7D9",0x8DBF], + ["D7DA",0x8DC1], + ["D7DB",0x8ED8], + ["D7DC",0x8EDE], + ["D7DD",0x8EDD], + ["D7DE",0x8EDC], + ["D7DF",0x8ED7], + ["D7E0",0x8EE0], + ["D7E1",0x8EE1], + ["D7E2",0x9024], + ["D7E3",0x900B], + ["D7E4",0x9011], + ["D7E5",0x901C], + ["D7E6",0x900C], + ["D7E7",0x9021], + ["D7E8",0x90EF], + ["D7E9",0x90EA], + ["D7EA",0x90F0], + ["D7EB",0x90F4], + ["D7EC",0x90F2], + ["D7ED",0x90F3], + ["D7EE",0x90D4], + ["D7EF",0x90EB], + ["D7F0",0x90EC], + ["D7F1",0x90E9], + ["D7F2",0x9156], + ["D7F3",0x9158], + ["D7F4",0x915A], + ["D7F5",0x9153], + ["D7F6",0x9155], + ["D7F7",0x91EC], + ["D7F8",0x91F4], + ["D7F9",0x91F1], + ["D7FA",0x91F3], + ["D7FB",0x91F8], + ["D7FC",0x91E4], + ["D7FD",0x91F9], + ["D7FE",0x91EA], + ["D840",0x91EB], + ["D841",0x91F7], + ["D842",0x91E8], + ["D843",0x91EE], + ["D844",0x957A], + ["D845",0x9586], + ["D846",0x9588], + ["D847",0x967C], + ["D848",0x966D], + ["D849",0x966B], + ["D84A",0x9671], + ["D84B",0x966F], + ["D84C",0x96BF], + ["D84D",0x976A], + ["D84E",0x9804], + ["D84F",0x98E5], + ["D850",0x9997], + ["D851",0x509B], + ["D852",0x5095], + ["D853",0x5094], + ["D854",0x509E], + ["D855",0x508B], + ["D856",0x50A3], + ["D857",0x5083], + ["D858",0x508C], + ["D859",0x508E], + ["D85A",0x509D], + ["D85B",0x5068], + ["D85C",0x509C], + ["D85D",0x5092], + ["D85E",0x5082], + ["D85F",0x5087], + ["D860",0x515F], + ["D861",0x51D4], + ["D862",0x5312], + ["D863",0x5311], + ["D864",0x53A4], + ["D865",0x53A7], + ["D866",0x5591], + ["D867",0x55A8], + ["D868",0x55A5], + ["D869",0x55AD], + ["D86A",0x5577], + ["D86B",0x5645], + ["D86C",0x55A2], + ["D86D",0x5593], + ["D86E",0x5588], + ["D86F",0x558F], + ["D870",0x55B5], + ["D871",0x5581], + ["D872",0x55A3], + ["D873",0x5592], + ["D874",0x55A4], + ["D875",0x557D], + ["D876",0x558C], + ["D877",0x55A6], + ["D878",0x557F], + ["D879",0x5595], + ["D87A",0x55A1], + ["D87B",0x558E], + ["D87C",0x570C], + ["D87D",0x5829], + ["D87E",0x5837], + ["D8A1",0x5819], + ["D8A2",0x581E], + ["D8A3",0x5827], + ["D8A4",0x5823], + ["D8A5",0x5828], + ["D8A6",0x57F5], + ["D8A7",0x5848], + ["D8A8",0x5825], + ["D8A9",0x581C], + ["D8AA",0x581B], + ["D8AB",0x5833], + ["D8AC",0x583F], + ["D8AD",0x5836], + ["D8AE",0x582E], + ["D8AF",0x5839], + ["D8B0",0x5838], + ["D8B1",0x582D], + ["D8B2",0x582C], + ["D8B3",0x583B], + ["D8B4",0x5961], + ["D8B5",0x5AAF], + ["D8B6",0x5A94], + ["D8B7",0x5A9F], + ["D8B8",0x5A7A], + ["D8B9",0x5AA2], + ["D8BA",0x5A9E], + ["D8BB",0x5A78], + ["D8BC",0x5AA6], + ["D8BD",0x5A7C], + ["D8BE",0x5AA5], + ["D8BF",0x5AAC], + ["D8C0",0x5A95], + ["D8C1",0x5AAE], + ["D8C2",0x5A37], + ["D8C3",0x5A84], + ["D8C4",0x5A8A], + ["D8C5",0x5A97], + ["D8C6",0x5A83], + ["D8C7",0x5A8B], + ["D8C8",0x5AA9], + ["D8C9",0x5A7B], + ["D8CA",0x5A7D], + ["D8CB",0x5A8C], + ["D8CC",0x5A9C], + ["D8CD",0x5A8F], + ["D8CE",0x5A93], + ["D8CF",0x5A9D], + ["D8D0",0x5BEA], + ["D8D1",0x5BCD], + ["D8D2",0x5BCB], + ["D8D3",0x5BD4], + ["D8D4",0x5BD1], + ["D8D5",0x5BCA], + ["D8D6",0x5BCE], + ["D8D7",0x5C0C], + ["D8D8",0x5C30], + ["D8D9",0x5D37], + ["D8DA",0x5D43], + ["D8DB",0x5D6B], + ["D8DC",0x5D41], + ["D8DD",0x5D4B], + ["D8DE",0x5D3F], + ["D8DF",0x5D35], + ["D8E0",0x5D51], + ["D8E1",0x5D4E], + ["D8E2",0x5D55], + ["D8E3",0x5D33], + ["D8E4",0x5D3A], + ["D8E5",0x5D52], + ["D8E6",0x5D3D], + ["D8E7",0x5D31], + ["D8E8",0x5D59], + ["D8E9",0x5D42], + ["D8EA",0x5D39], + ["D8EB",0x5D49], + ["D8EC",0x5D38], + ["D8ED",0x5D3C], + ["D8EE",0x5D32], + ["D8EF",0x5D36], + ["D8F0",0x5D40], + ["D8F1",0x5D45], + ["D8F2",0x5E44], + ["D8F3",0x5E41], + ["D8F4",0x5F58], + ["D8F5",0x5FA6], + ["D8F6",0x5FA5], + ["D8F7",0x5FAB], + ["D8F8",0x60C9], + ["D8F9",0x60B9], + ["D8FA",0x60CC], + ["D8FB",0x60E2], + ["D8FC",0x60CE], + ["D8FD",0x60C4], + ["D8FE",0x6114], + ["D940",0x60F2], + ["D941",0x610A], + ["D942",0x6116], + ["D943",0x6105], + ["D944",0x60F5], + ["D945",0x6113], + ["D946",0x60F8], + ["D947",0x60FC], + ["D948",0x60FE], + ["D949",0x60C1], + ["D94A",0x6103], + ["D94B",0x6118], + ["D94C",0x611D], + ["D94D",0x6110], + ["D94E",0x60FF], + ["D94F",0x6104], + ["D950",0x610B], + ["D951",0x624A], + ["D952",0x6394], + ["D953",0x63B1], + ["D954",0x63B0], + ["D955",0x63CE], + ["D956",0x63E5], + ["D957",0x63E8], + ["D958",0x63EF], + ["D959",0x63C3], + ["D95A",0x649D], + ["D95B",0x63F3], + ["D95C",0x63CA], + ["D95D",0x63E0], + ["D95E",0x63F6], + ["D95F",0x63D5], + ["D960",0x63F2], + ["D961",0x63F5], + ["D962",0x6461], + ["D963",0x63DF], + ["D964",0x63BE], + ["D965",0x63DD], + ["D966",0x63DC], + ["D967",0x63C4], + ["D968",0x63D8], + ["D969",0x63D3], + ["D96A",0x63C2], + ["D96B",0x63C7], + ["D96C",0x63CC], + ["D96D",0x63CB], + ["D96E",0x63C8], + ["D96F",0x63F0], + ["D970",0x63D7], + ["D971",0x63D9], + ["D972",0x6532], + ["D973",0x6567], + ["D974",0x656A], + ["D975",0x6564], + ["D976",0x655C], + ["D977",0x6568], + ["D978",0x6565], + ["D979",0x658C], + ["D97A",0x659D], + ["D97B",0x659E], + ["D97C",0x65AE], + ["D97D",0x65D0], + ["D97E",0x65D2], + ["D9A1",0x667C], + ["D9A2",0x666C], + ["D9A3",0x667B], + ["D9A4",0x6680], + ["D9A5",0x6671], + ["D9A6",0x6679], + ["D9A7",0x666A], + ["D9A8",0x6672], + ["D9A9",0x6701], + ["D9AA",0x690C], + ["D9AB",0x68D3], + ["D9AC",0x6904], + ["D9AD",0x68DC], + ["D9AE",0x692A], + ["D9AF",0x68EC], + ["D9B0",0x68EA], + ["D9B1",0x68F1], + ["D9B2",0x690F], + ["D9B3",0x68D6], + ["D9B4",0x68F7], + ["D9B5",0x68EB], + ["D9B6",0x68E4], + ["D9B7",0x68F6], + ["D9B8",0x6913], + ["D9B9",0x6910], + ["D9BA",0x68F3], + ["D9BB",0x68E1], + ["D9BC",0x6907], + ["D9BD",0x68CC], + ["D9BE",0x6908], + ["D9BF",0x6970], + ["D9C0",0x68B4], + ["D9C1",0x6911], + ["D9C2",0x68EF], + ["D9C3",0x68C6], + ["D9C4",0x6914], + ["D9C5",0x68F8], + ["D9C6",0x68D0], + ["D9C7",0x68FD], + ["D9C8",0x68FC], + ["D9C9",0x68E8], + ["D9CA",0x690B], + ["D9CB",0x690A], + ["D9CC",0x6917], + ["D9CD",0x68CE], + ["D9CE",0x68C8], + ["D9CF",0x68DD], + ["D9D0",0x68DE], + ["D9D1",0x68E6], + ["D9D2",0x68F4], + ["D9D3",0x68D1], + ["D9D4",0x6906], + ["D9D5",0x68D4], + ["D9D6",0x68E9], + ["D9D7",0x6915], + ["D9D8",0x6925], + ["D9D9",0x68C7], + ["D9DA",0x6B39], + ["D9DB",0x6B3B], + ["D9DC",0x6B3F], + ["D9DD",0x6B3C], + ["D9DE",0x6B94], + ["D9DF",0x6B97], + ["D9E0",0x6B99], + ["D9E1",0x6B95], + ["D9E2",0x6BBD], + ["D9E3",0x6BF0], + ["D9E4",0x6BF2], + ["D9E5",0x6BF3], + ["D9E6",0x6C30], + ["D9E7",0x6DFC], + ["D9E8",0x6E46], + ["D9E9",0x6E47], + ["D9EA",0x6E1F], + ["D9EB",0x6E49], + ["D9EC",0x6E88], + ["D9ED",0x6E3C], + ["D9EE",0x6E3D], + ["D9EF",0x6E45], + ["D9F0",0x6E62], + ["D9F1",0x6E2B], + ["D9F2",0x6E3F], + ["D9F3",0x6E41], + ["D9F4",0x6E5D], + ["D9F5",0x6E73], + ["D9F6",0x6E1C], + ["D9F7",0x6E33], + ["D9F8",0x6E4B], + ["D9F9",0x6E40], + ["D9FA",0x6E51], + ["D9FB",0x6E3B], + ["D9FC",0x6E03], + ["D9FD",0x6E2E], + ["D9FE",0x6E5E], + ["DA40",0x6E68], + ["DA41",0x6E5C], + ["DA42",0x6E61], + ["DA43",0x6E31], + ["DA44",0x6E28], + ["DA45",0x6E60], + ["DA46",0x6E71], + ["DA47",0x6E6B], + ["DA48",0x6E39], + ["DA49",0x6E22], + ["DA4A",0x6E30], + ["DA4B",0x6E53], + ["DA4C",0x6E65], + ["DA4D",0x6E27], + ["DA4E",0x6E78], + ["DA4F",0x6E64], + ["DA50",0x6E77], + ["DA51",0x6E55], + ["DA52",0x6E79], + ["DA53",0x6E52], + ["DA54",0x6E66], + ["DA55",0x6E35], + ["DA56",0x6E36], + ["DA57",0x6E5A], + ["DA58",0x7120], + ["DA59",0x711E], + ["DA5A",0x712F], + ["DA5B",0x70FB], + ["DA5C",0x712E], + ["DA5D",0x7131], + ["DA5E",0x7123], + ["DA5F",0x7125], + ["DA60",0x7122], + ["DA61",0x7132], + ["DA62",0x711F], + ["DA63",0x7128], + ["DA64",0x713A], + ["DA65",0x711B], + ["DA66",0x724B], + ["DA67",0x725A], + ["DA68",0x7288], + ["DA69",0x7289], + ["DA6A",0x7286], + ["DA6B",0x7285], + ["DA6C",0x728B], + ["DA6D",0x7312], + ["DA6E",0x730B], + ["DA6F",0x7330], + ["DA70",0x7322], + ["DA71",0x7331], + ["DA72",0x7333], + ["DA73",0x7327], + ["DA74",0x7332], + ["DA75",0x732D], + ["DA76",0x7326], + ["DA77",0x7323], + ["DA78",0x7335], + ["DA79",0x730C], + ["DA7A",0x742E], + ["DA7B",0x742C], + ["DA7C",0x7430], + ["DA7D",0x742B], + ["DA7E",0x7416], + ["DAA1",0x741A], + ["DAA2",0x7421], + ["DAA3",0x742D], + ["DAA4",0x7431], + ["DAA5",0x7424], + ["DAA6",0x7423], + ["DAA7",0x741D], + ["DAA8",0x7429], + ["DAA9",0x7420], + ["DAAA",0x7432], + ["DAAB",0x74FB], + ["DAAC",0x752F], + ["DAAD",0x756F], + ["DAAE",0x756C], + ["DAAF",0x75E7], + ["DAB0",0x75DA], + ["DAB1",0x75E1], + ["DAB2",0x75E6], + ["DAB3",0x75DD], + ["DAB4",0x75DF], + ["DAB5",0x75E4], + ["DAB6",0x75D7], + ["DAB7",0x7695], + ["DAB8",0x7692], + ["DAB9",0x76DA], + ["DABA",0x7746], + ["DABB",0x7747], + ["DABC",0x7744], + ["DABD",0x774D], + ["DABE",0x7745], + ["DABF",0x774A], + ["DAC0",0x774E], + ["DAC1",0x774B], + ["DAC2",0x774C], + ["DAC3",0x77DE], + ["DAC4",0x77EC], + ["DAC5",0x7860], + ["DAC6",0x7864], + ["DAC7",0x7865], + ["DAC8",0x785C], + ["DAC9",0x786D], + ["DACA",0x7871], + ["DACB",0x786A], + ["DACC",0x786E], + ["DACD",0x7870], + ["DACE",0x7869], + ["DACF",0x7868], + ["DAD0",0x785E], + ["DAD1",0x7862], + ["DAD2",0x7974], + ["DAD3",0x7973], + ["DAD4",0x7972], + ["DAD5",0x7970], + ["DAD6",0x7A02], + ["DAD7",0x7A0A], + ["DAD8",0x7A03], + ["DAD9",0x7A0C], + ["DADA",0x7A04], + ["DADB",0x7A99], + ["DADC",0x7AE6], + ["DADD",0x7AE4], + ["DADE",0x7B4A], + ["DADF",0x7B3B], + ["DAE0",0x7B44], + ["DAE1",0x7B48], + ["DAE2",0x7B4C], + ["DAE3",0x7B4E], + ["DAE4",0x7B40], + ["DAE5",0x7B58], + ["DAE6",0x7B45], + ["DAE7",0x7CA2], + ["DAE8",0x7C9E], + ["DAE9",0x7CA8], + ["DAEA",0x7CA1], + ["DAEB",0x7D58], + ["DAEC",0x7D6F], + ["DAED",0x7D63], + ["DAEE",0x7D53], + ["DAEF",0x7D56], + ["DAF0",0x7D67], + ["DAF1",0x7D6A], + ["DAF2",0x7D4F], + ["DAF3",0x7D6D], + ["DAF4",0x7D5C], + ["DAF5",0x7D6B], + ["DAF6",0x7D52], + ["DAF7",0x7D54], + ["DAF8",0x7D69], + ["DAF9",0x7D51], + ["DAFA",0x7D5F], + ["DAFB",0x7D4E], + ["DAFC",0x7F3E], + ["DAFD",0x7F3F], + ["DAFE",0x7F65], + ["DB40",0x7F66], + ["DB41",0x7FA2], + ["DB42",0x7FA0], + ["DB43",0x7FA1], + ["DB44",0x7FD7], + ["DB45",0x8051], + ["DB46",0x804F], + ["DB47",0x8050], + ["DB48",0x80FE], + ["DB49",0x80D4], + ["DB4A",0x8143], + ["DB4B",0x814A], + ["DB4C",0x8152], + ["DB4D",0x814F], + ["DB4E",0x8147], + ["DB4F",0x813D], + ["DB50",0x814D], + ["DB51",0x813A], + ["DB52",0x81E6], + ["DB53",0x81EE], + ["DB54",0x81F7], + ["DB55",0x81F8], + ["DB56",0x81F9], + ["DB57",0x8204], + ["DB58",0x823C], + ["DB59",0x823D], + ["DB5A",0x823F], + ["DB5B",0x8275], + ["DB5C",0x833B], + ["DB5D",0x83CF], + ["DB5E",0x83F9], + ["DB5F",0x8423], + ["DB60",0x83C0], + ["DB61",0x83E8], + ["DB62",0x8412], + ["DB63",0x83E7], + ["DB64",0x83E4], + ["DB65",0x83FC], + ["DB66",0x83F6], + ["DB67",0x8410], + ["DB68",0x83C6], + ["DB69",0x83C8], + ["DB6A",0x83EB], + ["DB6B",0x83E3], + ["DB6C",0x83BF], + ["DB6D",0x8401], + ["DB6E",0x83DD], + ["DB6F",0x83E5], + ["DB70",0x83D8], + ["DB71",0x83FF], + ["DB72",0x83E1], + ["DB73",0x83CB], + ["DB74",0x83CE], + ["DB75",0x83D6], + ["DB76",0x83F5], + ["DB77",0x83C9], + ["DB78",0x8409], + ["DB79",0x840F], + ["DB7A",0x83DE], + ["DB7B",0x8411], + ["DB7C",0x8406], + ["DB7D",0x83C2], + ["DB7E",0x83F3], + ["DBA1",0x83D5], + ["DBA2",0x83FA], + ["DBA3",0x83C7], + ["DBA4",0x83D1], + ["DBA5",0x83EA], + ["DBA6",0x8413], + ["DBA7",0x83C3], + ["DBA8",0x83EC], + ["DBA9",0x83EE], + ["DBAA",0x83C4], + ["DBAB",0x83FB], + ["DBAC",0x83D7], + ["DBAD",0x83E2], + ["DBAE",0x841B], + ["DBAF",0x83DB], + ["DBB0",0x83FE], + ["DBB1",0x86D8], + ["DBB2",0x86E2], + ["DBB3",0x86E6], + ["DBB4",0x86D3], + ["DBB5",0x86E3], + ["DBB6",0x86DA], + ["DBB7",0x86EA], + ["DBB8",0x86DD], + ["DBB9",0x86EB], + ["DBBA",0x86DC], + ["DBBB",0x86EC], + ["DBBC",0x86E9], + ["DBBD",0x86D7], + ["DBBE",0x86E8], + ["DBBF",0x86D1], + ["DBC0",0x8848], + ["DBC1",0x8856], + ["DBC2",0x8855], + ["DBC3",0x88BA], + ["DBC4",0x88D7], + ["DBC5",0x88B9], + ["DBC6",0x88B8], + ["DBC7",0x88C0], + ["DBC8",0x88BE], + ["DBC9",0x88B6], + ["DBCA",0x88BC], + ["DBCB",0x88B7], + ["DBCC",0x88BD], + ["DBCD",0x88B2], + ["DBCE",0x8901], + ["DBCF",0x88C9], + ["DBD0",0x8995], + ["DBD1",0x8998], + ["DBD2",0x8997], + ["DBD3",0x89DD], + ["DBD4",0x89DA], + ["DBD5",0x89DB], + ["DBD6",0x8A4E], + ["DBD7",0x8A4D], + ["DBD8",0x8A39], + ["DBD9",0x8A59], + ["DBDA",0x8A40], + ["DBDB",0x8A57], + ["DBDC",0x8A58], + ["DBDD",0x8A44], + ["DBDE",0x8A45], + ["DBDF",0x8A52], + ["DBE0",0x8A48], + ["DBE1",0x8A51], + ["DBE2",0x8A4A], + ["DBE3",0x8A4C], + ["DBE4",0x8A4F], + ["DBE5",0x8C5F], + ["DBE6",0x8C81], + ["DBE7",0x8C80], + ["DBE8",0x8CBA], + ["DBE9",0x8CBE], + ["DBEA",0x8CB0], + ["DBEB",0x8CB9], + ["DBEC",0x8CB5], + ["DBED",0x8D84], + ["DBEE",0x8D80], + ["DBEF",0x8D89], + ["DBF0",0x8DD8], + ["DBF1",0x8DD3], + ["DBF2",0x8DCD], + ["DBF3",0x8DC7], + ["DBF4",0x8DD6], + ["DBF5",0x8DDC], + ["DBF6",0x8DCF], + ["DBF7",0x8DD5], + ["DBF8",0x8DD9], + ["DBF9",0x8DC8], + ["DBFA",0x8DD7], + ["DBFB",0x8DC5], + ["DBFC",0x8EEF], + ["DBFD",0x8EF7], + ["DBFE",0x8EFA], + ["DC40",0x8EF9], + ["DC41",0x8EE6], + ["DC42",0x8EEE], + ["DC43",0x8EE5], + ["DC44",0x8EF5], + ["DC45",0x8EE7], + ["DC46",0x8EE8], + ["DC47",0x8EF6], + ["DC48",0x8EEB], + ["DC49",0x8EF1], + ["DC4A",0x8EEC], + ["DC4B",0x8EF4], + ["DC4C",0x8EE9], + ["DC4D",0x902D], + ["DC4E",0x9034], + ["DC4F",0x902F], + ["DC50",0x9106], + ["DC51",0x912C], + ["DC52",0x9104], + ["DC53",0x90FF], + ["DC54",0x90FC], + ["DC55",0x9108], + ["DC56",0x90F9], + ["DC57",0x90FB], + ["DC58",0x9101], + ["DC59",0x9100], + ["DC5A",0x9107], + ["DC5B",0x9105], + ["DC5C",0x9103], + ["DC5D",0x9161], + ["DC5E",0x9164], + ["DC5F",0x915F], + ["DC60",0x9162], + ["DC61",0x9160], + ["DC62",0x9201], + ["DC63",0x920A], + ["DC64",0x9225], + ["DC65",0x9203], + ["DC66",0x921A], + ["DC67",0x9226], + ["DC68",0x920F], + ["DC69",0x920C], + ["DC6A",0x9200], + ["DC6B",0x9212], + ["DC6C",0x91FF], + ["DC6D",0x91FD], + ["DC6E",0x9206], + ["DC6F",0x9204], + ["DC70",0x9227], + ["DC71",0x9202], + ["DC72",0x921C], + ["DC73",0x9224], + ["DC74",0x9219], + ["DC75",0x9217], + ["DC76",0x9205], + ["DC77",0x9216], + ["DC78",0x957B], + ["DC79",0x958D], + ["DC7A",0x958C], + ["DC7B",0x9590], + ["DC7C",0x9687], + ["DC7D",0x967E], + ["DC7E",0x9688], + ["DCA1",0x9689], + ["DCA2",0x9683], + ["DCA3",0x9680], + ["DCA4",0x96C2], + ["DCA5",0x96C8], + ["DCA6",0x96C3], + ["DCA7",0x96F1], + ["DCA8",0x96F0], + ["DCA9",0x976C], + ["DCAA",0x9770], + ["DCAB",0x976E], + ["DCAC",0x9807], + ["DCAD",0x98A9], + ["DCAE",0x98EB], + ["DCAF",0x9CE6], + ["DCB0",0x9EF9], + ["DCB1",0x4E83], + ["DCB2",0x4E84], + ["DCB3",0x4EB6], + ["DCB4",0x50BD], + ["DCB5",0x50BF], + ["DCB6",0x50C6], + ["DCB7",0x50AE], + ["DCB8",0x50C4], + ["DCB9",0x50CA], + ["DCBA",0x50B4], + ["DCBB",0x50C8], + ["DCBC",0x50C2], + ["DCBD",0x50B0], + ["DCBE",0x50C1], + ["DCBF",0x50BA], + ["DCC0",0x50B1], + ["DCC1",0x50CB], + ["DCC2",0x50C9], + ["DCC3",0x50B6], + ["DCC4",0x50B8], + ["DCC5",0x51D7], + ["DCC6",0x527A], + ["DCC7",0x5278], + ["DCC8",0x527B], + ["DCC9",0x527C], + ["DCCA",0x55C3], + ["DCCB",0x55DB], + ["DCCC",0x55CC], + ["DCCD",0x55D0], + ["DCCE",0x55CB], + ["DCCF",0x55CA], + ["DCD0",0x55DD], + ["DCD1",0x55C0], + ["DCD2",0x55D4], + ["DCD3",0x55C4], + ["DCD4",0x55E9], + ["DCD5",0x55BF], + ["DCD6",0x55D2], + ["DCD7",0x558D], + ["DCD8",0x55CF], + ["DCD9",0x55D5], + ["DCDA",0x55E2], + ["DCDB",0x55D6], + ["DCDC",0x55C8], + ["DCDD",0x55F2], + ["DCDE",0x55CD], + ["DCDF",0x55D9], + ["DCE0",0x55C2], + ["DCE1",0x5714], + ["DCE2",0x5853], + ["DCE3",0x5868], + ["DCE4",0x5864], + ["DCE5",0x584F], + ["DCE6",0x584D], + ["DCE7",0x5849], + ["DCE8",0x586F], + ["DCE9",0x5855], + ["DCEA",0x584E], + ["DCEB",0x585D], + ["DCEC",0x5859], + ["DCED",0x5865], + ["DCEE",0x585B], + ["DCEF",0x583D], + ["DCF0",0x5863], + ["DCF1",0x5871], + ["DCF2",0x58FC], + ["DCF3",0x5AC7], + ["DCF4",0x5AC4], + ["DCF5",0x5ACB], + ["DCF6",0x5ABA], + ["DCF7",0x5AB8], + ["DCF8",0x5AB1], + ["DCF9",0x5AB5], + ["DCFA",0x5AB0], + ["DCFB",0x5ABF], + ["DCFC",0x5AC8], + ["DCFD",0x5ABB], + ["DCFE",0x5AC6], + ["DD40",0x5AB7], + ["DD41",0x5AC0], + ["DD42",0x5ACA], + ["DD43",0x5AB4], + ["DD44",0x5AB6], + ["DD45",0x5ACD], + ["DD46",0x5AB9], + ["DD47",0x5A90], + ["DD48",0x5BD6], + ["DD49",0x5BD8], + ["DD4A",0x5BD9], + ["DD4B",0x5C1F], + ["DD4C",0x5C33], + ["DD4D",0x5D71], + ["DD4E",0x5D63], + ["DD4F",0x5D4A], + ["DD50",0x5D65], + ["DD51",0x5D72], + ["DD52",0x5D6C], + ["DD53",0x5D5E], + ["DD54",0x5D68], + ["DD55",0x5D67], + ["DD56",0x5D62], + ["DD57",0x5DF0], + ["DD58",0x5E4F], + ["DD59",0x5E4E], + ["DD5A",0x5E4A], + ["DD5B",0x5E4D], + ["DD5C",0x5E4B], + ["DD5D",0x5EC5], + ["DD5E",0x5ECC], + ["DD5F",0x5EC6], + ["DD60",0x5ECB], + ["DD61",0x5EC7], + ["DD62",0x5F40], + ["DD63",0x5FAF], + ["DD64",0x5FAD], + ["DD65",0x60F7], + ["DD66",0x6149], + ["DD67",0x614A], + ["DD68",0x612B], + ["DD69",0x6145], + ["DD6A",0x6136], + ["DD6B",0x6132], + ["DD6C",0x612E], + ["DD6D",0x6146], + ["DD6E",0x612F], + ["DD6F",0x614F], + ["DD70",0x6129], + ["DD71",0x6140], + ["DD72",0x6220], + ["DD73",0x9168], + ["DD74",0x6223], + ["DD75",0x6225], + ["DD76",0x6224], + ["DD77",0x63C5], + ["DD78",0x63F1], + ["DD79",0x63EB], + ["DD7A",0x6410], + ["DD7B",0x6412], + ["DD7C",0x6409], + ["DD7D",0x6420], + ["DD7E",0x6424], + ["DDA1",0x6433], + ["DDA2",0x6443], + ["DDA3",0x641F], + ["DDA4",0x6415], + ["DDA5",0x6418], + ["DDA6",0x6439], + ["DDA7",0x6437], + ["DDA8",0x6422], + ["DDA9",0x6423], + ["DDAA",0x640C], + ["DDAB",0x6426], + ["DDAC",0x6430], + ["DDAD",0x6428], + ["DDAE",0x6441], + ["DDAF",0x6435], + ["DDB0",0x642F], + ["DDB1",0x640A], + ["DDB2",0x641A], + ["DDB3",0x6440], + ["DDB4",0x6425], + ["DDB5",0x6427], + ["DDB6",0x640B], + ["DDB7",0x63E7], + ["DDB8",0x641B], + ["DDB9",0x642E], + ["DDBA",0x6421], + ["DDBB",0x640E], + ["DDBC",0x656F], + ["DDBD",0x6592], + ["DDBE",0x65D3], + ["DDBF",0x6686], + ["DDC0",0x668C], + ["DDC1",0x6695], + ["DDC2",0x6690], + ["DDC3",0x668B], + ["DDC4",0x668A], + ["DDC5",0x6699], + ["DDC6",0x6694], + ["DDC7",0x6678], + ["DDC8",0x6720], + ["DDC9",0x6966], + ["DDCA",0x695F], + ["DDCB",0x6938], + ["DDCC",0x694E], + ["DDCD",0x6962], + ["DDCE",0x6971], + ["DDCF",0x693F], + ["DDD0",0x6945], + ["DDD1",0x696A], + ["DDD2",0x6939], + ["DDD3",0x6942], + ["DDD4",0x6957], + ["DDD5",0x6959], + ["DDD6",0x697A], + ["DDD7",0x6948], + ["DDD8",0x6949], + ["DDD9",0x6935], + ["DDDA",0x696C], + ["DDDB",0x6933], + ["DDDC",0x693D], + ["DDDD",0x6965], + ["DDDE",0x68F0], + ["DDDF",0x6978], + ["DDE0",0x6934], + ["DDE1",0x6969], + ["DDE2",0x6940], + ["DDE3",0x696F], + ["DDE4",0x6944], + ["DDE5",0x6976], + ["DDE6",0x6958], + ["DDE7",0x6941], + ["DDE8",0x6974], + ["DDE9",0x694C], + ["DDEA",0x693B], + ["DDEB",0x694B], + ["DDEC",0x6937], + ["DDED",0x695C], + ["DDEE",0x694F], + ["DDEF",0x6951], + ["DDF0",0x6932], + ["DDF1",0x6952], + ["DDF2",0x692F], + ["DDF3",0x697B], + ["DDF4",0x693C], + ["DDF5",0x6B46], + ["DDF6",0x6B45], + ["DDF7",0x6B43], + ["DDF8",0x6B42], + ["DDF9",0x6B48], + ["DDFA",0x6B41], + ["DDFB",0x6B9B], + ["DDFC",0xFA0D], + ["DDFD",0x6BFB], + ["DDFE",0x6BFC], + ["DE40",0x6BF9], + ["DE41",0x6BF7], + ["DE42",0x6BF8], + ["DE43",0x6E9B], + ["DE44",0x6ED6], + ["DE45",0x6EC8], + ["DE46",0x6E8F], + ["DE47",0x6EC0], + ["DE48",0x6E9F], + ["DE49",0x6E93], + ["DE4A",0x6E94], + ["DE4B",0x6EA0], + ["DE4C",0x6EB1], + ["DE4D",0x6EB9], + ["DE4E",0x6EC6], + ["DE4F",0x6ED2], + ["DE50",0x6EBD], + ["DE51",0x6EC1], + ["DE52",0x6E9E], + ["DE53",0x6EC9], + ["DE54",0x6EB7], + ["DE55",0x6EB0], + ["DE56",0x6ECD], + ["DE57",0x6EA6], + ["DE58",0x6ECF], + ["DE59",0x6EB2], + ["DE5A",0x6EBE], + ["DE5B",0x6EC3], + ["DE5C",0x6EDC], + ["DE5D",0x6ED8], + ["DE5E",0x6E99], + ["DE5F",0x6E92], + ["DE60",0x6E8E], + ["DE61",0x6E8D], + ["DE62",0x6EA4], + ["DE63",0x6EA1], + ["DE64",0x6EBF], + ["DE65",0x6EB3], + ["DE66",0x6ED0], + ["DE67",0x6ECA], + ["DE68",0x6E97], + ["DE69",0x6EAE], + ["DE6A",0x6EA3], + ["DE6B",0x7147], + ["DE6C",0x7154], + ["DE6D",0x7152], + ["DE6E",0x7163], + ["DE6F",0x7160], + ["DE70",0x7141], + ["DE71",0x715D], + ["DE72",0x7162], + ["DE73",0x7172], + ["DE74",0x7178], + ["DE75",0x716A], + ["DE76",0x7161], + ["DE77",0x7142], + ["DE78",0x7158], + ["DE79",0x7143], + ["DE7A",0x714B], + ["DE7B",0x7170], + ["DE7C",0x715F], + ["DE7D",0x7150], + ["DE7E",0x7153], + ["DEA1",0x7144], + ["DEA2",0x714D], + ["DEA3",0x715A], + ["DEA4",0x724F], + ["DEA5",0x728D], + ["DEA6",0x728C], + ["DEA7",0x7291], + ["DEA8",0x7290], + ["DEA9",0x728E], + ["DEAA",0x733C], + ["DEAB",0x7342], + ["DEAC",0x733B], + ["DEAD",0x733A], + ["DEAE",0x7340], + ["DEAF",0x734A], + ["DEB0",0x7349], + ["DEB1",0x7444], + ["DEB2",0x744A], + ["DEB3",0x744B], + ["DEB4",0x7452], + ["DEB5",0x7451], + ["DEB6",0x7457], + ["DEB7",0x7440], + ["DEB8",0x744F], + ["DEB9",0x7450], + ["DEBA",0x744E], + ["DEBB",0x7442], + ["DEBC",0x7446], + ["DEBD",0x744D], + ["DEBE",0x7454], + ["DEBF",0x74E1], + ["DEC0",0x74FF], + ["DEC1",0x74FE], + ["DEC2",0x74FD], + ["DEC3",0x751D], + ["DEC4",0x7579], + ["DEC5",0x7577], + ["DEC6",0x6983], + ["DEC7",0x75EF], + ["DEC8",0x760F], + ["DEC9",0x7603], + ["DECA",0x75F7], + ["DECB",0x75FE], + ["DECC",0x75FC], + ["DECD",0x75F9], + ["DECE",0x75F8], + ["DECF",0x7610], + ["DED0",0x75FB], + ["DED1",0x75F6], + ["DED2",0x75ED], + ["DED3",0x75F5], + ["DED4",0x75FD], + ["DED5",0x7699], + ["DED6",0x76B5], + ["DED7",0x76DD], + ["DED8",0x7755], + ["DED9",0x775F], + ["DEDA",0x7760], + ["DEDB",0x7752], + ["DEDC",0x7756], + ["DEDD",0x775A], + ["DEDE",0x7769], + ["DEDF",0x7767], + ["DEE0",0x7754], + ["DEE1",0x7759], + ["DEE2",0x776D], + ["DEE3",0x77E0], + ["DEE4",0x7887], + ["DEE5",0x789A], + ["DEE6",0x7894], + ["DEE7",0x788F], + ["DEE8",0x7884], + ["DEE9",0x7895], + ["DEEA",0x7885], + ["DEEB",0x7886], + ["DEEC",0x78A1], + ["DEED",0x7883], + ["DEEE",0x7879], + ["DEEF",0x7899], + ["DEF0",0x7880], + ["DEF1",0x7896], + ["DEF2",0x787B], + ["DEF3",0x797C], + ["DEF4",0x7982], + ["DEF5",0x797D], + ["DEF6",0x7979], + ["DEF7",0x7A11], + ["DEF8",0x7A18], + ["DEF9",0x7A19], + ["DEFA",0x7A12], + ["DEFB",0x7A17], + ["DEFC",0x7A15], + ["DEFD",0x7A22], + ["DEFE",0x7A13], + ["DF40",0x7A1B], + ["DF41",0x7A10], + ["DF42",0x7AA3], + ["DF43",0x7AA2], + ["DF44",0x7A9E], + ["DF45",0x7AEB], + ["DF46",0x7B66], + ["DF47",0x7B64], + ["DF48",0x7B6D], + ["DF49",0x7B74], + ["DF4A",0x7B69], + ["DF4B",0x7B72], + ["DF4C",0x7B65], + ["DF4D",0x7B73], + ["DF4E",0x7B71], + ["DF4F",0x7B70], + ["DF50",0x7B61], + ["DF51",0x7B78], + ["DF52",0x7B76], + ["DF53",0x7B63], + ["DF54",0x7CB2], + ["DF55",0x7CB4], + ["DF56",0x7CAF], + ["DF57",0x7D88], + ["DF58",0x7D86], + ["DF59",0x7D80], + ["DF5A",0x7D8D], + ["DF5B",0x7D7F], + ["DF5C",0x7D85], + ["DF5D",0x7D7A], + ["DF5E",0x7D8E], + ["DF5F",0x7D7B], + ["DF60",0x7D83], + ["DF61",0x7D7C], + ["DF62",0x7D8C], + ["DF63",0x7D94], + ["DF64",0x7D84], + ["DF65",0x7D7D], + ["DF66",0x7D92], + ["DF67",0x7F6D], + ["DF68",0x7F6B], + ["DF69",0x7F67], + ["DF6A",0x7F68], + ["DF6B",0x7F6C], + ["DF6C",0x7FA6], + ["DF6D",0x7FA5], + ["DF6E",0x7FA7], + ["DF6F",0x7FDB], + ["DF70",0x7FDC], + ["DF71",0x8021], + ["DF72",0x8164], + ["DF73",0x8160], + ["DF74",0x8177], + ["DF75",0x815C], + ["DF76",0x8169], + ["DF77",0x815B], + ["DF78",0x8162], + ["DF79",0x8172], + ["DF7A",0x6721], + ["DF7B",0x815E], + ["DF7C",0x8176], + ["DF7D",0x8167], + ["DF7E",0x816F], + ["DFA1",0x8144], + ["DFA2",0x8161], + ["DFA3",0x821D], + ["DFA4",0x8249], + ["DFA5",0x8244], + ["DFA6",0x8240], + ["DFA7",0x8242], + ["DFA8",0x8245], + ["DFA9",0x84F1], + ["DFAA",0x843F], + ["DFAB",0x8456], + ["DFAC",0x8476], + ["DFAD",0x8479], + ["DFAE",0x848F], + ["DFAF",0x848D], + ["DFB0",0x8465], + ["DFB1",0x8451], + ["DFB2",0x8440], + ["DFB3",0x8486], + ["DFB4",0x8467], + ["DFB5",0x8430], + ["DFB6",0x844D], + ["DFB7",0x847D], + ["DFB8",0x845A], + ["DFB9",0x8459], + ["DFBA",0x8474], + ["DFBB",0x8473], + ["DFBC",0x845D], + ["DFBD",0x8507], + ["DFBE",0x845E], + ["DFBF",0x8437], + ["DFC0",0x843A], + ["DFC1",0x8434], + ["DFC2",0x847A], + ["DFC3",0x8443], + ["DFC4",0x8478], + ["DFC5",0x8432], + ["DFC6",0x8445], + ["DFC7",0x8429], + ["DFC8",0x83D9], + ["DFC9",0x844B], + ["DFCA",0x842F], + ["DFCB",0x8442], + ["DFCC",0x842D], + ["DFCD",0x845F], + ["DFCE",0x8470], + ["DFCF",0x8439], + ["DFD0",0x844E], + ["DFD1",0x844C], + ["DFD2",0x8452], + ["DFD3",0x846F], + ["DFD4",0x84C5], + ["DFD5",0x848E], + ["DFD6",0x843B], + ["DFD7",0x8447], + ["DFD8",0x8436], + ["DFD9",0x8433], + ["DFDA",0x8468], + ["DFDB",0x847E], + ["DFDC",0x8444], + ["DFDD",0x842B], + ["DFDE",0x8460], + ["DFDF",0x8454], + ["DFE0",0x846E], + ["DFE1",0x8450], + ["DFE2",0x870B], + ["DFE3",0x8704], + ["DFE4",0x86F7], + ["DFE5",0x870C], + ["DFE6",0x86FA], + ["DFE7",0x86D6], + ["DFE8",0x86F5], + ["DFE9",0x874D], + ["DFEA",0x86F8], + ["DFEB",0x870E], + ["DFEC",0x8709], + ["DFED",0x8701], + ["DFEE",0x86F6], + ["DFEF",0x870D], + ["DFF0",0x8705], + ["DFF1",0x88D6], + ["DFF2",0x88CB], + ["DFF3",0x88CD], + ["DFF4",0x88CE], + ["DFF5",0x88DE], + ["DFF6",0x88DB], + ["DFF7",0x88DA], + ["DFF8",0x88CC], + ["DFF9",0x88D0], + ["DFFA",0x8985], + ["DFFB",0x899B], + ["DFFC",0x89DF], + ["DFFD",0x89E5], + ["DFFE",0x89E4], + ["E040",0x89E1], + ["E041",0x89E0], + ["E042",0x89E2], + ["E043",0x89DC], + ["E044",0x89E6], + ["E045",0x8A76], + ["E046",0x8A86], + ["E047",0x8A7F], + ["E048",0x8A61], + ["E049",0x8A3F], + ["E04A",0x8A77], + ["E04B",0x8A82], + ["E04C",0x8A84], + ["E04D",0x8A75], + ["E04E",0x8A83], + ["E04F",0x8A81], + ["E050",0x8A74], + ["E051",0x8A7A], + ["E052",0x8C3C], + ["E053",0x8C4B], + ["E054",0x8C4A], + ["E055",0x8C65], + ["E056",0x8C64], + ["E057",0x8C66], + ["E058",0x8C86], + ["E059",0x8C84], + ["E05A",0x8C85], + ["E05B",0x8CCC], + ["E05C",0x8D68], + ["E05D",0x8D69], + ["E05E",0x8D91], + ["E05F",0x8D8C], + ["E060",0x8D8E], + ["E061",0x8D8F], + ["E062",0x8D8D], + ["E063",0x8D93], + ["E064",0x8D94], + ["E065",0x8D90], + ["E066",0x8D92], + ["E067",0x8DF0], + ["E068",0x8DE0], + ["E069",0x8DEC], + ["E06A",0x8DF1], + ["E06B",0x8DEE], + ["E06C",0x8DD0], + ["E06D",0x8DE9], + ["E06E",0x8DE3], + ["E06F",0x8DE2], + ["E070",0x8DE7], + ["E071",0x8DF2], + ["E072",0x8DEB], + ["E073",0x8DF4], + ["E074",0x8F06], + ["E075",0x8EFF], + ["E076",0x8F01], + ["E077",0x8F00], + ["E078",0x8F05], + ["E079",0x8F07], + ["E07A",0x8F08], + ["E07B",0x8F02], + ["E07C",0x8F0B], + ["E07D",0x9052], + ["E07E",0x903F], + ["E0A1",0x9044], + ["E0A2",0x9049], + ["E0A3",0x903D], + ["E0A4",0x9110], + ["E0A5",0x910D], + ["E0A6",0x910F], + ["E0A7",0x9111], + ["E0A8",0x9116], + ["E0A9",0x9114], + ["E0AA",0x910B], + ["E0AB",0x910E], + ["E0AC",0x916E], + ["E0AD",0x916F], + ["E0AE",0x9248], + ["E0AF",0x9252], + ["E0B0",0x9230], + ["E0B1",0x923A], + ["E0B2",0x9266], + ["E0B3",0x9233], + ["E0B4",0x9265], + ["E0B5",0x925E], + ["E0B6",0x9283], + ["E0B7",0x922E], + ["E0B8",0x924A], + ["E0B9",0x9246], + ["E0BA",0x926D], + ["E0BB",0x926C], + ["E0BC",0x924F], + ["E0BD",0x9260], + ["E0BE",0x9267], + ["E0BF",0x926F], + ["E0C0",0x9236], + ["E0C1",0x9261], + ["E0C2",0x9270], + ["E0C3",0x9231], + ["E0C4",0x9254], + ["E0C5",0x9263], + ["E0C6",0x9250], + ["E0C7",0x9272], + ["E0C8",0x924E], + ["E0C9",0x9253], + ["E0CA",0x924C], + ["E0CB",0x9256], + ["E0CC",0x9232], + ["E0CD",0x959F], + ["E0CE",0x959C], + ["E0CF",0x959E], + ["E0D0",0x959B], + ["E0D1",0x9692], + ["E0D2",0x9693], + ["E0D3",0x9691], + ["E0D4",0x9697], + ["E0D5",0x96CE], + ["E0D6",0x96FA], + ["E0D7",0x96FD], + ["E0D8",0x96F8], + ["E0D9",0x96F5], + ["E0DA",0x9773], + ["E0DB",0x9777], + ["E0DC",0x9778], + ["E0DD",0x9772], + ["E0DE",0x980F], + ["E0DF",0x980D], + ["E0E0",0x980E], + ["E0E1",0x98AC], + ["E0E2",0x98F6], + ["E0E3",0x98F9], + ["E0E4",0x99AF], + ["E0E5",0x99B2], + ["E0E6",0x99B0], + ["E0E7",0x99B5], + ["E0E8",0x9AAD], + ["E0E9",0x9AAB], + ["E0EA",0x9B5B], + ["E0EB",0x9CEA], + ["E0EC",0x9CED], + ["E0ED",0x9CE7], + ["E0EE",0x9E80], + ["E0EF",0x9EFD], + ["E0F0",0x50E6], + ["E0F1",0x50D4], + ["E0F2",0x50D7], + ["E0F3",0x50E8], + ["E0F4",0x50F3], + ["E0F5",0x50DB], + ["E0F6",0x50EA], + ["E0F7",0x50DD], + ["E0F8",0x50E4], + ["E0F9",0x50D3], + ["E0FA",0x50EC], + ["E0FB",0x50F0], + ["E0FC",0x50EF], + ["E0FD",0x50E3], + ["E0FE",0x50E0], + ["E140",0x51D8], + ["E141",0x5280], + ["E142",0x5281], + ["E143",0x52E9], + ["E144",0x52EB], + ["E145",0x5330], + ["E146",0x53AC], + ["E147",0x5627], + ["E148",0x5615], + ["E149",0x560C], + ["E14A",0x5612], + ["E14B",0x55FC], + ["E14C",0x560F], + ["E14D",0x561C], + ["E14E",0x5601], + ["E14F",0x5613], + ["E150",0x5602], + ["E151",0x55FA], + ["E152",0x561D], + ["E153",0x5604], + ["E154",0x55FF], + ["E155",0x55F9], + ["E156",0x5889], + ["E157",0x587C], + ["E158",0x5890], + ["E159",0x5898], + ["E15A",0x5886], + ["E15B",0x5881], + ["E15C",0x587F], + ["E15D",0x5874], + ["E15E",0x588B], + ["E15F",0x587A], + ["E160",0x5887], + ["E161",0x5891], + ["E162",0x588E], + ["E163",0x5876], + ["E164",0x5882], + ["E165",0x5888], + ["E166",0x587B], + ["E167",0x5894], + ["E168",0x588F], + ["E169",0x58FE], + ["E16A",0x596B], + ["E16B",0x5ADC], + ["E16C",0x5AEE], + ["E16D",0x5AE5], + ["E16E",0x5AD5], + ["E16F",0x5AEA], + ["E170",0x5ADA], + ["E171",0x5AED], + ["E172",0x5AEB], + ["E173",0x5AF3], + ["E174",0x5AE2], + ["E175",0x5AE0], + ["E176",0x5ADB], + ["E177",0x5AEC], + ["E178",0x5ADE], + ["E179",0x5ADD], + ["E17A",0x5AD9], + ["E17B",0x5AE8], + ["E17C",0x5ADF], + ["E17D",0x5B77], + ["E17E",0x5BE0], + ["E1A1",0x5BE3], + ["E1A2",0x5C63], + ["E1A3",0x5D82], + ["E1A4",0x5D80], + ["E1A5",0x5D7D], + ["E1A6",0x5D86], + ["E1A7",0x5D7A], + ["E1A8",0x5D81], + ["E1A9",0x5D77], + ["E1AA",0x5D8A], + ["E1AB",0x5D89], + ["E1AC",0x5D88], + ["E1AD",0x5D7E], + ["E1AE",0x5D7C], + ["E1AF",0x5D8D], + ["E1B0",0x5D79], + ["E1B1",0x5D7F], + ["E1B2",0x5E58], + ["E1B3",0x5E59], + ["E1B4",0x5E53], + ["E1B5",0x5ED8], + ["E1B6",0x5ED1], + ["E1B7",0x5ED7], + ["E1B8",0x5ECE], + ["E1B9",0x5EDC], + ["E1BA",0x5ED5], + ["E1BB",0x5ED9], + ["E1BC",0x5ED2], + ["E1BD",0x5ED4], + ["E1BE",0x5F44], + ["E1BF",0x5F43], + ["E1C0",0x5F6F], + ["E1C1",0x5FB6], + ["E1C2",0x612C], + ["E1C3",0x6128], + ["E1C4",0x6141], + ["E1C5",0x615E], + ["E1C6",0x6171], + ["E1C7",0x6173], + ["E1C8",0x6152], + ["E1C9",0x6153], + ["E1CA",0x6172], + ["E1CB",0x616C], + ["E1CC",0x6180], + ["E1CD",0x6174], + ["E1CE",0x6154], + ["E1CF",0x617A], + ["E1D0",0x615B], + ["E1D1",0x6165], + ["E1D2",0x613B], + ["E1D3",0x616A], + ["E1D4",0x6161], + ["E1D5",0x6156], + ["E1D6",0x6229], + ["E1D7",0x6227], + ["E1D8",0x622B], + ["E1D9",0x642B], + ["E1DA",0x644D], + ["E1DB",0x645B], + ["E1DC",0x645D], + ["E1DD",0x6474], + ["E1DE",0x6476], + ["E1DF",0x6472], + ["E1E0",0x6473], + ["E1E1",0x647D], + ["E1E2",0x6475], + ["E1E3",0x6466], + ["E1E4",0x64A6], + ["E1E5",0x644E], + ["E1E6",0x6482], + ["E1E7",0x645E], + ["E1E8",0x645C], + ["E1E9",0x644B], + ["E1EA",0x6453], + ["E1EB",0x6460], + ["E1EC",0x6450], + ["E1ED",0x647F], + ["E1EE",0x643F], + ["E1EF",0x646C], + ["E1F0",0x646B], + ["E1F1",0x6459], + ["E1F2",0x6465], + ["E1F3",0x6477], + ["E1F4",0x6573], + ["E1F5",0x65A0], + ["E1F6",0x66A1], + ["E1F7",0x66A0], + ["E1F8",0x669F], + ["E1F9",0x6705], + ["E1FA",0x6704], + ["E1FB",0x6722], + ["E1FC",0x69B1], + ["E1FD",0x69B6], + ["E1FE",0x69C9], + ["E240",0x69A0], + ["E241",0x69CE], + ["E242",0x6996], + ["E243",0x69B0], + ["E244",0x69AC], + ["E245",0x69BC], + ["E246",0x6991], + ["E247",0x6999], + ["E248",0x698E], + ["E249",0x69A7], + ["E24A",0x698D], + ["E24B",0x69A9], + ["E24C",0x69BE], + ["E24D",0x69AF], + ["E24E",0x69BF], + ["E24F",0x69C4], + ["E250",0x69BD], + ["E251",0x69A4], + ["E252",0x69D4], + ["E253",0x69B9], + ["E254",0x69CA], + ["E255",0x699A], + ["E256",0x69CF], + ["E257",0x69B3], + ["E258",0x6993], + ["E259",0x69AA], + ["E25A",0x69A1], + ["E25B",0x699E], + ["E25C",0x69D9], + ["E25D",0x6997], + ["E25E",0x6990], + ["E25F",0x69C2], + ["E260",0x69B5], + ["E261",0x69A5], + ["E262",0x69C6], + ["E263",0x6B4A], + ["E264",0x6B4D], + ["E265",0x6B4B], + ["E266",0x6B9E], + ["E267",0x6B9F], + ["E268",0x6BA0], + ["E269",0x6BC3], + ["E26A",0x6BC4], + ["E26B",0x6BFE], + ["E26C",0x6ECE], + ["E26D",0x6EF5], + ["E26E",0x6EF1], + ["E26F",0x6F03], + ["E270",0x6F25], + ["E271",0x6EF8], + ["E272",0x6F37], + ["E273",0x6EFB], + ["E274",0x6F2E], + ["E275",0x6F09], + ["E276",0x6F4E], + ["E277",0x6F19], + ["E278",0x6F1A], + ["E279",0x6F27], + ["E27A",0x6F18], + ["E27B",0x6F3B], + ["E27C",0x6F12], + ["E27D",0x6EED], + ["E27E",0x6F0A], + ["E2A1",0x6F36], + ["E2A2",0x6F73], + ["E2A3",0x6EF9], + ["E2A4",0x6EEE], + ["E2A5",0x6F2D], + ["E2A6",0x6F40], + ["E2A7",0x6F30], + ["E2A8",0x6F3C], + ["E2A9",0x6F35], + ["E2AA",0x6EEB], + ["E2AB",0x6F07], + ["E2AC",0x6F0E], + ["E2AD",0x6F43], + ["E2AE",0x6F05], + ["E2AF",0x6EFD], + ["E2B0",0x6EF6], + ["E2B1",0x6F39], + ["E2B2",0x6F1C], + ["E2B3",0x6EFC], + ["E2B4",0x6F3A], + ["E2B5",0x6F1F], + ["E2B6",0x6F0D], + ["E2B7",0x6F1E], + ["E2B8",0x6F08], + ["E2B9",0x6F21], + ["E2BA",0x7187], + ["E2BB",0x7190], + ["E2BC",0x7189], + ["E2BD",0x7180], + ["E2BE",0x7185], + ["E2BF",0x7182], + ["E2C0",0x718F], + ["E2C1",0x717B], + ["E2C2",0x7186], + ["E2C3",0x7181], + ["E2C4",0x7197], + ["E2C5",0x7244], + ["E2C6",0x7253], + ["E2C7",0x7297], + ["E2C8",0x7295], + ["E2C9",0x7293], + ["E2CA",0x7343], + ["E2CB",0x734D], + ["E2CC",0x7351], + ["E2CD",0x734C], + ["E2CE",0x7462], + ["E2CF",0x7473], + ["E2D0",0x7471], + ["E2D1",0x7475], + ["E2D2",0x7472], + ["E2D3",0x7467], + ["E2D4",0x746E], + ["E2D5",0x7500], + ["E2D6",0x7502], + ["E2D7",0x7503], + ["E2D8",0x757D], + ["E2D9",0x7590], + ["E2DA",0x7616], + ["E2DB",0x7608], + ["E2DC",0x760C], + ["E2DD",0x7615], + ["E2DE",0x7611], + ["E2DF",0x760A], + ["E2E0",0x7614], + ["E2E1",0x76B8], + ["E2E2",0x7781], + ["E2E3",0x777C], + ["E2E4",0x7785], + ["E2E5",0x7782], + ["E2E6",0x776E], + ["E2E7",0x7780], + ["E2E8",0x776F], + ["E2E9",0x777E], + ["E2EA",0x7783], + ["E2EB",0x78B2], + ["E2EC",0x78AA], + ["E2ED",0x78B4], + ["E2EE",0x78AD], + ["E2EF",0x78A8], + ["E2F0",0x787E], + ["E2F1",0x78AB], + ["E2F2",0x789E], + ["E2F3",0x78A5], + ["E2F4",0x78A0], + ["E2F5",0x78AC], + ["E2F6",0x78A2], + ["E2F7",0x78A4], + ["E2F8",0x7998], + ["E2F9",0x798A], + ["E2FA",0x798B], + ["E2FB",0x7996], + ["E2FC",0x7995], + ["E2FD",0x7994], + ["E2FE",0x7993], + ["E340",0x7997], + ["E341",0x7988], + ["E342",0x7992], + ["E343",0x7990], + ["E344",0x7A2B], + ["E345",0x7A4A], + ["E346",0x7A30], + ["E347",0x7A2F], + ["E348",0x7A28], + ["E349",0x7A26], + ["E34A",0x7AA8], + ["E34B",0x7AAB], + ["E34C",0x7AAC], + ["E34D",0x7AEE], + ["E34E",0x7B88], + ["E34F",0x7B9C], + ["E350",0x7B8A], + ["E351",0x7B91], + ["E352",0x7B90], + ["E353",0x7B96], + ["E354",0x7B8D], + ["E355",0x7B8C], + ["E356",0x7B9B], + ["E357",0x7B8E], + ["E358",0x7B85], + ["E359",0x7B98], + ["E35A",0x5284], + ["E35B",0x7B99], + ["E35C",0x7BA4], + ["E35D",0x7B82], + ["E35E",0x7CBB], + ["E35F",0x7CBF], + ["E360",0x7CBC], + ["E361",0x7CBA], + ["E362",0x7DA7], + ["E363",0x7DB7], + ["E364",0x7DC2], + ["E365",0x7DA3], + ["E366",0x7DAA], + ["E367",0x7DC1], + ["E368",0x7DC0], + ["E369",0x7DC5], + ["E36A",0x7D9D], + ["E36B",0x7DCE], + ["E36C",0x7DC4], + ["E36D",0x7DC6], + ["E36E",0x7DCB], + ["E36F",0x7DCC], + ["E370",0x7DAF], + ["E371",0x7DB9], + ["E372",0x7D96], + ["E373",0x7DBC], + ["E374",0x7D9F], + ["E375",0x7DA6], + ["E376",0x7DAE], + ["E377",0x7DA9], + ["E378",0x7DA1], + ["E379",0x7DC9], + ["E37A",0x7F73], + ["E37B",0x7FE2], + ["E37C",0x7FE3], + ["E37D",0x7FE5], + ["E37E",0x7FDE], + ["E3A1",0x8024], + ["E3A2",0x805D], + ["E3A3",0x805C], + ["E3A4",0x8189], + ["E3A5",0x8186], + ["E3A6",0x8183], + ["E3A7",0x8187], + ["E3A8",0x818D], + ["E3A9",0x818C], + ["E3AA",0x818B], + ["E3AB",0x8215], + ["E3AC",0x8497], + ["E3AD",0x84A4], + ["E3AE",0x84A1], + ["E3AF",0x849F], + ["E3B0",0x84BA], + ["E3B1",0x84CE], + ["E3B2",0x84C2], + ["E3B3",0x84AC], + ["E3B4",0x84AE], + ["E3B5",0x84AB], + ["E3B6",0x84B9], + ["E3B7",0x84B4], + ["E3B8",0x84C1], + ["E3B9",0x84CD], + ["E3BA",0x84AA], + ["E3BB",0x849A], + ["E3BC",0x84B1], + ["E3BD",0x84D0], + ["E3BE",0x849D], + ["E3BF",0x84A7], + ["E3C0",0x84BB], + ["E3C1",0x84A2], + ["E3C2",0x8494], + ["E3C3",0x84C7], + ["E3C4",0x84CC], + ["E3C5",0x849B], + ["E3C6",0x84A9], + ["E3C7",0x84AF], + ["E3C8",0x84A8], + ["E3C9",0x84D6], + ["E3CA",0x8498], + ["E3CB",0x84B6], + ["E3CC",0x84CF], + ["E3CD",0x84A0], + ["E3CE",0x84D7], + ["E3CF",0x84D4], + ["E3D0",0x84D2], + ["E3D1",0x84DB], + ["E3D2",0x84B0], + ["E3D3",0x8491], + ["E3D4",0x8661], + ["E3D5",0x8733], + ["E3D6",0x8723], + ["E3D7",0x8728], + ["E3D8",0x876B], + ["E3D9",0x8740], + ["E3DA",0x872E], + ["E3DB",0x871E], + ["E3DC",0x8721], + ["E3DD",0x8719], + ["E3DE",0x871B], + ["E3DF",0x8743], + ["E3E0",0x872C], + ["E3E1",0x8741], + ["E3E2",0x873E], + ["E3E3",0x8746], + ["E3E4",0x8720], + ["E3E5",0x8732], + ["E3E6",0x872A], + ["E3E7",0x872D], + ["E3E8",0x873C], + ["E3E9",0x8712], + ["E3EA",0x873A], + ["E3EB",0x8731], + ["E3EC",0x8735], + ["E3ED",0x8742], + ["E3EE",0x8726], + ["E3EF",0x8727], + ["E3F0",0x8738], + ["E3F1",0x8724], + ["E3F2",0x871A], + ["E3F3",0x8730], + ["E3F4",0x8711], + ["E3F5",0x88F7], + ["E3F6",0x88E7], + ["E3F7",0x88F1], + ["E3F8",0x88F2], + ["E3F9",0x88FA], + ["E3FA",0x88FE], + ["E3FB",0x88EE], + ["E3FC",0x88FC], + ["E3FD",0x88F6], + ["E3FE",0x88FB], + ["E440",0x88F0], + ["E441",0x88EC], + ["E442",0x88EB], + ["E443",0x899D], + ["E444",0x89A1], + ["E445",0x899F], + ["E446",0x899E], + ["E447",0x89E9], + ["E448",0x89EB], + ["E449",0x89E8], + ["E44A",0x8AAB], + ["E44B",0x8A99], + ["E44C",0x8A8B], + ["E44D",0x8A92], + ["E44E",0x8A8F], + ["E44F",0x8A96], + ["E450",0x8C3D], + ["E451",0x8C68], + ["E452",0x8C69], + ["E453",0x8CD5], + ["E454",0x8CCF], + ["E455",0x8CD7], + ["E456",0x8D96], + ["E457",0x8E09], + ["E458",0x8E02], + ["E459",0x8DFF], + ["E45A",0x8E0D], + ["E45B",0x8DFD], + ["E45C",0x8E0A], + ["E45D",0x8E03], + ["E45E",0x8E07], + ["E45F",0x8E06], + ["E460",0x8E05], + ["E461",0x8DFE], + ["E462",0x8E00], + ["E463",0x8E04], + ["E464",0x8F10], + ["E465",0x8F11], + ["E466",0x8F0E], + ["E467",0x8F0D], + ["E468",0x9123], + ["E469",0x911C], + ["E46A",0x9120], + ["E46B",0x9122], + ["E46C",0x911F], + ["E46D",0x911D], + ["E46E",0x911A], + ["E46F",0x9124], + ["E470",0x9121], + ["E471",0x911B], + ["E472",0x917A], + ["E473",0x9172], + ["E474",0x9179], + ["E475",0x9173], + ["E476",0x92A5], + ["E477",0x92A4], + ["E478",0x9276], + ["E479",0x929B], + ["E47A",0x927A], + ["E47B",0x92A0], + ["E47C",0x9294], + ["E47D",0x92AA], + ["E47E",0x928D], + ["E4A1",0x92A6], + ["E4A2",0x929A], + ["E4A3",0x92AB], + ["E4A4",0x9279], + ["E4A5",0x9297], + ["E4A6",0x927F], + ["E4A7",0x92A3], + ["E4A8",0x92EE], + ["E4A9",0x928E], + ["E4AA",0x9282], + ["E4AB",0x9295], + ["E4AC",0x92A2], + ["E4AD",0x927D], + ["E4AE",0x9288], + ["E4AF",0x92A1], + ["E4B0",0x928A], + ["E4B1",0x9286], + ["E4B2",0x928C], + ["E4B3",0x9299], + ["E4B4",0x92A7], + ["E4B5",0x927E], + ["E4B6",0x9287], + ["E4B7",0x92A9], + ["E4B8",0x929D], + ["E4B9",0x928B], + ["E4BA",0x922D], + ["E4BB",0x969E], + ["E4BC",0x96A1], + ["E4BD",0x96FF], + ["E4BE",0x9758], + ["E4BF",0x977D], + ["E4C0",0x977A], + ["E4C1",0x977E], + ["E4C2",0x9783], + ["E4C3",0x9780], + ["E4C4",0x9782], + ["E4C5",0x977B], + ["E4C6",0x9784], + ["E4C7",0x9781], + ["E4C8",0x977F], + ["E4C9",0x97CE], + ["E4CA",0x97CD], + ["E4CB",0x9816], + ["E4CC",0x98AD], + ["E4CD",0x98AE], + ["E4CE",0x9902], + ["E4CF",0x9900], + ["E4D0",0x9907], + ["E4D1",0x999D], + ["E4D2",0x999C], + ["E4D3",0x99C3], + ["E4D4",0x99B9], + ["E4D5",0x99BB], + ["E4D6",0x99BA], + ["E4D7",0x99C2], + ["E4D8",0x99BD], + ["E4D9",0x99C7], + ["E4DA",0x9AB1], + ["E4DB",0x9AE3], + ["E4DC",0x9AE7], + ["E4DD",0x9B3E], + ["E4DE",0x9B3F], + ["E4DF",0x9B60], + ["E4E0",0x9B61], + ["E4E1",0x9B5F], + ["E4E2",0x9CF1], + ["E4E3",0x9CF2], + ["E4E4",0x9CF5], + ["E4E5",0x9EA7], + ["E4E6",0x50FF], + ["E4E7",0x5103], + ["E4E8",0x5130], + ["E4E9",0x50F8], + ["E4EA",0x5106], + ["E4EB",0x5107], + ["E4EC",0x50F6], + ["E4ED",0x50FE], + ["E4EE",0x510B], + ["E4EF",0x510C], + ["E4F0",0x50FD], + ["E4F1",0x510A], + ["E4F2",0x528B], + ["E4F3",0x528C], + ["E4F4",0x52F1], + ["E4F5",0x52EF], + ["E4F6",0x5648], + ["E4F7",0x5642], + ["E4F8",0x564C], + ["E4F9",0x5635], + ["E4FA",0x5641], + ["E4FB",0x564A], + ["E4FC",0x5649], + ["E4FD",0x5646], + ["E4FE",0x5658], + ["E540",0x565A], + ["E541",0x5640], + ["E542",0x5633], + ["E543",0x563D], + ["E544",0x562C], + ["E545",0x563E], + ["E546",0x5638], + ["E547",0x562A], + ["E548",0x563A], + ["E549",0x571A], + ["E54A",0x58AB], + ["E54B",0x589D], + ["E54C",0x58B1], + ["E54D",0x58A0], + ["E54E",0x58A3], + ["E54F",0x58AF], + ["E550",0x58AC], + ["E551",0x58A5], + ["E552",0x58A1], + ["E553",0x58FF], + ["E554",0x5AFF], + ["E555",0x5AF4], + ["E556",0x5AFD], + ["E557",0x5AF7], + ["E558",0x5AF6], + ["E559",0x5B03], + ["E55A",0x5AF8], + ["E55B",0x5B02], + ["E55C",0x5AF9], + ["E55D",0x5B01], + ["E55E",0x5B07], + ["E55F",0x5B05], + ["E560",0x5B0F], + ["E561",0x5C67], + ["E562",0x5D99], + ["E563",0x5D97], + ["E564",0x5D9F], + ["E565",0x5D92], + ["E566",0x5DA2], + ["E567",0x5D93], + ["E568",0x5D95], + ["E569",0x5DA0], + ["E56A",0x5D9C], + ["E56B",0x5DA1], + ["E56C",0x5D9A], + ["E56D",0x5D9E], + ["E56E",0x5E69], + ["E56F",0x5E5D], + ["E570",0x5E60], + ["E571",0x5E5C], + ["E572",0x7DF3], + ["E573",0x5EDB], + ["E574",0x5EDE], + ["E575",0x5EE1], + ["E576",0x5F49], + ["E577",0x5FB2], + ["E578",0x618B], + ["E579",0x6183], + ["E57A",0x6179], + ["E57B",0x61B1], + ["E57C",0x61B0], + ["E57D",0x61A2], + ["E57E",0x6189], + ["E5A1",0x619B], + ["E5A2",0x6193], + ["E5A3",0x61AF], + ["E5A4",0x61AD], + ["E5A5",0x619F], + ["E5A6",0x6192], + ["E5A7",0x61AA], + ["E5A8",0x61A1], + ["E5A9",0x618D], + ["E5AA",0x6166], + ["E5AB",0x61B3], + ["E5AC",0x622D], + ["E5AD",0x646E], + ["E5AE",0x6470], + ["E5AF",0x6496], + ["E5B0",0x64A0], + ["E5B1",0x6485], + ["E5B2",0x6497], + ["E5B3",0x649C], + ["E5B4",0x648F], + ["E5B5",0x648B], + ["E5B6",0x648A], + ["E5B7",0x648C], + ["E5B8",0x64A3], + ["E5B9",0x649F], + ["E5BA",0x6468], + ["E5BB",0x64B1], + ["E5BC",0x6498], + ["E5BD",0x6576], + ["E5BE",0x657A], + ["E5BF",0x6579], + ["E5C0",0x657B], + ["E5C1",0x65B2], + ["E5C2",0x65B3], + ["E5C3",0x66B5], + ["E5C4",0x66B0], + ["E5C5",0x66A9], + ["E5C6",0x66B2], + ["E5C7",0x66B7], + ["E5C8",0x66AA], + ["E5C9",0x66AF], + ["E5CA",0x6A00], + ["E5CB",0x6A06], + ["E5CC",0x6A17], + ["E5CD",0x69E5], + ["E5CE",0x69F8], + ["E5CF",0x6A15], + ["E5D0",0x69F1], + ["E5D1",0x69E4], + ["E5D2",0x6A20], + ["E5D3",0x69FF], + ["E5D4",0x69EC], + ["E5D5",0x69E2], + ["E5D6",0x6A1B], + ["E5D7",0x6A1D], + ["E5D8",0x69FE], + ["E5D9",0x6A27], + ["E5DA",0x69F2], + ["E5DB",0x69EE], + ["E5DC",0x6A14], + ["E5DD",0x69F7], + ["E5DE",0x69E7], + ["E5DF",0x6A40], + ["E5E0",0x6A08], + ["E5E1",0x69E6], + ["E5E2",0x69FB], + ["E5E3",0x6A0D], + ["E5E4",0x69FC], + ["E5E5",0x69EB], + ["E5E6",0x6A09], + ["E5E7",0x6A04], + ["E5E8",0x6A18], + ["E5E9",0x6A25], + ["E5EA",0x6A0F], + ["E5EB",0x69F6], + ["E5EC",0x6A26], + ["E5ED",0x6A07], + ["E5EE",0x69F4], + ["E5EF",0x6A16], + ["E5F0",0x6B51], + ["E5F1",0x6BA5], + ["E5F2",0x6BA3], + ["E5F3",0x6BA2], + ["E5F4",0x6BA6], + ["E5F5",0x6C01], + ["E5F6",0x6C00], + ["E5F7",0x6BFF], + ["E5F8",0x6C02], + ["E5F9",0x6F41], + ["E5FA",0x6F26], + ["E5FB",0x6F7E], + ["E5FC",0x6F87], + ["E5FD",0x6FC6], + ["E5FE",0x6F92], + ["E640",0x6F8D], + ["E641",0x6F89], + ["E642",0x6F8C], + ["E643",0x6F62], + ["E644",0x6F4F], + ["E645",0x6F85], + ["E646",0x6F5A], + ["E647",0x6F96], + ["E648",0x6F76], + ["E649",0x6F6C], + ["E64A",0x6F82], + ["E64B",0x6F55], + ["E64C",0x6F72], + ["E64D",0x6F52], + ["E64E",0x6F50], + ["E64F",0x6F57], + ["E650",0x6F94], + ["E651",0x6F93], + ["E652",0x6F5D], + ["E653",0x6F00], + ["E654",0x6F61], + ["E655",0x6F6B], + ["E656",0x6F7D], + ["E657",0x6F67], + ["E658",0x6F90], + ["E659",0x6F53], + ["E65A",0x6F8B], + ["E65B",0x6F69], + ["E65C",0x6F7F], + ["E65D",0x6F95], + ["E65E",0x6F63], + ["E65F",0x6F77], + ["E660",0x6F6A], + ["E661",0x6F7B], + ["E662",0x71B2], + ["E663",0x71AF], + ["E664",0x719B], + ["E665",0x71B0], + ["E666",0x71A0], + ["E667",0x719A], + ["E668",0x71A9], + ["E669",0x71B5], + ["E66A",0x719D], + ["E66B",0x71A5], + ["E66C",0x719E], + ["E66D",0x71A4], + ["E66E",0x71A1], + ["E66F",0x71AA], + ["E670",0x719C], + ["E671",0x71A7], + ["E672",0x71B3], + ["E673",0x7298], + ["E674",0x729A], + ["E675",0x7358], + ["E676",0x7352], + ["E677",0x735E], + ["E678",0x735F], + ["E679",0x7360], + ["E67A",0x735D], + ["E67B",0x735B], + ["E67C",0x7361], + ["E67D",0x735A], + ["E67E",0x7359], + ["E6A1",0x7362], + ["E6A2",0x7487], + ["E6A3",0x7489], + ["E6A4",0x748A], + ["E6A5",0x7486], + ["E6A6",0x7481], + ["E6A7",0x747D], + ["E6A8",0x7485], + ["E6A9",0x7488], + ["E6AA",0x747C], + ["E6AB",0x7479], + ["E6AC",0x7508], + ["E6AD",0x7507], + ["E6AE",0x757E], + ["E6AF",0x7625], + ["E6B0",0x761E], + ["E6B1",0x7619], + ["E6B2",0x761D], + ["E6B3",0x761C], + ["E6B4",0x7623], + ["E6B5",0x761A], + ["E6B6",0x7628], + ["E6B7",0x761B], + ["E6B8",0x769C], + ["E6B9",0x769D], + ["E6BA",0x769E], + ["E6BB",0x769B], + ["E6BC",0x778D], + ["E6BD",0x778F], + ["E6BE",0x7789], + ["E6BF",0x7788], + ["E6C0",0x78CD], + ["E6C1",0x78BB], + ["E6C2",0x78CF], + ["E6C3",0x78CC], + ["E6C4",0x78D1], + ["E6C5",0x78CE], + ["E6C6",0x78D4], + ["E6C7",0x78C8], + ["E6C8",0x78C3], + ["E6C9",0x78C4], + ["E6CA",0x78C9], + ["E6CB",0x799A], + ["E6CC",0x79A1], + ["E6CD",0x79A0], + ["E6CE",0x799C], + ["E6CF",0x79A2], + ["E6D0",0x799B], + ["E6D1",0x6B76], + ["E6D2",0x7A39], + ["E6D3",0x7AB2], + ["E6D4",0x7AB4], + ["E6D5",0x7AB3], + ["E6D6",0x7BB7], + ["E6D7",0x7BCB], + ["E6D8",0x7BBE], + ["E6D9",0x7BAC], + ["E6DA",0x7BCE], + ["E6DB",0x7BAF], + ["E6DC",0x7BB9], + ["E6DD",0x7BCA], + ["E6DE",0x7BB5], + ["E6DF",0x7CC5], + ["E6E0",0x7CC8], + ["E6E1",0x7CCC], + ["E6E2",0x7CCB], + ["E6E3",0x7DF7], + ["E6E4",0x7DDB], + ["E6E5",0x7DEA], + ["E6E6",0x7DE7], + ["E6E7",0x7DD7], + ["E6E8",0x7DE1], + ["E6E9",0x7E03], + ["E6EA",0x7DFA], + ["E6EB",0x7DE6], + ["E6EC",0x7DF6], + ["E6ED",0x7DF1], + ["E6EE",0x7DF0], + ["E6EF",0x7DEE], + ["E6F0",0x7DDF], + ["E6F1",0x7F76], + ["E6F2",0x7FAC], + ["E6F3",0x7FB0], + ["E6F4",0x7FAD], + ["E6F5",0x7FED], + ["E6F6",0x7FEB], + ["E6F7",0x7FEA], + ["E6F8",0x7FEC], + ["E6F9",0x7FE6], + ["E6FA",0x7FE8], + ["E6FB",0x8064], + ["E6FC",0x8067], + ["E6FD",0x81A3], + ["E6FE",0x819F], + ["E740",0x819E], + ["E741",0x8195], + ["E742",0x81A2], + ["E743",0x8199], + ["E744",0x8197], + ["E745",0x8216], + ["E746",0x824F], + ["E747",0x8253], + ["E748",0x8252], + ["E749",0x8250], + ["E74A",0x824E], + ["E74B",0x8251], + ["E74C",0x8524], + ["E74D",0x853B], + ["E74E",0x850F], + ["E74F",0x8500], + ["E750",0x8529], + ["E751",0x850E], + ["E752",0x8509], + ["E753",0x850D], + ["E754",0x851F], + ["E755",0x850A], + ["E756",0x8527], + ["E757",0x851C], + ["E758",0x84FB], + ["E759",0x852B], + ["E75A",0x84FA], + ["E75B",0x8508], + ["E75C",0x850C], + ["E75D",0x84F4], + ["E75E",0x852A], + ["E75F",0x84F2], + ["E760",0x8515], + ["E761",0x84F7], + ["E762",0x84EB], + ["E763",0x84F3], + ["E764",0x84FC], + ["E765",0x8512], + ["E766",0x84EA], + ["E767",0x84E9], + ["E768",0x8516], + ["E769",0x84FE], + ["E76A",0x8528], + ["E76B",0x851D], + ["E76C",0x852E], + ["E76D",0x8502], + ["E76E",0x84FD], + ["E76F",0x851E], + ["E770",0x84F6], + ["E771",0x8531], + ["E772",0x8526], + ["E773",0x84E7], + ["E774",0x84E8], + ["E775",0x84F0], + ["E776",0x84EF], + ["E777",0x84F9], + ["E778",0x8518], + ["E779",0x8520], + ["E77A",0x8530], + ["E77B",0x850B], + ["E77C",0x8519], + ["E77D",0x852F], + ["E77E",0x8662], + ["E7A1",0x8756], + ["E7A2",0x8763], + ["E7A3",0x8764], + ["E7A4",0x8777], + ["E7A5",0x87E1], + ["E7A6",0x8773], + ["E7A7",0x8758], + ["E7A8",0x8754], + ["E7A9",0x875B], + ["E7AA",0x8752], + ["E7AB",0x8761], + ["E7AC",0x875A], + ["E7AD",0x8751], + ["E7AE",0x875E], + ["E7AF",0x876D], + ["E7B0",0x876A], + ["E7B1",0x8750], + ["E7B2",0x874E], + ["E7B3",0x875F], + ["E7B4",0x875D], + ["E7B5",0x876F], + ["E7B6",0x876C], + ["E7B7",0x877A], + ["E7B8",0x876E], + ["E7B9",0x875C], + ["E7BA",0x8765], + ["E7BB",0x874F], + ["E7BC",0x877B], + ["E7BD",0x8775], + ["E7BE",0x8762], + ["E7BF",0x8767], + ["E7C0",0x8769], + ["E7C1",0x885A], + ["E7C2",0x8905], + ["E7C3",0x890C], + ["E7C4",0x8914], + ["E7C5",0x890B], + ["E7C6",0x8917], + ["E7C7",0x8918], + ["E7C8",0x8919], + ["E7C9",0x8906], + ["E7CA",0x8916], + ["E7CB",0x8911], + ["E7CC",0x890E], + ["E7CD",0x8909], + ["E7CE",0x89A2], + ["E7CF",0x89A4], + ["E7D0",0x89A3], + ["E7D1",0x89ED], + ["E7D2",0x89F0], + ["E7D3",0x89EC], + ["E7D4",0x8ACF], + ["E7D5",0x8AC6], + ["E7D6",0x8AB8], + ["E7D7",0x8AD3], + ["E7D8",0x8AD1], + ["E7D9",0x8AD4], + ["E7DA",0x8AD5], + ["E7DB",0x8ABB], + ["E7DC",0x8AD7], + ["E7DD",0x8ABE], + ["E7DE",0x8AC0], + ["E7DF",0x8AC5], + ["E7E0",0x8AD8], + ["E7E1",0x8AC3], + ["E7E2",0x8ABA], + ["E7E3",0x8ABD], + ["E7E4",0x8AD9], + ["E7E5",0x8C3E], + ["E7E6",0x8C4D], + ["E7E7",0x8C8F], + ["E7E8",0x8CE5], + ["E7E9",0x8CDF], + ["E7EA",0x8CD9], + ["E7EB",0x8CE8], + ["E7EC",0x8CDA], + ["E7ED",0x8CDD], + ["E7EE",0x8CE7], + ["E7EF",0x8DA0], + ["E7F0",0x8D9C], + ["E7F1",0x8DA1], + ["E7F2",0x8D9B], + ["E7F3",0x8E20], + ["E7F4",0x8E23], + ["E7F5",0x8E25], + ["E7F6",0x8E24], + ["E7F7",0x8E2E], + ["E7F8",0x8E15], + ["E7F9",0x8E1B], + ["E7FA",0x8E16], + ["E7FB",0x8E11], + ["E7FC",0x8E19], + ["E7FD",0x8E26], + ["E7FE",0x8E27], + ["E840",0x8E14], + ["E841",0x8E12], + ["E842",0x8E18], + ["E843",0x8E13], + ["E844",0x8E1C], + ["E845",0x8E17], + ["E846",0x8E1A], + ["E847",0x8F2C], + ["E848",0x8F24], + ["E849",0x8F18], + ["E84A",0x8F1A], + ["E84B",0x8F20], + ["E84C",0x8F23], + ["E84D",0x8F16], + ["E84E",0x8F17], + ["E84F",0x9073], + ["E850",0x9070], + ["E851",0x906F], + ["E852",0x9067], + ["E853",0x906B], + ["E854",0x912F], + ["E855",0x912B], + ["E856",0x9129], + ["E857",0x912A], + ["E858",0x9132], + ["E859",0x9126], + ["E85A",0x912E], + ["E85B",0x9185], + ["E85C",0x9186], + ["E85D",0x918A], + ["E85E",0x9181], + ["E85F",0x9182], + ["E860",0x9184], + ["E861",0x9180], + ["E862",0x92D0], + ["E863",0x92C3], + ["E864",0x92C4], + ["E865",0x92C0], + ["E866",0x92D9], + ["E867",0x92B6], + ["E868",0x92CF], + ["E869",0x92F1], + ["E86A",0x92DF], + ["E86B",0x92D8], + ["E86C",0x92E9], + ["E86D",0x92D7], + ["E86E",0x92DD], + ["E86F",0x92CC], + ["E870",0x92EF], + ["E871",0x92C2], + ["E872",0x92E8], + ["E873",0x92CA], + ["E874",0x92C8], + ["E875",0x92CE], + ["E876",0x92E6], + ["E877",0x92CD], + ["E878",0x92D5], + ["E879",0x92C9], + ["E87A",0x92E0], + ["E87B",0x92DE], + ["E87C",0x92E7], + ["E87D",0x92D1], + ["E87E",0x92D3], + ["E8A1",0x92B5], + ["E8A2",0x92E1], + ["E8A3",0x92C6], + ["E8A4",0x92B4], + ["E8A5",0x957C], + ["E8A6",0x95AC], + ["E8A7",0x95AB], + ["E8A8",0x95AE], + ["E8A9",0x95B0], + ["E8AA",0x96A4], + ["E8AB",0x96A2], + ["E8AC",0x96D3], + ["E8AD",0x9705], + ["E8AE",0x9708], + ["E8AF",0x9702], + ["E8B0",0x975A], + ["E8B1",0x978A], + ["E8B2",0x978E], + ["E8B3",0x9788], + ["E8B4",0x97D0], + ["E8B5",0x97CF], + ["E8B6",0x981E], + ["E8B7",0x981D], + ["E8B8",0x9826], + ["E8B9",0x9829], + ["E8BA",0x9828], + ["E8BB",0x9820], + ["E8BC",0x981B], + ["E8BD",0x9827], + ["E8BE",0x98B2], + ["E8BF",0x9908], + ["E8C0",0x98FA], + ["E8C1",0x9911], + ["E8C2",0x9914], + ["E8C3",0x9916], + ["E8C4",0x9917], + ["E8C5",0x9915], + ["E8C6",0x99DC], + ["E8C7",0x99CD], + ["E8C8",0x99CF], + ["E8C9",0x99D3], + ["E8CA",0x99D4], + ["E8CB",0x99CE], + ["E8CC",0x99C9], + ["E8CD",0x99D6], + ["E8CE",0x99D8], + ["E8CF",0x99CB], + ["E8D0",0x99D7], + ["E8D1",0x99CC], + ["E8D2",0x9AB3], + ["E8D3",0x9AEC], + ["E8D4",0x9AEB], + ["E8D5",0x9AF3], + ["E8D6",0x9AF2], + ["E8D7",0x9AF1], + ["E8D8",0x9B46], + ["E8D9",0x9B43], + ["E8DA",0x9B67], + ["E8DB",0x9B74], + ["E8DC",0x9B71], + ["E8DD",0x9B66], + ["E8DE",0x9B76], + ["E8DF",0x9B75], + ["E8E0",0x9B70], + ["E8E1",0x9B68], + ["E8E2",0x9B64], + ["E8E3",0x9B6C], + ["E8E4",0x9CFC], + ["E8E5",0x9CFA], + ["E8E6",0x9CFD], + ["E8E7",0x9CFF], + ["E8E8",0x9CF7], + ["E8E9",0x9D07], + ["E8EA",0x9D00], + ["E8EB",0x9CF9], + ["E8EC",0x9CFB], + ["E8ED",0x9D08], + ["E8EE",0x9D05], + ["E8EF",0x9D04], + ["E8F0",0x9E83], + ["E8F1",0x9ED3], + ["E8F2",0x9F0F], + ["E8F3",0x9F10], + ["E8F4",0x511C], + ["E8F5",0x5113], + ["E8F6",0x5117], + ["E8F7",0x511A], + ["E8F8",0x5111], + ["E8F9",0x51DE], + ["E8FA",0x5334], + ["E8FB",0x53E1], + ["E8FC",0x5670], + ["E8FD",0x5660], + ["E8FE",0x566E], + ["E940",0x5673], + ["E941",0x5666], + ["E942",0x5663], + ["E943",0x566D], + ["E944",0x5672], + ["E945",0x565E], + ["E946",0x5677], + ["E947",0x571C], + ["E948",0x571B], + ["E949",0x58C8], + ["E94A",0x58BD], + ["E94B",0x58C9], + ["E94C",0x58BF], + ["E94D",0x58BA], + ["E94E",0x58C2], + ["E94F",0x58BC], + ["E950",0x58C6], + ["E951",0x5B17], + ["E952",0x5B19], + ["E953",0x5B1B], + ["E954",0x5B21], + ["E955",0x5B14], + ["E956",0x5B13], + ["E957",0x5B10], + ["E958",0x5B16], + ["E959",0x5B28], + ["E95A",0x5B1A], + ["E95B",0x5B20], + ["E95C",0x5B1E], + ["E95D",0x5BEF], + ["E95E",0x5DAC], + ["E95F",0x5DB1], + ["E960",0x5DA9], + ["E961",0x5DA7], + ["E962",0x5DB5], + ["E963",0x5DB0], + ["E964",0x5DAE], + ["E965",0x5DAA], + ["E966",0x5DA8], + ["E967",0x5DB2], + ["E968",0x5DAD], + ["E969",0x5DAF], + ["E96A",0x5DB4], + ["E96B",0x5E67], + ["E96C",0x5E68], + ["E96D",0x5E66], + ["E96E",0x5E6F], + ["E96F",0x5EE9], + ["E970",0x5EE7], + ["E971",0x5EE6], + ["E972",0x5EE8], + ["E973",0x5EE5], + ["E974",0x5F4B], + ["E975",0x5FBC], + ["E976",0x619D], + ["E977",0x61A8], + ["E978",0x6196], + ["E979",0x61C5], + ["E97A",0x61B4], + ["E97B",0x61C6], + ["E97C",0x61C1], + ["E97D",0x61CC], + ["E97E",0x61BA], + ["E9A1",0x61BF], + ["E9A2",0x61B8], + ["E9A3",0x618C], + ["E9A4",0x64D7], + ["E9A5",0x64D6], + ["E9A6",0x64D0], + ["E9A7",0x64CF], + ["E9A8",0x64C9], + ["E9A9",0x64BD], + ["E9AA",0x6489], + ["E9AB",0x64C3], + ["E9AC",0x64DB], + ["E9AD",0x64F3], + ["E9AE",0x64D9], + ["E9AF",0x6533], + ["E9B0",0x657F], + ["E9B1",0x657C], + ["E9B2",0x65A2], + ["E9B3",0x66C8], + ["E9B4",0x66BE], + ["E9B5",0x66C0], + ["E9B6",0x66CA], + ["E9B7",0x66CB], + ["E9B8",0x66CF], + ["E9B9",0x66BD], + ["E9BA",0x66BB], + ["E9BB",0x66BA], + ["E9BC",0x66CC], + ["E9BD",0x6723], + ["E9BE",0x6A34], + ["E9BF",0x6A66], + ["E9C0",0x6A49], + ["E9C1",0x6A67], + ["E9C2",0x6A32], + ["E9C3",0x6A68], + ["E9C4",0x6A3E], + ["E9C5",0x6A5D], + ["E9C6",0x6A6D], + ["E9C7",0x6A76], + ["E9C8",0x6A5B], + ["E9C9",0x6A51], + ["E9CA",0x6A28], + ["E9CB",0x6A5A], + ["E9CC",0x6A3B], + ["E9CD",0x6A3F], + ["E9CE",0x6A41], + ["E9CF",0x6A6A], + ["E9D0",0x6A64], + ["E9D1",0x6A50], + ["E9D2",0x6A4F], + ["E9D3",0x6A54], + ["E9D4",0x6A6F], + ["E9D5",0x6A69], + ["E9D6",0x6A60], + ["E9D7",0x6A3C], + ["E9D8",0x6A5E], + ["E9D9",0x6A56], + ["E9DA",0x6A55], + ["E9DB",0x6A4D], + ["E9DC",0x6A4E], + ["E9DD",0x6A46], + ["E9DE",0x6B55], + ["E9DF",0x6B54], + ["E9E0",0x6B56], + ["E9E1",0x6BA7], + ["E9E2",0x6BAA], + ["E9E3",0x6BAB], + ["E9E4",0x6BC8], + ["E9E5",0x6BC7], + ["E9E6",0x6C04], + ["E9E7",0x6C03], + ["E9E8",0x6C06], + ["E9E9",0x6FAD], + ["E9EA",0x6FCB], + ["E9EB",0x6FA3], + ["E9EC",0x6FC7], + ["E9ED",0x6FBC], + ["E9EE",0x6FCE], + ["E9EF",0x6FC8], + ["E9F0",0x6F5E], + ["E9F1",0x6FC4], + ["E9F2",0x6FBD], + ["E9F3",0x6F9E], + ["E9F4",0x6FCA], + ["E9F5",0x6FA8], + ["E9F6",0x7004], + ["E9F7",0x6FA5], + ["E9F8",0x6FAE], + ["E9F9",0x6FBA], + ["E9FA",0x6FAC], + ["E9FB",0x6FAA], + ["E9FC",0x6FCF], + ["E9FD",0x6FBF], + ["E9FE",0x6FB8], + ["EA40",0x6FA2], + ["EA41",0x6FC9], + ["EA42",0x6FAB], + ["EA43",0x6FCD], + ["EA44",0x6FAF], + ["EA45",0x6FB2], + ["EA46",0x6FB0], + ["EA47",0x71C5], + ["EA48",0x71C2], + ["EA49",0x71BF], + ["EA4A",0x71B8], + ["EA4B",0x71D6], + ["EA4C",0x71C0], + ["EA4D",0x71C1], + ["EA4E",0x71CB], + ["EA4F",0x71D4], + ["EA50",0x71CA], + ["EA51",0x71C7], + ["EA52",0x71CF], + ["EA53",0x71BD], + ["EA54",0x71D8], + ["EA55",0x71BC], + ["EA56",0x71C6], + ["EA57",0x71DA], + ["EA58",0x71DB], + ["EA59",0x729D], + ["EA5A",0x729E], + ["EA5B",0x7369], + ["EA5C",0x7366], + ["EA5D",0x7367], + ["EA5E",0x736C], + ["EA5F",0x7365], + ["EA60",0x736B], + ["EA61",0x736A], + ["EA62",0x747F], + ["EA63",0x749A], + ["EA64",0x74A0], + ["EA65",0x7494], + ["EA66",0x7492], + ["EA67",0x7495], + ["EA68",0x74A1], + ["EA69",0x750B], + ["EA6A",0x7580], + ["EA6B",0x762F], + ["EA6C",0x762D], + ["EA6D",0x7631], + ["EA6E",0x763D], + ["EA6F",0x7633], + ["EA70",0x763C], + ["EA71",0x7635], + ["EA72",0x7632], + ["EA73",0x7630], + ["EA74",0x76BB], + ["EA75",0x76E6], + ["EA76",0x779A], + ["EA77",0x779D], + ["EA78",0x77A1], + ["EA79",0x779C], + ["EA7A",0x779B], + ["EA7B",0x77A2], + ["EA7C",0x77A3], + ["EA7D",0x7795], + ["EA7E",0x7799], + ["EAA1",0x7797], + ["EAA2",0x78DD], + ["EAA3",0x78E9], + ["EAA4",0x78E5], + ["EAA5",0x78EA], + ["EAA6",0x78DE], + ["EAA7",0x78E3], + ["EAA8",0x78DB], + ["EAA9",0x78E1], + ["EAAA",0x78E2], + ["EAAB",0x78ED], + ["EAAC",0x78DF], + ["EAAD",0x78E0], + ["EAAE",0x79A4], + ["EAAF",0x7A44], + ["EAB0",0x7A48], + ["EAB1",0x7A47], + ["EAB2",0x7AB6], + ["EAB3",0x7AB8], + ["EAB4",0x7AB5], + ["EAB5",0x7AB1], + ["EAB6",0x7AB7], + ["EAB7",0x7BDE], + ["EAB8",0x7BE3], + ["EAB9",0x7BE7], + ["EABA",0x7BDD], + ["EABB",0x7BD5], + ["EABC",0x7BE5], + ["EABD",0x7BDA], + ["EABE",0x7BE8], + ["EABF",0x7BF9], + ["EAC0",0x7BD4], + ["EAC1",0x7BEA], + ["EAC2",0x7BE2], + ["EAC3",0x7BDC], + ["EAC4",0x7BEB], + ["EAC5",0x7BD8], + ["EAC6",0x7BDF], + ["EAC7",0x7CD2], + ["EAC8",0x7CD4], + ["EAC9",0x7CD7], + ["EACA",0x7CD0], + ["EACB",0x7CD1], + ["EACC",0x7E12], + ["EACD",0x7E21], + ["EACE",0x7E17], + ["EACF",0x7E0C], + ["EAD0",0x7E1F], + ["EAD1",0x7E20], + ["EAD2",0x7E13], + ["EAD3",0x7E0E], + ["EAD4",0x7E1C], + ["EAD5",0x7E15], + ["EAD6",0x7E1A], + ["EAD7",0x7E22], + ["EAD8",0x7E0B], + ["EAD9",0x7E0F], + ["EADA",0x7E16], + ["EADB",0x7E0D], + ["EADC",0x7E14], + ["EADD",0x7E25], + ["EADE",0x7E24], + ["EADF",0x7F43], + ["EAE0",0x7F7B], + ["EAE1",0x7F7C], + ["EAE2",0x7F7A], + ["EAE3",0x7FB1], + ["EAE4",0x7FEF], + ["EAE5",0x802A], + ["EAE6",0x8029], + ["EAE7",0x806C], + ["EAE8",0x81B1], + ["EAE9",0x81A6], + ["EAEA",0x81AE], + ["EAEB",0x81B9], + ["EAEC",0x81B5], + ["EAED",0x81AB], + ["EAEE",0x81B0], + ["EAEF",0x81AC], + ["EAF0",0x81B4], + ["EAF1",0x81B2], + ["EAF2",0x81B7], + ["EAF3",0x81A7], + ["EAF4",0x81F2], + ["EAF5",0x8255], + ["EAF6",0x8256], + ["EAF7",0x8257], + ["EAF8",0x8556], + ["EAF9",0x8545], + ["EAFA",0x856B], + ["EAFB",0x854D], + ["EAFC",0x8553], + ["EAFD",0x8561], + ["EAFE",0x8558], + ["EB40",0x8540], + ["EB41",0x8546], + ["EB42",0x8564], + ["EB43",0x8541], + ["EB44",0x8562], + ["EB45",0x8544], + ["EB46",0x8551], + ["EB47",0x8547], + ["EB48",0x8563], + ["EB49",0x853E], + ["EB4A",0x855B], + ["EB4B",0x8571], + ["EB4C",0x854E], + ["EB4D",0x856E], + ["EB4E",0x8575], + ["EB4F",0x8555], + ["EB50",0x8567], + ["EB51",0x8560], + ["EB52",0x858C], + ["EB53",0x8566], + ["EB54",0x855D], + ["EB55",0x8554], + ["EB56",0x8565], + ["EB57",0x856C], + ["EB58",0x8663], + ["EB59",0x8665], + ["EB5A",0x8664], + ["EB5B",0x879B], + ["EB5C",0x878F], + ["EB5D",0x8797], + ["EB5E",0x8793], + ["EB5F",0x8792], + ["EB60",0x8788], + ["EB61",0x8781], + ["EB62",0x8796], + ["EB63",0x8798], + ["EB64",0x8779], + ["EB65",0x8787], + ["EB66",0x87A3], + ["EB67",0x8785], + ["EB68",0x8790], + ["EB69",0x8791], + ["EB6A",0x879D], + ["EB6B",0x8784], + ["EB6C",0x8794], + ["EB6D",0x879C], + ["EB6E",0x879A], + ["EB6F",0x8789], + ["EB70",0x891E], + ["EB71",0x8926], + ["EB72",0x8930], + ["EB73",0x892D], + ["EB74",0x892E], + ["EB75",0x8927], + ["EB76",0x8931], + ["EB77",0x8922], + ["EB78",0x8929], + ["EB79",0x8923], + ["EB7A",0x892F], + ["EB7B",0x892C], + ["EB7C",0x891F], + ["EB7D",0x89F1], + ["EB7E",0x8AE0], + ["EBA1",0x8AE2], + ["EBA2",0x8AF2], + ["EBA3",0x8AF4], + ["EBA4",0x8AF5], + ["EBA5",0x8ADD], + ["EBA6",0x8B14], + ["EBA7",0x8AE4], + ["EBA8",0x8ADF], + ["EBA9",0x8AF0], + ["EBAA",0x8AC8], + ["EBAB",0x8ADE], + ["EBAC",0x8AE1], + ["EBAD",0x8AE8], + ["EBAE",0x8AFF], + ["EBAF",0x8AEF], + ["EBB0",0x8AFB], + ["EBB1",0x8C91], + ["EBB2",0x8C92], + ["EBB3",0x8C90], + ["EBB4",0x8CF5], + ["EBB5",0x8CEE], + ["EBB6",0x8CF1], + ["EBB7",0x8CF0], + ["EBB8",0x8CF3], + ["EBB9",0x8D6C], + ["EBBA",0x8D6E], + ["EBBB",0x8DA5], + ["EBBC",0x8DA7], + ["EBBD",0x8E33], + ["EBBE",0x8E3E], + ["EBBF",0x8E38], + ["EBC0",0x8E40], + ["EBC1",0x8E45], + ["EBC2",0x8E36], + ["EBC3",0x8E3C], + ["EBC4",0x8E3D], + ["EBC5",0x8E41], + ["EBC6",0x8E30], + ["EBC7",0x8E3F], + ["EBC8",0x8EBD], + ["EBC9",0x8F36], + ["EBCA",0x8F2E], + ["EBCB",0x8F35], + ["EBCC",0x8F32], + ["EBCD",0x8F39], + ["EBCE",0x8F37], + ["EBCF",0x8F34], + ["EBD0",0x9076], + ["EBD1",0x9079], + ["EBD2",0x907B], + ["EBD3",0x9086], + ["EBD4",0x90FA], + ["EBD5",0x9133], + ["EBD6",0x9135], + ["EBD7",0x9136], + ["EBD8",0x9193], + ["EBD9",0x9190], + ["EBDA",0x9191], + ["EBDB",0x918D], + ["EBDC",0x918F], + ["EBDD",0x9327], + ["EBDE",0x931E], + ["EBDF",0x9308], + ["EBE0",0x931F], + ["EBE1",0x9306], + ["EBE2",0x930F], + ["EBE3",0x937A], + ["EBE4",0x9338], + ["EBE5",0x933C], + ["EBE6",0x931B], + ["EBE7",0x9323], + ["EBE8",0x9312], + ["EBE9",0x9301], + ["EBEA",0x9346], + ["EBEB",0x932D], + ["EBEC",0x930E], + ["EBED",0x930D], + ["EBEE",0x92CB], + ["EBEF",0x931D], + ["EBF0",0x92FA], + ["EBF1",0x9325], + ["EBF2",0x9313], + ["EBF3",0x92F9], + ["EBF4",0x92F7], + ["EBF5",0x9334], + ["EBF6",0x9302], + ["EBF7",0x9324], + ["EBF8",0x92FF], + ["EBF9",0x9329], + ["EBFA",0x9339], + ["EBFB",0x9335], + ["EBFC",0x932A], + ["EBFD",0x9314], + ["EBFE",0x930C], + ["EC40",0x930B], + ["EC41",0x92FE], + ["EC42",0x9309], + ["EC43",0x9300], + ["EC44",0x92FB], + ["EC45",0x9316], + ["EC46",0x95BC], + ["EC47",0x95CD], + ["EC48",0x95BE], + ["EC49",0x95B9], + ["EC4A",0x95BA], + ["EC4B",0x95B6], + ["EC4C",0x95BF], + ["EC4D",0x95B5], + ["EC4E",0x95BD], + ["EC4F",0x96A9], + ["EC50",0x96D4], + ["EC51",0x970B], + ["EC52",0x9712], + ["EC53",0x9710], + ["EC54",0x9799], + ["EC55",0x9797], + ["EC56",0x9794], + ["EC57",0x97F0], + ["EC58",0x97F8], + ["EC59",0x9835], + ["EC5A",0x982F], + ["EC5B",0x9832], + ["EC5C",0x9924], + ["EC5D",0x991F], + ["EC5E",0x9927], + ["EC5F",0x9929], + ["EC60",0x999E], + ["EC61",0x99EE], + ["EC62",0x99EC], + ["EC63",0x99E5], + ["EC64",0x99E4], + ["EC65",0x99F0], + ["EC66",0x99E3], + ["EC67",0x99EA], + ["EC68",0x99E9], + ["EC69",0x99E7], + ["EC6A",0x9AB9], + ["EC6B",0x9ABF], + ["EC6C",0x9AB4], + ["EC6D",0x9ABB], + ["EC6E",0x9AF6], + ["EC6F",0x9AFA], + ["EC70",0x9AF9], + ["EC71",0x9AF7], + ["EC72",0x9B33], + ["EC73",0x9B80], + ["EC74",0x9B85], + ["EC75",0x9B87], + ["EC76",0x9B7C], + ["EC77",0x9B7E], + ["EC78",0x9B7B], + ["EC79",0x9B82], + ["EC7A",0x9B93], + ["EC7B",0x9B92], + ["EC7C",0x9B90], + ["EC7D",0x9B7A], + ["EC7E",0x9B95], + ["ECA1",0x9B7D], + ["ECA2",0x9B88], + ["ECA3",0x9D25], + ["ECA4",0x9D17], + ["ECA5",0x9D20], + ["ECA6",0x9D1E], + ["ECA7",0x9D14], + ["ECA8",0x9D29], + ["ECA9",0x9D1D], + ["ECAA",0x9D18], + ["ECAB",0x9D22], + ["ECAC",0x9D10], + ["ECAD",0x9D19], + ["ECAE",0x9D1F], + ["ECAF",0x9E88], + ["ECB0",0x9E86], + ["ECB1",0x9E87], + ["ECB2",0x9EAE], + ["ECB3",0x9EAD], + ["ECB4",0x9ED5], + ["ECB5",0x9ED6], + ["ECB6",0x9EFA], + ["ECB7",0x9F12], + ["ECB8",0x9F3D], + ["ECB9",0x5126], + ["ECBA",0x5125], + ["ECBB",0x5122], + ["ECBC",0x5124], + ["ECBD",0x5120], + ["ECBE",0x5129], + ["ECBF",0x52F4], + ["ECC0",0x5693], + ["ECC1",0x568C], + ["ECC2",0x568D], + ["ECC3",0x5686], + ["ECC4",0x5684], + ["ECC5",0x5683], + ["ECC6",0x567E], + ["ECC7",0x5682], + ["ECC8",0x567F], + ["ECC9",0x5681], + ["ECCA",0x58D6], + ["ECCB",0x58D4], + ["ECCC",0x58CF], + ["ECCD",0x58D2], + ["ECCE",0x5B2D], + ["ECCF",0x5B25], + ["ECD0",0x5B32], + ["ECD1",0x5B23], + ["ECD2",0x5B2C], + ["ECD3",0x5B27], + ["ECD4",0x5B26], + ["ECD5",0x5B2F], + ["ECD6",0x5B2E], + ["ECD7",0x5B7B], + ["ECD8",0x5BF1], + ["ECD9",0x5BF2], + ["ECDA",0x5DB7], + ["ECDB",0x5E6C], + ["ECDC",0x5E6A], + ["ECDD",0x5FBE], + ["ECDE",0x5FBB], + ["ECDF",0x61C3], + ["ECE0",0x61B5], + ["ECE1",0x61BC], + ["ECE2",0x61E7], + ["ECE3",0x61E0], + ["ECE4",0x61E5], + ["ECE5",0x61E4], + ["ECE6",0x61E8], + ["ECE7",0x61DE], + ["ECE8",0x64EF], + ["ECE9",0x64E9], + ["ECEA",0x64E3], + ["ECEB",0x64EB], + ["ECEC",0x64E4], + ["ECED",0x64E8], + ["ECEE",0x6581], + ["ECEF",0x6580], + ["ECF0",0x65B6], + ["ECF1",0x65DA], + ["ECF2",0x66D2], + ["ECF3",0x6A8D], + ["ECF4",0x6A96], + ["ECF5",0x6A81], + ["ECF6",0x6AA5], + ["ECF7",0x6A89], + ["ECF8",0x6A9F], + ["ECF9",0x6A9B], + ["ECFA",0x6AA1], + ["ECFB",0x6A9E], + ["ECFC",0x6A87], + ["ECFD",0x6A93], + ["ECFE",0x6A8E], + ["ED40",0x6A95], + ["ED41",0x6A83], + ["ED42",0x6AA8], + ["ED43",0x6AA4], + ["ED44",0x6A91], + ["ED45",0x6A7F], + ["ED46",0x6AA6], + ["ED47",0x6A9A], + ["ED48",0x6A85], + ["ED49",0x6A8C], + ["ED4A",0x6A92], + ["ED4B",0x6B5B], + ["ED4C",0x6BAD], + ["ED4D",0x6C09], + ["ED4E",0x6FCC], + ["ED4F",0x6FA9], + ["ED50",0x6FF4], + ["ED51",0x6FD4], + ["ED52",0x6FE3], + ["ED53",0x6FDC], + ["ED54",0x6FED], + ["ED55",0x6FE7], + ["ED56",0x6FE6], + ["ED57",0x6FDE], + ["ED58",0x6FF2], + ["ED59",0x6FDD], + ["ED5A",0x6FE2], + ["ED5B",0x6FE8], + ["ED5C",0x71E1], + ["ED5D",0x71F1], + ["ED5E",0x71E8], + ["ED5F",0x71F2], + ["ED60",0x71E4], + ["ED61",0x71F0], + ["ED62",0x71E2], + ["ED63",0x7373], + ["ED64",0x736E], + ["ED65",0x736F], + ["ED66",0x7497], + ["ED67",0x74B2], + ["ED68",0x74AB], + ["ED69",0x7490], + ["ED6A",0x74AA], + ["ED6B",0x74AD], + ["ED6C",0x74B1], + ["ED6D",0x74A5], + ["ED6E",0x74AF], + ["ED6F",0x7510], + ["ED70",0x7511], + ["ED71",0x7512], + ["ED72",0x750F], + ["ED73",0x7584], + ["ED74",0x7643], + ["ED75",0x7648], + ["ED76",0x7649], + ["ED77",0x7647], + ["ED78",0x76A4], + ["ED79",0x76E9], + ["ED7A",0x77B5], + ["ED7B",0x77AB], + ["ED7C",0x77B2], + ["ED7D",0x77B7], + ["ED7E",0x77B6], + ["EDA1",0x77B4], + ["EDA2",0x77B1], + ["EDA3",0x77A8], + ["EDA4",0x77F0], + ["EDA5",0x78F3], + ["EDA6",0x78FD], + ["EDA7",0x7902], + ["EDA8",0x78FB], + ["EDA9",0x78FC], + ["EDAA",0x78F2], + ["EDAB",0x7905], + ["EDAC",0x78F9], + ["EDAD",0x78FE], + ["EDAE",0x7904], + ["EDAF",0x79AB], + ["EDB0",0x79A8], + ["EDB1",0x7A5C], + ["EDB2",0x7A5B], + ["EDB3",0x7A56], + ["EDB4",0x7A58], + ["EDB5",0x7A54], + ["EDB6",0x7A5A], + ["EDB7",0x7ABE], + ["EDB8",0x7AC0], + ["EDB9",0x7AC1], + ["EDBA",0x7C05], + ["EDBB",0x7C0F], + ["EDBC",0x7BF2], + ["EDBD",0x7C00], + ["EDBE",0x7BFF], + ["EDBF",0x7BFB], + ["EDC0",0x7C0E], + ["EDC1",0x7BF4], + ["EDC2",0x7C0B], + ["EDC3",0x7BF3], + ["EDC4",0x7C02], + ["EDC5",0x7C09], + ["EDC6",0x7C03], + ["EDC7",0x7C01], + ["EDC8",0x7BF8], + ["EDC9",0x7BFD], + ["EDCA",0x7C06], + ["EDCB",0x7BF0], + ["EDCC",0x7BF1], + ["EDCD",0x7C10], + ["EDCE",0x7C0A], + ["EDCF",0x7CE8], + ["EDD0",0x7E2D], + ["EDD1",0x7E3C], + ["EDD2",0x7E42], + ["EDD3",0x7E33], + ["EDD4",0x9848], + ["EDD5",0x7E38], + ["EDD6",0x7E2A], + ["EDD7",0x7E49], + ["EDD8",0x7E40], + ["EDD9",0x7E47], + ["EDDA",0x7E29], + ["EDDB",0x7E4C], + ["EDDC",0x7E30], + ["EDDD",0x7E3B], + ["EDDE",0x7E36], + ["EDDF",0x7E44], + ["EDE0",0x7E3A], + ["EDE1",0x7F45], + ["EDE2",0x7F7F], + ["EDE3",0x7F7E], + ["EDE4",0x7F7D], + ["EDE5",0x7FF4], + ["EDE6",0x7FF2], + ["EDE7",0x802C], + ["EDE8",0x81BB], + ["EDE9",0x81C4], + ["EDEA",0x81CC], + ["EDEB",0x81CA], + ["EDEC",0x81C5], + ["EDED",0x81C7], + ["EDEE",0x81BC], + ["EDEF",0x81E9], + ["EDF0",0x825B], + ["EDF1",0x825A], + ["EDF2",0x825C], + ["EDF3",0x8583], + ["EDF4",0x8580], + ["EDF5",0x858F], + ["EDF6",0x85A7], + ["EDF7",0x8595], + ["EDF8",0x85A0], + ["EDF9",0x858B], + ["EDFA",0x85A3], + ["EDFB",0x857B], + ["EDFC",0x85A4], + ["EDFD",0x859A], + ["EDFE",0x859E], + ["EE40",0x8577], + ["EE41",0x857C], + ["EE42",0x8589], + ["EE43",0x85A1], + ["EE44",0x857A], + ["EE45",0x8578], + ["EE46",0x8557], + ["EE47",0x858E], + ["EE48",0x8596], + ["EE49",0x8586], + ["EE4A",0x858D], + ["EE4B",0x8599], + ["EE4C",0x859D], + ["EE4D",0x8581], + ["EE4E",0x85A2], + ["EE4F",0x8582], + ["EE50",0x8588], + ["EE51",0x8585], + ["EE52",0x8579], + ["EE53",0x8576], + ["EE54",0x8598], + ["EE55",0x8590], + ["EE56",0x859F], + ["EE57",0x8668], + ["EE58",0x87BE], + ["EE59",0x87AA], + ["EE5A",0x87AD], + ["EE5B",0x87C5], + ["EE5C",0x87B0], + ["EE5D",0x87AC], + ["EE5E",0x87B9], + ["EE5F",0x87B5], + ["EE60",0x87BC], + ["EE61",0x87AE], + ["EE62",0x87C9], + ["EE63",0x87C3], + ["EE64",0x87C2], + ["EE65",0x87CC], + ["EE66",0x87B7], + ["EE67",0x87AF], + ["EE68",0x87C4], + ["EE69",0x87CA], + ["EE6A",0x87B4], + ["EE6B",0x87B6], + ["EE6C",0x87BF], + ["EE6D",0x87B8], + ["EE6E",0x87BD], + ["EE6F",0x87DE], + ["EE70",0x87B2], + ["EE71",0x8935], + ["EE72",0x8933], + ["EE73",0x893C], + ["EE74",0x893E], + ["EE75",0x8941], + ["EE76",0x8952], + ["EE77",0x8937], + ["EE78",0x8942], + ["EE79",0x89AD], + ["EE7A",0x89AF], + ["EE7B",0x89AE], + ["EE7C",0x89F2], + ["EE7D",0x89F3], + ["EE7E",0x8B1E], + ["EEA1",0x8B18], + ["EEA2",0x8B16], + ["EEA3",0x8B11], + ["EEA4",0x8B05], + ["EEA5",0x8B0B], + ["EEA6",0x8B22], + ["EEA7",0x8B0F], + ["EEA8",0x8B12], + ["EEA9",0x8B15], + ["EEAA",0x8B07], + ["EEAB",0x8B0D], + ["EEAC",0x8B08], + ["EEAD",0x8B06], + ["EEAE",0x8B1C], + ["EEAF",0x8B13], + ["EEB0",0x8B1A], + ["EEB1",0x8C4F], + ["EEB2",0x8C70], + ["EEB3",0x8C72], + ["EEB4",0x8C71], + ["EEB5",0x8C6F], + ["EEB6",0x8C95], + ["EEB7",0x8C94], + ["EEB8",0x8CF9], + ["EEB9",0x8D6F], + ["EEBA",0x8E4E], + ["EEBB",0x8E4D], + ["EEBC",0x8E53], + ["EEBD",0x8E50], + ["EEBE",0x8E4C], + ["EEBF",0x8E47], + ["EEC0",0x8F43], + ["EEC1",0x8F40], + ["EEC2",0x9085], + ["EEC3",0x907E], + ["EEC4",0x9138], + ["EEC5",0x919A], + ["EEC6",0x91A2], + ["EEC7",0x919B], + ["EEC8",0x9199], + ["EEC9",0x919F], + ["EECA",0x91A1], + ["EECB",0x919D], + ["EECC",0x91A0], + ["EECD",0x93A1], + ["EECE",0x9383], + ["EECF",0x93AF], + ["EED0",0x9364], + ["EED1",0x9356], + ["EED2",0x9347], + ["EED3",0x937C], + ["EED4",0x9358], + ["EED5",0x935C], + ["EED6",0x9376], + ["EED7",0x9349], + ["EED8",0x9350], + ["EED9",0x9351], + ["EEDA",0x9360], + ["EEDB",0x936D], + ["EEDC",0x938F], + ["EEDD",0x934C], + ["EEDE",0x936A], + ["EEDF",0x9379], + ["EEE0",0x9357], + ["EEE1",0x9355], + ["EEE2",0x9352], + ["EEE3",0x934F], + ["EEE4",0x9371], + ["EEE5",0x9377], + ["EEE6",0x937B], + ["EEE7",0x9361], + ["EEE8",0x935E], + ["EEE9",0x9363], + ["EEEA",0x9367], + ["EEEB",0x9380], + ["EEEC",0x934E], + ["EEED",0x9359], + ["EEEE",0x95C7], + ["EEEF",0x95C0], + ["EEF0",0x95C9], + ["EEF1",0x95C3], + ["EEF2",0x95C5], + ["EEF3",0x95B7], + ["EEF4",0x96AE], + ["EEF5",0x96B0], + ["EEF6",0x96AC], + ["EEF7",0x9720], + ["EEF8",0x971F], + ["EEF9",0x9718], + ["EEFA",0x971D], + ["EEFB",0x9719], + ["EEFC",0x979A], + ["EEFD",0x97A1], + ["EEFE",0x979C], + ["EF40",0x979E], + ["EF41",0x979D], + ["EF42",0x97D5], + ["EF43",0x97D4], + ["EF44",0x97F1], + ["EF45",0x9841], + ["EF46",0x9844], + ["EF47",0x984A], + ["EF48",0x9849], + ["EF49",0x9845], + ["EF4A",0x9843], + ["EF4B",0x9925], + ["EF4C",0x992B], + ["EF4D",0x992C], + ["EF4E",0x992A], + ["EF4F",0x9933], + ["EF50",0x9932], + ["EF51",0x992F], + ["EF52",0x992D], + ["EF53",0x9931], + ["EF54",0x9930], + ["EF55",0x9998], + ["EF56",0x99A3], + ["EF57",0x99A1], + ["EF58",0x9A02], + ["EF59",0x99FA], + ["EF5A",0x99F4], + ["EF5B",0x99F7], + ["EF5C",0x99F9], + ["EF5D",0x99F8], + ["EF5E",0x99F6], + ["EF5F",0x99FB], + ["EF60",0x99FD], + ["EF61",0x99FE], + ["EF62",0x99FC], + ["EF63",0x9A03], + ["EF64",0x9ABE], + ["EF65",0x9AFE], + ["EF66",0x9AFD], + ["EF67",0x9B01], + ["EF68",0x9AFC], + ["EF69",0x9B48], + ["EF6A",0x9B9A], + ["EF6B",0x9BA8], + ["EF6C",0x9B9E], + ["EF6D",0x9B9B], + ["EF6E",0x9BA6], + ["EF6F",0x9BA1], + ["EF70",0x9BA5], + ["EF71",0x9BA4], + ["EF72",0x9B86], + ["EF73",0x9BA2], + ["EF74",0x9BA0], + ["EF75",0x9BAF], + ["EF76",0x9D33], + ["EF77",0x9D41], + ["EF78",0x9D67], + ["EF79",0x9D36], + ["EF7A",0x9D2E], + ["EF7B",0x9D2F], + ["EF7C",0x9D31], + ["EF7D",0x9D38], + ["EF7E",0x9D30], + ["EFA1",0x9D45], + ["EFA2",0x9D42], + ["EFA3",0x9D43], + ["EFA4",0x9D3E], + ["EFA5",0x9D37], + ["EFA6",0x9D40], + ["EFA7",0x9D3D], + ["EFA8",0x7FF5], + ["EFA9",0x9D2D], + ["EFAA",0x9E8A], + ["EFAB",0x9E89], + ["EFAC",0x9E8D], + ["EFAD",0x9EB0], + ["EFAE",0x9EC8], + ["EFAF",0x9EDA], + ["EFB0",0x9EFB], + ["EFB1",0x9EFF], + ["EFB2",0x9F24], + ["EFB3",0x9F23], + ["EFB4",0x9F22], + ["EFB5",0x9F54], + ["EFB6",0x9FA0], + ["EFB7",0x5131], + ["EFB8",0x512D], + ["EFB9",0x512E], + ["EFBA",0x5698], + ["EFBB",0x569C], + ["EFBC",0x5697], + ["EFBD",0x569A], + ["EFBE",0x569D], + ["EFBF",0x5699], + ["EFC0",0x5970], + ["EFC1",0x5B3C], + ["EFC2",0x5C69], + ["EFC3",0x5C6A], + ["EFC4",0x5DC0], + ["EFC5",0x5E6D], + ["EFC6",0x5E6E], + ["EFC7",0x61D8], + ["EFC8",0x61DF], + ["EFC9",0x61ED], + ["EFCA",0x61EE], + ["EFCB",0x61F1], + ["EFCC",0x61EA], + ["EFCD",0x61F0], + ["EFCE",0x61EB], + ["EFCF",0x61D6], + ["EFD0",0x61E9], + ["EFD1",0x64FF], + ["EFD2",0x6504], + ["EFD3",0x64FD], + ["EFD4",0x64F8], + ["EFD5",0x6501], + ["EFD6",0x6503], + ["EFD7",0x64FC], + ["EFD8",0x6594], + ["EFD9",0x65DB], + ["EFDA",0x66DA], + ["EFDB",0x66DB], + ["EFDC",0x66D8], + ["EFDD",0x6AC5], + ["EFDE",0x6AB9], + ["EFDF",0x6ABD], + ["EFE0",0x6AE1], + ["EFE1",0x6AC6], + ["EFE2",0x6ABA], + ["EFE3",0x6AB6], + ["EFE4",0x6AB7], + ["EFE5",0x6AC7], + ["EFE6",0x6AB4], + ["EFE7",0x6AAD], + ["EFE8",0x6B5E], + ["EFE9",0x6BC9], + ["EFEA",0x6C0B], + ["EFEB",0x7007], + ["EFEC",0x700C], + ["EFED",0x700D], + ["EFEE",0x7001], + ["EFEF",0x7005], + ["EFF0",0x7014], + ["EFF1",0x700E], + ["EFF2",0x6FFF], + ["EFF3",0x7000], + ["EFF4",0x6FFB], + ["EFF5",0x7026], + ["EFF6",0x6FFC], + ["EFF7",0x6FF7], + ["EFF8",0x700A], + ["EFF9",0x7201], + ["EFFA",0x71FF], + ["EFFB",0x71F9], + ["EFFC",0x7203], + ["EFFD",0x71FD], + ["EFFE",0x7376], + ["F040",0x74B8], + ["F041",0x74C0], + ["F042",0x74B5], + ["F043",0x74C1], + ["F044",0x74BE], + ["F045",0x74B6], + ["F046",0x74BB], + ["F047",0x74C2], + ["F048",0x7514], + ["F049",0x7513], + ["F04A",0x765C], + ["F04B",0x7664], + ["F04C",0x7659], + ["F04D",0x7650], + ["F04E",0x7653], + ["F04F",0x7657], + ["F050",0x765A], + ["F051",0x76A6], + ["F052",0x76BD], + ["F053",0x76EC], + ["F054",0x77C2], + ["F055",0x77BA], + ["F056",0x78FF], + ["F057",0x790C], + ["F058",0x7913], + ["F059",0x7914], + ["F05A",0x7909], + ["F05B",0x7910], + ["F05C",0x7912], + ["F05D",0x7911], + ["F05E",0x79AD], + ["F05F",0x79AC], + ["F060",0x7A5F], + ["F061",0x7C1C], + ["F062",0x7C29], + ["F063",0x7C19], + ["F064",0x7C20], + ["F065",0x7C1F], + ["F066",0x7C2D], + ["F067",0x7C1D], + ["F068",0x7C26], + ["F069",0x7C28], + ["F06A",0x7C22], + ["F06B",0x7C25], + ["F06C",0x7C30], + ["F06D",0x7E5C], + ["F06E",0x7E50], + ["F06F",0x7E56], + ["F070",0x7E63], + ["F071",0x7E58], + ["F072",0x7E62], + ["F073",0x7E5F], + ["F074",0x7E51], + ["F075",0x7E60], + ["F076",0x7E57], + ["F077",0x7E53], + ["F078",0x7FB5], + ["F079",0x7FB3], + ["F07A",0x7FF7], + ["F07B",0x7FF8], + ["F07C",0x8075], + ["F07D",0x81D1], + ["F07E",0x81D2], + ["F0A1",0x81D0], + ["F0A2",0x825F], + ["F0A3",0x825E], + ["F0A4",0x85B4], + ["F0A5",0x85C6], + ["F0A6",0x85C0], + ["F0A7",0x85C3], + ["F0A8",0x85C2], + ["F0A9",0x85B3], + ["F0AA",0x85B5], + ["F0AB",0x85BD], + ["F0AC",0x85C7], + ["F0AD",0x85C4], + ["F0AE",0x85BF], + ["F0AF",0x85CB], + ["F0B0",0x85CE], + ["F0B1",0x85C8], + ["F0B2",0x85C5], + ["F0B3",0x85B1], + ["F0B4",0x85B6], + ["F0B5",0x85D2], + ["F0B6",0x8624], + ["F0B7",0x85B8], + ["F0B8",0x85B7], + ["F0B9",0x85BE], + ["F0BA",0x8669], + ["F0BB",0x87E7], + ["F0BC",0x87E6], + ["F0BD",0x87E2], + ["F0BE",0x87DB], + ["F0BF",0x87EB], + ["F0C0",0x87EA], + ["F0C1",0x87E5], + ["F0C2",0x87DF], + ["F0C3",0x87F3], + ["F0C4",0x87E4], + ["F0C5",0x87D4], + ["F0C6",0x87DC], + ["F0C7",0x87D3], + ["F0C8",0x87ED], + ["F0C9",0x87D8], + ["F0CA",0x87E3], + ["F0CB",0x87A4], + ["F0CC",0x87D7], + ["F0CD",0x87D9], + ["F0CE",0x8801], + ["F0CF",0x87F4], + ["F0D0",0x87E8], + ["F0D1",0x87DD], + ["F0D2",0x8953], + ["F0D3",0x894B], + ["F0D4",0x894F], + ["F0D5",0x894C], + ["F0D6",0x8946], + ["F0D7",0x8950], + ["F0D8",0x8951], + ["F0D9",0x8949], + ["F0DA",0x8B2A], + ["F0DB",0x8B27], + ["F0DC",0x8B23], + ["F0DD",0x8B33], + ["F0DE",0x8B30], + ["F0DF",0x8B35], + ["F0E0",0x8B47], + ["F0E1",0x8B2F], + ["F0E2",0x8B3C], + ["F0E3",0x8B3E], + ["F0E4",0x8B31], + ["F0E5",0x8B25], + ["F0E6",0x8B37], + ["F0E7",0x8B26], + ["F0E8",0x8B36], + ["F0E9",0x8B2E], + ["F0EA",0x8B24], + ["F0EB",0x8B3B], + ["F0EC",0x8B3D], + ["F0ED",0x8B3A], + ["F0EE",0x8C42], + ["F0EF",0x8C75], + ["F0F0",0x8C99], + ["F0F1",0x8C98], + ["F0F2",0x8C97], + ["F0F3",0x8CFE], + ["F0F4",0x8D04], + ["F0F5",0x8D02], + ["F0F6",0x8D00], + ["F0F7",0x8E5C], + ["F0F8",0x8E62], + ["F0F9",0x8E60], + ["F0FA",0x8E57], + ["F0FB",0x8E56], + ["F0FC",0x8E5E], + ["F0FD",0x8E65], + ["F0FE",0x8E67], + ["F140",0x8E5B], + ["F141",0x8E5A], + ["F142",0x8E61], + ["F143",0x8E5D], + ["F144",0x8E69], + ["F145",0x8E54], + ["F146",0x8F46], + ["F147",0x8F47], + ["F148",0x8F48], + ["F149",0x8F4B], + ["F14A",0x9128], + ["F14B",0x913A], + ["F14C",0x913B], + ["F14D",0x913E], + ["F14E",0x91A8], + ["F14F",0x91A5], + ["F150",0x91A7], + ["F151",0x91AF], + ["F152",0x91AA], + ["F153",0x93B5], + ["F154",0x938C], + ["F155",0x9392], + ["F156",0x93B7], + ["F157",0x939B], + ["F158",0x939D], + ["F159",0x9389], + ["F15A",0x93A7], + ["F15B",0x938E], + ["F15C",0x93AA], + ["F15D",0x939E], + ["F15E",0x93A6], + ["F15F",0x9395], + ["F160",0x9388], + ["F161",0x9399], + ["F162",0x939F], + ["F163",0x938D], + ["F164",0x93B1], + ["F165",0x9391], + ["F166",0x93B2], + ["F167",0x93A4], + ["F168",0x93A8], + ["F169",0x93B4], + ["F16A",0x93A3], + ["F16B",0x93A5], + ["F16C",0x95D2], + ["F16D",0x95D3], + ["F16E",0x95D1], + ["F16F",0x96B3], + ["F170",0x96D7], + ["F171",0x96DA], + ["F172",0x5DC2], + ["F173",0x96DF], + ["F174",0x96D8], + ["F175",0x96DD], + ["F176",0x9723], + ["F177",0x9722], + ["F178",0x9725], + ["F179",0x97AC], + ["F17A",0x97AE], + ["F17B",0x97A8], + ["F17C",0x97AB], + ["F17D",0x97A4], + ["F17E",0x97AA], + ["F1A1",0x97A2], + ["F1A2",0x97A5], + ["F1A3",0x97D7], + ["F1A4",0x97D9], + ["F1A5",0x97D6], + ["F1A6",0x97D8], + ["F1A7",0x97FA], + ["F1A8",0x9850], + ["F1A9",0x9851], + ["F1AA",0x9852], + ["F1AB",0x98B8], + ["F1AC",0x9941], + ["F1AD",0x993C], + ["F1AE",0x993A], + ["F1AF",0x9A0F], + ["F1B0",0x9A0B], + ["F1B1",0x9A09], + ["F1B2",0x9A0D], + ["F1B3",0x9A04], + ["F1B4",0x9A11], + ["F1B5",0x9A0A], + ["F1B6",0x9A05], + ["F1B7",0x9A07], + ["F1B8",0x9A06], + ["F1B9",0x9AC0], + ["F1BA",0x9ADC], + ["F1BB",0x9B08], + ["F1BC",0x9B04], + ["F1BD",0x9B05], + ["F1BE",0x9B29], + ["F1BF",0x9B35], + ["F1C0",0x9B4A], + ["F1C1",0x9B4C], + ["F1C2",0x9B4B], + ["F1C3",0x9BC7], + ["F1C4",0x9BC6], + ["F1C5",0x9BC3], + ["F1C6",0x9BBF], + ["F1C7",0x9BC1], + ["F1C8",0x9BB5], + ["F1C9",0x9BB8], + ["F1CA",0x9BD3], + ["F1CB",0x9BB6], + ["F1CC",0x9BC4], + ["F1CD",0x9BB9], + ["F1CE",0x9BBD], + ["F1CF",0x9D5C], + ["F1D0",0x9D53], + ["F1D1",0x9D4F], + ["F1D2",0x9D4A], + ["F1D3",0x9D5B], + ["F1D4",0x9D4B], + ["F1D5",0x9D59], + ["F1D6",0x9D56], + ["F1D7",0x9D4C], + ["F1D8",0x9D57], + ["F1D9",0x9D52], + ["F1DA",0x9D54], + ["F1DB",0x9D5F], + ["F1DC",0x9D58], + ["F1DD",0x9D5A], + ["F1DE",0x9E8E], + ["F1DF",0x9E8C], + ["F1E0",0x9EDF], + ["F1E1",0x9F01], + ["F1E2",0x9F00], + ["F1E3",0x9F16], + ["F1E4",0x9F25], + ["F1E5",0x9F2B], + ["F1E6",0x9F2A], + ["F1E7",0x9F29], + ["F1E8",0x9F28], + ["F1E9",0x9F4C], + ["F1EA",0x9F55], + ["F1EB",0x5134], + ["F1EC",0x5135], + ["F1ED",0x5296], + ["F1EE",0x52F7], + ["F1EF",0x53B4], + ["F1F0",0x56AB], + ["F1F1",0x56AD], + ["F1F2",0x56A6], + ["F1F3",0x56A7], + ["F1F4",0x56AA], + ["F1F5",0x56AC], + ["F1F6",0x58DA], + ["F1F7",0x58DD], + ["F1F8",0x58DB], + ["F1F9",0x5912], + ["F1FA",0x5B3D], + ["F1FB",0x5B3E], + ["F1FC",0x5B3F], + ["F1FD",0x5DC3], + ["F1FE",0x5E70], + ["F240",0x5FBF], + ["F241",0x61FB], + ["F242",0x6507], + ["F243",0x6510], + ["F244",0x650D], + ["F245",0x6509], + ["F246",0x650C], + ["F247",0x650E], + ["F248",0x6584], + ["F249",0x65DE], + ["F24A",0x65DD], + ["F24B",0x66DE], + ["F24C",0x6AE7], + ["F24D",0x6AE0], + ["F24E",0x6ACC], + ["F24F",0x6AD1], + ["F250",0x6AD9], + ["F251",0x6ACB], + ["F252",0x6ADF], + ["F253",0x6ADC], + ["F254",0x6AD0], + ["F255",0x6AEB], + ["F256",0x6ACF], + ["F257",0x6ACD], + ["F258",0x6ADE], + ["F259",0x6B60], + ["F25A",0x6BB0], + ["F25B",0x6C0C], + ["F25C",0x7019], + ["F25D",0x7027], + ["F25E",0x7020], + ["F25F",0x7016], + ["F260",0x702B], + ["F261",0x7021], + ["F262",0x7022], + ["F263",0x7023], + ["F264",0x7029], + ["F265",0x7017], + ["F266",0x7024], + ["F267",0x701C], + ["F268",0x702A], + ["F269",0x720C], + ["F26A",0x720A], + ["F26B",0x7207], + ["F26C",0x7202], + ["F26D",0x7205], + ["F26E",0x72A5], + ["F26F",0x72A6], + ["F270",0x72A4], + ["F271",0x72A3], + ["F272",0x72A1], + ["F273",0x74CB], + ["F274",0x74C5], + ["F275",0x74B7], + ["F276",0x74C3], + ["F277",0x7516], + ["F278",0x7660], + ["F279",0x77C9], + ["F27A",0x77CA], + ["F27B",0x77C4], + ["F27C",0x77F1], + ["F27D",0x791D], + ["F27E",0x791B], + ["F2A1",0x7921], + ["F2A2",0x791C], + ["F2A3",0x7917], + ["F2A4",0x791E], + ["F2A5",0x79B0], + ["F2A6",0x7A67], + ["F2A7",0x7A68], + ["F2A8",0x7C33], + ["F2A9",0x7C3C], + ["F2AA",0x7C39], + ["F2AB",0x7C2C], + ["F2AC",0x7C3B], + ["F2AD",0x7CEC], + ["F2AE",0x7CEA], + ["F2AF",0x7E76], + ["F2B0",0x7E75], + ["F2B1",0x7E78], + ["F2B2",0x7E70], + ["F2B3",0x7E77], + ["F2B4",0x7E6F], + ["F2B5",0x7E7A], + ["F2B6",0x7E72], + ["F2B7",0x7E74], + ["F2B8",0x7E68], + ["F2B9",0x7F4B], + ["F2BA",0x7F4A], + ["F2BB",0x7F83], + ["F2BC",0x7F86], + ["F2BD",0x7FB7], + ["F2BE",0x7FFD], + ["F2BF",0x7FFE], + ["F2C0",0x8078], + ["F2C1",0x81D7], + ["F2C2",0x81D5], + ["F2C3",0x8264], + ["F2C4",0x8261], + ["F2C5",0x8263], + ["F2C6",0x85EB], + ["F2C7",0x85F1], + ["F2C8",0x85ED], + ["F2C9",0x85D9], + ["F2CA",0x85E1], + ["F2CB",0x85E8], + ["F2CC",0x85DA], + ["F2CD",0x85D7], + ["F2CE",0x85EC], + ["F2CF",0x85F2], + ["F2D0",0x85F8], + ["F2D1",0x85D8], + ["F2D2",0x85DF], + ["F2D3",0x85E3], + ["F2D4",0x85DC], + ["F2D5",0x85D1], + ["F2D6",0x85F0], + ["F2D7",0x85E6], + ["F2D8",0x85EF], + ["F2D9",0x85DE], + ["F2DA",0x85E2], + ["F2DB",0x8800], + ["F2DC",0x87FA], + ["F2DD",0x8803], + ["F2DE",0x87F6], + ["F2DF",0x87F7], + ["F2E0",0x8809], + ["F2E1",0x880C], + ["F2E2",0x880B], + ["F2E3",0x8806], + ["F2E4",0x87FC], + ["F2E5",0x8808], + ["F2E6",0x87FF], + ["F2E7",0x880A], + ["F2E8",0x8802], + ["F2E9",0x8962], + ["F2EA",0x895A], + ["F2EB",0x895B], + ["F2EC",0x8957], + ["F2ED",0x8961], + ["F2EE",0x895C], + ["F2EF",0x8958], + ["F2F0",0x895D], + ["F2F1",0x8959], + ["F2F2",0x8988], + ["F2F3",0x89B7], + ["F2F4",0x89B6], + ["F2F5",0x89F6], + ["F2F6",0x8B50], + ["F2F7",0x8B48], + ["F2F8",0x8B4A], + ["F2F9",0x8B40], + ["F2FA",0x8B53], + ["F2FB",0x8B56], + ["F2FC",0x8B54], + ["F2FD",0x8B4B], + ["F2FE",0x8B55], + ["F340",0x8B51], + ["F341",0x8B42], + ["F342",0x8B52], + ["F343",0x8B57], + ["F344",0x8C43], + ["F345",0x8C77], + ["F346",0x8C76], + ["F347",0x8C9A], + ["F348",0x8D06], + ["F349",0x8D07], + ["F34A",0x8D09], + ["F34B",0x8DAC], + ["F34C",0x8DAA], + ["F34D",0x8DAD], + ["F34E",0x8DAB], + ["F34F",0x8E6D], + ["F350",0x8E78], + ["F351",0x8E73], + ["F352",0x8E6A], + ["F353",0x8E6F], + ["F354",0x8E7B], + ["F355",0x8EC2], + ["F356",0x8F52], + ["F357",0x8F51], + ["F358",0x8F4F], + ["F359",0x8F50], + ["F35A",0x8F53], + ["F35B",0x8FB4], + ["F35C",0x9140], + ["F35D",0x913F], + ["F35E",0x91B0], + ["F35F",0x91AD], + ["F360",0x93DE], + ["F361",0x93C7], + ["F362",0x93CF], + ["F363",0x93C2], + ["F364",0x93DA], + ["F365",0x93D0], + ["F366",0x93F9], + ["F367",0x93EC], + ["F368",0x93CC], + ["F369",0x93D9], + ["F36A",0x93A9], + ["F36B",0x93E6], + ["F36C",0x93CA], + ["F36D",0x93D4], + ["F36E",0x93EE], + ["F36F",0x93E3], + ["F370",0x93D5], + ["F371",0x93C4], + ["F372",0x93CE], + ["F373",0x93C0], + ["F374",0x93D2], + ["F375",0x93E7], + ["F376",0x957D], + ["F377",0x95DA], + ["F378",0x95DB], + ["F379",0x96E1], + ["F37A",0x9729], + ["F37B",0x972B], + ["F37C",0x972C], + ["F37D",0x9728], + ["F37E",0x9726], + ["F3A1",0x97B3], + ["F3A2",0x97B7], + ["F3A3",0x97B6], + ["F3A4",0x97DD], + ["F3A5",0x97DE], + ["F3A6",0x97DF], + ["F3A7",0x985C], + ["F3A8",0x9859], + ["F3A9",0x985D], + ["F3AA",0x9857], + ["F3AB",0x98BF], + ["F3AC",0x98BD], + ["F3AD",0x98BB], + ["F3AE",0x98BE], + ["F3AF",0x9948], + ["F3B0",0x9947], + ["F3B1",0x9943], + ["F3B2",0x99A6], + ["F3B3",0x99A7], + ["F3B4",0x9A1A], + ["F3B5",0x9A15], + ["F3B6",0x9A25], + ["F3B7",0x9A1D], + ["F3B8",0x9A24], + ["F3B9",0x9A1B], + ["F3BA",0x9A22], + ["F3BB",0x9A20], + ["F3BC",0x9A27], + ["F3BD",0x9A23], + ["F3BE",0x9A1E], + ["F3BF",0x9A1C], + ["F3C0",0x9A14], + ["F3C1",0x9AC2], + ["F3C2",0x9B0B], + ["F3C3",0x9B0A], + ["F3C4",0x9B0E], + ["F3C5",0x9B0C], + ["F3C6",0x9B37], + ["F3C7",0x9BEA], + ["F3C8",0x9BEB], + ["F3C9",0x9BE0], + ["F3CA",0x9BDE], + ["F3CB",0x9BE4], + ["F3CC",0x9BE6], + ["F3CD",0x9BE2], + ["F3CE",0x9BF0], + ["F3CF",0x9BD4], + ["F3D0",0x9BD7], + ["F3D1",0x9BEC], + ["F3D2",0x9BDC], + ["F3D3",0x9BD9], + ["F3D4",0x9BE5], + ["F3D5",0x9BD5], + ["F3D6",0x9BE1], + ["F3D7",0x9BDA], + ["F3D8",0x9D77], + ["F3D9",0x9D81], + ["F3DA",0x9D8A], + ["F3DB",0x9D84], + ["F3DC",0x9D88], + ["F3DD",0x9D71], + ["F3DE",0x9D80], + ["F3DF",0x9D78], + ["F3E0",0x9D86], + ["F3E1",0x9D8B], + ["F3E2",0x9D8C], + ["F3E3",0x9D7D], + ["F3E4",0x9D6B], + ["F3E5",0x9D74], + ["F3E6",0x9D75], + ["F3E7",0x9D70], + ["F3E8",0x9D69], + ["F3E9",0x9D85], + ["F3EA",0x9D73], + ["F3EB",0x9D7B], + ["F3EC",0x9D82], + ["F3ED",0x9D6F], + ["F3EE",0x9D79], + ["F3EF",0x9D7F], + ["F3F0",0x9D87], + ["F3F1",0x9D68], + ["F3F2",0x9E94], + ["F3F3",0x9E91], + ["F3F4",0x9EC0], + ["F3F5",0x9EFC], + ["F3F6",0x9F2D], + ["F3F7",0x9F40], + ["F3F8",0x9F41], + ["F3F9",0x9F4D], + ["F3FA",0x9F56], + ["F3FB",0x9F57], + ["F3FC",0x9F58], + ["F3FD",0x5337], + ["F3FE",0x56B2], + ["F440",0x56B5], + ["F441",0x56B3], + ["F442",0x58E3], + ["F443",0x5B45], + ["F444",0x5DC6], + ["F445",0x5DC7], + ["F446",0x5EEE], + ["F447",0x5EEF], + ["F448",0x5FC0], + ["F449",0x5FC1], + ["F44A",0x61F9], + ["F44B",0x6517], + ["F44C",0x6516], + ["F44D",0x6515], + ["F44E",0x6513], + ["F44F",0x65DF], + ["F450",0x66E8], + ["F451",0x66E3], + ["F452",0x66E4], + ["F453",0x6AF3], + ["F454",0x6AF0], + ["F455",0x6AEA], + ["F456",0x6AE8], + ["F457",0x6AF9], + ["F458",0x6AF1], + ["F459",0x6AEE], + ["F45A",0x6AEF], + ["F45B",0x703C], + ["F45C",0x7035], + ["F45D",0x702F], + ["F45E",0x7037], + ["F45F",0x7034], + ["F460",0x7031], + ["F461",0x7042], + ["F462",0x7038], + ["F463",0x703F], + ["F464",0x703A], + ["F465",0x7039], + ["F466",0x7040], + ["F467",0x703B], + ["F468",0x7033], + ["F469",0x7041], + ["F46A",0x7213], + ["F46B",0x7214], + ["F46C",0x72A8], + ["F46D",0x737D], + ["F46E",0x737C], + ["F46F",0x74BA], + ["F470",0x76AB], + ["F471",0x76AA], + ["F472",0x76BE], + ["F473",0x76ED], + ["F474",0x77CC], + ["F475",0x77CE], + ["F476",0x77CF], + ["F477",0x77CD], + ["F478",0x77F2], + ["F479",0x7925], + ["F47A",0x7923], + ["F47B",0x7927], + ["F47C",0x7928], + ["F47D",0x7924], + ["F47E",0x7929], + ["F4A1",0x79B2], + ["F4A2",0x7A6E], + ["F4A3",0x7A6C], + ["F4A4",0x7A6D], + ["F4A5",0x7AF7], + ["F4A6",0x7C49], + ["F4A7",0x7C48], + ["F4A8",0x7C4A], + ["F4A9",0x7C47], + ["F4AA",0x7C45], + ["F4AB",0x7CEE], + ["F4AC",0x7E7B], + ["F4AD",0x7E7E], + ["F4AE",0x7E81], + ["F4AF",0x7E80], + ["F4B0",0x7FBA], + ["F4B1",0x7FFF], + ["F4B2",0x8079], + ["F4B3",0x81DB], + ["F4B4",0x81D9], + ["F4B5",0x820B], + ["F4B6",0x8268], + ["F4B7",0x8269], + ["F4B8",0x8622], + ["F4B9",0x85FF], + ["F4BA",0x8601], + ["F4BB",0x85FE], + ["F4BC",0x861B], + ["F4BD",0x8600], + ["F4BE",0x85F6], + ["F4BF",0x8604], + ["F4C0",0x8609], + ["F4C1",0x8605], + ["F4C2",0x860C], + ["F4C3",0x85FD], + ["F4C4",0x8819], + ["F4C5",0x8810], + ["F4C6",0x8811], + ["F4C7",0x8817], + ["F4C8",0x8813], + ["F4C9",0x8816], + ["F4CA",0x8963], + ["F4CB",0x8966], + ["F4CC",0x89B9], + ["F4CD",0x89F7], + ["F4CE",0x8B60], + ["F4CF",0x8B6A], + ["F4D0",0x8B5D], + ["F4D1",0x8B68], + ["F4D2",0x8B63], + ["F4D3",0x8B65], + ["F4D4",0x8B67], + ["F4D5",0x8B6D], + ["F4D6",0x8DAE], + ["F4D7",0x8E86], + ["F4D8",0x8E88], + ["F4D9",0x8E84], + ["F4DA",0x8F59], + ["F4DB",0x8F56], + ["F4DC",0x8F57], + ["F4DD",0x8F55], + ["F4DE",0x8F58], + ["F4DF",0x8F5A], + ["F4E0",0x908D], + ["F4E1",0x9143], + ["F4E2",0x9141], + ["F4E3",0x91B7], + ["F4E4",0x91B5], + ["F4E5",0x91B2], + ["F4E6",0x91B3], + ["F4E7",0x940B], + ["F4E8",0x9413], + ["F4E9",0x93FB], + ["F4EA",0x9420], + ["F4EB",0x940F], + ["F4EC",0x9414], + ["F4ED",0x93FE], + ["F4EE",0x9415], + ["F4EF",0x9410], + ["F4F0",0x9428], + ["F4F1",0x9419], + ["F4F2",0x940D], + ["F4F3",0x93F5], + ["F4F4",0x9400], + ["F4F5",0x93F7], + ["F4F6",0x9407], + ["F4F7",0x940E], + ["F4F8",0x9416], + ["F4F9",0x9412], + ["F4FA",0x93FA], + ["F4FB",0x9409], + ["F4FC",0x93F8], + ["F4FD",0x940A], + ["F4FE",0x93FF], + ["F540",0x93FC], + ["F541",0x940C], + ["F542",0x93F6], + ["F543",0x9411], + ["F544",0x9406], + ["F545",0x95DE], + ["F546",0x95E0], + ["F547",0x95DF], + ["F548",0x972E], + ["F549",0x972F], + ["F54A",0x97B9], + ["F54B",0x97BB], + ["F54C",0x97FD], + ["F54D",0x97FE], + ["F54E",0x9860], + ["F54F",0x9862], + ["F550",0x9863], + ["F551",0x985F], + ["F552",0x98C1], + ["F553",0x98C2], + ["F554",0x9950], + ["F555",0x994E], + ["F556",0x9959], + ["F557",0x994C], + ["F558",0x994B], + ["F559",0x9953], + ["F55A",0x9A32], + ["F55B",0x9A34], + ["F55C",0x9A31], + ["F55D",0x9A2C], + ["F55E",0x9A2A], + ["F55F",0x9A36], + ["F560",0x9A29], + ["F561",0x9A2E], + ["F562",0x9A38], + ["F563",0x9A2D], + ["F564",0x9AC7], + ["F565",0x9ACA], + ["F566",0x9AC6], + ["F567",0x9B10], + ["F568",0x9B12], + ["F569",0x9B11], + ["F56A",0x9C0B], + ["F56B",0x9C08], + ["F56C",0x9BF7], + ["F56D",0x9C05], + ["F56E",0x9C12], + ["F56F",0x9BF8], + ["F570",0x9C40], + ["F571",0x9C07], + ["F572",0x9C0E], + ["F573",0x9C06], + ["F574",0x9C17], + ["F575",0x9C14], + ["F576",0x9C09], + ["F577",0x9D9F], + ["F578",0x9D99], + ["F579",0x9DA4], + ["F57A",0x9D9D], + ["F57B",0x9D92], + ["F57C",0x9D98], + ["F57D",0x9D90], + ["F57E",0x9D9B], + ["F5A1",0x9DA0], + ["F5A2",0x9D94], + ["F5A3",0x9D9C], + ["F5A4",0x9DAA], + ["F5A5",0x9D97], + ["F5A6",0x9DA1], + ["F5A7",0x9D9A], + ["F5A8",0x9DA2], + ["F5A9",0x9DA8], + ["F5AA",0x9D9E], + ["F5AB",0x9DA3], + ["F5AC",0x9DBF], + ["F5AD",0x9DA9], + ["F5AE",0x9D96], + ["F5AF",0x9DA6], + ["F5B0",0x9DA7], + ["F5B1",0x9E99], + ["F5B2",0x9E9B], + ["F5B3",0x9E9A], + ["F5B4",0x9EE5], + ["F5B5",0x9EE4], + ["F5B6",0x9EE7], + ["F5B7",0x9EE6], + ["F5B8",0x9F30], + ["F5B9",0x9F2E], + ["F5BA",0x9F5B], + ["F5BB",0x9F60], + ["F5BC",0x9F5E], + ["F5BD",0x9F5D], + ["F5BE",0x9F59], + ["F5BF",0x9F91], + ["F5C0",0x513A], + ["F5C1",0x5139], + ["F5C2",0x5298], + ["F5C3",0x5297], + ["F5C4",0x56C3], + ["F5C5",0x56BD], + ["F5C6",0x56BE], + ["F5C7",0x5B48], + ["F5C8",0x5B47], + ["F5C9",0x5DCB], + ["F5CA",0x5DCF], + ["F5CB",0x5EF1], + ["F5CC",0x61FD], + ["F5CD",0x651B], + ["F5CE",0x6B02], + ["F5CF",0x6AFC], + ["F5D0",0x6B03], + ["F5D1",0x6AF8], + ["F5D2",0x6B00], + ["F5D3",0x7043], + ["F5D4",0x7044], + ["F5D5",0x704A], + ["F5D6",0x7048], + ["F5D7",0x7049], + ["F5D8",0x7045], + ["F5D9",0x7046], + ["F5DA",0x721D], + ["F5DB",0x721A], + ["F5DC",0x7219], + ["F5DD",0x737E], + ["F5DE",0x7517], + ["F5DF",0x766A], + ["F5E0",0x77D0], + ["F5E1",0x792D], + ["F5E2",0x7931], + ["F5E3",0x792F], + ["F5E4",0x7C54], + ["F5E5",0x7C53], + ["F5E6",0x7CF2], + ["F5E7",0x7E8A], + ["F5E8",0x7E87], + ["F5E9",0x7E88], + ["F5EA",0x7E8B], + ["F5EB",0x7E86], + ["F5EC",0x7E8D], + ["F5ED",0x7F4D], + ["F5EE",0x7FBB], + ["F5EF",0x8030], + ["F5F0",0x81DD], + ["F5F1",0x8618], + ["F5F2",0x862A], + ["F5F3",0x8626], + ["F5F4",0x861F], + ["F5F5",0x8623], + ["F5F6",0x861C], + ["F5F7",0x8619], + ["F5F8",0x8627], + ["F5F9",0x862E], + ["F5FA",0x8621], + ["F5FB",0x8620], + ["F5FC",0x8629], + ["F5FD",0x861E], + ["F5FE",0x8625], + ["F640",0x8829], + ["F641",0x881D], + ["F642",0x881B], + ["F643",0x8820], + ["F644",0x8824], + ["F645",0x881C], + ["F646",0x882B], + ["F647",0x884A], + ["F648",0x896D], + ["F649",0x8969], + ["F64A",0x896E], + ["F64B",0x896B], + ["F64C",0x89FA], + ["F64D",0x8B79], + ["F64E",0x8B78], + ["F64F",0x8B45], + ["F650",0x8B7A], + ["F651",0x8B7B], + ["F652",0x8D10], + ["F653",0x8D14], + ["F654",0x8DAF], + ["F655",0x8E8E], + ["F656",0x8E8C], + ["F657",0x8F5E], + ["F658",0x8F5B], + ["F659",0x8F5D], + ["F65A",0x9146], + ["F65B",0x9144], + ["F65C",0x9145], + ["F65D",0x91B9], + ["F65E",0x943F], + ["F65F",0x943B], + ["F660",0x9436], + ["F661",0x9429], + ["F662",0x943D], + ["F663",0x943C], + ["F664",0x9430], + ["F665",0x9439], + ["F666",0x942A], + ["F667",0x9437], + ["F668",0x942C], + ["F669",0x9440], + ["F66A",0x9431], + ["F66B",0x95E5], + ["F66C",0x95E4], + ["F66D",0x95E3], + ["F66E",0x9735], + ["F66F",0x973A], + ["F670",0x97BF], + ["F671",0x97E1], + ["F672",0x9864], + ["F673",0x98C9], + ["F674",0x98C6], + ["F675",0x98C0], + ["F676",0x9958], + ["F677",0x9956], + ["F678",0x9A39], + ["F679",0x9A3D], + ["F67A",0x9A46], + ["F67B",0x9A44], + ["F67C",0x9A42], + ["F67D",0x9A41], + ["F67E",0x9A3A], + ["F6A1",0x9A3F], + ["F6A2",0x9ACD], + ["F6A3",0x9B15], + ["F6A4",0x9B17], + ["F6A5",0x9B18], + ["F6A6",0x9B16], + ["F6A7",0x9B3A], + ["F6A8",0x9B52], + ["F6A9",0x9C2B], + ["F6AA",0x9C1D], + ["F6AB",0x9C1C], + ["F6AC",0x9C2C], + ["F6AD",0x9C23], + ["F6AE",0x9C28], + ["F6AF",0x9C29], + ["F6B0",0x9C24], + ["F6B1",0x9C21], + ["F6B2",0x9DB7], + ["F6B3",0x9DB6], + ["F6B4",0x9DBC], + ["F6B5",0x9DC1], + ["F6B6",0x9DC7], + ["F6B7",0x9DCA], + ["F6B8",0x9DCF], + ["F6B9",0x9DBE], + ["F6BA",0x9DC5], + ["F6BB",0x9DC3], + ["F6BC",0x9DBB], + ["F6BD",0x9DB5], + ["F6BE",0x9DCE], + ["F6BF",0x9DB9], + ["F6C0",0x9DBA], + ["F6C1",0x9DAC], + ["F6C2",0x9DC8], + ["F6C3",0x9DB1], + ["F6C4",0x9DAD], + ["F6C5",0x9DCC], + ["F6C6",0x9DB3], + ["F6C7",0x9DCD], + ["F6C8",0x9DB2], + ["F6C9",0x9E7A], + ["F6CA",0x9E9C], + ["F6CB",0x9EEB], + ["F6CC",0x9EEE], + ["F6CD",0x9EED], + ["F6CE",0x9F1B], + ["F6CF",0x9F18], + ["F6D0",0x9F1A], + ["F6D1",0x9F31], + ["F6D2",0x9F4E], + ["F6D3",0x9F65], + ["F6D4",0x9F64], + ["F6D5",0x9F92], + ["F6D6",0x4EB9], + ["F6D7",0x56C6], + ["F6D8",0x56C5], + ["F6D9",0x56CB], + ["F6DA",0x5971], + ["F6DB",0x5B4B], + ["F6DC",0x5B4C], + ["F6DD",0x5DD5], + ["F6DE",0x5DD1], + ["F6DF",0x5EF2], + ["F6E0",0x6521], + ["F6E1",0x6520], + ["F6E2",0x6526], + ["F6E3",0x6522], + ["F6E4",0x6B0B], + ["F6E5",0x6B08], + ["F6E6",0x6B09], + ["F6E7",0x6C0D], + ["F6E8",0x7055], + ["F6E9",0x7056], + ["F6EA",0x7057], + ["F6EB",0x7052], + ["F6EC",0x721E], + ["F6ED",0x721F], + ["F6EE",0x72A9], + ["F6EF",0x737F], + ["F6F0",0x74D8], + ["F6F1",0x74D5], + ["F6F2",0x74D9], + ["F6F3",0x74D7], + ["F6F4",0x766D], + ["F6F5",0x76AD], + ["F6F6",0x7935], + ["F6F7",0x79B4], + ["F6F8",0x7A70], + ["F6F9",0x7A71], + ["F6FA",0x7C57], + ["F6FB",0x7C5C], + ["F6FC",0x7C59], + ["F6FD",0x7C5B], + ["F6FE",0x7C5A], + ["F740",0x7CF4], + ["F741",0x7CF1], + ["F742",0x7E91], + ["F743",0x7F4F], + ["F744",0x7F87], + ["F745",0x81DE], + ["F746",0x826B], + ["F747",0x8634], + ["F748",0x8635], + ["F749",0x8633], + ["F74A",0x862C], + ["F74B",0x8632], + ["F74C",0x8636], + ["F74D",0x882C], + ["F74E",0x8828], + ["F74F",0x8826], + ["F750",0x882A], + ["F751",0x8825], + ["F752",0x8971], + ["F753",0x89BF], + ["F754",0x89BE], + ["F755",0x89FB], + ["F756",0x8B7E], + ["F757",0x8B84], + ["F758",0x8B82], + ["F759",0x8B86], + ["F75A",0x8B85], + ["F75B",0x8B7F], + ["F75C",0x8D15], + ["F75D",0x8E95], + ["F75E",0x8E94], + ["F75F",0x8E9A], + ["F760",0x8E92], + ["F761",0x8E90], + ["F762",0x8E96], + ["F763",0x8E97], + ["F764",0x8F60], + ["F765",0x8F62], + ["F766",0x9147], + ["F767",0x944C], + ["F768",0x9450], + ["F769",0x944A], + ["F76A",0x944B], + ["F76B",0x944F], + ["F76C",0x9447], + ["F76D",0x9445], + ["F76E",0x9448], + ["F76F",0x9449], + ["F770",0x9446], + ["F771",0x973F], + ["F772",0x97E3], + ["F773",0x986A], + ["F774",0x9869], + ["F775",0x98CB], + ["F776",0x9954], + ["F777",0x995B], + ["F778",0x9A4E], + ["F779",0x9A53], + ["F77A",0x9A54], + ["F77B",0x9A4C], + ["F77C",0x9A4F], + ["F77D",0x9A48], + ["F77E",0x9A4A], + ["F7A1",0x9A49], + ["F7A2",0x9A52], + ["F7A3",0x9A50], + ["F7A4",0x9AD0], + ["F7A5",0x9B19], + ["F7A6",0x9B2B], + ["F7A7",0x9B3B], + ["F7A8",0x9B56], + ["F7A9",0x9B55], + ["F7AA",0x9C46], + ["F7AB",0x9C48], + ["F7AC",0x9C3F], + ["F7AD",0x9C44], + ["F7AE",0x9C39], + ["F7AF",0x9C33], + ["F7B0",0x9C41], + ["F7B1",0x9C3C], + ["F7B2",0x9C37], + ["F7B3",0x9C34], + ["F7B4",0x9C32], + ["F7B5",0x9C3D], + ["F7B6",0x9C36], + ["F7B7",0x9DDB], + ["F7B8",0x9DD2], + ["F7B9",0x9DDE], + ["F7BA",0x9DDA], + ["F7BB",0x9DCB], + ["F7BC",0x9DD0], + ["F7BD",0x9DDC], + ["F7BE",0x9DD1], + ["F7BF",0x9DDF], + ["F7C0",0x9DE9], + ["F7C1",0x9DD9], + ["F7C2",0x9DD8], + ["F7C3",0x9DD6], + ["F7C4",0x9DF5], + ["F7C5",0x9DD5], + ["F7C6",0x9DDD], + ["F7C7",0x9EB6], + ["F7C8",0x9EF0], + ["F7C9",0x9F35], + ["F7CA",0x9F33], + ["F7CB",0x9F32], + ["F7CC",0x9F42], + ["F7CD",0x9F6B], + ["F7CE",0x9F95], + ["F7CF",0x9FA2], + ["F7D0",0x513D], + ["F7D1",0x5299], + ["F7D2",0x58E8], + ["F7D3",0x58E7], + ["F7D4",0x5972], + ["F7D5",0x5B4D], + ["F7D6",0x5DD8], + ["F7D7",0x882F], + ["F7D8",0x5F4F], + ["F7D9",0x6201], + ["F7DA",0x6203], + ["F7DB",0x6204], + ["F7DC",0x6529], + ["F7DD",0x6525], + ["F7DE",0x6596], + ["F7DF",0x66EB], + ["F7E0",0x6B11], + ["F7E1",0x6B12], + ["F7E2",0x6B0F], + ["F7E3",0x6BCA], + ["F7E4",0x705B], + ["F7E5",0x705A], + ["F7E6",0x7222], + ["F7E7",0x7382], + ["F7E8",0x7381], + ["F7E9",0x7383], + ["F7EA",0x7670], + ["F7EB",0x77D4], + ["F7EC",0x7C67], + ["F7ED",0x7C66], + ["F7EE",0x7E95], + ["F7EF",0x826C], + ["F7F0",0x863A], + ["F7F1",0x8640], + ["F7F2",0x8639], + ["F7F3",0x863C], + ["F7F4",0x8631], + ["F7F5",0x863B], + ["F7F6",0x863E], + ["F7F7",0x8830], + ["F7F8",0x8832], + ["F7F9",0x882E], + ["F7FA",0x8833], + ["F7FB",0x8976], + ["F7FC",0x8974], + ["F7FD",0x8973], + ["F7FE",0x89FE], + ["F840",0x8B8C], + ["F841",0x8B8E], + ["F842",0x8B8B], + ["F843",0x8B88], + ["F844",0x8C45], + ["F845",0x8D19], + ["F846",0x8E98], + ["F847",0x8F64], + ["F848",0x8F63], + ["F849",0x91BC], + ["F84A",0x9462], + ["F84B",0x9455], + ["F84C",0x945D], + ["F84D",0x9457], + ["F84E",0x945E], + ["F84F",0x97C4], + ["F850",0x97C5], + ["F851",0x9800], + ["F852",0x9A56], + ["F853",0x9A59], + ["F854",0x9B1E], + ["F855",0x9B1F], + ["F856",0x9B20], + ["F857",0x9C52], + ["F858",0x9C58], + ["F859",0x9C50], + ["F85A",0x9C4A], + ["F85B",0x9C4D], + ["F85C",0x9C4B], + ["F85D",0x9C55], + ["F85E",0x9C59], + ["F85F",0x9C4C], + ["F860",0x9C4E], + ["F861",0x9DFB], + ["F862",0x9DF7], + ["F863",0x9DEF], + ["F864",0x9DE3], + ["F865",0x9DEB], + ["F866",0x9DF8], + ["F867",0x9DE4], + ["F868",0x9DF6], + ["F869",0x9DE1], + ["F86A",0x9DEE], + ["F86B",0x9DE6], + ["F86C",0x9DF2], + ["F86D",0x9DF0], + ["F86E",0x9DE2], + ["F86F",0x9DEC], + ["F870",0x9DF4], + ["F871",0x9DF3], + ["F872",0x9DE8], + ["F873",0x9DED], + ["F874",0x9EC2], + ["F875",0x9ED0], + ["F876",0x9EF2], + ["F877",0x9EF3], + ["F878",0x9F06], + ["F879",0x9F1C], + ["F87A",0x9F38], + ["F87B",0x9F37], + ["F87C",0x9F36], + ["F87D",0x9F43], + ["F87E",0x9F4F], + ["F8A1",0x9F71], + ["F8A2",0x9F70], + ["F8A3",0x9F6E], + ["F8A4",0x9F6F], + ["F8A5",0x56D3], + ["F8A6",0x56CD], + ["F8A7",0x5B4E], + ["F8A8",0x5C6D], + ["F8A9",0x652D], + ["F8AA",0x66ED], + ["F8AB",0x66EE], + ["F8AC",0x6B13], + ["F8AD",0x705F], + ["F8AE",0x7061], + ["F8AF",0x705D], + ["F8B0",0x7060], + ["F8B1",0x7223], + ["F8B2",0x74DB], + ["F8B3",0x74E5], + ["F8B4",0x77D5], + ["F8B5",0x7938], + ["F8B6",0x79B7], + ["F8B7",0x79B6], + ["F8B8",0x7C6A], + ["F8B9",0x7E97], + ["F8BA",0x7F89], + ["F8BB",0x826D], + ["F8BC",0x8643], + ["F8BD",0x8838], + ["F8BE",0x8837], + ["F8BF",0x8835], + ["F8C0",0x884B], + ["F8C1",0x8B94], + ["F8C2",0x8B95], + ["F8C3",0x8E9E], + ["F8C4",0x8E9F], + ["F8C5",0x8EA0], + ["F8C6",0x8E9D], + ["F8C7",0x91BE], + ["F8C8",0x91BD], + ["F8C9",0x91C2], + ["F8CA",0x946B], + ["F8CB",0x9468], + ["F8CC",0x9469], + ["F8CD",0x96E5], + ["F8CE",0x9746], + ["F8CF",0x9743], + ["F8D0",0x9747], + ["F8D1",0x97C7], + ["F8D2",0x97E5], + ["F8D3",0x9A5E], + ["F8D4",0x9AD5], + ["F8D5",0x9B59], + ["F8D6",0x9C63], + ["F8D7",0x9C67], + ["F8D8",0x9C66], + ["F8D9",0x9C62], + ["F8DA",0x9C5E], + ["F8DB",0x9C60], + ["F8DC",0x9E02], + ["F8DD",0x9DFE], + ["F8DE",0x9E07], + ["F8DF",0x9E03], + ["F8E0",0x9E06], + ["F8E1",0x9E05], + ["F8E2",0x9E00], + ["F8E3",0x9E01], + ["F8E4",0x9E09], + ["F8E5",0x9DFF], + ["F8E6",0x9DFD], + ["F8E7",0x9E04], + ["F8E8",0x9EA0], + ["F8E9",0x9F1E], + ["F8EA",0x9F46], + ["F8EB",0x9F74], + ["F8EC",0x9F75], + ["F8ED",0x9F76], + ["F8EE",0x56D4], + ["F8EF",0x652E], + ["F8F0",0x65B8], + ["F8F1",0x6B18], + ["F8F2",0x6B19], + ["F8F3",0x6B17], + ["F8F4",0x6B1A], + ["F8F5",0x7062], + ["F8F6",0x7226], + ["F8F7",0x72AA], + ["F8F8",0x77D8], + ["F8F9",0x77D9], + ["F8FA",0x7939], + ["F8FB",0x7C69], + ["F8FC",0x7C6B], + ["F8FD",0x7CF6], + ["F8FE",0x7E9A], + ["F940",0x7E98], + ["F941",0x7E9B], + ["F942",0x7E99], + ["F943",0x81E0], + ["F944",0x81E1], + ["F945",0x8646], + ["F946",0x8647], + ["F947",0x8648], + ["F948",0x8979], + ["F949",0x897A], + ["F94A",0x897C], + ["F94B",0x897B], + ["F94C",0x89FF], + ["F94D",0x8B98], + ["F94E",0x8B99], + ["F94F",0x8EA5], + ["F950",0x8EA4], + ["F951",0x8EA3], + ["F952",0x946E], + ["F953",0x946D], + ["F954",0x946F], + ["F955",0x9471], + ["F956",0x9473], + ["F957",0x9749], + ["F958",0x9872], + ["F959",0x995F], + ["F95A",0x9C68], + ["F95B",0x9C6E], + ["F95C",0x9C6D], + ["F95D",0x9E0B], + ["F95E",0x9E0D], + ["F95F",0x9E10], + ["F960",0x9E0F], + ["F961",0x9E12], + ["F962",0x9E11], + ["F963",0x9EA1], + ["F964",0x9EF5], + ["F965",0x9F09], + ["F966",0x9F47], + ["F967",0x9F78], + ["F968",0x9F7B], + ["F969",0x9F7A], + ["F96A",0x9F79], + ["F96B",0x571E], + ["F96C",0x7066], + ["F96D",0x7C6F], + ["F96E",0x883C], + ["F96F",0x8DB2], + ["F970",0x8EA6], + ["F971",0x91C3], + ["F972",0x9474], + ["F973",0x9478], + ["F974",0x9476], + ["F975",0x9475], + ["F976",0x9A60], + ["F977",0x9C74], + ["F978",0x9C73], + ["F979",0x9C71], + ["F97A",0x9C75], + ["F97B",0x9E14], + ["F97C",0x9E13], + ["F97D",0x9EF6], + ["F97E",0x9F0A], + ["F9A1",0x9FA4], + ["F9A2",0x7068], + ["F9A3",0x7065], + ["F9A4",0x7CF7], + ["F9A5",0x866A], + ["F9A6",0x883E], + ["F9A7",0x883D], + ["F9A8",0x883F], + ["F9A9",0x8B9E], + ["F9AA",0x8C9C], + ["F9AB",0x8EA9], + ["F9AC",0x8EC9], + ["F9AD",0x974B], + ["F9AE",0x9873], + ["F9AF",0x9874], + ["F9B0",0x98CC], + ["F9B1",0x9961], + ["F9B2",0x99AB], + ["F9B3",0x9A64], + ["F9B4",0x9A66], + ["F9B5",0x9A67], + ["F9B6",0x9B24], + ["F9B7",0x9E15], + ["F9B8",0x9E17], + ["F9B9",0x9F48], + ["F9BA",0x6207], + ["F9BB",0x6B1E], + ["F9BC",0x7227], + ["F9BD",0x864C], + ["F9BE",0x8EA8], + ["F9BF",0x9482], + ["F9C0",0x9480], + ["F9C1",0x9481], + ["F9C2",0x9A69], + ["F9C3",0x9A68], + ["F9C4",0x9B2E], + ["F9C5",0x9E19], + ["F9C6",0x7229], + ["F9C7",0x864B], + ["F9C8",0x8B9F], + ["F9C9",0x9483], + ["F9CA",0x9C79], + ["F9CB",0x9EB7], + ["F9CC",0x7675], + ["F9CD",0x9A6B], + ["F9CE",0x9C7A], + ["F9CF",0x9E1D], + ["F9D0",0x7069], + ["F9D1",0x706A], + ["F9D2",0x9EA4], + ["F9D3",0x9F7E], + ["F9D4",0x9F49], + ["F9D5",0x9F98], + ["F9D6",0x7881], + ["F9D7",0x92B9], + ["F9D8",0x88CF], + ["F9D9",0x58BB], + ["F9DA",0x6052], + ["F9DB",0x7CA7], + ["F9DC",0x5AFA], + ["F9DD",0x2554], + ["F9DE",0x2566], + ["F9DF",0x2557], + ["F9E0",0x2560], + ["F9E1",0x256C], + ["F9E2",0x2563], + ["F9E3",0x255A], + ["F9E4",0x2569], + ["F9E5",0x255D], + ["F9E6",0x2552], + ["F9E7",0x2564], + ["F9E8",0x2555], + ["F9E9",0x255E], + ["F9EA",0x256A], + ["F9EB",0x2561], + ["F9EC",0x2558], + ["F9ED",0x2567], + ["F9EE",0x255B], + ["F9EF",0x2553], + ["F9F0",0x2565], + ["F9F1",0x2556], + ["F9F2",0x255F], + ["F9F3",0x256B], + ["F9F4",0x2562], + ["F9F5",0x2559], + ["F9F6",0x2568], + ["F9F7",0x255C], + ["F9F8",0x2551], + ["F9F9",0x2550], + ["F9FA",0x256D], + ["F9FB",0x256E], + ["F9FC",0x2570], + ["F9FD",0x256F], + ["F9FE",0x2593], + ["FA40",0xE000], + ["FA41",0xE001], + ["FA42",0xE002], + ["FA43",0xE003], + ["FA44",0xE004], + ["FA45",0xE005], + ["FA46",0xE006], + ["FA47",0xE007], + ["FA48",0xE008], + ["FA49",0xE009], + ["FA4A",0xE00A], + ["FA4B",0xE00B], + ["FA4C",0xE00C], + ["FA4D",0xE00D], + ["FA4E",0xE00E], + ["FA4F",0xE00F], + ["FA50",0xE010], + ["FA51",0xE011], + ["FA52",0xE012], + ["FA53",0xE013], + ["FA54",0xE014], + ["FA55",0xE015], + ["FA56",0xE016], + ["FA57",0xE017], + ["FA58",0xE018], + ["FA59",0xE019], + ["FA5A",0xE01A], + ["FA5B",0xE01B], + ["FA5C",0xE01C], + ["FA5D",0xE01D], + ["FA5E",0xE01E], + ["FA5F",0xE01F], + ["FA60",0xE020], + ["FA61",0xE021], + ["FA62",0xE022], + ["FA63",0xE023], + ["FA64",0x7232], + ["FA65",0x723C], + ["FA66",0x7266], + ["FA67",0x7282], + ["FA68",0x728F], + ["FA69",0x729F], + ["FA6A",0x72AD], + ["FA6B",0x72B1], + ["FA6C",0x72B8], + ["FA6D",0x72BE], + ["FA6E",0x72CD], + ["FA6F",0x72DB], + ["FA70",0x7324], + ["FA71",0x732F], + ["FA72",0x7338], + ["FA73",0x7339], + ["FA74",0x73BD], + ["FA75",0x73CE], + ["FA76",0x73F1], + ["FA77",0x7476], + ["FA78",0x74A2], + ["FA79",0x7501], + ["FA7A",0x7519], + ["FA7B",0x7523], + ["FA7C",0x753C], + ["FA7D",0x7544], + ["FA7E",0x7549], + ["FAA1",0x754D], + ["FAA2",0x756D], + ["FAA3",0x7582], + ["FAA4",0x7583], + ["FAA5",0x7589], + ["FAA6",0x75AC], + ["FAA7",0x75D6], + ["FAA8",0x75E9], + ["FAA9",0x7640], + ["FAAA",0x764D], + ["FAAB",0x7654], + ["FAAC",0x7668], + ["FAAD",0x7680], + ["FAAE",0x7683], + ["FAAF",0x7690], + ["FAB0",0x76B7], + ["FAB1",0x76B9], + ["FAB2",0x770D], + ["FAB3",0x771E], + ["FAB4",0x7743], + ["FAB5",0x7818], + ["FAB6",0x781C], + ["FAB7",0x7839], + ["FAB8",0x783C], + ["FAB9",0x7847], + ["FABA",0x7856], + ["FABB",0x787A], + ["FABC",0x78B5], + ["FABD",0x78B9], + ["FABE",0x78C6], + ["FABF",0x78D9], + ["FAC0",0x7907], + ["FAC1",0x7930], + ["FAC2",0x7934], + ["FAC3",0x793B], + ["FAC4",0x7980], + ["FAC5",0x799D], + ["FAC6",0x79C3], + ["FAC7",0x79E1], + ["FAC8",0x7A06], + ["FAC9",0x7A0E], + ["FACA",0x7A43], + ["FACB",0x7A50], + ["FACC",0x7AC3], + ["FACD",0x7AD2], + ["FACE",0x7AE2], + ["FACF",0x7AE7], + ["FAD0",0x7AF8], + ["FAD1",0x7B36], + ["FAD2",0x7B62], + ["FAD3",0x7B6C], + ["FAD4",0x7B7A], + ["FAD5",0x7B7B], + ["FAD6",0x7B9A], + ["FAD7",0x7B9E], + ["FAD8",0x7B9F], + ["FAD9",0x7BA2], + ["FADA",0x7BA7], + ["FADB",0x7BF6], + ["FADC",0x7C12], + ["FADD",0x7C14], + ["FADE",0x7C4F], + ["FADF",0x7C56], + ["FAE0",0x7C58], + ["FAE1",0x7CAB], + ["FAE2",0x7CFA], + ["FAE3",0x7D48], + ["FAE4",0x7D4B], + ["FAE5",0x7D77], + ["FAE6",0x7DD4], + ["FAE7",0x7DD5], + ["FAE8",0x7DD6], + ["FAE9",0x7DE4], + ["FAEA",0x7E4D], + ["FAEB",0x7E5D], + ["FAEC",0x7E7F], + ["FAED",0x7E89], + ["FAEE",0x7E8E], + ["FAEF",0x7E92], + ["FAF0",0x7ED4], + ["FAF1",0x7EF1], + ["FAF2",0x7F12], + ["FAF3",0x7F30], + ["FAF4",0x7F71], + ["FAF5",0x7F82], + ["FAF6",0x7FAE], + ["FAF7",0x7FC6], + ["FAF8",0x8020], + ["FAF9",0x8022], + ["FAFA",0x8025], + ["FAFB",0x8031], + ["FAFC",0x805F], + ["FAFD",0x8068], + ["FAFE",0x80AC], + ["FB40",0x80B7], + ["FB41",0x519A], + ["FB42",0x5416], + ["FB43",0x5414], + ["FB44",0x34DF], + ["FB45",0x4C7D], + ["FB46",0x62C3], + ["FB47",0xE0A4], + ["FB48",0xE0A5], + ["FB49",0xE0A6], + ["FB4A",0x54CB], + ["FB4B",0xE0A8], + ["FB4C",0x55BC], + ["FB4D",0x80B6], + ["FB4E",0x51A7], + ["FB4F",0xE0AC], + ["FB50",0xE0AD], + ["FB51",0xE0AE], + ["FB52",0x5513], + ["FB53",0x8226], + ["FB54",0xE0B1], + ["FB55",0x551E], + ["FB56",0x55DE], + ["FB57",0x63B9], + ["FB58",0x6898], + ["FB59",0xE0B6], + ["FB5A",0x5502], + ["FB5B",0x5569], + ["FB5C",0x75B4], + ["FB5D",0x63FC], + ["FB5E",0x9E84], + ["FB5F",0x922A], + ["FB60",0xE0BD], + ["FB61",0xE0BE], + ["FB62",0xE0BF], + ["FB63",0x88C7], + ["FB64",0x609E], + ["FB65",0x5625], + ["FB66",0x7145], + ["FB67",0x5AF2], + ["FB68",0xE0C5], + ["FB69",0x528F], + ["FB6A",0x564F], + ["FB6B",0x7793], + ["FB6C",0x8786], + ["FB6D",0x8E2D], + ["FB6E",0x81B6], + ["FB6F",0x35FE], + ["FB70",0x71F6], + ["FB71",0xE0CE], + ["FB72",0x8804], + ["FB73",0x9385], + ["FB74",0xE0D1], + ["FB75",0xE0D2], + ["FB76",0x7666], + ["FB77",0xE0D4], + ["FB78",0x9C72], + ["FB79",0xE0D6], + ["FB7A",0x62CE], + ["FB7B",0xE0D8], + ["FB7C",0x9E96], + ["FB7D",0x4989], + ["FB7E",0x7CD3], + ["FBA1",0x8EDA], + ["FBA2",0x9EAB], + ["FBA3",0x64E7], + ["FBA4",0xE0DF], + ["FBA5",0x82AA], + ["FBA6",0x6767], + ["FBA7",0x6D72], + ["FBA8",0x7906], + ["FBA9",0x79C4], + ["FBAA",0x7F4E], + ["FBAB",0x87EE], + ["FBAC",0xE0E7], + ["FBAD",0x83BE], + ["FBAE",0x862F], + ["FBAF",0x89A5], + ["FBB0",0x460F], + ["FBB1",0xE0EC], + ["FBB2",0x98C8], + ["FBB3",0x9940], + ["FBB4",0x994D], + ["FBB5",0x9A0C], + ["FBB6",0x9AD7], + ["FBB7",0x9E98], + ["FBB8",0x9F26], + ["FBB9",0xE0F4], + ["FBBA",0x4F03], + ["FBBB",0xE0F6], + ["FBBC",0x4F39], + ["FBBD",0x4F32], + ["FBBE",0x4FAB], + ["FBBF",0x5056], + ["FBC0",0xE0FB], + ["FBC1",0x502E], + ["FBC2",0x50A6], + ["FBC3",0x50D9], + ["FBC4",0x510E], + ["FBC5",0x50ED], + ["FBC6",0x5101], + ["FBC7",0x51F4], + ["FBC8",0x521F], + ["FBC9",0x5260], + ["FBCA",0x5257], + ["FBCB",0x529A], + ["FBCC",0x52D1], + ["FBCD",0x52E0], + ["FBCE",0x52E1], + ["FBCF",0x51D3], + ["FBD0",0x51DF], + ["FBD1",0x7546], + ["FBD2",0x51FE], + ["FBD3",0x5332], + ["FBD4",0x532C], + ["FBD5",0x5333], + ["FBD6",0x53AB], + ["FBD7",0x53AA], + ["FBD8",0x9F8E], + ["FBD9",0x5469], + ["FBDA",0x549C], + ["FBDB",0x53DA], + ["FBDC",0x6ACA], + ["FBDD",0x5573], + ["FBDE",0xE119], + ["FBDF",0x35D6], + ["FBE0",0xE11B], + ["FBE1",0x5611], + ["FBE2",0x564D], + ["FBE3",0xE11E], + ["FBE4",0x5654], + ["FBE5",0x35F3], + ["FBE6",0xE121], + ["FBE7",0x5746], + ["FBE8",0x577A], + ["FBE9",0x5767], + ["FBEA",0x583A], + ["FBEB",0x57E6], + ["FBEC",0x57DD], + ["FBED",0x5840], + ["FBEE",0xE129], + ["FBEF",0x5826], + ["FBF0",0x58DC], + ["FBF1",0x59B7], + ["FBF2",0x59D9], + ["FBF3",0x5C20], + ["FBF4",0xE12F], + ["FBF5",0x5CD1], + ["FBF6",0x5CE9], + ["FBF7",0x5D46], + ["FBF8",0x5D8E], + ["FBF9",0xE134], + ["FBFA",0x5DF5], + ["FBFB",0x5E0B], + ["FBFC",0x5E12], + ["FBFD",0x5E2E], + ["FBFE",0x5E5E], + ["FC40",0xE13A], + ["FC41",0x5F4D], + ["FC42",0x7A7D], + ["FC43",0x5BC3], + ["FC44",0x7ABB], + ["FC45",0xE13F], + ["FC46",0xE140], + ["FC47",0x5FA4], + ["FC48",0x5FBA], + ["FC49",0x5FBC], + ["FC4A",0xE144], + ["FC4B",0x6077], + ["FC4C",0x60A4], + ["FC4D",0x60B3], + ["FC4E",0x60FD], + ["FC4F",0x6130], + ["FC50",0xE14A], + ["FC51",0x619C], + ["FC52",0x6159], + ["FC53",0x617D], + ["FC54",0x615C], + ["FC55",0x637F], + ["FC56",0x61E2], + ["FC57",0x70D5], + ["FC58",0x6239], + ["FC59",0x6268], + ["FC5A",0x6285], + ["FC5B",0x6282], + ["FC5C",0x62A6], + ["FC5D",0x62D5], + ["FC5E",0x6364], + ["FC5F",0x6335], + ["FC60",0x6490], + ["FC61",0x3A5C], + ["FC62",0x6648], + ["FC63",0x6667], + ["FC64",0x671E], + ["FC65",0x6803], + ["FC66",0x67AC], + ["FC67",0x67F9], + ["FC68",0x68B6], + ["FC69",0x692C], + ["FC6A",0x6901], + ["FC6B",0x6900], + ["FC6C",0x68CA], + ["FC6D",0x6973], + ["FC6E",0x6980], + ["FC6F",0x693E], + ["FC70",0xE16A], + ["FC71",0x69B2], + ["FC72",0x69C0], + ["FC73",0x698A], + ["FC74",0x69FA], + ["FC75",0x69E9], + ["FC76",0x6AB2], + ["FC77",0x6A52], + ["FC78",0x6A9D], + ["FC79",0x6B1D], + ["FC7A",0x6B52], + ["FC7B",0x6BFA], + ["FC7C",0x3CD1], + ["FC7D",0x6CCE], + ["FC7E",0x6E4F], + ["FCA1",0x6DB9], + ["FCA2",0x6F44], + ["FCA3",0xE17B], + ["FCA4",0x6FDA], + ["FCA5",0x7081], + ["FCA6",0x79CC], + ["FCA7",0x7134], + ["FCA8",0x3DCC], + ["FCA9",0x7176], + ["FCAA",0xE182], + ["FCAB",0xE183], + ["FCAC",0x7215], + ["FCAD",0x7250], + ["FCAE",0x7287], + ["FCAF",0x732C], + ["FCB0",0x72B2], + ["FCB1",0x72E2], + ["FCB2",0x7302], + ["FCB3",0x7348], + ["FCB4",0x7328], + ["FCB5",0x734F], + ["FCB6",0x7371], + ["FCB7",0x6585], + ["FCB8",0xE190], + ["FCB9",0x745D], + ["FCBA",0x7468], + ["FCBB",0x751E], + ["FCBC",0x7553], + ["FCBD",0x757A], + ["FCBE",0x76A1], + ["FCBF",0x76CC], + ["FCC0",0x7724], + ["FCC1",0x772B], + ["FCC2",0x4065], + ["FCC3",0x7853], + ["FCC4",0x78D3], + ["FCC5",0x78D8], + ["FCC6",0x9D7E], + ["FCC7",0x78AF], + ["FCC8",0xE1A0], + ["FCC9",0x6142], + ["FCCA",0x79A9], + ["FCCB",0x9C3A], + ["FCCC",0x79D4], + ["FCCD",0xE1A5], + ["FCCE",0x7A2D], + ["FCCF",0x7A3E], + ["FCD0",0x7A49], + ["FCD1",0x7ADD], + ["FCD2",0x7ADA], + ["FCD3",0x75C3], + ["FCD4",0x7607], + ["FCD5",0x7602], + ["FCD6",0xE1AE], + ["FCD7",0x7667], + ["FCD8",0x766F], + ["FCD9",0x5620], + ["FCDA",0x8A67], + ["FCDB",0x9F17], + ["FCDC",0x7B1F], + ["FCDD",0x7B92], + ["FCDE",0x7BA3], + ["FCDF",0x7BCF], + ["FCE0",0xE1B8], + ["FCE1",0x7BFC], + ["FCE2",0x7C42], + ["FCE3",0x7C51], + ["FCE4",0x7C5D], + ["FCE5",0x7C70], + ["FCE6",0x7C7E], + ["FCE7",0x7C86], + ["FCE8",0x7C83], + ["FCE9",0x7CAC], + ["FCEA",0x7CC7], + ["FCEB",0x7CC2], + ["FCEC",0xE1C4], + ["FCED",0x7CDA], + ["FCEE",0xE1C6], + ["FCEF",0x7D4D], + ["FCF0",0x7D5A], + ["FCF1",0x7DF5], + ["FCF2",0x7E27], + ["FCF3",0x7E6E], + ["FCF4",0x9E95], + ["FCF5",0x5273], + ["FCF6",0x801D], + ["FCF7",0x8062], + ["FCF8",0x8063], + ["FCF9",0x8066], + ["FCFA",0x805B], + ["FCFB",0x80A6], + ["FCFC",0x8103], + ["FCFD",0x9E81], + ["FCFE",0x81C8], + ["FD40",0xE1D7], + ["FD41",0x8FA0], + ["FD42",0x81F6], + ["FD43",0x821A], + ["FD44",0xE1DB], + ["FD45",0x8771], + ["FD46",0x87A9], + ["FD47",0x878C], + ["FD48",0x9E9E], + ["FD49",0x87C1], + ["FD4A",0x9E1C], + ["FD4B",0xE1E2], + ["FD4C",0x87D6], + ["FD4D",0x87F5], + ["FD4E",0x880F], + ["FD4F",0x8818], + ["FD50",0x882D], + ["FD51",0x8842], + ["FD52",0x8845], + ["FD53",0x9C35], + ["FD54",0x886E], + ["FD55",0x88AA], + ["FD56",0x88A0], + ["FD57",0x629D], + ["FD58",0x8943], + ["FD59",0x894D], + ["FD5A",0x7172], + ["FD5B",0x885E], + ["FD5C",0xE1F3], + ["FD5D",0x82FD], + ["FD5E",0x44B7], + ["FD5F",0x82D0], + ["FD60",0x8385], + ["FD61",0x9D02], + ["FD62",0x9F69], + ["FD63",0x8420], + ["FD64",0xE1FB], + ["FD65",0x84DA], + ["FD66",0x84AD], + ["FD67",0x44FB], + ["FD68",0x854B], + ["FD69",0xE200], + ["FD6A",0x8602], + ["FD6B",0x8610], + ["FD6C",0x63D1], + ["FD6D",0x8989], + ["FD6E",0x898A], + ["FD6F",0x8994], + ["FD70",0x9C45], + ["FD71",0x89BC], + ["FD72",0x8A7E], + ["FD73",0x8A49], + ["FD74",0x8B0C], + ["FD75",0x8B43], + ["FD76",0x8B81], + ["FD77",0x8B4C], + ["FD78",0xE20F], + ["FD79",0x8CAD], + ["FD7A",0x8CEB], + ["FD7B",0x8CF7], + ["FD7C",0x8D0C], + ["FD7D",0x8D82], + ["FD7E",0x8DA6], + ["FDA1",0x8DD4], + ["FDA2",0x8E28], + ["FDA3",0x8E4F], + ["FDA4",0x8E77], + ["FDA5",0x8E75], + ["FDA6",0x8EA7], + ["FDA7",0x8F19], + ["FDA8",0xE21D], + ["FDA9",0x8F5C], + ["FDAA",0x9D44], + ["FDAB",0x90C4], + ["FDAC",0x9151], + ["FDAD",0xE222], + ["FDAE",0x915C], + ["FDAF",0x9159], + ["FDB0",0x9167], + ["FDB1",0x917C], + ["FDB2",0x918E], + ["FDB3",0x91BB], + ["FDB4",0x9EA8], + ["FDB5",0x9056], + ["FDB6",0x904C], + ["FDB7",0x91FE], + ["FDB8",0x9262], + ["FDB9",0x92BE], + ["FDBA",0x936B], + ["FDBB",0x936E], + ["FDBC",0x93BA], + ["FDBD",0x9427], + ["FDBE",0x9597], + ["FDBF",0x95A7], + ["FDC0",0xE235], + ["FDC1",0x9638], + ["FDC2",0xE237], + ["FDC3",0x9683], + ["FDC4",0x9696], + ["FDC5",0x9681], + ["FDC6",0x96BD], + ["FDC7",0x9703], + ["FDC8",0x9721], + ["FDC9",0x9731], + ["FDCA",0x975F], + ["FDCB",0x979F], + ["FDCC",0x97B4], + ["FDCD",0x97B8], + ["FDCE",0x97BA], + ["FDCF",0x97BE], + ["FDD0",0x97C8], + ["FDD1",0x9EBF], + ["FDD2",0x981F], + ["FDD3",0x982E], + ["FDD4",0x9FA5], + ["FDD5",0x9847], + ["FDD6",0x984B], + ["FDD7",0x9866], + ["FDD8",0x986C], + ["FDD9",0x98B4], + ["FDDA",0x9F5A], + ["FDDB",0x98DC], + ["FDDC",0x98E6], + ["FDDD",0x9942], + ["FDDE",0x9939], + ["FDDF",0x993B], + ["FDE0",0x9F53], + ["FDE1",0x994A], + ["FDE2",0x9F45], + ["FDE3",0x4B7E], + ["FDE4",0x99DA], + ["FDE5",0x7AC8], + ["FDE6",0x9ABA], + ["FDE7",0x9ABD], + ["FDE8",0x9F02], + ["FDE9",0x9B2A], + ["FDEA",0xE25F], + ["FDEB",0x9B2D], + ["FDEC",0x9AE2], + ["FDED",0x9B02], + ["FDEE",0x9AFF], + ["FDEF",0x4C07], + ["FDF0",0x9B09], + ["FDF1",0x4C04], + ["FDF2",0x4C3B], + ["FDF3",0x9B8F], + ["FDF4",0x9B9D], + ["FDF5",0x9BB0], + ["FDF6",0x9C0C], + ["FDF7",0x9C15], + ["FDF8",0x9C0A], + ["FDF9",0x9BFF], + ["FDFA",0x9C2E], + ["FDFB",0x80E8], + ["FDFC",0x80E9], + ["FDFD",0x80EC], + ["FDFE",0x810E], + ["FE40",0x6C39], + ["FE41",0x4E6A], + ["FE42",0x9641], + ["FE43",0x58F2], + ["FE44",0x7962], + ["FE45",0x6822], + ["FE46",0xE27A], + ["FE47",0xE27B], + ["FE48",0x8107], + ["FE49",0x57D7], + ["FE4A",0x44EA], + ["FE4B",0x6435], + ["FE4C",0x8534], + ["FE4D",0x40DF], + ["FE4E",0xE282], + ["FE4F",0x691A], + ["FE50",0x9C02], + ["FE51",0x75B1], + ["FE52",0x83D3], + ["FE53",0x7171], + ["FE54",0x6A0B], + ["FE55",0xE289], + ["FE56",0x6A7A], + ["FE57",0x9AF4], + ["FE58",0xE28C], + ["FE59",0xE28D], + ["FE5A",0x77B9], + ["FE5B",0x6530], + ["FE5C",0x6D96], + ["FE5D",0x5637], + ["FE5E",0x6725], + ["FE5F",0x6A2B], + ["FE60",0x7D5D], + ["FE61",0x9061], + ["FE62",0x4E98], + ["FE63",0x7CA6], + ["FE64",0x7B39], + ["FE65",0xE299], + ["FE66",0x5975], + ["FE67",0x36C7], + ["FE68",0x707F], + ["FE69",0xE29D], + ["FE6A",0x6E8B], + ["FE6B",0xE29F], + ["FE6C",0xE2A0], + ["FE6D",0x975D], + ["FE6E",0x92D0], + ["FE6F",0x5754], + ["FE70",0xE2A4], + ["FE71",0x3ED9], + ["FE72",0xE2A6], + ["FE73",0xE2A7], + ["FE74",0x6199], + ["FE75",0x7460], + ["FE76",0x713F], + ["FE77",0x792E], + ["FE78",0x5A96], + ["FE79",0x9348], + ["FE7A",0x668E], + ["FE7B",0x4FFD], + ["FE7C",0x9341], + ["FE7D",0x3654], + ["FE7E",0x5D75], + ["FEA1",0x701E], + ["FEA2",0x657B], + ["FEA3",0x708D], + ["FEA4",0x5ECD], + ["FEA5",0xE2B7], + ["FEA6",0x60A7], + ["FEA7",0x7AB0], + ["FEA8",0x5F63], + ["FEA9",0xE2BB], + ["FEAA",0x73F7], + ["FEAB",0xE2BD], + ["FEAC",0x7468], + ["FEAD",0x75B4], + ["FEAE",0xE2C0], + ["FEAF",0x9B69], + ["FEB0",0x00BD], + ["FEB1",0x2153], + ["FEB2",0x2154], + ["FEB3",0x00BC], + ["FEB4",0x00BE], + ["FEB5",0x2155], + ["FEB6",0x2156], + ["FEB7",0x2157], + ["FEB8",0x2158], + ["FEB9",0x2159], + ["FEBA",0x215A], + ["FEBB",0x8692], + ["FEBC",0x86A0], + ["FEBD",0x86AD], + ["FEBE",0x86B2], + ["FEBF",0x87A5], + ["FEC0",0x87B1], + ["FEC1",0x215B], + ["FEC2",0x215C], + ["FEC3",0x215D], + ["FEC4",0x215E], + ["FEC5",0x87DA], + ["FEC6",0x884F], + ["FEC7",0x8860], + ["FEC8",0x8887], + ["FEC9",0x888F], + ["FECA",0x8890], + ["FECB",0x88E6], + ["FECC",0x88FF], + ["FECD",0x8900], + ["FECE",0x8924], + ["FECF",0x8947], + ["FED0",0x8954], + ["FED1",0x8965], + ["FED2",0x8980], + ["FED3",0x8991], + ["FED4",0x8A1C], + ["FED5",0x8A29], + ["FED6",0x8A2B], + ["FED7",0x8A38], + ["FED8",0x8A3D], + ["FED9",0x2312], + ["FEDA",0x8A90], + ["FEDB",0x8A94], + ["FEDC",0x8A9C], + ["FEDD",0x8AA9], + ["FEDE",0x8AAF], + ["FEDF",0x8AB4], + ["FEE0",0x8AEA], + ["FEE1",0x8B1F], + ["FEE2",0x2030], + ["FEE3",0x8B3F], + ["FEE4",0x8B4D], + ["FEE5",0x8B5E], + ["FEE6",0x8B62], + ["FEE7",0x8B69], + ["FEE8",0x8B9B], + ["FEE9",0x8C51], + ["FEEA",0x8C9B], + ["FEEB",0x8C9F], + ["FEEC",0x8CD4], + ["FEED",0x8CD6], + ["FEEE",0x8112], + ["FEEF",0x8131], + ["FEF0",0x8136], + ["FEF1",0x815F], + ["FEF2",0x816D], + ["FEF3",0x817D], + ["FEF4",0x8193], + ["FEF5",0x81AA], + ["FEF6",0x81B8], + ["FEF7",0x81C1], + ["FEF8",0x8229], + ["FEF9",0x822D], + ["FEFA",0x822E], + ["FEFB",0x823E], + ["FEFC",0x8262], + ["FEFD",0x826A], + ["FEFE",0x8288], +] \ No newline at end of file diff --git a/enc/trans/big5.trans b/enc/trans/big5.trans index c91b821bbaec44..a808965f17aa74 100644 --- a/enc/trans/big5.trans +++ b/enc/trans/big5.trans @@ -3,12 +3,17 @@ <% require "big5-tbl" require "big5-hkscs-tbl" + require "big5-uao-tbl" transcode_tblgen "Big5", "UTF-8", [["{00-7f}", :nomap], *BIG5_TO_UCS_TBL] transcode_tblgen "UTF-8", "Big5", [["{00-7f}", :nomap], *BIG5_TO_UCS_TBL.map {|a,b| [b,a] }] transcode_tblgen "Big5-HKSCS", "UTF-8", [["{00-7f}", :nomap], *BIG5_HKSCS_TO_UCS_TBL] transcode_tblgen "UTF-8", "Big5-HKSCS", [["{00-7f}", :nomap], *BIG5_HKSCS_TO_UCS_TBL.map {|a,b| [b,a] }] + + transcode_tblgen "Big5-UAO", "UTF-8", [["{00-7f}", :nomap], *BIG5_UAO_TO_UCS_TBL] + transcode_tblgen "UTF-8", "Big5-UAO", [["{00-7f}", :nomap], *BIG5_UAO_TO_UCS_TBL.map {|a,b| [b,a] }] + %> <%= transcode_generated_code %> diff --git a/enc/trans/newline.trans b/enc/trans/newline.trans index d62034aa49e839..a200ec00a790e9 100644 --- a/enc/trans/newline.trans +++ b/enc/trans/newline.trans @@ -48,26 +48,26 @@ fun_so_universal_newline(void *statep, const unsigned char *s, size_t l, unsigne if (s[0] == '\n') { if (STATE == NORMAL) { NEWLINES_MET |= MET_LF; - o[0] = '\n'; - len = 1; } else { /* JUST_AFTER_CR */ NEWLINES_MET |= MET_CRLF; - len = 0; } + o[0] = '\n'; + len = 1; STATE = NORMAL; } else { - if (STATE == JUST_AFTER_CR) - NEWLINES_MET |= MET_CR; - if (s[0] == '\r') { + len = 0; + if (STATE == JUST_AFTER_CR) { o[0] = '\n'; len = 1; + NEWLINES_MET |= MET_CR; + } + if (s[0] == '\r') { STATE = JUST_AFTER_CR; } else { - o[0] = s[0]; - len = 1; + o[len++] = s[0]; STATE = NORMAL; } } @@ -79,10 +79,14 @@ static ssize_t universal_newline_finish(void *statep, unsigned char *o, size_t osize) { unsigned char *sp = statep; - if (STATE == JUST_AFTER_CR) + int len = 0; + if (STATE == JUST_AFTER_CR) { + o[0] = '\n'; + len = 1; NEWLINES_MET |= MET_CR; + } STATE = NORMAL; - return 0; + return len; } static const rb_transcoder @@ -91,7 +95,7 @@ rb_universal_newline = { TRANSCODE_TABLE_INFO, 1, /* input_unit_length */ 1, /* max_input */ - 1, /* max_output */ + 2, /* max_output */ asciicompat_converter, /* asciicompat_type */ 2, universal_newline_init, universal_newline_init, /* state_size, state_init, state_fini */ NULL, NULL, NULL, fun_so_universal_newline, diff --git a/enc/unicode/Scripts.txt b/enc/unicode/Scripts.txt deleted file mode 100644 index 7065486d3a5040..00000000000000 --- a/enc/unicode/Scripts.txt +++ /dev/null @@ -1,1747 +0,0 @@ -# Scripts-5.1.0.txt -# Date: 2008-03-20, 17:55:33 GMT [MD] -# -# Unicode Character Database -# Copyright (c) 1991-2008 Unicode, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# For documentation, see UCD.html - -# ================================================ - -# Property: Script - -# All code points not explicitly listed for Script -# have the value Unknown (Zzzz). - -# @missing: 0000..10FFFF; Unknown - -# ================================================ - -0000..001F ; Common # Cc [32] .. -0020 ; Common # Zs SPACE -0021..0023 ; Common # Po [3] EXCLAMATION MARK..NUMBER SIGN -0024 ; Common # Sc DOLLAR SIGN -0025..0027 ; Common # Po [3] PERCENT SIGN..APOSTROPHE -0028 ; Common # Ps LEFT PARENTHESIS -0029 ; Common # Pe RIGHT PARENTHESIS -002A ; Common # Po ASTERISK -002B ; Common # Sm PLUS SIGN -002C ; Common # Po COMMA -002D ; Common # Pd HYPHEN-MINUS -002E..002F ; Common # Po [2] FULL STOP..SOLIDUS -0030..0039 ; Common # Nd [10] DIGIT ZERO..DIGIT NINE -003A..003B ; Common # Po [2] COLON..SEMICOLON -003C..003E ; Common # Sm [3] LESS-THAN SIGN..GREATER-THAN SIGN -003F..0040 ; Common # Po [2] QUESTION MARK..COMMERCIAL AT -005B ; Common # Ps LEFT SQUARE BRACKET -005C ; Common # Po REVERSE SOLIDUS -005D ; Common # Pe RIGHT SQUARE BRACKET -005E ; Common # Sk CIRCUMFLEX ACCENT -005F ; Common # Pc LOW LINE -0060 ; Common # Sk GRAVE ACCENT -007B ; Common # Ps LEFT CURLY BRACKET -007C ; Common # Sm VERTICAL LINE -007D ; Common # Pe RIGHT CURLY BRACKET -007E ; Common # Sm TILDE -007F..009F ; Common # Cc [33] .. -00A0 ; Common # Zs NO-BREAK SPACE -00A1 ; Common # Po INVERTED EXCLAMATION MARK -00A2..00A5 ; Common # Sc [4] CENT SIGN..YEN SIGN -00A6..00A7 ; Common # So [2] BROKEN BAR..SECTION SIGN -00A8 ; Common # Sk DIAERESIS -00A9 ; Common # So COPYRIGHT SIGN -00AB ; Common # Pi LEFT-POINTING DOUBLE ANGLE QUOTATION MARK -00AC ; Common # Sm NOT SIGN -00AD ; Common # Cf SOFT HYPHEN -00AE ; Common # So REGISTERED SIGN -00AF ; Common # Sk MACRON -00B0 ; Common # So DEGREE SIGN -00B1 ; Common # Sm PLUS-MINUS SIGN -00B2..00B3 ; Common # No [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE -00B4 ; Common # Sk ACUTE ACCENT -00B5 ; Common # L& MICRO SIGN -00B6 ; Common # So PILCROW SIGN -00B7 ; Common # Po MIDDLE DOT -00B8 ; Common # Sk CEDILLA -00B9 ; Common # No SUPERSCRIPT ONE -00BB ; Common # Pf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -00BC..00BE ; Common # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS -00BF ; Common # Po INVERTED QUESTION MARK -00D7 ; Common # Sm MULTIPLICATION SIGN -00F7 ; Common # Sm DIVISION SIGN -02B9..02C1 ; Common # Lm [9] MODIFIER LETTER PRIME..MODIFIER LETTER REVERSED GLOTTAL STOP -02C2..02C5 ; Common # Sk [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD -02C6..02D1 ; Common # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON -02D2..02DF ; Common # Sk [14] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER CROSS ACCENT -02E5..02EB ; Common # Sk [7] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER YANG DEPARTING TONE MARK -02EC ; Common # Lm MODIFIER LETTER VOICING -02ED ; Common # Sk MODIFIER LETTER UNASPIRATED -02EE ; Common # Lm MODIFIER LETTER DOUBLE APOSTROPHE -02EF..02FF ; Common # Sk [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW -0374 ; Common # Lm GREEK NUMERAL SIGN -037E ; Common # Po GREEK QUESTION MARK -0385 ; Common # Sk GREEK DIALYTIKA TONOS -0387 ; Common # Po GREEK ANO TELEIA -0589 ; Common # Po ARMENIAN FULL STOP -0600..0603 ; Common # Cf [4] ARABIC NUMBER SIGN..ARABIC SIGN SAFHA -060C ; Common # Po ARABIC COMMA -061B ; Common # Po ARABIC SEMICOLON -061F ; Common # Po ARABIC QUESTION MARK -0640 ; Common # Lm ARABIC TATWEEL -0660..0669 ; Common # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE -06DD ; Common # Cf ARABIC END OF AYAH -0964..0965 ; Common # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA -0970 ; Common # Po DEVANAGARI ABBREVIATION SIGN -0CF1..0CF2 ; Common # So [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA -0E3F ; Common # Sc THAI CURRENCY SYMBOL BAHT -10FB ; Common # Po GEORGIAN PARAGRAPH SEPARATOR -16EB..16ED ; Common # Po [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION -1735..1736 ; Common # Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION -1802..1803 ; Common # Po [2] MONGOLIAN COMMA..MONGOLIAN FULL STOP -1805 ; Common # Po MONGOLIAN FOUR DOTS -2000..200A ; Common # Zs [11] EN QUAD..HAIR SPACE -200B ; Common # Cf ZERO WIDTH SPACE -200E..200F ; Common # Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK -2010..2015 ; Common # Pd [6] HYPHEN..HORIZONTAL BAR -2016..2017 ; Common # Po [2] DOUBLE VERTICAL LINE..DOUBLE LOW LINE -2018 ; Common # Pi LEFT SINGLE QUOTATION MARK -2019 ; Common # Pf RIGHT SINGLE QUOTATION MARK -201A ; Common # Ps SINGLE LOW-9 QUOTATION MARK -201B..201C ; Common # Pi [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK -201D ; Common # Pf RIGHT DOUBLE QUOTATION MARK -201E ; Common # Ps DOUBLE LOW-9 QUOTATION MARK -201F ; Common # Pi DOUBLE HIGH-REVERSED-9 QUOTATION MARK -2020..2027 ; Common # Po [8] DAGGER..HYPHENATION POINT -2028 ; Common # Zl LINE SEPARATOR -2029 ; Common # Zp PARAGRAPH SEPARATOR -202A..202E ; Common # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE -202F ; Common # Zs NARROW NO-BREAK SPACE -2030..2038 ; Common # Po [9] PER MILLE SIGN..CARET -2039 ; Common # Pi SINGLE LEFT-POINTING ANGLE QUOTATION MARK -203A ; Common # Pf SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -203B..203E ; Common # Po [4] REFERENCE MARK..OVERLINE -203F..2040 ; Common # Pc [2] UNDERTIE..CHARACTER TIE -2041..2043 ; Common # Po [3] CARET INSERTION POINT..HYPHEN BULLET -2044 ; Common # Sm FRACTION SLASH -2045 ; Common # Ps LEFT SQUARE BRACKET WITH QUILL -2046 ; Common # Pe RIGHT SQUARE BRACKET WITH QUILL -2047..2051 ; Common # Po [11] DOUBLE QUESTION MARK..TWO ASTERISKS ALIGNED VERTICALLY -2052 ; Common # Sm COMMERCIAL MINUS SIGN -2053 ; Common # Po SWUNG DASH -2054 ; Common # Pc INVERTED UNDERTIE -2055..205E ; Common # Po [10] FLOWER PUNCTUATION MARK..VERTICAL FOUR DOTS -205F ; Common # Zs MEDIUM MATHEMATICAL SPACE -2060..2064 ; Common # Cf [5] WORD JOINER..INVISIBLE PLUS -206A..206F ; Common # Cf [6] INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES -2070 ; Common # No SUPERSCRIPT ZERO -2074..2079 ; Common # No [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE -207A..207C ; Common # Sm [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN -207D ; Common # Ps SUPERSCRIPT LEFT PARENTHESIS -207E ; Common # Pe SUPERSCRIPT RIGHT PARENTHESIS -2080..2089 ; Common # No [10] SUBSCRIPT ZERO..SUBSCRIPT NINE -208A..208C ; Common # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN -208D ; Common # Ps SUBSCRIPT LEFT PARENTHESIS -208E ; Common # Pe SUBSCRIPT RIGHT PARENTHESIS -20A0..20B5 ; Common # Sc [22] EURO-CURRENCY SIGN..CEDI SIGN -2100..2101 ; Common # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT -2102 ; Common # L& DOUBLE-STRUCK CAPITAL C -2103..2106 ; Common # So [4] DEGREE CELSIUS..CADA UNA -2107 ; Common # L& EULER CONSTANT -2108..2109 ; Common # So [2] SCRUPLE..DEGREE FAHRENHEIT -210A..2113 ; Common # L& [10] SCRIPT SMALL G..SCRIPT SMALL L -2114 ; Common # So L B BAR SYMBOL -2115 ; Common # L& DOUBLE-STRUCK CAPITAL N -2116..2118 ; Common # So [3] NUMERO SIGN..SCRIPT CAPITAL P -2119..211D ; Common # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R -211E..2123 ; Common # So [6] PRESCRIPTION TAKE..VERSICLE -2124 ; Common # L& DOUBLE-STRUCK CAPITAL Z -2125 ; Common # So OUNCE SIGN -2127 ; Common # So INVERTED OHM SIGN -2128 ; Common # L& BLACK-LETTER CAPITAL Z -2129 ; Common # So TURNED GREEK SMALL LETTER IOTA -212C..212D ; Common # L& [2] SCRIPT CAPITAL B..BLACK-LETTER CAPITAL C -212E ; Common # So ESTIMATED SYMBOL -212F..2131 ; Common # L& [3] SCRIPT SMALL E..SCRIPT CAPITAL F -2133..2134 ; Common # L& [2] SCRIPT CAPITAL M..SCRIPT SMALL O -2135..2138 ; Common # Lo [4] ALEF SYMBOL..DALET SYMBOL -2139 ; Common # L& INFORMATION SOURCE -213A..213B ; Common # So [2] ROTATED CAPITAL Q..FACSIMILE SIGN -213C..213F ; Common # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI -2140..2144 ; Common # Sm [5] DOUBLE-STRUCK N-ARY SUMMATION..TURNED SANS-SERIF CAPITAL Y -2145..2149 ; Common # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J -214A ; Common # So PROPERTY LINE -214B ; Common # Sm TURNED AMPERSAND -214C..214D ; Common # So [2] PER SIGN..AKTIESELSKAB -214F ; Common # So SYMBOL FOR SAMARITAN SOURCE -2153..215F ; Common # No [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE -2190..2194 ; Common # Sm [5] LEFTWARDS ARROW..LEFT RIGHT ARROW -2195..2199 ; Common # So [5] UP DOWN ARROW..SOUTH WEST ARROW -219A..219B ; Common # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE -219C..219F ; Common # So [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW -21A0 ; Common # Sm RIGHTWARDS TWO HEADED ARROW -21A1..21A2 ; Common # So [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL -21A3 ; Common # Sm RIGHTWARDS ARROW WITH TAIL -21A4..21A5 ; Common # So [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR -21A6 ; Common # Sm RIGHTWARDS ARROW FROM BAR -21A7..21AD ; Common # So [7] DOWNWARDS ARROW FROM BAR..LEFT RIGHT WAVE ARROW -21AE ; Common # Sm LEFT RIGHT ARROW WITH STROKE -21AF..21CD ; Common # So [31] DOWNWARDS ZIGZAG ARROW..LEFTWARDS DOUBLE ARROW WITH STROKE -21CE..21CF ; Common # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE -21D0..21D1 ; Common # So [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW -21D2 ; Common # Sm RIGHTWARDS DOUBLE ARROW -21D3 ; Common # So DOWNWARDS DOUBLE ARROW -21D4 ; Common # Sm LEFT RIGHT DOUBLE ARROW -21D5..21F3 ; Common # So [31] UP DOWN DOUBLE ARROW..UP DOWN WHITE ARROW -21F4..22FF ; Common # Sm [268] RIGHT ARROW WITH SMALL CIRCLE..Z NOTATION BAG MEMBERSHIP -2300..2307 ; Common # So [8] DIAMETER SIGN..WAVY LINE -2308..230B ; Common # Sm [4] LEFT CEILING..RIGHT FLOOR -230C..231F ; Common # So [20] BOTTOM RIGHT CROP..BOTTOM RIGHT CORNER -2320..2321 ; Common # Sm [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL -2322..2328 ; Common # So [7] FROWN..KEYBOARD -2329 ; Common # Ps LEFT-POINTING ANGLE BRACKET -232A ; Common # Pe RIGHT-POINTING ANGLE BRACKET -232B..237B ; Common # So [81] ERASE TO THE LEFT..NOT CHECK MARK -237C ; Common # Sm RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW -237D..239A ; Common # So [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL -239B..23B3 ; Common # Sm [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM -23B4..23DB ; Common # So [40] TOP SQUARE BRACKET..FUSE -23DC..23E1 ; Common # Sm [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET -23E2..23E7 ; Common # So [6] WHITE TRAPEZIUM..ELECTRICAL INTERSECTION -2400..2426 ; Common # So [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO -2440..244A ; Common # So [11] OCR HOOK..OCR DOUBLE BACKSLASH -2460..249B ; Common # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP -249C..24E9 ; Common # So [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z -24EA..24FF ; Common # No [22] CIRCLED DIGIT ZERO..NEGATIVE CIRCLED DIGIT ZERO -2500..25B6 ; Common # So [183] BOX DRAWINGS LIGHT HORIZONTAL..BLACK RIGHT-POINTING TRIANGLE -25B7 ; Common # Sm WHITE RIGHT-POINTING TRIANGLE -25B8..25C0 ; Common # So [9] BLACK RIGHT-POINTING SMALL TRIANGLE..BLACK LEFT-POINTING TRIANGLE -25C1 ; Common # Sm WHITE LEFT-POINTING TRIANGLE -25C2..25F7 ; Common # So [54] BLACK LEFT-POINTING SMALL TRIANGLE..WHITE CIRCLE WITH UPPER RIGHT QUADRANT -25F8..25FF ; Common # Sm [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE -2600..266E ; Common # So [111] BLACK SUN WITH RAYS..MUSIC NATURAL SIGN -266F ; Common # Sm MUSIC SHARP SIGN -2670..269D ; Common # So [46] WEST SYRIAC CROSS..OUTLINED WHITE STAR -26A0..26BC ; Common # So [29] WARNING SIGN..SESQUIQUADRATE -26C0..26C3 ; Common # So [4] WHITE DRAUGHTS MAN..BLACK DRAUGHTS KING -2701..2704 ; Common # So [4] UPPER BLADE SCISSORS..WHITE SCISSORS -2706..2709 ; Common # So [4] TELEPHONE LOCATION SIGN..ENVELOPE -270C..2727 ; Common # So [28] VICTORY HAND..WHITE FOUR POINTED STAR -2729..274B ; Common # So [35] STRESS OUTLINED WHITE STAR..HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK -274D ; Common # So SHADOWED WHITE CIRCLE -274F..2752 ; Common # So [4] LOWER RIGHT DROP-SHADOWED WHITE SQUARE..UPPER RIGHT SHADOWED WHITE SQUARE -2756 ; Common # So BLACK DIAMOND MINUS WHITE X -2758..275E ; Common # So [7] LIGHT VERTICAL BAR..HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT -2761..2767 ; Common # So [7] CURVED STEM PARAGRAPH SIGN ORNAMENT..ROTATED FLORAL HEART BULLET -2768 ; Common # Ps MEDIUM LEFT PARENTHESIS ORNAMENT -2769 ; Common # Pe MEDIUM RIGHT PARENTHESIS ORNAMENT -276A ; Common # Ps MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT -276B ; Common # Pe MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT -276C ; Common # Ps MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT -276D ; Common # Pe MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT -276E ; Common # Ps HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT -276F ; Common # Pe HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT -2770 ; Common # Ps HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT -2771 ; Common # Pe HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT -2772 ; Common # Ps LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT -2773 ; Common # Pe LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT -2774 ; Common # Ps MEDIUM LEFT CURLY BRACKET ORNAMENT -2775 ; Common # Pe MEDIUM RIGHT CURLY BRACKET ORNAMENT -2776..2793 ; Common # No [30] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN -2794 ; Common # So HEAVY WIDE-HEADED RIGHTWARDS ARROW -2798..27AF ; Common # So [24] HEAVY SOUTH EAST ARROW..NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -27B1..27BE ; Common # So [14] NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW..OPEN-OUTLINED RIGHTWARDS ARROW -27C0..27C4 ; Common # Sm [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET -27C5 ; Common # Ps LEFT S-SHAPED BAG DELIMITER -27C6 ; Common # Pe RIGHT S-SHAPED BAG DELIMITER -27C7..27CA ; Common # Sm [4] OR WITH DOT INSIDE..VERTICAL BAR WITH HORIZONTAL STROKE -27CC ; Common # Sm LONG DIVISION -27D0..27E5 ; Common # Sm [22] WHITE DIAMOND WITH CENTRED DOT..WHITE SQUARE WITH RIGHTWARDS TICK -27E6 ; Common # Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET -27E7 ; Common # Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET -27E8 ; Common # Ps MATHEMATICAL LEFT ANGLE BRACKET -27E9 ; Common # Pe MATHEMATICAL RIGHT ANGLE BRACKET -27EA ; Common # Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET -27EB ; Common # Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET -27EC ; Common # Ps MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET -27ED ; Common # Pe MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET -27EE ; Common # Ps MATHEMATICAL LEFT FLATTENED PARENTHESIS -27EF ; Common # Pe MATHEMATICAL RIGHT FLATTENED PARENTHESIS -27F0..27FF ; Common # Sm [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW -2900..2982 ; Common # Sm [131] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..Z NOTATION TYPE COLON -2983 ; Common # Ps LEFT WHITE CURLY BRACKET -2984 ; Common # Pe RIGHT WHITE CURLY BRACKET -2985 ; Common # Ps LEFT WHITE PARENTHESIS -2986 ; Common # Pe RIGHT WHITE PARENTHESIS -2987 ; Common # Ps Z NOTATION LEFT IMAGE BRACKET -2988 ; Common # Pe Z NOTATION RIGHT IMAGE BRACKET -2989 ; Common # Ps Z NOTATION LEFT BINDING BRACKET -298A ; Common # Pe Z NOTATION RIGHT BINDING BRACKET -298B ; Common # Ps LEFT SQUARE BRACKET WITH UNDERBAR -298C ; Common # Pe RIGHT SQUARE BRACKET WITH UNDERBAR -298D ; Common # Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER -298E ; Common # Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER -298F ; Common # Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER -2990 ; Common # Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER -2991 ; Common # Ps LEFT ANGLE BRACKET WITH DOT -2992 ; Common # Pe RIGHT ANGLE BRACKET WITH DOT -2993 ; Common # Ps LEFT ARC LESS-THAN BRACKET -2994 ; Common # Pe RIGHT ARC GREATER-THAN BRACKET -2995 ; Common # Ps DOUBLE LEFT ARC GREATER-THAN BRACKET -2996 ; Common # Pe DOUBLE RIGHT ARC LESS-THAN BRACKET -2997 ; Common # Ps LEFT BLACK TORTOISE SHELL BRACKET -2998 ; Common # Pe RIGHT BLACK TORTOISE SHELL BRACKET -2999..29D7 ; Common # Sm [63] DOTTED FENCE..BLACK HOURGLASS -29D8 ; Common # Ps LEFT WIGGLY FENCE -29D9 ; Common # Pe RIGHT WIGGLY FENCE -29DA ; Common # Ps LEFT DOUBLE WIGGLY FENCE -29DB ; Common # Pe RIGHT DOUBLE WIGGLY FENCE -29DC..29FB ; Common # Sm [32] INCOMPLETE INFINITY..TRIPLE PLUS -29FC ; Common # Ps LEFT-POINTING CURVED ANGLE BRACKET -29FD ; Common # Pe RIGHT-POINTING CURVED ANGLE BRACKET -29FE..2AFF ; Common # Sm [258] TINY..N-ARY WHITE VERTICAL BAR -2B00..2B2F ; Common # So [48] NORTH EAST WHITE ARROW..WHITE VERTICAL ELLIPSE -2B30..2B44 ; Common # Sm [21] LEFT ARROW WITH SMALL CIRCLE..RIGHTWARDS ARROW THROUGH SUPERSET -2B45..2B46 ; Common # So [2] LEFTWARDS QUADRUPLE ARROW..RIGHTWARDS QUADRUPLE ARROW -2B47..2B4C ; Common # Sm [6] REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR -2B50..2B54 ; Common # So [5] WHITE MEDIUM STAR..WHITE RIGHT-POINTING PENTAGON -2E00..2E01 ; Common # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER -2E02 ; Common # Pi LEFT SUBSTITUTION BRACKET -2E03 ; Common # Pf RIGHT SUBSTITUTION BRACKET -2E04 ; Common # Pi LEFT DOTTED SUBSTITUTION BRACKET -2E05 ; Common # Pf RIGHT DOTTED SUBSTITUTION BRACKET -2E06..2E08 ; Common # Po [3] RAISED INTERPOLATION MARKER..DOTTED TRANSPOSITION MARKER -2E09 ; Common # Pi LEFT TRANSPOSITION BRACKET -2E0A ; Common # Pf RIGHT TRANSPOSITION BRACKET -2E0B ; Common # Po RAISED SQUARE -2E0C ; Common # Pi LEFT RAISED OMISSION BRACKET -2E0D ; Common # Pf RIGHT RAISED OMISSION BRACKET -2E0E..2E16 ; Common # Po [9] EDITORIAL CORONIS..DOTTED RIGHT-POINTING ANGLE -2E17 ; Common # Pd DOUBLE OBLIQUE HYPHEN -2E18..2E19 ; Common # Po [2] INVERTED INTERROBANG..PALM BRANCH -2E1A ; Common # Pd HYPHEN WITH DIAERESIS -2E1B ; Common # Po TILDE WITH RING ABOVE -2E1C ; Common # Pi LEFT LOW PARAPHRASE BRACKET -2E1D ; Common # Pf RIGHT LOW PARAPHRASE BRACKET -2E1E..2E1F ; Common # Po [2] TILDE WITH DOT ABOVE..TILDE WITH DOT BELOW -2E20 ; Common # Pi LEFT VERTICAL BAR WITH QUILL -2E21 ; Common # Pf RIGHT VERTICAL BAR WITH QUILL -2E22 ; Common # Ps TOP LEFT HALF BRACKET -2E23 ; Common # Pe TOP RIGHT HALF BRACKET -2E24 ; Common # Ps BOTTOM LEFT HALF BRACKET -2E25 ; Common # Pe BOTTOM RIGHT HALF BRACKET -2E26 ; Common # Ps LEFT SIDEWAYS U BRACKET -2E27 ; Common # Pe RIGHT SIDEWAYS U BRACKET -2E28 ; Common # Ps LEFT DOUBLE PARENTHESIS -2E29 ; Common # Pe RIGHT DOUBLE PARENTHESIS -2E2A..2E2E ; Common # Po [5] TWO DOTS OVER ONE DOT PUNCTUATION..REVERSED QUESTION MARK -2E2F ; Common # Lm VERTICAL TILDE -2E30 ; Common # Po RING POINT -2FF0..2FFB ; Common # So [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID -3000 ; Common # Zs IDEOGRAPHIC SPACE -3001..3003 ; Common # Po [3] IDEOGRAPHIC COMMA..DITTO MARK -3004 ; Common # So JAPANESE INDUSTRIAL STANDARD SYMBOL -3006 ; Common # Lo IDEOGRAPHIC CLOSING MARK -3008 ; Common # Ps LEFT ANGLE BRACKET -3009 ; Common # Pe RIGHT ANGLE BRACKET -300A ; Common # Ps LEFT DOUBLE ANGLE BRACKET -300B ; Common # Pe RIGHT DOUBLE ANGLE BRACKET -300C ; Common # Ps LEFT CORNER BRACKET -300D ; Common # Pe RIGHT CORNER BRACKET -300E ; Common # Ps LEFT WHITE CORNER BRACKET -300F ; Common # Pe RIGHT WHITE CORNER BRACKET -3010 ; Common # Ps LEFT BLACK LENTICULAR BRACKET -3011 ; Common # Pe RIGHT BLACK LENTICULAR BRACKET -3012..3013 ; Common # So [2] POSTAL MARK..GETA MARK -3014 ; Common # Ps LEFT TORTOISE SHELL BRACKET -3015 ; Common # Pe RIGHT TORTOISE SHELL BRACKET -3016 ; Common # Ps LEFT WHITE LENTICULAR BRACKET -3017 ; Common # Pe RIGHT WHITE LENTICULAR BRACKET -3018 ; Common # Ps LEFT WHITE TORTOISE SHELL BRACKET -3019 ; Common # Pe RIGHT WHITE TORTOISE SHELL BRACKET -301A ; Common # Ps LEFT WHITE SQUARE BRACKET -301B ; Common # Pe RIGHT WHITE SQUARE BRACKET -301C ; Common # Pd WAVE DASH -301D ; Common # Ps REVERSED DOUBLE PRIME QUOTATION MARK -301E..301F ; Common # Pe [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK -3020 ; Common # So POSTAL MARK FACE -3030 ; Common # Pd WAVY DASH -3031..3035 ; Common # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF -3036..3037 ; Common # So [2] CIRCLED POSTAL MARK..IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL -303C ; Common # Lo MASU MARK -303D ; Common # Po PART ALTERNATION MARK -303E..303F ; Common # So [2] IDEOGRAPHIC VARIATION INDICATOR..IDEOGRAPHIC HALF FILL SPACE -309B..309C ; Common # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK -30A0 ; Common # Pd KATAKANA-HIRAGANA DOUBLE HYPHEN -30FB ; Common # Po KATAKANA MIDDLE DOT -30FC ; Common # Lm KATAKANA-HIRAGANA PROLONGED SOUND MARK -3190..3191 ; Common # So [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK -3192..3195 ; Common # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK -3196..319F ; Common # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK -31C0..31E3 ; Common # So [36] CJK STROKE T..CJK STROKE Q -3220..3229 ; Common # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN -322A..3243 ; Common # So [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH -3250 ; Common # So PARTNERSHIP SIGN -3251..325F ; Common # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE -327F ; Common # So KOREAN STANDARD SYMBOL -3280..3289 ; Common # No [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN -328A..32B0 ; Common # So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT -32B1..32BF ; Common # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY -32C0..32CF ; Common # So [16] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..LIMITED LIABILITY SIGN -3358..33FF ; Common # So [168] IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO..SQUARE GAL -4DC0..4DFF ; Common # So [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION -A700..A716 ; Common # Sk [23] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR -A717..A71F ; Common # Lm [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK -A720..A721 ; Common # Sk [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE -A788 ; Common # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT -A789..A78A ; Common # Sk [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN -FD3E ; Common # Ps ORNATE LEFT PARENTHESIS -FD3F ; Common # Pe ORNATE RIGHT PARENTHESIS -FDFD ; Common # So ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM -FE10..FE16 ; Common # Po [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK -FE17 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET -FE18 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET -FE19 ; Common # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS -FE30 ; Common # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER -FE31..FE32 ; Common # Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH -FE33..FE34 ; Common # Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE -FE35 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS -FE36 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS -FE37 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET -FE38 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET -FE39 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET -FE3A ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET -FE3B ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET -FE3C ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET -FE3D ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET -FE3E ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET -FE3F ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET -FE40 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET -FE41 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET -FE42 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET -FE43 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET -FE44 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET -FE45..FE46 ; Common # Po [2] SESAME DOT..WHITE SESAME DOT -FE47 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET -FE48 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET -FE49..FE4C ; Common # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE -FE4D..FE4F ; Common # Pc [3] DASHED LOW LINE..WAVY LOW LINE -FE50..FE52 ; Common # Po [3] SMALL COMMA..SMALL FULL STOP -FE54..FE57 ; Common # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK -FE58 ; Common # Pd SMALL EM DASH -FE59 ; Common # Ps SMALL LEFT PARENTHESIS -FE5A ; Common # Pe SMALL RIGHT PARENTHESIS -FE5B ; Common # Ps SMALL LEFT CURLY BRACKET -FE5C ; Common # Pe SMALL RIGHT CURLY BRACKET -FE5D ; Common # Ps SMALL LEFT TORTOISE SHELL BRACKET -FE5E ; Common # Pe SMALL RIGHT TORTOISE SHELL BRACKET -FE5F..FE61 ; Common # Po [3] SMALL NUMBER SIGN..SMALL ASTERISK -FE62 ; Common # Sm SMALL PLUS SIGN -FE63 ; Common # Pd SMALL HYPHEN-MINUS -FE64..FE66 ; Common # Sm [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN -FE68 ; Common # Po SMALL REVERSE SOLIDUS -FE69 ; Common # Sc SMALL DOLLAR SIGN -FE6A..FE6B ; Common # Po [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT -FEFF ; Common # Cf ZERO WIDTH NO-BREAK SPACE -FF01..FF03 ; Common # Po [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN -FF04 ; Common # Sc FULLWIDTH DOLLAR SIGN -FF05..FF07 ; Common # Po [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE -FF08 ; Common # Ps FULLWIDTH LEFT PARENTHESIS -FF09 ; Common # Pe FULLWIDTH RIGHT PARENTHESIS -FF0A ; Common # Po FULLWIDTH ASTERISK -FF0B ; Common # Sm FULLWIDTH PLUS SIGN -FF0C ; Common # Po FULLWIDTH COMMA -FF0D ; Common # Pd FULLWIDTH HYPHEN-MINUS -FF0E..FF0F ; Common # Po [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS -FF10..FF19 ; Common # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE -FF1A..FF1B ; Common # Po [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON -FF1C..FF1E ; Common # Sm [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN -FF1F..FF20 ; Common # Po [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT -FF3B ; Common # Ps FULLWIDTH LEFT SQUARE BRACKET -FF3C ; Common # Po FULLWIDTH REVERSE SOLIDUS -FF3D ; Common # Pe FULLWIDTH RIGHT SQUARE BRACKET -FF3E ; Common # Sk FULLWIDTH CIRCUMFLEX ACCENT -FF3F ; Common # Pc FULLWIDTH LOW LINE -FF40 ; Common # Sk FULLWIDTH GRAVE ACCENT -FF5B ; Common # Ps FULLWIDTH LEFT CURLY BRACKET -FF5C ; Common # Sm FULLWIDTH VERTICAL LINE -FF5D ; Common # Pe FULLWIDTH RIGHT CURLY BRACKET -FF5E ; Common # Sm FULLWIDTH TILDE -FF5F ; Common # Ps FULLWIDTH LEFT WHITE PARENTHESIS -FF60 ; Common # Pe FULLWIDTH RIGHT WHITE PARENTHESIS -FF61 ; Common # Po HALFWIDTH IDEOGRAPHIC FULL STOP -FF62 ; Common # Ps HALFWIDTH LEFT CORNER BRACKET -FF63 ; Common # Pe HALFWIDTH RIGHT CORNER BRACKET -FF64..FF65 ; Common # Po [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT -FF70 ; Common # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK -FF9E..FF9F ; Common # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK -FFE0..FFE1 ; Common # Sc [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN -FFE2 ; Common # Sm FULLWIDTH NOT SIGN -FFE3 ; Common # Sk FULLWIDTH MACRON -FFE4 ; Common # So FULLWIDTH BROKEN BAR -FFE5..FFE6 ; Common # Sc [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN -FFE8 ; Common # So HALFWIDTH FORMS LIGHT VERTICAL -FFE9..FFEC ; Common # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW -FFED..FFEE ; Common # So [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE -FFF9..FFFB ; Common # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR -FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER -10100..10101 ; Common # Po [2] AEGEAN WORD SEPARATOR LINE..AEGEAN WORD SEPARATOR DOT -10102 ; Common # So AEGEAN CHECK MARK -10107..10133 ; Common # No [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND -10137..1013F ; Common # So [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT -10190..1019B ; Common # So [12] ROMAN SEXTANS SIGN..ROMAN CENTURIAL SIGN -101D0..101FC ; Common # So [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND -1D000..1D0F5 ; Common # So [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO -1D100..1D126 ; Common # So [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2 -1D129..1D164 ; Common # So [60] MUSICAL SYMBOL MULTIPLE MEASURE REST..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE -1D165..1D166 ; Common # Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM -1D16A..1D16C ; Common # So [3] MUSICAL SYMBOL FINGERED TREMOLO-1..MUSICAL SYMBOL FINGERED TREMOLO-3 -1D16D..1D172 ; Common # Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5 -1D173..1D17A ; Common # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE -1D183..1D184 ; Common # So [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN -1D18C..1D1A9 ; Common # So [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH -1D1AE..1D1DD ; Common # So [48] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL PES SUBPUNCTIS -1D300..1D356 ; Common # So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING -1D360..1D371 ; Common # No [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE -1D400..1D454 ; Common # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G -1D456..1D49C ; Common # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A -1D49E..1D49F ; Common # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D -1D4A2 ; Common # L& MATHEMATICAL SCRIPT CAPITAL G -1D4A5..1D4A6 ; Common # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K -1D4A9..1D4AC ; Common # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q -1D4AE..1D4B9 ; Common # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D -1D4BB ; Common # L& MATHEMATICAL SCRIPT SMALL F -1D4BD..1D4C3 ; Common # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N -1D4C5..1D505 ; Common # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B -1D507..1D50A ; Common # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G -1D50D..1D514 ; Common # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q -1D516..1D51C ; Common # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y -1D51E..1D539 ; Common # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B -1D53B..1D53E ; Common # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G -1D540..1D544 ; Common # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M -1D546 ; Common # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O -1D54A..1D550 ; Common # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y -1D552..1D6A5 ; Common # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J -1D6A8..1D6C0 ; Common # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA -1D6C1 ; Common # Sm MATHEMATICAL BOLD NABLA -1D6C2..1D6DA ; Common # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA -1D6DB ; Common # Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL -1D6DC..1D6FA ; Common # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA -1D6FB ; Common # Sm MATHEMATICAL ITALIC NABLA -1D6FC..1D714 ; Common # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA -1D715 ; Common # Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL -1D716..1D734 ; Common # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA -1D735 ; Common # Sm MATHEMATICAL BOLD ITALIC NABLA -1D736..1D74E ; Common # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA -1D74F ; Common # Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL -1D750..1D76E ; Common # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA -1D76F ; Common # Sm MATHEMATICAL SANS-SERIF BOLD NABLA -1D770..1D788 ; Common # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA -1D789 ; Common # Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL -1D78A..1D7A8 ; Common # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA -1D7A9 ; Common # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA -1D7AA..1D7C2 ; Common # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA -1D7C3 ; Common # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL -1D7C4..1D7CB ; Common # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA -1D7CE..1D7FF ; Common # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE -1F000..1F02B ; Common # So [44] MAHJONG TILE EAST WIND..MAHJONG TILE BACK -1F030..1F093 ; Common # So [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06 -E0001 ; Common # Cf LANGUAGE TAG -E0020..E007F ; Common # Cf [96] TAG SPACE..CANCEL TAG - -# Total code points: 5178 - -# ================================================ - -0041..005A ; Latin # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z -0061..007A ; Latin # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z -00AA ; Latin # L& FEMININE ORDINAL INDICATOR -00BA ; Latin # L& MASCULINE ORDINAL INDICATOR -00C0..00D6 ; Latin # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS -00D8..00F6 ; Latin # L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS -00F8..01BA ; Latin # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL -01BB ; Latin # Lo LATIN LETTER TWO WITH STROKE -01BC..01BF ; Latin # L& [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN -01C0..01C3 ; Latin # Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK -01C4..0293 ; Latin # L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL -0294 ; Latin # Lo LATIN LETTER GLOTTAL STOP -0295..02AF ; Latin # L& [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL -02B0..02B8 ; Latin # Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y -02E0..02E4 ; Latin # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP -1D00..1D25 ; Latin # L& [38] LATIN LETTER SMALL CAPITAL A..LATIN LETTER AIN -1D2C..1D5C ; Latin # Lm [49] MODIFIER LETTER CAPITAL A..MODIFIER LETTER SMALL AIN -1D62..1D65 ; Latin # L& [4] LATIN SUBSCRIPT SMALL LETTER I..LATIN SUBSCRIPT SMALL LETTER V -1D6B..1D77 ; Latin # L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G -1D79..1D9A ; Latin # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK -1D9B..1DBE ; Latin # Lm [36] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL EZH -1E00..1EFF ; Latin # L& [256] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH LOOP -2071 ; Latin # L& SUPERSCRIPT LATIN SMALL LETTER I -207F ; Latin # L& SUPERSCRIPT LATIN SMALL LETTER N -2090..2094 ; Latin # Lm [5] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER SCHWA -212A..212B ; Latin # L& [2] KELVIN SIGN..ANGSTROM SIGN -2132 ; Latin # L& TURNED CAPITAL F -214E ; Latin # L& TURNED SMALL F -2160..2182 ; Latin # Nl [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND -2183..2184 ; Latin # L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C -2185..2188 ; Latin # Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND -2C60..2C6F ; Latin # L& [16] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN CAPITAL LETTER TURNED A -2C71..2C7C ; Latin # L& [12] LATIN SMALL LETTER V WITH RIGHT HOOK..LATIN SUBSCRIPT SMALL LETTER J -2C7D ; Latin # Lm MODIFIER LETTER CAPITAL V -A722..A76F ; Latin # L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON -A770 ; Latin # Lm MODIFIER LETTER US -A771..A787 ; Latin # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T -A78B..A78C ; Latin # L& [2] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER SALTILLO -A7FB..A7FF ; Latin # Lo [5] LATIN EPIGRAPHIC LETTER REVERSED F..LATIN EPIGRAPHIC LETTER ARCHAIC M -FB00..FB06 ; Latin # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST -FF21..FF3A ; Latin # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z -FF41..FF5A ; Latin # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z - -# Total code points: 1241 - -# ================================================ - -0370..0373 ; Greek # L& [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI -0375 ; Greek # Sk GREEK LOWER NUMERAL SIGN -0376..0377 ; Greek # L& [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA -037A ; Greek # Lm GREEK YPOGEGRAMMENI -037B..037D ; Greek # L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL -0384 ; Greek # Sk GREEK TONOS -0386 ; Greek # L& GREEK CAPITAL LETTER ALPHA WITH TONOS -0388..038A ; Greek # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS -038C ; Greek # L& GREEK CAPITAL LETTER OMICRON WITH TONOS -038E..03A1 ; Greek # L& [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO -03A3..03E1 ; Greek # L& [63] GREEK CAPITAL LETTER SIGMA..GREEK SMALL LETTER SAMPI -03F0..03F5 ; Greek # L& [6] GREEK KAPPA SYMBOL..GREEK LUNATE EPSILON SYMBOL -03F6 ; Greek # Sm GREEK REVERSED LUNATE EPSILON SYMBOL -03F7..03FF ; Greek # L& [9] GREEK CAPITAL LETTER SHO..GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL -1D26..1D2A ; Greek # L& [5] GREEK LETTER SMALL CAPITAL GAMMA..GREEK LETTER SMALL CAPITAL PSI -1D5D..1D61 ; Greek # Lm [5] MODIFIER LETTER SMALL BETA..MODIFIER LETTER SMALL CHI -1D66..1D6A ; Greek # L& [5] GREEK SUBSCRIPT SMALL LETTER BETA..GREEK SUBSCRIPT SMALL LETTER CHI -1DBF ; Greek # Lm MODIFIER LETTER SMALL THETA -1F00..1F15 ; Greek # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA -1F18..1F1D ; Greek # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA -1F20..1F45 ; Greek # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA -1F48..1F4D ; Greek # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA -1F50..1F57 ; Greek # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI -1F59 ; Greek # L& GREEK CAPITAL LETTER UPSILON WITH DASIA -1F5B ; Greek # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA -1F5D ; Greek # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA -1F5F..1F7D ; Greek # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA -1F80..1FB4 ; Greek # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI -1FB6..1FBC ; Greek # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI -1FBD ; Greek # Sk GREEK KORONIS -1FBE ; Greek # L& GREEK PROSGEGRAMMENI -1FBF..1FC1 ; Greek # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI -1FC2..1FC4 ; Greek # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI -1FC6..1FCC ; Greek # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI -1FCD..1FCF ; Greek # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI -1FD0..1FD3 ; Greek # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA -1FD6..1FDB ; Greek # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA -1FDD..1FDF ; Greek # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI -1FE0..1FEC ; Greek # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA -1FED..1FEF ; Greek # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA -1FF2..1FF4 ; Greek # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI -1FF6..1FFC ; Greek # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI -1FFD..1FFE ; Greek # Sk [2] GREEK OXIA..GREEK DASIA -2126 ; Greek # L& OHM SIGN -10140..10174 ; Greek # Nl [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS -10175..10178 ; Greek # No [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN -10179..10189 ; Greek # So [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN -1018A ; Greek # No GREEK ZERO SIGN -1D200..1D241 ; Greek # So [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54 -1D242..1D244 ; Greek # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME -1D245 ; Greek # So GREEK MUSICAL LEIMMA - -# Total code points: 511 - -# ================================================ - -0400..0481 ; Cyrillic # L& [130] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER KOPPA -0482 ; Cyrillic # So CYRILLIC THOUSANDS SIGN -0483..0487 ; Cyrillic # Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE -0488..0489 ; Cyrillic # Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN -048A..0523 ; Cyrillic # L& [154] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK -1D2B ; Cyrillic # L& CYRILLIC LETTER SMALL CAPITAL EL -1D78 ; Cyrillic # Lm MODIFIER LETTER CYRILLIC EN -2DE0..2DFF ; Cyrillic # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS -A640..A65F ; Cyrillic # L& [32] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER YN -A662..A66D ; Cyrillic # L& [12] CYRILLIC CAPITAL LETTER SOFT DE..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O -A66E ; Cyrillic # Lo CYRILLIC LETTER MULTIOCULAR O -A66F ; Cyrillic # Mn COMBINING CYRILLIC VZMET -A670..A672 ; Cyrillic # Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN -A673 ; Cyrillic # Po SLAVONIC ASTERISK -A67C..A67D ; Cyrillic # Mn [2] COMBINING CYRILLIC KAVYKA..COMBINING CYRILLIC PAYEROK -A67E ; Cyrillic # Po CYRILLIC KAVYKA -A67F ; Cyrillic # Lm CYRILLIC PAYEROK -A680..A697 ; Cyrillic # L& [24] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER SHWE - -# Total code points: 404 - -# ================================================ - -0531..0556 ; Armenian # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH -0559 ; Armenian # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING -055A..055F ; Armenian # Po [6] ARMENIAN APOSTROPHE..ARMENIAN ABBREVIATION MARK -0561..0587 ; Armenian # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN -058A ; Armenian # Pd ARMENIAN HYPHEN -FB13..FB17 ; Armenian # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH - -# Total code points: 90 - -# ================================================ - -0591..05BD ; Hebrew # Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG -05BE ; Hebrew # Pd HEBREW PUNCTUATION MAQAF -05BF ; Hebrew # Mn HEBREW POINT RAFE -05C0 ; Hebrew # Po HEBREW PUNCTUATION PASEQ -05C1..05C2 ; Hebrew # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT -05C3 ; Hebrew # Po HEBREW PUNCTUATION SOF PASUQ -05C4..05C5 ; Hebrew # Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT -05C6 ; Hebrew # Po HEBREW PUNCTUATION NUN HAFUKHA -05C7 ; Hebrew # Mn HEBREW POINT QAMATS QATAN -05D0..05EA ; Hebrew # Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV -05F0..05F2 ; Hebrew # Lo [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD -05F3..05F4 ; Hebrew # Po [2] HEBREW PUNCTUATION GERESH..HEBREW PUNCTUATION GERSHAYIM -FB1D ; Hebrew # Lo HEBREW LETTER YOD WITH HIRIQ -FB1E ; Hebrew # Mn HEBREW POINT JUDEO-SPANISH VARIKA -FB1F..FB28 ; Hebrew # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV -FB29 ; Hebrew # Sm HEBREW LETTER ALTERNATIVE PLUS SIGN -FB2A..FB36 ; Hebrew # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH -FB38..FB3C ; Hebrew # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH -FB3E ; Hebrew # Lo HEBREW LETTER MEM WITH DAGESH -FB40..FB41 ; Hebrew # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH -FB43..FB44 ; Hebrew # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH -FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED - -# Total code points: 133 - -# ================================================ - -0606..0608 ; Arabic # Sm [3] ARABIC-INDIC CUBE ROOT..ARABIC RAY -0609..060A ; Arabic # Po [2] ARABIC-INDIC PER MILLE SIGN..ARABIC-INDIC PER TEN THOUSAND SIGN -060B ; Arabic # Sc AFGHANI SIGN -060D ; Arabic # Po ARABIC DATE SEPARATOR -060E..060F ; Arabic # So [2] ARABIC POETIC VERSE SIGN..ARABIC SIGN MISRA -0610..061A ; Arabic # Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA -061E ; Arabic # Po ARABIC TRIPLE DOT PUNCTUATION MARK -0621..063F ; Arabic # Lo [31] ARABIC LETTER HAMZA..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE -0641..064A ; Arabic # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH -0656..065E ; Arabic # Mn [9] ARABIC SUBSCRIPT ALEF..ARABIC FATHA WITH TWO DOTS -066A..066D ; Arabic # Po [4] ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR -066E..066F ; Arabic # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF -0671..06D3 ; Arabic # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE -06D4 ; Arabic # Po ARABIC FULL STOP -06D5 ; Arabic # Lo ARABIC LETTER AE -06D6..06DC ; Arabic # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN -06DE ; Arabic # Me ARABIC START OF RUB EL HIZB -06DF..06E4 ; Arabic # Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA -06E5..06E6 ; Arabic # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH -06E7..06E8 ; Arabic # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON -06E9 ; Arabic # So ARABIC PLACE OF SAJDAH -06EA..06ED ; Arabic # Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM -06EE..06EF ; Arabic # Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V -06F0..06F9 ; Arabic # Nd [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE -06FA..06FC ; Arabic # Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW -06FD..06FE ; Arabic # So [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN -06FF ; Arabic # Lo ARABIC LETTER HEH WITH INVERTED V -0750..077F ; Arabic # Lo [48] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS ABOVE -FB50..FBB1 ; Arabic # Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM -FBD3..FD3D ; Arabic # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM -FD50..FD8F ; Arabic # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM -FD92..FDC7 ; Arabic # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM -FDF0..FDFB ; Arabic # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU -FDFC ; Arabic # Sc RIAL SIGN -FE70..FE74 ; Arabic # Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM -FE76..FEFC ; Arabic # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM - -# Total code points: 999 - -# ================================================ - -0700..070D ; Syriac # Po [14] SYRIAC END OF PARAGRAPH..SYRIAC HARKLEAN ASTERISCUS -070F ; Syriac # Cf SYRIAC ABBREVIATION MARK -0710 ; Syriac # Lo SYRIAC LETTER ALAPH -0711 ; Syriac # Mn SYRIAC LETTER SUPERSCRIPT ALAPH -0712..072F ; Syriac # Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH -0730..074A ; Syriac # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH -074D..074F ; Syriac # Lo [3] SYRIAC LETTER SOGDIAN ZHAIN..SYRIAC LETTER SOGDIAN FE - -# Total code points: 77 - -# ================================================ - -0780..07A5 ; Thaana # Lo [38] THAANA LETTER HAA..THAANA LETTER WAAVU -07A6..07B0 ; Thaana # Mn [11] THAANA ABAFILI..THAANA SUKUN -07B1 ; Thaana # Lo THAANA LETTER NAA - -# Total code points: 50 - -# ================================================ - -0901..0902 ; Devanagari # Mn [2] DEVANAGARI SIGN CANDRABINDU..DEVANAGARI SIGN ANUSVARA -0903 ; Devanagari # Mc DEVANAGARI SIGN VISARGA -0904..0939 ; Devanagari # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA -093C ; Devanagari # Mn DEVANAGARI SIGN NUKTA -093D ; Devanagari # Lo DEVANAGARI SIGN AVAGRAHA -093E..0940 ; Devanagari # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II -0941..0948 ; Devanagari # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI -0949..094C ; Devanagari # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU -094D ; Devanagari # Mn DEVANAGARI SIGN VIRAMA -0950 ; Devanagari # Lo DEVANAGARI OM -0953..0954 ; Devanagari # Mn [2] DEVANAGARI GRAVE ACCENT..DEVANAGARI ACUTE ACCENT -0958..0961 ; Devanagari # Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL -0962..0963 ; Devanagari # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL -0966..096F ; Devanagari # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE -0971 ; Devanagari # Lm DEVANAGARI SIGN HIGH SPACING DOT -0972 ; Devanagari # Lo DEVANAGARI LETTER CANDRA A -097B..097F ; Devanagari # Lo [5] DEVANAGARI LETTER GGA..DEVANAGARI LETTER BBA - -# Total code points: 107 - -# ================================================ - -0981 ; Bengali # Mn BENGALI SIGN CANDRABINDU -0982..0983 ; Bengali # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA -0985..098C ; Bengali # Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L -098F..0990 ; Bengali # Lo [2] BENGALI LETTER E..BENGALI LETTER AI -0993..09A8 ; Bengali # Lo [22] BENGALI LETTER O..BENGALI LETTER NA -09AA..09B0 ; Bengali # Lo [7] BENGALI LETTER PA..BENGALI LETTER RA -09B2 ; Bengali # Lo BENGALI LETTER LA -09B6..09B9 ; Bengali # Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA -09BC ; Bengali # Mn BENGALI SIGN NUKTA -09BD ; Bengali # Lo BENGALI SIGN AVAGRAHA -09BE..09C0 ; Bengali # Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II -09C1..09C4 ; Bengali # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR -09C7..09C8 ; Bengali # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI -09CB..09CC ; Bengali # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU -09CD ; Bengali # Mn BENGALI SIGN VIRAMA -09CE ; Bengali # Lo BENGALI LETTER KHANDA TA -09D7 ; Bengali # Mc BENGALI AU LENGTH MARK -09DC..09DD ; Bengali # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA -09DF..09E1 ; Bengali # Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL -09E2..09E3 ; Bengali # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL -09E6..09EF ; Bengali # Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE -09F0..09F1 ; Bengali # Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL -09F2..09F3 ; Bengali # Sc [2] BENGALI RUPEE MARK..BENGALI RUPEE SIGN -09F4..09F9 ; Bengali # No [6] BENGALI CURRENCY NUMERATOR ONE..BENGALI CURRENCY DENOMINATOR SIXTEEN -09FA ; Bengali # So BENGALI ISSHAR - -# Total code points: 91 - -# ================================================ - -0A01..0A02 ; Gurmukhi # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI -0A03 ; Gurmukhi # Mc GURMUKHI SIGN VISARGA -0A05..0A0A ; Gurmukhi # Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU -0A0F..0A10 ; Gurmukhi # Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI -0A13..0A28 ; Gurmukhi # Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA -0A2A..0A30 ; Gurmukhi # Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA -0A32..0A33 ; Gurmukhi # Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA -0A35..0A36 ; Gurmukhi # Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA -0A38..0A39 ; Gurmukhi # Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA -0A3C ; Gurmukhi # Mn GURMUKHI SIGN NUKTA -0A3E..0A40 ; Gurmukhi # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II -0A41..0A42 ; Gurmukhi # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU -0A47..0A48 ; Gurmukhi # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI -0A4B..0A4D ; Gurmukhi # Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA -0A51 ; Gurmukhi # Mn GURMUKHI SIGN UDAAT -0A59..0A5C ; Gurmukhi # Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA -0A5E ; Gurmukhi # Lo GURMUKHI LETTER FA -0A66..0A6F ; Gurmukhi # Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE -0A70..0A71 ; Gurmukhi # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK -0A72..0A74 ; Gurmukhi # Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR -0A75 ; Gurmukhi # Mn GURMUKHI SIGN YAKASH - -# Total code points: 79 - -# ================================================ - -0A81..0A82 ; Gujarati # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA -0A83 ; Gujarati # Mc GUJARATI SIGN VISARGA -0A85..0A8D ; Gujarati # Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E -0A8F..0A91 ; Gujarati # Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O -0A93..0AA8 ; Gujarati # Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA -0AAA..0AB0 ; Gujarati # Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA -0AB2..0AB3 ; Gujarati # Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA -0AB5..0AB9 ; Gujarati # Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA -0ABC ; Gujarati # Mn GUJARATI SIGN NUKTA -0ABD ; Gujarati # Lo GUJARATI SIGN AVAGRAHA -0ABE..0AC0 ; Gujarati # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II -0AC1..0AC5 ; Gujarati # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E -0AC7..0AC8 ; Gujarati # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI -0AC9 ; Gujarati # Mc GUJARATI VOWEL SIGN CANDRA O -0ACB..0ACC ; Gujarati # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU -0ACD ; Gujarati # Mn GUJARATI SIGN VIRAMA -0AD0 ; Gujarati # Lo GUJARATI OM -0AE0..0AE1 ; Gujarati # Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL -0AE2..0AE3 ; Gujarati # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL -0AE6..0AEF ; Gujarati # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE -0AF1 ; Gujarati # Sc GUJARATI RUPEE SIGN - -# Total code points: 83 - -# ================================================ - -0B01 ; Oriya # Mn ORIYA SIGN CANDRABINDU -0B02..0B03 ; Oriya # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA -0B05..0B0C ; Oriya # Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L -0B0F..0B10 ; Oriya # Lo [2] ORIYA LETTER E..ORIYA LETTER AI -0B13..0B28 ; Oriya # Lo [22] ORIYA LETTER O..ORIYA LETTER NA -0B2A..0B30 ; Oriya # Lo [7] ORIYA LETTER PA..ORIYA LETTER RA -0B32..0B33 ; Oriya # Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA -0B35..0B39 ; Oriya # Lo [5] ORIYA LETTER VA..ORIYA LETTER HA -0B3C ; Oriya # Mn ORIYA SIGN NUKTA -0B3D ; Oriya # Lo ORIYA SIGN AVAGRAHA -0B3E ; Oriya # Mc ORIYA VOWEL SIGN AA -0B3F ; Oriya # Mn ORIYA VOWEL SIGN I -0B40 ; Oriya # Mc ORIYA VOWEL SIGN II -0B41..0B44 ; Oriya # Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR -0B47..0B48 ; Oriya # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI -0B4B..0B4C ; Oriya # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU -0B4D ; Oriya # Mn ORIYA SIGN VIRAMA -0B56 ; Oriya # Mn ORIYA AI LENGTH MARK -0B57 ; Oriya # Mc ORIYA AU LENGTH MARK -0B5C..0B5D ; Oriya # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA -0B5F..0B61 ; Oriya # Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL -0B62..0B63 ; Oriya # Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL -0B66..0B6F ; Oriya # Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE -0B70 ; Oriya # So ORIYA ISSHAR -0B71 ; Oriya # Lo ORIYA LETTER WA - -# Total code points: 84 - -# ================================================ - -0B82 ; Tamil # Mn TAMIL SIGN ANUSVARA -0B83 ; Tamil # Lo TAMIL SIGN VISARGA -0B85..0B8A ; Tamil # Lo [6] TAMIL LETTER A..TAMIL LETTER UU -0B8E..0B90 ; Tamil # Lo [3] TAMIL LETTER E..TAMIL LETTER AI -0B92..0B95 ; Tamil # Lo [4] TAMIL LETTER O..TAMIL LETTER KA -0B99..0B9A ; Tamil # Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA -0B9C ; Tamil # Lo TAMIL LETTER JA -0B9E..0B9F ; Tamil # Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA -0BA3..0BA4 ; Tamil # Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA -0BA8..0BAA ; Tamil # Lo [3] TAMIL LETTER NA..TAMIL LETTER PA -0BAE..0BB9 ; Tamil # Lo [12] TAMIL LETTER MA..TAMIL LETTER HA -0BBE..0BBF ; Tamil # Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I -0BC0 ; Tamil # Mn TAMIL VOWEL SIGN II -0BC1..0BC2 ; Tamil # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU -0BC6..0BC8 ; Tamil # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI -0BCA..0BCC ; Tamil # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU -0BCD ; Tamil # Mn TAMIL SIGN VIRAMA -0BD0 ; Tamil # Lo TAMIL OM -0BD7 ; Tamil # Mc TAMIL AU LENGTH MARK -0BE6..0BEF ; Tamil # Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE -0BF0..0BF2 ; Tamil # No [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND -0BF3..0BF8 ; Tamil # So [6] TAMIL DAY SIGN..TAMIL AS ABOVE SIGN -0BF9 ; Tamil # Sc TAMIL RUPEE SIGN -0BFA ; Tamil # So TAMIL NUMBER SIGN - -# Total code points: 72 - -# ================================================ - -0C01..0C03 ; Telugu # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA -0C05..0C0C ; Telugu # Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L -0C0E..0C10 ; Telugu # Lo [3] TELUGU LETTER E..TELUGU LETTER AI -0C12..0C28 ; Telugu # Lo [23] TELUGU LETTER O..TELUGU LETTER NA -0C2A..0C33 ; Telugu # Lo [10] TELUGU LETTER PA..TELUGU LETTER LLA -0C35..0C39 ; Telugu # Lo [5] TELUGU LETTER VA..TELUGU LETTER HA -0C3D ; Telugu # Lo TELUGU SIGN AVAGRAHA -0C3E..0C40 ; Telugu # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II -0C41..0C44 ; Telugu # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR -0C46..0C48 ; Telugu # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI -0C4A..0C4D ; Telugu # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA -0C55..0C56 ; Telugu # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK -0C58..0C59 ; Telugu # Lo [2] TELUGU LETTER TSA..TELUGU LETTER DZA -0C60..0C61 ; Telugu # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL -0C62..0C63 ; Telugu # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL -0C66..0C6F ; Telugu # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE -0C78..0C7E ; Telugu # No [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR -0C7F ; Telugu # So TELUGU SIGN TUUMU - -# Total code points: 93 - -# ================================================ - -0C82..0C83 ; Kannada # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA -0C85..0C8C ; Kannada # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L -0C8E..0C90 ; Kannada # Lo [3] KANNADA LETTER E..KANNADA LETTER AI -0C92..0CA8 ; Kannada # Lo [23] KANNADA LETTER O..KANNADA LETTER NA -0CAA..0CB3 ; Kannada # Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA -0CB5..0CB9 ; Kannada # Lo [5] KANNADA LETTER VA..KANNADA LETTER HA -0CBC ; Kannada # Mn KANNADA SIGN NUKTA -0CBD ; Kannada # Lo KANNADA SIGN AVAGRAHA -0CBE ; Kannada # Mc KANNADA VOWEL SIGN AA -0CBF ; Kannada # Mn KANNADA VOWEL SIGN I -0CC0..0CC4 ; Kannada # Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR -0CC6 ; Kannada # Mn KANNADA VOWEL SIGN E -0CC7..0CC8 ; Kannada # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI -0CCA..0CCB ; Kannada # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO -0CCC..0CCD ; Kannada # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA -0CD5..0CD6 ; Kannada # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK -0CDE ; Kannada # Lo KANNADA LETTER FA -0CE0..0CE1 ; Kannada # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL -0CE2..0CE3 ; Kannada # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL -0CE6..0CEF ; Kannada # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE - -# Total code points: 84 - -# ================================================ - -0D02..0D03 ; Malayalam # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA -0D05..0D0C ; Malayalam # Lo [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L -0D0E..0D10 ; Malayalam # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI -0D12..0D28 ; Malayalam # Lo [23] MALAYALAM LETTER O..MALAYALAM LETTER NA -0D2A..0D39 ; Malayalam # Lo [16] MALAYALAM LETTER PA..MALAYALAM LETTER HA -0D3D ; Malayalam # Lo MALAYALAM SIGN AVAGRAHA -0D3E..0D40 ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II -0D41..0D44 ; Malayalam # Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR -0D46..0D48 ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI -0D4A..0D4C ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU -0D4D ; Malayalam # Mn MALAYALAM SIGN VIRAMA -0D57 ; Malayalam # Mc MALAYALAM AU LENGTH MARK -0D60..0D61 ; Malayalam # Lo [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL -0D62..0D63 ; Malayalam # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL -0D66..0D6F ; Malayalam # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE -0D70..0D75 ; Malayalam # No [6] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS -0D79 ; Malayalam # So MALAYALAM DATE MARK -0D7A..0D7F ; Malayalam # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K - -# Total code points: 95 - -# ================================================ - -0D82..0D83 ; Sinhala # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA -0D85..0D96 ; Sinhala # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA -0D9A..0DB1 ; Sinhala # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA -0DB3..0DBB ; Sinhala # Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA -0DBD ; Sinhala # Lo SINHALA LETTER DANTAJA LAYANNA -0DC0..0DC6 ; Sinhala # Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA -0DCA ; Sinhala # Mn SINHALA SIGN AL-LAKUNA -0DCF..0DD1 ; Sinhala # Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA -0DD2..0DD4 ; Sinhala # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA -0DD6 ; Sinhala # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA -0DD8..0DDF ; Sinhala # Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA -0DF2..0DF3 ; Sinhala # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA -0DF4 ; Sinhala # Po SINHALA PUNCTUATION KUNDDALIYA - -# Total code points: 80 - -# ================================================ - -0E01..0E30 ; Thai # Lo [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A -0E31 ; Thai # Mn THAI CHARACTER MAI HAN-AKAT -0E32..0E33 ; Thai # Lo [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM -0E34..0E3A ; Thai # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU -0E40..0E45 ; Thai # Lo [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO -0E46 ; Thai # Lm THAI CHARACTER MAIYAMOK -0E47..0E4E ; Thai # Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN -0E4F ; Thai # Po THAI CHARACTER FONGMAN -0E50..0E59 ; Thai # Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE -0E5A..0E5B ; Thai # Po [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT - -# Total code points: 86 - -# ================================================ - -0E81..0E82 ; Lao # Lo [2] LAO LETTER KO..LAO LETTER KHO SUNG -0E84 ; Lao # Lo LAO LETTER KHO TAM -0E87..0E88 ; Lao # Lo [2] LAO LETTER NGO..LAO LETTER CO -0E8A ; Lao # Lo LAO LETTER SO TAM -0E8D ; Lao # Lo LAO LETTER NYO -0E94..0E97 ; Lao # Lo [4] LAO LETTER DO..LAO LETTER THO TAM -0E99..0E9F ; Lao # Lo [7] LAO LETTER NO..LAO LETTER FO SUNG -0EA1..0EA3 ; Lao # Lo [3] LAO LETTER MO..LAO LETTER LO LING -0EA5 ; Lao # Lo LAO LETTER LO LOOT -0EA7 ; Lao # Lo LAO LETTER WO -0EAA..0EAB ; Lao # Lo [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG -0EAD..0EB0 ; Lao # Lo [4] LAO LETTER O..LAO VOWEL SIGN A -0EB1 ; Lao # Mn LAO VOWEL SIGN MAI KAN -0EB2..0EB3 ; Lao # Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM -0EB4..0EB9 ; Lao # Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU -0EBB..0EBC ; Lao # Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO -0EBD ; Lao # Lo LAO SEMIVOWEL SIGN NYO -0EC0..0EC4 ; Lao # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI -0EC6 ; Lao # Lm LAO KO LA -0EC8..0ECD ; Lao # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA -0ED0..0ED9 ; Lao # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE -0EDC..0EDD ; Lao # Lo [2] LAO HO NO..LAO HO MO - -# Total code points: 65 - -# ================================================ - -0F00 ; Tibetan # Lo TIBETAN SYLLABLE OM -0F01..0F03 ; Tibetan # So [3] TIBETAN MARK GTER YIG MGO TRUNCATED A..TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA -0F04..0F12 ; Tibetan # Po [15] TIBETAN MARK INITIAL YIG MGO MDUN MA..TIBETAN MARK RGYA GRAM SHAD -0F13..0F17 ; Tibetan # So [5] TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN..TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS -0F18..0F19 ; Tibetan # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS -0F1A..0F1F ; Tibetan # So [6] TIBETAN SIGN RDEL DKAR GCIG..TIBETAN SIGN RDEL DKAR RDEL NAG -0F20..0F29 ; Tibetan # Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE -0F2A..0F33 ; Tibetan # No [10] TIBETAN DIGIT HALF ONE..TIBETAN DIGIT HALF ZERO -0F34 ; Tibetan # So TIBETAN MARK BSDUS RTAGS -0F35 ; Tibetan # Mn TIBETAN MARK NGAS BZUNG NYI ZLA -0F36 ; Tibetan # So TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN -0F37 ; Tibetan # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS -0F38 ; Tibetan # So TIBETAN MARK CHE MGO -0F39 ; Tibetan # Mn TIBETAN MARK TSA -PHRU -0F3A ; Tibetan # Ps TIBETAN MARK GUG RTAGS GYON -0F3B ; Tibetan # Pe TIBETAN MARK GUG RTAGS GYAS -0F3C ; Tibetan # Ps TIBETAN MARK ANG KHANG GYON -0F3D ; Tibetan # Pe TIBETAN MARK ANG KHANG GYAS -0F3E..0F3F ; Tibetan # Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES -0F40..0F47 ; Tibetan # Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA -0F49..0F6C ; Tibetan # Lo [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA -0F71..0F7E ; Tibetan # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO -0F7F ; Tibetan # Mc TIBETAN SIGN RNAM BCAD -0F80..0F84 ; Tibetan # Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA -0F85 ; Tibetan # Po TIBETAN MARK PALUTA -0F86..0F87 ; Tibetan # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS -0F88..0F8B ; Tibetan # Lo [4] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN GRU MED RGYINGS -0F90..0F97 ; Tibetan # Mn [8] TIBETAN SUBJOINED LETTER KA..TIBETAN SUBJOINED LETTER JA -0F99..0FBC ; Tibetan # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA -0FBE..0FC5 ; Tibetan # So [8] TIBETAN KU RU KHA..TIBETAN SYMBOL RDO RJE -0FC6 ; Tibetan # Mn TIBETAN SYMBOL PADMA GDAN -0FC7..0FCC ; Tibetan # So [6] TIBETAN SYMBOL RDO RJE RGYA GRAM..TIBETAN SYMBOL NOR BU BZHI -KHYIL -0FCE..0FCF ; Tibetan # So [2] TIBETAN SIGN RDEL NAG RDEL DKAR..TIBETAN SIGN RDEL NAG GSUM -0FD0..0FD4 ; Tibetan # Po [5] TIBETAN MARK BSKA- SHOG GI MGO RGYAN..TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA - -# Total code points: 201 - -# ================================================ - -1000..102A ; Myanmar # Lo [43] MYANMAR LETTER KA..MYANMAR LETTER AU -102B..102C ; Myanmar # Mc [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA -102D..1030 ; Myanmar # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU -1031 ; Myanmar # Mc MYANMAR VOWEL SIGN E -1032..1037 ; Myanmar # Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW -1038 ; Myanmar # Mc MYANMAR SIGN VISARGA -1039..103A ; Myanmar # Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT -103B..103C ; Myanmar # Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA -103D..103E ; Myanmar # Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA -103F ; Myanmar # Lo MYANMAR LETTER GREAT SA -1040..1049 ; Myanmar # Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE -104A..104F ; Myanmar # Po [6] MYANMAR SIGN LITTLE SECTION..MYANMAR SYMBOL GENITIVE -1050..1055 ; Myanmar # Lo [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL -1056..1057 ; Myanmar # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR -1058..1059 ; Myanmar # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL -105A..105D ; Myanmar # Lo [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE -105E..1060 ; Myanmar # Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA -1061 ; Myanmar # Lo MYANMAR LETTER SGAW KAREN SHA -1062..1064 ; Myanmar # Mc [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO -1065..1066 ; Myanmar # Lo [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA -1067..106D ; Myanmar # Mc [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5 -106E..1070 ; Myanmar # Lo [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA -1071..1074 ; Myanmar # Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE -1075..1081 ; Myanmar # Lo [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA -1082 ; Myanmar # Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA -1083..1084 ; Myanmar # Mc [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E -1085..1086 ; Myanmar # Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y -1087..108C ; Myanmar # Mc [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3 -108D ; Myanmar # Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE -108E ; Myanmar # Lo MYANMAR LETTER RUMAI PALAUNG FA -108F ; Myanmar # Mc MYANMAR SIGN RUMAI PALAUNG TONE-5 -1090..1099 ; Myanmar # Nd [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE -109E..109F ; Myanmar # So [2] MYANMAR SYMBOL SHAN ONE..MYANMAR SYMBOL SHAN EXCLAMATION - -# Total code points: 156 - -# ================================================ - -10A0..10C5 ; Georgian # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE -10D0..10FA ; Georgian # Lo [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN -10FC ; Georgian # Lm MODIFIER LETTER GEORGIAN NAR -2D00..2D25 ; Georgian # L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE - -# Total code points: 120 - -# ================================================ - -1100..1159 ; Hangul # Lo [90] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG YEORINHIEUH -115F..11A2 ; Hangul # Lo [68] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG SSANGARAEA -11A8..11F9 ; Hangul # Lo [82] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG YEORINHIEUH -3131..318E ; Hangul # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE -3200..321E ; Hangul # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU -3260..327E ; Hangul # So [31] CIRCLED HANGUL KIYEOK..CIRCLED HANGUL IEUNG U -AC00..D7A3 ; Hangul # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH -FFA0..FFBE ; Hangul # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH -FFC2..FFC7 ; Hangul # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E -FFCA..FFCF ; Hangul # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE -FFD2..FFD7 ; Hangul # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU -FFDA..FFDC ; Hangul # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I - -# Total code points: 11620 - -# ================================================ - -1200..1248 ; Ethiopic # Lo [73] ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE QWA -124A..124D ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE -1250..1256 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO -1258 ; Ethiopic # Lo ETHIOPIC SYLLABLE QHWA -125A..125D ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE -1260..1288 ; Ethiopic # Lo [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA -128A..128D ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE -1290..12B0 ; Ethiopic # Lo [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA -12B2..12B5 ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE -12B8..12BE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO -12C0 ; Ethiopic # Lo ETHIOPIC SYLLABLE KXWA -12C2..12C5 ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE -12C8..12D6 ; Ethiopic # Lo [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O -12D8..1310 ; Ethiopic # Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA -1312..1315 ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE -1318..135A ; Ethiopic # Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA -135F ; Ethiopic # Mn ETHIOPIC COMBINING GEMINATION MARK -1360 ; Ethiopic # So ETHIOPIC SECTION MARK -1361..1368 ; Ethiopic # Po [8] ETHIOPIC WORDSPACE..ETHIOPIC PARAGRAPH SEPARATOR -1369..137C ; Ethiopic # No [20] ETHIOPIC DIGIT ONE..ETHIOPIC NUMBER TEN THOUSAND -1380..138F ; Ethiopic # Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE -1390..1399 ; Ethiopic # So [10] ETHIOPIC TONAL MARK YIZET..ETHIOPIC TONAL MARK KURT -2D80..2D96 ; Ethiopic # Lo [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE -2DA0..2DA6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO -2DA8..2DAE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO -2DB0..2DB6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO -2DB8..2DBE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO -2DC0..2DC6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO -2DC8..2DCE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO -2DD0..2DD6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO -2DD8..2DDE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO - -# Total code points: 461 - -# ================================================ - -13A0..13F4 ; Cherokee # Lo [85] CHEROKEE LETTER A..CHEROKEE LETTER YV - -# Total code points: 85 - -# ================================================ - -1401..166C ; Canadian_Aboriginal # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA -166D..166E ; Canadian_Aboriginal # Po [2] CANADIAN SYLLABICS CHI SIGN..CANADIAN SYLLABICS FULL STOP -166F..1676 ; Canadian_Aboriginal # Lo [8] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS NNGAA - -# Total code points: 630 - -# ================================================ - -1680 ; Ogham # Zs OGHAM SPACE MARK -1681..169A ; Ogham # Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH -169B ; Ogham # Ps OGHAM FEATHER MARK -169C ; Ogham # Pe OGHAM REVERSED FEATHER MARK - -# Total code points: 29 - -# ================================================ - -16A0..16EA ; Runic # Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X -16EE..16F0 ; Runic # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL - -# Total code points: 78 - -# ================================================ - -1780..17B3 ; Khmer # Lo [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU -17B4..17B5 ; Khmer # Cf [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA -17B6 ; Khmer # Mc KHMER VOWEL SIGN AA -17B7..17BD ; Khmer # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA -17BE..17C5 ; Khmer # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU -17C6 ; Khmer # Mn KHMER SIGN NIKAHIT -17C7..17C8 ; Khmer # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU -17C9..17D3 ; Khmer # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT -17D4..17D6 ; Khmer # Po [3] KHMER SIGN KHAN..KHMER SIGN CAMNUC PII KUUH -17D7 ; Khmer # Lm KHMER SIGN LEK TOO -17D8..17DA ; Khmer # Po [3] KHMER SIGN BEYYAL..KHMER SIGN KOOMUUT -17DB ; Khmer # Sc KHMER CURRENCY SYMBOL RIEL -17DC ; Khmer # Lo KHMER SIGN AVAKRAHASANYA -17DD ; Khmer # Mn KHMER SIGN ATTHACAN -17E0..17E9 ; Khmer # Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE -17F0..17F9 ; Khmer # No [10] KHMER SYMBOL LEK ATTAK SON..KHMER SYMBOL LEK ATTAK PRAM-BUON -19E0..19FF ; Khmer # So [32] KHMER SYMBOL PATHAMASAT..KHMER SYMBOL DAP-PRAM ROC - -# Total code points: 146 - -# ================================================ - -1800..1801 ; Mongolian # Po [2] MONGOLIAN BIRGA..MONGOLIAN ELLIPSIS -1804 ; Mongolian # Po MONGOLIAN COLON -1806 ; Mongolian # Pd MONGOLIAN TODO SOFT HYPHEN -1807..180A ; Mongolian # Po [4] MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER..MONGOLIAN NIRUGU -180B..180D ; Mongolian # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE -180E ; Mongolian # Zs MONGOLIAN VOWEL SEPARATOR -1810..1819 ; Mongolian # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE -1820..1842 ; Mongolian # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI -1843 ; Mongolian # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN -1844..1877 ; Mongolian # Lo [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA -1880..18A8 ; Mongolian # Lo [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA -18A9 ; Mongolian # Mn MONGOLIAN LETTER ALI GALI DAGALGA -18AA ; Mongolian # Lo MONGOLIAN LETTER MANCHU ALI GALI LHA - -# Total code points: 153 - -# ================================================ - -3041..3096 ; Hiragana # Lo [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE -309D..309E ; Hiragana # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK -309F ; Hiragana # Lo HIRAGANA DIGRAPH YORI - -# Total code points: 89 - -# ================================================ - -30A1..30FA ; Katakana # Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO -30FD..30FE ; Katakana # Lm [2] KATAKANA ITERATION MARK..KATAKANA VOICED ITERATION MARK -30FF ; Katakana # Lo KATAKANA DIGRAPH KOTO -31F0..31FF ; Katakana # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO -32D0..32FE ; Katakana # So [47] CIRCLED KATAKANA A..CIRCLED KATAKANA WO -3300..3357 ; Katakana # So [88] SQUARE APAATO..SQUARE WATTO -FF66..FF6F ; Katakana # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU -FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N - -# Total code points: 299 - -# ================================================ - -3105..312D ; Bopomofo # Lo [41] BOPOMOFO LETTER B..BOPOMOFO LETTER IH -31A0..31B7 ; Bopomofo # Lo [24] BOPOMOFO LETTER BU..BOPOMOFO FINAL LETTER H - -# Total code points: 65 - -# ================================================ - -2E80..2E99 ; Han # So [26] CJK RADICAL REPEAT..CJK RADICAL RAP -2E9B..2EF3 ; Han # So [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE -2F00..2FD5 ; Han # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE -3005 ; Han # Lm IDEOGRAPHIC ITERATION MARK -3007 ; Han # Nl IDEOGRAPHIC NUMBER ZERO -3021..3029 ; Han # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE -3038..303A ; Han # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY -303B ; Han # Lm VERTICAL IDEOGRAPHIC ITERATION MARK -3400..4DB5 ; Han # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 -4E00..9FC3 ; Han # Lo [20932] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FC3 -F900..FA2D ; Han # Lo [302] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA2D -FA30..FA6A ; Han # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A -FA70..FAD9 ; Han # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 -20000..2A6D6 ; Han # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 -2F800..2FA1D ; Han # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D - -# Total code points: 71578 - -# ================================================ - -A000..A014 ; Yi # Lo [21] YI SYLLABLE IT..YI SYLLABLE E -A015 ; Yi # Lm YI SYLLABLE WU -A016..A48C ; Yi # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR -A490..A4C6 ; Yi # So [55] YI RADICAL QOT..YI RADICAL KE - -# Total code points: 1220 - -# ================================================ - -10300..1031E ; Old_Italic # Lo [31] OLD ITALIC LETTER A..OLD ITALIC LETTER UU -10320..10323 ; Old_Italic # No [4] OLD ITALIC NUMERAL ONE..OLD ITALIC NUMERAL FIFTY - -# Total code points: 35 - -# ================================================ - -10330..10340 ; Gothic # Lo [17] GOTHIC LETTER AHSA..GOTHIC LETTER PAIRTHRA -10341 ; Gothic # Nl GOTHIC LETTER NINETY -10342..10349 ; Gothic # Lo [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL -1034A ; Gothic # Nl GOTHIC LETTER NINE HUNDRED - -# Total code points: 27 - -# ================================================ - -10400..1044F ; Deseret # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW - -# Total code points: 80 - -# ================================================ - -0300..036F ; Inherited # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X -064B..0655 ; Inherited # Mn [11] ARABIC FATHATAN..ARABIC HAMZA BELOW -0670 ; Inherited # Mn ARABIC LETTER SUPERSCRIPT ALEF -0951..0952 ; Inherited # Mn [2] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI STRESS SIGN ANUDATTA -1DC0..1DE6 ; Inherited # Mn [39] COMBINING DOTTED GRAVE ACCENT..COMBINING LATIN SMALL LETTER Z -1DFE..1DFF ; Inherited # Mn [2] COMBINING LEFT ARROWHEAD ABOVE..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW -200C..200D ; Inherited # Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER -20D0..20DC ; Inherited # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE -20DD..20E0 ; Inherited # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH -20E1 ; Inherited # Mn COMBINING LEFT RIGHT ARROW ABOVE -20E2..20E4 ; Inherited # Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE -20E5..20F0 ; Inherited # Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE -302A..302F ; Inherited # Mn [6] IDEOGRAPHIC LEVEL TONE MARK..HANGUL DOUBLE DOT TONE MARK -3099..309A ; Inherited # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK -FE00..FE0F ; Inherited # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 -FE20..FE26 ; Inherited # Mn [7] COMBINING LIGATURE LEFT HALF..COMBINING CONJOINING MACRON -101FD ; Inherited # Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE -1D167..1D169 ; Inherited # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 -1D17B..1D182 ; Inherited # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE -1D185..1D18B ; Inherited # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE -1D1AA..1D1AD ; Inherited # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO -E0100..E01EF ; Inherited # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 - -# Total code points: 496 - -# ================================================ - -1700..170C ; Tagalog # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA -170E..1711 ; Tagalog # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA -1712..1714 ; Tagalog # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA - -# Total code points: 20 - -# ================================================ - -1720..1731 ; Hanunoo # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA -1732..1734 ; Hanunoo # Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD - -# Total code points: 21 - -# ================================================ - -1740..1751 ; Buhid # Lo [18] BUHID LETTER A..BUHID LETTER HA -1752..1753 ; Buhid # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U - -# Total code points: 20 - -# ================================================ - -1760..176C ; Tagbanwa # Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA -176E..1770 ; Tagbanwa # Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA -1772..1773 ; Tagbanwa # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U - -# Total code points: 18 - -# ================================================ - -1900..191C ; Limbu # Lo [29] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER HA -1920..1922 ; Limbu # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U -1923..1926 ; Limbu # Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU -1927..1928 ; Limbu # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O -1929..192B ; Limbu # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA -1930..1931 ; Limbu # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA -1932 ; Limbu # Mn LIMBU SMALL LETTER ANUSVARA -1933..1938 ; Limbu # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA -1939..193B ; Limbu # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I -1940 ; Limbu # So LIMBU SIGN LOO -1944..1945 ; Limbu # Po [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK -1946..194F ; Limbu # Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE - -# Total code points: 66 - -# ================================================ - -1950..196D ; Tai_Le # Lo [30] TAI LE LETTER KA..TAI LE LETTER AI -1970..1974 ; Tai_Le # Lo [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6 - -# Total code points: 35 - -# ================================================ - -10000..1000B ; Linear_B # Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE -1000D..10026 ; Linear_B # Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO -10028..1003A ; Linear_B # Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO -1003C..1003D ; Linear_B # Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE -1003F..1004D ; Linear_B # Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO -10050..1005D ; Linear_B # Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089 -10080..100FA ; Linear_B # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305 - -# Total code points: 211 - -# ================================================ - -10380..1039D ; Ugaritic # Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU -1039F ; Ugaritic # Po UGARITIC WORD DIVIDER - -# Total code points: 31 - -# ================================================ - -10450..1047F ; Shavian # Lo [48] SHAVIAN LETTER PEEP..SHAVIAN LETTER YEW - -# Total code points: 48 - -# ================================================ - -10480..1049D ; Osmanya # Lo [30] OSMANYA LETTER ALEF..OSMANYA LETTER OO -104A0..104A9 ; Osmanya # Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE - -# Total code points: 40 - -# ================================================ - -10800..10805 ; Cypriot # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA -10808 ; Cypriot # Lo CYPRIOT SYLLABLE JO -1080A..10835 ; Cypriot # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO -10837..10838 ; Cypriot # Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE -1083C ; Cypriot # Lo CYPRIOT SYLLABLE ZA -1083F ; Cypriot # Lo CYPRIOT SYLLABLE ZO - -# Total code points: 55 - -# ================================================ - -2800..28FF ; Braille # So [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678 - -# Total code points: 256 - -# ================================================ - -1A00..1A16 ; Buginese # Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA -1A17..1A18 ; Buginese # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U -1A19..1A1B ; Buginese # Mc [3] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN AE -1A1E..1A1F ; Buginese # Po [2] BUGINESE PALLAWA..BUGINESE END OF SECTION - -# Total code points: 30 - -# ================================================ - -03E2..03EF ; Coptic # L& [14] COPTIC CAPITAL LETTER SHEI..COPTIC SMALL LETTER DEI -2C80..2CE4 ; Coptic # L& [101] COPTIC CAPITAL LETTER ALFA..COPTIC SYMBOL KAI -2CE5..2CEA ; Coptic # So [6] COPTIC SYMBOL MI RO..COPTIC SYMBOL SHIMA SIMA -2CF9..2CFC ; Coptic # Po [4] COPTIC OLD NUBIAN FULL STOP..COPTIC OLD NUBIAN VERSE DIVIDER -2CFD ; Coptic # No COPTIC FRACTION ONE HALF -2CFE..2CFF ; Coptic # Po [2] COPTIC FULL STOP..COPTIC MORPHOLOGICAL DIVIDER - -# Total code points: 128 - -# ================================================ - -1980..19A9 ; New_Tai_Lue # Lo [42] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW XVA -19B0..19C0 ; New_Tai_Lue # Mc [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY -19C1..19C7 ; New_Tai_Lue # Lo [7] NEW TAI LUE LETTER FINAL V..NEW TAI LUE LETTER FINAL B -19C8..19C9 ; New_Tai_Lue # Mc [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2 -19D0..19D9 ; New_Tai_Lue # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE -19DE..19DF ; New_Tai_Lue # Po [2] NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV - -# Total code points: 80 - -# ================================================ - -2C00..2C2E ; Glagolitic # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE -2C30..2C5E ; Glagolitic # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE - -# Total code points: 94 - -# ================================================ - -2D30..2D65 ; Tifinagh # Lo [54] TIFINAGH LETTER YA..TIFINAGH LETTER YAZZ -2D6F ; Tifinagh # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK - -# Total code points: 55 - -# ================================================ - -A800..A801 ; Syloti_Nagri # Lo [2] SYLOTI NAGRI LETTER A..SYLOTI NAGRI LETTER I -A802 ; Syloti_Nagri # Mn SYLOTI NAGRI SIGN DVISVARA -A803..A805 ; Syloti_Nagri # Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O -A806 ; Syloti_Nagri # Mn SYLOTI NAGRI SIGN HASANTA -A807..A80A ; Syloti_Nagri # Lo [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO -A80B ; Syloti_Nagri # Mn SYLOTI NAGRI SIGN ANUSVARA -A80C..A822 ; Syloti_Nagri # Lo [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO -A823..A824 ; Syloti_Nagri # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I -A825..A826 ; Syloti_Nagri # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E -A827 ; Syloti_Nagri # Mc SYLOTI NAGRI VOWEL SIGN OO -A828..A82B ; Syloti_Nagri # So [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI POETRY MARK-4 - -# Total code points: 44 - -# ================================================ - -103A0..103C3 ; Old_Persian # Lo [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA -103C8..103CF ; Old_Persian # Lo [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH -103D0 ; Old_Persian # Po OLD PERSIAN WORD DIVIDER -103D1..103D5 ; Old_Persian # Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED - -# Total code points: 50 - -# ================================================ - -10A00 ; Kharoshthi # Lo KHAROSHTHI LETTER A -10A01..10A03 ; Kharoshthi # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R -10A05..10A06 ; Kharoshthi # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O -10A0C..10A0F ; Kharoshthi # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA -10A10..10A13 ; Kharoshthi # Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA -10A15..10A17 ; Kharoshthi # Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA -10A19..10A33 ; Kharoshthi # Lo [27] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA -10A38..10A3A ; Kharoshthi # Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW -10A3F ; Kharoshthi # Mn KHAROSHTHI VIRAMA -10A40..10A47 ; Kharoshthi # No [8] KHAROSHTHI DIGIT ONE..KHAROSHTHI NUMBER ONE THOUSAND -10A50..10A58 ; Kharoshthi # Po [9] KHAROSHTHI PUNCTUATION DOT..KHAROSHTHI PUNCTUATION LINES - -# Total code points: 65 - -# ================================================ - -1B00..1B03 ; Balinese # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG -1B04 ; Balinese # Mc BALINESE SIGN BISAH -1B05..1B33 ; Balinese # Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA -1B34 ; Balinese # Mn BALINESE SIGN REREKAN -1B35 ; Balinese # Mc BALINESE VOWEL SIGN TEDUNG -1B36..1B3A ; Balinese # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA -1B3B ; Balinese # Mc BALINESE VOWEL SIGN RA REPA TEDUNG -1B3C ; Balinese # Mn BALINESE VOWEL SIGN LA LENGA -1B3D..1B41 ; Balinese # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG -1B42 ; Balinese # Mn BALINESE VOWEL SIGN PEPET -1B43..1B44 ; Balinese # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG -1B45..1B4B ; Balinese # Lo [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK -1B50..1B59 ; Balinese # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE -1B5A..1B60 ; Balinese # Po [7] BALINESE PANTI..BALINESE PAMENENG -1B61..1B6A ; Balinese # So [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE -1B6B..1B73 ; Balinese # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG -1B74..1B7C ; Balinese # So [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING - -# Total code points: 121 - -# ================================================ - -12000..1236E ; Cuneiform # Lo [879] CUNEIFORM SIGN A..CUNEIFORM SIGN ZUM -12400..12462 ; Cuneiform # Nl [99] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER -12470..12473 ; Cuneiform # Po [4] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON - -# Total code points: 982 - -# ================================================ - -10900..10915 ; Phoenician # Lo [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU -10916..10919 ; Phoenician # No [4] PHOENICIAN NUMBER ONE..PHOENICIAN NUMBER ONE HUNDRED -1091F ; Phoenician # Po PHOENICIAN WORD SEPARATOR - -# Total code points: 27 - -# ================================================ - -A840..A873 ; Phags_Pa # Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU -A874..A877 ; Phags_Pa # Po [4] PHAGS-PA SINGLE HEAD MARK..PHAGS-PA MARK DOUBLE SHAD - -# Total code points: 56 - -# ================================================ - -07C0..07C9 ; Nko # Nd [10] NKO DIGIT ZERO..NKO DIGIT NINE -07CA..07EA ; Nko # Lo [33] NKO LETTER A..NKO LETTER JONA RA -07EB..07F3 ; Nko # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE -07F4..07F5 ; Nko # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE -07F6 ; Nko # So NKO SYMBOL OO DENNEN -07F7..07F9 ; Nko # Po [3] NKO SYMBOL GBAKURUNEN..NKO EXCLAMATION MARK -07FA ; Nko # Lm NKO LAJANYALAN - -# Total code points: 59 - -# ================================================ - -1B80..1B81 ; Sundanese # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR -1B82 ; Sundanese # Mc SUNDANESE SIGN PANGWISAD -1B83..1BA0 ; Sundanese # Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA -1BA1 ; Sundanese # Mc SUNDANESE CONSONANT SIGN PAMINGKAL -1BA2..1BA5 ; Sundanese # Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU -1BA6..1BA7 ; Sundanese # Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG -1BA8..1BA9 ; Sundanese # Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG -1BAA ; Sundanese # Mc SUNDANESE SIGN PAMAAEH -1BAE..1BAF ; Sundanese # Lo [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA -1BB0..1BB9 ; Sundanese # Nd [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE - -# Total code points: 55 - -# ================================================ - -1C00..1C23 ; Lepcha # Lo [36] LEPCHA LETTER KA..LEPCHA LETTER A -1C24..1C2B ; Lepcha # Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU -1C2C..1C33 ; Lepcha # Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T -1C34..1C35 ; Lepcha # Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG -1C36..1C37 ; Lepcha # Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA -1C3B..1C3F ; Lepcha # Po [5] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION TSHOOK -1C40..1C49 ; Lepcha # Nd [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE -1C4D..1C4F ; Lepcha # Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA - -# Total code points: 74 - -# ================================================ - -1C50..1C59 ; Ol_Chiki # Nd [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE -1C5A..1C77 ; Ol_Chiki # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH -1C78..1C7D ; Ol_Chiki # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD -1C7E..1C7F ; Ol_Chiki # Po [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD - -# Total code points: 48 - -# ================================================ - -A500..A60B ; Vai # Lo [268] VAI SYLLABLE EE..VAI SYLLABLE NG -A60C ; Vai # Lm VAI SYLLABLE LENGTHENER -A60D..A60F ; Vai # Po [3] VAI COMMA..VAI QUESTION MARK -A610..A61F ; Vai # Lo [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG -A620..A629 ; Vai # Nd [10] VAI DIGIT ZERO..VAI DIGIT NINE -A62A..A62B ; Vai # Lo [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO - -# Total code points: 300 - -# ================================================ - -A880..A881 ; Saurashtra # Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA -A882..A8B3 ; Saurashtra # Lo [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA -A8B4..A8C3 ; Saurashtra # Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU -A8C4 ; Saurashtra # Mn SAURASHTRA SIGN VIRAMA -A8CE..A8CF ; Saurashtra # Po [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA -A8D0..A8D9 ; Saurashtra # Nd [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE - -# Total code points: 81 - -# ================================================ - -A900..A909 ; Kayah_Li # Nd [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE -A90A..A925 ; Kayah_Li # Lo [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO -A926..A92D ; Kayah_Li # Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU -A92E..A92F ; Kayah_Li # Po [2] KAYAH LI SIGN CWI..KAYAH LI SIGN SHYA - -# Total code points: 48 - -# ================================================ - -A930..A946 ; Rejang # Lo [23] REJANG LETTER KA..REJANG LETTER A -A947..A951 ; Rejang # Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R -A952..A953 ; Rejang # Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA -A95F ; Rejang # Po REJANG SECTION MARK - -# Total code points: 37 - -# ================================================ - -10280..1029C ; Lycian # Lo [29] LYCIAN LETTER A..LYCIAN LETTER X - -# Total code points: 29 - -# ================================================ - -102A0..102D0 ; Carian # Lo [49] CARIAN LETTER A..CARIAN LETTER UUU3 - -# Total code points: 49 - -# ================================================ - -10920..10939 ; Lydian # Lo [26] LYDIAN LETTER A..LYDIAN LETTER C -1093F ; Lydian # Po LYDIAN TRIANGULAR MARK - -# Total code points: 27 - -# ================================================ - -AA00..AA28 ; Cham # Lo [41] CHAM LETTER A..CHAM LETTER HA -AA29..AA2E ; Cham # Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE -AA2F..AA30 ; Cham # Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI -AA31..AA32 ; Cham # Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE -AA33..AA34 ; Cham # Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA -AA35..AA36 ; Cham # Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA -AA40..AA42 ; Cham # Lo [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG -AA43 ; Cham # Mn CHAM CONSONANT SIGN FINAL NG -AA44..AA4B ; Cham # Lo [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS -AA4C ; Cham # Mn CHAM CONSONANT SIGN FINAL M -AA4D ; Cham # Mc CHAM CONSONANT SIGN FINAL H -AA50..AA59 ; Cham # Nd [10] CHAM DIGIT ZERO..CHAM DIGIT NINE -AA5C..AA5F ; Cham # Po [4] CHAM PUNCTUATION SPIRAL..CHAM PUNCTUATION TRIPLE DANDA - -# Total code points: 83 - -# EOF diff --git a/enc/unicode/UnicodeData.txt b/enc/unicode/UnicodeData.txt deleted file mode 100644 index 77db788cf29cb4..00000000000000 --- a/enc/unicode/UnicodeData.txt +++ /dev/null @@ -1,19336 +0,0 @@ -0000;;Cc;0;BN;;;;;N;NULL;;;; -0001;;Cc;0;BN;;;;;N;START OF HEADING;;;; -0002;;Cc;0;BN;;;;;N;START OF TEXT;;;; -0003;;Cc;0;BN;;;;;N;END OF TEXT;;;; -0004;;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;; -0005;;Cc;0;BN;;;;;N;ENQUIRY;;;; -0006;;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;; -0007;;Cc;0;BN;;;;;N;BELL;;;; -0008;;Cc;0;BN;;;;;N;BACKSPACE;;;; -0009;;Cc;0;S;;;;;N;CHARACTER TABULATION;;;; -000A;;Cc;0;B;;;;;N;LINE FEED (LF);;;; -000B;;Cc;0;S;;;;;N;LINE TABULATION;;;; -000C;;Cc;0;WS;;;;;N;FORM FEED (FF);;;; -000D;;Cc;0;B;;;;;N;CARRIAGE RETURN (CR);;;; -000E;;Cc;0;BN;;;;;N;SHIFT OUT;;;; -000F;;Cc;0;BN;;;;;N;SHIFT IN;;;; -0010;;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;; -0011;;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;; -0012;;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;; -0013;;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;; -0014;;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;; -0015;;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;; -0016;;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;; -0017;;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;; -0018;;Cc;0;BN;;;;;N;CANCEL;;;; -0019;;Cc;0;BN;;;;;N;END OF MEDIUM;;;; -001A;;Cc;0;BN;;;;;N;SUBSTITUTE;;;; -001B;;Cc;0;BN;;;;;N;ESCAPE;;;; -001C;;Cc;0;B;;;;;N;INFORMATION SEPARATOR FOUR;;;; -001D;;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;; -001E;;Cc;0;B;;;;;N;INFORMATION SEPARATOR TWO;;;; -001F;;Cc;0;S;;;;;N;INFORMATION SEPARATOR ONE;;;; -0020;SPACE;Zs;0;WS;;;;;N;;;;; -0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; -0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;; -0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;; -0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;; -0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;; -0026;AMPERSAND;Po;0;ON;;;;;N;;;;; -0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;; -0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;; -0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;; -002A;ASTERISK;Po;0;ON;;;;;N;;;;; -002B;PLUS SIGN;Sm;0;ES;;;;;N;;;;; -002C;COMMA;Po;0;CS;;;;;N;;;;; -002D;HYPHEN-MINUS;Pd;0;ES;;;;;N;;;;; -002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;; -002F;SOLIDUS;Po;0;CS;;;;;N;SLASH;;;; -0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;; -0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;; -0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;; -0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;; -0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;; -0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;; -0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;; -0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;; -0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;; -0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;; -003A;COLON;Po;0;CS;;;;;N;;;;; -003B;SEMICOLON;Po;0;ON;;;;;N;;;;; -003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;; -003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;; -003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;; -003F;QUESTION MARK;Po;0;ON;;;;;N;;;;; -0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;; -0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061; -0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062; -0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063; -0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064; -0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065; -0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066; -0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067; -0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068; -0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069; -004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A; -004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B; -004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C; -004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D; -004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E; -004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F; -0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070; -0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071; -0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072; -0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073; -0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074; -0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075; -0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076; -0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077; -0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078; -0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079; -005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A; -005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;; -005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;; -005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;; -005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;; -005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;; -0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;; -0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041 -0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042 -0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043 -0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044 -0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045 -0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046 -0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047 -0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048 -0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049 -006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A -006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B -006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C -006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D -006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E -006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F -0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050 -0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051 -0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052 -0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053 -0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054 -0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055 -0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056 -0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057 -0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058 -0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059 -007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A -007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;; -007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;; -007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;; -007E;TILDE;Sm;0;ON;;;;;N;;;;; -007F;;Cc;0;BN;;;;;N;DELETE;;;; -0080;;Cc;0;BN;;;;;N;;;;; -0081;;Cc;0;BN;;;;;N;;;;; -0082;;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;; -0083;;Cc;0;BN;;;;;N;NO BREAK HERE;;;; -0084;;Cc;0;BN;;;;;N;;;;; -0085;;Cc;0;B;;;;;N;NEXT LINE (NEL);;;; -0086;;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;; -0087;;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;; -0088;;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;; -0089;;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;; -008A;;Cc;0;BN;;;;;N;LINE TABULATION SET;;;; -008B;;Cc;0;BN;;;;;N;PARTIAL LINE FORWARD;;;; -008C;;Cc;0;BN;;;;;N;PARTIAL LINE BACKWARD;;;; -008D;;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;; -008E;;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;; -008F;;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;; -0090;;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;; -0091;;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;; -0092;;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;; -0093;;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;; -0094;;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;; -0095;;Cc;0;BN;;;;;N;MESSAGE WAITING;;;; -0096;;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;; -0097;;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;; -0098;;Cc;0;BN;;;;;N;START OF STRING;;;; -0099;;Cc;0;BN;;;;;N;;;;; -009A;;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;; -009B;;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;; -009C;;Cc;0;BN;;;;;N;STRING TERMINATOR;;;; -009D;;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;; -009E;;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;; -009F;;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;; -00A0;NO-BREAK SPACE;Zs;0;CS; 0020;;;;N;NON-BREAKING SPACE;;;; -00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; -00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;; -00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;; -00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;; -00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;; -00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;; -00A7;SECTION SIGN;So;0;ON;;;;;N;;;;; -00A8;DIAERESIS;Sk;0;ON; 0020 0308;;;;N;SPACING DIAERESIS;;;; -00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;; -00AA;FEMININE ORDINAL INDICATOR;Ll;0;L; 0061;;;;N;;;;; -00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;; -00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;; -00AD;SOFT HYPHEN;Cf;0;BN;;;;;N;;;;; -00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;; -00AF;MACRON;Sk;0;ON; 0020 0304;;;;N;SPACING MACRON;;;; -00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;; -00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;; -00B2;SUPERSCRIPT TWO;No;0;EN; 0032;;2;2;N;SUPERSCRIPT DIGIT TWO;;;; -00B3;SUPERSCRIPT THREE;No;0;EN; 0033;;3;3;N;SUPERSCRIPT DIGIT THREE;;;; -00B4;ACUTE ACCENT;Sk;0;ON; 0020 0301;;;;N;SPACING ACUTE;;;; -00B5;MICRO SIGN;Ll;0;L; 03BC;;;;N;;;039C;;039C -00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;; -00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;; -00B8;CEDILLA;Sk;0;ON; 0020 0327;;;;N;SPACING CEDILLA;;;; -00B9;SUPERSCRIPT ONE;No;0;EN; 0031;;1;1;N;SUPERSCRIPT DIGIT ONE;;;; -00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L; 006F;;;;N;;;;; -00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;*;;; -00BC;VULGAR FRACTION ONE QUARTER;No;0;ON; 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;; -00BD;VULGAR FRACTION ONE HALF;No;0;ON; 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;; -00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON; 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;; -00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;; -00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0; -00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1; -00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2; -00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3; -00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4; -00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5; -00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;ash *;;00E6; -00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7; -00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8; -00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9; -00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA; -00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB; -00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC; -00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED; -00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE; -00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF; -00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0; -00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1; -00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2; -00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3; -00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4; -00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5; -00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6; -00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;; -00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8; -00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9; -00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA; -00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB; -00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC; -00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD; -00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE; -00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;; -00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0 -00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1 -00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2 -00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3 -00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4 -00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5 -00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;ash *;00C6;;00C6 -00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7 -00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8 -00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9 -00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA -00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB -00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC -00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD -00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE -00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF -00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0 -00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1 -00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2 -00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3 -00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4 -00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5 -00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6 -00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;; -00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8 -00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9 -00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA -00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB -00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC -00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD -00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE -00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178 -0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101; -0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100 -0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103; -0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102 -0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105; -0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104 -0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107; -0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106 -0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109; -0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108 -010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B; -010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A -010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D; -010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C -010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F; -010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E -0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111; -0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110 -0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113; -0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112 -0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115; -0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114 -0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117; -0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116 -0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119; -0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118 -011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B; -011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A -011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D; -011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C -011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F; -011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E -0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121; -0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120 -0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123; -0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122 -0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125; -0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124 -0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127; -0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126 -0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129; -0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128 -012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B; -012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A -012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D; -012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C -012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F; -012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E -0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069; -0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049 -0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L; 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133; -0133;LATIN SMALL LIGATURE IJ;Ll;0;L; 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132 -0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135; -0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134 -0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137; -0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136 -0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;; -0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A; -013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139 -013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C; -013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B -013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E; -013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D -013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L; 004C 00B7;;;;N;;;;0140; -0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L; 006C 00B7;;;;N;;;013F;;013F -0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142; -0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141 -0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144; -0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143 -0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146; -0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145 -0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148; -0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147 -0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L; 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;; -014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B; -014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A -014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D; -014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C -014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F; -014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E -0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151; -0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150 -0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153; -0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152 -0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155; -0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154 -0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157; -0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156 -0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159; -0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158 -015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B; -015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A -015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D; -015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C -015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;*;;015F; -015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;*;015E;;015E -0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161; -0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160 -0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;*;;0163; -0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;*;0162;;0162 -0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165; -0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164 -0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167; -0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166 -0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169; -0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168 -016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B; -016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A -016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D; -016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C -016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F; -016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E -0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171; -0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170 -0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173; -0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172 -0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175; -0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174 -0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177; -0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176 -0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF; -0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A; -017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179 -017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C; -017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B -017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E; -017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D -017F;LATIN SMALL LETTER LONG S;Ll;0;L; 0073;;;;N;;;0053;;0053 -0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;0243;;0243 -0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253; -0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183; -0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182 -0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185; -0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184 -0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254; -0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188; -0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187 -0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;*;;0256; -018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257; -018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C; -018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B -018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;; -018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD; -018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259; -0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B; -0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192; -0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191 -0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260; -0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263; -0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;hwair;01F6;;01F6 -0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269; -0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268; -0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199; -0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198 -019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;023D;;023D -019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;; -019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F; -019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272; -019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220 -019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;*;;0275; -01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1; -01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0 -01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;gha;;01A3; -01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;gha;01A2;;01A2 -01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5; -01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4 -01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;*;;0280; -01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8; -01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7 -01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283; -01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;; -01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;; -01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD; -01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC -01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288; -01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0; -01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF -01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A; -01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B; -01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4; -01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3 -01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6; -01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5 -01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292; -01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9; -01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8 -01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;; -01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;; -01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD; -01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC -01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;; -01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7 -01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;; -01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;; -01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;; -01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;; -01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L; 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5 -01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L; 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;01C5 -01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L; 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5 -01C7;LATIN CAPITAL LETTER LJ;Lu;0;L; 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8 -01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L; 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;01C8 -01C9;LATIN SMALL LETTER LJ;Ll;0;L; 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8 -01CA;LATIN CAPITAL LETTER NJ;Lu;0;L; 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB -01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L; 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;01CB -01CC;LATIN SMALL LETTER NJ;Ll;0;L; 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB -01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE; -01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD -01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0; -01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF -01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2; -01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1 -01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4; -01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3 -01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6; -01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5 -01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8; -01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7 -01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA; -01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9 -01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC; -01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB -01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E -01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF; -01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE -01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1; -01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0 -01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;ash *;;01E3; -01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;ash *;01E2;;01E2 -01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5; -01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4 -01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7; -01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6 -01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9; -01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8 -01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB; -01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA -01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED; -01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC -01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF; -01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE -01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;; -01F1;LATIN CAPITAL LETTER DZ;Lu;0;L; 0044 005A;;;;N;;;;01F3;01F2 -01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L; 0044 007A;;;;N;;;01F1;01F3;01F2 -01F3;LATIN SMALL LETTER DZ;Ll;0;L; 0064 007A;;;;N;;;01F1;;01F2 -01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5; -01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4 -01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195; -01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF; -01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9; -01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8 -01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB; -01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA -01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;ash *;;01FD; -01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;ash *;01FC;;01FC -01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF; -01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE -0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201; -0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200 -0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203; -0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202 -0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205; -0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204 -0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207; -0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206 -0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209; -0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208 -020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B; -020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A -020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D; -020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C -020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F; -020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E -0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211; -0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210 -0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213; -0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212 -0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215; -0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214 -0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217; -0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216 -0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;*;;0219; -0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;*;0218;;0218 -021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;*;;021B; -021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;*;021A;;021A -021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D; -021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C -021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F; -021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E -0220;LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;Lu;0;L;;;;;N;;;;019E; -0221;LATIN SMALL LETTER D WITH CURL;Ll;0;L;;;;;N;;;;; -0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223; -0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222 -0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225; -0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224 -0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227; -0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226 -0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229; -0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228 -022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B; -022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A -022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D; -022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C -022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F; -022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E -0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231; -0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230 -0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233; -0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232 -0234;LATIN SMALL LETTER L WITH CURL;Ll;0;L;;;;;N;;;;; -0235;LATIN SMALL LETTER N WITH CURL;Ll;0;L;;;;;N;;;;; -0236;LATIN SMALL LETTER T WITH CURL;Ll;0;L;;;;;N;;;;; -0237;LATIN SMALL LETTER DOTLESS J;Ll;0;L;;;;;N;;;;; -0238;LATIN SMALL LETTER DB DIGRAPH;Ll;0;L;;;;;N;;;;; -0239;LATIN SMALL LETTER QP DIGRAPH;Ll;0;L;;;;;N;;;;; -023A;LATIN CAPITAL LETTER A WITH STROKE;Lu;0;L;;;;;N;;;;2C65; -023B;LATIN CAPITAL LETTER C WITH STROKE;Lu;0;L;;;;;N;;;;023C; -023C;LATIN SMALL LETTER C WITH STROKE;Ll;0;L;;;;;N;;;023B;;023B -023D;LATIN CAPITAL LETTER L WITH BAR;Lu;0;L;;;;;N;;;;019A; -023E;LATIN CAPITAL LETTER T WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;2C66; -023F;LATIN SMALL LETTER S WITH SWASH TAIL;Ll;0;L;;;;;N;;;;; -0240;LATIN SMALL LETTER Z WITH SWASH TAIL;Ll;0;L;;;;;N;;;;; -0241;LATIN CAPITAL LETTER GLOTTAL STOP;Lu;0;L;;;;;N;;;;0242; -0242;LATIN SMALL LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;0241;;0241 -0243;LATIN CAPITAL LETTER B WITH STROKE;Lu;0;L;;;;;N;;;;0180; -0244;LATIN CAPITAL LETTER U BAR;Lu;0;L;;;;;N;;;;0289; -0245;LATIN CAPITAL LETTER TURNED V;Lu;0;L;;;;;N;;;;028C; -0246;LATIN CAPITAL LETTER E WITH STROKE;Lu;0;L;;;;;N;;;;0247; -0247;LATIN SMALL LETTER E WITH STROKE;Ll;0;L;;;;;N;;;0246;;0246 -0248;LATIN CAPITAL LETTER J WITH STROKE;Lu;0;L;;;;;N;;;;0249; -0249;LATIN SMALL LETTER J WITH STROKE;Ll;0;L;;;;;N;;;0248;;0248 -024A;LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL;Lu;0;L;;;;;N;;;;024B; -024B;LATIN SMALL LETTER Q WITH HOOK TAIL;Ll;0;L;;;;;N;;;024A;;024A -024C;LATIN CAPITAL LETTER R WITH STROKE;Lu;0;L;;;;;N;;;;024D; -024D;LATIN SMALL LETTER R WITH STROKE;Ll;0;L;;;;;N;;;024C;;024C -024E;LATIN CAPITAL LETTER Y WITH STROKE;Lu;0;L;;;;;N;;;;024F; -024F;LATIN SMALL LETTER Y WITH STROKE;Ll;0;L;;;;;N;;;024E;;024E -0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;2C6F;;2C6F -0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;2C6D;;2C6D -0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;; -0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181 -0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186 -0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;; -0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189 -0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A -0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;; -0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F -025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;; -025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190 -025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;; -025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;; -025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;; -025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;; -0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193 -0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;; -0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;; -0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194 -0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;; -0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;; -0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;; -0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;; -0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197 -0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196 -026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;; -026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;2C62;;2C62 -026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;; -026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;; -026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;; -026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C -0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;; -0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;2C6E;;2C6E -0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D -0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;; -0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;; -0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F -0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;; -0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;; -0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;; -0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;; -027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;; -027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;; -027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;; -027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;2C64;;2C64 -027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;; -027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;; -0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;*;01A6;;01A6 -0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;; -0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;; -0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9 -0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;; -0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;; -0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;; -0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;; -0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE -0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;0244;;0244 -028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1 -028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2 -028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;0245;;0245 -028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;; -028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;; -028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;; -0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;; -0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;; -0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7 -0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;; -0294;LATIN LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;; -0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;; -0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;; -0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;; -0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;; -0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;; -029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;; -029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;; -029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;; -029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;; -029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;; -029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;; -02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;; -02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;; -02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;; -02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;; -02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;; -02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;; -02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;; -02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;; -02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;; -02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;; -02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;; -02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;; -02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;; -02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;; -02AE;LATIN SMALL LETTER TURNED H WITH FISHHOOK;Ll;0;L;;;;;N;;;;; -02AF;LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL;Ll;0;L;;;;;N;;;;; -02B0;MODIFIER LETTER SMALL H;Lm;0;L; 0068;;;;N;;;;; -02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L; 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;; -02B2;MODIFIER LETTER SMALL J;Lm;0;L; 006A;;;;N;;;;; -02B3;MODIFIER LETTER SMALL R;Lm;0;L; 0072;;;;N;;;;; -02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L; 0279;;;;N;;;;; -02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L; 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;; -02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L; 0281;;;;N;;;;; -02B7;MODIFIER LETTER SMALL W;Lm;0;L; 0077;;;;N;;;;; -02B8;MODIFIER LETTER SMALL Y;Lm;0;L; 0079;;;;N;;;;; -02B9;MODIFIER LETTER PRIME;Lm;0;ON;;;;;N;;;;; -02BA;MODIFIER LETTER DOUBLE PRIME;Lm;0;ON;;;;;N;;;;; -02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;; -02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;; -02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;; -02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;; -02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;; -02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;; -02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;; -02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;; -02C7;CARON;Lm;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;; -02C8;MODIFIER LETTER VERTICAL LINE;Lm;0;ON;;;;;N;;;;; -02C9;MODIFIER LETTER MACRON;Lm;0;ON;;;;;N;;Mandarin Chinese first tone;;; -02CA;MODIFIER LETTER ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;; -02CB;MODIFIER LETTER GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;; -02CC;MODIFIER LETTER LOW VERTICAL LINE;Lm;0;ON;;;;;N;;;;; -02CD;MODIFIER LETTER LOW MACRON;Lm;0;ON;;;;;N;;;;; -02CE;MODIFIER LETTER LOW GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;; -02CF;MODIFIER LETTER LOW ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;; -02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;; -02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;; -02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;; -02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;; -02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;; -02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;; -02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;; -02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;; -02D8;BREVE;Sk;0;ON; 0020 0306;;;;N;SPACING BREVE;;;; -02D9;DOT ABOVE;Sk;0;ON; 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;; -02DA;RING ABOVE;Sk;0;ON; 0020 030A;;;;N;SPACING RING ABOVE;;;; -02DB;OGONEK;Sk;0;ON; 0020 0328;;;;N;SPACING OGONEK;;;; -02DC;SMALL TILDE;Sk;0;ON; 0020 0303;;;;N;SPACING TILDE;;;; -02DD;DOUBLE ACUTE ACCENT;Sk;0;ON; 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;; -02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;; -02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;; -02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L; 0263;;;;N;;;;; -02E1;MODIFIER LETTER SMALL L;Lm;0;L; 006C;;;;N;;;;; -02E2;MODIFIER LETTER SMALL S;Lm;0;L; 0073;;;;N;;;;; -02E3;MODIFIER LETTER SMALL X;Lm;0;L; 0078;;;;N;;;;; -02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L; 0295;;;;N;;;;; -02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;; -02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;; -02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;; -02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;; -02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;; -02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;; -02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;; -02EC;MODIFIER LETTER VOICING;Lm;0;ON;;;;;N;;;;; -02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;; -02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;; -02EF;MODIFIER LETTER LOW DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02F0;MODIFIER LETTER LOW UP ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02F1;MODIFIER LETTER LOW LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02F2;MODIFIER LETTER LOW RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02F3;MODIFIER LETTER LOW RING;Sk;0;ON;;;;;N;;;;; -02F4;MODIFIER LETTER MIDDLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;; -02F5;MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;; -02F6;MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT;Sk;0;ON;;;;;N;;;;; -02F7;MODIFIER LETTER LOW TILDE;Sk;0;ON;;;;;N;;;;; -02F8;MODIFIER LETTER RAISED COLON;Sk;0;ON;;;;;N;;;;; -02F9;MODIFIER LETTER BEGIN HIGH TONE;Sk;0;ON;;;;;N;;;;; -02FA;MODIFIER LETTER END HIGH TONE;Sk;0;ON;;;;;N;;;;; -02FB;MODIFIER LETTER BEGIN LOW TONE;Sk;0;ON;;;;;N;;;;; -02FC;MODIFIER LETTER END LOW TONE;Sk;0;ON;;;;;N;;;;; -02FD;MODIFIER LETTER SHELF;Sk;0;ON;;;;;N;;;;; -02FE;MODIFIER LETTER OPEN SHELF;Sk;0;ON;;;;;N;;;;; -02FF;MODIFIER LETTER LOW LEFT ARROW;Sk;0;ON;;;;;N;;;;; -0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;; -0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia, Tonos;;; -0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;; -0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;; -0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;; -0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;; -0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;Vrachy;;; -0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;; -0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;Dialytika;;; -0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;; -030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;; -030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;; -030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;; -030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;;;; -030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;; -030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;; -0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;; -0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;; -0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;; -0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;Psili;;; -0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;; -0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;; -0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;; -0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;; -0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;; -0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;; -031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;; -031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;; -031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;; -031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;; -031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;; -031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;; -0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;; -0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;; -0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;; -0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;; -0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;; -0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;; -0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;; -0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;; -0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;; -0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;; -032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;; -032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;; -032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;; -032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;; -032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;; -032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;; -0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;; -0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;; -0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;; -0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;; -0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;; -0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;; -0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;; -0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;; -0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;; -0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;; -033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;; -033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;; -033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;; -033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;; -033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;; -033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;; -0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;; -0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;; -0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;; -0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;; -0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;; -0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399 -0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;; -0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;; -0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;; -0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;; -034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;; -034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;; -034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;; -034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; -034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;; -034F;COMBINING GRAPHEME JOINER;Mn;0;NSM;;;;;N;;;;; -0350;COMBINING RIGHT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;; -0351;COMBINING LEFT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;; -0352;COMBINING FERMATA;Mn;230;NSM;;;;;N;;;;; -0353;COMBINING X BELOW;Mn;220;NSM;;;;;N;;;;; -0354;COMBINING LEFT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; -0355;COMBINING RIGHT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; -0356;COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; -0357;COMBINING RIGHT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;; -0358;COMBINING DOT ABOVE RIGHT;Mn;232;NSM;;;;;N;;;;; -0359;COMBINING ASTERISK BELOW;Mn;220;NSM;;;;;N;;;;; -035A;COMBINING DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;; -035B;COMBINING ZIGZAG ABOVE;Mn;230;NSM;;;;;N;;;;; -035C;COMBINING DOUBLE BREVE BELOW;Mn;233;NSM;;;;;N;;;;; -035D;COMBINING DOUBLE BREVE;Mn;234;NSM;;;;;N;;;;; -035E;COMBINING DOUBLE MACRON;Mn;234;NSM;;;;;N;;;;; -035F;COMBINING DOUBLE MACRON BELOW;Mn;233;NSM;;;;;N;;;;; -0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;; -0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;; -0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;; -0363;COMBINING LATIN SMALL LETTER A;Mn;230;NSM;;;;;N;;;;; -0364;COMBINING LATIN SMALL LETTER E;Mn;230;NSM;;;;;N;;;;; -0365;COMBINING LATIN SMALL LETTER I;Mn;230;NSM;;;;;N;;;;; -0366;COMBINING LATIN SMALL LETTER O;Mn;230;NSM;;;;;N;;;;; -0367;COMBINING LATIN SMALL LETTER U;Mn;230;NSM;;;;;N;;;;; -0368;COMBINING LATIN SMALL LETTER C;Mn;230;NSM;;;;;N;;;;; -0369;COMBINING LATIN SMALL LETTER D;Mn;230;NSM;;;;;N;;;;; -036A;COMBINING LATIN SMALL LETTER H;Mn;230;NSM;;;;;N;;;;; -036B;COMBINING LATIN SMALL LETTER M;Mn;230;NSM;;;;;N;;;;; -036C;COMBINING LATIN SMALL LETTER R;Mn;230;NSM;;;;;N;;;;; -036D;COMBINING LATIN SMALL LETTER T;Mn;230;NSM;;;;;N;;;;; -036E;COMBINING LATIN SMALL LETTER V;Mn;230;NSM;;;;;N;;;;; -036F;COMBINING LATIN SMALL LETTER X;Mn;230;NSM;;;;;N;;;;; -0370;GREEK CAPITAL LETTER HETA;Lu;0;L;;;;;N;;;;0371; -0371;GREEK SMALL LETTER HETA;Ll;0;L;;;;;N;;;0370;;0370 -0372;GREEK CAPITAL LETTER ARCHAIC SAMPI;Lu;0;L;;;;;N;;;;0373; -0373;GREEK SMALL LETTER ARCHAIC SAMPI;Ll;0;L;;;;;N;;;0372;;0372 -0374;GREEK NUMERAL SIGN;Lm;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;; -0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;; -0376;GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA;Lu;0;L;;;;;N;;;;0377; -0377;GREEK SMALL LETTER PAMPHYLIAN DIGAMMA;Ll;0;L;;;;;N;;;0376;;0376 -037A;GREEK YPOGEGRAMMENI;Lm;0;L; 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;; -037B;GREEK SMALL REVERSED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FD;;03FD -037C;GREEK SMALL DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FE;;03FE -037D;GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FF;;03FF -037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;Erotimatiko;;; -0384;GREEK TONOS;Sk;0;ON; 0020 0301;;;;N;GREEK SPACING TONOS;;;; -0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;; -0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC; -0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;; -0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD; -0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE; -038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF; -038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC; -038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD; -038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE; -0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;; -0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1; -0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2; -0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3; -0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4; -0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5; -0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6; -0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7; -0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8; -0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9; -039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA; -039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB; -039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC; -039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD; -039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE; -039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF; -03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0; -03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1; -03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3; -03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4; -03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5; -03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6; -03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7; -03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8; -03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9; -03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA; -03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB; -03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386 -03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388 -03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389 -03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A -03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;; -03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391 -03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392 -03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393 -03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394 -03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395 -03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396 -03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397 -03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398 -03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399 -03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A -03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B -03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C -03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D -03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E -03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F -03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0 -03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1 -03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3 -03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3 -03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4 -03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5 -03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6 -03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7 -03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8 -03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9 -03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA -03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB -03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C -03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E -03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F -03CF;GREEK CAPITAL KAI SYMBOL;Lu;0;L;;;;;N;;;;03D7; -03D0;GREEK BETA SYMBOL;Ll;0;L; 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392 -03D1;GREEK THETA SYMBOL;Ll;0;L; 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398 -03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L; 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;; -03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;; -03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;; -03D5;GREEK PHI SYMBOL;Ll;0;L; 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6 -03D6;GREEK PI SYMBOL;Ll;0;L; 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0 -03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;03CF;;03CF -03D8;GREEK LETTER ARCHAIC KOPPA;Lu;0;L;;;;;N;;*;;03D9; -03D9;GREEK SMALL LETTER ARCHAIC KOPPA;Ll;0;L;;;;;N;;*;03D8;;03D8 -03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB; -03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA -03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD; -03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC -03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF; -03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE -03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1; -03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0 -03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3; -03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2 -03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5; -03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4 -03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7; -03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6 -03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9; -03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8 -03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB; -03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA -03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED; -03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC -03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF; -03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE -03F0;GREEK KAPPA SYMBOL;Ll;0;L; 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A -03F1;GREEK RHO SYMBOL;Ll;0;L; 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1 -03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L; 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03F9;;03F9 -03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;; -03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L; 0398;;;;N;;;;03B8; -03F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L; 03B5;;;;N;;;0395;;0395 -03F6;GREEK REVERSED LUNATE EPSILON SYMBOL;Sm;0;ON;;;;;N;;;;; -03F7;GREEK CAPITAL LETTER SHO;Lu;0;L;;;;;N;;;;03F8; -03F8;GREEK SMALL LETTER SHO;Ll;0;L;;;;;N;;;03F7;;03F7 -03F9;GREEK CAPITAL LUNATE SIGMA SYMBOL;Lu;0;L; 03A3;;;;N;;;;03F2; -03FA;GREEK CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;03FB; -03FB;GREEK SMALL LETTER SAN;Ll;0;L;;;;;N;;;03FA;;03FA -03FC;GREEK RHO WITH STROKE SYMBOL;Ll;0;L;;;;;N;;;;; -03FD;GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037B; -03FE;GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037C; -03FF;GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037D; -0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450; -0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451; -0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452; -0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453; -0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454; -0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455; -0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456; -0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457; -0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458; -0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459; -040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A; -040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B; -040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C; -040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D; -040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E; -040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F; -0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430; -0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431; -0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432; -0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433; -0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434; -0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435; -0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436; -0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437; -0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438; -0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439; -041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A; -041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B; -041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C; -041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D; -041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E; -041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F; -0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440; -0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441; -0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442; -0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443; -0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444; -0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445; -0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446; -0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447; -0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448; -0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449; -042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A; -042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B; -042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C; -042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D; -042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E; -042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F; -0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410 -0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411 -0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412 -0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413 -0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414 -0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415 -0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416 -0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417 -0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418 -0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419 -043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A -043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B -043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C -043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D -043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E -043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F -0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420 -0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421 -0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422 -0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423 -0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424 -0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425 -0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426 -0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427 -0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428 -0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429 -044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A -044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B -044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C -044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D -044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E -044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F -0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400 -0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401 -0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402 -0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403 -0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404 -0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405 -0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406 -0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407 -0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408 -0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409 -045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A -045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B -045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C -045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D -045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E -045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F -0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461; -0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460 -0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463; -0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462 -0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465; -0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464 -0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467; -0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466 -0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469; -0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468 -046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B; -046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A -046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D; -046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C -046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F; -046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E -0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471; -0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470 -0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473; -0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472 -0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475; -0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474 -0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477; -0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476 -0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479; -0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478 -047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B; -047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A -047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D; -047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C -047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F; -047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E -0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481; -0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480 -0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;; -0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;; -0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;; -0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;; -0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;; -0487;COMBINING CYRILLIC POKRYTIE;Mn;230;NSM;;;;;N;;;;; -0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;; -0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; -048A;CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;Lu;0;L;;;;;N;;;;048B; -048B;CYRILLIC SMALL LETTER SHORT I WITH TAIL;Ll;0;L;;;;;N;;;048A;;048A -048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D; -048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C -048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F; -048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E -0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491; -0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490 -0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493; -0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492 -0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495; -0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494 -0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497; -0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496 -0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499; -0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498 -049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B; -049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A -049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D; -049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C -049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F; -049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E -04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1; -04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0 -04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3; -04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2 -04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5; -04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4 -04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7; -04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6 -04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9; -04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8 -04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB; -04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA -04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD; -04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC -04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF; -04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE -04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1; -04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0 -04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3; -04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2 -04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5; -04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4 -04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7; -04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6 -04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9; -04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8 -04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB; -04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA -04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD; -04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC -04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF; -04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE -04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;04CF; -04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2; -04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1 -04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4; -04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3 -04C5;CYRILLIC CAPITAL LETTER EL WITH TAIL;Lu;0;L;;;;;N;;;;04C6; -04C6;CYRILLIC SMALL LETTER EL WITH TAIL;Ll;0;L;;;;;N;;;04C5;;04C5 -04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8; -04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7 -04C9;CYRILLIC CAPITAL LETTER EN WITH TAIL;Lu;0;L;;;;;N;;;;04CA; -04CA;CYRILLIC SMALL LETTER EN WITH TAIL;Ll;0;L;;;;;N;;;04C9;;04C9 -04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC; -04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB -04CD;CYRILLIC CAPITAL LETTER EM WITH TAIL;Lu;0;L;;;;;N;;;;04CE; -04CE;CYRILLIC SMALL LETTER EM WITH TAIL;Ll;0;L;;;;;N;;;04CD;;04CD -04CF;CYRILLIC SMALL LETTER PALOCHKA;Ll;0;L;;;;;N;;;04C0;;04C0 -04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1; -04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0 -04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3; -04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2 -04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5; -04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4 -04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7; -04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6 -04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9; -04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8 -04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB; -04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA -04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD; -04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC -04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF; -04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE -04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1; -04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0 -04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3; -04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2 -04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5; -04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4 -04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7; -04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6 -04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9; -04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8 -04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB; -04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA -04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED; -04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC -04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF; -04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE -04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1; -04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0 -04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3; -04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2 -04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5; -04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4 -04F6;CYRILLIC CAPITAL LETTER GHE WITH DESCENDER;Lu;0;L;;;;;N;;;;04F7; -04F7;CYRILLIC SMALL LETTER GHE WITH DESCENDER;Ll;0;L;;;;;N;;;04F6;;04F6 -04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9; -04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8 -04FA;CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK;Lu;0;L;;;;;N;;;;04FB; -04FB;CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK;Ll;0;L;;;;;N;;;04FA;;04FA -04FC;CYRILLIC CAPITAL LETTER HA WITH HOOK;Lu;0;L;;;;;N;;;;04FD; -04FD;CYRILLIC SMALL LETTER HA WITH HOOK;Ll;0;L;;;;;N;;;04FC;;04FC -04FE;CYRILLIC CAPITAL LETTER HA WITH STROKE;Lu;0;L;;;;;N;;;;04FF; -04FF;CYRILLIC SMALL LETTER HA WITH STROKE;Ll;0;L;;;;;N;;;04FE;;04FE -0500;CYRILLIC CAPITAL LETTER KOMI DE;Lu;0;L;;;;;N;;;;0501; -0501;CYRILLIC SMALL LETTER KOMI DE;Ll;0;L;;;;;N;;;0500;;0500 -0502;CYRILLIC CAPITAL LETTER KOMI DJE;Lu;0;L;;;;;N;;;;0503; -0503;CYRILLIC SMALL LETTER KOMI DJE;Ll;0;L;;;;;N;;;0502;;0502 -0504;CYRILLIC CAPITAL LETTER KOMI ZJE;Lu;0;L;;;;;N;;;;0505; -0505;CYRILLIC SMALL LETTER KOMI ZJE;Ll;0;L;;;;;N;;;0504;;0504 -0506;CYRILLIC CAPITAL LETTER KOMI DZJE;Lu;0;L;;;;;N;;;;0507; -0507;CYRILLIC SMALL LETTER KOMI DZJE;Ll;0;L;;;;;N;;;0506;;0506 -0508;CYRILLIC CAPITAL LETTER KOMI LJE;Lu;0;L;;;;;N;;;;0509; -0509;CYRILLIC SMALL LETTER KOMI LJE;Ll;0;L;;;;;N;;;0508;;0508 -050A;CYRILLIC CAPITAL LETTER KOMI NJE;Lu;0;L;;;;;N;;;;050B; -050B;CYRILLIC SMALL LETTER KOMI NJE;Ll;0;L;;;;;N;;;050A;;050A -050C;CYRILLIC CAPITAL LETTER KOMI SJE;Lu;0;L;;;;;N;;;;050D; -050D;CYRILLIC SMALL LETTER KOMI SJE;Ll;0;L;;;;;N;;;050C;;050C -050E;CYRILLIC CAPITAL LETTER KOMI TJE;Lu;0;L;;;;;N;;;;050F; -050F;CYRILLIC SMALL LETTER KOMI TJE;Ll;0;L;;;;;N;;;050E;;050E -0510;CYRILLIC CAPITAL LETTER REVERSED ZE;Lu;0;L;;;;;N;;;;0511; -0511;CYRILLIC SMALL LETTER REVERSED ZE;Ll;0;L;;;;;N;;;0510;;0510 -0512;CYRILLIC CAPITAL LETTER EL WITH HOOK;Lu;0;L;;;;;N;;;;0513; -0513;CYRILLIC SMALL LETTER EL WITH HOOK;Ll;0;L;;;;;N;;;0512;;0512 -0514;CYRILLIC CAPITAL LETTER LHA;Lu;0;L;;;;;N;;;;0515; -0515;CYRILLIC SMALL LETTER LHA;Ll;0;L;;;;;N;;;0514;;0514 -0516;CYRILLIC CAPITAL LETTER RHA;Lu;0;L;;;;;N;;;;0517; -0517;CYRILLIC SMALL LETTER RHA;Ll;0;L;;;;;N;;;0516;;0516 -0518;CYRILLIC CAPITAL LETTER YAE;Lu;0;L;;;;;N;;;;0519; -0519;CYRILLIC SMALL LETTER YAE;Ll;0;L;;;;;N;;;0518;;0518 -051A;CYRILLIC CAPITAL LETTER QA;Lu;0;L;;;;;N;;;;051B; -051B;CYRILLIC SMALL LETTER QA;Ll;0;L;;;;;N;;;051A;;051A -051C;CYRILLIC CAPITAL LETTER WE;Lu;0;L;;;;;N;;;;051D; -051D;CYRILLIC SMALL LETTER WE;Ll;0;L;;;;;N;;;051C;;051C -051E;CYRILLIC CAPITAL LETTER ALEUT KA;Lu;0;L;;;;;N;;;;051F; -051F;CYRILLIC SMALL LETTER ALEUT KA;Ll;0;L;;;;;N;;;051E;;051E -0520;CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0521; -0521;CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0520;;0520 -0522;CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0523; -0523;CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0522;;0522 -0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561; -0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562; -0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563; -0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564; -0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565; -0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566; -0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567; -0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568; -0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569; -053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A; -053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B; -053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C; -053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D; -053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E; -053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F; -0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570; -0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571; -0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572; -0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573; -0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574; -0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575; -0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576; -0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577; -0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578; -0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579; -054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A; -054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B; -054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C; -054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D; -054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E; -054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F; -0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580; -0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581; -0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582; -0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583; -0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584; -0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585; -0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586; -0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;; -055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;; -055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;; -055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;; -055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;; -055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;; -055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;; -0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531 -0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532 -0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533 -0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534 -0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535 -0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536 -0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537 -0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538 -0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539 -056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A -056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B -056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C -056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D -056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E -056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F -0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540 -0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541 -0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542 -0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543 -0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544 -0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545 -0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546 -0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547 -0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548 -0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549 -057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A -057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B -057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C -057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D -057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E -057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F -0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550 -0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551 -0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552 -0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553 -0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554 -0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555 -0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556 -0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L; 0565 0582;;;;N;;;;; -0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;; -058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;; -0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;; -0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;; -0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;; -0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;; -0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;; -0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;*;;; -0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;; -0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;*;;; -0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;; -059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;; -059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;; -059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;; -059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;; -059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;; -059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;; -05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;; -05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;; -05A2;HEBREW ACCENT ATNAH HAFUKH;Mn;220;NSM;;;;;N;;;;; -05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;; -05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;; -05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;*;;; -05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;; -05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;; -05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;*;;; -05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;; -05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;*;;; -05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;; -05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;; -05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;; -05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;; -05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;; -05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;; -05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;; -05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;; -05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;; -05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;; -05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;; -05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;; -05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;; -05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;; -05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;; -05BA;HEBREW POINT HOLAM HASER FOR VAV;Mn;19;NSM;;;;;N;;;;; -05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;; -05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;or shuruq;;; -05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;*;;; -05BE;HEBREW PUNCTUATION MAQAF;Pd;0;R;;;;;N;;;;; -05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;; -05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;*;;; -05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;; -05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;; -05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;*;;; -05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;; -05C5;HEBREW MARK LOWER DOT;Mn;220;NSM;;;;;N;;;;; -05C6;HEBREW PUNCTUATION NUN HAFUKHA;Po;0;R;;;;;N;;;;; -05C7;HEBREW POINT QAMATS QATAN;Mn;18;NSM;;;;;N;;;;; -05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;; -05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;; -05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;; -05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;; -05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;; -05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;; -05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;; -05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;; -05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;; -05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;; -05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;; -05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;; -05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;; -05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;; -05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;; -05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;; -05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;; -05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;; -05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;; -05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;; -05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;; -05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;; -05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;; -05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;; -05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;; -05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;; -05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;; -05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;; -05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;; -05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;; -05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;; -05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;; -0600;ARABIC NUMBER SIGN;Cf;0;AN;;;;;N;;;;; -0601;ARABIC SIGN SANAH;Cf;0;AN;;;;;N;;;;; -0602;ARABIC FOOTNOTE MARKER;Cf;0;AN;;;;;N;;;;; -0603;ARABIC SIGN SAFHA;Cf;0;AN;;;;;N;;;;; -0606;ARABIC-INDIC CUBE ROOT;Sm;0;ON;;;;;N;;;;; -0607;ARABIC-INDIC FOURTH ROOT;Sm;0;ON;;;;;N;;;;; -0608;ARABIC RAY;Sm;0;AL;;;;;N;;;;; -0609;ARABIC-INDIC PER MILLE SIGN;Po;0;ET;;;;;N;;;;; -060A;ARABIC-INDIC PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;; -060B;AFGHANI SIGN;Sc;0;AL;;;;;N;;;;; -060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;; -060D;ARABIC DATE SEPARATOR;Po;0;AL;;;;;N;;;;; -060E;ARABIC POETIC VERSE SIGN;So;0;ON;;;;;N;;;;; -060F;ARABIC SIGN MISRA;So;0;ON;;;;;N;;;;; -0610;ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM;Mn;230;NSM;;;;;N;;;;; -0611;ARABIC SIGN ALAYHE ASSALLAM;Mn;230;NSM;;;;;N;;;;; -0612;ARABIC SIGN RAHMATULLAH ALAYHE;Mn;230;NSM;;;;;N;;;;; -0613;ARABIC SIGN RADI ALLAHOU ANHU;Mn;230;NSM;;;;;N;;;;; -0614;ARABIC SIGN TAKHALLUS;Mn;230;NSM;;;;;N;;;;; -0615;ARABIC SMALL HIGH TAH;Mn;230;NSM;;;;;N;;;;; -0616;ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH;Mn;230;NSM;;;;;N;;;;; -0617;ARABIC SMALL HIGH ZAIN;Mn;230;NSM;;;;;N;;;;; -0618;ARABIC SMALL FATHA;Mn;30;NSM;;;;;N;;;;; -0619;ARABIC SMALL DAMMA;Mn;31;NSM;;;;;N;;;;; -061A;ARABIC SMALL KASRA;Mn;32;NSM;;;;;N;;;;; -061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;; -061E;ARABIC TRIPLE DOT PUNCTUATION MARK;Po;0;AL;;;;;N;;;;; -061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;; -0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;; -0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;; -0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;; -0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;; -0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;; -0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;; -0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;; -0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;; -0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;; -062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;; -062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;; -062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;; -062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;; -062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;; -062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;; -0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;; -0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;; -0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;; -0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;; -0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;; -0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;; -0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;; -0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;; -0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;; -0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;; -063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;; -063B;ARABIC LETTER KEHEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -063C;ARABIC LETTER KEHEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; -063D;ARABIC LETTER FARSI YEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;; -063E;ARABIC LETTER FARSI YEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -063F;ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;; -0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;; -0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;; -0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;; -0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;; -0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;; -0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;; -0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;; -0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;; -0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;; -064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;; -064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;; -064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;; -064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;; -064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;; -064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;; -0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;; -0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;; -0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;; -0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;; -0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;; -0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;; -0656;ARABIC SUBSCRIPT ALEF;Mn;220;NSM;;;;;N;;;;; -0657;ARABIC INVERTED DAMMA;Mn;230;NSM;;;;;N;;;;; -0658;ARABIC MARK NOON GHUNNA;Mn;230;NSM;;;;;N;;;;; -0659;ARABIC ZWARAKAY;Mn;230;NSM;;;;;N;;;;; -065A;ARABIC VOWEL SIGN SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;; -065B;ARABIC VOWEL SIGN INVERTED SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;; -065C;ARABIC VOWEL SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;; -065D;ARABIC REVERSED DAMMA;Mn;230;NSM;;;;;N;;;;; -065E;ARABIC FATHA WITH TWO DOTS;Mn;230;NSM;;;;;N;;;;; -0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;; -0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;; -0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;; -0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;; -0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;; -0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;; -0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;; -0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;; -0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;; -0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;; -066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;; -066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;; -066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;; -066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;; -066E;ARABIC LETTER DOTLESS BEH;Lo;0;AL;;;;;N;;;;; -066F;ARABIC LETTER DOTLESS QAF;Lo;0;AL;;;;;N;;;;; -0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;; -0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;; -0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;; -0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;; -0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;; -0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL; 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;; -0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL; 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;; -0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL; 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;; -0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL; 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;; -0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;; -067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;; -067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;; -067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;; -067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;; -067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;; -067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;; -0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;; -0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;; -0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;; -0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;; -0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;; -0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;; -0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;; -0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;; -0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;; -0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;; -068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;; -068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;; -068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;; -068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;; -068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;; -0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;; -0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;; -0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;; -0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;; -0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;; -0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;; -0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;; -0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;; -0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;; -069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; -069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; -069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; -069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;; -06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;; -06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;; -06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;; -06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;; -06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;; -06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;; -06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;; -06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;; -06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;; -06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;; -06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;; -06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;*;;; -06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;; -06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;; -06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; -06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;; -06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;; -06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; -06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;; -06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;; -06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;; -06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;; -06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;; -06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;; -06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;; -06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;; -06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;; -06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;; -06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;; -06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;; -06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;; -06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;; -06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;; -06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;; -06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;; -06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;; -06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;*;;; -06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;; -06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;; -06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;; -06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;; -06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;; -06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;; -06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;; -06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;; -06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;; -06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;; -06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;; -06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;; -06DD;ARABIC END OF AYAH;Cf;0;AN;;;;;N;;;;; -06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;; -06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;; -06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;; -06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;; -06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;; -06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;; -06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;; -06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;; -06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;; -06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;; -06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;; -06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;; -06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;; -06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;; -06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;; -06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;; -06EE;ARABIC LETTER DAL WITH INVERTED V;Lo;0;AL;;;;;N;;;;; -06EF;ARABIC LETTER REH WITH INVERTED V;Lo;0;AL;;;;;N;;;;; -06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;; -06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;; -06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;; -06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;; -06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;; -06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;; -06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;; -06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;; -06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;; -06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;; -06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;; -06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;; -06FF;ARABIC LETTER HEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;; -0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;; -0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;; -0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;; -0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;; -0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;; -0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;; -0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;; -0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;; -0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;; -0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;; -070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;; -070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;; -070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;; -070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;; -070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;; -0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;; -0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;; -0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;; -0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;; -0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;; -0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;; -0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;; -0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;; -0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;; -0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;; -071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;; -071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;; -071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;; -071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;; -071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;; -071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;; -0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;; -0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;; -0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;; -0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;; -0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;; -0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;; -0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;; -0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;; -0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;; -0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;; -072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;; -072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;; -072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;; -072D;SYRIAC LETTER PERSIAN BHETH;Lo;0;AL;;;;;N;;;;; -072E;SYRIAC LETTER PERSIAN GHAMAL;Lo;0;AL;;;;;N;;;;; -072F;SYRIAC LETTER PERSIAN DHALATH;Lo;0;AL;;;;;N;;;;; -0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;; -0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;; -0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;; -0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;; -0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;; -0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;; -0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;; -0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;; -0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;; -0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;; -073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;; -073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;; -073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;; -073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;; -073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;; -073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;; -0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;; -0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;; -0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;; -0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; -0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;; -0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; -0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;; -0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;; -0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;; -0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;; -074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;; -074D;SYRIAC LETTER SOGDIAN ZHAIN;Lo;0;AL;;;;;N;;;;; -074E;SYRIAC LETTER SOGDIAN KHAPH;Lo;0;AL;;;;;N;;;;; -074F;SYRIAC LETTER SOGDIAN FE;Lo;0;AL;;;;;N;;;;; -0750;ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW;Lo;0;AL;;;;;N;;;;; -0751;ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0752;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; -0753;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0754;ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; -0755;ARABIC LETTER BEH WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;; -0756;ARABIC LETTER BEH WITH SMALL V;Lo;0;AL;;;;;N;;;;; -0757;ARABIC LETTER HAH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0758;ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; -0759;ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;; -075A;ARABIC LETTER DAL WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;; -075B;ARABIC LETTER REH WITH STROKE;Lo;0;AL;;;;;N;;;;; -075C;ARABIC LETTER SEEN WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -075D;ARABIC LETTER AIN WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -075E;ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE;Lo;0;AL;;;;;N;;;;; -075F;ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; -0760;ARABIC LETTER FEH WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; -0761;ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; -0762;ARABIC LETTER KEHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -0763;ARABIC LETTER KEHEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0764;ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; -0765;ARABIC LETTER MEEM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -0766;ARABIC LETTER MEEM WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -0767;ARABIC LETTER NOON WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; -0768;ARABIC LETTER NOON WITH SMALL TAH;Lo;0;AL;;;;;N;;;;; -0769;ARABIC LETTER NOON WITH SMALL V;Lo;0;AL;;;;;N;;;;; -076A;ARABIC LETTER LAM WITH BAR;Lo;0;AL;;;;;N;;;;; -076B;ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; -076C;ARABIC LETTER REH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;;;;; -076D;ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; -076E;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW;Lo;0;AL;;;;;N;;;;; -076F;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;; -0770;ARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;; -0771;ARABIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;; -0772;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH ABOVE;Lo;0;AL;;;;;N;;;;; -0773;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; -0774;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; -0775;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; -0776;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; -0777;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;; -0778;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; -0779;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; -077A;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; -077B;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; -077C;ARABIC LETTER HAH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;; -077D;ARABIC LETTER SEEN WITH EXTENDED ARABIC-INDIC DIGIT FOUR ABOVE;Lo;0;AL;;;;;N;;;;; -077E;ARABIC LETTER SEEN WITH INVERTED V;Lo;0;AL;;;;;N;;;;; -077F;ARABIC LETTER KAF WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;; -0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;; -0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;; -0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;; -0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;; -0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;; -0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;; -0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;; -0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;; -0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;; -078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;; -078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;; -078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;; -078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;; -078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;; -078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;; -0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;; -0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;; -0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;; -0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;; -0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;; -0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;; -0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;; -0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;; -0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;; -0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;; -079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;; -079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;; -079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;; -079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;; -079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;; -079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;; -07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;; -07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;; -07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;; -07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;; -07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;; -07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;; -07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;; -07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;; -07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;; -07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;; -07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;; -07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;; -07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;; -07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;; -07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;; -07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;; -07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;; -07B1;THAANA LETTER NAA;Lo;0;AL;;;;;N;;;;; -07C0;NKO DIGIT ZERO;Nd;0;R;;0;0;0;N;;;;; -07C1;NKO DIGIT ONE;Nd;0;R;;1;1;1;N;;;;; -07C2;NKO DIGIT TWO;Nd;0;R;;2;2;2;N;;;;; -07C3;NKO DIGIT THREE;Nd;0;R;;3;3;3;N;;;;; -07C4;NKO DIGIT FOUR;Nd;0;R;;4;4;4;N;;;;; -07C5;NKO DIGIT FIVE;Nd;0;R;;5;5;5;N;;;;; -07C6;NKO DIGIT SIX;Nd;0;R;;6;6;6;N;;;;; -07C7;NKO DIGIT SEVEN;Nd;0;R;;7;7;7;N;;;;; -07C8;NKO DIGIT EIGHT;Nd;0;R;;8;8;8;N;;;;; -07C9;NKO DIGIT NINE;Nd;0;R;;9;9;9;N;;;;; -07CA;NKO LETTER A;Lo;0;R;;;;;N;;;;; -07CB;NKO LETTER EE;Lo;0;R;;;;;N;;;;; -07CC;NKO LETTER I;Lo;0;R;;;;;N;;;;; -07CD;NKO LETTER E;Lo;0;R;;;;;N;;;;; -07CE;NKO LETTER U;Lo;0;R;;;;;N;;;;; -07CF;NKO LETTER OO;Lo;0;R;;;;;N;;;;; -07D0;NKO LETTER O;Lo;0;R;;;;;N;;;;; -07D1;NKO LETTER DAGBASINNA;Lo;0;R;;;;;N;;;;; -07D2;NKO LETTER N;Lo;0;R;;;;;N;;;;; -07D3;NKO LETTER BA;Lo;0;R;;;;;N;;;;; -07D4;NKO LETTER PA;Lo;0;R;;;;;N;;;;; -07D5;NKO LETTER TA;Lo;0;R;;;;;N;;;;; -07D6;NKO LETTER JA;Lo;0;R;;;;;N;;;;; -07D7;NKO LETTER CHA;Lo;0;R;;;;;N;;;;; -07D8;NKO LETTER DA;Lo;0;R;;;;;N;;;;; -07D9;NKO LETTER RA;Lo;0;R;;;;;N;;;;; -07DA;NKO LETTER RRA;Lo;0;R;;;;;N;;;;; -07DB;NKO LETTER SA;Lo;0;R;;;;;N;;;;; -07DC;NKO LETTER GBA;Lo;0;R;;;;;N;;;;; -07DD;NKO LETTER FA;Lo;0;R;;;;;N;;;;; -07DE;NKO LETTER KA;Lo;0;R;;;;;N;;;;; -07DF;NKO LETTER LA;Lo;0;R;;;;;N;;;;; -07E0;NKO LETTER NA WOLOSO;Lo;0;R;;;;;N;;;;; -07E1;NKO LETTER MA;Lo;0;R;;;;;N;;;;; -07E2;NKO LETTER NYA;Lo;0;R;;;;;N;;;;; -07E3;NKO LETTER NA;Lo;0;R;;;;;N;;;;; -07E4;NKO LETTER HA;Lo;0;R;;;;;N;;;;; -07E5;NKO LETTER WA;Lo;0;R;;;;;N;;;;; -07E6;NKO LETTER YA;Lo;0;R;;;;;N;;;;; -07E7;NKO LETTER NYA WOLOSO;Lo;0;R;;;;;N;;;;; -07E8;NKO LETTER JONA JA;Lo;0;R;;;;;N;;;;; -07E9;NKO LETTER JONA CHA;Lo;0;R;;;;;N;;;;; -07EA;NKO LETTER JONA RA;Lo;0;R;;;;;N;;;;; -07EB;NKO COMBINING SHORT HIGH TONE;Mn;230;NSM;;;;;N;;;;; -07EC;NKO COMBINING SHORT LOW TONE;Mn;230;NSM;;;;;N;;;;; -07ED;NKO COMBINING SHORT RISING TONE;Mn;230;NSM;;;;;N;;;;; -07EE;NKO COMBINING LONG DESCENDING TONE;Mn;230;NSM;;;;;N;;;;; -07EF;NKO COMBINING LONG HIGH TONE;Mn;230;NSM;;;;;N;;;;; -07F0;NKO COMBINING LONG LOW TONE;Mn;230;NSM;;;;;N;;;;; -07F1;NKO COMBINING LONG RISING TONE;Mn;230;NSM;;;;;N;;;;; -07F2;NKO COMBINING NASALIZATION MARK;Mn;220;NSM;;;;;N;;;;; -07F3;NKO COMBINING DOUBLE DOT ABOVE;Mn;230;NSM;;;;;N;;;;; -07F4;NKO HIGH TONE APOSTROPHE;Lm;0;R;;;;;N;;;;; -07F5;NKO LOW TONE APOSTROPHE;Lm;0;R;;;;;N;;;;; -07F6;NKO SYMBOL OO DENNEN;So;0;ON;;;;;N;;;;; -07F7;NKO SYMBOL GBAKURUNEN;Po;0;ON;;;;;N;;;;; -07F8;NKO COMMA;Po;0;ON;;;;;N;;;;; -07F9;NKO EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; -07FA;NKO LAJANYALAN;Lm;0;R;;;;;N;;;;; -0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; -0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0904;DEVANAGARI LETTER SHORT A;Lo;0;L;;;;;N;;;;; -0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;; -0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;; -0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;; -0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;; -0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;; -090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;; -090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;; -090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;; -090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;; -0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;; -0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;; -0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;; -0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;; -0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;; -0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;; -0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;; -0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;; -0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;; -0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;; -091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;; -091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;; -091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;; -091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;; -091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;; -091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;; -0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;; -0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;; -0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;; -0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;; -0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;; -0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;; -0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;; -0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;; -0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;; -0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;; -092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;; -092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;; -092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;; -092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;; -092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;; -092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;; -0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;; -0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;; -0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;; -0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;; -0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;; -0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;; -0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;; -0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;; -0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;; -0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;; -093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; -0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;; -0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;; -0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; -0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;; -094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;; -094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; -094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;; -0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;; -0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;; -0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;; -0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;; -0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;; -0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;; -095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;; -095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;; -095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;; -095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;; -095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;; -095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;; -0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;; -0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;; -0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; -0971;DEVANAGARI SIGN HIGH SPACING DOT;Lm;0;L;;;;;N;;;;; -0972;DEVANAGARI LETTER CANDRA A;Lo;0;L;;;;;N;;;;; -097B;DEVANAGARI LETTER GGA;Lo;0;L;;;;;N;;;;; -097C;DEVANAGARI LETTER JJA;Lo;0;L;;;;;N;;;;; -097D;DEVANAGARI LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;; -097E;DEVANAGARI LETTER DDDA;Lo;0;L;;;;;N;;;;; -097F;DEVANAGARI LETTER BBA;Lo;0;L;;;;;N;;;;; -0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; -0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; -0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;; -0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;; -0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;; -0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;; -0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;; -098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;; -098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;; -0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;; -0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;; -0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;; -0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;; -0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;; -0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;; -0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;; -0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;; -099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;; -099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;; -099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;; -099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;; -099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;; -099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;; -09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;; -09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;; -09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;; -09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;; -09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;; -09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;; -09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;; -09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;; -09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;; -09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;; -09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;; -09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;; -09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;; -09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;; -09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;; -09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;; -09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;; -09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;; -09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;; -09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;; -09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;; -09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -09BD;BENGALI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; -09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;; -09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;; -09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -09CE;BENGALI LETTER KHANDA TA;Lo;0;L;;;;;N;;;;; -09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;; -09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;; -09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;; -09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;; -09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;; -09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;; -09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;; -09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;; -09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;; -09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;; -09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;; -09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;; -09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;;N;;;;; -09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;; -09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;; -0A01;GURMUKHI SIGN ADAK BINDI;Mn;0;NSM;;;;;N;;;;; -0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;; -0A03;GURMUKHI SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;; -0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;; -0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;; -0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;; -0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;; -0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;; -0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;; -0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;; -0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;; -0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;; -0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;; -0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;; -0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;; -0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;; -0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;; -0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;; -0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;; -0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;; -0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;; -0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;; -0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;; -0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;; -0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;; -0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;; -0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;; -0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;; -0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;; -0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;; -0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;; -0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;; -0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;; -0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;; -0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;; -0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;; -0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;; -0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;; -0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;; -0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;; -0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;; -0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;; -0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;; -0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;; -0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;; -0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;; -0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; -0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;; -0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; -0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0A51;GURMUKHI SIGN UDAAT;Mn;0;NSM;;;;;N;;;;; -0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;; -0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;; -0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;; -0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;; -0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;; -0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;; -0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;; -0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;; -0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;; -0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;; -0A75;GURMUKHI SIGN YAKASH;Mn;0;NSM;;;;;N;;;;; -0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; -0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;; -0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;; -0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;; -0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;; -0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;; -0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;; -0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -0A8C;GUJARATI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;; -0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;; -0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;; -0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;; -0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;; -0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;; -0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;; -0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;; -0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;; -0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;; -0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;; -0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;; -0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;; -0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;; -0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;; -0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;; -0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;; -0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;; -0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;; -0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;; -0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;; -0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;; -0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;; -0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;; -0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;; -0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;; -0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;; -0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;; -0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;; -0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;; -0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;; -0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;; -0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;; -0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;; -0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;; -0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;; -0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;; -0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;; -0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;; -0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;; -0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; -0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;; -0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; -0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;; -0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; -0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;; -0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0AE1;GUJARATI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0AE2;GUJARATI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -0AE3;GUJARATI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0AF1;GUJARATI RUPEE SIGN;Sc;0;ET;;;;;N;;;;; -0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; -0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; -0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;; -0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;; -0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;; -0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;; -0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;; -0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;; -0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;; -0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;; -0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;; -0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;; -0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;; -0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;; -0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;; -0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;; -0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;; -0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;; -0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;; -0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;; -0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;; -0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;; -0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;; -0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;; -0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;; -0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;; -0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;; -0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;; -0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;; -0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;; -0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;; -0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;; -0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;; -0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;; -0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;; -0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;; -0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;; -0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;; -0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;; -0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;; -0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;; -0B35;ORIYA LETTER VA;Lo;0;L;;;;;N;;;;; -0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;; -0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;; -0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;; -0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;; -0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -0B44;ORIYA VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; -0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;; -0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;; -0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;; -0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;; -0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;; -0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;; -0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;; -0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;; -0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0B62;ORIYA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -0B63;ORIYA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;; -0B71;ORIYA LETTER WA;Lo;0;L;;;;;N;;;;; -0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -0B83;TAMIL SIGN VISARGA;Lo;0;L;;;;;N;;;;; -0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;; -0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;; -0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;; -0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;; -0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;; -0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;; -0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;; -0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;; -0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;; -0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;; -0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;; -0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;; -0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;; -0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;; -0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;; -0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;; -0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;; -0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;; -0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;; -0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;; -0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;; -0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;; -0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;; -0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;; -0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;; -0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;; -0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;; -0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;; -0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;; -0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;; -0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;; -0BB6;TAMIL LETTER SHA;Lo;0;L;;;;;N;;;;; -0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;; -0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;; -0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;; -0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; -0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;; -0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;; -0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;; -0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0BD0;TAMIL OM;Lo;0;L;;;;;N;;;;; -0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;; -0BE6;TAMIL DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;; -0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; -0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; -0BF3;TAMIL DAY SIGN;So;0;ON;;;;;N;;Naal;;; -0BF4;TAMIL MONTH SIGN;So;0;ON;;;;;N;;Maatham;;; -0BF5;TAMIL YEAR SIGN;So;0;ON;;;;;N;;Varudam;;; -0BF6;TAMIL DEBIT SIGN;So;0;ON;;;;;N;;Patru;;; -0BF7;TAMIL CREDIT SIGN;So;0;ON;;;;;N;;Varavu;;; -0BF8;TAMIL AS ABOVE SIGN;So;0;ON;;;;;N;;Merpadi;;; -0BF9;TAMIL RUPEE SIGN;Sc;0;ET;;;;;N;;Rupai;;; -0BFA;TAMIL NUMBER SIGN;So;0;ON;;;;;N;;Enn;;; -0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;; -0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; -0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;; -0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;; -0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;; -0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;; -0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;; -0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;; -0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;; -0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;; -0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;; -0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;; -0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;; -0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;; -0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;; -0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;; -0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;; -0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;; -0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;; -0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;; -0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;; -0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;; -0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;; -0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;; -0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;; -0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;; -0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;; -0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;; -0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;; -0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;; -0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;; -0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;; -0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;; -0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;; -0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;; -0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;; -0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;; -0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;; -0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;; -0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;; -0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;; -0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;; -0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;; -0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;; -0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;; -0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;; -0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;; -0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;; -0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;; -0C3D;TELUGU SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;; -0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; -0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; -0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;; -0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;; -0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; -0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;; -0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; -0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;; -0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;; -0C58;TELUGU LETTER TSA;Lo;0;L;;;;;N;;;;; -0C59;TELUGU LETTER DZA;Lo;0;L;;;;;N;;;;; -0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0C62;TELUGU VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -0C63;TELUGU VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0C78;TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR;No;0;ON;;;;0;N;;;;; -0C79;TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR;No;0;ON;;;;1;N;;;;; -0C7A;TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR;No;0;ON;;;;2;N;;;;; -0C7B;TELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOUR;No;0;ON;;;;3;N;;;;; -0C7C;TELUGU FRACTION DIGIT ONE FOR EVEN POWERS OF FOUR;No;0;ON;;;;1;N;;;;; -0C7D;TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR;No;0;ON;;;;2;N;;;;; -0C7E;TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR;No;0;ON;;;;3;N;;;;; -0C7F;TELUGU SIGN TUUMU;So;0;L;;;;;N;;;;; -0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; -0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;; -0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;; -0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;; -0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;; -0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;; -0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;; -0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;; -0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;; -0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;; -0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;; -0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;; -0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;; -0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;; -0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;; -0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;; -0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;; -0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;; -0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;; -0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;; -0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;; -0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;; -0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;; -0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;; -0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;; -0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;; -0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;; -0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;; -0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;; -0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;; -0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;; -0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;; -0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;; -0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;; -0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;; -0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;; -0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;; -0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;; -0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;; -0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;; -0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;; -0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;; -0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;; -0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;; -0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;; -0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;; -0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;; -0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;; -0CBC;KANNADA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -0CBD;KANNADA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0CBF;KANNADA VOWEL SIGN I;Mn;0;L;;;;;N;;;;; -0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;; -0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; -0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; -0CC6;KANNADA VOWEL SIGN E;Mn;0;L;;;;;N;;;;; -0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;; -0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;; -0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;; -0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;; -0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; -0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;; -0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;; -0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;; -0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0CE2;KANNADA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -0CE3;KANNADA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0CF1;KANNADA SIGN JIHVAMULIYA;So;0;ON;;;;;N;;;;; -0CF2;KANNADA SIGN UPADHMANIYA;So;0;ON;;;;;N;;;;; -0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; -0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;; -0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;; -0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;; -0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;; -0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;; -0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;; -0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;; -0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;; -0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;; -0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;; -0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;; -0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;; -0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;; -0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;; -0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;; -0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;; -0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;; -0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;; -0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;; -0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;; -0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;; -0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;; -0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;; -0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;; -0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;; -0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;; -0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;; -0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;; -0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;; -0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;; -0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;; -0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;; -0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;; -0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;; -0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;; -0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;; -0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;; -0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;; -0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;; -0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;; -0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;; -0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;; -0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;; -0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;; -0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;; -0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;; -0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;; -0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;; -0D3D;MALAYALAM SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -0D44;MALAYALAM VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; -0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; -0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;; -0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;; -0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;; -0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;; -0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0D62;MALAYALAM VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -0D63;MALAYALAM VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0D70;MALAYALAM NUMBER TEN;No;0;L;;;;10;N;;;;; -0D71;MALAYALAM NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; -0D72;MALAYALAM NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; -0D73;MALAYALAM FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;; -0D74;MALAYALAM FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;; -0D75;MALAYALAM FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;; -0D79;MALAYALAM DATE MARK;So;0;L;;;;;N;;;;; -0D7A;MALAYALAM LETTER CHILLU NN;Lo;0;L;;;;;N;;;;; -0D7B;MALAYALAM LETTER CHILLU N;Lo;0;L;;;;;N;;;;; -0D7C;MALAYALAM LETTER CHILLU RR;Lo;0;L;;;;;N;;;;; -0D7D;MALAYALAM LETTER CHILLU L;Lo;0;L;;;;;N;;;;; -0D7E;MALAYALAM LETTER CHILLU LL;Lo;0;L;;;;;N;;;;; -0D7F;MALAYALAM LETTER CHILLU K;Lo;0;L;;;;;N;;;;; -0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;; -0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;; -0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;; -0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;; -0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;; -0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;; -0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;; -0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;; -0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;; -0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;; -0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;; -0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;; -0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;; -0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;; -0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;; -0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;; -0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;; -0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;; -0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;; -0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;; -0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;; -0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;; -0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;; -0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;; -0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;; -0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;; -0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;; -0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;; -0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;; -0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;; -0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;; -0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;; -0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;; -0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;; -0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;; -0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;; -0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;; -0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;; -0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;; -0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;; -0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;; -0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;; -0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;; -0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;; -0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;; -0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;; -0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;; -0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;; -0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;; -0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;; -0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;; -0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;; -0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;; -0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;; -0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;; -0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;; -0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;; -0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;; -0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;; -0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;; -0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;; -0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;; -0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;; -0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;; -0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;; -0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;; -0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;; -0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;; -0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;; -0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;; -0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;; -0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;; -0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;; -0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;; -0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;; -0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;; -0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;; -0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;; -0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;; -0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;; -0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;; -0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;; -0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;; -0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;; -0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;; -0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;; -0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;; -0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;; -0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;; -0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;; -0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;; -0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;; -0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;; -0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;; -0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;; -0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;; -0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;; -0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;; -0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;; -0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;; -0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;; -0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;; -0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;; -0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;; -0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;; -0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;; -0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;; -0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;; -0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;; -0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;; -0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;; -0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;; -0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;; -0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;; -0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;; -0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;; -0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;; -0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;; -0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;; -0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;; -0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;; -0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;; -0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;; -0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;; -0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;; -0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;; -0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;paiyan noi;;; -0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;; -0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;; -0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;; -0E33;THAI CHARACTER SARA AM;Lo;0;L; 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;; -0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;; -0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;; -0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;; -0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;sara uue;;; -0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;; -0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;; -0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;; -0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;; -0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;; -0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;; -0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;; -0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;sara ai mai muan;;; -0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;sara ai mai malai;;; -0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;lakkhang yao;;; -0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;mai yamok;;; -0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;mai taikhu;;; -0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;; -0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;; -0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;; -0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;; -0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;; -0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;nikkhahit;;; -0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;; -0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;; -0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;; -0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;; -0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;; -0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;; -0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;; -0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;; -0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;; -0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;; -0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;; -0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;; -0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;; -0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;; -0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;; -0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;; -0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;; -0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;; -0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;; -0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;; -0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;; -0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;; -0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;; -0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;; -0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;; -0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;; -0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;; -0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;; -0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;; -0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;; -0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;; -0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;; -0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;; -0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;; -0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;; -0EB3;LAO VOWEL SIGN AM;Lo;0;L; 0ECD 0EB2;;;;N;;;;; -0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;; -0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;; -0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;; -0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;; -0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;; -0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;; -0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;; -0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;; -0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;; -0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;; -0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;; -0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;; -0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;; -0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;; -0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;; -0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;; -0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;; -0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;; -0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;; -0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0EDC;LAO HO NO;Lo;0;L; 0EAB 0E99;;;;N;;;;; -0EDD;LAO HO MO;Lo;0;L; 0EAB 0EA1;;;;N;;;;; -0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;; -0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;; -0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;; -0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;; -0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;yik go dun ma;;; -0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;; -0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;; -0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;; -0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;drul shey;;; -0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;; -0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;; -0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;tsek;;; -0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L; 0F0B;;;;N;;tsek tar;;; -0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;shey;;; -0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;nyi shey;;; -0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;; -0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;; -0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;rinchen pung shey;;; -0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;; -0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;; -0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;ter tsek;;; -0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;; -0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;; -0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;; -0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;kyu pa;;; -0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;dong tsu;;; -0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;; -0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;; -0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;; -0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;; -0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;; -0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;; -0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;1/2;N;;;;; -0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;3/2;N;;;;; -0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;5/2;N;;;;; -0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;7/2;N;;;;; -0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;9/2;N;;;;; -0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;11/2;N;;;;; -0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;13/2;N;;;;; -0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;15/2;N;;;;; -0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;17/2;N;;;;; -0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;-1/2;N;;;;; -0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;; -0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;nge zung nyi da;;; -0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;; -0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;nge zung gor ta;;; -0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;; -0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;tsa tru;;; -0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;Y;;gug ta yun;;; -0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;Y;;gug ta ye;;; -0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;Y;TIBETAN LEFT BRACE;ang kang yun;;; -0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;Y;TIBETAN RIGHT BRACE;ang kang ye;;; -0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;yar tse;;; -0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;mar tse;;; -0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;; -0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;; -0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;; -0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;; -0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;; -0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;; -0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;; -0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;; -0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;; -0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;; -0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;; -0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;; -0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;; -0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;; -0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;; -0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;; -0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;; -0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;; -0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;; -0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;; -0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;; -0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;; -0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;; -0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;; -0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;; -0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;; -0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;; -0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;; -0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;; -0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;; -0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;; -0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;; -0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;; -0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;*;;; -0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;; -0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;; -0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;; -0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;; -0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;; -0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;; -0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;; -0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;*;;; -0F6B;TIBETAN LETTER KKA;Lo;0;L;;;;;N;;;;; -0F6C;TIBETAN LETTER RRA;Lo;0;L;;;;;N;;;;; -0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;; -0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;; -0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;; -0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;; -0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;; -0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;; -0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM; 0FB2 0F81;;;;N;;;;; -0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;; -0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM; 0FB3 0F81;;;;N;;;;; -0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;; -0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;; -0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;; -0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;; -0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;je su nga ro;;; -0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;nam chey;;; -0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;; -0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;; -0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;nyi da na da;;; -0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;nan de;;; -0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;; -0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;; -0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;ji ta;;; -0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;yang ta;;; -0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;che tsa chen;;; -0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;chu chen;;; -0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;tru chen ging;;; -0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;tru me ging;;; -0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;; -0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;; -0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;; -0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;; -0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;; -0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;; -0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;; -0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;; -0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;; -0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;; -0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;; -0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;; -0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;; -0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;; -0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;; -0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;; -0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;; -0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;; -0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;; -0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;; -0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;; -0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;; -0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;; -0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;; -0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;; -0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;; -0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;; -0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;; -0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;*;;; -0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;; -0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;; -0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;; -0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;*;;; -0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;*;;; -0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;; -0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;; -0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;; -0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;; -0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;; -0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;; -0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;; -0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;*;;; -0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;*;;; -0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;*;;; -0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;kuruka;;; -0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;kuruka shi mik chen;;; -0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;; -0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;; -0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;chang tyu;;; -0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;bub chey;;; -0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;drilbu;;; -0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;dorje;;; -0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;pema den;;; -0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;dorje gya dram;;; -0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;phurba;;; -0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;norbu;;; -0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;norbu nyi khyi;;; -0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;norbu sum khyi;;; -0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;norbu shi khyi;;; -0FCE;TIBETAN SIGN RDEL NAG RDEL DKAR;So;0;L;;;;;N;;dena deka;;; -0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;dena sum;;; -0FD0;TIBETAN MARK BSKA- SHOG GI MGO RGYAN;Po;0;L;;;;;N;;ka shog gi go gyen;;; -0FD1;TIBETAN MARK MNYAM YIG GI MGO RGYAN;Po;0;L;;;;;N;;nyam yig gi go gyen;;; -0FD2;TIBETAN MARK NYIS TSHEG;Po;0;L;;;;;N;;nyi tsek;;; -0FD3;TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA;Po;0;L;;;;;N;;da nying yik go dun ma;;; -0FD4;TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA;Po;0;L;;;;;N;;da nying yik go kab ma;;; -1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;; -1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;; -1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;; -1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;; -1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;; -1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;; -1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;; -1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;; -1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;; -1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;; -100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;; -100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;; -100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;; -100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;; -100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;; -100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;; -1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;; -1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;; -1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;; -1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;; -1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;; -1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;; -1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;; -1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;; -1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;; -1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;; -101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;; -101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;; -101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;; -101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;; -101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;; -101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;; -1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;; -1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;; -1022;MYANMAR LETTER SHAN A;Lo;0;L;;;;;N;;;;; -1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;; -1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;; -1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;; -1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;; -1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;; -1028;MYANMAR LETTER MON E;Lo;0;L;;;;;N;;;;; -1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;; -102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;; -102B;MYANMAR VOWEL SIGN TALL AA;Mc;0;L;;;;;N;;;;; -102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; -1033;MYANMAR VOWEL SIGN MON II;Mn;0;NSM;;;;;N;;;;; -1034;MYANMAR VOWEL SIGN MON O;Mn;0;NSM;;;;;N;;;;; -1035;MYANMAR VOWEL SIGN E ABOVE;Mn;0;NSM;;;;;N;;;;; -1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;; -1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;; -1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -103A;MYANMAR SIGN ASAT;Mn;9;NSM;;;;;N;;;;; -103B;MYANMAR CONSONANT SIGN MEDIAL YA;Mc;0;L;;;;;N;;;;; -103C;MYANMAR CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;; -103D;MYANMAR CONSONANT SIGN MEDIAL WA;Mn;0;NSM;;;;;N;;;;; -103E;MYANMAR CONSONANT SIGN MEDIAL HA;Mn;0;NSM;;;;;N;;;;; -103F;MYANMAR LETTER GREAT SA;Lo;0;L;;;;;N;;;;; -1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;; -104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;; -104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;; -104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;; -104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;; -104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;; -1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;; -1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;; -1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; -1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; -1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -105A;MYANMAR LETTER MON NGA;Lo;0;L;;;;;N;;;;; -105B;MYANMAR LETTER MON JHA;Lo;0;L;;;;;N;;;;; -105C;MYANMAR LETTER MON BBA;Lo;0;L;;;;;N;;;;; -105D;MYANMAR LETTER MON BBE;Lo;0;L;;;;;N;;;;; -105E;MYANMAR CONSONANT SIGN MON MEDIAL NA;Mn;0;NSM;;;;;N;;;;; -105F;MYANMAR CONSONANT SIGN MON MEDIAL MA;Mn;0;NSM;;;;;N;;;;; -1060;MYANMAR CONSONANT SIGN MON MEDIAL LA;Mn;0;NSM;;;;;N;;;;; -1061;MYANMAR LETTER SGAW KAREN SHA;Lo;0;L;;;;;N;;;;; -1062;MYANMAR VOWEL SIGN SGAW KAREN EU;Mc;0;L;;;;;N;;;;; -1063;MYANMAR TONE MARK SGAW KAREN HATHI;Mc;0;L;;;;;N;;;;; -1064;MYANMAR TONE MARK SGAW KAREN KE PHO;Mc;0;L;;;;;N;;;;; -1065;MYANMAR LETTER WESTERN PWO KAREN THA;Lo;0;L;;;;;N;;;;; -1066;MYANMAR LETTER WESTERN PWO KAREN PWA;Lo;0;L;;;;;N;;;;; -1067;MYANMAR VOWEL SIGN WESTERN PWO KAREN EU;Mc;0;L;;;;;N;;;;; -1068;MYANMAR VOWEL SIGN WESTERN PWO KAREN UE;Mc;0;L;;;;;N;;;;; -1069;MYANMAR SIGN WESTERN PWO KAREN TONE-1;Mc;0;L;;;;;N;;;;; -106A;MYANMAR SIGN WESTERN PWO KAREN TONE-2;Mc;0;L;;;;;N;;;;; -106B;MYANMAR SIGN WESTERN PWO KAREN TONE-3;Mc;0;L;;;;;N;;;;; -106C;MYANMAR SIGN WESTERN PWO KAREN TONE-4;Mc;0;L;;;;;N;;;;; -106D;MYANMAR SIGN WESTERN PWO KAREN TONE-5;Mc;0;L;;;;;N;;;;; -106E;MYANMAR LETTER EASTERN PWO KAREN NNA;Lo;0;L;;;;;N;;;;; -106F;MYANMAR LETTER EASTERN PWO KAREN YWA;Lo;0;L;;;;;N;;;;; -1070;MYANMAR LETTER EASTERN PWO KAREN GHWA;Lo;0;L;;;;;N;;;;; -1071;MYANMAR VOWEL SIGN GEBA KAREN I;Mn;0;NSM;;;;;N;;;;; -1072;MYANMAR VOWEL SIGN KAYAH OE;Mn;0;NSM;;;;;N;;;;; -1073;MYANMAR VOWEL SIGN KAYAH U;Mn;0;NSM;;;;;N;;;;; -1074;MYANMAR VOWEL SIGN KAYAH EE;Mn;0;NSM;;;;;N;;;;; -1075;MYANMAR LETTER SHAN KA;Lo;0;L;;;;;N;;;;; -1076;MYANMAR LETTER SHAN KHA;Lo;0;L;;;;;N;;;;; -1077;MYANMAR LETTER SHAN GA;Lo;0;L;;;;;N;;;;; -1078;MYANMAR LETTER SHAN CA;Lo;0;L;;;;;N;;;;; -1079;MYANMAR LETTER SHAN ZA;Lo;0;L;;;;;N;;;;; -107A;MYANMAR LETTER SHAN NYA;Lo;0;L;;;;;N;;;;; -107B;MYANMAR LETTER SHAN DA;Lo;0;L;;;;;N;;;;; -107C;MYANMAR LETTER SHAN NA;Lo;0;L;;;;;N;;;;; -107D;MYANMAR LETTER SHAN PHA;Lo;0;L;;;;;N;;;;; -107E;MYANMAR LETTER SHAN FA;Lo;0;L;;;;;N;;;;; -107F;MYANMAR LETTER SHAN BA;Lo;0;L;;;;;N;;;;; -1080;MYANMAR LETTER SHAN THA;Lo;0;L;;;;;N;;;;; -1081;MYANMAR LETTER SHAN HA;Lo;0;L;;;;;N;;;;; -1082;MYANMAR CONSONANT SIGN SHAN MEDIAL WA;Mn;0;NSM;;;;;N;;;;; -1083;MYANMAR VOWEL SIGN SHAN AA;Mc;0;L;;;;;N;;;;; -1084;MYANMAR VOWEL SIGN SHAN E;Mc;0;L;;;;;N;;;;; -1085;MYANMAR VOWEL SIGN SHAN E ABOVE;Mn;0;NSM;;;;;N;;;;; -1086;MYANMAR VOWEL SIGN SHAN FINAL Y;Mn;0;NSM;;;;;N;;;;; -1087;MYANMAR SIGN SHAN TONE-2;Mc;0;L;;;;;N;;;;; -1088;MYANMAR SIGN SHAN TONE-3;Mc;0;L;;;;;N;;;;; -1089;MYANMAR SIGN SHAN TONE-5;Mc;0;L;;;;;N;;;;; -108A;MYANMAR SIGN SHAN TONE-6;Mc;0;L;;;;;N;;;;; -108B;MYANMAR SIGN SHAN COUNCIL TONE-2;Mc;0;L;;;;;N;;;;; -108C;MYANMAR SIGN SHAN COUNCIL TONE-3;Mc;0;L;;;;;N;;;;; -108D;MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE;Mn;220;NSM;;;;;N;;;;; -108E;MYANMAR LETTER RUMAI PALAUNG FA;Lo;0;L;;;;;N;;;;; -108F;MYANMAR SIGN RUMAI PALAUNG TONE-5;Mc;0;L;;;;;N;;;;; -1090;MYANMAR SHAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1091;MYANMAR SHAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1092;MYANMAR SHAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1093;MYANMAR SHAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1094;MYANMAR SHAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1095;MYANMAR SHAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1096;MYANMAR SHAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1097;MYANMAR SHAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1098;MYANMAR SHAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1099;MYANMAR SHAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -109E;MYANMAR SYMBOL SHAN ONE;So;0;L;;;;;N;;;;; -109F;MYANMAR SYMBOL SHAN EXCLAMATION;So;0;L;;;;;N;;;;; -10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;2D00; -10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;2D01; -10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;2D02; -10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;2D03; -10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;2D04; -10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;2D05; -10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;2D06; -10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;2D07; -10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;2D08; -10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;2D09; -10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;2D0A; -10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;2D0B; -10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;2D0C; -10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;2D0D; -10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;2D0E; -10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;2D0F; -10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;2D10; -10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;2D11; -10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;2D12; -10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;2D13; -10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;2D14; -10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;2D15; -10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;2D16; -10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;2D17; -10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;2D18; -10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;2D19; -10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;2D1A; -10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;2D1B; -10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;2D1C; -10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;2D1D; -10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;2D1E; -10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;2D1F; -10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;2D20; -10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;2D21; -10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;2D22; -10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;2D23; -10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;2D24; -10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;2D25; -10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;; -10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;; -10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;; -10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;; -10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;; -10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;; -10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;; -10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;; -10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;; -10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;; -10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;; -10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;; -10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;; -10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;; -10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;; -10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;; -10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;; -10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;; -10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;; -10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;; -10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;; -10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;; -10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;; -10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;; -10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;; -10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;; -10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;; -10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;; -10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;; -10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;; -10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;; -10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;; -10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;; -10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;; -10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;; -10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;; -10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;; -10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;; -10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;; -10F7;GEORGIAN LETTER YN;Lo;0;L;;;;;N;;;;; -10F8;GEORGIAN LETTER ELIFI;Lo;0;L;;;;;N;;;;; -10F9;GEORGIAN LETTER TURNED GAN;Lo;0;L;;;;;N;;;;; -10FA;GEORGIAN LETTER AIN;Lo;0;L;;;;;N;;;;; -10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;; -10FC;MODIFIER LETTER GEORGIAN NAR;Lm;0;L; 10DC;;;;N;;;;; -1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;; -1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;; -1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;n *;;; -1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;; -1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;dd *;;; -1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;r *;;; -1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;m *;;; -1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;b *;;; -1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;bb *;;; -1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;s *;;; -110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;; -110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;; -110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;j *;;; -110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;jj *;;; -110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;; -110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;; -1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;; -1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;; -1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;h *;;; -1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;; -1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;; -1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;; -1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;; -1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;; -1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;; -1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;; -111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;; -111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;; -111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;; -111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;; -111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;; -111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;; -1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;; -1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;; -1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; -1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; -1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;; -1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;; -1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;; -1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;; -1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;; -1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;; -112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;; -112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; -112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;; -112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; -112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;; -112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; -1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;; -1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;; -1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;; -1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;; -1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;; -1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;; -1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;; -1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;; -1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;; -1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;; -113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;; -113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;; -113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;; -113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;; -113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;; -113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;; -1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;; -1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;; -1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;; -1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;; -1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;; -1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;; -1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;; -1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;; -1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;; -1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;; -114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;; -114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;; -114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;; -114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;; -114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;; -114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;; -1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;; -1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;; -1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;; -1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;; -1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;; -1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;; -1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;; -1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;; -1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;; -1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;; -115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;; -1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;; -1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;; -1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;; -1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;; -1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;; -1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;; -1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;; -1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;; -1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;; -1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;; -116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;; -116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;; -116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;; -116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;; -116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;; -116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;; -1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;; -1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;; -1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;; -1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;; -1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;; -1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;; -1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;; -1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;; -1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;; -1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;; -117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;; -117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;; -117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;; -117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;; -117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;; -117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;; -1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;; -1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;; -1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;; -1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;; -1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;; -1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;; -1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;; -1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;; -1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;; -1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;; -118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;; -118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;; -118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;; -118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;; -118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;; -118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;; -1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;; -1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;; -1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;; -1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;; -1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;; -1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;; -1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;; -1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;; -1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;; -1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;; -119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;; -119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;; -119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;; -119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;; -119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;; -119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;; -11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;; -11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;; -11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;; -11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;; -11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;; -11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;gs *;;; -11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;n *;;; -11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;nj *;;; -11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;nh *;;; -11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;; -11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;l *;;; -11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;lg *;;; -11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;lm *;;; -11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;lb *;;; -11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;ls *;;; -11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;lt *;;; -11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;lp *;;; -11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;lh *;;; -11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;m *;;; -11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;b *;;; -11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;bs *;;; -11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;s *;;; -11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;; -11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;ng *;;; -11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;j *;;; -11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;; -11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;; -11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;; -11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;; -11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;h *;;; -11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;; -11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; -11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;; -11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;; -11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;; -11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;; -11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;; -11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;; -11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;; -11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;; -11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;; -11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;; -11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;; -11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;; -11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;; -11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;; -11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;; -11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;; -11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; -11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;; -11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;; -11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;; -11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;; -11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;; -11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;; -11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;; -11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;; -11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;; -11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;; -11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;; -11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;; -11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;; -11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;; -11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;; -11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;; -11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; -11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; -11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; -11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;; -11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;; -11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;; -11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;; -11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;; -11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;; -11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;; -11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;; -11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;; -11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;; -11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;; -11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;; -11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;; -11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;; -11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;; -11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;; -11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;; -1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;; -1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;; -1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;; -1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;; -1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;; -1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;; -1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;; -1207;ETHIOPIC SYLLABLE HOA;Lo;0;L;;;;;N;;;;; -1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;; -1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;; -120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;; -120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;; -120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;; -120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;; -120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;; -120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;; -1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;; -1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;; -1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;; -1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;; -1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;; -1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;; -1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;; -1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;; -1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;; -1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;; -121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;; -121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;; -121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;; -121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;; -121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;; -121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;; -1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;; -1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;; -1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;; -1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;; -1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;; -1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;; -1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;; -1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;; -1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;; -1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;; -122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;; -122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;; -122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;; -122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;; -122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;; -122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;; -1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;; -1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;; -1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;; -1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;; -1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;; -1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;; -1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;; -1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;; -1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;; -1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;; -123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;; -123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;; -123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;; -123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;; -123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;; -123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;; -1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;; -1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;; -1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;; -1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;; -1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;; -1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;; -1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;; -1247;ETHIOPIC SYLLABLE QOA;Lo;0;L;;;;;N;;;;; -1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;; -124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;; -124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;; -124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;; -124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;; -1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;; -1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;; -1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;; -1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;; -1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;; -1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;; -1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;; -1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;; -125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;; -125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;; -125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;; -125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;; -1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;; -1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;; -1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;; -1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;; -1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;; -1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;; -1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;; -1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;; -1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;; -1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;; -126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;; -126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;; -126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;; -126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;; -126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;; -126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;; -1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;; -1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;; -1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;; -1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;; -1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;; -1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;; -1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;; -1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;; -1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;; -1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;; -127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;; -127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;; -127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;; -127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;; -127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;; -127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;; -1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;; -1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;; -1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;; -1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;; -1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;; -1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;; -1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;; -1287;ETHIOPIC SYLLABLE XOA;Lo;0;L;;;;;N;;;;; -1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;; -128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;; -128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;; -128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;; -128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;; -1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;; -1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;; -1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;; -1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;; -1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;; -1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;; -1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;; -1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;; -1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;; -1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;; -129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;; -129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;; -129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;; -129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;; -129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;; -129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;; -12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;; -12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;; -12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;; -12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;; -12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;; -12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;; -12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;; -12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;; -12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;; -12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;; -12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;; -12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;; -12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;; -12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;; -12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;; -12AF;ETHIOPIC SYLLABLE KOA;Lo;0;L;;;;;N;;;;; -12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;; -12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;; -12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;; -12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;; -12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;; -12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;; -12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;; -12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;; -12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;; -12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;; -12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;; -12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;; -12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;; -12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;; -12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;; -12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;; -12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;; -12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;; -12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;; -12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;; -12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;; -12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;; -12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;; -12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;; -12CF;ETHIOPIC SYLLABLE WOA;Lo;0;L;;;;;N;;;;; -12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;; -12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;; -12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;; -12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;; -12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;; -12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;; -12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;; -12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;; -12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;; -12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;; -12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;; -12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;; -12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;; -12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;; -12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;; -12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; -12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; -12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;; -12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;; -12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;; -12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; -12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; -12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;; -12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;; -12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;; -12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;; -12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;; -12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;; -12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;; -12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;; -12EF;ETHIOPIC SYLLABLE YOA;Lo;0;L;;;;;N;;;;; -12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;; -12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;; -12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;; -12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;; -12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;; -12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;; -12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;; -12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;; -12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;; -12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;; -12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;; -12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;; -12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;; -12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;; -12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;; -12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;; -1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;; -1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;; -1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;; -1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;; -1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;; -1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;; -1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;; -1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;; -1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;; -1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;; -130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;; -130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;; -130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;; -130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;; -130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;; -130F;ETHIOPIC SYLLABLE GOA;Lo;0;L;;;;;N;;;;; -1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;; -1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;; -1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;; -1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;; -1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;; -1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;; -1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;; -131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;; -131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;; -131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;; -131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;; -131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;; -131F;ETHIOPIC SYLLABLE GGWAA;Lo;0;L;;;;;N;;;;; -1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;; -1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;; -1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;; -1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;; -1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;; -1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;; -1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;; -1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;; -1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;; -1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;; -132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;; -132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;; -132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;; -132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;; -132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;; -132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;; -1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;; -1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;; -1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;; -1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;; -1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;; -1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;; -1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;; -1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;; -1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;; -1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;; -133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;; -133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;; -133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;; -133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;; -133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;; -133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;; -1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;; -1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;; -1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;; -1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;; -1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;; -1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;; -1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;; -1347;ETHIOPIC SYLLABLE TZOA;Lo;0;L;;;;;N;;;;; -1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;; -1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;; -134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;; -134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;; -134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;; -134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;; -134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;; -134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;; -1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;; -1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;; -1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;; -1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;; -1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;; -1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;; -1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;; -1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;; -1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;; -1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;; -135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;; -135F;ETHIOPIC COMBINING GEMINATION MARK;Mn;230;NSM;;;;;N;;;;; -1360;ETHIOPIC SECTION MARK;So;0;L;;;;;N;;;;; -1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;; -1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;; -1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;; -1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;; -1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;; -1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;; -1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;; -1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;; -1369;ETHIOPIC DIGIT ONE;No;0;L;;;1;1;N;;;;; -136A;ETHIOPIC DIGIT TWO;No;0;L;;;2;2;N;;;;; -136B;ETHIOPIC DIGIT THREE;No;0;L;;;3;3;N;;;;; -136C;ETHIOPIC DIGIT FOUR;No;0;L;;;4;4;N;;;;; -136D;ETHIOPIC DIGIT FIVE;No;0;L;;;5;5;N;;;;; -136E;ETHIOPIC DIGIT SIX;No;0;L;;;6;6;N;;;;; -136F;ETHIOPIC DIGIT SEVEN;No;0;L;;;7;7;N;;;;; -1370;ETHIOPIC DIGIT EIGHT;No;0;L;;;8;8;N;;;;; -1371;ETHIOPIC DIGIT NINE;No;0;L;;;9;9;N;;;;; -1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;; -1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;; -1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;; -1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;; -1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;; -1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;; -1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;; -1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;; -137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;; -137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;; -137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;; -1380;ETHIOPIC SYLLABLE SEBATBEIT MWA;Lo;0;L;;;;;N;;;;; -1381;ETHIOPIC SYLLABLE MWI;Lo;0;L;;;;;N;;;;; -1382;ETHIOPIC SYLLABLE MWEE;Lo;0;L;;;;;N;;;;; -1383;ETHIOPIC SYLLABLE MWE;Lo;0;L;;;;;N;;;;; -1384;ETHIOPIC SYLLABLE SEBATBEIT BWA;Lo;0;L;;;;;N;;;;; -1385;ETHIOPIC SYLLABLE BWI;Lo;0;L;;;;;N;;;;; -1386;ETHIOPIC SYLLABLE BWEE;Lo;0;L;;;;;N;;;;; -1387;ETHIOPIC SYLLABLE BWE;Lo;0;L;;;;;N;;;;; -1388;ETHIOPIC SYLLABLE SEBATBEIT FWA;Lo;0;L;;;;;N;;;;; -1389;ETHIOPIC SYLLABLE FWI;Lo;0;L;;;;;N;;;;; -138A;ETHIOPIC SYLLABLE FWEE;Lo;0;L;;;;;N;;;;; -138B;ETHIOPIC SYLLABLE FWE;Lo;0;L;;;;;N;;;;; -138C;ETHIOPIC SYLLABLE SEBATBEIT PWA;Lo;0;L;;;;;N;;;;; -138D;ETHIOPIC SYLLABLE PWI;Lo;0;L;;;;;N;;;;; -138E;ETHIOPIC SYLLABLE PWEE;Lo;0;L;;;;;N;;;;; -138F;ETHIOPIC SYLLABLE PWE;Lo;0;L;;;;;N;;;;; -1390;ETHIOPIC TONAL MARK YIZET;So;0;ON;;;;;N;;;;; -1391;ETHIOPIC TONAL MARK DERET;So;0;ON;;;;;N;;;;; -1392;ETHIOPIC TONAL MARK RIKRIK;So;0;ON;;;;;N;;;;; -1393;ETHIOPIC TONAL MARK SHORT RIKRIK;So;0;ON;;;;;N;;;;; -1394;ETHIOPIC TONAL MARK DIFAT;So;0;ON;;;;;N;;;;; -1395;ETHIOPIC TONAL MARK KENAT;So;0;ON;;;;;N;;;;; -1396;ETHIOPIC TONAL MARK CHIRET;So;0;ON;;;;;N;;;;; -1397;ETHIOPIC TONAL MARK HIDET;So;0;ON;;;;;N;;;;; -1398;ETHIOPIC TONAL MARK DERET-HIDET;So;0;ON;;;;;N;;;;; -1399;ETHIOPIC TONAL MARK KURT;So;0;ON;;;;;N;;;;; -13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;; -13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;; -13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;; -13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;; -13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;; -13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;; -13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;; -13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;; -13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;; -13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;; -13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;; -13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;; -13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;; -13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;; -13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;; -13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;; -13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;; -13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;; -13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;; -13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;; -13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;; -13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;; -13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;; -13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;; -13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;; -13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;; -13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;; -13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;; -13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;; -13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;; -13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;; -13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;; -13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;; -13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;; -13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;; -13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;; -13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;; -13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;; -13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;; -13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;; -13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;; -13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;; -13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;; -13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;; -13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;; -13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;; -13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;; -13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;; -13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;; -13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;; -13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;; -13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;; -13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;; -13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;; -13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;; -13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;; -13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;; -13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;; -13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;; -13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;; -13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;; -13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;; -13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;; -13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;; -13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;; -13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;; -13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;; -13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;; -13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;; -13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;; -13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;; -13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;; -13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;; -13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;; -13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;; -13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;; -13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;; -13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;; -13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;; -13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;; -13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;; -13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;; -13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;; -13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;; -13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;; -1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;; -1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;; -1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;; -1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;; -1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;; -1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;; -1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;; -1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;; -1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;; -140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;; -140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;; -140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;; -140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;; -140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;; -140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;; -1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;; -1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;; -1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;; -1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;; -1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;; -1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;; -1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;; -1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;; -1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;; -1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;; -141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;; -141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;; -141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;; -141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;; -141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;; -141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;; -1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;; -1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;; -1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;; -1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;; -1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;; -1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;; -1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;; -1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;; -1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;; -1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;; -142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;; -142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;; -142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;; -142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;; -142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;; -142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;; -1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;; -1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;; -1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;; -1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;; -1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;; -1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;; -1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;; -1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;; -1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;; -1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;; -143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;; -143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;; -143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;; -143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;; -143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;; -143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;; -1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;; -1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;; -1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;; -1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;; -1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;; -1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;; -1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;; -1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;; -1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;; -1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;; -144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;; -144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;; -144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;; -144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;; -144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;; -144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;; -1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;; -1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;; -1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;; -1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;; -1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;; -1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;; -1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;; -1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;; -1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;; -1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;; -145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;; -145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;; -145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;; -145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;; -145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;; -145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;; -1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;; -1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;; -1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;; -1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;; -1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;; -1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;; -1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;; -1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;; -1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;; -1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;; -146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;; -146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;; -146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;; -146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;; -146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;; -146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;; -1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;; -1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;; -1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;; -1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;; -1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;; -1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;; -1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;; -1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;; -1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;; -1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;; -147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;; -147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;; -147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;; -147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;; -147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;; -147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;; -1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;; -1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;; -1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;; -1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;; -1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;; -1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;; -1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;; -1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;; -1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;; -1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;; -148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;; -148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;; -148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;; -148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;; -148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;; -148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;; -1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;; -1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;; -1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;; -1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;; -1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;; -1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;; -1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;; -1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;; -1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;; -1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;; -149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;; -149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;; -149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;; -149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;; -149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;; -149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;; -14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;; -14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;; -14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;; -14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;; -14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;; -14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;; -14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;; -14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;; -14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;; -14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;; -14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;; -14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;; -14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;; -14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;; -14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;; -14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;; -14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;; -14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;; -14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;; -14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;; -14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;; -14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;; -14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;; -14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;; -14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;; -14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;; -14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;; -14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;; -14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;; -14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;; -14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;; -14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;; -14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;; -14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;; -14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;; -14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;; -14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;; -14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;; -14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;; -14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;; -14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;; -14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;; -14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;; -14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;; -14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;; -14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;; -14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;; -14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;; -14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;; -14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;; -14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;; -14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;; -14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;; -14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;; -14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;; -14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;; -14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;; -14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;; -14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;; -14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;; -14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;; -14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;; -14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;; -14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;; -14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;; -14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;; -14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;; -14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;; -14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;; -14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;; -14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;; -14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;; -14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;; -14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;; -14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;; -14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;; -14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;; -14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;; -14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;; -14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;; -14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;; -14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;; -14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;; -14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;; -14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;; -14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;; -14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;; -14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;; -14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;; -14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;; -14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;; -14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;; -14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;; -14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;; -14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;; -14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;; -1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;; -1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;; -1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;; -1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;; -1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;; -1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;; -1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;; -1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;; -1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;; -1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;; -150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;; -150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;; -150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;; -150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;; -150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;; -150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;; -1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;; -1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;; -1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;; -1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;; -1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;; -1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;; -1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;; -1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;; -1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;; -1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;; -151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;; -151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;; -151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;; -151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;; -151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;; -151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;; -1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;; -1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;; -1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;; -1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;; -1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;; -1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;; -1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;; -1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;; -1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;; -1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;; -152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;; -152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;; -152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;; -152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;; -152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;; -152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;; -1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;; -1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;; -1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;; -1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;; -1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;; -1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;; -1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;; -1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;; -1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;; -1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;; -153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;; -153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;; -153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;; -153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;; -153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;; -153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;; -1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;; -1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;; -1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;; -1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;; -1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;; -1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;; -1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;; -1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;; -1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;; -1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;; -154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;; -154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;; -154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;; -154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;; -154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;; -154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;; -1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;; -1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;; -1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;; -1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;; -1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;; -1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;; -1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;; -1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;; -1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;; -1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;; -155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;; -155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;; -155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;; -155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;; -155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;; -155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;; -1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;; -1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;; -1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;; -1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;; -1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;; -1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;; -1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;; -1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;; -1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;; -1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;; -156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;; -156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;; -156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;; -156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;; -156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;; -156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;; -1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;; -1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;; -1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;; -1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;; -1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;; -1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;; -1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;; -1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;; -1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;; -1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;; -157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;; -157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;; -157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;; -157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;; -157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;; -157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;; -1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;; -1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;; -1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;; -1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;; -1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;; -1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;; -1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;; -1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;; -1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;; -1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;; -158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;; -158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;; -158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;; -158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;; -158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;; -158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;; -1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;; -1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;; -1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;; -1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;; -1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;; -1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;; -1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;; -1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;; -1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;; -1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;; -159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;; -159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;; -159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;; -159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;; -159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;; -159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;; -15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;; -15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;; -15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;; -15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;; -15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;; -15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;; -15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;; -15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;; -15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;; -15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;; -15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;; -15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;; -15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;; -15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;; -15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;; -15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;; -15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;; -15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;; -15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;; -15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;; -15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;; -15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;; -15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;; -15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;; -15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;; -15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;; -15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;; -15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;; -15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;; -15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;; -15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;; -15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;; -15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;; -15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;; -15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;; -15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;; -15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;; -15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;; -15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;; -15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;; -15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;; -15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;; -15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;; -15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;; -15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;; -15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;; -15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;; -15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;; -15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;; -15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;; -15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;; -15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;; -15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;; -15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;; -15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;; -15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;; -15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;; -15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;; -15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;; -15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;; -15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;; -15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;; -15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;; -15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;; -15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;; -15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;; -15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;; -15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;; -15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;; -15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;; -15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;; -15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;; -15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;; -15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;; -15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;; -15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;; -15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;; -15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;; -15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;; -15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;; -15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;; -15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;; -15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;; -15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;; -15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;; -15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;; -15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;; -15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;; -15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;; -15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;; -15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;; -15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;; -15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;; -15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;; -15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;; -15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;; -1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;; -1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;; -1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;; -1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;; -1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;; -1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;; -1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;; -1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;; -1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;; -1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;; -160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;; -160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;; -160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;; -160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;; -160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;; -160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;; -1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;; -1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;; -1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;; -1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;; -1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;; -1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;; -1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;; -1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;; -1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;; -1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;; -161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;; -161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;; -161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;; -161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;; -161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;; -161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;; -1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;; -1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;; -1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;; -1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;; -1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;; -1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;; -1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;; -1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;; -1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;; -1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;; -162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;; -162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;; -162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;; -162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;; -162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;; -162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;; -1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;; -1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;; -1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;; -1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;; -1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;; -1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;; -1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;; -1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;; -1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;; -1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;; -163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;; -163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;; -163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;; -163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;; -163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;; -163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;; -1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;; -1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;; -1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;; -1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;; -1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;; -1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;; -1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;; -1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;; -1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;; -1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;; -164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;; -164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;; -164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;; -164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;; -164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;; -164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;; -1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;; -1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;; -1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;; -1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;; -1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;; -1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;; -1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;; -1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;; -1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;; -1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;; -165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;; -165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;; -165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;; -165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;; -165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;; -165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;; -1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;; -1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;; -1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;; -1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;; -1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;; -1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;; -1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;; -1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;; -1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;; -1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;; -166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;; -166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;; -166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;; -166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;; -166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;; -166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;; -1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;; -1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;; -1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;; -1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;; -1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;; -1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;; -1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;; -1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;; -1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;; -1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;; -1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;; -1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;; -1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;; -1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;; -1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;; -1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;; -1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;; -168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;; -168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;; -168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;; -168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;; -168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;; -168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;; -1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;; -1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;; -1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;; -1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;; -1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;; -1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;; -1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;; -1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;; -1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;; -1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;; -169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;; -169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;Y;;;;; -169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;Y;;;;; -16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;; -16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;; -16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;; -16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;; -16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;; -16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;; -16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;; -16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;; -16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;; -16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;; -16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;; -16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;; -16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;; -16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;; -16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;; -16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;; -16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;; -16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;; -16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;; -16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;; -16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;; -16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;; -16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;; -16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;; -16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;; -16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;; -16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;; -16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;; -16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;; -16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;; -16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;; -16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;; -16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;; -16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;; -16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;; -16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;; -16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;; -16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;; -16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;; -16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;; -16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;; -16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;; -16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;; -16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;; -16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;; -16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;; -16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;; -16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;; -16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;; -16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;; -16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;; -16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;; -16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;; -16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;; -16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;; -16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;; -16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;; -16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;; -16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;; -16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;; -16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;; -16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;; -16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;; -16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;; -16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;; -16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;; -16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;; -16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;; -16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;; -16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;; -16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;; -16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;; -16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;; -16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;; -16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;; -16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;; -16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;; -16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;; -16EE;RUNIC ARLAUG SYMBOL;Nl;0;L;;;;17;N;;golden number 17;;; -16EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;golden number 18;;; -16F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;golden number 19;;; -1700;TAGALOG LETTER A;Lo;0;L;;;;;N;;;;; -1701;TAGALOG LETTER I;Lo;0;L;;;;;N;;;;; -1702;TAGALOG LETTER U;Lo;0;L;;;;;N;;;;; -1703;TAGALOG LETTER KA;Lo;0;L;;;;;N;;;;; -1704;TAGALOG LETTER GA;Lo;0;L;;;;;N;;;;; -1705;TAGALOG LETTER NGA;Lo;0;L;;;;;N;;;;; -1706;TAGALOG LETTER TA;Lo;0;L;;;;;N;;;;; -1707;TAGALOG LETTER DA;Lo;0;L;;;;;N;;;;; -1708;TAGALOG LETTER NA;Lo;0;L;;;;;N;;;;; -1709;TAGALOG LETTER PA;Lo;0;L;;;;;N;;;;; -170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;; -170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;; -170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;; -170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;; -170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;; -1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;; -1711;TAGALOG LETTER HA;Lo;0;L;;;;;N;;;;; -1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;; -1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;; -1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;; -1723;HANUNOO LETTER KA;Lo;0;L;;;;;N;;;;; -1724;HANUNOO LETTER GA;Lo;0;L;;;;;N;;;;; -1725;HANUNOO LETTER NGA;Lo;0;L;;;;;N;;;;; -1726;HANUNOO LETTER TA;Lo;0;L;;;;;N;;;;; -1727;HANUNOO LETTER DA;Lo;0;L;;;;;N;;;;; -1728;HANUNOO LETTER NA;Lo;0;L;;;;;N;;;;; -1729;HANUNOO LETTER PA;Lo;0;L;;;;;N;;;;; -172A;HANUNOO LETTER BA;Lo;0;L;;;;;N;;;;; -172B;HANUNOO LETTER MA;Lo;0;L;;;;;N;;;;; -172C;HANUNOO LETTER YA;Lo;0;L;;;;;N;;;;; -172D;HANUNOO LETTER RA;Lo;0;L;;;;;N;;;;; -172E;HANUNOO LETTER LA;Lo;0;L;;;;;N;;;;; -172F;HANUNOO LETTER WA;Lo;0;L;;;;;N;;;;; -1730;HANUNOO LETTER SA;Lo;0;L;;;;;N;;;;; -1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;; -1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;; -1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;; -1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;; -1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;; -1741;BUHID LETTER I;Lo;0;L;;;;;N;;;;; -1742;BUHID LETTER U;Lo;0;L;;;;;N;;;;; -1743;BUHID LETTER KA;Lo;0;L;;;;;N;;;;; -1744;BUHID LETTER GA;Lo;0;L;;;;;N;;;;; -1745;BUHID LETTER NGA;Lo;0;L;;;;;N;;;;; -1746;BUHID LETTER TA;Lo;0;L;;;;;N;;;;; -1747;BUHID LETTER DA;Lo;0;L;;;;;N;;;;; -1748;BUHID LETTER NA;Lo;0;L;;;;;N;;;;; -1749;BUHID LETTER PA;Lo;0;L;;;;;N;;;;; -174A;BUHID LETTER BA;Lo;0;L;;;;;N;;;;; -174B;BUHID LETTER MA;Lo;0;L;;;;;N;;;;; -174C;BUHID LETTER YA;Lo;0;L;;;;;N;;;;; -174D;BUHID LETTER RA;Lo;0;L;;;;;N;;;;; -174E;BUHID LETTER LA;Lo;0;L;;;;;N;;;;; -174F;BUHID LETTER WA;Lo;0;L;;;;;N;;;;; -1750;BUHID LETTER SA;Lo;0;L;;;;;N;;;;; -1751;BUHID LETTER HA;Lo;0;L;;;;;N;;;;; -1752;BUHID VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -1753;BUHID VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1760;TAGBANWA LETTER A;Lo;0;L;;;;;N;;;;; -1761;TAGBANWA LETTER I;Lo;0;L;;;;;N;;;;; -1762;TAGBANWA LETTER U;Lo;0;L;;;;;N;;;;; -1763;TAGBANWA LETTER KA;Lo;0;L;;;;;N;;;;; -1764;TAGBANWA LETTER GA;Lo;0;L;;;;;N;;;;; -1765;TAGBANWA LETTER NGA;Lo;0;L;;;;;N;;;;; -1766;TAGBANWA LETTER TA;Lo;0;L;;;;;N;;;;; -1767;TAGBANWA LETTER DA;Lo;0;L;;;;;N;;;;; -1768;TAGBANWA LETTER NA;Lo;0;L;;;;;N;;;;; -1769;TAGBANWA LETTER PA;Lo;0;L;;;;;N;;;;; -176A;TAGBANWA LETTER BA;Lo;0;L;;;;;N;;;;; -176B;TAGBANWA LETTER MA;Lo;0;L;;;;;N;;;;; -176C;TAGBANWA LETTER YA;Lo;0;L;;;;;N;;;;; -176E;TAGBANWA LETTER LA;Lo;0;L;;;;;N;;;;; -176F;TAGBANWA LETTER WA;Lo;0;L;;;;;N;;;;; -1770;TAGBANWA LETTER SA;Lo;0;L;;;;;N;;;;; -1772;TAGBANWA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -1773;TAGBANWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;; -1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;; -1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;; -1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;; -1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;; -1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;; -1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;; -1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;; -1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;; -1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;; -178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;; -178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;; -178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;; -178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;; -178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;; -178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;; -1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;; -1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;; -1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;; -1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;; -1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;; -1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;; -1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;; -1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;; -1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;; -1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;; -179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;; -179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;; -179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;; -179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;; -179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;; -179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;; -17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;; -17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;; -17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;; -17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;*;;; -17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;*;;; -17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;; -17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;; -17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;; -17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;; -17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;; -17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;; -17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;; -17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;; -17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;; -17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;; -17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;; -17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;; -17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;; -17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;; -17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;; -17B4;KHMER VOWEL INHERENT AQ;Cf;0;L;;;;;N;;*;;; -17B5;KHMER VOWEL INHERENT AA;Cf;0;L;;;;;N;;*;;; -17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;; -17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;; -17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;; -17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;; -17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;; -17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;; -17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; -17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; -17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; -17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;; -17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;; -17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;; -17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;; -17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;; -17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;; -17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;; -17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;; -17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;; -17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;; -17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;; -17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;; -17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;; -17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;*;;; -17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;; -17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;; -17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;; -17D7;KHMER SIGN LEK TOO;Lm;0;L;;;;;N;;;;; -17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;*;;; -17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;; -17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;; -17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;; -17DC;KHMER SIGN AVAKRAHASANYA;Lo;0;L;;;;;N;;;;; -17DD;KHMER SIGN ATTHACAN;Mn;230;NSM;;;;;N;;;;; -17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -17F0;KHMER SYMBOL LEK ATTAK SON;No;0;ON;;;;0;N;;;;; -17F1;KHMER SYMBOL LEK ATTAK MUOY;No;0;ON;;;;1;N;;;;; -17F2;KHMER SYMBOL LEK ATTAK PII;No;0;ON;;;;2;N;;;;; -17F3;KHMER SYMBOL LEK ATTAK BEI;No;0;ON;;;;3;N;;;;; -17F4;KHMER SYMBOL LEK ATTAK BUON;No;0;ON;;;;4;N;;;;; -17F5;KHMER SYMBOL LEK ATTAK PRAM;No;0;ON;;;;5;N;;;;; -17F6;KHMER SYMBOL LEK ATTAK PRAM-MUOY;No;0;ON;;;;6;N;;;;; -17F7;KHMER SYMBOL LEK ATTAK PRAM-PII;No;0;ON;;;;7;N;;;;; -17F8;KHMER SYMBOL LEK ATTAK PRAM-BEI;No;0;ON;;;;8;N;;;;; -17F9;KHMER SYMBOL LEK ATTAK PRAM-BUON;No;0;ON;;;;9;N;;;;; -1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;; -1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;; -1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;; -1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;; -1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;; -1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;; -1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;; -1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;; -1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;; -1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;; -180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;; -180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Mn;0;NSM;;;;;N;;;;; -180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;; -180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;; -180E;MONGOLIAN VOWEL SEPARATOR;Zs;0;WS;;;;;N;;;;; -1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;; -1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;; -1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;; -1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;; -1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;; -1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;; -1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;; -1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;; -1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;; -1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;; -182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;; -182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;; -182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;; -182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;; -182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;; -182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;; -1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;; -1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;; -1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;; -1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;; -1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;; -1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;; -1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;; -1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;; -1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;; -1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;; -183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;; -183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;; -183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;; -183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;; -183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;; -183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;; -1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;; -1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;; -1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;; -1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;; -1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;; -1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;; -1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;; -1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;; -1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;; -1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;; -184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;; -184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;; -184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;; -184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;; -184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;; -184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;; -1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;; -1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;; -1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;; -1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;; -1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;; -1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;; -1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;; -1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;; -1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;; -1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;; -185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;; -185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;; -185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;; -185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;; -185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;; -185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;; -1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;; -1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;; -1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;; -1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;; -1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;; -1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;; -1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;; -1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;; -1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;; -1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;; -186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;; -186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;; -186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;; -186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;; -186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;; -186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;; -1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;; -1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;; -1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;; -1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;; -1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;; -1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;; -1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;; -1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;; -1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;; -1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;; -1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;; -1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;; -1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;; -1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;; -1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;; -1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;; -1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;; -1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;; -188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;; -188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;; -188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;; -188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;; -188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;; -188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;; -1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;; -1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;; -1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;; -1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;; -1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;; -1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;; -1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;; -1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;; -1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;; -1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;; -189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;; -189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;; -189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;; -189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;; -189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;; -189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;; -18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;; -18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;; -18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;; -18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;; -18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;; -18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;; -18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;; -18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;; -18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;; -18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;; -18AA;MONGOLIAN LETTER MANCHU ALI GALI LHA;Lo;0;L;;;;;N;;;;; -1900;LIMBU VOWEL-CARRIER LETTER;Lo;0;L;;;;;N;;;;; -1901;LIMBU LETTER KA;Lo;0;L;;;;;N;;;;; -1902;LIMBU LETTER KHA;Lo;0;L;;;;;N;;;;; -1903;LIMBU LETTER GA;Lo;0;L;;;;;N;;;;; -1904;LIMBU LETTER GHA;Lo;0;L;;;;;N;;;;; -1905;LIMBU LETTER NGA;Lo;0;L;;;;;N;;;;; -1906;LIMBU LETTER CA;Lo;0;L;;;;;N;;;;; -1907;LIMBU LETTER CHA;Lo;0;L;;;;;N;;;;; -1908;LIMBU LETTER JA;Lo;0;L;;;;;N;;;;; -1909;LIMBU LETTER JHA;Lo;0;L;;;;;N;;;;; -190A;LIMBU LETTER YAN;Lo;0;L;;;;;N;;;;; -190B;LIMBU LETTER TA;Lo;0;L;;;;;N;;;;; -190C;LIMBU LETTER THA;Lo;0;L;;;;;N;;;;; -190D;LIMBU LETTER DA;Lo;0;L;;;;;N;;;;; -190E;LIMBU LETTER DHA;Lo;0;L;;;;;N;;;;; -190F;LIMBU LETTER NA;Lo;0;L;;;;;N;;;;; -1910;LIMBU LETTER PA;Lo;0;L;;;;;N;;;;; -1911;LIMBU LETTER PHA;Lo;0;L;;;;;N;;;;; -1912;LIMBU LETTER BA;Lo;0;L;;;;;N;;;;; -1913;LIMBU LETTER BHA;Lo;0;L;;;;;N;;;;; -1914;LIMBU LETTER MA;Lo;0;L;;;;;N;;;;; -1915;LIMBU LETTER YA;Lo;0;L;;;;;N;;;;; -1916;LIMBU LETTER RA;Lo;0;L;;;;;N;;;;; -1917;LIMBU LETTER LA;Lo;0;L;;;;;N;;;;; -1918;LIMBU LETTER WA;Lo;0;L;;;;;N;;;;; -1919;LIMBU LETTER SHA;Lo;0;L;;;;;N;;;;; -191A;LIMBU LETTER SSA;Lo;0;L;;;;;N;;;;; -191B;LIMBU LETTER SA;Lo;0;L;;;;;N;;;;; -191C;LIMBU LETTER HA;Lo;0;L;;;;;N;;;;; -1920;LIMBU VOWEL SIGN A;Mn;0;NSM;;;;;N;;;;; -1921;LIMBU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -1922;LIMBU VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1923;LIMBU VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; -1924;LIMBU VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -1925;LIMBU VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; -1926;LIMBU VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; -1927;LIMBU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -1928;LIMBU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; -1929;LIMBU SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;; -192A;LIMBU SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;; -192B;LIMBU SUBJOINED LETTER WA;Mc;0;L;;;;;N;;;;; -1930;LIMBU SMALL LETTER KA;Mc;0;L;;;;;N;;;;; -1931;LIMBU SMALL LETTER NGA;Mc;0;L;;;;;N;;;;; -1932;LIMBU SMALL LETTER ANUSVARA;Mn;0;NSM;;;;;N;;;;; -1933;LIMBU SMALL LETTER TA;Mc;0;L;;;;;N;;;;; -1934;LIMBU SMALL LETTER NA;Mc;0;L;;;;;N;;;;; -1935;LIMBU SMALL LETTER PA;Mc;0;L;;;;;N;;;;; -1936;LIMBU SMALL LETTER MA;Mc;0;L;;;;;N;;;;; -1937;LIMBU SMALL LETTER RA;Mc;0;L;;;;;N;;;;; -1938;LIMBU SMALL LETTER LA;Mc;0;L;;;;;N;;;;; -1939;LIMBU SIGN MUKPHRENG;Mn;222;NSM;;;;;N;;;;; -193A;LIMBU SIGN KEMPHRENG;Mn;230;NSM;;;;;N;;;;; -193B;LIMBU SIGN SA-I;Mn;220;NSM;;;;;N;;;;; -1940;LIMBU SIGN LOO;So;0;ON;;;;;N;;;;; -1944;LIMBU EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; -1945;LIMBU QUESTION MARK;Po;0;ON;;;;;N;;;;; -1946;LIMBU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1947;LIMBU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1948;LIMBU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1949;LIMBU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -194A;LIMBU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -194B;LIMBU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -194C;LIMBU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -194D;LIMBU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -194E;LIMBU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -194F;LIMBU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1950;TAI LE LETTER KA;Lo;0;L;;;;;N;;;;; -1951;TAI LE LETTER XA;Lo;0;L;;;;;N;;;;; -1952;TAI LE LETTER NGA;Lo;0;L;;;;;N;;;;; -1953;TAI LE LETTER TSA;Lo;0;L;;;;;N;;;;; -1954;TAI LE LETTER SA;Lo;0;L;;;;;N;;;;; -1955;TAI LE LETTER YA;Lo;0;L;;;;;N;;;;; -1956;TAI LE LETTER TA;Lo;0;L;;;;;N;;;;; -1957;TAI LE LETTER THA;Lo;0;L;;;;;N;;;;; -1958;TAI LE LETTER LA;Lo;0;L;;;;;N;;;;; -1959;TAI LE LETTER PA;Lo;0;L;;;;;N;;;;; -195A;TAI LE LETTER PHA;Lo;0;L;;;;;N;;;;; -195B;TAI LE LETTER MA;Lo;0;L;;;;;N;;;;; -195C;TAI LE LETTER FA;Lo;0;L;;;;;N;;;;; -195D;TAI LE LETTER VA;Lo;0;L;;;;;N;;;;; -195E;TAI LE LETTER HA;Lo;0;L;;;;;N;;;;; -195F;TAI LE LETTER QA;Lo;0;L;;;;;N;;;;; -1960;TAI LE LETTER KHA;Lo;0;L;;;;;N;;;;; -1961;TAI LE LETTER TSHA;Lo;0;L;;;;;N;;;;; -1962;TAI LE LETTER NA;Lo;0;L;;;;;N;;;;; -1963;TAI LE LETTER A;Lo;0;L;;;;;N;;;;; -1964;TAI LE LETTER I;Lo;0;L;;;;;N;;;;; -1965;TAI LE LETTER EE;Lo;0;L;;;;;N;;;;; -1966;TAI LE LETTER EH;Lo;0;L;;;;;N;;;;; -1967;TAI LE LETTER U;Lo;0;L;;;;;N;;;;; -1968;TAI LE LETTER OO;Lo;0;L;;;;;N;;;;; -1969;TAI LE LETTER O;Lo;0;L;;;;;N;;;;; -196A;TAI LE LETTER UE;Lo;0;L;;;;;N;;;;; -196B;TAI LE LETTER E;Lo;0;L;;;;;N;;;;; -196C;TAI LE LETTER AUE;Lo;0;L;;;;;N;;;;; -196D;TAI LE LETTER AI;Lo;0;L;;;;;N;;;;; -1970;TAI LE LETTER TONE-2;Lo;0;L;;;;;N;;;;; -1971;TAI LE LETTER TONE-3;Lo;0;L;;;;;N;;;;; -1972;TAI LE LETTER TONE-4;Lo;0;L;;;;;N;;;;; -1973;TAI LE LETTER TONE-5;Lo;0;L;;;;;N;;;;; -1974;TAI LE LETTER TONE-6;Lo;0;L;;;;;N;;;;; -1980;NEW TAI LUE LETTER HIGH QA;Lo;0;L;;;;;N;;;;; -1981;NEW TAI LUE LETTER LOW QA;Lo;0;L;;;;;N;;;;; -1982;NEW TAI LUE LETTER HIGH KA;Lo;0;L;;;;;N;;;;; -1983;NEW TAI LUE LETTER HIGH XA;Lo;0;L;;;;;N;;;;; -1984;NEW TAI LUE LETTER HIGH NGA;Lo;0;L;;;;;N;;;;; -1985;NEW TAI LUE LETTER LOW KA;Lo;0;L;;;;;N;;;;; -1986;NEW TAI LUE LETTER LOW XA;Lo;0;L;;;;;N;;;;; -1987;NEW TAI LUE LETTER LOW NGA;Lo;0;L;;;;;N;;;;; -1988;NEW TAI LUE LETTER HIGH TSA;Lo;0;L;;;;;N;;;;; -1989;NEW TAI LUE LETTER HIGH SA;Lo;0;L;;;;;N;;;;; -198A;NEW TAI LUE LETTER HIGH YA;Lo;0;L;;;;;N;;;;; -198B;NEW TAI LUE LETTER LOW TSA;Lo;0;L;;;;;N;;;;; -198C;NEW TAI LUE LETTER LOW SA;Lo;0;L;;;;;N;;;;; -198D;NEW TAI LUE LETTER LOW YA;Lo;0;L;;;;;N;;;;; -198E;NEW TAI LUE LETTER HIGH TA;Lo;0;L;;;;;N;;;;; -198F;NEW TAI LUE LETTER HIGH THA;Lo;0;L;;;;;N;;;;; -1990;NEW TAI LUE LETTER HIGH NA;Lo;0;L;;;;;N;;;;; -1991;NEW TAI LUE LETTER LOW TA;Lo;0;L;;;;;N;;;;; -1992;NEW TAI LUE LETTER LOW THA;Lo;0;L;;;;;N;;;;; -1993;NEW TAI LUE LETTER LOW NA;Lo;0;L;;;;;N;;;;; -1994;NEW TAI LUE LETTER HIGH PA;Lo;0;L;;;;;N;;;;; -1995;NEW TAI LUE LETTER HIGH PHA;Lo;0;L;;;;;N;;;;; -1996;NEW TAI LUE LETTER HIGH MA;Lo;0;L;;;;;N;;;;; -1997;NEW TAI LUE LETTER LOW PA;Lo;0;L;;;;;N;;;;; -1998;NEW TAI LUE LETTER LOW PHA;Lo;0;L;;;;;N;;;;; -1999;NEW TAI LUE LETTER LOW MA;Lo;0;L;;;;;N;;;;; -199A;NEW TAI LUE LETTER HIGH FA;Lo;0;L;;;;;N;;;;; -199B;NEW TAI LUE LETTER HIGH VA;Lo;0;L;;;;;N;;;;; -199C;NEW TAI LUE LETTER HIGH LA;Lo;0;L;;;;;N;;;;; -199D;NEW TAI LUE LETTER LOW FA;Lo;0;L;;;;;N;;;;; -199E;NEW TAI LUE LETTER LOW VA;Lo;0;L;;;;;N;;;;; -199F;NEW TAI LUE LETTER LOW LA;Lo;0;L;;;;;N;;;;; -19A0;NEW TAI LUE LETTER HIGH HA;Lo;0;L;;;;;N;;;;; -19A1;NEW TAI LUE LETTER HIGH DA;Lo;0;L;;;;;N;;;;; -19A2;NEW TAI LUE LETTER HIGH BA;Lo;0;L;;;;;N;;;;; -19A3;NEW TAI LUE LETTER LOW HA;Lo;0;L;;;;;N;;;;; -19A4;NEW TAI LUE LETTER LOW DA;Lo;0;L;;;;;N;;;;; -19A5;NEW TAI LUE LETTER LOW BA;Lo;0;L;;;;;N;;;;; -19A6;NEW TAI LUE LETTER HIGH KVA;Lo;0;L;;;;;N;;;;; -19A7;NEW TAI LUE LETTER HIGH XVA;Lo;0;L;;;;;N;;;;; -19A8;NEW TAI LUE LETTER LOW KVA;Lo;0;L;;;;;N;;;;; -19A9;NEW TAI LUE LETTER LOW XVA;Lo;0;L;;;;;N;;;;; -19B0;NEW TAI LUE VOWEL SIGN VOWEL SHORTENER;Mc;0;L;;;;;N;;;;; -19B1;NEW TAI LUE VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -19B2;NEW TAI LUE VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -19B3;NEW TAI LUE VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -19B4;NEW TAI LUE VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -19B5;NEW TAI LUE VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -19B6;NEW TAI LUE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; -19B7;NEW TAI LUE VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -19B8;NEW TAI LUE VOWEL SIGN OA;Mc;0;L;;;;;N;;;;; -19B9;NEW TAI LUE VOWEL SIGN UE;Mc;0;L;;;;;N;;;;; -19BA;NEW TAI LUE VOWEL SIGN AY;Mc;0;L;;;;;N;;;;; -19BB;NEW TAI LUE VOWEL SIGN AAY;Mc;0;L;;;;;N;;;;; -19BC;NEW TAI LUE VOWEL SIGN UY;Mc;0;L;;;;;N;;;;; -19BD;NEW TAI LUE VOWEL SIGN OY;Mc;0;L;;;;;N;;;;; -19BE;NEW TAI LUE VOWEL SIGN OAY;Mc;0;L;;;;;N;;;;; -19BF;NEW TAI LUE VOWEL SIGN UEY;Mc;0;L;;;;;N;;;;; -19C0;NEW TAI LUE VOWEL SIGN IY;Mc;0;L;;;;;N;;;;; -19C1;NEW TAI LUE LETTER FINAL V;Lo;0;L;;;;;N;;;;; -19C2;NEW TAI LUE LETTER FINAL NG;Lo;0;L;;;;;N;;;;; -19C3;NEW TAI LUE LETTER FINAL N;Lo;0;L;;;;;N;;;;; -19C4;NEW TAI LUE LETTER FINAL M;Lo;0;L;;;;;N;;;;; -19C5;NEW TAI LUE LETTER FINAL K;Lo;0;L;;;;;N;;;;; -19C6;NEW TAI LUE LETTER FINAL D;Lo;0;L;;;;;N;;;;; -19C7;NEW TAI LUE LETTER FINAL B;Lo;0;L;;;;;N;;;;; -19C8;NEW TAI LUE TONE MARK-1;Mc;0;L;;;;;N;;;;; -19C9;NEW TAI LUE TONE MARK-2;Mc;0;L;;;;;N;;;;; -19D0;NEW TAI LUE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -19D1;NEW TAI LUE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -19D2;NEW TAI LUE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -19D3;NEW TAI LUE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -19D4;NEW TAI LUE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -19D5;NEW TAI LUE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -19D6;NEW TAI LUE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -19D7;NEW TAI LUE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -19D8;NEW TAI LUE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -19D9;NEW TAI LUE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -19DE;NEW TAI LUE SIGN LAE;Po;0;ON;;;;;N;;;;; -19DF;NEW TAI LUE SIGN LAEV;Po;0;ON;;;;;N;;;;; -19E0;KHMER SYMBOL PATHAMASAT;So;0;ON;;;;;N;;;;; -19E1;KHMER SYMBOL MUOY KOET;So;0;ON;;;;;N;;;;; -19E2;KHMER SYMBOL PII KOET;So;0;ON;;;;;N;;;;; -19E3;KHMER SYMBOL BEI KOET;So;0;ON;;;;;N;;;;; -19E4;KHMER SYMBOL BUON KOET;So;0;ON;;;;;N;;;;; -19E5;KHMER SYMBOL PRAM KOET;So;0;ON;;;;;N;;;;; -19E6;KHMER SYMBOL PRAM-MUOY KOET;So;0;ON;;;;;N;;;;; -19E7;KHMER SYMBOL PRAM-PII KOET;So;0;ON;;;;;N;;;;; -19E8;KHMER SYMBOL PRAM-BEI KOET;So;0;ON;;;;;N;;;;; -19E9;KHMER SYMBOL PRAM-BUON KOET;So;0;ON;;;;;N;;;;; -19EA;KHMER SYMBOL DAP KOET;So;0;ON;;;;;N;;;;; -19EB;KHMER SYMBOL DAP-MUOY KOET;So;0;ON;;;;;N;;;;; -19EC;KHMER SYMBOL DAP-PII KOET;So;0;ON;;;;;N;;;;; -19ED;KHMER SYMBOL DAP-BEI KOET;So;0;ON;;;;;N;;;;; -19EE;KHMER SYMBOL DAP-BUON KOET;So;0;ON;;;;;N;;;;; -19EF;KHMER SYMBOL DAP-PRAM KOET;So;0;ON;;;;;N;;;;; -19F0;KHMER SYMBOL TUTEYASAT;So;0;ON;;;;;N;;;;; -19F1;KHMER SYMBOL MUOY ROC;So;0;ON;;;;;N;;;;; -19F2;KHMER SYMBOL PII ROC;So;0;ON;;;;;N;;;;; -19F3;KHMER SYMBOL BEI ROC;So;0;ON;;;;;N;;;;; -19F4;KHMER SYMBOL BUON ROC;So;0;ON;;;;;N;;;;; -19F5;KHMER SYMBOL PRAM ROC;So;0;ON;;;;;N;;;;; -19F6;KHMER SYMBOL PRAM-MUOY ROC;So;0;ON;;;;;N;;;;; -19F7;KHMER SYMBOL PRAM-PII ROC;So;0;ON;;;;;N;;;;; -19F8;KHMER SYMBOL PRAM-BEI ROC;So;0;ON;;;;;N;;;;; -19F9;KHMER SYMBOL PRAM-BUON ROC;So;0;ON;;;;;N;;;;; -19FA;KHMER SYMBOL DAP ROC;So;0;ON;;;;;N;;;;; -19FB;KHMER SYMBOL DAP-MUOY ROC;So;0;ON;;;;;N;;;;; -19FC;KHMER SYMBOL DAP-PII ROC;So;0;ON;;;;;N;;;;; -19FD;KHMER SYMBOL DAP-BEI ROC;So;0;ON;;;;;N;;;;; -19FE;KHMER SYMBOL DAP-BUON ROC;So;0;ON;;;;;N;;;;; -19FF;KHMER SYMBOL DAP-PRAM ROC;So;0;ON;;;;;N;;;;; -1A00;BUGINESE LETTER KA;Lo;0;L;;;;;N;;;;; -1A01;BUGINESE LETTER GA;Lo;0;L;;;;;N;;;;; -1A02;BUGINESE LETTER NGA;Lo;0;L;;;;;N;;;;; -1A03;BUGINESE LETTER NGKA;Lo;0;L;;;;;N;;;;; -1A04;BUGINESE LETTER PA;Lo;0;L;;;;;N;;;;; -1A05;BUGINESE LETTER BA;Lo;0;L;;;;;N;;;;; -1A06;BUGINESE LETTER MA;Lo;0;L;;;;;N;;;;; -1A07;BUGINESE LETTER MPA;Lo;0;L;;;;;N;;;;; -1A08;BUGINESE LETTER TA;Lo;0;L;;;;;N;;;;; -1A09;BUGINESE LETTER DA;Lo;0;L;;;;;N;;;;; -1A0A;BUGINESE LETTER NA;Lo;0;L;;;;;N;;;;; -1A0B;BUGINESE LETTER NRA;Lo;0;L;;;;;N;;;;; -1A0C;BUGINESE LETTER CA;Lo;0;L;;;;;N;;;;; -1A0D;BUGINESE LETTER JA;Lo;0;L;;;;;N;;;;; -1A0E;BUGINESE LETTER NYA;Lo;0;L;;;;;N;;;;; -1A0F;BUGINESE LETTER NYCA;Lo;0;L;;;;;N;;;;; -1A10;BUGINESE LETTER YA;Lo;0;L;;;;;N;;;;; -1A11;BUGINESE LETTER RA;Lo;0;L;;;;;N;;;;; -1A12;BUGINESE LETTER LA;Lo;0;L;;;;;N;;;;; -1A13;BUGINESE LETTER VA;Lo;0;L;;;;;N;;;;; -1A14;BUGINESE LETTER SA;Lo;0;L;;;;;N;;;;; -1A15;BUGINESE LETTER A;Lo;0;L;;;;;N;;;;; -1A16;BUGINESE LETTER HA;Lo;0;L;;;;;N;;;;; -1A17;BUGINESE VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;; -1A18;BUGINESE VOWEL SIGN U;Mn;220;NSM;;;;;N;;;;; -1A19;BUGINESE VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -1A1A;BUGINESE VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -1A1B;BUGINESE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; -1A1E;BUGINESE PALLAWA;Po;0;L;;;;;N;;;;; -1A1F;BUGINESE END OF SECTION;Po;0;L;;;;;N;;;;; -1B00;BALINESE SIGN ULU RICEM;Mn;0;NSM;;;;;N;;ardhacandra;;; -1B01;BALINESE SIGN ULU CANDRA;Mn;0;NSM;;;;;N;;candrabindu;;; -1B02;BALINESE SIGN CECEK;Mn;0;NSM;;;;;N;;anusvara;;; -1B03;BALINESE SIGN SURANG;Mn;0;NSM;;;;;N;;repha;;; -1B04;BALINESE SIGN BISAH;Mc;0;L;;;;;N;;visarga;;; -1B05;BALINESE LETTER AKARA;Lo;0;L;;;;;N;;a;;; -1B06;BALINESE LETTER AKARA TEDUNG;Lo;0;L;1B05 1B35;;;;N;;aa;;; -1B07;BALINESE LETTER IKARA;Lo;0;L;;;;;N;;i;;; -1B08;BALINESE LETTER IKARA TEDUNG;Lo;0;L;1B07 1B35;;;;N;;ii;;; -1B09;BALINESE LETTER UKARA;Lo;0;L;;;;;N;;u;;; -1B0A;BALINESE LETTER UKARA TEDUNG;Lo;0;L;1B09 1B35;;;;N;;uu;;; -1B0B;BALINESE LETTER RA REPA;Lo;0;L;;;;;N;;vocalic r;;; -1B0C;BALINESE LETTER RA REPA TEDUNG;Lo;0;L;1B0B 1B35;;;;N;;vocalic rr;;; -1B0D;BALINESE LETTER LA LENGA;Lo;0;L;;;;;N;;vocalic l;;; -1B0E;BALINESE LETTER LA LENGA TEDUNG;Lo;0;L;1B0D 1B35;;;;N;;vocalic ll;;; -1B0F;BALINESE LETTER EKARA;Lo;0;L;;;;;N;;e;;; -1B10;BALINESE LETTER AIKARA;Lo;0;L;;;;;N;;ai;;; -1B11;BALINESE LETTER OKARA;Lo;0;L;;;;;N;;o;;; -1B12;BALINESE LETTER OKARA TEDUNG;Lo;0;L;1B11 1B35;;;;N;;au;;; -1B13;BALINESE LETTER KA;Lo;0;L;;;;;N;;;;; -1B14;BALINESE LETTER KA MAHAPRANA;Lo;0;L;;;;;N;;kha;;; -1B15;BALINESE LETTER GA;Lo;0;L;;;;;N;;;;; -1B16;BALINESE LETTER GA GORA;Lo;0;L;;;;;N;;gha;;; -1B17;BALINESE LETTER NGA;Lo;0;L;;;;;N;;;;; -1B18;BALINESE LETTER CA;Lo;0;L;;;;;N;;;;; -1B19;BALINESE LETTER CA LACA;Lo;0;L;;;;;N;;cha;;; -1B1A;BALINESE LETTER JA;Lo;0;L;;;;;N;;;;; -1B1B;BALINESE LETTER JA JERA;Lo;0;L;;;;;N;;jha;;; -1B1C;BALINESE LETTER NYA;Lo;0;L;;;;;N;;;;; -1B1D;BALINESE LETTER TA LATIK;Lo;0;L;;;;;N;;tta;;; -1B1E;BALINESE LETTER TA MURDA MAHAPRANA;Lo;0;L;;;;;N;;ttha;;; -1B1F;BALINESE LETTER DA MURDA ALPAPRANA;Lo;0;L;;;;;N;;dda;;; -1B20;BALINESE LETTER DA MURDA MAHAPRANA;Lo;0;L;;;;;N;;ddha;;; -1B21;BALINESE LETTER NA RAMBAT;Lo;0;L;;;;;N;;nna;;; -1B22;BALINESE LETTER TA;Lo;0;L;;;;;N;;;;; -1B23;BALINESE LETTER TA TAWA;Lo;0;L;;;;;N;;tha;;; -1B24;BALINESE LETTER DA;Lo;0;L;;;;;N;;;;; -1B25;BALINESE LETTER DA MADU;Lo;0;L;;;;;N;;dha;;; -1B26;BALINESE LETTER NA;Lo;0;L;;;;;N;;;;; -1B27;BALINESE LETTER PA;Lo;0;L;;;;;N;;;;; -1B28;BALINESE LETTER PA KAPAL;Lo;0;L;;;;;N;;pha;;; -1B29;BALINESE LETTER BA;Lo;0;L;;;;;N;;;;; -1B2A;BALINESE LETTER BA KEMBANG;Lo;0;L;;;;;N;;bha;;; -1B2B;BALINESE LETTER MA;Lo;0;L;;;;;N;;;;; -1B2C;BALINESE LETTER YA;Lo;0;L;;;;;N;;;;; -1B2D;BALINESE LETTER RA;Lo;0;L;;;;;N;;;;; -1B2E;BALINESE LETTER LA;Lo;0;L;;;;;N;;;;; -1B2F;BALINESE LETTER WA;Lo;0;L;;;;;N;;;;; -1B30;BALINESE LETTER SA SAGA;Lo;0;L;;;;;N;;sha;;; -1B31;BALINESE LETTER SA SAPA;Lo;0;L;;;;;N;;ssa;;; -1B32;BALINESE LETTER SA;Lo;0;L;;;;;N;;;;; -1B33;BALINESE LETTER HA;Lo;0;L;;;;;N;;;;; -1B34;BALINESE SIGN REREKAN;Mn;7;NSM;;;;;N;;nukta;;; -1B35;BALINESE VOWEL SIGN TEDUNG;Mc;0;L;;;;;N;;aa;;; -1B36;BALINESE VOWEL SIGN ULU;Mn;0;NSM;;;;;N;;i;;; -1B37;BALINESE VOWEL SIGN ULU SARI;Mn;0;NSM;;;;;N;;ii;;; -1B38;BALINESE VOWEL SIGN SUKU;Mn;0;NSM;;;;;N;;u;;; -1B39;BALINESE VOWEL SIGN SUKU ILUT;Mn;0;NSM;;;;;N;;uu;;; -1B3A;BALINESE VOWEL SIGN RA REPA;Mn;0;NSM;;;;;N;;vocalic r;;; -1B3B;BALINESE VOWEL SIGN RA REPA TEDUNG;Mc;0;L;1B3A 1B35;;;;N;;vocalic rr;;; -1B3C;BALINESE VOWEL SIGN LA LENGA;Mn;0;NSM;;;;;N;;vocalic l;;; -1B3D;BALINESE VOWEL SIGN LA LENGA TEDUNG;Mc;0;L;1B3C 1B35;;;;N;;vocalic ll;;; -1B3E;BALINESE VOWEL SIGN TALING;Mc;0;L;;;;;N;;e;;; -1B3F;BALINESE VOWEL SIGN TALING REPA;Mc;0;L;;;;;N;;ai;;; -1B40;BALINESE VOWEL SIGN TALING TEDUNG;Mc;0;L;1B3E 1B35;;;;N;;o;;; -1B41;BALINESE VOWEL SIGN TALING REPA TEDUNG;Mc;0;L;1B3F 1B35;;;;N;;au;;; -1B42;BALINESE VOWEL SIGN PEPET;Mn;0;NSM;;;;;N;;ae;;; -1B43;BALINESE VOWEL SIGN PEPET TEDUNG;Mc;0;L;1B42 1B35;;;;N;;oe;;; -1B44;BALINESE ADEG ADEG;Mc;9;L;;;;;N;;virama;;; -1B45;BALINESE LETTER KAF SASAK;Lo;0;L;;;;;N;;;;; -1B46;BALINESE LETTER KHOT SASAK;Lo;0;L;;;;;N;;;;; -1B47;BALINESE LETTER TZIR SASAK;Lo;0;L;;;;;N;;;;; -1B48;BALINESE LETTER EF SASAK;Lo;0;L;;;;;N;;;;; -1B49;BALINESE LETTER VE SASAK;Lo;0;L;;;;;N;;;;; -1B4A;BALINESE LETTER ZAL SASAK;Lo;0;L;;;;;N;;;;; -1B4B;BALINESE LETTER ASYURA SASAK;Lo;0;L;;;;;N;;;;; -1B50;BALINESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1B51;BALINESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1B52;BALINESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1B53;BALINESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1B54;BALINESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1B55;BALINESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1B56;BALINESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1B57;BALINESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1B58;BALINESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1B59;BALINESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1B5A;BALINESE PANTI;Po;0;L;;;;;N;;section;;; -1B5B;BALINESE PAMADA;Po;0;L;;;;;N;;honorific section;;; -1B5C;BALINESE WINDU;Po;0;L;;;;;N;;punctuation ring;;; -1B5D;BALINESE CARIK PAMUNGKAH;Po;0;L;;;;;N;;colon;;; -1B5E;BALINESE CARIK SIKI;Po;0;L;;;;;N;;danda;;; -1B5F;BALINESE CARIK PAREREN;Po;0;L;;;;;N;;double danda;;; -1B60;BALINESE PAMENENG;Po;0;L;;;;;N;;line-breaking hyphen;;; -1B61;BALINESE MUSICAL SYMBOL DONG;So;0;L;;;;;N;;;;; -1B62;BALINESE MUSICAL SYMBOL DENG;So;0;L;;;;;N;;;;; -1B63;BALINESE MUSICAL SYMBOL DUNG;So;0;L;;;;;N;;;;; -1B64;BALINESE MUSICAL SYMBOL DANG;So;0;L;;;;;N;;;;; -1B65;BALINESE MUSICAL SYMBOL DANG SURANG;So;0;L;;;;;N;;;;; -1B66;BALINESE MUSICAL SYMBOL DING;So;0;L;;;;;N;;;;; -1B67;BALINESE MUSICAL SYMBOL DAENG;So;0;L;;;;;N;;;;; -1B68;BALINESE MUSICAL SYMBOL DEUNG;So;0;L;;;;;N;;;;; -1B69;BALINESE MUSICAL SYMBOL DAING;So;0;L;;;;;N;;;;; -1B6A;BALINESE MUSICAL SYMBOL DANG GEDE;So;0;L;;;;;N;;;;; -1B6B;BALINESE MUSICAL SYMBOL COMBINING TEGEH;Mn;230;NSM;;;;;N;;;;; -1B6C;BALINESE MUSICAL SYMBOL COMBINING ENDEP;Mn;220;NSM;;;;;N;;;;; -1B6D;BALINESE MUSICAL SYMBOL COMBINING KEMPUL;Mn;230;NSM;;;;;N;;;;; -1B6E;BALINESE MUSICAL SYMBOL COMBINING KEMPLI;Mn;230;NSM;;;;;N;;;;; -1B6F;BALINESE MUSICAL SYMBOL COMBINING JEGOGAN;Mn;230;NSM;;;;;N;;;;; -1B70;BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;; -1B71;BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;; -1B72;BALINESE MUSICAL SYMBOL COMBINING BENDE;Mn;230;NSM;;;;;N;;;;; -1B73;BALINESE MUSICAL SYMBOL COMBINING GONG;Mn;230;NSM;;;;;N;;;;; -1B74;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG;So;0;L;;;;;N;;;;; -1B75;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG;So;0;L;;;;;N;;;;; -1B76;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK;So;0;L;;;;;N;;;;; -1B77;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK;So;0;L;;;;;N;;;;; -1B78;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG;So;0;L;;;;;N;;;;; -1B79;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG;So;0;L;;;;;N;;;;; -1B7A;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK;So;0;L;;;;;N;;;;; -1B7B;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK;So;0;L;;;;;N;;;;; -1B7C;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;So;0;L;;;;;N;;;;; -1B80;SUNDANESE SIGN PANYECEK;Mn;0;NSM;;;;;N;;;;; -1B81;SUNDANESE SIGN PANGLAYAR;Mn;0;NSM;;;;;N;;;;; -1B82;SUNDANESE SIGN PANGWISAD;Mc;0;L;;;;;N;;;;; -1B83;SUNDANESE LETTER A;Lo;0;L;;;;;N;;;;; -1B84;SUNDANESE LETTER I;Lo;0;L;;;;;N;;;;; -1B85;SUNDANESE LETTER U;Lo;0;L;;;;;N;;;;; -1B86;SUNDANESE LETTER AE;Lo;0;L;;;;;N;;;;; -1B87;SUNDANESE LETTER O;Lo;0;L;;;;;N;;;;; -1B88;SUNDANESE LETTER E;Lo;0;L;;;;;N;;;;; -1B89;SUNDANESE LETTER EU;Lo;0;L;;;;;N;;;;; -1B8A;SUNDANESE LETTER KA;Lo;0;L;;;;;N;;;;; -1B8B;SUNDANESE LETTER QA;Lo;0;L;;;;;N;;;;; -1B8C;SUNDANESE LETTER GA;Lo;0;L;;;;;N;;;;; -1B8D;SUNDANESE LETTER NGA;Lo;0;L;;;;;N;;;;; -1B8E;SUNDANESE LETTER CA;Lo;0;L;;;;;N;;;;; -1B8F;SUNDANESE LETTER JA;Lo;0;L;;;;;N;;;;; -1B90;SUNDANESE LETTER ZA;Lo;0;L;;;;;N;;;;; -1B91;SUNDANESE LETTER NYA;Lo;0;L;;;;;N;;;;; -1B92;SUNDANESE LETTER TA;Lo;0;L;;;;;N;;;;; -1B93;SUNDANESE LETTER DA;Lo;0;L;;;;;N;;;;; -1B94;SUNDANESE LETTER NA;Lo;0;L;;;;;N;;;;; -1B95;SUNDANESE LETTER PA;Lo;0;L;;;;;N;;;;; -1B96;SUNDANESE LETTER FA;Lo;0;L;;;;;N;;;;; -1B97;SUNDANESE LETTER VA;Lo;0;L;;;;;N;;;;; -1B98;SUNDANESE LETTER BA;Lo;0;L;;;;;N;;;;; -1B99;SUNDANESE LETTER MA;Lo;0;L;;;;;N;;;;; -1B9A;SUNDANESE LETTER YA;Lo;0;L;;;;;N;;;;; -1B9B;SUNDANESE LETTER RA;Lo;0;L;;;;;N;;;;; -1B9C;SUNDANESE LETTER LA;Lo;0;L;;;;;N;;;;; -1B9D;SUNDANESE LETTER WA;Lo;0;L;;;;;N;;;;; -1B9E;SUNDANESE LETTER SA;Lo;0;L;;;;;N;;;;; -1B9F;SUNDANESE LETTER XA;Lo;0;L;;;;;N;;;;; -1BA0;SUNDANESE LETTER HA;Lo;0;L;;;;;N;;;;; -1BA1;SUNDANESE CONSONANT SIGN PAMINGKAL;Mc;0;L;;;;;N;;;;; -1BA2;SUNDANESE CONSONANT SIGN PANYAKRA;Mn;0;NSM;;;;;N;;;;; -1BA3;SUNDANESE CONSONANT SIGN PANYIKU;Mn;0;NSM;;;;;N;;;;; -1BA4;SUNDANESE VOWEL SIGN PANGHULU;Mn;0;NSM;;;;;N;;;;; -1BA5;SUNDANESE VOWEL SIGN PANYUKU;Mn;0;NSM;;;;;N;;;;; -1BA6;SUNDANESE VOWEL SIGN PANAELAENG;Mc;0;L;;;;;N;;;;; -1BA7;SUNDANESE VOWEL SIGN PANOLONG;Mc;0;L;;;;;N;;;;; -1BA8;SUNDANESE VOWEL SIGN PAMEPET;Mn;0;NSM;;;;;N;;;;; -1BA9;SUNDANESE VOWEL SIGN PANEULEUNG;Mn;0;NSM;;;;;N;;;;; -1BAA;SUNDANESE SIGN PAMAAEH;Mc;9;L;;;;;N;;;;; -1BAE;SUNDANESE LETTER KHA;Lo;0;L;;;;;N;;;;; -1BAF;SUNDANESE LETTER SYA;Lo;0;L;;;;;N;;;;; -1BB0;SUNDANESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1BB1;SUNDANESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1BB2;SUNDANESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1BB3;SUNDANESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1BB4;SUNDANESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1BB5;SUNDANESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1BB6;SUNDANESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1BB7;SUNDANESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1BB8;SUNDANESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1BB9;SUNDANESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1C00;LEPCHA LETTER KA;Lo;0;L;;;;;N;;;;; -1C01;LEPCHA LETTER KLA;Lo;0;L;;;;;N;;;;; -1C02;LEPCHA LETTER KHA;Lo;0;L;;;;;N;;;;; -1C03;LEPCHA LETTER GA;Lo;0;L;;;;;N;;;;; -1C04;LEPCHA LETTER GLA;Lo;0;L;;;;;N;;;;; -1C05;LEPCHA LETTER NGA;Lo;0;L;;;;;N;;;;; -1C06;LEPCHA LETTER CA;Lo;0;L;;;;;N;;;;; -1C07;LEPCHA LETTER CHA;Lo;0;L;;;;;N;;;;; -1C08;LEPCHA LETTER JA;Lo;0;L;;;;;N;;;;; -1C09;LEPCHA LETTER NYA;Lo;0;L;;;;;N;;;;; -1C0A;LEPCHA LETTER TA;Lo;0;L;;;;;N;;;;; -1C0B;LEPCHA LETTER THA;Lo;0;L;;;;;N;;;;; -1C0C;LEPCHA LETTER DA;Lo;0;L;;;;;N;;;;; -1C0D;LEPCHA LETTER NA;Lo;0;L;;;;;N;;;;; -1C0E;LEPCHA LETTER PA;Lo;0;L;;;;;N;;;;; -1C0F;LEPCHA LETTER PLA;Lo;0;L;;;;;N;;;;; -1C10;LEPCHA LETTER PHA;Lo;0;L;;;;;N;;;;; -1C11;LEPCHA LETTER FA;Lo;0;L;;;;;N;;;;; -1C12;LEPCHA LETTER FLA;Lo;0;L;;;;;N;;;;; -1C13;LEPCHA LETTER BA;Lo;0;L;;;;;N;;;;; -1C14;LEPCHA LETTER BLA;Lo;0;L;;;;;N;;;;; -1C15;LEPCHA LETTER MA;Lo;0;L;;;;;N;;;;; -1C16;LEPCHA LETTER MLA;Lo;0;L;;;;;N;;;;; -1C17;LEPCHA LETTER TSA;Lo;0;L;;;;;N;;;;; -1C18;LEPCHA LETTER TSHA;Lo;0;L;;;;;N;;;;; -1C19;LEPCHA LETTER DZA;Lo;0;L;;;;;N;;;;; -1C1A;LEPCHA LETTER YA;Lo;0;L;;;;;N;;;;; -1C1B;LEPCHA LETTER RA;Lo;0;L;;;;;N;;;;; -1C1C;LEPCHA LETTER LA;Lo;0;L;;;;;N;;;;; -1C1D;LEPCHA LETTER HA;Lo;0;L;;;;;N;;;;; -1C1E;LEPCHA LETTER HLA;Lo;0;L;;;;;N;;;;; -1C1F;LEPCHA LETTER VA;Lo;0;L;;;;;N;;;;; -1C20;LEPCHA LETTER SA;Lo;0;L;;;;;N;;;;; -1C21;LEPCHA LETTER SHA;Lo;0;L;;;;;N;;;;; -1C22;LEPCHA LETTER WA;Lo;0;L;;;;;N;;;;; -1C23;LEPCHA LETTER A;Lo;0;L;;;;;N;;;;; -1C24;LEPCHA SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;; -1C25;LEPCHA SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;; -1C26;LEPCHA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -1C27;LEPCHA VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -1C28;LEPCHA VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -1C29;LEPCHA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; -1C2A;LEPCHA VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -1C2B;LEPCHA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -1C2C;LEPCHA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -1C2D;LEPCHA CONSONANT SIGN K;Mn;0;NSM;;;;;N;;;;; -1C2E;LEPCHA CONSONANT SIGN M;Mn;0;NSM;;;;;N;;;;; -1C2F;LEPCHA CONSONANT SIGN L;Mn;0;NSM;;;;;N;;;;; -1C30;LEPCHA CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;; -1C31;LEPCHA CONSONANT SIGN P;Mn;0;NSM;;;;;N;;;;; -1C32;LEPCHA CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;; -1C33;LEPCHA CONSONANT SIGN T;Mn;0;NSM;;;;;N;;;;; -1C34;LEPCHA CONSONANT SIGN NYIN-DO;Mc;0;L;;;;;N;;;;; -1C35;LEPCHA CONSONANT SIGN KANG;Mc;0;L;;;;;N;;;;; -1C36;LEPCHA SIGN RAN;Mn;0;NSM;;;;;N;;;;; -1C37;LEPCHA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -1C3B;LEPCHA PUNCTUATION TA-ROL;Po;0;L;;;;;N;;;;; -1C3C;LEPCHA PUNCTUATION NYET THYOOM TA-ROL;Po;0;L;;;;;N;;;;; -1C3D;LEPCHA PUNCTUATION CER-WA;Po;0;L;;;;;N;;;;; -1C3E;LEPCHA PUNCTUATION TSHOOK CER-WA;Po;0;L;;;;;N;;;;; -1C3F;LEPCHA PUNCTUATION TSHOOK;Po;0;L;;;;;N;;;;; -1C40;LEPCHA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1C41;LEPCHA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1C42;LEPCHA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1C43;LEPCHA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1C44;LEPCHA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1C45;LEPCHA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1C46;LEPCHA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1C47;LEPCHA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1C48;LEPCHA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1C49;LEPCHA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1C4D;LEPCHA LETTER TTA;Lo;0;L;;;;;N;;;;; -1C4E;LEPCHA LETTER TTHA;Lo;0;L;;;;;N;;;;; -1C4F;LEPCHA LETTER DDA;Lo;0;L;;;;;N;;;;; -1C50;OL CHIKI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1C51;OL CHIKI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1C52;OL CHIKI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1C53;OL CHIKI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1C54;OL CHIKI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1C55;OL CHIKI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1C56;OL CHIKI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1C57;OL CHIKI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1C58;OL CHIKI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1C59;OL CHIKI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1C5A;OL CHIKI LETTER LA;Lo;0;L;;;;;N;;;;; -1C5B;OL CHIKI LETTER AT;Lo;0;L;;;;;N;;;;; -1C5C;OL CHIKI LETTER AG;Lo;0;L;;;;;N;;;;; -1C5D;OL CHIKI LETTER ANG;Lo;0;L;;;;;N;;;;; -1C5E;OL CHIKI LETTER AL;Lo;0;L;;;;;N;;;;; -1C5F;OL CHIKI LETTER LAA;Lo;0;L;;;;;N;;;;; -1C60;OL CHIKI LETTER AAK;Lo;0;L;;;;;N;;;;; -1C61;OL CHIKI LETTER AAJ;Lo;0;L;;;;;N;;;;; -1C62;OL CHIKI LETTER AAM;Lo;0;L;;;;;N;;;;; -1C63;OL CHIKI LETTER AAW;Lo;0;L;;;;;N;;;;; -1C64;OL CHIKI LETTER LI;Lo;0;L;;;;;N;;;;; -1C65;OL CHIKI LETTER IS;Lo;0;L;;;;;N;;;;; -1C66;OL CHIKI LETTER IH;Lo;0;L;;;;;N;;;;; -1C67;OL CHIKI LETTER INY;Lo;0;L;;;;;N;;;;; -1C68;OL CHIKI LETTER IR;Lo;0;L;;;;;N;;;;; -1C69;OL CHIKI LETTER LU;Lo;0;L;;;;;N;;;;; -1C6A;OL CHIKI LETTER UC;Lo;0;L;;;;;N;;;;; -1C6B;OL CHIKI LETTER UD;Lo;0;L;;;;;N;;;;; -1C6C;OL CHIKI LETTER UNN;Lo;0;L;;;;;N;;;;; -1C6D;OL CHIKI LETTER UY;Lo;0;L;;;;;N;;;;; -1C6E;OL CHIKI LETTER LE;Lo;0;L;;;;;N;;;;; -1C6F;OL CHIKI LETTER EP;Lo;0;L;;;;;N;;;;; -1C70;OL CHIKI LETTER EDD;Lo;0;L;;;;;N;;;;; -1C71;OL CHIKI LETTER EN;Lo;0;L;;;;;N;;;;; -1C72;OL CHIKI LETTER ERR;Lo;0;L;;;;;N;;;;; -1C73;OL CHIKI LETTER LO;Lo;0;L;;;;;N;;;;; -1C74;OL CHIKI LETTER OTT;Lo;0;L;;;;;N;;;;; -1C75;OL CHIKI LETTER OB;Lo;0;L;;;;;N;;;;; -1C76;OL CHIKI LETTER OV;Lo;0;L;;;;;N;;;;; -1C77;OL CHIKI LETTER OH;Lo;0;L;;;;;N;;;;; -1C78;OL CHIKI MU TTUDDAG;Lm;0;L;;;;;N;;;;; -1C79;OL CHIKI GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;; -1C7A;OL CHIKI MU-GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;; -1C7B;OL CHIKI RELAA;Lm;0;L;;;;;N;;;;; -1C7C;OL CHIKI PHAARKAA;Lm;0;L;;;;;N;;;;; -1C7D;OL CHIKI AHAD;Lm;0;L;;;;;N;;;;; -1C7E;OL CHIKI PUNCTUATION MUCAAD;Po;0;L;;;;;N;;;;; -1C7F;OL CHIKI PUNCTUATION DOUBLE MUCAAD;Po;0;L;;;;;N;;;;; -1D00;LATIN LETTER SMALL CAPITAL A;Ll;0;L;;;;;N;;;;; -1D01;LATIN LETTER SMALL CAPITAL AE;Ll;0;L;;;;;N;;;;; -1D02;LATIN SMALL LETTER TURNED AE;Ll;0;L;;;;;N;;;;; -1D03;LATIN LETTER SMALL CAPITAL BARRED B;Ll;0;L;;;;;N;;;;; -1D04;LATIN LETTER SMALL CAPITAL C;Ll;0;L;;;;;N;;;;; -1D05;LATIN LETTER SMALL CAPITAL D;Ll;0;L;;;;;N;;;;; -1D06;LATIN LETTER SMALL CAPITAL ETH;Ll;0;L;;;;;N;;;;; -1D07;LATIN LETTER SMALL CAPITAL E;Ll;0;L;;;;;N;;;;; -1D08;LATIN SMALL LETTER TURNED OPEN E;Ll;0;L;;;;;N;;;;; -1D09;LATIN SMALL LETTER TURNED I;Ll;0;L;;;;;N;;;;; -1D0A;LATIN LETTER SMALL CAPITAL J;Ll;0;L;;;;;N;;;;; -1D0B;LATIN LETTER SMALL CAPITAL K;Ll;0;L;;;;;N;;;;; -1D0C;LATIN LETTER SMALL CAPITAL L WITH STROKE;Ll;0;L;;;;;N;;;;; -1D0D;LATIN LETTER SMALL CAPITAL M;Ll;0;L;;;;;N;;;;; -1D0E;LATIN LETTER SMALL CAPITAL REVERSED N;Ll;0;L;;;;;N;;;;; -1D0F;LATIN LETTER SMALL CAPITAL O;Ll;0;L;;;;;N;;;;; -1D10;LATIN LETTER SMALL CAPITAL OPEN O;Ll;0;L;;;;;N;;;;; -1D11;LATIN SMALL LETTER SIDEWAYS O;Ll;0;L;;;;;N;;;;; -1D12;LATIN SMALL LETTER SIDEWAYS OPEN O;Ll;0;L;;;;;N;;;;; -1D13;LATIN SMALL LETTER SIDEWAYS O WITH STROKE;Ll;0;L;;;;;N;;;;; -1D14;LATIN SMALL LETTER TURNED OE;Ll;0;L;;;;;N;;;;; -1D15;LATIN LETTER SMALL CAPITAL OU;Ll;0;L;;;;;N;;;;; -1D16;LATIN SMALL LETTER TOP HALF O;Ll;0;L;;;;;N;;;;; -1D17;LATIN SMALL LETTER BOTTOM HALF O;Ll;0;L;;;;;N;;;;; -1D18;LATIN LETTER SMALL CAPITAL P;Ll;0;L;;;;;N;;;;; -1D19;LATIN LETTER SMALL CAPITAL REVERSED R;Ll;0;L;;;;;N;;;;; -1D1A;LATIN LETTER SMALL CAPITAL TURNED R;Ll;0;L;;;;;N;;;;; -1D1B;LATIN LETTER SMALL CAPITAL T;Ll;0;L;;;;;N;;;;; -1D1C;LATIN LETTER SMALL CAPITAL U;Ll;0;L;;;;;N;;;;; -1D1D;LATIN SMALL LETTER SIDEWAYS U;Ll;0;L;;;;;N;;;;; -1D1E;LATIN SMALL LETTER SIDEWAYS DIAERESIZED U;Ll;0;L;;;;;N;;;;; -1D1F;LATIN SMALL LETTER SIDEWAYS TURNED M;Ll;0;L;;;;;N;;;;; -1D20;LATIN LETTER SMALL CAPITAL V;Ll;0;L;;;;;N;;;;; -1D21;LATIN LETTER SMALL CAPITAL W;Ll;0;L;;;;;N;;;;; -1D22;LATIN LETTER SMALL CAPITAL Z;Ll;0;L;;;;;N;;;;; -1D23;LATIN LETTER SMALL CAPITAL EZH;Ll;0;L;;;;;N;;;;; -1D24;LATIN LETTER VOICED LARYNGEAL SPIRANT;Ll;0;L;;;;;N;;;;; -1D25;LATIN LETTER AIN;Ll;0;L;;;;;N;;;;; -1D26;GREEK LETTER SMALL CAPITAL GAMMA;Ll;0;L;;;;;N;;;;; -1D27;GREEK LETTER SMALL CAPITAL LAMDA;Ll;0;L;;;;;N;;;;; -1D28;GREEK LETTER SMALL CAPITAL PI;Ll;0;L;;;;;N;;;;; -1D29;GREEK LETTER SMALL CAPITAL RHO;Ll;0;L;;;;;N;;;;; -1D2A;GREEK LETTER SMALL CAPITAL PSI;Ll;0;L;;;;;N;;;;; -1D2B;CYRILLIC LETTER SMALL CAPITAL EL;Ll;0;L;;;;;N;;;;; -1D2C;MODIFIER LETTER CAPITAL A;Lm;0;L; 0041;;;;N;;;;; -1D2D;MODIFIER LETTER CAPITAL AE;Lm;0;L; 00C6;;;;N;;;;; -1D2E;MODIFIER LETTER CAPITAL B;Lm;0;L; 0042;;;;N;;;;; -1D2F;MODIFIER LETTER CAPITAL BARRED B;Lm;0;L;;;;;N;;;;; -1D30;MODIFIER LETTER CAPITAL D;Lm;0;L; 0044;;;;N;;;;; -1D31;MODIFIER LETTER CAPITAL E;Lm;0;L; 0045;;;;N;;;;; -1D32;MODIFIER LETTER CAPITAL REVERSED E;Lm;0;L; 018E;;;;N;;;;; -1D33;MODIFIER LETTER CAPITAL G;Lm;0;L; 0047;;;;N;;;;; -1D34;MODIFIER LETTER CAPITAL H;Lm;0;L; 0048;;;;N;;;;; -1D35;MODIFIER LETTER CAPITAL I;Lm;0;L; 0049;;;;N;;;;; -1D36;MODIFIER LETTER CAPITAL J;Lm;0;L; 004A;;;;N;;;;; -1D37;MODIFIER LETTER CAPITAL K;Lm;0;L; 004B;;;;N;;;;; -1D38;MODIFIER LETTER CAPITAL L;Lm;0;L; 004C;;;;N;;;;; -1D39;MODIFIER LETTER CAPITAL M;Lm;0;L; 004D;;;;N;;;;; -1D3A;MODIFIER LETTER CAPITAL N;Lm;0;L; 004E;;;;N;;;;; -1D3B;MODIFIER LETTER CAPITAL REVERSED N;Lm;0;L;;;;;N;;;;; -1D3C;MODIFIER LETTER CAPITAL O;Lm;0;L; 004F;;;;N;;;;; -1D3D;MODIFIER LETTER CAPITAL OU;Lm;0;L; 0222;;;;N;;;;; -1D3E;MODIFIER LETTER CAPITAL P;Lm;0;L; 0050;;;;N;;;;; -1D3F;MODIFIER LETTER CAPITAL R;Lm;0;L; 0052;;;;N;;;;; -1D40;MODIFIER LETTER CAPITAL T;Lm;0;L; 0054;;;;N;;;;; -1D41;MODIFIER LETTER CAPITAL U;Lm;0;L; 0055;;;;N;;;;; -1D42;MODIFIER LETTER CAPITAL W;Lm;0;L; 0057;;;;N;;;;; -1D43;MODIFIER LETTER SMALL A;Lm;0;L; 0061;;;;N;;;;; -1D44;MODIFIER LETTER SMALL TURNED A;Lm;0;L; 0250;;;;N;;;;; -1D45;MODIFIER LETTER SMALL ALPHA;Lm;0;L; 0251;;;;N;;;;; -1D46;MODIFIER LETTER SMALL TURNED AE;Lm;0;L; 1D02;;;;N;;;;; -1D47;MODIFIER LETTER SMALL B;Lm;0;L; 0062;;;;N;;;;; -1D48;MODIFIER LETTER SMALL D;Lm;0;L; 0064;;;;N;;;;; -1D49;MODIFIER LETTER SMALL E;Lm;0;L; 0065;;;;N;;;;; -1D4A;MODIFIER LETTER SMALL SCHWA;Lm;0;L; 0259;;;;N;;;;; -1D4B;MODIFIER LETTER SMALL OPEN E;Lm;0;L; 025B;;;;N;;;;; -1D4C;MODIFIER LETTER SMALL TURNED OPEN E;Lm;0;L; 025C;;;;N;;;;; -1D4D;MODIFIER LETTER SMALL G;Lm;0;L; 0067;;;;N;;;;; -1D4E;MODIFIER LETTER SMALL TURNED I;Lm;0;L;;;;;N;;;;; -1D4F;MODIFIER LETTER SMALL K;Lm;0;L; 006B;;;;N;;;;; -1D50;MODIFIER LETTER SMALL M;Lm;0;L; 006D;;;;N;;;;; -1D51;MODIFIER LETTER SMALL ENG;Lm;0;L; 014B;;;;N;;;;; -1D52;MODIFIER LETTER SMALL O;Lm;0;L; 006F;;;;N;;;;; -1D53;MODIFIER LETTER SMALL OPEN O;Lm;0;L; 0254;;;;N;;;;; -1D54;MODIFIER LETTER SMALL TOP HALF O;Lm;0;L; 1D16;;;;N;;;;; -1D55;MODIFIER LETTER SMALL BOTTOM HALF O;Lm;0;L; 1D17;;;;N;;;;; -1D56;MODIFIER LETTER SMALL P;Lm;0;L; 0070;;;;N;;;;; -1D57;MODIFIER LETTER SMALL T;Lm;0;L; 0074;;;;N;;;;; -1D58;MODIFIER LETTER SMALL U;Lm;0;L; 0075;;;;N;;;;; -1D59;MODIFIER LETTER SMALL SIDEWAYS U;Lm;0;L; 1D1D;;;;N;;;;; -1D5A;MODIFIER LETTER SMALL TURNED M;Lm;0;L; 026F;;;;N;;;;; -1D5B;MODIFIER LETTER SMALL V;Lm;0;L; 0076;;;;N;;;;; -1D5C;MODIFIER LETTER SMALL AIN;Lm;0;L; 1D25;;;;N;;;;; -1D5D;MODIFIER LETTER SMALL BETA;Lm;0;L; 03B2;;;;N;;;;; -1D5E;MODIFIER LETTER SMALL GREEK GAMMA;Lm;0;L; 03B3;;;;N;;;;; -1D5F;MODIFIER LETTER SMALL DELTA;Lm;0;L; 03B4;;;;N;;;;; -1D60;MODIFIER LETTER SMALL GREEK PHI;Lm;0;L; 03C6;;;;N;;;;; -1D61;MODIFIER LETTER SMALL CHI;Lm;0;L; 03C7;;;;N;;;;; -1D62;LATIN SUBSCRIPT SMALL LETTER I;Ll;0;L; 0069;;;;N;;;;; -1D63;LATIN SUBSCRIPT SMALL LETTER R;Ll;0;L; 0072;;;;N;;;;; -1D64;LATIN SUBSCRIPT SMALL LETTER U;Ll;0;L; 0075;;;;N;;;;; -1D65;LATIN SUBSCRIPT SMALL LETTER V;Ll;0;L; 0076;;;;N;;;;; -1D66;GREEK SUBSCRIPT SMALL LETTER BETA;Ll;0;L; 03B2;;;;N;;;;; -1D67;GREEK SUBSCRIPT SMALL LETTER GAMMA;Ll;0;L; 03B3;;;;N;;;;; -1D68;GREEK SUBSCRIPT SMALL LETTER RHO;Ll;0;L; 03C1;;;;N;;;;; -1D69;GREEK SUBSCRIPT SMALL LETTER PHI;Ll;0;L; 03C6;;;;N;;;;; -1D6A;GREEK SUBSCRIPT SMALL LETTER CHI;Ll;0;L; 03C7;;;;N;;;;; -1D6B;LATIN SMALL LETTER UE;Ll;0;L;;;;;N;;;;; -1D6C;LATIN SMALL LETTER B WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D6D;LATIN SMALL LETTER D WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D6E;LATIN SMALL LETTER F WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D6F;LATIN SMALL LETTER M WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D70;LATIN SMALL LETTER N WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D71;LATIN SMALL LETTER P WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D72;LATIN SMALL LETTER R WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D73;LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D74;LATIN SMALL LETTER S WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D75;LATIN SMALL LETTER T WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D76;LATIN SMALL LETTER Z WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D77;LATIN SMALL LETTER TURNED G;Ll;0;L;;;;;N;;;;; -1D78;MODIFIER LETTER CYRILLIC EN;Lm;0;L; 043D;;;;N;;;;; -1D79;LATIN SMALL LETTER INSULAR G;Ll;0;L;;;;;N;;;A77D;;A77D -1D7A;LATIN SMALL LETTER TH WITH STRIKETHROUGH;Ll;0;L;;;;;N;;;;; -1D7B;LATIN SMALL CAPITAL LETTER I WITH STROKE;Ll;0;L;;;;;N;;;;; -1D7C;LATIN SMALL LETTER IOTA WITH STROKE;Ll;0;L;;;;;N;;;;; -1D7D;LATIN SMALL LETTER P WITH STROKE;Ll;0;L;;;;;N;;;2C63;;2C63 -1D7E;LATIN SMALL CAPITAL LETTER U WITH STROKE;Ll;0;L;;;;;N;;;;; -1D7F;LATIN SMALL LETTER UPSILON WITH STROKE;Ll;0;L;;;;;N;;;;; -1D80;LATIN SMALL LETTER B WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D81;LATIN SMALL LETTER D WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D82;LATIN SMALL LETTER F WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D83;LATIN SMALL LETTER G WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D84;LATIN SMALL LETTER K WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D85;LATIN SMALL LETTER L WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D86;LATIN SMALL LETTER M WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D87;LATIN SMALL LETTER N WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D88;LATIN SMALL LETTER P WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D89;LATIN SMALL LETTER R WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8A;LATIN SMALL LETTER S WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8B;LATIN SMALL LETTER ESH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8C;LATIN SMALL LETTER V WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8D;LATIN SMALL LETTER X WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8E;LATIN SMALL LETTER Z WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8F;LATIN SMALL LETTER A WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D90;LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D91;LATIN SMALL LETTER D WITH HOOK AND TAIL;Ll;0;L;;;;;N;;;;; -1D92;LATIN SMALL LETTER E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D93;LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D94;LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D95;LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D96;LATIN SMALL LETTER I WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D97;LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D98;LATIN SMALL LETTER ESH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D99;LATIN SMALL LETTER U WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D9A;LATIN SMALL LETTER EZH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D9B;MODIFIER LETTER SMALL TURNED ALPHA;Lm;0;L; 0252;;;;N;;;;; -1D9C;MODIFIER LETTER SMALL C;Lm;0;L; 0063;;;;N;;;;; -1D9D;MODIFIER LETTER SMALL C WITH CURL;Lm;0;L; 0255;;;;N;;;;; -1D9E;MODIFIER LETTER SMALL ETH;Lm;0;L; 00F0;;;;N;;;;; -1D9F;MODIFIER LETTER SMALL REVERSED OPEN E;Lm;0;L; 025C;;;;N;;;;; -1DA0;MODIFIER LETTER SMALL F;Lm;0;L; 0066;;;;N;;;;; -1DA1;MODIFIER LETTER SMALL DOTLESS J WITH STROKE;Lm;0;L; 025F;;;;N;;;;; -1DA2;MODIFIER LETTER SMALL SCRIPT G;Lm;0;L; 0261;;;;N;;;;; -1DA3;MODIFIER LETTER SMALL TURNED H;Lm;0;L; 0265;;;;N;;;;; -1DA4;MODIFIER LETTER SMALL I WITH STROKE;Lm;0;L; 0268;;;;N;;;;; -1DA5;MODIFIER LETTER SMALL IOTA;Lm;0;L; 0269;;;;N;;;;; -1DA6;MODIFIER LETTER SMALL CAPITAL I;Lm;0;L; 026A;;;;N;;;;; -1DA7;MODIFIER LETTER SMALL CAPITAL I WITH STROKE;Lm;0;L; 1D7B;;;;N;;;;; -1DA8;MODIFIER LETTER SMALL J WITH CROSSED-TAIL;Lm;0;L; 029D;;;;N;;;;; -1DA9;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK;Lm;0;L; 026D;;;;N;;;;; -1DAA;MODIFIER LETTER SMALL L WITH PALATAL HOOK;Lm;0;L; 1D85;;;;N;;;;; -1DAB;MODIFIER LETTER SMALL CAPITAL L;Lm;0;L; 029F;;;;N;;;;; -1DAC;MODIFIER LETTER SMALL M WITH HOOK;Lm;0;L; 0271;;;;N;;;;; -1DAD;MODIFIER LETTER SMALL TURNED M WITH LONG LEG;Lm;0;L; 0270;;;;N;;;;; -1DAE;MODIFIER LETTER SMALL N WITH LEFT HOOK;Lm;0;L; 0272;;;;N;;;;; -1DAF;MODIFIER LETTER SMALL N WITH RETROFLEX HOOK;Lm;0;L; 0273;;;;N;;;;; -1DB0;MODIFIER LETTER SMALL CAPITAL N;Lm;0;L; 0274;;;;N;;;;; -1DB1;MODIFIER LETTER SMALL BARRED O;Lm;0;L; 0275;;;;N;;;;; -1DB2;MODIFIER LETTER SMALL PHI;Lm;0;L; 0278;;;;N;;;;; -1DB3;MODIFIER LETTER SMALL S WITH HOOK;Lm;0;L; 0282;;;;N;;;;; -1DB4;MODIFIER LETTER SMALL ESH;Lm;0;L; 0283;;;;N;;;;; -1DB5;MODIFIER LETTER SMALL T WITH PALATAL HOOK;Lm;0;L; 01AB;;;;N;;;;; -1DB6;MODIFIER LETTER SMALL U BAR;Lm;0;L; 0289;;;;N;;;;; -1DB7;MODIFIER LETTER SMALL UPSILON;Lm;0;L; 028A;;;;N;;;;; -1DB8;MODIFIER LETTER SMALL CAPITAL U;Lm;0;L; 1D1C;;;;N;;;;; -1DB9;MODIFIER LETTER SMALL V WITH HOOK;Lm;0;L; 028B;;;;N;;;;; -1DBA;MODIFIER LETTER SMALL TURNED V;Lm;0;L; 028C;;;;N;;;;; -1DBB;MODIFIER LETTER SMALL Z;Lm;0;L; 007A;;;;N;;;;; -1DBC;MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK;Lm;0;L; 0290;;;;N;;;;; -1DBD;MODIFIER LETTER SMALL Z WITH CURL;Lm;0;L; 0291;;;;N;;;;; -1DBE;MODIFIER LETTER SMALL EZH;Lm;0;L; 0292;;;;N;;;;; -1DBF;MODIFIER LETTER SMALL THETA;Lm;0;L; 03B8;;;;N;;;;; -1DC0;COMBINING DOTTED GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;; -1DC1;COMBINING DOTTED ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;; -1DC2;COMBINING SNAKE BELOW;Mn;220;NSM;;;;;N;;;;; -1DC3;COMBINING SUSPENSION MARK;Mn;230;NSM;;;;;N;;;;; -1DC4;COMBINING MACRON-ACUTE;Mn;230;NSM;;;;;N;;;;; -1DC5;COMBINING GRAVE-MACRON;Mn;230;NSM;;;;;N;;;;; -1DC6;COMBINING MACRON-GRAVE;Mn;230;NSM;;;;;N;;;;; -1DC7;COMBINING ACUTE-MACRON;Mn;230;NSM;;;;;N;;;;; -1DC8;COMBINING GRAVE-ACUTE-GRAVE;Mn;230;NSM;;;;;N;;;;; -1DC9;COMBINING ACUTE-GRAVE-ACUTE;Mn;230;NSM;;;;;N;;;;; -1DCA;COMBINING LATIN SMALL LETTER R BELOW;Mn;220;NSM;;;;;N;;;;; -1DCB;COMBINING BREVE-MACRON;Mn;230;NSM;;;;;N;;;;; -1DCC;COMBINING MACRON-BREVE;Mn;230;NSM;;;;;N;;;;; -1DCD;COMBINING DOUBLE CIRCUMFLEX ABOVE;Mn;234;NSM;;;;;N;;;;; -1DCE;COMBINING OGONEK ABOVE;Mn;214;NSM;;;;;N;;;;; -1DCF;COMBINING ZIGZAG BELOW;Mn;220;NSM;;;;;N;;;;; -1DD0;COMBINING IS BELOW;Mn;202;NSM;;;;;N;;;;; -1DD1;COMBINING UR ABOVE;Mn;230;NSM;;;;;N;;;;; -1DD2;COMBINING US ABOVE;Mn;230;NSM;;;;;N;;;;; -1DD3;COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE;Mn;230;NSM;;;;;N;;;;; -1DD4;COMBINING LATIN SMALL LETTER AE;Mn;230;NSM;;;;;N;;;;; -1DD5;COMBINING LATIN SMALL LETTER AO;Mn;230;NSM;;;;;N;;;;; -1DD6;COMBINING LATIN SMALL LETTER AV;Mn;230;NSM;;;;;N;;;;; -1DD7;COMBINING LATIN SMALL LETTER C CEDILLA;Mn;230;NSM;;;;;N;;;;; -1DD8;COMBINING LATIN SMALL LETTER INSULAR D;Mn;230;NSM;;;;;N;;;;; -1DD9;COMBINING LATIN SMALL LETTER ETH;Mn;230;NSM;;;;;N;;;;; -1DDA;COMBINING LATIN SMALL LETTER G;Mn;230;NSM;;;;;N;;;;; -1DDB;COMBINING LATIN LETTER SMALL CAPITAL G;Mn;230;NSM;;;;;N;;;;; -1DDC;COMBINING LATIN SMALL LETTER K;Mn;230;NSM;;;;;N;;;;; -1DDD;COMBINING LATIN SMALL LETTER L;Mn;230;NSM;;;;;N;;;;; -1DDE;COMBINING LATIN LETTER SMALL CAPITAL L;Mn;230;NSM;;;;;N;;;;; -1DDF;COMBINING LATIN LETTER SMALL CAPITAL M;Mn;230;NSM;;;;;N;;;;; -1DE0;COMBINING LATIN SMALL LETTER N;Mn;230;NSM;;;;;N;;;;; -1DE1;COMBINING LATIN LETTER SMALL CAPITAL N;Mn;230;NSM;;;;;N;;;;; -1DE2;COMBINING LATIN LETTER SMALL CAPITAL R;Mn;230;NSM;;;;;N;;;;; -1DE3;COMBINING LATIN SMALL LETTER R ROTUNDA;Mn;230;NSM;;;;;N;;;;; -1DE4;COMBINING LATIN SMALL LETTER S;Mn;230;NSM;;;;;N;;;;; -1DE5;COMBINING LATIN SMALL LETTER LONG S;Mn;230;NSM;;;;;N;;;;; -1DE6;COMBINING LATIN SMALL LETTER Z;Mn;230;NSM;;;;;N;;;;; -1DFE;COMBINING LEFT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;; -1DFF;COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; -1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01; -1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00 -1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03; -1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02 -1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05; -1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04 -1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07; -1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06 -1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09; -1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08 -1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B; -1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A -1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D; -1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C -1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F; -1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E -1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11; -1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10 -1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13; -1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12 -1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15; -1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14 -1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17; -1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16 -1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19; -1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18 -1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B; -1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A -1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D; -1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C -1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F; -1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E -1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21; -1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20 -1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23; -1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22 -1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25; -1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24 -1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27; -1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26 -1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29; -1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28 -1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B; -1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A -1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D; -1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C -1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F; -1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E -1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31; -1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30 -1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33; -1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32 -1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35; -1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34 -1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37; -1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36 -1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39; -1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38 -1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B; -1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A -1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D; -1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C -1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F; -1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E -1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41; -1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40 -1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43; -1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42 -1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45; -1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44 -1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47; -1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46 -1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49; -1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48 -1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B; -1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A -1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D; -1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C -1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F; -1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E -1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51; -1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50 -1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53; -1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52 -1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55; -1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54 -1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57; -1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56 -1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59; -1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58 -1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B; -1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A -1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D; -1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C -1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F; -1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E -1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61; -1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60 -1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63; -1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62 -1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65; -1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64 -1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67; -1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66 -1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69; -1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68 -1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B; -1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A -1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D; -1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C -1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F; -1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E -1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71; -1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70 -1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73; -1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72 -1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75; -1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74 -1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77; -1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76 -1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79; -1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78 -1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B; -1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A -1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D; -1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C -1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F; -1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E -1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81; -1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80 -1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83; -1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82 -1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85; -1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84 -1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87; -1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86 -1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89; -1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88 -1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B; -1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A -1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D; -1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C -1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F; -1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E -1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91; -1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90 -1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93; -1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92 -1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95; -1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94 -1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;; -1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;; -1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;; -1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;; -1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L; 0061 02BE;;;;N;;;;; -1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60 -1E9C;LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;;; -1E9D;LATIN SMALL LETTER LONG S WITH HIGH STROKE;Ll;0;L;;;;;N;;;;; -1E9E;LATIN CAPITAL LETTER SHARP S;Lu;0;L;;;;;N;;;;00DF; -1E9F;LATIN SMALL LETTER DELTA;Ll;0;L;;;;;N;;;;; -1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1; -1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0 -1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3; -1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2 -1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5; -1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4 -1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7; -1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6 -1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9; -1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8 -1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB; -1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA -1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD; -1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC -1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF; -1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE -1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1; -1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0 -1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3; -1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2 -1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5; -1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4 -1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7; -1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6 -1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9; -1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8 -1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB; -1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA -1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD; -1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC -1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF; -1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE -1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1; -1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0 -1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3; -1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2 -1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5; -1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4 -1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7; -1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6 -1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9; -1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8 -1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB; -1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA -1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD; -1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC -1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF; -1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE -1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1; -1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0 -1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3; -1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2 -1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5; -1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4 -1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7; -1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6 -1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9; -1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8 -1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB; -1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA -1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD; -1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC -1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF; -1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE -1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1; -1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0 -1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3; -1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2 -1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5; -1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4 -1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7; -1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6 -1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9; -1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8 -1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB; -1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA -1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED; -1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC -1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF; -1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE -1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1; -1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0 -1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3; -1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2 -1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5; -1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4 -1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7; -1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6 -1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9; -1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8 -1EFA;LATIN CAPITAL LETTER MIDDLE-WELSH LL;Lu;0;L;;;;;N;;;;1EFB; -1EFB;LATIN SMALL LETTER MIDDLE-WELSH LL;Ll;0;L;;;;;N;;;1EFA;;1EFA -1EFC;LATIN CAPITAL LETTER MIDDLE-WELSH V;Lu;0;L;;;;;N;;;;1EFD; -1EFD;LATIN SMALL LETTER MIDDLE-WELSH V;Ll;0;L;;;;;N;;;1EFC;;1EFC -1EFE;LATIN CAPITAL LETTER Y WITH LOOP;Lu;0;L;;;;;N;;;;1EFF; -1EFF;LATIN SMALL LETTER Y WITH LOOP;Ll;0;L;;;;;N;;;1EFE;;1EFE -1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08 -1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09 -1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A -1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B -1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C -1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D -1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E -1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F -1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00; -1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01; -1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02; -1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03; -1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04; -1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05; -1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06; -1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07; -1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18 -1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19 -1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A -1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B -1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C -1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D -1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10; -1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11; -1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12; -1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13; -1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14; -1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15; -1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28 -1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29 -1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A -1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B -1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C -1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D -1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E -1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F -1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20; -1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21; -1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22; -1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23; -1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24; -1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25; -1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26; -1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27; -1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38 -1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39 -1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A -1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B -1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C -1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D -1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E -1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F -1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30; -1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31; -1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32; -1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33; -1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34; -1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35; -1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36; -1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37; -1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48 -1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49 -1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A -1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B -1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C -1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D -1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40; -1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41; -1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42; -1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43; -1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44; -1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45; -1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;; -1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59 -1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;; -1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B -1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;; -1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D -1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;; -1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F -1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51; -1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53; -1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55; -1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57; -1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68 -1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69 -1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A -1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B -1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C -1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D -1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E -1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F -1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60; -1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61; -1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62; -1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63; -1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64; -1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65; -1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66; -1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67; -1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA -1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB -1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8 -1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9 -1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA -1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB -1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA -1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB -1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8 -1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9 -1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA -1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB -1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA -1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB -1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88 -1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89 -1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A -1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B -1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C -1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D -1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E -1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F -1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80; -1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81; -1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82; -1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83; -1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84; -1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85; -1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86; -1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87; -1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98 -1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99 -1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A -1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B -1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C -1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D -1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E -1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F -1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90; -1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91; -1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92; -1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93; -1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94; -1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95; -1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96; -1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97; -1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8 -1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9 -1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA -1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB -1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC -1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD -1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE -1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF -1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0; -1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1; -1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2; -1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3; -1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4; -1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5; -1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6; -1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7; -1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8 -1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9 -1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;; -1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC -1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;; -1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;; -1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;; -1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0; -1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1; -1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70; -1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71; -1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3; -1FBD;GREEK KORONIS;Sk;0;ON; 0020 0313;;;;N;;;;; -1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399 -1FBF;GREEK PSILI;Sk;0;ON; 0020 0313;;;;N;;;;; -1FC0;GREEK PERISPOMENI;Sk;0;ON; 0020 0342;;;;N;;;;; -1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;; -1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;; -1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC -1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;; -1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;; -1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;; -1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72; -1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73; -1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74; -1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75; -1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3; -1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;; -1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;; -1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;; -1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8 -1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9 -1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;; -1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;; -1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;; -1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;; -1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0; -1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1; -1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76; -1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77; -1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;; -1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;; -1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;; -1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8 -1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9 -1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;; -1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;; -1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;; -1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC -1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;; -1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;; -1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0; -1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1; -1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A; -1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B; -1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5; -1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;; -1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;; -1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;; -1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;; -1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC -1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;; -1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;; -1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;; -1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78; -1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79; -1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C; -1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D; -1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3; -1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;; -1FFE;GREEK DASIA;Sk;0;ON; 0020 0314;;;;N;;;;; -2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;; -2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;; -2002;EN SPACE;Zs;0;WS; 0020;;;;N;;;;; -2003;EM SPACE;Zs;0;WS; 0020;;;;N;;;;; -2004;THREE-PER-EM SPACE;Zs;0;WS; 0020;;;;N;;;;; -2005;FOUR-PER-EM SPACE;Zs;0;WS; 0020;;;;N;;;;; -2006;SIX-PER-EM SPACE;Zs;0;WS; 0020;;;;N;;;;; -2007;FIGURE SPACE;Zs;0;WS; 0020;;;;N;;;;; -2008;PUNCTUATION SPACE;Zs;0;WS; 0020;;;;N;;;;; -2009;THIN SPACE;Zs;0;WS; 0020;;;;N;;;;; -200A;HAIR SPACE;Zs;0;WS; 0020;;;;N;;;;; -200B;ZERO WIDTH SPACE;Cf;0;BN;;;;;N;;;;; -200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;; -200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;; -200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;; -200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;; -2010;HYPHEN;Pd;0;ON;;;;;N;;;;; -2011;NON-BREAKING HYPHEN;Pd;0;ON; 2010;;;;N;;;;; -2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;; -2013;EN DASH;Pd;0;ON;;;;;N;;;;; -2014;EM DASH;Pd;0;ON;;;;;N;;;;; -2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;; -2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;; -2017;DOUBLE LOW LINE;Po;0;ON; 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;; -2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;; -2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;; -201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;; -201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;; -201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;; -201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;; -201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;; -201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;; -2020;DAGGER;Po;0;ON;;;;;N;;;;; -2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;; -2022;BULLET;Po;0;ON;;;;;N;;;;; -2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;; -2024;ONE DOT LEADER;Po;0;ON; 002E;;;;N;;;;; -2025;TWO DOT LEADER;Po;0;ON; 002E 002E;;;;N;;;;; -2026;HORIZONTAL ELLIPSIS;Po;0;ON; 002E 002E 002E;;;;N;;;;; -2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;; -2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;; -2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;; -202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;; -202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;; -202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;; -202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;; -202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;; -202F;NARROW NO-BREAK SPACE;Zs;0;CS; 0020;;;;N;;;;; -2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;; -2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;; -2032;PRIME;Po;0;ET;;;;;N;;;;; -2033;DOUBLE PRIME;Po;0;ET; 2032 2032;;;;N;;;;; -2034;TRIPLE PRIME;Po;0;ET; 2032 2032 2032;;;;N;;;;; -2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;; -2036;REVERSED DOUBLE PRIME;Po;0;ON; 2035 2035;;;;N;;;;; -2037;REVERSED TRIPLE PRIME;Po;0;ON; 2035 2035 2035;;;;N;;;;; -2038;CARET;Po;0;ON;;;;;N;;;;; -2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;; -203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;; -203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;; -203C;DOUBLE EXCLAMATION MARK;Po;0;ON; 0021 0021;;;;N;;;;; -203D;INTERROBANG;Po;0;ON;;;;;N;;;;; -203E;OVERLINE;Po;0;ON; 0020 0305;;;;N;SPACING OVERSCORE;;;; -203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;; -2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;; -2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;; -2042;ASTERISM;Po;0;ON;;;;;N;;;;; -2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;; -2044;FRACTION SLASH;Sm;0;CS;;;;;N;;;;; -2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;; -2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;; -2047;DOUBLE QUESTION MARK;Po;0;ON; 003F 003F;;;;N;;;;; -2048;QUESTION EXCLAMATION MARK;Po;0;ON; 003F 0021;;;;N;;;;; -2049;EXCLAMATION QUESTION MARK;Po;0;ON; 0021 003F;;;;N;;;;; -204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;; -204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;; -204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;; -204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;; -204E;LOW ASTERISK;Po;0;ON;;;;;N;;;;; -204F;REVERSED SEMICOLON;Po;0;ON;;;;;N;;;;; -2050;CLOSE UP;Po;0;ON;;;;;N;;;;; -2051;TWO ASTERISKS ALIGNED VERTICALLY;Po;0;ON;;;;;N;;;;; -2052;COMMERCIAL MINUS SIGN;Sm;0;ON;;;;;N;;;;; -2053;SWUNG DASH;Po;0;ON;;;;;N;;;;; -2054;INVERTED UNDERTIE;Pc;0;ON;;;;;N;;;;; -2055;FLOWER PUNCTUATION MARK;Po;0;ON;;;;;N;;;;; -2056;THREE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -2057;QUADRUPLE PRIME;Po;0;ON; 2032 2032 2032 2032;;;;N;;;;; -2058;FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -2059;FIVE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -205A;TWO DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -205B;FOUR DOT MARK;Po;0;ON;;;;;N;;;;; -205C;DOTTED CROSS;Po;0;ON;;;;;N;;;;; -205D;TRICOLON;Po;0;ON;;;;;N;;;;; -205E;VERTICAL FOUR DOTS;Po;0;ON;;;;;N;;;;; -205F;MEDIUM MATHEMATICAL SPACE;Zs;0;WS; 0020;;;;N;;;;; -2060;WORD JOINER;Cf;0;BN;;;;;N;;;;; -2061;FUNCTION APPLICATION;Cf;0;BN;;;;;N;;;;; -2062;INVISIBLE TIMES;Cf;0;BN;;;;;N;;;;; -2063;INVISIBLE SEPARATOR;Cf;0;BN;;;;;N;;;;; -2064;INVISIBLE PLUS;Cf;0;BN;;;;;N;;;;; -206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;; -206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;; -206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;; -206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;; -206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;; -206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;; -2070;SUPERSCRIPT ZERO;No;0;EN; 0030;;0;0;N;SUPERSCRIPT DIGIT ZERO;;;; -2071;SUPERSCRIPT LATIN SMALL LETTER I;Ll;0;L; 0069;;;;N;;;;; -2074;SUPERSCRIPT FOUR;No;0;EN; 0034;;4;4;N;SUPERSCRIPT DIGIT FOUR;;;; -2075;SUPERSCRIPT FIVE;No;0;EN; 0035;;5;5;N;SUPERSCRIPT DIGIT FIVE;;;; -2076;SUPERSCRIPT SIX;No;0;EN; 0036;;6;6;N;SUPERSCRIPT DIGIT SIX;;;; -2077;SUPERSCRIPT SEVEN;No;0;EN; 0037;;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;; -2078;SUPERSCRIPT EIGHT;No;0;EN; 0038;;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;; -2079;SUPERSCRIPT NINE;No;0;EN; 0039;;9;9;N;SUPERSCRIPT DIGIT NINE;;;; -207A;SUPERSCRIPT PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; -207B;SUPERSCRIPT MINUS;Sm;0;ES; 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;; -207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; -207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON; 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;; -207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;; -207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L; 006E;;;;N;;;;; -2080;SUBSCRIPT ZERO;No;0;EN; 0030;;0;0;N;SUBSCRIPT DIGIT ZERO;;;; -2081;SUBSCRIPT ONE;No;0;EN; 0031;;1;1;N;SUBSCRIPT DIGIT ONE;;;; -2082;SUBSCRIPT TWO;No;0;EN; 0032;;2;2;N;SUBSCRIPT DIGIT TWO;;;; -2083;SUBSCRIPT THREE;No;0;EN; 0033;;3;3;N;SUBSCRIPT DIGIT THREE;;;; -2084;SUBSCRIPT FOUR;No;0;EN; 0034;;4;4;N;SUBSCRIPT DIGIT FOUR;;;; -2085;SUBSCRIPT FIVE;No;0;EN; 0035;;5;5;N;SUBSCRIPT DIGIT FIVE;;;; -2086;SUBSCRIPT SIX;No;0;EN; 0036;;6;6;N;SUBSCRIPT DIGIT SIX;;;; -2087;SUBSCRIPT SEVEN;No;0;EN; 0037;;7;7;N;SUBSCRIPT DIGIT SEVEN;;;; -2088;SUBSCRIPT EIGHT;No;0;EN; 0038;;8;8;N;SUBSCRIPT DIGIT EIGHT;;;; -2089;SUBSCRIPT NINE;No;0;EN; 0039;;9;9;N;SUBSCRIPT DIGIT NINE;;;; -208A;SUBSCRIPT PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; -208B;SUBSCRIPT MINUS;Sm;0;ES; 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;; -208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; -208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON; 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;; -208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;; -2090;LATIN SUBSCRIPT SMALL LETTER A;Lm;0;L; 0061;;;;N;;;;; -2091;LATIN SUBSCRIPT SMALL LETTER E;Lm;0;L; 0065;;;;N;;;;; -2092;LATIN SUBSCRIPT SMALL LETTER O;Lm;0;L; 006F;;;;N;;;;; -2093;LATIN SUBSCRIPT SMALL LETTER X;Lm;0;L; 0078;;;;N;;;;; -2094;LATIN SUBSCRIPT SMALL LETTER SCHWA;Lm;0;L; 0259;;;;N;;;;; -20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;; -20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;; -20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;; -20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;; -20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;; -20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;; -20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;; -20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;; -20A8;RUPEE SIGN;Sc;0;ET; 0052 0073;;;;N;;;;; -20A9;WON SIGN;Sc;0;ET;;;;;N;;;;; -20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;; -20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;; -20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;; -20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;; -20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;; -20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;; -20B0;GERMAN PENNY SIGN;Sc;0;ET;;;;;N;;;;; -20B1;PESO SIGN;Sc;0;ET;;;;;N;;;;; -20B2;GUARANI SIGN;Sc;0;ET;;;;;N;;;;; -20B3;AUSTRAL SIGN;Sc;0;ET;;;;;N;;;;; -20B4;HRYVNIA SIGN;Sc;0;ET;;;;;N;;;;; -20B5;CEDI SIGN;Sc;0;ET;;;;;N;;;;; -20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;; -20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;; -20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;; -20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;; -20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;; -20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;; -20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;; -20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;; -20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;; -20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;; -20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;; -20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;; -20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;; -20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;; -20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;; -20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;; -20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;; -20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;; -20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;; -20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;; -20E4;COMBINING ENCLOSING UPWARD POINTING TRIANGLE;Me;0;NSM;;;;;N;;;;; -20E5;COMBINING REVERSE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;; -20E6;COMBINING DOUBLE VERTICAL STROKE OVERLAY;Mn;1;NSM;;;;;N;;;;; -20E7;COMBINING ANNUITY SYMBOL;Mn;230;NSM;;;;;N;;;;; -20E8;COMBINING TRIPLE UNDERDOT;Mn;220;NSM;;;;;N;;;;; -20E9;COMBINING WIDE BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;; -20EA;COMBINING LEFTWARDS ARROW OVERLAY;Mn;1;NSM;;;;;N;;;;; -20EB;COMBINING LONG DOUBLE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;; -20EC;COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;; -20ED;COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;; -20EE;COMBINING LEFT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; -20EF;COMBINING RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; -20F0;COMBINING ASTERISK ABOVE;Mn;230;NSM;;;;;N;;;;; -2100;ACCOUNT OF;So;0;ON; 0061 002F 0063;;;;N;;;;; -2101;ADDRESSED TO THE SUBJECT;So;0;ON; 0061 002F 0073;;;;N;;;;; -2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L; 0043;;;;N;DOUBLE-STRUCK C;;;; -2103;DEGREE CELSIUS;So;0;ON; 00B0 0043;;;;N;DEGREES CENTIGRADE;;;; -2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;; -2105;CARE OF;So;0;ON; 0063 002F 006F;;;;N;;;;; -2106;CADA UNA;So;0;ON; 0063 002F 0075;;;;N;;;;; -2107;EULER CONSTANT;Lu;0;L; 0190;;;;N;EULERS;;;; -2108;SCRUPLE;So;0;ON;;;;;N;;;;; -2109;DEGREE FAHRENHEIT;So;0;ON; 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;; -210A;SCRIPT SMALL G;Ll;0;L; 0067;;;;N;;;;; -210B;SCRIPT CAPITAL H;Lu;0;L; 0048;;;;N;SCRIPT H;;;; -210C;BLACK-LETTER CAPITAL H;Lu;0;L; 0048;;;;N;BLACK-LETTER H;;;; -210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L; 0048;;;;N;DOUBLE-STRUCK H;;;; -210E;PLANCK CONSTANT;Ll;0;L; 0068;;;;N;;;;; -210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L; 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;; -2110;SCRIPT CAPITAL I;Lu;0;L; 0049;;;;N;SCRIPT I;;;; -2111;BLACK-LETTER CAPITAL I;Lu;0;L; 0049;;;;N;BLACK-LETTER I;;;; -2112;SCRIPT CAPITAL L;Lu;0;L; 004C;;;;N;SCRIPT L;;;; -2113;SCRIPT SMALL L;Ll;0;L; 006C;;;;N;;;;; -2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;; -2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L; 004E;;;;N;DOUBLE-STRUCK N;;;; -2116;NUMERO SIGN;So;0;ON; 004E 006F;;;;N;NUMERO;;;; -2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;; -2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;; -2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L; 0050;;;;N;DOUBLE-STRUCK P;;;; -211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L; 0051;;;;N;DOUBLE-STRUCK Q;;;; -211B;SCRIPT CAPITAL R;Lu;0;L; 0052;;;;N;SCRIPT R;;;; -211C;BLACK-LETTER CAPITAL R;Lu;0;L; 0052;;;;N;BLACK-LETTER R;;;; -211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L; 0052;;;;N;DOUBLE-STRUCK R;;;; -211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;; -211F;RESPONSE;So;0;ON;;;;;N;;;;; -2120;SERVICE MARK;So;0;ON; 0053 004D;;;;N;;;;; -2121;TELEPHONE SIGN;So;0;ON; 0054 0045 004C;;;;N;T E L SYMBOL;;;; -2122;TRADE MARK SIGN;So;0;ON; 0054 004D;;;;N;TRADEMARK;;;; -2123;VERSICLE;So;0;ON;;;;;N;;;;; -2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L; 005A;;;;N;DOUBLE-STRUCK Z;;;; -2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;; -2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9; -2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;; -2128;BLACK-LETTER CAPITAL Z;Lu;0;L; 005A;;;;N;BLACK-LETTER Z;;;; -2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;; -212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B; -212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5; -212C;SCRIPT CAPITAL B;Lu;0;L; 0042;;;;N;SCRIPT B;;;; -212D;BLACK-LETTER CAPITAL C;Lu;0;L; 0043;;;;N;BLACK-LETTER C;;;; -212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;; -212F;SCRIPT SMALL E;Ll;0;L; 0065;;;;N;;;;; -2130;SCRIPT CAPITAL E;Lu;0;L; 0045;;;;N;SCRIPT E;;;; -2131;SCRIPT CAPITAL F;Lu;0;L; 0046;;;;N;SCRIPT F;;;; -2132;TURNED CAPITAL F;Lu;0;L;;;;;N;TURNED F;;;214E; -2133;SCRIPT CAPITAL M;Lu;0;L; 004D;;;;N;SCRIPT M;;;; -2134;SCRIPT SMALL O;Ll;0;L; 006F;;;;N;;;;; -2135;ALEF SYMBOL;Lo;0;L; 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;; -2136;BET SYMBOL;Lo;0;L; 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;; -2137;GIMEL SYMBOL;Lo;0;L; 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;; -2138;DALET SYMBOL;Lo;0;L; 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;; -2139;INFORMATION SOURCE;Ll;0;L; 0069;;;;N;;;;; -213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;; -213B;FACSIMILE SIGN;So;0;ON; 0046 0041 0058;;;;N;;;;; -213C;DOUBLE-STRUCK SMALL PI;Ll;0;L; 03C0;;;;N;;;;; -213D;DOUBLE-STRUCK SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; -213E;DOUBLE-STRUCK CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; -213F;DOUBLE-STRUCK CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; -2140;DOUBLE-STRUCK N-ARY SUMMATION;Sm;0;ON; 2211;;;;Y;;;;; -2141;TURNED SANS-SERIF CAPITAL G;Sm;0;ON;;;;;N;;;;; -2142;TURNED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;; -2143;REVERSED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;; -2144;TURNED SANS-SERIF CAPITAL Y;Sm;0;ON;;;;;N;;;;; -2145;DOUBLE-STRUCK ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -2146;DOUBLE-STRUCK ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; -2147;DOUBLE-STRUCK ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; -2148;DOUBLE-STRUCK ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; -2149;DOUBLE-STRUCK ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; -214A;PROPERTY LINE;So;0;ON;;;;;N;;;;; -214B;TURNED AMPERSAND;Sm;0;ON;;;;;N;;;;; -214C;PER SIGN;So;0;ON;;;;;N;;;;; -214D;AKTIESELSKAB;So;0;ON;;;;;N;;;;; -214E;TURNED SMALL F;Ll;0;L;;;;;N;;;2132;;2132 -214F;SYMBOL FOR SAMARITAN SOURCE;So;0;L;;;;;N;;;;; -2153;VULGAR FRACTION ONE THIRD;No;0;ON; 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;; -2154;VULGAR FRACTION TWO THIRDS;No;0;ON; 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;; -2155;VULGAR FRACTION ONE FIFTH;No;0;ON; 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;; -2156;VULGAR FRACTION TWO FIFTHS;No;0;ON; 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;; -2157;VULGAR FRACTION THREE FIFTHS;No;0;ON; 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;; -2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON; 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;; -2159;VULGAR FRACTION ONE SIXTH;No;0;ON; 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;; -215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON; 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;; -215B;VULGAR FRACTION ONE EIGHTH;No;0;ON; 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;; -215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON; 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;; -215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON; 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;; -215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON; 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;; -215F;FRACTION NUMERATOR ONE;No;0;ON; 0031 2044;;;1;N;;;;; -2160;ROMAN NUMERAL ONE;Nl;0;L; 0049;;;1;N;;;;2170; -2161;ROMAN NUMERAL TWO;Nl;0;L; 0049 0049;;;2;N;;;;2171; -2162;ROMAN NUMERAL THREE;Nl;0;L; 0049 0049 0049;;;3;N;;;;2172; -2163;ROMAN NUMERAL FOUR;Nl;0;L; 0049 0056;;;4;N;;;;2173; -2164;ROMAN NUMERAL FIVE;Nl;0;L; 0056;;;5;N;;;;2174; -2165;ROMAN NUMERAL SIX;Nl;0;L; 0056 0049;;;6;N;;;;2175; -2166;ROMAN NUMERAL SEVEN;Nl;0;L; 0056 0049 0049;;;7;N;;;;2176; -2167;ROMAN NUMERAL EIGHT;Nl;0;L; 0056 0049 0049 0049;;;8;N;;;;2177; -2168;ROMAN NUMERAL NINE;Nl;0;L; 0049 0058;;;9;N;;;;2178; -2169;ROMAN NUMERAL TEN;Nl;0;L; 0058;;;10;N;;;;2179; -216A;ROMAN NUMERAL ELEVEN;Nl;0;L; 0058 0049;;;11;N;;;;217A; -216B;ROMAN NUMERAL TWELVE;Nl;0;L; 0058 0049 0049;;;12;N;;;;217B; -216C;ROMAN NUMERAL FIFTY;Nl;0;L; 004C;;;50;N;;;;217C; -216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L; 0043;;;100;N;;;;217D; -216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L; 0044;;;500;N;;;;217E; -216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L; 004D;;;1000;N;;;;217F; -2170;SMALL ROMAN NUMERAL ONE;Nl;0;L; 0069;;;1;N;;;2160;;2160 -2171;SMALL ROMAN NUMERAL TWO;Nl;0;L; 0069 0069;;;2;N;;;2161;;2161 -2172;SMALL ROMAN NUMERAL THREE;Nl;0;L; 0069 0069 0069;;;3;N;;;2162;;2162 -2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L; 0069 0076;;;4;N;;;2163;;2163 -2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L; 0076;;;5;N;;;2164;;2164 -2175;SMALL ROMAN NUMERAL SIX;Nl;0;L; 0076 0069;;;6;N;;;2165;;2165 -2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L; 0076 0069 0069;;;7;N;;;2166;;2166 -2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L; 0076 0069 0069 0069;;;8;N;;;2167;;2167 -2178;SMALL ROMAN NUMERAL NINE;Nl;0;L; 0069 0078;;;9;N;;;2168;;2168 -2179;SMALL ROMAN NUMERAL TEN;Nl;0;L; 0078;;;10;N;;;2169;;2169 -217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L; 0078 0069;;;11;N;;;216A;;216A -217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L; 0078 0069 0069;;;12;N;;;216B;;216B -217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L; 006C;;;50;N;;;216C;;216C -217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L; 0063;;;100;N;;;216D;;216D -217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L; 0064;;;500;N;;;216E;;216E -217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L; 006D;;;1000;N;;;216F;;216F -2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;; -2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;; -2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;; -2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Lu;0;L;;;;;N;;;;2184; -2184;LATIN SMALL LETTER REVERSED C;Ll;0;L;;;;;N;;;2183;;2183 -2185;ROMAN NUMERAL SIX LATE FORM;Nl;0;L;;;;6;N;;;;; -2186;ROMAN NUMERAL FIFTY EARLY FORM;Nl;0;L;;;;50;N;;;;; -2187;ROMAN NUMERAL FIFTY THOUSAND;Nl;0;L;;;;50000;N;;;;; -2188;ROMAN NUMERAL ONE HUNDRED THOUSAND;Nl;0;L;;;;100000;N;;;;; -2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;; -2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;; -2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;; -2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;; -2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;; -2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;; -2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;; -2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;; -2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;; -2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;; -219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;; -219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;; -219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;; -219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;; -219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;; -219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;; -21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;; -21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;; -21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;; -21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;; -21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;; -21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;; -21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;; -21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;; -21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;; -21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;; -21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;; -21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;; -21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;; -21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;; -21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;; -21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;; -21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;; -21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;; -21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;; -21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;; -21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;; -21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;; -21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;; -21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;; -21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;; -21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;; -21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;; -21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;; -21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;; -21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;; -21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;; -21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;; -21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;; -21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;; -21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;; -21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;; -21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;; -21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;; -21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;; -21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;; -21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;; -21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;; -21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;; -21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;; -21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;; -21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;; -21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;; -21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;; -21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;; -21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;; -21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;; -21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;; -21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; -21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;; -21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;; -21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;; -21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;; -21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;; -21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;; -21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;; -21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;; -21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;; -21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;; -21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;; -21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;; -21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;; -21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;; -21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;; -21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;; -21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;; -21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;; -21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;; -21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;; -21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;; -21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;; -21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;; -21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;; -21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;; -21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;; -21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;; -21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;; -21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;; -21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;; -21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;; -21F4;RIGHT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; -21F5;DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW;Sm;0;ON;;;;;N;;;;; -21F6;THREE RIGHTWARDS ARROWS;Sm;0;ON;;;;;N;;;;; -21F7;LEFTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21F8;RIGHTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21F9;LEFT RIGHT ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21FA;LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21FB;RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21FC;LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21FD;LEFTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; -21FE;RIGHTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; -21FF;LEFT RIGHT OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; -2200;FOR ALL;Sm;0;ON;;;;;N;;;;; -2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;; -2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;; -2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;; -2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;; -2205;EMPTY SET;Sm;0;ON;;;;;N;;;;; -2206;INCREMENT;Sm;0;ON;;;;;N;;;;; -2207;NABLA;Sm;0;ON;;;;;N;;;;; -2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;; -2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;; -220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;; -220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;; -220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;; -220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;; -220E;END OF PROOF;Sm;0;ON;;;;;N;;;;; -220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;; -2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;; -2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;; -2212;MINUS SIGN;Sm;0;ES;;;;;N;;;;; -2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;; -2214;DOT PLUS;Sm;0;ON;;;;;N;;;;; -2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;; -2216;SET MINUS;Sm;0;ON;;;;;Y;;;;; -2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;; -2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;; -2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;; -221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;; -221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;; -221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;; -221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;; -221E;INFINITY;Sm;0;ON;;;;;N;;;;; -221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;; -2220;ANGLE;Sm;0;ON;;;;;Y;;;;; -2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;; -2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;; -2223;DIVIDES;Sm;0;ON;;;;;N;;;;; -2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;; -2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;; -2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;; -2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;; -2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;; -2229;INTERSECTION;Sm;0;ON;;;;;N;;;;; -222A;UNION;Sm;0;ON;;;;;N;;;;; -222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;; -222C;DOUBLE INTEGRAL;Sm;0;ON; 222B 222B;;;;Y;;;;; -222D;TRIPLE INTEGRAL;Sm;0;ON; 222B 222B 222B;;;;Y;;;;; -222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; -222F;SURFACE INTEGRAL;Sm;0;ON; 222E 222E;;;;Y;;;;; -2230;VOLUME INTEGRAL;Sm;0;ON; 222E 222E 222E;;;;Y;;;;; -2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2234;THEREFORE;Sm;0;ON;;;;;N;;;;; -2235;BECAUSE;Sm;0;ON;;;;;N;;;;; -2236;RATIO;Sm;0;ON;;;;;N;;;;; -2237;PROPORTION;Sm;0;ON;;;;;N;;;;; -2238;DOT MINUS;Sm;0;ON;;;;;N;;;;; -2239;EXCESS;Sm;0;ON;;;;;Y;;;;; -223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;; -223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;; -223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; -223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;lazy S;;; -223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;; -223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;; -2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;; -2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;; -2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;; -2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;; -2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;; -2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;; -224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;; -224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;; -224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; -224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; -224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;; -2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;; -2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;; -2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;; -2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;; -2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;; -2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;; -2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;; -2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;; -2259;ESTIMATES;Sm;0;ON;;;;;N;;;;; -225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;; -225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;; -225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;; -225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;; -225E;MEASURED BY;Sm;0;ON;;;;;N;;;;; -225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;; -2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;; -2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;; -2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; -2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;; -2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;; -2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;; -2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;; -2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;; -2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;; -226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;; -226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;; -226C;BETWEEN;Sm;0;ON;;;;;N;;;;; -226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;; -226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;; -226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;; -2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;; -2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;; -2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;; -2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;; -2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;; -2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;; -2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;; -2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;; -2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;; -2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;; -227A;PRECEDES;Sm;0;ON;;;;;Y;;;;; -227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;; -227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; -227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; -2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;; -2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;; -2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;; -2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;; -2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;; -2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;; -2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;; -2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;; -228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;; -228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;; -228C;MULTISET;Sm;0;ON;;;;;Y;;;;; -228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;; -228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;; -228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;; -2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;; -2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;; -2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;; -2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; -2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;; -2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;; -2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;; -2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; -229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;; -229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;; -229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;; -229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;; -229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;; -229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;; -22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;; -22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; -22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;; -22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;; -22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;; -22A5;UP TACK;Sm;0;ON;;;;;N;;;;; -22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;; -22A7;MODELS;Sm;0;ON;;;;;Y;;;;; -22A8;TRUE;Sm;0;ON;;;;;Y;;;;; -22A9;FORCES;Sm;0;ON;;;;;Y;;;;; -22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;; -22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;; -22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;; -22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;; -22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;; -22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;; -22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;; -22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;; -22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;; -22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;; -22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;; -22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;; -22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;; -22BB;XOR;Sm;0;ON;;;;;N;;;;; -22BC;NAND;Sm;0;ON;;;;;N;;;;; -22BD;NOR;Sm;0;ON;;;;;N;;;;; -22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;; -22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;; -22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;; -22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;; -22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;; -22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;; -22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;; -22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;; -22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;; -22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;; -22C8;BOWTIE;Sm;0;ON;;;;;N;;;;; -22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; -22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; -22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; -22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; -22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;; -22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;; -22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;; -22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;; -22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;; -22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;; -22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;; -22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;; -22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;; -22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;; -22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;; -22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;; -22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;; -22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;; -22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;; -22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;; -22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;; -22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;; -22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;; -22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;; -22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;; -22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;; -22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;; -22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;; -22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;; -22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; -22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; -22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;; -22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;; -22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;; -22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;; -22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;; -22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;; -22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;; -22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;; -22F2;ELEMENT OF WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22F3;ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22F4;SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22F5;ELEMENT OF WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -22F6;ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -22F7;SMALL ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -22F8;ELEMENT OF WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; -22F9;ELEMENT OF WITH TWO HORIZONTAL STROKES;Sm;0;ON;;;;;Y;;;;; -22FA;CONTAINS WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22FB;CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22FC;SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22FD;CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -22FE;SMALL CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -22FF;Z NOTATION BAG MEMBERSHIP;Sm;0;ON;;;;;Y;;;;; -2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;; -2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;; -2302;HOUSE;So;0;ON;;;;;N;;;;; -2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;; -2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;; -2305;PROJECTIVE;So;0;ON;;;;;N;;;;; -2306;PERSPECTIVE;So;0;ON;;;;;N;;;;; -2307;WAVY LINE;So;0;ON;;;;;N;;;;; -2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;; -2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;; -230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;; -230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;; -230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;; -230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;; -230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;; -230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;; -2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;; -2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;; -2312;ARC;So;0;ON;;;;;N;;;;; -2313;SEGMENT;So;0;ON;;;;;N;;;;; -2314;SECTOR;So;0;ON;;;;;N;;;;; -2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;; -2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;; -2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;; -2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;; -2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;; -231A;WATCH;So;0;ON;;;;;N;;;;; -231B;HOURGLASS;So;0;ON;;;;;N;;;;; -231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;; -231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;; -231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;; -231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;; -2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2322;FROWN;So;0;ON;;;;;N;;;;; -2323;SMILE;So;0;ON;;;;;N;;;;; -2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;; -2325;OPTION KEY;So;0;ON;;;;;N;;;;; -2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;; -2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;; -2328;KEYBOARD;So;0;ON;;;;;N;;;;; -2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;; -232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;; -232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;; -232C;BENZENE RING;So;0;ON;;;;;N;;;;; -232D;CYLINDRICITY;So;0;ON;;;;;N;;;;; -232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;; -232F;SYMMETRY;So;0;ON;;;;;N;;;;; -2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;; -2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;; -2332;CONICAL TAPER;So;0;ON;;;;;N;;;;; -2333;SLOPE;So;0;ON;;;;;N;;;;; -2334;COUNTERBORE;So;0;ON;;;;;N;;;;; -2335;COUNTERSINK;So;0;ON;;;;;N;;;;; -2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;; -2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;; -2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;; -2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;; -233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;; -233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;; -233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;; -233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;; -233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;; -233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;; -2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;; -2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;; -2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;; -2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;; -2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;; -2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;; -2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;; -2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;; -2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;; -2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;; -234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;*;;; -234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;; -234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;; -234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;; -234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;*;;; -234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;; -2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;; -2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;*;;; -2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;; -2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;; -2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;; -2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;*;;; -2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;; -2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;; -2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;; -2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;; -235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;; -235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;; -235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;; -235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;; -235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;; -235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;; -2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;; -2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;*;;; -2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;; -2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;; -2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;; -2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;; -2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;; -2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;; -2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;; -2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;; -236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;; -236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;; -236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;; -236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;; -236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;; -236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;; -2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;; -2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;; -2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;; -2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;; -2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;; -2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;; -2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;; -2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;; -2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;; -2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;; -237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;; -237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;; -237C;RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW;Sm;0;ON;;;;;N;;;;; -237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;; -237E;BELL SYMBOL;So;0;ON;;;;;N;;;;; -237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;; -2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;; -2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;; -2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;; -2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;; -2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;; -2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;; -2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;; -2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;; -2388;HELM SYMBOL;So;0;ON;;;;;N;;;;; -2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;pause;;; -238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;break;;; -238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;escape;;; -238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;; -238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;; -238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;; -238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;; -2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;; -2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;; -2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;; -2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;; -2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;; -2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;; -2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;; -2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;; -2398;NEXT PAGE;So;0;ON;;;;;N;;;;; -2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;; -239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;; -239B;LEFT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;; -239C;LEFT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;; -239D;LEFT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;; -239E;RIGHT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;; -239F;RIGHT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;; -23A0;RIGHT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;; -23A1;LEFT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;; -23A2;LEFT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; -23A3;LEFT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;; -23A4;RIGHT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;; -23A5;RIGHT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; -23A6;RIGHT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;; -23A7;LEFT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;; -23A8;LEFT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;; -23A9;LEFT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;; -23AA;CURLY BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; -23AB;RIGHT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;; -23AC;RIGHT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;; -23AD;RIGHT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;; -23AE;INTEGRAL EXTENSION;Sm;0;ON;;;;;N;;;;; -23AF;HORIZONTAL LINE EXTENSION;Sm;0;ON;;;;;N;;;;; -23B0;UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;; -23B1;UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;; -23B2;SUMMATION TOP;Sm;0;ON;;;;;N;;;;; -23B3;SUMMATION BOTTOM;Sm;0;ON;;;;;N;;;;; -23B4;TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;; -23B5;BOTTOM SQUARE BRACKET;So;0;ON;;;;;N;;;;; -23B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;; -23B7;RADICAL SYMBOL BOTTOM;So;0;ON;;;;;N;;;;; -23B8;LEFT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;; -23B9;RIGHT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;; -23BA;HORIZONTAL SCAN LINE-1;So;0;ON;;;;;N;;;;; -23BB;HORIZONTAL SCAN LINE-3;So;0;ON;;;;;N;;;;; -23BC;HORIZONTAL SCAN LINE-7;So;0;ON;;;;;N;;;;; -23BD;HORIZONTAL SCAN LINE-9;So;0;ON;;;;;N;;;;; -23BE;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;; -23BF;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;; -23C0;DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE;So;0;ON;;;;;N;;;;; -23C1;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;; -23C2;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;; -23C3;DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; -23C4;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; -23C5;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; -23C6;DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE;So;0;ON;;;;;N;;;;; -23C7;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;; -23C8;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;; -23C9;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;;;;; -23CA;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;;;;; -23CB;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;; -23CC;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;; -23CD;SQUARE FOOT;So;0;ON;;;;;N;;;;; -23CE;RETURN SYMBOL;So;0;ON;;;;;N;;;;; -23CF;EJECT SYMBOL;So;0;ON;;;;;N;;;;; -23D0;VERTICAL LINE EXTENSION;So;0;ON;;;;;N;;;;; -23D1;METRICAL BREVE;So;0;ON;;;;;N;;;;; -23D2;METRICAL LONG OVER SHORT;So;0;ON;;;;;N;;;;; -23D3;METRICAL SHORT OVER LONG;So;0;ON;;;;;N;;;;; -23D4;METRICAL LONG OVER TWO SHORTS;So;0;ON;;;;;N;;;;; -23D5;METRICAL TWO SHORTS OVER LONG;So;0;ON;;;;;N;;;;; -23D6;METRICAL TWO SHORTS JOINED;So;0;ON;;;;;N;;;;; -23D7;METRICAL TRISEME;So;0;ON;;;;;N;;;;; -23D8;METRICAL TETRASEME;So;0;ON;;;;;N;;;;; -23D9;METRICAL PENTASEME;So;0;ON;;;;;N;;;;; -23DA;EARTH GROUND;So;0;ON;;;;;N;;;;; -23DB;FUSE;So;0;ON;;;;;N;;;;; -23DC;TOP PARENTHESIS;Sm;0;ON;;;;;N;;mathematical use;;; -23DD;BOTTOM PARENTHESIS;Sm;0;ON;;;;;N;;mathematical use;;; -23DE;TOP CURLY BRACKET;Sm;0;ON;;;;;N;;mathematical use;;; -23DF;BOTTOM CURLY BRACKET;Sm;0;ON;;;;;N;;mathematical use;;; -23E0;TOP TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;mathematical use;;; -23E1;BOTTOM TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;mathematical use;;; -23E2;WHITE TRAPEZIUM;So;0;ON;;;;;N;;;;; -23E3;BENZENE RING WITH CIRCLE;So;0;ON;;;;;N;;;;; -23E4;STRAIGHTNESS;So;0;ON;;;;;N;;;;; -23E5;FLATNESS;So;0;ON;;;;;N;;;;; -23E6;AC CURRENT;So;0;ON;;;;;N;;;;; -23E7;ELECTRICAL INTERSECTION;So;0;ON;;;;;N;;;;; -2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;; -2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;; -2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;; -2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;; -2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;; -2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;; -2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;; -2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;; -2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;; -2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;; -240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;; -240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;; -240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;; -240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;; -240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;; -240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;; -2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;; -2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;; -2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;; -2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;; -2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;; -2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;; -2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;; -2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;; -2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;; -2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;; -241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;; -241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;; -241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;; -241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;; -241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;; -241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;; -2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;; -2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;; -2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;; -2423;OPEN BOX;So;0;ON;;;;;N;;;;; -2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;; -2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;; -2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;; -2440;OCR HOOK;So;0;ON;;;;;N;;;;; -2441;OCR CHAIR;So;0;ON;;;;;N;;;;; -2442;OCR FORK;So;0;ON;;;;;N;;;;; -2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;; -2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;; -2445;OCR BOW TIE;So;0;ON;;;;;N;;;;; -2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;; -2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;; -2448;OCR DASH;So;0;ON;;;;;N;;;;; -2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;; -244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;; -2460;CIRCLED DIGIT ONE;No;0;ON; 0031;;1;1;N;;;;; -2461;CIRCLED DIGIT TWO;No;0;ON; 0032;;2;2;N;;;;; -2462;CIRCLED DIGIT THREE;No;0;ON; 0033;;3;3;N;;;;; -2463;CIRCLED DIGIT FOUR;No;0;ON; 0034;;4;4;N;;;;; -2464;CIRCLED DIGIT FIVE;No;0;ON; 0035;;5;5;N;;;;; -2465;CIRCLED DIGIT SIX;No;0;ON; 0036;;6;6;N;;;;; -2466;CIRCLED DIGIT SEVEN;No;0;ON; 0037;;7;7;N;;;;; -2467;CIRCLED DIGIT EIGHT;No;0;ON; 0038;;8;8;N;;;;; -2468;CIRCLED DIGIT NINE;No;0;ON; 0039;;9;9;N;;;;; -2469;CIRCLED NUMBER TEN;No;0;ON; 0031 0030;;;10;N;;;;; -246A;CIRCLED NUMBER ELEVEN;No;0;ON; 0031 0031;;;11;N;;;;; -246B;CIRCLED NUMBER TWELVE;No;0;ON; 0031 0032;;;12;N;;;;; -246C;CIRCLED NUMBER THIRTEEN;No;0;ON; 0031 0033;;;13;N;;;;; -246D;CIRCLED NUMBER FOURTEEN;No;0;ON; 0031 0034;;;14;N;;;;; -246E;CIRCLED NUMBER FIFTEEN;No;0;ON; 0031 0035;;;15;N;;;;; -246F;CIRCLED NUMBER SIXTEEN;No;0;ON; 0031 0036;;;16;N;;;;; -2470;CIRCLED NUMBER SEVENTEEN;No;0;ON; 0031 0037;;;17;N;;;;; -2471;CIRCLED NUMBER EIGHTEEN;No;0;ON; 0031 0038;;;18;N;;;;; -2472;CIRCLED NUMBER NINETEEN;No;0;ON; 0031 0039;;;19;N;;;;; -2473;CIRCLED NUMBER TWENTY;No;0;ON; 0032 0030;;;20;N;;;;; -2474;PARENTHESIZED DIGIT ONE;No;0;ON; 0028 0031 0029;;1;1;N;;;;; -2475;PARENTHESIZED DIGIT TWO;No;0;ON; 0028 0032 0029;;2;2;N;;;;; -2476;PARENTHESIZED DIGIT THREE;No;0;ON; 0028 0033 0029;;3;3;N;;;;; -2477;PARENTHESIZED DIGIT FOUR;No;0;ON; 0028 0034 0029;;4;4;N;;;;; -2478;PARENTHESIZED DIGIT FIVE;No;0;ON; 0028 0035 0029;;5;5;N;;;;; -2479;PARENTHESIZED DIGIT SIX;No;0;ON; 0028 0036 0029;;6;6;N;;;;; -247A;PARENTHESIZED DIGIT SEVEN;No;0;ON; 0028 0037 0029;;7;7;N;;;;; -247B;PARENTHESIZED DIGIT EIGHT;No;0;ON; 0028 0038 0029;;8;8;N;;;;; -247C;PARENTHESIZED DIGIT NINE;No;0;ON; 0028 0039 0029;;9;9;N;;;;; -247D;PARENTHESIZED NUMBER TEN;No;0;ON; 0028 0031 0030 0029;;;10;N;;;;; -247E;PARENTHESIZED NUMBER ELEVEN;No;0;ON; 0028 0031 0031 0029;;;11;N;;;;; -247F;PARENTHESIZED NUMBER TWELVE;No;0;ON; 0028 0031 0032 0029;;;12;N;;;;; -2480;PARENTHESIZED NUMBER THIRTEEN;No;0;ON; 0028 0031 0033 0029;;;13;N;;;;; -2481;PARENTHESIZED NUMBER FOURTEEN;No;0;ON; 0028 0031 0034 0029;;;14;N;;;;; -2482;PARENTHESIZED NUMBER FIFTEEN;No;0;ON; 0028 0031 0035 0029;;;15;N;;;;; -2483;PARENTHESIZED NUMBER SIXTEEN;No;0;ON; 0028 0031 0036 0029;;;16;N;;;;; -2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;ON; 0028 0031 0037 0029;;;17;N;;;;; -2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;ON; 0028 0031 0038 0029;;;18;N;;;;; -2486;PARENTHESIZED NUMBER NINETEEN;No;0;ON; 0028 0031 0039 0029;;;19;N;;;;; -2487;PARENTHESIZED NUMBER TWENTY;No;0;ON; 0028 0032 0030 0029;;;20;N;;;;; -2488;DIGIT ONE FULL STOP;No;0;EN; 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;; -2489;DIGIT TWO FULL STOP;No;0;EN; 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;; -248A;DIGIT THREE FULL STOP;No;0;EN; 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;; -248B;DIGIT FOUR FULL STOP;No;0;EN; 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;; -248C;DIGIT FIVE FULL STOP;No;0;EN; 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;; -248D;DIGIT SIX FULL STOP;No;0;EN; 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;; -248E;DIGIT SEVEN FULL STOP;No;0;EN; 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;; -248F;DIGIT EIGHT FULL STOP;No;0;EN; 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;; -2490;DIGIT NINE FULL STOP;No;0;EN; 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;; -2491;NUMBER TEN FULL STOP;No;0;EN; 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;; -2492;NUMBER ELEVEN FULL STOP;No;0;EN; 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;; -2493;NUMBER TWELVE FULL STOP;No;0;EN; 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;; -2494;NUMBER THIRTEEN FULL STOP;No;0;EN; 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;; -2495;NUMBER FOURTEEN FULL STOP;No;0;EN; 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;; -2496;NUMBER FIFTEEN FULL STOP;No;0;EN; 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;; -2497;NUMBER SIXTEEN FULL STOP;No;0;EN; 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;; -2498;NUMBER SEVENTEEN FULL STOP;No;0;EN; 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;; -2499;NUMBER EIGHTEEN FULL STOP;No;0;EN; 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;; -249A;NUMBER NINETEEN FULL STOP;No;0;EN; 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;; -249B;NUMBER TWENTY FULL STOP;No;0;EN; 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;; -249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L; 0028 0061 0029;;;;N;;;;; -249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L; 0028 0062 0029;;;;N;;;;; -249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L; 0028 0063 0029;;;;N;;;;; -249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L; 0028 0064 0029;;;;N;;;;; -24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L; 0028 0065 0029;;;;N;;;;; -24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L; 0028 0066 0029;;;;N;;;;; -24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L; 0028 0067 0029;;;;N;;;;; -24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L; 0028 0068 0029;;;;N;;;;; -24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L; 0028 0069 0029;;;;N;;;;; -24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L; 0028 006A 0029;;;;N;;;;; -24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L; 0028 006B 0029;;;;N;;;;; -24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L; 0028 006C 0029;;;;N;;;;; -24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L; 0028 006D 0029;;;;N;;;;; -24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L; 0028 006E 0029;;;;N;;;;; -24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L; 0028 006F 0029;;;;N;;;;; -24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L; 0028 0070 0029;;;;N;;;;; -24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L; 0028 0071 0029;;;;N;;;;; -24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L; 0028 0072 0029;;;;N;;;;; -24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L; 0028 0073 0029;;;;N;;;;; -24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L; 0028 0074 0029;;;;N;;;;; -24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L; 0028 0075 0029;;;;N;;;;; -24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L; 0028 0076 0029;;;;N;;;;; -24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L; 0028 0077 0029;;;;N;;;;; -24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L; 0028 0078 0029;;;;N;;;;; -24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L; 0028 0079 0029;;;;N;;;;; -24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L; 0028 007A 0029;;;;N;;;;; -24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L; 0041;;;;N;;;;24D0; -24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L; 0042;;;;N;;;;24D1; -24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L; 0043;;;;N;;;;24D2; -24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L; 0044;;;;N;;;;24D3; -24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L; 0045;;;;N;;;;24D4; -24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L; 0046;;;;N;;;;24D5; -24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L; 0047;;;;N;;;;24D6; -24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L; 0048;;;;N;;;;24D7; -24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L; 0049;;;;N;;;;24D8; -24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L; 004A;;;;N;;;;24D9; -24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L; 004B;;;;N;;;;24DA; -24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L; 004C;;;;N;;;;24DB; -24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L; 004D;;;;N;;;;24DC; -24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L; 004E;;;;N;;;;24DD; -24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L; 004F;;;;N;;;;24DE; -24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L; 0050;;;;N;;;;24DF; -24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L; 0051;;;;N;;;;24E0; -24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L; 0052;;;;N;;;;24E1; -24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L; 0053;;;;N;;;;24E2; -24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L; 0054;;;;N;;;;24E3; -24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L; 0055;;;;N;;;;24E4; -24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L; 0056;;;;N;;;;24E5; -24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L; 0057;;;;N;;;;24E6; -24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L; 0058;;;;N;;;;24E7; -24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L; 0059;;;;N;;;;24E8; -24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L; 005A;;;;N;;;;24E9; -24D0;CIRCLED LATIN SMALL LETTER A;So;0;L; 0061;;;;N;;;24B6;;24B6 -24D1;CIRCLED LATIN SMALL LETTER B;So;0;L; 0062;;;;N;;;24B7;;24B7 -24D2;CIRCLED LATIN SMALL LETTER C;So;0;L; 0063;;;;N;;;24B8;;24B8 -24D3;CIRCLED LATIN SMALL LETTER D;So;0;L; 0064;;;;N;;;24B9;;24B9 -24D4;CIRCLED LATIN SMALL LETTER E;So;0;L; 0065;;;;N;;;24BA;;24BA -24D5;CIRCLED LATIN SMALL LETTER F;So;0;L; 0066;;;;N;;;24BB;;24BB -24D6;CIRCLED LATIN SMALL LETTER G;So;0;L; 0067;;;;N;;;24BC;;24BC -24D7;CIRCLED LATIN SMALL LETTER H;So;0;L; 0068;;;;N;;;24BD;;24BD -24D8;CIRCLED LATIN SMALL LETTER I;So;0;L; 0069;;;;N;;;24BE;;24BE -24D9;CIRCLED LATIN SMALL LETTER J;So;0;L; 006A;;;;N;;;24BF;;24BF -24DA;CIRCLED LATIN SMALL LETTER K;So;0;L; 006B;;;;N;;;24C0;;24C0 -24DB;CIRCLED LATIN SMALL LETTER L;So;0;L; 006C;;;;N;;;24C1;;24C1 -24DC;CIRCLED LATIN SMALL LETTER M;So;0;L; 006D;;;;N;;;24C2;;24C2 -24DD;CIRCLED LATIN SMALL LETTER N;So;0;L; 006E;;;;N;;;24C3;;24C3 -24DE;CIRCLED LATIN SMALL LETTER O;So;0;L; 006F;;;;N;;;24C4;;24C4 -24DF;CIRCLED LATIN SMALL LETTER P;So;0;L; 0070;;;;N;;;24C5;;24C5 -24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L; 0071;;;;N;;;24C6;;24C6 -24E1;CIRCLED LATIN SMALL LETTER R;So;0;L; 0072;;;;N;;;24C7;;24C7 -24E2;CIRCLED LATIN SMALL LETTER S;So;0;L; 0073;;;;N;;;24C8;;24C8 -24E3;CIRCLED LATIN SMALL LETTER T;So;0;L; 0074;;;;N;;;24C9;;24C9 -24E4;CIRCLED LATIN SMALL LETTER U;So;0;L; 0075;;;;N;;;24CA;;24CA -24E5;CIRCLED LATIN SMALL LETTER V;So;0;L; 0076;;;;N;;;24CB;;24CB -24E6;CIRCLED LATIN SMALL LETTER W;So;0;L; 0077;;;;N;;;24CC;;24CC -24E7;CIRCLED LATIN SMALL LETTER X;So;0;L; 0078;;;;N;;;24CD;;24CD -24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L; 0079;;;;N;;;24CE;;24CE -24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L; 007A;;;;N;;;24CF;;24CF -24EA;CIRCLED DIGIT ZERO;No;0;ON; 0030;;0;0;N;;;;; -24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;; -24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;; -24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;; -24EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;; -24EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;; -24F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;; -24F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;; -24F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;; -24F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;; -24F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;; -24F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;; -24F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;; -24F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;; -24F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;; -24F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;; -24FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;; -24FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;; -24FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;; -24FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;; -24FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;; -24FF;NEGATIVE CIRCLED DIGIT ZERO;No;0;ON;;;0;0;N;;;;; -2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;; -2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;; -2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;; -2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;; -2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;; -2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;; -2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;; -2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;; -2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;; -2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;; -250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;; -250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;; -250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;; -250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;; -250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;; -250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;; -2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;; -2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;; -2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;; -2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;; -2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;; -2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;; -2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;; -2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;; -2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;; -2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;; -251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;; -251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;; -251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;; -251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;; -251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;; -251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;; -2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;; -2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;; -2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;; -2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;; -2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;; -2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;; -2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;; -2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;; -2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;; -2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;; -252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;; -252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;; -252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;; -252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;; -252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;; -252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;; -2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;; -2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;; -2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;; -2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;; -2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;; -2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;; -2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;; -2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;; -2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;; -2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;; -253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;; -253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;; -253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;; -253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;; -253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;; -253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;; -2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;; -2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;; -2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;; -2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;; -2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;; -2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;; -2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;; -2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;; -2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;; -2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;; -254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;; -254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;; -254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;; -254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;; -254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;; -254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;; -2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;; -2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;; -2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;; -2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;; -2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;; -2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;; -2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;; -2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;; -2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;; -2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;; -255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;; -255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;; -255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;; -255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;; -255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;; -255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;; -2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;; -2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;; -2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;; -2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;; -2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;; -2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;; -2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;; -2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;; -2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;; -2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;; -256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;; -256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;; -256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;; -256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;; -256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;; -256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;; -2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;; -2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;; -2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;; -2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;; -2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;; -2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;; -2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;; -2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;; -2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;; -2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;; -257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;; -257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;; -257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;; -257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;; -257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;; -257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;; -2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;; -2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; -2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; -2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;; -2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;; -2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -2588;FULL BLOCK;So;0;ON;;;;;N;;;;; -2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;; -258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;; -258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; -258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; -2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;; -2591;LIGHT SHADE;So;0;ON;;;;;N;;;;; -2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;; -2593;DARK SHADE;So;0;ON;;;;;N;;;;; -2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; -2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; -2596;QUADRANT LOWER LEFT;So;0;ON;;;;;N;;;;; -2597;QUADRANT LOWER RIGHT;So;0;ON;;;;;N;;;;; -2598;QUADRANT UPPER LEFT;So;0;ON;;;;;N;;;;; -2599;QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; -259A;QUADRANT UPPER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; -259B;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;; -259C;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; -259D;QUADRANT UPPER RIGHT;So;0;ON;;;;;N;;;;; -259E;QUADRANT UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;; -259F;QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; -25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;; -25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;; -25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;; -25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;; -25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;; -25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;; -25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;; -25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;; -25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;; -25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;; -25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;; -25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;; -25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;; -25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;; -25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;; -25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;; -25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;; -25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;; -25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;; -25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;; -25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;; -25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;; -25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;; -25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;; -25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;; -25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;; -25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;; -25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;; -25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;; -25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;; -25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;; -25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;; -25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;; -25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;; -25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;; -25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;; -25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;; -25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;; -25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;; -25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;; -25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;; -25C9;FISHEYE;So;0;ON;;;;;N;;;;; -25CA;LOZENGE;So;0;ON;;;;;N;;;;; -25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;; -25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;; -25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;; -25CE;BULLSEYE;So;0;ON;;;;;N;;;;; -25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;; -25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; -25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; -25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;; -25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;; -25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;; -25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;; -25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; -25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; -25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;; -25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; -25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; -25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; -25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; -25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; -25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; -25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; -25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;; -25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;; -25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; -25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;; -25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;; -25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; -25E6;WHITE BULLET;So;0;ON;;;;;N;;;;; -25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; -25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; -25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; -25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; -25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;; -25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;; -25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;; -25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;; -25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;; -25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;; -25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;; -25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; -25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; -25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;; -25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;; -25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; -25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; -25F8;UPPER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;; -25F9;UPPER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;; -25FA;LOWER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;; -25FB;WHITE MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;; -25FC;BLACK MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;; -25FD;WHITE MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;; -25FE;BLACK MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;; -25FF;LOWER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;; -2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;; -2601;CLOUD;So;0;ON;;;;;N;;;;; -2602;UMBRELLA;So;0;ON;;;;;N;;;;; -2603;SNOWMAN;So;0;ON;;;;;N;;;;; -2604;COMET;So;0;ON;;;;;N;;;;; -2605;BLACK STAR;So;0;ON;;;;;N;;;;; -2606;WHITE STAR;So;0;ON;;;;;N;;;;; -2607;LIGHTNING;So;0;ON;;;;;N;;;;; -2608;THUNDERSTORM;So;0;ON;;;;;N;;;;; -2609;SUN;So;0;ON;;;;;N;;;;; -260A;ASCENDING NODE;So;0;ON;;;;;N;;;;; -260B;DESCENDING NODE;So;0;ON;;;;;N;;;;; -260C;CONJUNCTION;So;0;ON;;;;;N;;;;; -260D;OPPOSITION;So;0;ON;;;;;N;;;;; -260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;; -260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;; -2610;BALLOT BOX;So;0;ON;;;;;N;;;;; -2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;; -2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;; -2613;SALTIRE;So;0;ON;;;;;N;;;;; -2614;UMBRELLA WITH RAIN DROPS;So;0;ON;;;;;N;;;;; -2615;HOT BEVERAGE;So;0;ON;;;;;N;;;;; -2616;WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;; -2617;BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;; -2618;SHAMROCK;So;0;ON;;;;;N;;;;; -2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;; -261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;; -261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; -261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;; -261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;; -261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; -261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;; -2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;; -2621;CAUTION SIGN;So;0;ON;;;;;N;;;;; -2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;; -2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;; -2624;CADUCEUS;So;0;ON;;;;;N;;;;; -2625;ANKH;So;0;ON;;;;;N;;;;; -2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;; -2627;CHI RHO;So;0;ON;;;;;N;;;;; -2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;; -2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;; -262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;; -262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;; -262C;ADI SHAKTI;So;0;ON;;;;;N;;;;; -262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;; -262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;; -262F;YIN YANG;So;0;ON;;;;;N;;;;; -2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;; -2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;; -2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;; -2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;; -2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;; -2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;; -2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;; -2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;; -2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;; -2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;; -263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;; -263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;; -263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;; -263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;; -263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;; -263F;MERCURY;So;0;ON;;;;;N;;;;; -2640;FEMALE SIGN;So;0;ON;;;;;N;;;;; -2641;EARTH;So;0;ON;;;;;N;;;;; -2642;MALE SIGN;So;0;ON;;;;;N;;;;; -2643;JUPITER;So;0;ON;;;;;N;;;;; -2644;SATURN;So;0;ON;;;;;N;;;;; -2645;URANUS;So;0;ON;;;;;N;;;;; -2646;NEPTUNE;So;0;ON;;;;;N;;;;; -2647;PLUTO;So;0;ON;;;;;N;;;;; -2648;ARIES;So;0;ON;;;;;N;;;;; -2649;TAURUS;So;0;ON;;;;;N;;;;; -264A;GEMINI;So;0;ON;;;;;N;;;;; -264B;CANCER;So;0;ON;;;;;N;;;;; -264C;LEO;So;0;ON;;;;;N;;;;; -264D;VIRGO;So;0;ON;;;;;N;;;;; -264E;LIBRA;So;0;ON;;;;;N;;;;; -264F;SCORPIUS;So;0;ON;;;;;N;;;;; -2650;SAGITTARIUS;So;0;ON;;;;;N;;;;; -2651;CAPRICORN;So;0;ON;;;;;N;;;;; -2652;AQUARIUS;So;0;ON;;;;;N;;;;; -2653;PISCES;So;0;ON;;;;;N;;;;; -2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;; -2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;; -2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;; -2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;; -2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;; -2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;; -265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;; -265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;; -265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;; -265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;; -265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;; -265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;; -2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;; -2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;; -2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;; -2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;; -2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;; -2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;; -2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;; -2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;; -2668;HOT SPRINGS;So;0;ON;;;;;N;;;;; -2669;QUARTER NOTE;So;0;ON;;;;;N;;;;; -266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;; -266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;; -266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;; -266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;; -266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;; -266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;; -2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;; -2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;; -2672;UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;; -2673;RECYCLING SYMBOL FOR TYPE-1 PLASTICS;So;0;ON;;;;;N;;pete;;; -2674;RECYCLING SYMBOL FOR TYPE-2 PLASTICS;So;0;ON;;;;;N;;hdpe;;; -2675;RECYCLING SYMBOL FOR TYPE-3 PLASTICS;So;0;ON;;;;;N;;pvc;;; -2676;RECYCLING SYMBOL FOR TYPE-4 PLASTICS;So;0;ON;;;;;N;;ldpe;;; -2677;RECYCLING SYMBOL FOR TYPE-5 PLASTICS;So;0;ON;;;;;N;;pp;;; -2678;RECYCLING SYMBOL FOR TYPE-6 PLASTICS;So;0;ON;;;;;N;;ps;;; -2679;RECYCLING SYMBOL FOR TYPE-7 PLASTICS;So;0;ON;;;;;N;;other;;; -267A;RECYCLING SYMBOL FOR GENERIC MATERIALS;So;0;ON;;;;;N;;;;; -267B;BLACK UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;; -267C;RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;; -267D;PARTIALLY-RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;; -267E;PERMANENT PAPER SIGN;So;0;ON;;;;;N;;;;; -267F;WHEELCHAIR SYMBOL;So;0;ON;;;;;N;;;;; -2680;DIE FACE-1;So;0;ON;;;;;N;;;;; -2681;DIE FACE-2;So;0;ON;;;;;N;;;;; -2682;DIE FACE-3;So;0;ON;;;;;N;;;;; -2683;DIE FACE-4;So;0;ON;;;;;N;;;;; -2684;DIE FACE-5;So;0;ON;;;;;N;;;;; -2685;DIE FACE-6;So;0;ON;;;;;N;;;;; -2686;WHITE CIRCLE WITH DOT RIGHT;So;0;ON;;;;;N;;;;; -2687;WHITE CIRCLE WITH TWO DOTS;So;0;ON;;;;;N;;;;; -2688;BLACK CIRCLE WITH WHITE DOT RIGHT;So;0;ON;;;;;N;;;;; -2689;BLACK CIRCLE WITH TWO WHITE DOTS;So;0;ON;;;;;N;;;;; -268A;MONOGRAM FOR YANG;So;0;ON;;;;;N;;;;; -268B;MONOGRAM FOR YIN;So;0;ON;;;;;N;;;;; -268C;DIGRAM FOR GREATER YANG;So;0;ON;;;;;N;;;;; -268D;DIGRAM FOR LESSER YIN;So;0;ON;;;;;N;;;;; -268E;DIGRAM FOR LESSER YANG;So;0;ON;;;;;N;;;;; -268F;DIGRAM FOR GREATER YIN;So;0;ON;;;;;N;;;;; -2690;WHITE FLAG;So;0;ON;;;;;N;;;;; -2691;BLACK FLAG;So;0;ON;;;;;N;;;;; -2692;HAMMER AND PICK;So;0;ON;;;;;N;;;;; -2693;ANCHOR;So;0;ON;;;;;N;;;;; -2694;CROSSED SWORDS;So;0;ON;;;;;N;;;;; -2695;STAFF OF AESCULAPIUS;So;0;ON;;;;;N;;;;; -2696;SCALES;So;0;ON;;;;;N;;;;; -2697;ALEMBIC;So;0;ON;;;;;N;;;;; -2698;FLOWER;So;0;ON;;;;;N;;;;; -2699;GEAR;So;0;ON;;;;;N;;;;; -269A;STAFF OF HERMES;So;0;ON;;;;;N;;;;; -269B;ATOM SYMBOL;So;0;ON;;;;;N;;;;; -269C;FLEUR-DE-LIS;So;0;ON;;;;;N;;;;; -269D;OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;; -26A0;WARNING SIGN;So;0;ON;;;;;N;;;;; -26A1;HIGH VOLTAGE SIGN;So;0;ON;;;;;N;;;;; -26A2;DOUBLED FEMALE SIGN;So;0;ON;;;;;N;;;;; -26A3;DOUBLED MALE SIGN;So;0;ON;;;;;N;;;;; -26A4;INTERLOCKED FEMALE AND MALE SIGN;So;0;ON;;;;;N;;;;; -26A5;MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;; -26A6;MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; -26A7;MALE WITH STROKE AND MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;; -26A8;VERTICAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; -26A9;HORIZONTAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; -26AA;MEDIUM WHITE CIRCLE;So;0;ON;;;;;N;;;;; -26AB;MEDIUM BLACK CIRCLE;So;0;ON;;;;;N;;;;; -26AC;MEDIUM SMALL WHITE CIRCLE;So;0;L;;;;;N;;;;; -26AD;MARRIAGE SYMBOL;So;0;ON;;;;;N;;;;; -26AE;DIVORCE SYMBOL;So;0;ON;;;;;N;;;;; -26AF;UNMARRIED PARTNERSHIP SYMBOL;So;0;ON;;;;;N;;;;; -26B0;COFFIN;So;0;ON;;;;;N;;;;; -26B1;FUNERAL URN;So;0;ON;;;;;N;;;;; -26B2;NEUTER;So;0;ON;;;;;N;;;;; -26B3;CERES;So;0;ON;;;;;N;;;;; -26B4;PALLAS;So;0;ON;;;;;N;;;;; -26B5;JUNO;So;0;ON;;;;;N;;;;; -26B6;VESTA;So;0;ON;;;;;N;;;;; -26B7;CHIRON;So;0;ON;;;;;N;;;;; -26B8;BLACK MOON LILITH;So;0;ON;;;;;N;;;;; -26B9;SEXTILE;So;0;ON;;;;;N;;;;; -26BA;SEMISEXTILE;So;0;ON;;;;;N;;;;; -26BB;QUINCUNX;So;0;ON;;;;;N;;;;; -26BC;SESQUIQUADRATE;So;0;ON;;;;;N;;;;; -26C0;WHITE DRAUGHTS MAN;So;0;ON;;;;;N;;;;; -26C1;WHITE DRAUGHTS KING;So;0;ON;;;;;N;;;;; -26C2;BLACK DRAUGHTS MAN;So;0;ON;;;;;N;;;;; -26C3;BLACK DRAUGHTS KING;So;0;ON;;;;;N;;;;; -2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;; -2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;; -2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;; -2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;; -2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;; -2707;TAPE DRIVE;So;0;ON;;;;;N;;;;; -2708;AIRPLANE;So;0;ON;;;;;N;;;;; -2709;ENVELOPE;So;0;ON;;;;;N;;;;; -270C;VICTORY HAND;So;0;ON;;;;;N;;;;; -270D;WRITING HAND;So;0;ON;;;;;N;;;;; -270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;; -270F;PENCIL;So;0;ON;;;;;N;;;;; -2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;; -2711;WHITE NIB;So;0;ON;;;;;N;;;;; -2712;BLACK NIB;So;0;ON;;;;;N;;;;; -2713;CHECK MARK;So;0;ON;;;;;N;;;;; -2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;; -2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;; -2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;; -2717;BALLOT X;So;0;ON;;;;;N;;;;; -2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;; -2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;; -271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;; -271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;; -271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;; -271D;LATIN CROSS;So;0;ON;;;;;N;;;;; -271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;; -271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;; -2720;MALTESE CROSS;So;0;ON;;;;;N;;;;; -2721;STAR OF DAVID;So;0;ON;;;;;N;;;;; -2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;; -2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;; -2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;; -272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;; -272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;; -272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;; -272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;; -272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;; -272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;; -2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;; -2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;; -2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;; -2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;; -2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;; -2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;; -2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;; -2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;; -2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;; -273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;; -273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;; -273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;; -273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;; -2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;; -2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;; -2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;; -2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;; -2744;SNOWFLAKE;So;0;ON;;;;;N;;;;; -2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;; -2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;; -2747;SPARKLE;So;0;ON;;;;;N;;;;; -2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;; -2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;; -274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;; -274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;; -274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; -2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; -2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; -2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; -2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;; -2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;; -2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;; -275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;; -275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;; -2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;; -2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;; -2766;FLORAL HEART;So;0;ON;;;;;N;;;;; -2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;; -2768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;; -2769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;; -276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;; -276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;; -276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; -276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; -276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;; -276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;; -2770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; -2771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; -2772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; -2773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; -2774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; -2775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; -2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;; -2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;; -2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;; -2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;; -277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;; -277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;; -277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;; -277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;; -277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;; -277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;; -2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;; -2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;; -2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;; -2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;; -2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;; -2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;; -2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;; -2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;; -2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;; -2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;; -278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;; -278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;; -278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;; -278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;; -278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;; -278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;; -2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;; -2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;; -2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;; -2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;; -2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;; -2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;; -2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;; -279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;; -279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;; -279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;; -279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;; -279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;; -279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;; -27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;; -27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;; -27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;; -27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;; -27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;; -27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;; -27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;; -27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;; -27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;; -27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;; -27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;; -27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;; -27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;; -27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; -27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; -27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; -27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; -27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;; -27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;; -27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;; -27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;; -27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;; -27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;; -27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;; -27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;; -27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;; -27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;; -27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;; -27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;; -27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;; -27C0;THREE DIMENSIONAL ANGLE;Sm;0;ON;;;;;Y;;;;; -27C1;WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE;Sm;0;ON;;;;;N;;;;; -27C2;PERPENDICULAR;Sm;0;ON;;;;;N;;;;; -27C3;OPEN SUBSET;Sm;0;ON;;;;;Y;;;;; -27C4;OPEN SUPERSET;Sm;0;ON;;;;;Y;;;;; -27C5;LEFT S-SHAPED BAG DELIMITER;Ps;0;ON;;;;;Y;;;;; -27C6;RIGHT S-SHAPED BAG DELIMITER;Pe;0;ON;;;;;Y;;;;; -27C7;OR WITH DOT INSIDE;Sm;0;ON;;;;;N;;;;; -27C8;REVERSE SOLIDUS PRECEDING SUBSET;Sm;0;ON;;;;;Y;;;;; -27C9;SUPERSET PRECEDING SOLIDUS;Sm;0;ON;;;;;Y;;;;; -27CA;VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; -27CC;LONG DIVISION;Sm;0;ON;;;;;Y;;;;; -27D0;WHITE DIAMOND WITH CENTRED DOT;Sm;0;ON;;;;;N;;;;; -27D1;AND WITH DOT;Sm;0;ON;;;;;N;;;;; -27D2;ELEMENT OF OPENING UPWARDS;Sm;0;ON;;;;;N;;;;; -27D3;LOWER RIGHT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;; -27D4;UPPER LEFT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;; -27D5;LEFT OUTER JOIN;Sm;0;ON;;;;;Y;;;;; -27D6;RIGHT OUTER JOIN;Sm;0;ON;;;;;Y;;;;; -27D7;FULL OUTER JOIN;Sm;0;ON;;;;;N;;;;; -27D8;LARGE UP TACK;Sm;0;ON;;;;;N;;;;; -27D9;LARGE DOWN TACK;Sm;0;ON;;;;;N;;;;; -27DA;LEFT AND RIGHT DOUBLE TURNSTILE;Sm;0;ON;;;;;N;;;;; -27DB;LEFT AND RIGHT TACK;Sm;0;ON;;;;;N;;;;; -27DC;LEFT MULTIMAP;Sm;0;ON;;;;;Y;;;;; -27DD;LONG RIGHT TACK;Sm;0;ON;;;;;Y;;;;; -27DE;LONG LEFT TACK;Sm;0;ON;;;;;Y;;;;; -27DF;UP TACK WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; -27E0;LOZENGE DIVIDED BY HORIZONTAL RULE;Sm;0;ON;;;;;N;;;;; -27E1;WHITE CONCAVE-SIDED DIAMOND;Sm;0;ON;;;;;N;;;;; -27E2;WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;; -27E3;WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;; -27E4;WHITE SQUARE WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;; -27E5;WHITE SQUARE WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;; -27E6;MATHEMATICAL LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;;;;; -27E7;MATHEMATICAL RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;;;;; -27E8;MATHEMATICAL LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; -27E9;MATHEMATICAL RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; -27EA;MATHEMATICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; -27EB;MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; -27EC;MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;; -27ED;MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;; -27EE;MATHEMATICAL LEFT FLATTENED PARENTHESIS;Ps;0;ON;;;;;Y;;;;; -27EF;MATHEMATICAL RIGHT FLATTENED PARENTHESIS;Pe;0;ON;;;;;Y;;;;; -27F0;UPWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;; -27F1;DOWNWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;; -27F2;ANTICLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; -27F3;CLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; -27F4;RIGHT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; -27F5;LONG LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -27F6;LONG RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -27F7;LONG LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;; -27F8;LONG LEFTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; -27F9;LONG RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; -27FA;LONG LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; -27FB;LONG LEFTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -27FC;LONG RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -27FD;LONG LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -27FE;LONG RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -27FF;LONG RIGHTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;; -2800;BRAILLE PATTERN BLANK;So;0;L;;;;;N;;;;; -2801;BRAILLE PATTERN DOTS-1;So;0;L;;;;;N;;;;; -2802;BRAILLE PATTERN DOTS-2;So;0;L;;;;;N;;;;; -2803;BRAILLE PATTERN DOTS-12;So;0;L;;;;;N;;;;; -2804;BRAILLE PATTERN DOTS-3;So;0;L;;;;;N;;;;; -2805;BRAILLE PATTERN DOTS-13;So;0;L;;;;;N;;;;; -2806;BRAILLE PATTERN DOTS-23;So;0;L;;;;;N;;;;; -2807;BRAILLE PATTERN DOTS-123;So;0;L;;;;;N;;;;; -2808;BRAILLE PATTERN DOTS-4;So;0;L;;;;;N;;;;; -2809;BRAILLE PATTERN DOTS-14;So;0;L;;;;;N;;;;; -280A;BRAILLE PATTERN DOTS-24;So;0;L;;;;;N;;;;; -280B;BRAILLE PATTERN DOTS-124;So;0;L;;;;;N;;;;; -280C;BRAILLE PATTERN DOTS-34;So;0;L;;;;;N;;;;; -280D;BRAILLE PATTERN DOTS-134;So;0;L;;;;;N;;;;; -280E;BRAILLE PATTERN DOTS-234;So;0;L;;;;;N;;;;; -280F;BRAILLE PATTERN DOTS-1234;So;0;L;;;;;N;;;;; -2810;BRAILLE PATTERN DOTS-5;So;0;L;;;;;N;;;;; -2811;BRAILLE PATTERN DOTS-15;So;0;L;;;;;N;;;;; -2812;BRAILLE PATTERN DOTS-25;So;0;L;;;;;N;;;;; -2813;BRAILLE PATTERN DOTS-125;So;0;L;;;;;N;;;;; -2814;BRAILLE PATTERN DOTS-35;So;0;L;;;;;N;;;;; -2815;BRAILLE PATTERN DOTS-135;So;0;L;;;;;N;;;;; -2816;BRAILLE PATTERN DOTS-235;So;0;L;;;;;N;;;;; -2817;BRAILLE PATTERN DOTS-1235;So;0;L;;;;;N;;;;; -2818;BRAILLE PATTERN DOTS-45;So;0;L;;;;;N;;;;; -2819;BRAILLE PATTERN DOTS-145;So;0;L;;;;;N;;;;; -281A;BRAILLE PATTERN DOTS-245;So;0;L;;;;;N;;;;; -281B;BRAILLE PATTERN DOTS-1245;So;0;L;;;;;N;;;;; -281C;BRAILLE PATTERN DOTS-345;So;0;L;;;;;N;;;;; -281D;BRAILLE PATTERN DOTS-1345;So;0;L;;;;;N;;;;; -281E;BRAILLE PATTERN DOTS-2345;So;0;L;;;;;N;;;;; -281F;BRAILLE PATTERN DOTS-12345;So;0;L;;;;;N;;;;; -2820;BRAILLE PATTERN DOTS-6;So;0;L;;;;;N;;;;; -2821;BRAILLE PATTERN DOTS-16;So;0;L;;;;;N;;;;; -2822;BRAILLE PATTERN DOTS-26;So;0;L;;;;;N;;;;; -2823;BRAILLE PATTERN DOTS-126;So;0;L;;;;;N;;;;; -2824;BRAILLE PATTERN DOTS-36;So;0;L;;;;;N;;;;; -2825;BRAILLE PATTERN DOTS-136;So;0;L;;;;;N;;;;; -2826;BRAILLE PATTERN DOTS-236;So;0;L;;;;;N;;;;; -2827;BRAILLE PATTERN DOTS-1236;So;0;L;;;;;N;;;;; -2828;BRAILLE PATTERN DOTS-46;So;0;L;;;;;N;;;;; -2829;BRAILLE PATTERN DOTS-146;So;0;L;;;;;N;;;;; -282A;BRAILLE PATTERN DOTS-246;So;0;L;;;;;N;;;;; -282B;BRAILLE PATTERN DOTS-1246;So;0;L;;;;;N;;;;; -282C;BRAILLE PATTERN DOTS-346;So;0;L;;;;;N;;;;; -282D;BRAILLE PATTERN DOTS-1346;So;0;L;;;;;N;;;;; -282E;BRAILLE PATTERN DOTS-2346;So;0;L;;;;;N;;;;; -282F;BRAILLE PATTERN DOTS-12346;So;0;L;;;;;N;;;;; -2830;BRAILLE PATTERN DOTS-56;So;0;L;;;;;N;;;;; -2831;BRAILLE PATTERN DOTS-156;So;0;L;;;;;N;;;;; -2832;BRAILLE PATTERN DOTS-256;So;0;L;;;;;N;;;;; -2833;BRAILLE PATTERN DOTS-1256;So;0;L;;;;;N;;;;; -2834;BRAILLE PATTERN DOTS-356;So;0;L;;;;;N;;;;; -2835;BRAILLE PATTERN DOTS-1356;So;0;L;;;;;N;;;;; -2836;BRAILLE PATTERN DOTS-2356;So;0;L;;;;;N;;;;; -2837;BRAILLE PATTERN DOTS-12356;So;0;L;;;;;N;;;;; -2838;BRAILLE PATTERN DOTS-456;So;0;L;;;;;N;;;;; -2839;BRAILLE PATTERN DOTS-1456;So;0;L;;;;;N;;;;; -283A;BRAILLE PATTERN DOTS-2456;So;0;L;;;;;N;;;;; -283B;BRAILLE PATTERN DOTS-12456;So;0;L;;;;;N;;;;; -283C;BRAILLE PATTERN DOTS-3456;So;0;L;;;;;N;;;;; -283D;BRAILLE PATTERN DOTS-13456;So;0;L;;;;;N;;;;; -283E;BRAILLE PATTERN DOTS-23456;So;0;L;;;;;N;;;;; -283F;BRAILLE PATTERN DOTS-123456;So;0;L;;;;;N;;;;; -2840;BRAILLE PATTERN DOTS-7;So;0;L;;;;;N;;;;; -2841;BRAILLE PATTERN DOTS-17;So;0;L;;;;;N;;;;; -2842;BRAILLE PATTERN DOTS-27;So;0;L;;;;;N;;;;; -2843;BRAILLE PATTERN DOTS-127;So;0;L;;;;;N;;;;; -2844;BRAILLE PATTERN DOTS-37;So;0;L;;;;;N;;;;; -2845;BRAILLE PATTERN DOTS-137;So;0;L;;;;;N;;;;; -2846;BRAILLE PATTERN DOTS-237;So;0;L;;;;;N;;;;; -2847;BRAILLE PATTERN DOTS-1237;So;0;L;;;;;N;;;;; -2848;BRAILLE PATTERN DOTS-47;So;0;L;;;;;N;;;;; -2849;BRAILLE PATTERN DOTS-147;So;0;L;;;;;N;;;;; -284A;BRAILLE PATTERN DOTS-247;So;0;L;;;;;N;;;;; -284B;BRAILLE PATTERN DOTS-1247;So;0;L;;;;;N;;;;; -284C;BRAILLE PATTERN DOTS-347;So;0;L;;;;;N;;;;; -284D;BRAILLE PATTERN DOTS-1347;So;0;L;;;;;N;;;;; -284E;BRAILLE PATTERN DOTS-2347;So;0;L;;;;;N;;;;; -284F;BRAILLE PATTERN DOTS-12347;So;0;L;;;;;N;;;;; -2850;BRAILLE PATTERN DOTS-57;So;0;L;;;;;N;;;;; -2851;BRAILLE PATTERN DOTS-157;So;0;L;;;;;N;;;;; -2852;BRAILLE PATTERN DOTS-257;So;0;L;;;;;N;;;;; -2853;BRAILLE PATTERN DOTS-1257;So;0;L;;;;;N;;;;; -2854;BRAILLE PATTERN DOTS-357;So;0;L;;;;;N;;;;; -2855;BRAILLE PATTERN DOTS-1357;So;0;L;;;;;N;;;;; -2856;BRAILLE PATTERN DOTS-2357;So;0;L;;;;;N;;;;; -2857;BRAILLE PATTERN DOTS-12357;So;0;L;;;;;N;;;;; -2858;BRAILLE PATTERN DOTS-457;So;0;L;;;;;N;;;;; -2859;BRAILLE PATTERN DOTS-1457;So;0;L;;;;;N;;;;; -285A;BRAILLE PATTERN DOTS-2457;So;0;L;;;;;N;;;;; -285B;BRAILLE PATTERN DOTS-12457;So;0;L;;;;;N;;;;; -285C;BRAILLE PATTERN DOTS-3457;So;0;L;;;;;N;;;;; -285D;BRAILLE PATTERN DOTS-13457;So;0;L;;;;;N;;;;; -285E;BRAILLE PATTERN DOTS-23457;So;0;L;;;;;N;;;;; -285F;BRAILLE PATTERN DOTS-123457;So;0;L;;;;;N;;;;; -2860;BRAILLE PATTERN DOTS-67;So;0;L;;;;;N;;;;; -2861;BRAILLE PATTERN DOTS-167;So;0;L;;;;;N;;;;; -2862;BRAILLE PATTERN DOTS-267;So;0;L;;;;;N;;;;; -2863;BRAILLE PATTERN DOTS-1267;So;0;L;;;;;N;;;;; -2864;BRAILLE PATTERN DOTS-367;So;0;L;;;;;N;;;;; -2865;BRAILLE PATTERN DOTS-1367;So;0;L;;;;;N;;;;; -2866;BRAILLE PATTERN DOTS-2367;So;0;L;;;;;N;;;;; -2867;BRAILLE PATTERN DOTS-12367;So;0;L;;;;;N;;;;; -2868;BRAILLE PATTERN DOTS-467;So;0;L;;;;;N;;;;; -2869;BRAILLE PATTERN DOTS-1467;So;0;L;;;;;N;;;;; -286A;BRAILLE PATTERN DOTS-2467;So;0;L;;;;;N;;;;; -286B;BRAILLE PATTERN DOTS-12467;So;0;L;;;;;N;;;;; -286C;BRAILLE PATTERN DOTS-3467;So;0;L;;;;;N;;;;; -286D;BRAILLE PATTERN DOTS-13467;So;0;L;;;;;N;;;;; -286E;BRAILLE PATTERN DOTS-23467;So;0;L;;;;;N;;;;; -286F;BRAILLE PATTERN DOTS-123467;So;0;L;;;;;N;;;;; -2870;BRAILLE PATTERN DOTS-567;So;0;L;;;;;N;;;;; -2871;BRAILLE PATTERN DOTS-1567;So;0;L;;;;;N;;;;; -2872;BRAILLE PATTERN DOTS-2567;So;0;L;;;;;N;;;;; -2873;BRAILLE PATTERN DOTS-12567;So;0;L;;;;;N;;;;; -2874;BRAILLE PATTERN DOTS-3567;So;0;L;;;;;N;;;;; -2875;BRAILLE PATTERN DOTS-13567;So;0;L;;;;;N;;;;; -2876;BRAILLE PATTERN DOTS-23567;So;0;L;;;;;N;;;;; -2877;BRAILLE PATTERN DOTS-123567;So;0;L;;;;;N;;;;; -2878;BRAILLE PATTERN DOTS-4567;So;0;L;;;;;N;;;;; -2879;BRAILLE PATTERN DOTS-14567;So;0;L;;;;;N;;;;; -287A;BRAILLE PATTERN DOTS-24567;So;0;L;;;;;N;;;;; -287B;BRAILLE PATTERN DOTS-124567;So;0;L;;;;;N;;;;; -287C;BRAILLE PATTERN DOTS-34567;So;0;L;;;;;N;;;;; -287D;BRAILLE PATTERN DOTS-134567;So;0;L;;;;;N;;;;; -287E;BRAILLE PATTERN DOTS-234567;So;0;L;;;;;N;;;;; -287F;BRAILLE PATTERN DOTS-1234567;So;0;L;;;;;N;;;;; -2880;BRAILLE PATTERN DOTS-8;So;0;L;;;;;N;;;;; -2881;BRAILLE PATTERN DOTS-18;So;0;L;;;;;N;;;;; -2882;BRAILLE PATTERN DOTS-28;So;0;L;;;;;N;;;;; -2883;BRAILLE PATTERN DOTS-128;So;0;L;;;;;N;;;;; -2884;BRAILLE PATTERN DOTS-38;So;0;L;;;;;N;;;;; -2885;BRAILLE PATTERN DOTS-138;So;0;L;;;;;N;;;;; -2886;BRAILLE PATTERN DOTS-238;So;0;L;;;;;N;;;;; -2887;BRAILLE PATTERN DOTS-1238;So;0;L;;;;;N;;;;; -2888;BRAILLE PATTERN DOTS-48;So;0;L;;;;;N;;;;; -2889;BRAILLE PATTERN DOTS-148;So;0;L;;;;;N;;;;; -288A;BRAILLE PATTERN DOTS-248;So;0;L;;;;;N;;;;; -288B;BRAILLE PATTERN DOTS-1248;So;0;L;;;;;N;;;;; -288C;BRAILLE PATTERN DOTS-348;So;0;L;;;;;N;;;;; -288D;BRAILLE PATTERN DOTS-1348;So;0;L;;;;;N;;;;; -288E;BRAILLE PATTERN DOTS-2348;So;0;L;;;;;N;;;;; -288F;BRAILLE PATTERN DOTS-12348;So;0;L;;;;;N;;;;; -2890;BRAILLE PATTERN DOTS-58;So;0;L;;;;;N;;;;; -2891;BRAILLE PATTERN DOTS-158;So;0;L;;;;;N;;;;; -2892;BRAILLE PATTERN DOTS-258;So;0;L;;;;;N;;;;; -2893;BRAILLE PATTERN DOTS-1258;So;0;L;;;;;N;;;;; -2894;BRAILLE PATTERN DOTS-358;So;0;L;;;;;N;;;;; -2895;BRAILLE PATTERN DOTS-1358;So;0;L;;;;;N;;;;; -2896;BRAILLE PATTERN DOTS-2358;So;0;L;;;;;N;;;;; -2897;BRAILLE PATTERN DOTS-12358;So;0;L;;;;;N;;;;; -2898;BRAILLE PATTERN DOTS-458;So;0;L;;;;;N;;;;; -2899;BRAILLE PATTERN DOTS-1458;So;0;L;;;;;N;;;;; -289A;BRAILLE PATTERN DOTS-2458;So;0;L;;;;;N;;;;; -289B;BRAILLE PATTERN DOTS-12458;So;0;L;;;;;N;;;;; -289C;BRAILLE PATTERN DOTS-3458;So;0;L;;;;;N;;;;; -289D;BRAILLE PATTERN DOTS-13458;So;0;L;;;;;N;;;;; -289E;BRAILLE PATTERN DOTS-23458;So;0;L;;;;;N;;;;; -289F;BRAILLE PATTERN DOTS-123458;So;0;L;;;;;N;;;;; -28A0;BRAILLE PATTERN DOTS-68;So;0;L;;;;;N;;;;; -28A1;BRAILLE PATTERN DOTS-168;So;0;L;;;;;N;;;;; -28A2;BRAILLE PATTERN DOTS-268;So;0;L;;;;;N;;;;; -28A3;BRAILLE PATTERN DOTS-1268;So;0;L;;;;;N;;;;; -28A4;BRAILLE PATTERN DOTS-368;So;0;L;;;;;N;;;;; -28A5;BRAILLE PATTERN DOTS-1368;So;0;L;;;;;N;;;;; -28A6;BRAILLE PATTERN DOTS-2368;So;0;L;;;;;N;;;;; -28A7;BRAILLE PATTERN DOTS-12368;So;0;L;;;;;N;;;;; -28A8;BRAILLE PATTERN DOTS-468;So;0;L;;;;;N;;;;; -28A9;BRAILLE PATTERN DOTS-1468;So;0;L;;;;;N;;;;; -28AA;BRAILLE PATTERN DOTS-2468;So;0;L;;;;;N;;;;; -28AB;BRAILLE PATTERN DOTS-12468;So;0;L;;;;;N;;;;; -28AC;BRAILLE PATTERN DOTS-3468;So;0;L;;;;;N;;;;; -28AD;BRAILLE PATTERN DOTS-13468;So;0;L;;;;;N;;;;; -28AE;BRAILLE PATTERN DOTS-23468;So;0;L;;;;;N;;;;; -28AF;BRAILLE PATTERN DOTS-123468;So;0;L;;;;;N;;;;; -28B0;BRAILLE PATTERN DOTS-568;So;0;L;;;;;N;;;;; -28B1;BRAILLE PATTERN DOTS-1568;So;0;L;;;;;N;;;;; -28B2;BRAILLE PATTERN DOTS-2568;So;0;L;;;;;N;;;;; -28B3;BRAILLE PATTERN DOTS-12568;So;0;L;;;;;N;;;;; -28B4;BRAILLE PATTERN DOTS-3568;So;0;L;;;;;N;;;;; -28B5;BRAILLE PATTERN DOTS-13568;So;0;L;;;;;N;;;;; -28B6;BRAILLE PATTERN DOTS-23568;So;0;L;;;;;N;;;;; -28B7;BRAILLE PATTERN DOTS-123568;So;0;L;;;;;N;;;;; -28B8;BRAILLE PATTERN DOTS-4568;So;0;L;;;;;N;;;;; -28B9;BRAILLE PATTERN DOTS-14568;So;0;L;;;;;N;;;;; -28BA;BRAILLE PATTERN DOTS-24568;So;0;L;;;;;N;;;;; -28BB;BRAILLE PATTERN DOTS-124568;So;0;L;;;;;N;;;;; -28BC;BRAILLE PATTERN DOTS-34568;So;0;L;;;;;N;;;;; -28BD;BRAILLE PATTERN DOTS-134568;So;0;L;;;;;N;;;;; -28BE;BRAILLE PATTERN DOTS-234568;So;0;L;;;;;N;;;;; -28BF;BRAILLE PATTERN DOTS-1234568;So;0;L;;;;;N;;;;; -28C0;BRAILLE PATTERN DOTS-78;So;0;L;;;;;N;;;;; -28C1;BRAILLE PATTERN DOTS-178;So;0;L;;;;;N;;;;; -28C2;BRAILLE PATTERN DOTS-278;So;0;L;;;;;N;;;;; -28C3;BRAILLE PATTERN DOTS-1278;So;0;L;;;;;N;;;;; -28C4;BRAILLE PATTERN DOTS-378;So;0;L;;;;;N;;;;; -28C5;BRAILLE PATTERN DOTS-1378;So;0;L;;;;;N;;;;; -28C6;BRAILLE PATTERN DOTS-2378;So;0;L;;;;;N;;;;; -28C7;BRAILLE PATTERN DOTS-12378;So;0;L;;;;;N;;;;; -28C8;BRAILLE PATTERN DOTS-478;So;0;L;;;;;N;;;;; -28C9;BRAILLE PATTERN DOTS-1478;So;0;L;;;;;N;;;;; -28CA;BRAILLE PATTERN DOTS-2478;So;0;L;;;;;N;;;;; -28CB;BRAILLE PATTERN DOTS-12478;So;0;L;;;;;N;;;;; -28CC;BRAILLE PATTERN DOTS-3478;So;0;L;;;;;N;;;;; -28CD;BRAILLE PATTERN DOTS-13478;So;0;L;;;;;N;;;;; -28CE;BRAILLE PATTERN DOTS-23478;So;0;L;;;;;N;;;;; -28CF;BRAILLE PATTERN DOTS-123478;So;0;L;;;;;N;;;;; -28D0;BRAILLE PATTERN DOTS-578;So;0;L;;;;;N;;;;; -28D1;BRAILLE PATTERN DOTS-1578;So;0;L;;;;;N;;;;; -28D2;BRAILLE PATTERN DOTS-2578;So;0;L;;;;;N;;;;; -28D3;BRAILLE PATTERN DOTS-12578;So;0;L;;;;;N;;;;; -28D4;BRAILLE PATTERN DOTS-3578;So;0;L;;;;;N;;;;; -28D5;BRAILLE PATTERN DOTS-13578;So;0;L;;;;;N;;;;; -28D6;BRAILLE PATTERN DOTS-23578;So;0;L;;;;;N;;;;; -28D7;BRAILLE PATTERN DOTS-123578;So;0;L;;;;;N;;;;; -28D8;BRAILLE PATTERN DOTS-4578;So;0;L;;;;;N;;;;; -28D9;BRAILLE PATTERN DOTS-14578;So;0;L;;;;;N;;;;; -28DA;BRAILLE PATTERN DOTS-24578;So;0;L;;;;;N;;;;; -28DB;BRAILLE PATTERN DOTS-124578;So;0;L;;;;;N;;;;; -28DC;BRAILLE PATTERN DOTS-34578;So;0;L;;;;;N;;;;; -28DD;BRAILLE PATTERN DOTS-134578;So;0;L;;;;;N;;;;; -28DE;BRAILLE PATTERN DOTS-234578;So;0;L;;;;;N;;;;; -28DF;BRAILLE PATTERN DOTS-1234578;So;0;L;;;;;N;;;;; -28E0;BRAILLE PATTERN DOTS-678;So;0;L;;;;;N;;;;; -28E1;BRAILLE PATTERN DOTS-1678;So;0;L;;;;;N;;;;; -28E2;BRAILLE PATTERN DOTS-2678;So;0;L;;;;;N;;;;; -28E3;BRAILLE PATTERN DOTS-12678;So;0;L;;;;;N;;;;; -28E4;BRAILLE PATTERN DOTS-3678;So;0;L;;;;;N;;;;; -28E5;BRAILLE PATTERN DOTS-13678;So;0;L;;;;;N;;;;; -28E6;BRAILLE PATTERN DOTS-23678;So;0;L;;;;;N;;;;; -28E7;BRAILLE PATTERN DOTS-123678;So;0;L;;;;;N;;;;; -28E8;BRAILLE PATTERN DOTS-4678;So;0;L;;;;;N;;;;; -28E9;BRAILLE PATTERN DOTS-14678;So;0;L;;;;;N;;;;; -28EA;BRAILLE PATTERN DOTS-24678;So;0;L;;;;;N;;;;; -28EB;BRAILLE PATTERN DOTS-124678;So;0;L;;;;;N;;;;; -28EC;BRAILLE PATTERN DOTS-34678;So;0;L;;;;;N;;;;; -28ED;BRAILLE PATTERN DOTS-134678;So;0;L;;;;;N;;;;; -28EE;BRAILLE PATTERN DOTS-234678;So;0;L;;;;;N;;;;; -28EF;BRAILLE PATTERN DOTS-1234678;So;0;L;;;;;N;;;;; -28F0;BRAILLE PATTERN DOTS-5678;So;0;L;;;;;N;;;;; -28F1;BRAILLE PATTERN DOTS-15678;So;0;L;;;;;N;;;;; -28F2;BRAILLE PATTERN DOTS-25678;So;0;L;;;;;N;;;;; -28F3;BRAILLE PATTERN DOTS-125678;So;0;L;;;;;N;;;;; -28F4;BRAILLE PATTERN DOTS-35678;So;0;L;;;;;N;;;;; -28F5;BRAILLE PATTERN DOTS-135678;So;0;L;;;;;N;;;;; -28F6;BRAILLE PATTERN DOTS-235678;So;0;L;;;;;N;;;;; -28F7;BRAILLE PATTERN DOTS-1235678;So;0;L;;;;;N;;;;; -28F8;BRAILLE PATTERN DOTS-45678;So;0;L;;;;;N;;;;; -28F9;BRAILLE PATTERN DOTS-145678;So;0;L;;;;;N;;;;; -28FA;BRAILLE PATTERN DOTS-245678;So;0;L;;;;;N;;;;; -28FB;BRAILLE PATTERN DOTS-1245678;So;0;L;;;;;N;;;;; -28FC;BRAILLE PATTERN DOTS-345678;So;0;L;;;;;N;;;;; -28FD;BRAILLE PATTERN DOTS-1345678;So;0;L;;;;;N;;;;; -28FE;BRAILLE PATTERN DOTS-2345678;So;0;L;;;;;N;;;;; -28FF;BRAILLE PATTERN DOTS-12345678;So;0;L;;;;;N;;;;; -2900;RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2901;RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2902;LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2903;RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2904;LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2905;RIGHTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -2906;LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -2907;RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -2908;DOWNWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; -2909;UPWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; -290A;UPWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;; -290B;DOWNWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;; -290C;LEFTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;; -290D;RIGHTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;; -290E;LEFTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; -290F;RIGHTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; -2910;RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; -2911;RIGHTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;; -2912;UPWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;; -2913;DOWNWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;; -2914;RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2915;RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2916;RIGHTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;; -2917;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2918;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2919;LEFTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;; -291A;RIGHTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;; -291B;LEFTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;; -291C;RIGHTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;; -291D;LEFTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; -291E;RIGHTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; -291F;LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; -2920;RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; -2921;NORTH WEST AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2922;NORTH EAST AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;; -2923;NORTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; -2924;NORTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; -2925;SOUTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; -2926;SOUTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; -2927;NORTH WEST ARROW AND NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2928;NORTH EAST ARROW AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2929;SOUTH EAST ARROW AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;; -292A;SOUTH WEST ARROW AND NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;; -292B;RISING DIAGONAL CROSSING FALLING DIAGONAL;Sm;0;ON;;;;;N;;;;; -292C;FALLING DIAGONAL CROSSING RISING DIAGONAL;Sm;0;ON;;;;;N;;;;; -292D;SOUTH EAST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -292E;NORTH EAST ARROW CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -292F;FALLING DIAGONAL CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2930;RISING DIAGONAL CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2931;NORTH EAST ARROW CROSSING NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;; -2932;NORTH WEST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2933;WAVE ARROW POINTING DIRECTLY RIGHT;Sm;0;ON;;;;;N;;;;; -2934;ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS;Sm;0;ON;;;;;N;;;;; -2935;ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS;Sm;0;ON;;;;;N;;;;; -2936;ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS;Sm;0;ON;;;;;N;;;;; -2937;ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS;Sm;0;ON;;;;;N;;;;; -2938;RIGHT-SIDE ARC CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -2939;LEFT-SIDE ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -293A;TOP ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -293B;BOTTOM ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -293C;TOP ARC CLOCKWISE ARROW WITH MINUS;Sm;0;ON;;;;;N;;;;; -293D;TOP ARC ANTICLOCKWISE ARROW WITH PLUS;Sm;0;ON;;;;;N;;;;; -293E;LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -293F;LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -2940;ANTICLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; -2941;CLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; -2942;RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2943;LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2944;SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2945;RIGHTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;; -2946;LEFTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;; -2947;RIGHTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;; -2948;LEFT RIGHT ARROW THROUGH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; -2949;UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; -294A;LEFT BARB UP RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;; -294B;LEFT BARB DOWN RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;; -294C;UP BARB RIGHT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;; -294D;UP BARB LEFT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;; -294E;LEFT BARB UP RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;; -294F;UP BARB RIGHT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;; -2950;LEFT BARB DOWN RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;; -2951;UP BARB LEFT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;; -2952;LEFTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;; -2953;RIGHTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;; -2954;UPWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;; -2955;DOWNWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;; -2956;LEFTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;; -2957;RIGHTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;; -2958;UPWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;; -2959;DOWNWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;; -295A;LEFTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;; -295B;RIGHTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;; -295C;UPWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;; -295D;DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;; -295E;LEFTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;; -295F;RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;; -2960;UPWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;; -2961;DOWNWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;; -2962;LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; -2963;UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; -2964;RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; -2965;DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; -2966;LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;; -2967;LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; -2968;RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;; -2969;RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; -296A;LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;; -296B;LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;; -296C;RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;; -296D;RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;; -296E;UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; -296F;DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; -2970;RIGHT DOUBLE ARROW WITH ROUNDED HEAD;Sm;0;ON;;;;;N;;;;; -2971;EQUALS SIGN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2972;TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2973;LEFTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; -2974;RIGHTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; -2975;RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; -2976;LESS-THAN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2977;LEFTWARDS ARROW THROUGH LESS-THAN;Sm;0;ON;;;;;N;;;;; -2978;GREATER-THAN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2979;SUBSET ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -297A;LEFTWARDS ARROW THROUGH SUBSET;Sm;0;ON;;;;;N;;;;; -297B;SUPERSET ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -297C;LEFT FISH TAIL;Sm;0;ON;;;;;N;;;;; -297D;RIGHT FISH TAIL;Sm;0;ON;;;;;N;;;;; -297E;UP FISH TAIL;Sm;0;ON;;;;;N;;;;; -297F;DOWN FISH TAIL;Sm;0;ON;;;;;N;;;;; -2980;TRIPLE VERTICAL BAR DELIMITER;Sm;0;ON;;;;;N;;;;; -2981;Z NOTATION SPOT;Sm;0;ON;;;;;N;;;;; -2982;Z NOTATION TYPE COLON;Sm;0;ON;;;;;N;;;;; -2983;LEFT WHITE CURLY BRACKET;Ps;0;ON;;;;;Y;;;;; -2984;RIGHT WHITE CURLY BRACKET;Pe;0;ON;;;;;Y;;;;; -2985;LEFT WHITE PARENTHESIS;Ps;0;ON;;;;;Y;;;;; -2986;RIGHT WHITE PARENTHESIS;Pe;0;ON;;;;;Y;;;;; -2987;Z NOTATION LEFT IMAGE BRACKET;Ps;0;ON;;;;;Y;;;;; -2988;Z NOTATION RIGHT IMAGE BRACKET;Pe;0;ON;;;;;Y;;;;; -2989;Z NOTATION LEFT BINDING BRACKET;Ps;0;ON;;;;;Y;;;;; -298A;Z NOTATION RIGHT BINDING BRACKET;Pe;0;ON;;;;;Y;;;;; -298B;LEFT SQUARE BRACKET WITH UNDERBAR;Ps;0;ON;;;;;Y;;;;; -298C;RIGHT SQUARE BRACKET WITH UNDERBAR;Pe;0;ON;;;;;Y;;;;; -298D;LEFT SQUARE BRACKET WITH TICK IN TOP CORNER;Ps;0;ON;;;;;Y;;;;; -298E;RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Pe;0;ON;;;;;Y;;;;; -298F;LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Ps;0;ON;;;;;Y;;;;; -2990;RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER;Pe;0;ON;;;;;Y;;;;; -2991;LEFT ANGLE BRACKET WITH DOT;Ps;0;ON;;;;;Y;;;;; -2992;RIGHT ANGLE BRACKET WITH DOT;Pe;0;ON;;;;;Y;;;;; -2993;LEFT ARC LESS-THAN BRACKET;Ps;0;ON;;;;;Y;;;;; -2994;RIGHT ARC GREATER-THAN BRACKET;Pe;0;ON;;;;;Y;;;;; -2995;DOUBLE LEFT ARC GREATER-THAN BRACKET;Ps;0;ON;;;;;Y;;;;; -2996;DOUBLE RIGHT ARC LESS-THAN BRACKET;Pe;0;ON;;;;;Y;;;;; -2997;LEFT BLACK TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;; -2998;RIGHT BLACK TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;; -2999;DOTTED FENCE;Sm;0;ON;;;;;N;;;;; -299A;VERTICAL ZIGZAG LINE;Sm;0;ON;;;;;N;;;;; -299B;MEASURED ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;; -299C;RIGHT ANGLE VARIANT WITH SQUARE;Sm;0;ON;;;;;Y;;;;; -299D;MEASURED RIGHT ANGLE WITH DOT;Sm;0;ON;;;;;Y;;;;; -299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;; -299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;; -29A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;; -29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;; -29A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;; -29A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;; -29A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; -29A5;REVERSED ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; -29A6;OBLIQUE ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;; -29A7;OBLIQUE ANGLE OPENING DOWN;Sm;0;ON;;;;;Y;;;;; -29A8;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT;Sm;0;ON;;;;;Y;;;;; -29A9;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT;Sm;0;ON;;;;;Y;;;;; -29AA;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT;Sm;0;ON;;;;;Y;;;;; -29AB;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT;Sm;0;ON;;;;;Y;;;;; -29AC;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP;Sm;0;ON;;;;;Y;;;;; -29AD;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP;Sm;0;ON;;;;;Y;;;;; -29AE;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN;Sm;0;ON;;;;;Y;;;;; -29AF;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN;Sm;0;ON;;;;;Y;;;;; -29B0;REVERSED EMPTY SET;Sm;0;ON;;;;;N;;;;; -29B1;EMPTY SET WITH OVERBAR;Sm;0;ON;;;;;N;;;;; -29B2;EMPTY SET WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; -29B3;EMPTY SET WITH RIGHT ARROW ABOVE;Sm;0;ON;;;;;N;;;;; -29B4;EMPTY SET WITH LEFT ARROW ABOVE;Sm;0;ON;;;;;N;;;;; -29B5;CIRCLE WITH HORIZONTAL BAR;Sm;0;ON;;;;;N;;;;; -29B6;CIRCLED VERTICAL BAR;Sm;0;ON;;;;;N;;;;; -29B7;CIRCLED PARALLEL;Sm;0;ON;;;;;N;;;;; -29B8;CIRCLED REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;; -29B9;CIRCLED PERPENDICULAR;Sm;0;ON;;;;;N;;;;; -29BA;CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR;Sm;0;ON;;;;;N;;;;; -29BB;CIRCLE WITH SUPERIMPOSED X;Sm;0;ON;;;;;N;;;;; -29BC;CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN;Sm;0;ON;;;;;N;;;;; -29BD;UP ARROW THROUGH CIRCLE;Sm;0;ON;;;;;N;;;;; -29BE;CIRCLED WHITE BULLET;Sm;0;ON;;;;;N;;;;; -29BF;CIRCLED BULLET;Sm;0;ON;;;;;N;;;;; -29C0;CIRCLED LESS-THAN;Sm;0;ON;;;;;Y;;;;; -29C1;CIRCLED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -29C2;CIRCLE WITH SMALL CIRCLE TO THE RIGHT;Sm;0;ON;;;;;Y;;;;; -29C3;CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT;Sm;0;ON;;;;;Y;;;;; -29C4;SQUARED RISING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;; -29C5;SQUARED FALLING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;; -29C6;SQUARED ASTERISK;Sm;0;ON;;;;;N;;;;; -29C7;SQUARED SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; -29C8;SQUARED SQUARE;Sm;0;ON;;;;;N;;;;; -29C9;TWO JOINED SQUARES;Sm;0;ON;;;;;Y;;;;; -29CA;TRIANGLE WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; -29CB;TRIANGLE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; -29CC;S IN TRIANGLE;Sm;0;ON;;;;;N;;;;; -29CD;TRIANGLE WITH SERIFS AT BOTTOM;Sm;0;ON;;;;;N;;;;; -29CE;RIGHT TRIANGLE ABOVE LEFT TRIANGLE;Sm;0;ON;;;;;Y;;;;; -29CF;LEFT TRIANGLE BESIDE VERTICAL BAR;Sm;0;ON;;;;;Y;;;;; -29D0;VERTICAL BAR BESIDE RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;; -29D1;BOWTIE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29D2;BOWTIE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29D3;BLACK BOWTIE;Sm;0;ON;;;;;N;;;;; -29D4;TIMES WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29D5;TIMES WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29D6;WHITE HOURGLASS;Sm;0;ON;;;;;N;;;;; -29D7;BLACK HOURGLASS;Sm;0;ON;;;;;N;;;;; -29D8;LEFT WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;; -29D9;RIGHT WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;; -29DA;LEFT DOUBLE WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;; -29DB;RIGHT DOUBLE WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;; -29DC;INCOMPLETE INFINITY;Sm;0;ON;;;;;Y;;;;; -29DD;TIE OVER INFINITY;Sm;0;ON;;;;;N;;;;; -29DE;INFINITY NEGATED WITH VERTICAL BAR;Sm;0;ON;;;;;N;;;;; -29DF;DOUBLE-ENDED MULTIMAP;Sm;0;ON;;;;;N;;;;; -29E0;SQUARE WITH CONTOURED OUTLINE;Sm;0;ON;;;;;N;;;;; -29E1;INCREASES AS;Sm;0;ON;;;;;Y;;;;; -29E2;SHUFFLE PRODUCT;Sm;0;ON;;;;;N;;;;; -29E3;EQUALS SIGN AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;; -29E4;EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;; -29E5;IDENTICAL TO AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;; -29E6;GLEICH STARK;Sm;0;ON;;;;;N;;;;; -29E7;THERMODYNAMIC;Sm;0;ON;;;;;N;;;;; -29E8;DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29E9;DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29EA;BLACK DIAMOND WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; -29EB;BLACK LOZENGE;Sm;0;ON;;;;;N;;;;; -29EC;WHITE CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; -29ED;BLACK CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; -29EE;ERROR-BARRED WHITE SQUARE;Sm;0;ON;;;;;N;;;;; -29EF;ERROR-BARRED BLACK SQUARE;Sm;0;ON;;;;;N;;;;; -29F0;ERROR-BARRED WHITE DIAMOND;Sm;0;ON;;;;;N;;;;; -29F1;ERROR-BARRED BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; -29F2;ERROR-BARRED WHITE CIRCLE;Sm;0;ON;;;;;N;;;;; -29F3;ERROR-BARRED BLACK CIRCLE;Sm;0;ON;;;;;N;;;;; -29F4;RULE-DELAYED;Sm;0;ON;;;;;Y;;;;; -29F5;REVERSE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;; -29F6;SOLIDUS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -29F7;REVERSE SOLIDUS WITH HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -29F8;BIG SOLIDUS;Sm;0;ON;;;;;Y;;;;; -29F9;BIG REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;; -29FA;DOUBLE PLUS;Sm;0;ON;;;;;N;;;;; -29FB;TRIPLE PLUS;Sm;0;ON;;;;;N;;;;; -29FC;LEFT-POINTING CURVED ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; -29FD;RIGHT-POINTING CURVED ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; -29FE;TINY;Sm;0;ON;;;;;N;;;;; -29FF;MINY;Sm;0;ON;;;;;N;;;;; -2A00;N-ARY CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; -2A01;N-ARY CIRCLED PLUS OPERATOR;Sm;0;ON;;;;;N;;;;; -2A02;N-ARY CIRCLED TIMES OPERATOR;Sm;0;ON;;;;;N;;;;; -2A03;N-ARY UNION OPERATOR WITH DOT;Sm;0;ON;;;;;N;;;;; -2A04;N-ARY UNION OPERATOR WITH PLUS;Sm;0;ON;;;;;N;;;;; -2A05;N-ARY SQUARE INTERSECTION OPERATOR;Sm;0;ON;;;;;N;;;;; -2A06;N-ARY SQUARE UNION OPERATOR;Sm;0;ON;;;;;N;;;;; -2A07;TWO LOGICAL AND OPERATOR;Sm;0;ON;;;;;N;;;;; -2A08;TWO LOGICAL OR OPERATOR;Sm;0;ON;;;;;N;;;;; -2A09;N-ARY TIMES OPERATOR;Sm;0;ON;;;;;N;;;;; -2A0A;MODULO TWO SUM;Sm;0;ON;;;;;Y;;;;; -2A0B;SUMMATION WITH INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2A0C;QUADRUPLE INTEGRAL OPERATOR;Sm;0;ON; 222B 222B 222B 222B;;;;Y;;;;; -2A0D;FINITE PART INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2A0E;INTEGRAL WITH DOUBLE STROKE;Sm;0;ON;;;;;Y;;;;; -2A0F;INTEGRAL AVERAGE WITH SLASH;Sm;0;ON;;;;;Y;;;;; -2A10;CIRCULATION FUNCTION;Sm;0;ON;;;;;Y;;;;; -2A11;ANTICLOCKWISE INTEGRATION;Sm;0;ON;;;;;Y;;;;; -2A12;LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;; -2A13;LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;; -2A14;LINE INTEGRATION NOT INCLUDING THE POLE;Sm;0;ON;;;;;Y;;;;; -2A15;INTEGRAL AROUND A POINT OPERATOR;Sm;0;ON;;;;;Y;;;;; -2A16;QUATERNION INTEGRAL OPERATOR;Sm;0;ON;;;;;Y;;;;; -2A17;INTEGRAL WITH LEFTWARDS ARROW WITH HOOK;Sm;0;ON;;;;;Y;;;;; -2A18;INTEGRAL WITH TIMES SIGN;Sm;0;ON;;;;;Y;;;;; -2A19;INTEGRAL WITH INTERSECTION;Sm;0;ON;;;;;Y;;;;; -2A1A;INTEGRAL WITH UNION;Sm;0;ON;;;;;Y;;;;; -2A1B;INTEGRAL WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -2A1C;INTEGRAL WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; -2A1D;JOIN;Sm;0;ON;;;;;N;;;;; -2A1E;LARGE LEFT TRIANGLE OPERATOR;Sm;0;ON;;;;;Y;;;;; -2A1F;Z NOTATION SCHEMA COMPOSITION;Sm;0;ON;;;;;Y;;;;; -2A20;Z NOTATION SCHEMA PIPING;Sm;0;ON;;;;;Y;;;;; -2A21;Z NOTATION SCHEMA PROJECTION;Sm;0;ON;;;;;Y;;;;; -2A22;PLUS SIGN WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; -2A23;PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE;Sm;0;ON;;;;;N;;;;; -2A24;PLUS SIGN WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;; -2A25;PLUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; -2A26;PLUS SIGN WITH TILDE BELOW;Sm;0;ON;;;;;Y;;;;; -2A27;PLUS SIGN WITH SUBSCRIPT TWO;Sm;0;ON;;;;;N;;;;; -2A28;PLUS SIGN WITH BLACK TRIANGLE;Sm;0;ON;;;;;N;;;;; -2A29;MINUS SIGN WITH COMMA ABOVE;Sm;0;ON;;;;;Y;;;;; -2A2A;MINUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; -2A2B;MINUS SIGN WITH FALLING DOTS;Sm;0;ON;;;;;Y;;;;; -2A2C;MINUS SIGN WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;; -2A2D;PLUS SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; -2A2E;PLUS SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; -2A2F;VECTOR OR CROSS PRODUCT;Sm;0;ON;;;;;N;;;;; -2A30;MULTIPLICATION SIGN WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; -2A31;MULTIPLICATION SIGN WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; -2A32;SEMIDIRECT PRODUCT WITH BOTTOM CLOSED;Sm;0;ON;;;;;N;;;;; -2A33;SMASH PRODUCT;Sm;0;ON;;;;;N;;;;; -2A34;MULTIPLICATION SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; -2A35;MULTIPLICATION SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; -2A36;CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;N;;;;; -2A37;MULTIPLICATION SIGN IN DOUBLE CIRCLE;Sm;0;ON;;;;;N;;;;; -2A38;CIRCLED DIVISION SIGN;Sm;0;ON;;;;;N;;;;; -2A39;PLUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; -2A3A;MINUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; -2A3B;MULTIPLICATION SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; -2A3C;INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;; -2A3D;RIGHTHAND INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;; -2A3E;Z NOTATION RELATIONAL COMPOSITION;Sm;0;ON;;;;;Y;;;;; -2A3F;AMALGAMATION OR COPRODUCT;Sm;0;ON;;;;;N;;;;; -2A40;INTERSECTION WITH DOT;Sm;0;ON;;;;;N;;;;; -2A41;UNION WITH MINUS SIGN;Sm;0;ON;;;;;N;;;;; -2A42;UNION WITH OVERBAR;Sm;0;ON;;;;;N;;;;; -2A43;INTERSECTION WITH OVERBAR;Sm;0;ON;;;;;N;;;;; -2A44;INTERSECTION WITH LOGICAL AND;Sm;0;ON;;;;;N;;;;; -2A45;UNION WITH LOGICAL OR;Sm;0;ON;;;;;N;;;;; -2A46;UNION ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;; -2A47;INTERSECTION ABOVE UNION;Sm;0;ON;;;;;N;;;;; -2A48;UNION ABOVE BAR ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;; -2A49;INTERSECTION ABOVE BAR ABOVE UNION;Sm;0;ON;;;;;N;;;;; -2A4A;UNION BESIDE AND JOINED WITH UNION;Sm;0;ON;;;;;N;;;;; -2A4B;INTERSECTION BESIDE AND JOINED WITH INTERSECTION;Sm;0;ON;;;;;N;;;;; -2A4C;CLOSED UNION WITH SERIFS;Sm;0;ON;;;;;N;;;;; -2A4D;CLOSED INTERSECTION WITH SERIFS;Sm;0;ON;;;;;N;;;;; -2A4E;DOUBLE SQUARE INTERSECTION;Sm;0;ON;;;;;N;;;;; -2A4F;DOUBLE SQUARE UNION;Sm;0;ON;;;;;N;;;;; -2A50;CLOSED UNION WITH SERIFS AND SMASH PRODUCT;Sm;0;ON;;;;;N;;;;; -2A51;LOGICAL AND WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; -2A52;LOGICAL OR WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; -2A53;DOUBLE LOGICAL AND;Sm;0;ON;;;;;N;;;;; -2A54;DOUBLE LOGICAL OR;Sm;0;ON;;;;;N;;;;; -2A55;TWO INTERSECTING LOGICAL AND;Sm;0;ON;;;;;N;;;;; -2A56;TWO INTERSECTING LOGICAL OR;Sm;0;ON;;;;;N;;;;; -2A57;SLOPING LARGE OR;Sm;0;ON;;;;;Y;;;;; -2A58;SLOPING LARGE AND;Sm;0;ON;;;;;Y;;;;; -2A59;LOGICAL OR OVERLAPPING LOGICAL AND;Sm;0;ON;;;;;N;;;;; -2A5A;LOGICAL AND WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;; -2A5B;LOGICAL OR WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;; -2A5C;LOGICAL AND WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;; -2A5D;LOGICAL OR WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;; -2A5E;LOGICAL AND WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;; -2A5F;LOGICAL AND WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; -2A60;LOGICAL AND WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;; -2A61;SMALL VEE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; -2A62;LOGICAL OR WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;; -2A63;LOGICAL OR WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;; -2A64;Z NOTATION DOMAIN ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;; -2A65;Z NOTATION RANGE ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;; -2A66;EQUALS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; -2A67;IDENTICAL WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; -2A68;TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2A69;TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2A6A;TILDE OPERATOR WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2A6B;TILDE OPERATOR WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;; -2A6C;SIMILAR MINUS SIMILAR;Sm;0;ON;;;;;Y;;;;; -2A6D;CONGRUENT WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2A6E;EQUALS WITH ASTERISK;Sm;0;ON;;;;;N;;;;; -2A6F;ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;Y;;;;; -2A70;APPROXIMATELY EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2A71;EQUALS SIGN ABOVE PLUS SIGN;Sm;0;ON;;;;;N;;;;; -2A72;PLUS SIGN ABOVE EQUALS SIGN;Sm;0;ON;;;;;N;;;;; -2A73;EQUALS SIGN ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; -2A74;DOUBLE COLON EQUAL;Sm;0;ON; 003A 003A 003D;;;;Y;;;;; -2A75;TWO CONSECUTIVE EQUALS SIGNS;Sm;0;ON; 003D 003D;;;;N;;;;; -2A76;THREE CONSECUTIVE EQUALS SIGNS;Sm;0;ON; 003D 003D 003D;;;;N;;;;; -2A77;EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW;Sm;0;ON;;;;;N;;;;; -2A78;EQUIVALENT WITH FOUR DOTS ABOVE;Sm;0;ON;;;;;N;;;;; -2A79;LESS-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;; -2A7A;GREATER-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;; -2A7B;LESS-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;; -2A7C;GREATER-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;; -2A7D;LESS-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2A7E;GREATER-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2A7F;LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; -2A80;GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; -2A81;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2A82;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2A83;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT;Sm;0;ON;;;;;Y;;;;; -2A84;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT;Sm;0;ON;;;;;Y;;;;; -2A85;LESS-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;; -2A86;GREATER-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;; -2A87;LESS-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2A88;GREATER-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2A89;LESS-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;; -2A8A;GREATER-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;; -2A8B;LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A8C;GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A8D;LESS-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;; -2A8E;GREATER-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;; -2A8F;LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A90;GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A91;LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;; -2A92;GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;; -2A93;LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; -2A94;GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; -2A95;SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A96;SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A97;SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; -2A98;SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; -2A99;DOUBLE-LINE EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A9A;DOUBLE-LINE EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A9B;DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A9C;DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A9D;SIMILAR OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A9E;SIMILAR OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A9F;SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AA0;SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AA1;DOUBLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2AA2;DOUBLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2AA3;DOUBLE NESTED LESS-THAN WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; -2AA4;GREATER-THAN OVERLAPPING LESS-THAN;Sm;0;ON;;;;;N;;;;; -2AA5;GREATER-THAN BESIDE LESS-THAN;Sm;0;ON;;;;;N;;;;; -2AA6;LESS-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;; -2AA7;GREATER-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;; -2AA8;LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; -2AA9;GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; -2AAA;SMALLER THAN;Sm;0;ON;;;;;Y;;;;; -2AAB;LARGER THAN;Sm;0;ON;;;;;Y;;;;; -2AAC;SMALLER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AAD;LARGER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AAE;EQUALS SIGN WITH BUMPY ABOVE;Sm;0;ON;;;;;N;;;;; -2AAF;PRECEDES ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AB0;SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AB1;PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB2;SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB3;PRECEDES ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AB4;SUCCEEDS ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AB5;PRECEDES ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB6;SUCCEEDS ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB7;PRECEDES ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB8;SUCCEEDS ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB9;PRECEDES ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ABA;SUCCEEDS ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ABB;DOUBLE PRECEDES;Sm;0;ON;;;;;Y;;;;; -2ABC;DOUBLE SUCCEEDS;Sm;0;ON;;;;;Y;;;;; -2ABD;SUBSET WITH DOT;Sm;0;ON;;;;;Y;;;;; -2ABE;SUPERSET WITH DOT;Sm;0;ON;;;;;Y;;;;; -2ABF;SUBSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;; -2AC0;SUPERSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;; -2AC1;SUBSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;; -2AC2;SUPERSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;; -2AC3;SUBSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2AC4;SUPERSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2AC5;SUBSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AC6;SUPERSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AC7;SUBSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; -2AC8;SUPERSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; -2AC9;SUBSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ACA;SUPERSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ACB;SUBSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ACC;SUPERSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ACD;SQUARE LEFT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;; -2ACE;SQUARE RIGHT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;; -2ACF;CLOSED SUBSET;Sm;0;ON;;;;;Y;;;;; -2AD0;CLOSED SUPERSET;Sm;0;ON;;;;;Y;;;;; -2AD1;CLOSED SUBSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AD2;CLOSED SUPERSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AD3;SUBSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;; -2AD4;SUPERSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;; -2AD5;SUBSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;; -2AD6;SUPERSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;; -2AD7;SUPERSET BESIDE SUBSET;Sm;0;ON;;;;;N;;;;; -2AD8;SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET;Sm;0;ON;;;;;N;;;;; -2AD9;ELEMENT OF OPENING DOWNWARDS;Sm;0;ON;;;;;N;;;;; -2ADA;PITCHFORK WITH TEE TOP;Sm;0;ON;;;;;N;;;;; -2ADB;TRANSVERSAL INTERSECTION;Sm;0;ON;;;;;N;;;;; -2ADC;FORKING;Sm;0;ON;2ADD 0338;;;;Y;;not independent;;; -2ADD;NONFORKING;Sm;0;ON;;;;;N;;independent;;; -2ADE;SHORT LEFT TACK;Sm;0;ON;;;;;Y;;;;; -2ADF;SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;; -2AE0;SHORT UP TACK;Sm;0;ON;;;;;N;;;;; -2AE1;PERPENDICULAR WITH S;Sm;0;ON;;;;;N;;;;; -2AE2;VERTICAL BAR TRIPLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -2AE3;DOUBLE VERTICAL BAR LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -2AE4;VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -2AE5;DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -2AE6;LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL;Sm;0;ON;;;;;Y;;;;; -2AE7;SHORT DOWN TACK WITH OVERBAR;Sm;0;ON;;;;;N;;;;; -2AE8;SHORT UP TACK WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; -2AE9;SHORT UP TACK ABOVE SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;; -2AEA;DOUBLE DOWN TACK;Sm;0;ON;;;;;N;;;;; -2AEB;DOUBLE UP TACK;Sm;0;ON;;;;;N;;;;; -2AEC;DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;; -2AED;REVERSED DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;; -2AEE;DOES NOT DIVIDE WITH REVERSED NEGATION SLASH;Sm;0;ON;;;;;Y;;;;; -2AEF;VERTICAL LINE WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; -2AF0;VERTICAL LINE WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;; -2AF1;DOWN TACK WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;; -2AF2;PARALLEL WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; -2AF3;PARALLEL WITH TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; -2AF4;TRIPLE VERTICAL BAR BINARY RELATION;Sm;0;ON;;;;;N;;;;; -2AF5;TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; -2AF6;TRIPLE COLON OPERATOR;Sm;0;ON;;;;;N;;;;; -2AF7;TRIPLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2AF8;TRIPLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2AF9;DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AFA;DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AFB;TRIPLE SOLIDUS BINARY RELATION;Sm;0;ON;;;;;Y;;;;; -2AFC;LARGE TRIPLE VERTICAL BAR OPERATOR;Sm;0;ON;;;;;N;;;;; -2AFD;DOUBLE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;; -2AFE;WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;; -2AFF;N-ARY WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;; -2B00;NORTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;; -2B01;NORTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;; -2B02;SOUTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;; -2B03;SOUTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;; -2B04;LEFT RIGHT WHITE ARROW;So;0;ON;;;;;N;;;;; -2B05;LEFTWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; -2B06;UPWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; -2B07;DOWNWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; -2B08;NORTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;; -2B09;NORTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;; -2B0A;SOUTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;; -2B0B;SOUTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;; -2B0C;LEFT RIGHT BLACK ARROW;So;0;ON;;;;;N;;;;; -2B0D;UP DOWN BLACK ARROW;So;0;ON;;;;;N;;;;; -2B0E;RIGHTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;; -2B0F;RIGHTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;; -2B10;LEFTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;; -2B11;LEFTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;; -2B12;SQUARE WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;; -2B13;SQUARE WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;; -2B14;SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; -2B15;SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; -2B16;DIAMOND WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; -2B17;DIAMOND WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; -2B18;DIAMOND WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;; -2B19;DIAMOND WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;; -2B1A;DOTTED SQUARE;So;0;ON;;;;;N;;;;; -2B1B;BLACK LARGE SQUARE;So;0;ON;;;;;N;;;;; -2B1C;WHITE LARGE SQUARE;So;0;ON;;;;;N;;;;; -2B1D;BLACK VERY SMALL SQUARE;So;0;ON;;;;;N;;;;; -2B1E;WHITE VERY SMALL SQUARE;So;0;ON;;;;;N;;;;; -2B1F;BLACK PENTAGON;So;0;ON;;;;;N;;;;; -2B20;WHITE PENTAGON;So;0;ON;;;;;N;;;;; -2B21;WHITE HEXAGON;So;0;ON;;;;;N;;;;; -2B22;BLACK HEXAGON;So;0;ON;;;;;N;;;;; -2B23;HORIZONTAL BLACK HEXAGON;So;0;ON;;;;;N;;;;; -2B24;BLACK LARGE CIRCLE;So;0;ON;;;;;N;;;;; -2B25;BLACK MEDIUM DIAMOND;So;0;ON;;;;;N;;;;; -2B26;WHITE MEDIUM DIAMOND;So;0;ON;;;;;N;;;;; -2B27;BLACK MEDIUM LOZENGE;So;0;ON;;;;;N;;;;; -2B28;WHITE MEDIUM LOZENGE;So;0;ON;;;;;N;;;;; -2B29;BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;; -2B2A;BLACK SMALL LOZENGE;So;0;ON;;;;;N;;;;; -2B2B;WHITE SMALL LOZENGE;So;0;ON;;;;;N;;;;; -2B2C;BLACK HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;; -2B2D;WHITE HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;; -2B2E;BLACK VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;; -2B2F;WHITE VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;; -2B30;LEFT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; -2B31;THREE LEFTWARDS ARROWS;Sm;0;ON;;;;;N;;;;; -2B32;LEFT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; -2B33;LONG LEFTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;; -2B34;LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2B35;LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2B36;LEFTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -2B37;LEFTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; -2B38;LEFTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;; -2B39;LEFTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2B3A;LEFTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2B3B;LEFTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;; -2B3C;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2B3D;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2B3E;LEFTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;; -2B3F;WAVE ARROW POINTING DIRECTLY LEFT;Sm;0;ON;;;;;N;;;;; -2B40;EQUALS SIGN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2B41;REVERSE TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2B42;LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; -2B43;RIGHTWARDS ARROW THROUGH GREATER-THAN;Sm;0;ON;;;;;N;;;;; -2B44;RIGHTWARDS ARROW THROUGH SUPERSET;Sm;0;ON;;;;;N;;;;; -2B45;LEFTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;; -2B46;RIGHTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;; -2B47;REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2B48;RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; -2B49;TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2B4A;LEFTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; -2B4B;LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; -2B4C;RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; -2B50;WHITE MEDIUM STAR;So;0;ON;;;;;N;;;;; -2B51;BLACK SMALL STAR;So;0;ON;;;;;N;;;;; -2B52;WHITE SMALL STAR;So;0;ON;;;;;N;;;;; -2B53;BLACK RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;; -2B54;WHITE RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;; -2C00;GLAGOLITIC CAPITAL LETTER AZU;Lu;0;L;;;;;N;;;;2C30; -2C01;GLAGOLITIC CAPITAL LETTER BUKY;Lu;0;L;;;;;N;;;;2C31; -2C02;GLAGOLITIC CAPITAL LETTER VEDE;Lu;0;L;;;;;N;;;;2C32; -2C03;GLAGOLITIC CAPITAL LETTER GLAGOLI;Lu;0;L;;;;;N;;;;2C33; -2C04;GLAGOLITIC CAPITAL LETTER DOBRO;Lu;0;L;;;;;N;;;;2C34; -2C05;GLAGOLITIC CAPITAL LETTER YESTU;Lu;0;L;;;;;N;;;;2C35; -2C06;GLAGOLITIC CAPITAL LETTER ZHIVETE;Lu;0;L;;;;;N;;;;2C36; -2C07;GLAGOLITIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;2C37; -2C08;GLAGOLITIC CAPITAL LETTER ZEMLJA;Lu;0;L;;;;;N;;;;2C38; -2C09;GLAGOLITIC CAPITAL LETTER IZHE;Lu;0;L;;;;;N;;;;2C39; -2C0A;GLAGOLITIC CAPITAL LETTER INITIAL IZHE;Lu;0;L;;;;;N;;;;2C3A; -2C0B;GLAGOLITIC CAPITAL LETTER I;Lu;0;L;;;;;N;;;;2C3B; -2C0C;GLAGOLITIC CAPITAL LETTER DJERVI;Lu;0;L;;;;;N;;;;2C3C; -2C0D;GLAGOLITIC CAPITAL LETTER KAKO;Lu;0;L;;;;;N;;;;2C3D; -2C0E;GLAGOLITIC CAPITAL LETTER LJUDIJE;Lu;0;L;;;;;N;;;;2C3E; -2C0F;GLAGOLITIC CAPITAL LETTER MYSLITE;Lu;0;L;;;;;N;;;;2C3F; -2C10;GLAGOLITIC CAPITAL LETTER NASHI;Lu;0;L;;;;;N;;;;2C40; -2C11;GLAGOLITIC CAPITAL LETTER ONU;Lu;0;L;;;;;N;;;;2C41; -2C12;GLAGOLITIC CAPITAL LETTER POKOJI;Lu;0;L;;;;;N;;;;2C42; -2C13;GLAGOLITIC CAPITAL LETTER RITSI;Lu;0;L;;;;;N;;;;2C43; -2C14;GLAGOLITIC CAPITAL LETTER SLOVO;Lu;0;L;;;;;N;;;;2C44; -2C15;GLAGOLITIC CAPITAL LETTER TVRIDO;Lu;0;L;;;;;N;;;;2C45; -2C16;GLAGOLITIC CAPITAL LETTER UKU;Lu;0;L;;;;;N;;;;2C46; -2C17;GLAGOLITIC CAPITAL LETTER FRITU;Lu;0;L;;;;;N;;;;2C47; -2C18;GLAGOLITIC CAPITAL LETTER HERU;Lu;0;L;;;;;N;;;;2C48; -2C19;GLAGOLITIC CAPITAL LETTER OTU;Lu;0;L;;;;;N;;;;2C49; -2C1A;GLAGOLITIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;2C4A; -2C1B;GLAGOLITIC CAPITAL LETTER SHTA;Lu;0;L;;;;;N;;;;2C4B; -2C1C;GLAGOLITIC CAPITAL LETTER TSI;Lu;0;L;;;;;N;;;;2C4C; -2C1D;GLAGOLITIC CAPITAL LETTER CHRIVI;Lu;0;L;;;;;N;;;;2C4D; -2C1E;GLAGOLITIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;2C4E; -2C1F;GLAGOLITIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;;;;2C4F; -2C20;GLAGOLITIC CAPITAL LETTER YERI;Lu;0;L;;;;;N;;;;2C50; -2C21;GLAGOLITIC CAPITAL LETTER YATI;Lu;0;L;;;;;N;;;;2C51; -2C22;GLAGOLITIC CAPITAL LETTER SPIDERY HA;Lu;0;L;;;;;N;;;;2C52; -2C23;GLAGOLITIC CAPITAL LETTER YU;Lu;0;L;;;;;N;;;;2C53; -2C24;GLAGOLITIC CAPITAL LETTER SMALL YUS;Lu;0;L;;;;;N;;;;2C54; -2C25;GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL;Lu;0;L;;;;;N;;;;2C55; -2C26;GLAGOLITIC CAPITAL LETTER YO;Lu;0;L;;;;;N;;;;2C56; -2C27;GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS;Lu;0;L;;;;;N;;;;2C57; -2C28;GLAGOLITIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;2C58; -2C29;GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS;Lu;0;L;;;;;N;;;;2C59; -2C2A;GLAGOLITIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;2C5A; -2C2B;GLAGOLITIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;2C5B; -2C2C;GLAGOLITIC CAPITAL LETTER SHTAPIC;Lu;0;L;;;;;N;;;;2C5C; -2C2D;GLAGOLITIC CAPITAL LETTER TROKUTASTI A;Lu;0;L;;;;;N;;;;2C5D; -2C2E;GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;Lu;0;L;;;;;N;;;;2C5E; -2C30;GLAGOLITIC SMALL LETTER AZU;Ll;0;L;;;;;N;;;2C00;;2C00 -2C31;GLAGOLITIC SMALL LETTER BUKY;Ll;0;L;;;;;N;;;2C01;;2C01 -2C32;GLAGOLITIC SMALL LETTER VEDE;Ll;0;L;;;;;N;;;2C02;;2C02 -2C33;GLAGOLITIC SMALL LETTER GLAGOLI;Ll;0;L;;;;;N;;;2C03;;2C03 -2C34;GLAGOLITIC SMALL LETTER DOBRO;Ll;0;L;;;;;N;;;2C04;;2C04 -2C35;GLAGOLITIC SMALL LETTER YESTU;Ll;0;L;;;;;N;;;2C05;;2C05 -2C36;GLAGOLITIC SMALL LETTER ZHIVETE;Ll;0;L;;;;;N;;;2C06;;2C06 -2C37;GLAGOLITIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;2C07;;2C07 -2C38;GLAGOLITIC SMALL LETTER ZEMLJA;Ll;0;L;;;;;N;;;2C08;;2C08 -2C39;GLAGOLITIC SMALL LETTER IZHE;Ll;0;L;;;;;N;;;2C09;;2C09 -2C3A;GLAGOLITIC SMALL LETTER INITIAL IZHE;Ll;0;L;;;;;N;;;2C0A;;2C0A -2C3B;GLAGOLITIC SMALL LETTER I;Ll;0;L;;;;;N;;;2C0B;;2C0B -2C3C;GLAGOLITIC SMALL LETTER DJERVI;Ll;0;L;;;;;N;;;2C0C;;2C0C -2C3D;GLAGOLITIC SMALL LETTER KAKO;Ll;0;L;;;;;N;;;2C0D;;2C0D -2C3E;GLAGOLITIC SMALL LETTER LJUDIJE;Ll;0;L;;;;;N;;;2C0E;;2C0E -2C3F;GLAGOLITIC SMALL LETTER MYSLITE;Ll;0;L;;;;;N;;;2C0F;;2C0F -2C40;GLAGOLITIC SMALL LETTER NASHI;Ll;0;L;;;;;N;;;2C10;;2C10 -2C41;GLAGOLITIC SMALL LETTER ONU;Ll;0;L;;;;;N;;;2C11;;2C11 -2C42;GLAGOLITIC SMALL LETTER POKOJI;Ll;0;L;;;;;N;;;2C12;;2C12 -2C43;GLAGOLITIC SMALL LETTER RITSI;Ll;0;L;;;;;N;;;2C13;;2C13 -2C44;GLAGOLITIC SMALL LETTER SLOVO;Ll;0;L;;;;;N;;;2C14;;2C14 -2C45;GLAGOLITIC SMALL LETTER TVRIDO;Ll;0;L;;;;;N;;;2C15;;2C15 -2C46;GLAGOLITIC SMALL LETTER UKU;Ll;0;L;;;;;N;;;2C16;;2C16 -2C47;GLAGOLITIC SMALL LETTER FRITU;Ll;0;L;;;;;N;;;2C17;;2C17 -2C48;GLAGOLITIC SMALL LETTER HERU;Ll;0;L;;;;;N;;;2C18;;2C18 -2C49;GLAGOLITIC SMALL LETTER OTU;Ll;0;L;;;;;N;;;2C19;;2C19 -2C4A;GLAGOLITIC SMALL LETTER PE;Ll;0;L;;;;;N;;;2C1A;;2C1A -2C4B;GLAGOLITIC SMALL LETTER SHTA;Ll;0;L;;;;;N;;;2C1B;;2C1B -2C4C;GLAGOLITIC SMALL LETTER TSI;Ll;0;L;;;;;N;;;2C1C;;2C1C -2C4D;GLAGOLITIC SMALL LETTER CHRIVI;Ll;0;L;;;;;N;;;2C1D;;2C1D -2C4E;GLAGOLITIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;2C1E;;2C1E -2C4F;GLAGOLITIC SMALL LETTER YERU;Ll;0;L;;;;;N;;;2C1F;;2C1F -2C50;GLAGOLITIC SMALL LETTER YERI;Ll;0;L;;;;;N;;;2C20;;2C20 -2C51;GLAGOLITIC SMALL LETTER YATI;Ll;0;L;;;;;N;;;2C21;;2C21 -2C52;GLAGOLITIC SMALL LETTER SPIDERY HA;Ll;0;L;;;;;N;;;2C22;;2C22 -2C53;GLAGOLITIC SMALL LETTER YU;Ll;0;L;;;;;N;;;2C23;;2C23 -2C54;GLAGOLITIC SMALL LETTER SMALL YUS;Ll;0;L;;;;;N;;;2C24;;2C24 -2C55;GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL;Ll;0;L;;;;;N;;;2C25;;2C25 -2C56;GLAGOLITIC SMALL LETTER YO;Ll;0;L;;;;;N;;;2C26;;2C26 -2C57;GLAGOLITIC SMALL LETTER IOTATED SMALL YUS;Ll;0;L;;;;;N;;;2C27;;2C27 -2C58;GLAGOLITIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;2C28;;2C28 -2C59;GLAGOLITIC SMALL LETTER IOTATED BIG YUS;Ll;0;L;;;;;N;;;2C29;;2C29 -2C5A;GLAGOLITIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;2C2A;;2C2A -2C5B;GLAGOLITIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;2C2B;;2C2B -2C5C;GLAGOLITIC SMALL LETTER SHTAPIC;Ll;0;L;;;;;N;;;2C2C;;2C2C -2C5D;GLAGOLITIC SMALL LETTER TROKUTASTI A;Ll;0;L;;;;;N;;;2C2D;;2C2D -2C5E;GLAGOLITIC SMALL LETTER LATINATE MYSLITE;Ll;0;L;;;;;N;;;2C2E;;2C2E -2C60;LATIN CAPITAL LETTER L WITH DOUBLE BAR;Lu;0;L;;;;;N;;;;2C61; -2C61;LATIN SMALL LETTER L WITH DOUBLE BAR;Ll;0;L;;;;;N;;;2C60;;2C60 -2C62;LATIN CAPITAL LETTER L WITH MIDDLE TILDE;Lu;0;L;;;;;N;;;;026B; -2C63;LATIN CAPITAL LETTER P WITH STROKE;Lu;0;L;;;;;N;;;;1D7D; -2C64;LATIN CAPITAL LETTER R WITH TAIL;Lu;0;L;;;;;N;;;;027D; -2C65;LATIN SMALL LETTER A WITH STROKE;Ll;0;L;;;;;N;;;023A;;023A -2C66;LATIN SMALL LETTER T WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;023E;;023E -2C67;LATIN CAPITAL LETTER H WITH DESCENDER;Lu;0;L;;;;;N;;;;2C68; -2C68;LATIN SMALL LETTER H WITH DESCENDER;Ll;0;L;;;;;N;;;2C67;;2C67 -2C69;LATIN CAPITAL LETTER K WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6A; -2C6A;LATIN SMALL LETTER K WITH DESCENDER;Ll;0;L;;;;;N;;;2C69;;2C69 -2C6B;LATIN CAPITAL LETTER Z WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6C; -2C6C;LATIN SMALL LETTER Z WITH DESCENDER;Ll;0;L;;;;;N;;;2C6B;;2C6B -2C6D;LATIN CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;0251; -2C6E;LATIN CAPITAL LETTER M WITH HOOK;Lu;0;L;;;;;N;;;;0271; -2C6F;LATIN CAPITAL LETTER TURNED A;Lu;0;L;;;;;N;;;;0250; -2C71;LATIN SMALL LETTER V WITH RIGHT HOOK;Ll;0;L;;;;;N;;;;; -2C72;LATIN CAPITAL LETTER W WITH HOOK;Lu;0;L;;;;;N;;;;2C73; -2C73;LATIN SMALL LETTER W WITH HOOK;Ll;0;L;;;;;N;;;2C72;;2C72 -2C74;LATIN SMALL LETTER V WITH CURL;Ll;0;L;;;;;N;;;;; -2C75;LATIN CAPITAL LETTER HALF H;Lu;0;L;;;;;N;;;;2C76; -2C76;LATIN SMALL LETTER HALF H;Ll;0;L;;;;;N;;;2C75;;2C75 -2C77;LATIN SMALL LETTER TAILLESS PHI;Ll;0;L;;;;;N;;;;; -2C78;LATIN SMALL LETTER E WITH NOTCH;Ll;0;L;;;;;N;;;;; -2C79;LATIN SMALL LETTER TURNED R WITH TAIL;Ll;0;L;;;;;N;;;;; -2C7A;LATIN SMALL LETTER O WITH LOW RING INSIDE;Ll;0;L;;;;;N;;;;; -2C7B;LATIN LETTER SMALL CAPITAL TURNED E;Ll;0;L;;;;;N;;;;; -2C7C;LATIN SUBSCRIPT SMALL LETTER J;Ll;0;L; 006A;;;;N;;;;; -2C7D;MODIFIER LETTER CAPITAL V;Lm;0;L; 0056;;;;N;;;;; -2C80;COPTIC CAPITAL LETTER ALFA;Lu;0;L;;;;;N;;;;2C81; -2C81;COPTIC SMALL LETTER ALFA;Ll;0;L;;;;;N;;;2C80;;2C80 -2C82;COPTIC CAPITAL LETTER VIDA;Lu;0;L;;;;;N;;;;2C83; -2C83;COPTIC SMALL LETTER VIDA;Ll;0;L;;;;;N;;;2C82;;2C82 -2C84;COPTIC CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;2C85; -2C85;COPTIC SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;2C84;;2C84 -2C86;COPTIC CAPITAL LETTER DALDA;Lu;0;L;;;;;N;;;;2C87; -2C87;COPTIC SMALL LETTER DALDA;Ll;0;L;;;;;N;;;2C86;;2C86 -2C88;COPTIC CAPITAL LETTER EIE;Lu;0;L;;;;;N;;;;2C89; -2C89;COPTIC SMALL LETTER EIE;Ll;0;L;;;;;N;;;2C88;;2C88 -2C8A;COPTIC CAPITAL LETTER SOU;Lu;0;L;;;;;N;;;;2C8B; -2C8B;COPTIC SMALL LETTER SOU;Ll;0;L;;;;;N;;;2C8A;;2C8A -2C8C;COPTIC CAPITAL LETTER ZATA;Lu;0;L;;;;;N;;;;2C8D; -2C8D;COPTIC SMALL LETTER ZATA;Ll;0;L;;;;;N;;;2C8C;;2C8C -2C8E;COPTIC CAPITAL LETTER HATE;Lu;0;L;;;;;N;;;;2C8F; -2C8F;COPTIC SMALL LETTER HATE;Ll;0;L;;;;;N;;;2C8E;;2C8E -2C90;COPTIC CAPITAL LETTER THETHE;Lu;0;L;;;;;N;;;;2C91; -2C91;COPTIC SMALL LETTER THETHE;Ll;0;L;;;;;N;;;2C90;;2C90 -2C92;COPTIC CAPITAL LETTER IAUDA;Lu;0;L;;;;;N;;;;2C93; -2C93;COPTIC SMALL LETTER IAUDA;Ll;0;L;;;;;N;;;2C92;;2C92 -2C94;COPTIC CAPITAL LETTER KAPA;Lu;0;L;;;;;N;;;;2C95; -2C95;COPTIC SMALL LETTER KAPA;Ll;0;L;;;;;N;;;2C94;;2C94 -2C96;COPTIC CAPITAL LETTER LAULA;Lu;0;L;;;;;N;;;;2C97; -2C97;COPTIC SMALL LETTER LAULA;Ll;0;L;;;;;N;;;2C96;;2C96 -2C98;COPTIC CAPITAL LETTER MI;Lu;0;L;;;;;N;;;;2C99; -2C99;COPTIC SMALL LETTER MI;Ll;0;L;;;;;N;;;2C98;;2C98 -2C9A;COPTIC CAPITAL LETTER NI;Lu;0;L;;;;;N;;;;2C9B; -2C9B;COPTIC SMALL LETTER NI;Ll;0;L;;;;;N;;;2C9A;;2C9A -2C9C;COPTIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;2C9D; -2C9D;COPTIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;2C9C;;2C9C -2C9E;COPTIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;2C9F; -2C9F;COPTIC SMALL LETTER O;Ll;0;L;;;;;N;;;2C9E;;2C9E -2CA0;COPTIC CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;2CA1; -2CA1;COPTIC SMALL LETTER PI;Ll;0;L;;;;;N;;;2CA0;;2CA0 -2CA2;COPTIC CAPITAL LETTER RO;Lu;0;L;;;;;N;;;;2CA3; -2CA3;COPTIC SMALL LETTER RO;Ll;0;L;;;;;N;;;2CA2;;2CA2 -2CA4;COPTIC CAPITAL LETTER SIMA;Lu;0;L;;;;;N;;;;2CA5; -2CA5;COPTIC SMALL LETTER SIMA;Ll;0;L;;;;;N;;;2CA4;;2CA4 -2CA6;COPTIC CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;2CA7; -2CA7;COPTIC SMALL LETTER TAU;Ll;0;L;;;;;N;;;2CA6;;2CA6 -2CA8;COPTIC CAPITAL LETTER UA;Lu;0;L;;;;;N;;;;2CA9; -2CA9;COPTIC SMALL LETTER UA;Ll;0;L;;;;;N;;;2CA8;;2CA8 -2CAA;COPTIC CAPITAL LETTER FI;Lu;0;L;;;;;N;;;;2CAB; -2CAB;COPTIC SMALL LETTER FI;Ll;0;L;;;;;N;;;2CAA;;2CAA -2CAC;COPTIC CAPITAL LETTER KHI;Lu;0;L;;;;;N;;;;2CAD; -2CAD;COPTIC SMALL LETTER KHI;Ll;0;L;;;;;N;;;2CAC;;2CAC -2CAE;COPTIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;2CAF; -2CAF;COPTIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;2CAE;;2CAE -2CB0;COPTIC CAPITAL LETTER OOU;Lu;0;L;;;;;N;;;;2CB1; -2CB1;COPTIC SMALL LETTER OOU;Ll;0;L;;;;;N;;;2CB0;;2CB0 -2CB2;COPTIC CAPITAL LETTER DIALECT-P ALEF;Lu;0;L;;;;;N;;;;2CB3; -2CB3;COPTIC SMALL LETTER DIALECT-P ALEF;Ll;0;L;;;;;N;;;2CB2;;2CB2 -2CB4;COPTIC CAPITAL LETTER OLD COPTIC AIN;Lu;0;L;;;;;N;;;;2CB5; -2CB5;COPTIC SMALL LETTER OLD COPTIC AIN;Ll;0;L;;;;;N;;;2CB4;;2CB4 -2CB6;COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE;Lu;0;L;;;;;N;;;;2CB7; -2CB7;COPTIC SMALL LETTER CRYPTOGRAMMIC EIE;Ll;0;L;;;;;N;;;2CB6;;2CB6 -2CB8;COPTIC CAPITAL LETTER DIALECT-P KAPA;Lu;0;L;;;;;N;;;;2CB9; -2CB9;COPTIC SMALL LETTER DIALECT-P KAPA;Ll;0;L;;;;;N;;;2CB8;;2CB8 -2CBA;COPTIC CAPITAL LETTER DIALECT-P NI;Lu;0;L;;;;;N;;;;2CBB; -2CBB;COPTIC SMALL LETTER DIALECT-P NI;Ll;0;L;;;;;N;;;2CBA;;2CBA -2CBC;COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI;Lu;0;L;;;;;N;;;;2CBD; -2CBD;COPTIC SMALL LETTER CRYPTOGRAMMIC NI;Ll;0;L;;;;;N;;;2CBC;;2CBC -2CBE;COPTIC CAPITAL LETTER OLD COPTIC OOU;Lu;0;L;;;;;N;;;;2CBF; -2CBF;COPTIC SMALL LETTER OLD COPTIC OOU;Ll;0;L;;;;;N;;;2CBE;;2CBE -2CC0;COPTIC CAPITAL LETTER SAMPI;Lu;0;L;;;;;N;;;;2CC1; -2CC1;COPTIC SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;2CC0;;2CC0 -2CC2;COPTIC CAPITAL LETTER CROSSED SHEI;Lu;0;L;;;;;N;;;;2CC3; -2CC3;COPTIC SMALL LETTER CROSSED SHEI;Ll;0;L;;;;;N;;;2CC2;;2CC2 -2CC4;COPTIC CAPITAL LETTER OLD COPTIC SHEI;Lu;0;L;;;;;N;;;;2CC5; -2CC5;COPTIC SMALL LETTER OLD COPTIC SHEI;Ll;0;L;;;;;N;;;2CC4;;2CC4 -2CC6;COPTIC CAPITAL LETTER OLD COPTIC ESH;Lu;0;L;;;;;N;;;;2CC7; -2CC7;COPTIC SMALL LETTER OLD COPTIC ESH;Ll;0;L;;;;;N;;;2CC6;;2CC6 -2CC8;COPTIC CAPITAL LETTER AKHMIMIC KHEI;Lu;0;L;;;;;N;;;;2CC9; -2CC9;COPTIC SMALL LETTER AKHMIMIC KHEI;Ll;0;L;;;;;N;;;2CC8;;2CC8 -2CCA;COPTIC CAPITAL LETTER DIALECT-P HORI;Lu;0;L;;;;;N;;;;2CCB; -2CCB;COPTIC SMALL LETTER DIALECT-P HORI;Ll;0;L;;;;;N;;;2CCA;;2CCA -2CCC;COPTIC CAPITAL LETTER OLD COPTIC HORI;Lu;0;L;;;;;N;;;;2CCD; -2CCD;COPTIC SMALL LETTER OLD COPTIC HORI;Ll;0;L;;;;;N;;;2CCC;;2CCC -2CCE;COPTIC CAPITAL LETTER OLD COPTIC HA;Lu;0;L;;;;;N;;;;2CCF; -2CCF;COPTIC SMALL LETTER OLD COPTIC HA;Ll;0;L;;;;;N;;;2CCE;;2CCE -2CD0;COPTIC CAPITAL LETTER L-SHAPED HA;Lu;0;L;;;;;N;;;;2CD1; -2CD1;COPTIC SMALL LETTER L-SHAPED HA;Ll;0;L;;;;;N;;;2CD0;;2CD0 -2CD2;COPTIC CAPITAL LETTER OLD COPTIC HEI;Lu;0;L;;;;;N;;;;2CD3; -2CD3;COPTIC SMALL LETTER OLD COPTIC HEI;Ll;0;L;;;;;N;;;2CD2;;2CD2 -2CD4;COPTIC CAPITAL LETTER OLD COPTIC HAT;Lu;0;L;;;;;N;;;;2CD5; -2CD5;COPTIC SMALL LETTER OLD COPTIC HAT;Ll;0;L;;;;;N;;;2CD4;;2CD4 -2CD6;COPTIC CAPITAL LETTER OLD COPTIC GANGIA;Lu;0;L;;;;;N;;;;2CD7; -2CD7;COPTIC SMALL LETTER OLD COPTIC GANGIA;Ll;0;L;;;;;N;;;2CD6;;2CD6 -2CD8;COPTIC CAPITAL LETTER OLD COPTIC DJA;Lu;0;L;;;;;N;;;;2CD9; -2CD9;COPTIC SMALL LETTER OLD COPTIC DJA;Ll;0;L;;;;;N;;;2CD8;;2CD8 -2CDA;COPTIC CAPITAL LETTER OLD COPTIC SHIMA;Lu;0;L;;;;;N;;;;2CDB; -2CDB;COPTIC SMALL LETTER OLD COPTIC SHIMA;Ll;0;L;;;;;N;;;2CDA;;2CDA -2CDC;COPTIC CAPITAL LETTER OLD NUBIAN SHIMA;Lu;0;L;;;;;N;;;;2CDD; -2CDD;COPTIC SMALL LETTER OLD NUBIAN SHIMA;Ll;0;L;;;;;N;;;2CDC;;2CDC -2CDE;COPTIC CAPITAL LETTER OLD NUBIAN NGI;Lu;0;L;;;;;N;;;;2CDF; -2CDF;COPTIC SMALL LETTER OLD NUBIAN NGI;Ll;0;L;;;;;N;;;2CDE;;2CDE -2CE0;COPTIC CAPITAL LETTER OLD NUBIAN NYI;Lu;0;L;;;;;N;;;;2CE1; -2CE1;COPTIC SMALL LETTER OLD NUBIAN NYI;Ll;0;L;;;;;N;;;2CE0;;2CE0 -2CE2;COPTIC CAPITAL LETTER OLD NUBIAN WAU;Lu;0;L;;;;;N;;;;2CE3; -2CE3;COPTIC SMALL LETTER OLD NUBIAN WAU;Ll;0;L;;;;;N;;;2CE2;;2CE2 -2CE4;COPTIC SYMBOL KAI;Ll;0;L;;;;;N;;;;; -2CE5;COPTIC SYMBOL MI RO;So;0;ON;;;;;N;;;;; -2CE6;COPTIC SYMBOL PI RO;So;0;ON;;;;;N;;;;; -2CE7;COPTIC SYMBOL STAUROS;So;0;ON;;;;;N;;;;; -2CE8;COPTIC SYMBOL TAU RO;So;0;ON;;;;;N;;;;; -2CE9;COPTIC SYMBOL KHI RO;So;0;ON;;;;;N;;;;; -2CEA;COPTIC SYMBOL SHIMA SIMA;So;0;ON;;;;;N;;;;; -2CF9;COPTIC OLD NUBIAN FULL STOP;Po;0;ON;;;;;N;;;;; -2CFA;COPTIC OLD NUBIAN DIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;; -2CFB;COPTIC OLD NUBIAN INDIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;; -2CFC;COPTIC OLD NUBIAN VERSE DIVIDER;Po;0;ON;;;;;N;;;;; -2CFD;COPTIC FRACTION ONE HALF;No;0;ON;;;;1/2;N;;;;; -2CFE;COPTIC FULL STOP;Po;0;ON;;;;;N;;;;; -2CFF;COPTIC MORPHOLOGICAL DIVIDER;Po;0;ON;;;;;N;;;;; -2D00;GEORGIAN SMALL LETTER AN;Ll;0;L;;;;;N;;Khutsuri;10A0;;10A0 -2D01;GEORGIAN SMALL LETTER BAN;Ll;0;L;;;;;N;;Khutsuri;10A1;;10A1 -2D02;GEORGIAN SMALL LETTER GAN;Ll;0;L;;;;;N;;Khutsuri;10A2;;10A2 -2D03;GEORGIAN SMALL LETTER DON;Ll;0;L;;;;;N;;Khutsuri;10A3;;10A3 -2D04;GEORGIAN SMALL LETTER EN;Ll;0;L;;;;;N;;Khutsuri;10A4;;10A4 -2D05;GEORGIAN SMALL LETTER VIN;Ll;0;L;;;;;N;;Khutsuri;10A5;;10A5 -2D06;GEORGIAN SMALL LETTER ZEN;Ll;0;L;;;;;N;;Khutsuri;10A6;;10A6 -2D07;GEORGIAN SMALL LETTER TAN;Ll;0;L;;;;;N;;Khutsuri;10A7;;10A7 -2D08;GEORGIAN SMALL LETTER IN;Ll;0;L;;;;;N;;Khutsuri;10A8;;10A8 -2D09;GEORGIAN SMALL LETTER KAN;Ll;0;L;;;;;N;;Khutsuri;10A9;;10A9 -2D0A;GEORGIAN SMALL LETTER LAS;Ll;0;L;;;;;N;;Khutsuri;10AA;;10AA -2D0B;GEORGIAN SMALL LETTER MAN;Ll;0;L;;;;;N;;Khutsuri;10AB;;10AB -2D0C;GEORGIAN SMALL LETTER NAR;Ll;0;L;;;;;N;;Khutsuri;10AC;;10AC -2D0D;GEORGIAN SMALL LETTER ON;Ll;0;L;;;;;N;;Khutsuri;10AD;;10AD -2D0E;GEORGIAN SMALL LETTER PAR;Ll;0;L;;;;;N;;Khutsuri;10AE;;10AE -2D0F;GEORGIAN SMALL LETTER ZHAR;Ll;0;L;;;;;N;;Khutsuri;10AF;;10AF -2D10;GEORGIAN SMALL LETTER RAE;Ll;0;L;;;;;N;;Khutsuri;10B0;;10B0 -2D11;GEORGIAN SMALL LETTER SAN;Ll;0;L;;;;;N;;Khutsuri;10B1;;10B1 -2D12;GEORGIAN SMALL LETTER TAR;Ll;0;L;;;;;N;;Khutsuri;10B2;;10B2 -2D13;GEORGIAN SMALL LETTER UN;Ll;0;L;;;;;N;;Khutsuri;10B3;;10B3 -2D14;GEORGIAN SMALL LETTER PHAR;Ll;0;L;;;;;N;;Khutsuri;10B4;;10B4 -2D15;GEORGIAN SMALL LETTER KHAR;Ll;0;L;;;;;N;;Khutsuri;10B5;;10B5 -2D16;GEORGIAN SMALL LETTER GHAN;Ll;0;L;;;;;N;;Khutsuri;10B6;;10B6 -2D17;GEORGIAN SMALL LETTER QAR;Ll;0;L;;;;;N;;Khutsuri;10B7;;10B7 -2D18;GEORGIAN SMALL LETTER SHIN;Ll;0;L;;;;;N;;Khutsuri;10B8;;10B8 -2D19;GEORGIAN SMALL LETTER CHIN;Ll;0;L;;;;;N;;Khutsuri;10B9;;10B9 -2D1A;GEORGIAN SMALL LETTER CAN;Ll;0;L;;;;;N;;Khutsuri;10BA;;10BA -2D1B;GEORGIAN SMALL LETTER JIL;Ll;0;L;;;;;N;;Khutsuri;10BB;;10BB -2D1C;GEORGIAN SMALL LETTER CIL;Ll;0;L;;;;;N;;Khutsuri;10BC;;10BC -2D1D;GEORGIAN SMALL LETTER CHAR;Ll;0;L;;;;;N;;Khutsuri;10BD;;10BD -2D1E;GEORGIAN SMALL LETTER XAN;Ll;0;L;;;;;N;;Khutsuri;10BE;;10BE -2D1F;GEORGIAN SMALL LETTER JHAN;Ll;0;L;;;;;N;;Khutsuri;10BF;;10BF -2D20;GEORGIAN SMALL LETTER HAE;Ll;0;L;;;;;N;;Khutsuri;10C0;;10C0 -2D21;GEORGIAN SMALL LETTER HE;Ll;0;L;;;;;N;;Khutsuri;10C1;;10C1 -2D22;GEORGIAN SMALL LETTER HIE;Ll;0;L;;;;;N;;Khutsuri;10C2;;10C2 -2D23;GEORGIAN SMALL LETTER WE;Ll;0;L;;;;;N;;Khutsuri;10C3;;10C3 -2D24;GEORGIAN SMALL LETTER HAR;Ll;0;L;;;;;N;;Khutsuri;10C4;;10C4 -2D25;GEORGIAN SMALL LETTER HOE;Ll;0;L;;;;;N;;Khutsuri;10C5;;10C5 -2D30;TIFINAGH LETTER YA;Lo;0;L;;;;;N;;;;; -2D31;TIFINAGH LETTER YAB;Lo;0;L;;;;;N;;;;; -2D32;TIFINAGH LETTER YABH;Lo;0;L;;;;;N;;;;; -2D33;TIFINAGH LETTER YAG;Lo;0;L;;;;;N;;;;; -2D34;TIFINAGH LETTER YAGHH;Lo;0;L;;;;;N;;;;; -2D35;TIFINAGH LETTER BERBER ACADEMY YAJ;Lo;0;L;;;;;N;;;;; -2D36;TIFINAGH LETTER YAJ;Lo;0;L;;;;;N;;;;; -2D37;TIFINAGH LETTER YAD;Lo;0;L;;;;;N;;;;; -2D38;TIFINAGH LETTER YADH;Lo;0;L;;;;;N;;;;; -2D39;TIFINAGH LETTER YADD;Lo;0;L;;;;;N;;;;; -2D3A;TIFINAGH LETTER YADDH;Lo;0;L;;;;;N;;;;; -2D3B;TIFINAGH LETTER YEY;Lo;0;L;;;;;N;;;;; -2D3C;TIFINAGH LETTER YAF;Lo;0;L;;;;;N;;;;; -2D3D;TIFINAGH LETTER YAK;Lo;0;L;;;;;N;;;;; -2D3E;TIFINAGH LETTER TUAREG YAK;Lo;0;L;;;;;N;;;;; -2D3F;TIFINAGH LETTER YAKHH;Lo;0;L;;;;;N;;;;; -2D40;TIFINAGH LETTER YAH;Lo;0;L;;;;;N;;Tuareg yab;;; -2D41;TIFINAGH LETTER BERBER ACADEMY YAH;Lo;0;L;;;;;N;;;;; -2D42;TIFINAGH LETTER TUAREG YAH;Lo;0;L;;;;;N;;;;; -2D43;TIFINAGH LETTER YAHH;Lo;0;L;;;;;N;;;;; -2D44;TIFINAGH LETTER YAA;Lo;0;L;;;;;N;;;;; -2D45;TIFINAGH LETTER YAKH;Lo;0;L;;;;;N;;;;; -2D46;TIFINAGH LETTER TUAREG YAKH;Lo;0;L;;;;;N;;;;; -2D47;TIFINAGH LETTER YAQ;Lo;0;L;;;;;N;;;;; -2D48;TIFINAGH LETTER TUAREG YAQ;Lo;0;L;;;;;N;;;;; -2D49;TIFINAGH LETTER YI;Lo;0;L;;;;;N;;;;; -2D4A;TIFINAGH LETTER YAZH;Lo;0;L;;;;;N;;;;; -2D4B;TIFINAGH LETTER AHAGGAR YAZH;Lo;0;L;;;;;N;;;;; -2D4C;TIFINAGH LETTER TUAREG YAZH;Lo;0;L;;;;;N;;;;; -2D4D;TIFINAGH LETTER YAL;Lo;0;L;;;;;N;;;;; -2D4E;TIFINAGH LETTER YAM;Lo;0;L;;;;;N;;;;; -2D4F;TIFINAGH LETTER YAN;Lo;0;L;;;;;N;;;;; -2D50;TIFINAGH LETTER TUAREG YAGN;Lo;0;L;;;;;N;;;;; -2D51;TIFINAGH LETTER TUAREG YANG;Lo;0;L;;;;;N;;;;; -2D52;TIFINAGH LETTER YAP;Lo;0;L;;;;;N;;;;; -2D53;TIFINAGH LETTER YU;Lo;0;L;;;;;N;;Tuareg yaw;;; -2D54;TIFINAGH LETTER YAR;Lo;0;L;;;;;N;;;;; -2D55;TIFINAGH LETTER YARR;Lo;0;L;;;;;N;;;;; -2D56;TIFINAGH LETTER YAGH;Lo;0;L;;;;;N;;;;; -2D57;TIFINAGH LETTER TUAREG YAGH;Lo;0;L;;;;;N;;;;; -2D58;TIFINAGH LETTER AYER YAGH;Lo;0;L;;;;;N;;Adrar yaj;;; -2D59;TIFINAGH LETTER YAS;Lo;0;L;;;;;N;;;;; -2D5A;TIFINAGH LETTER YASS;Lo;0;L;;;;;N;;;;; -2D5B;TIFINAGH LETTER YASH;Lo;0;L;;;;;N;;;;; -2D5C;TIFINAGH LETTER YAT;Lo;0;L;;;;;N;;;;; -2D5D;TIFINAGH LETTER YATH;Lo;0;L;;;;;N;;;;; -2D5E;TIFINAGH LETTER YACH;Lo;0;L;;;;;N;;;;; -2D5F;TIFINAGH LETTER YATT;Lo;0;L;;;;;N;;;;; -2D60;TIFINAGH LETTER YAV;Lo;0;L;;;;;N;;;;; -2D61;TIFINAGH LETTER YAW;Lo;0;L;;;;;N;;;;; -2D62;TIFINAGH LETTER YAY;Lo;0;L;;;;;N;;;;; -2D63;TIFINAGH LETTER YAZ;Lo;0;L;;;;;N;;;;; -2D64;TIFINAGH LETTER TAWELLEMET YAZ;Lo;0;L;;;;;N;;harpoon yaz;;; -2D65;TIFINAGH LETTER YAZZ;Lo;0;L;;;;;N;;;;; -2D6F;TIFINAGH MODIFIER LETTER LABIALIZATION MARK;Lm;0;L; 2D61;;;;N;;tamatart;;; -2D80;ETHIOPIC SYLLABLE LOA;Lo;0;L;;;;;N;;;;; -2D81;ETHIOPIC SYLLABLE MOA;Lo;0;L;;;;;N;;;;; -2D82;ETHIOPIC SYLLABLE ROA;Lo;0;L;;;;;N;;;;; -2D83;ETHIOPIC SYLLABLE SOA;Lo;0;L;;;;;N;;;;; -2D84;ETHIOPIC SYLLABLE SHOA;Lo;0;L;;;;;N;;;;; -2D85;ETHIOPIC SYLLABLE BOA;Lo;0;L;;;;;N;;;;; -2D86;ETHIOPIC SYLLABLE TOA;Lo;0;L;;;;;N;;;;; -2D87;ETHIOPIC SYLLABLE COA;Lo;0;L;;;;;N;;;;; -2D88;ETHIOPIC SYLLABLE NOA;Lo;0;L;;;;;N;;;;; -2D89;ETHIOPIC SYLLABLE NYOA;Lo;0;L;;;;;N;;;;; -2D8A;ETHIOPIC SYLLABLE GLOTTAL OA;Lo;0;L;;;;;N;;;;; -2D8B;ETHIOPIC SYLLABLE ZOA;Lo;0;L;;;;;N;;;;; -2D8C;ETHIOPIC SYLLABLE DOA;Lo;0;L;;;;;N;;;;; -2D8D;ETHIOPIC SYLLABLE DDOA;Lo;0;L;;;;;N;;;;; -2D8E;ETHIOPIC SYLLABLE JOA;Lo;0;L;;;;;N;;;;; -2D8F;ETHIOPIC SYLLABLE THOA;Lo;0;L;;;;;N;;;;; -2D90;ETHIOPIC SYLLABLE CHOA;Lo;0;L;;;;;N;;;;; -2D91;ETHIOPIC SYLLABLE PHOA;Lo;0;L;;;;;N;;;;; -2D92;ETHIOPIC SYLLABLE POA;Lo;0;L;;;;;N;;;;; -2D93;ETHIOPIC SYLLABLE GGWA;Lo;0;L;;;;;N;;;;; -2D94;ETHIOPIC SYLLABLE GGWI;Lo;0;L;;;;;N;;;;; -2D95;ETHIOPIC SYLLABLE GGWEE;Lo;0;L;;;;;N;;;;; -2D96;ETHIOPIC SYLLABLE GGWE;Lo;0;L;;;;;N;;;;; -2DA0;ETHIOPIC SYLLABLE SSA;Lo;0;L;;;;;N;;;;; -2DA1;ETHIOPIC SYLLABLE SSU;Lo;0;L;;;;;N;;;;; -2DA2;ETHIOPIC SYLLABLE SSI;Lo;0;L;;;;;N;;;;; -2DA3;ETHIOPIC SYLLABLE SSAA;Lo;0;L;;;;;N;;;;; -2DA4;ETHIOPIC SYLLABLE SSEE;Lo;0;L;;;;;N;;;;; -2DA5;ETHIOPIC SYLLABLE SSE;Lo;0;L;;;;;N;;;;; -2DA6;ETHIOPIC SYLLABLE SSO;Lo;0;L;;;;;N;;;;; -2DA8;ETHIOPIC SYLLABLE CCA;Lo;0;L;;;;;N;;;;; -2DA9;ETHIOPIC SYLLABLE CCU;Lo;0;L;;;;;N;;;;; -2DAA;ETHIOPIC SYLLABLE CCI;Lo;0;L;;;;;N;;;;; -2DAB;ETHIOPIC SYLLABLE CCAA;Lo;0;L;;;;;N;;;;; -2DAC;ETHIOPIC SYLLABLE CCEE;Lo;0;L;;;;;N;;;;; -2DAD;ETHIOPIC SYLLABLE CCE;Lo;0;L;;;;;N;;;;; -2DAE;ETHIOPIC SYLLABLE CCO;Lo;0;L;;;;;N;;;;; -2DB0;ETHIOPIC SYLLABLE ZZA;Lo;0;L;;;;;N;;;;; -2DB1;ETHIOPIC SYLLABLE ZZU;Lo;0;L;;;;;N;;;;; -2DB2;ETHIOPIC SYLLABLE ZZI;Lo;0;L;;;;;N;;;;; -2DB3;ETHIOPIC SYLLABLE ZZAA;Lo;0;L;;;;;N;;;;; -2DB4;ETHIOPIC SYLLABLE ZZEE;Lo;0;L;;;;;N;;;;; -2DB5;ETHIOPIC SYLLABLE ZZE;Lo;0;L;;;;;N;;;;; -2DB6;ETHIOPIC SYLLABLE ZZO;Lo;0;L;;;;;N;;;;; -2DB8;ETHIOPIC SYLLABLE CCHA;Lo;0;L;;;;;N;;;;; -2DB9;ETHIOPIC SYLLABLE CCHU;Lo;0;L;;;;;N;;;;; -2DBA;ETHIOPIC SYLLABLE CCHI;Lo;0;L;;;;;N;;;;; -2DBB;ETHIOPIC SYLLABLE CCHAA;Lo;0;L;;;;;N;;;;; -2DBC;ETHIOPIC SYLLABLE CCHEE;Lo;0;L;;;;;N;;;;; -2DBD;ETHIOPIC SYLLABLE CCHE;Lo;0;L;;;;;N;;;;; -2DBE;ETHIOPIC SYLLABLE CCHO;Lo;0;L;;;;;N;;;;; -2DC0;ETHIOPIC SYLLABLE QYA;Lo;0;L;;;;;N;;;;; -2DC1;ETHIOPIC SYLLABLE QYU;Lo;0;L;;;;;N;;;;; -2DC2;ETHIOPIC SYLLABLE QYI;Lo;0;L;;;;;N;;;;; -2DC3;ETHIOPIC SYLLABLE QYAA;Lo;0;L;;;;;N;;;;; -2DC4;ETHIOPIC SYLLABLE QYEE;Lo;0;L;;;;;N;;;;; -2DC5;ETHIOPIC SYLLABLE QYE;Lo;0;L;;;;;N;;;;; -2DC6;ETHIOPIC SYLLABLE QYO;Lo;0;L;;;;;N;;;;; -2DC8;ETHIOPIC SYLLABLE KYA;Lo;0;L;;;;;N;;;;; -2DC9;ETHIOPIC SYLLABLE KYU;Lo;0;L;;;;;N;;;;; -2DCA;ETHIOPIC SYLLABLE KYI;Lo;0;L;;;;;N;;;;; -2DCB;ETHIOPIC SYLLABLE KYAA;Lo;0;L;;;;;N;;;;; -2DCC;ETHIOPIC SYLLABLE KYEE;Lo;0;L;;;;;N;;;;; -2DCD;ETHIOPIC SYLLABLE KYE;Lo;0;L;;;;;N;;;;; -2DCE;ETHIOPIC SYLLABLE KYO;Lo;0;L;;;;;N;;;;; -2DD0;ETHIOPIC SYLLABLE XYA;Lo;0;L;;;;;N;;;;; -2DD1;ETHIOPIC SYLLABLE XYU;Lo;0;L;;;;;N;;;;; -2DD2;ETHIOPIC SYLLABLE XYI;Lo;0;L;;;;;N;;;;; -2DD3;ETHIOPIC SYLLABLE XYAA;Lo;0;L;;;;;N;;;;; -2DD4;ETHIOPIC SYLLABLE XYEE;Lo;0;L;;;;;N;;;;; -2DD5;ETHIOPIC SYLLABLE XYE;Lo;0;L;;;;;N;;;;; -2DD6;ETHIOPIC SYLLABLE XYO;Lo;0;L;;;;;N;;;;; -2DD8;ETHIOPIC SYLLABLE GYA;Lo;0;L;;;;;N;;;;; -2DD9;ETHIOPIC SYLLABLE GYU;Lo;0;L;;;;;N;;;;; -2DDA;ETHIOPIC SYLLABLE GYI;Lo;0;L;;;;;N;;;;; -2DDB;ETHIOPIC SYLLABLE GYAA;Lo;0;L;;;;;N;;;;; -2DDC;ETHIOPIC SYLLABLE GYEE;Lo;0;L;;;;;N;;;;; -2DDD;ETHIOPIC SYLLABLE GYE;Lo;0;L;;;;;N;;;;; -2DDE;ETHIOPIC SYLLABLE GYO;Lo;0;L;;;;;N;;;;; -2DE0;COMBINING CYRILLIC LETTER BE;Mn;230;NSM;;;;;N;;;;; -2DE1;COMBINING CYRILLIC LETTER VE;Mn;230;NSM;;;;;N;;;;; -2DE2;COMBINING CYRILLIC LETTER GHE;Mn;230;NSM;;;;;N;;;;; -2DE3;COMBINING CYRILLIC LETTER DE;Mn;230;NSM;;;;;N;;;;; -2DE4;COMBINING CYRILLIC LETTER ZHE;Mn;230;NSM;;;;;N;;;;; -2DE5;COMBINING CYRILLIC LETTER ZE;Mn;230;NSM;;;;;N;;;;; -2DE6;COMBINING CYRILLIC LETTER KA;Mn;230;NSM;;;;;N;;;;; -2DE7;COMBINING CYRILLIC LETTER EL;Mn;230;NSM;;;;;N;;;;; -2DE8;COMBINING CYRILLIC LETTER EM;Mn;230;NSM;;;;;N;;;;; -2DE9;COMBINING CYRILLIC LETTER EN;Mn;230;NSM;;;;;N;;;;; -2DEA;COMBINING CYRILLIC LETTER O;Mn;230;NSM;;;;;N;;;;; -2DEB;COMBINING CYRILLIC LETTER PE;Mn;230;NSM;;;;;N;;;;; -2DEC;COMBINING CYRILLIC LETTER ER;Mn;230;NSM;;;;;N;;;;; -2DED;COMBINING CYRILLIC LETTER ES;Mn;230;NSM;;;;;N;;;;; -2DEE;COMBINING CYRILLIC LETTER TE;Mn;230;NSM;;;;;N;;;;; -2DEF;COMBINING CYRILLIC LETTER HA;Mn;230;NSM;;;;;N;;;;; -2DF0;COMBINING CYRILLIC LETTER TSE;Mn;230;NSM;;;;;N;;;;; -2DF1;COMBINING CYRILLIC LETTER CHE;Mn;230;NSM;;;;;N;;;;; -2DF2;COMBINING CYRILLIC LETTER SHA;Mn;230;NSM;;;;;N;;;;; -2DF3;COMBINING CYRILLIC LETTER SHCHA;Mn;230;NSM;;;;;N;;;;; -2DF4;COMBINING CYRILLIC LETTER FITA;Mn;230;NSM;;;;;N;;;;; -2DF5;COMBINING CYRILLIC LETTER ES-TE;Mn;230;NSM;;;;;N;;;;; -2DF6;COMBINING CYRILLIC LETTER A;Mn;230;NSM;;;;;N;;;;; -2DF7;COMBINING CYRILLIC LETTER IE;Mn;230;NSM;;;;;N;;;;; -2DF8;COMBINING CYRILLIC LETTER DJERV;Mn;230;NSM;;;;;N;;;;; -2DF9;COMBINING CYRILLIC LETTER MONOGRAPH UK;Mn;230;NSM;;;;;N;;;;; -2DFA;COMBINING CYRILLIC LETTER YAT;Mn;230;NSM;;;;;N;;;;; -2DFB;COMBINING CYRILLIC LETTER YU;Mn;230;NSM;;;;;N;;;;; -2DFC;COMBINING CYRILLIC LETTER IOTIFIED A;Mn;230;NSM;;;;;N;;;;; -2DFD;COMBINING CYRILLIC LETTER LITTLE YUS;Mn;230;NSM;;;;;N;;;;; -2DFE;COMBINING CYRILLIC LETTER BIG YUS;Mn;230;NSM;;;;;N;;;;; -2DFF;COMBINING CYRILLIC LETTER IOTIFIED BIG YUS;Mn;230;NSM;;;;;N;;;;; -2E00;RIGHT ANGLE SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;; -2E01;RIGHT ANGLE DOTTED SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;; -2E02;LEFT SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;; -2E03;RIGHT SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;; -2E04;LEFT DOTTED SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;; -2E05;RIGHT DOTTED SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;; -2E06;RAISED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;; -2E07;RAISED DOTTED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;; -2E08;DOTTED TRANSPOSITION MARKER;Po;0;ON;;;;;N;;;;; -2E09;LEFT TRANSPOSITION BRACKET;Pi;0;ON;;;;;Y;;;;; -2E0A;RIGHT TRANSPOSITION BRACKET;Pf;0;ON;;;;;Y;;;;; -2E0B;RAISED SQUARE;Po;0;ON;;;;;N;;;;; -2E0C;LEFT RAISED OMISSION BRACKET;Pi;0;ON;;;;;Y;;;;; -2E0D;RIGHT RAISED OMISSION BRACKET;Pf;0;ON;;;;;Y;;;;; -2E0E;EDITORIAL CORONIS;Po;0;ON;;;;;N;;;;; -2E0F;PARAGRAPHOS;Po;0;ON;;;;;N;;;;; -2E10;FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;; -2E11;REVERSED FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;; -2E12;HYPODIASTOLE;Po;0;ON;;;;;N;;;;; -2E13;DOTTED OBELOS;Po;0;ON;;;;;N;;;;; -2E14;DOWNWARDS ANCORA;Po;0;ON;;;;;N;;;;; -2E15;UPWARDS ANCORA;Po;0;ON;;;;;N;;;;; -2E16;DOTTED RIGHT-POINTING ANGLE;Po;0;ON;;;;;N;;;;; -2E17;DOUBLE OBLIQUE HYPHEN;Pd;0;ON;;;;;N;;;;; -2E18;INVERTED INTERROBANG;Po;0;ON;;;;;N;;;;; -2E19;PALM BRANCH;Po;0;ON;;;;;N;;;;; -2E1A;HYPHEN WITH DIAERESIS;Pd;0;ON;;;;;N;;;;; -2E1B;TILDE WITH RING ABOVE;Po;0;ON;;;;;N;;;;; -2E1C;LEFT LOW PARAPHRASE BRACKET;Pi;0;ON;;;;;Y;;;;; -2E1D;RIGHT LOW PARAPHRASE BRACKET;Pf;0;ON;;;;;Y;;;;; -2E1E;TILDE WITH DOT ABOVE;Po;0;ON;;;;;N;;;;; -2E1F;TILDE WITH DOT BELOW;Po;0;ON;;;;;N;;;;; -2E20;LEFT VERTICAL BAR WITH QUILL;Pi;0;ON;;;;;Y;;;;; -2E21;RIGHT VERTICAL BAR WITH QUILL;Pf;0;ON;;;;;Y;;;;; -2E22;TOP LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;; -2E23;TOP RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;; -2E24;BOTTOM LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;; -2E25;BOTTOM RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;; -2E26;LEFT SIDEWAYS U BRACKET;Ps;0;ON;;;;;Y;;;;; -2E27;RIGHT SIDEWAYS U BRACKET;Pe;0;ON;;;;;Y;;;;; -2E28;LEFT DOUBLE PARENTHESIS;Ps;0;ON;;;;;Y;;;;; -2E29;RIGHT DOUBLE PARENTHESIS;Pe;0;ON;;;;;Y;;;;; -2E2A;TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -2E2B;ONE DOT OVER TWO DOTS PUNCTUATION;Po;0;ON;;;;;N;;;;; -2E2C;SQUARED FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -2E2D;FIVE DOT MARK;Po;0;ON;;;;;N;;;;; -2E2E;REVERSED QUESTION MARK;Po;0;ON;;;;;N;;;;; -2E2F;VERTICAL TILDE;Lm;0;ON;;;;;N;;;;; -2E30;RING POINT;Po;0;ON;;;;;N;;;;; -2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;; -2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;; -2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;; -2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;; -2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;; -2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;; -2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;; -2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;; -2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;; -2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;; -2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;; -2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;; -2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;; -2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;; -2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;; -2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;; -2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;; -2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;; -2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;; -2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;; -2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;; -2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;; -2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;; -2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;; -2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;; -2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;; -2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;; -2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;; -2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;; -2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;; -2E9F;CJK RADICAL MOTHER;So;0;ON; 6BCD;;;;N;;;;; -2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;; -2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;; -2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;; -2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;; -2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;; -2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;; -2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;; -2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;; -2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;; -2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;; -2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;; -2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;; -2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;; -2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;; -2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;; -2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;; -2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;; -2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;; -2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;; -2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;; -2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;; -2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;; -2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;; -2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;; -2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;; -2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;; -2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;; -2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;; -2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;; -2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;; -2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;; -2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;; -2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;; -2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;; -2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;; -2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;; -2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;; -2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;; -2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;; -2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;; -2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;; -2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;; -2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;; -2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;; -2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;; -2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;; -2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;; -2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;; -2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;; -2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;; -2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;; -2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;; -2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;; -2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;; -2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;; -2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;; -2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;; -2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;; -2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;; -2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;; -2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;; -2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;; -2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;; -2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;; -2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;; -2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;; -2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;; -2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;; -2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;; -2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;; -2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;; -2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;; -2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;; -2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;; -2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;; -2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;; -2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;; -2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;; -2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;; -2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;; -2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;; -2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;; -2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;; -2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON; 9F9F;;;;N;;;;; -2F00;KANGXI RADICAL ONE;So;0;ON; 4E00;;;;N;;;;; -2F01;KANGXI RADICAL LINE;So;0;ON; 4E28;;;;N;;;;; -2F02;KANGXI RADICAL DOT;So;0;ON; 4E36;;;;N;;;;; -2F03;KANGXI RADICAL SLASH;So;0;ON; 4E3F;;;;N;;;;; -2F04;KANGXI RADICAL SECOND;So;0;ON; 4E59;;;;N;;;;; -2F05;KANGXI RADICAL HOOK;So;0;ON; 4E85;;;;N;;;;; -2F06;KANGXI RADICAL TWO;So;0;ON; 4E8C;;;;N;;;;; -2F07;KANGXI RADICAL LID;So;0;ON; 4EA0;;;;N;;;;; -2F08;KANGXI RADICAL MAN;So;0;ON; 4EBA;;;;N;;;;; -2F09;KANGXI RADICAL LEGS;So;0;ON; 513F;;;;N;;;;; -2F0A;KANGXI RADICAL ENTER;So;0;ON; 5165;;;;N;;;;; -2F0B;KANGXI RADICAL EIGHT;So;0;ON; 516B;;;;N;;;;; -2F0C;KANGXI RADICAL DOWN BOX;So;0;ON; 5182;;;;N;;;;; -2F0D;KANGXI RADICAL COVER;So;0;ON; 5196;;;;N;;;;; -2F0E;KANGXI RADICAL ICE;So;0;ON; 51AB;;;;N;;;;; -2F0F;KANGXI RADICAL TABLE;So;0;ON; 51E0;;;;N;;;;; -2F10;KANGXI RADICAL OPEN BOX;So;0;ON; 51F5;;;;N;;;;; -2F11;KANGXI RADICAL KNIFE;So;0;ON; 5200;;;;N;;;;; -2F12;KANGXI RADICAL POWER;So;0;ON; 529B;;;;N;;;;; -2F13;KANGXI RADICAL WRAP;So;0;ON; 52F9;;;;N;;;;; -2F14;KANGXI RADICAL SPOON;So;0;ON; 5315;;;;N;;;;; -2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON; 531A;;;;N;;;;; -2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON; 5338;;;;N;;;;; -2F17;KANGXI RADICAL TEN;So;0;ON; 5341;;;;N;;;;; -2F18;KANGXI RADICAL DIVINATION;So;0;ON; 535C;;;;N;;;;; -2F19;KANGXI RADICAL SEAL;So;0;ON; 5369;;;;N;;;;; -2F1A;KANGXI RADICAL CLIFF;So;0;ON; 5382;;;;N;;;;; -2F1B;KANGXI RADICAL PRIVATE;So;0;ON; 53B6;;;;N;;;;; -2F1C;KANGXI RADICAL AGAIN;So;0;ON; 53C8;;;;N;;;;; -2F1D;KANGXI RADICAL MOUTH;So;0;ON; 53E3;;;;N;;;;; -2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON; 56D7;;;;N;;;;; -2F1F;KANGXI RADICAL EARTH;So;0;ON; 571F;;;;N;;;;; -2F20;KANGXI RADICAL SCHOLAR;So;0;ON; 58EB;;;;N;;;;; -2F21;KANGXI RADICAL GO;So;0;ON; 5902;;;;N;;;;; -2F22;KANGXI RADICAL GO SLOWLY;So;0;ON; 590A;;;;N;;;;; -2F23;KANGXI RADICAL EVENING;So;0;ON; 5915;;;;N;;;;; -2F24;KANGXI RADICAL BIG;So;0;ON; 5927;;;;N;;;;; -2F25;KANGXI RADICAL WOMAN;So;0;ON; 5973;;;;N;;;;; -2F26;KANGXI RADICAL CHILD;So;0;ON; 5B50;;;;N;;;;; -2F27;KANGXI RADICAL ROOF;So;0;ON; 5B80;;;;N;;;;; -2F28;KANGXI RADICAL INCH;So;0;ON; 5BF8;;;;N;;;;; -2F29;KANGXI RADICAL SMALL;So;0;ON; 5C0F;;;;N;;;;; -2F2A;KANGXI RADICAL LAME;So;0;ON; 5C22;;;;N;;;;; -2F2B;KANGXI RADICAL CORPSE;So;0;ON; 5C38;;;;N;;;;; -2F2C;KANGXI RADICAL SPROUT;So;0;ON; 5C6E;;;;N;;;;; -2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON; 5C71;;;;N;;;;; -2F2E;KANGXI RADICAL RIVER;So;0;ON; 5DDB;;;;N;;;;; -2F2F;KANGXI RADICAL WORK;So;0;ON; 5DE5;;;;N;;;;; -2F30;KANGXI RADICAL ONESELF;So;0;ON; 5DF1;;;;N;;;;; -2F31;KANGXI RADICAL TURBAN;So;0;ON; 5DFE;;;;N;;;;; -2F32;KANGXI RADICAL DRY;So;0;ON; 5E72;;;;N;;;;; -2F33;KANGXI RADICAL SHORT THREAD;So;0;ON; 5E7A;;;;N;;;;; -2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON; 5E7F;;;;N;;;;; -2F35;KANGXI RADICAL LONG STRIDE;So;0;ON; 5EF4;;;;N;;;;; -2F36;KANGXI RADICAL TWO HANDS;So;0;ON; 5EFE;;;;N;;;;; -2F37;KANGXI RADICAL SHOOT;So;0;ON; 5F0B;;;;N;;;;; -2F38;KANGXI RADICAL BOW;So;0;ON; 5F13;;;;N;;;;; -2F39;KANGXI RADICAL SNOUT;So;0;ON; 5F50;;;;N;;;;; -2F3A;KANGXI RADICAL BRISTLE;So;0;ON; 5F61;;;;N;;;;; -2F3B;KANGXI RADICAL STEP;So;0;ON; 5F73;;;;N;;;;; -2F3C;KANGXI RADICAL HEART;So;0;ON; 5FC3;;;;N;;;;; -2F3D;KANGXI RADICAL HALBERD;So;0;ON; 6208;;;;N;;;;; -2F3E;KANGXI RADICAL DOOR;So;0;ON; 6236;;;;N;;;;; -2F3F;KANGXI RADICAL HAND;So;0;ON; 624B;;;;N;;;;; -2F40;KANGXI RADICAL BRANCH;So;0;ON; 652F;;;;N;;;;; -2F41;KANGXI RADICAL RAP;So;0;ON; 6534;;;;N;;;;; -2F42;KANGXI RADICAL SCRIPT;So;0;ON; 6587;;;;N;;;;; -2F43;KANGXI RADICAL DIPPER;So;0;ON; 6597;;;;N;;;;; -2F44;KANGXI RADICAL AXE;So;0;ON; 65A4;;;;N;;;;; -2F45;KANGXI RADICAL SQUARE;So;0;ON; 65B9;;;;N;;;;; -2F46;KANGXI RADICAL NOT;So;0;ON; 65E0;;;;N;;;;; -2F47;KANGXI RADICAL SUN;So;0;ON; 65E5;;;;N;;;;; -2F48;KANGXI RADICAL SAY;So;0;ON; 66F0;;;;N;;;;; -2F49;KANGXI RADICAL MOON;So;0;ON; 6708;;;;N;;;;; -2F4A;KANGXI RADICAL TREE;So;0;ON; 6728;;;;N;;;;; -2F4B;KANGXI RADICAL LACK;So;0;ON; 6B20;;;;N;;;;; -2F4C;KANGXI RADICAL STOP;So;0;ON; 6B62;;;;N;;;;; -2F4D;KANGXI RADICAL DEATH;So;0;ON; 6B79;;;;N;;;;; -2F4E;KANGXI RADICAL WEAPON;So;0;ON; 6BB3;;;;N;;;;; -2F4F;KANGXI RADICAL DO NOT;So;0;ON; 6BCB;;;;N;;;;; -2F50;KANGXI RADICAL COMPARE;So;0;ON; 6BD4;;;;N;;;;; -2F51;KANGXI RADICAL FUR;So;0;ON; 6BDB;;;;N;;;;; -2F52;KANGXI RADICAL CLAN;So;0;ON; 6C0F;;;;N;;;;; -2F53;KANGXI RADICAL STEAM;So;0;ON; 6C14;;;;N;;;;; -2F54;KANGXI RADICAL WATER;So;0;ON; 6C34;;;;N;;;;; -2F55;KANGXI RADICAL FIRE;So;0;ON; 706B;;;;N;;;;; -2F56;KANGXI RADICAL CLAW;So;0;ON; 722A;;;;N;;;;; -2F57;KANGXI RADICAL FATHER;So;0;ON; 7236;;;;N;;;;; -2F58;KANGXI RADICAL DOUBLE X;So;0;ON; 723B;;;;N;;;;; -2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON; 723F;;;;N;;;;; -2F5A;KANGXI RADICAL SLICE;So;0;ON; 7247;;;;N;;;;; -2F5B;KANGXI RADICAL FANG;So;0;ON; 7259;;;;N;;;;; -2F5C;KANGXI RADICAL COW;So;0;ON; 725B;;;;N;;;;; -2F5D;KANGXI RADICAL DOG;So;0;ON; 72AC;;;;N;;;;; -2F5E;KANGXI RADICAL PROFOUND;So;0;ON; 7384;;;;N;;;;; -2F5F;KANGXI RADICAL JADE;So;0;ON; 7389;;;;N;;;;; -2F60;KANGXI RADICAL MELON;So;0;ON; 74DC;;;;N;;;;; -2F61;KANGXI RADICAL TILE;So;0;ON; 74E6;;;;N;;;;; -2F62;KANGXI RADICAL SWEET;So;0;ON; 7518;;;;N;;;;; -2F63;KANGXI RADICAL LIFE;So;0;ON; 751F;;;;N;;;;; -2F64;KANGXI RADICAL USE;So;0;ON; 7528;;;;N;;;;; -2F65;KANGXI RADICAL FIELD;So;0;ON; 7530;;;;N;;;;; -2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON; 758B;;;;N;;;;; -2F67;KANGXI RADICAL SICKNESS;So;0;ON; 7592;;;;N;;;;; -2F68;KANGXI RADICAL DOTTED TENT;So;0;ON; 7676;;;;N;;;;; -2F69;KANGXI RADICAL WHITE;So;0;ON; 767D;;;;N;;;;; -2F6A;KANGXI RADICAL SKIN;So;0;ON; 76AE;;;;N;;;;; -2F6B;KANGXI RADICAL DISH;So;0;ON; 76BF;;;;N;;;;; -2F6C;KANGXI RADICAL EYE;So;0;ON; 76EE;;;;N;;;;; -2F6D;KANGXI RADICAL SPEAR;So;0;ON; 77DB;;;;N;;;;; -2F6E;KANGXI RADICAL ARROW;So;0;ON; 77E2;;;;N;;;;; -2F6F;KANGXI RADICAL STONE;So;0;ON; 77F3;;;;N;;;;; -2F70;KANGXI RADICAL SPIRIT;So;0;ON; 793A;;;;N;;;;; -2F71;KANGXI RADICAL TRACK;So;0;ON; 79B8;;;;N;;;;; -2F72;KANGXI RADICAL GRAIN;So;0;ON; 79BE;;;;N;;;;; -2F73;KANGXI RADICAL CAVE;So;0;ON; 7A74;;;;N;;;;; -2F74;KANGXI RADICAL STAND;So;0;ON; 7ACB;;;;N;;;;; -2F75;KANGXI RADICAL BAMBOO;So;0;ON; 7AF9;;;;N;;;;; -2F76;KANGXI RADICAL RICE;So;0;ON; 7C73;;;;N;;;;; -2F77;KANGXI RADICAL SILK;So;0;ON; 7CF8;;;;N;;;;; -2F78;KANGXI RADICAL JAR;So;0;ON; 7F36;;;;N;;;;; -2F79;KANGXI RADICAL NET;So;0;ON; 7F51;;;;N;;;;; -2F7A;KANGXI RADICAL SHEEP;So;0;ON; 7F8A;;;;N;;;;; -2F7B;KANGXI RADICAL FEATHER;So;0;ON; 7FBD;;;;N;;;;; -2F7C;KANGXI RADICAL OLD;So;0;ON; 8001;;;;N;;;;; -2F7D;KANGXI RADICAL AND;So;0;ON; 800C;;;;N;;;;; -2F7E;KANGXI RADICAL PLOW;So;0;ON; 8012;;;;N;;;;; -2F7F;KANGXI RADICAL EAR;So;0;ON; 8033;;;;N;;;;; -2F80;KANGXI RADICAL BRUSH;So;0;ON; 807F;;;;N;;;;; -2F81;KANGXI RADICAL MEAT;So;0;ON; 8089;;;;N;;;;; -2F82;KANGXI RADICAL MINISTER;So;0;ON; 81E3;;;;N;;;;; -2F83;KANGXI RADICAL SELF;So;0;ON; 81EA;;;;N;;;;; -2F84;KANGXI RADICAL ARRIVE;So;0;ON; 81F3;;;;N;;;;; -2F85;KANGXI RADICAL MORTAR;So;0;ON; 81FC;;;;N;;;;; -2F86;KANGXI RADICAL TONGUE;So;0;ON; 820C;;;;N;;;;; -2F87;KANGXI RADICAL OPPOSE;So;0;ON; 821B;;;;N;;;;; -2F88;KANGXI RADICAL BOAT;So;0;ON; 821F;;;;N;;;;; -2F89;KANGXI RADICAL STOPPING;So;0;ON; 826E;;;;N;;;;; -2F8A;KANGXI RADICAL COLOR;So;0;ON; 8272;;;;N;;;;; -2F8B;KANGXI RADICAL GRASS;So;0;ON; 8278;;;;N;;;;; -2F8C;KANGXI RADICAL TIGER;So;0;ON; 864D;;;;N;;;;; -2F8D;KANGXI RADICAL INSECT;So;0;ON; 866B;;;;N;;;;; -2F8E;KANGXI RADICAL BLOOD;So;0;ON; 8840;;;;N;;;;; -2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON; 884C;;;;N;;;;; -2F90;KANGXI RADICAL CLOTHES;So;0;ON; 8863;;;;N;;;;; -2F91;KANGXI RADICAL WEST;So;0;ON; 897E;;;;N;;;;; -2F92;KANGXI RADICAL SEE;So;0;ON; 898B;;;;N;;;;; -2F93;KANGXI RADICAL HORN;So;0;ON; 89D2;;;;N;;;;; -2F94;KANGXI RADICAL SPEECH;So;0;ON; 8A00;;;;N;;;;; -2F95;KANGXI RADICAL VALLEY;So;0;ON; 8C37;;;;N;;;;; -2F96;KANGXI RADICAL BEAN;So;0;ON; 8C46;;;;N;;;;; -2F97;KANGXI RADICAL PIG;So;0;ON; 8C55;;;;N;;;;; -2F98;KANGXI RADICAL BADGER;So;0;ON; 8C78;;;;N;;;;; -2F99;KANGXI RADICAL SHELL;So;0;ON; 8C9D;;;;N;;;;; -2F9A;KANGXI RADICAL RED;So;0;ON; 8D64;;;;N;;;;; -2F9B;KANGXI RADICAL RUN;So;0;ON; 8D70;;;;N;;;;; -2F9C;KANGXI RADICAL FOOT;So;0;ON; 8DB3;;;;N;;;;; -2F9D;KANGXI RADICAL BODY;So;0;ON; 8EAB;;;;N;;;;; -2F9E;KANGXI RADICAL CART;So;0;ON; 8ECA;;;;N;;;;; -2F9F;KANGXI RADICAL BITTER;So;0;ON; 8F9B;;;;N;;;;; -2FA0;KANGXI RADICAL MORNING;So;0;ON; 8FB0;;;;N;;;;; -2FA1;KANGXI RADICAL WALK;So;0;ON; 8FB5;;;;N;;;;; -2FA2;KANGXI RADICAL CITY;So;0;ON; 9091;;;;N;;;;; -2FA3;KANGXI RADICAL WINE;So;0;ON; 9149;;;;N;;;;; -2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON; 91C6;;;;N;;;;; -2FA5;KANGXI RADICAL VILLAGE;So;0;ON; 91CC;;;;N;;;;; -2FA6;KANGXI RADICAL GOLD;So;0;ON; 91D1;;;;N;;;;; -2FA7;KANGXI RADICAL LONG;So;0;ON; 9577;;;;N;;;;; -2FA8;KANGXI RADICAL GATE;So;0;ON; 9580;;;;N;;;;; -2FA9;KANGXI RADICAL MOUND;So;0;ON; 961C;;;;N;;;;; -2FAA;KANGXI RADICAL SLAVE;So;0;ON; 96B6;;;;N;;;;; -2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON; 96B9;;;;N;;;;; -2FAC;KANGXI RADICAL RAIN;So;0;ON; 96E8;;;;N;;;;; -2FAD;KANGXI RADICAL BLUE;So;0;ON; 9751;;;;N;;;;; -2FAE;KANGXI RADICAL WRONG;So;0;ON; 975E;;;;N;;;;; -2FAF;KANGXI RADICAL FACE;So;0;ON; 9762;;;;N;;;;; -2FB0;KANGXI RADICAL LEATHER;So;0;ON; 9769;;;;N;;;;; -2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON; 97CB;;;;N;;;;; -2FB2;KANGXI RADICAL LEEK;So;0;ON; 97ED;;;;N;;;;; -2FB3;KANGXI RADICAL SOUND;So;0;ON; 97F3;;;;N;;;;; -2FB4;KANGXI RADICAL LEAF;So;0;ON; 9801;;;;N;;;;; -2FB5;KANGXI RADICAL WIND;So;0;ON; 98A8;;;;N;;;;; -2FB6;KANGXI RADICAL FLY;So;0;ON; 98DB;;;;N;;;;; -2FB7;KANGXI RADICAL EAT;So;0;ON; 98DF;;;;N;;;;; -2FB8;KANGXI RADICAL HEAD;So;0;ON; 9996;;;;N;;;;; -2FB9;KANGXI RADICAL FRAGRANT;So;0;ON; 9999;;;;N;;;;; -2FBA;KANGXI RADICAL HORSE;So;0;ON; 99AC;;;;N;;;;; -2FBB;KANGXI RADICAL BONE;So;0;ON; 9AA8;;;;N;;;;; -2FBC;KANGXI RADICAL TALL;So;0;ON; 9AD8;;;;N;;;;; -2FBD;KANGXI RADICAL HAIR;So;0;ON; 9ADF;;;;N;;;;; -2FBE;KANGXI RADICAL FIGHT;So;0;ON; 9B25;;;;N;;;;; -2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON; 9B2F;;;;N;;;;; -2FC0;KANGXI RADICAL CAULDRON;So;0;ON; 9B32;;;;N;;;;; -2FC1;KANGXI RADICAL GHOST;So;0;ON; 9B3C;;;;N;;;;; -2FC2;KANGXI RADICAL FISH;So;0;ON; 9B5A;;;;N;;;;; -2FC3;KANGXI RADICAL BIRD;So;0;ON; 9CE5;;;;N;;;;; -2FC4;KANGXI RADICAL SALT;So;0;ON; 9E75;;;;N;;;;; -2FC5;KANGXI RADICAL DEER;So;0;ON; 9E7F;;;;N;;;;; -2FC6;KANGXI RADICAL WHEAT;So;0;ON; 9EA5;;;;N;;;;; -2FC7;KANGXI RADICAL HEMP;So;0;ON; 9EBB;;;;N;;;;; -2FC8;KANGXI RADICAL YELLOW;So;0;ON; 9EC3;;;;N;;;;; -2FC9;KANGXI RADICAL MILLET;So;0;ON; 9ECD;;;;N;;;;; -2FCA;KANGXI RADICAL BLACK;So;0;ON; 9ED1;;;;N;;;;; -2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON; 9EF9;;;;N;;;;; -2FCC;KANGXI RADICAL FROG;So;0;ON; 9EFD;;;;N;;;;; -2FCD;KANGXI RADICAL TRIPOD;So;0;ON; 9F0E;;;;N;;;;; -2FCE;KANGXI RADICAL DRUM;So;0;ON; 9F13;;;;N;;;;; -2FCF;KANGXI RADICAL RAT;So;0;ON; 9F20;;;;N;;;;; -2FD0;KANGXI RADICAL NOSE;So;0;ON; 9F3B;;;;N;;;;; -2FD1;KANGXI RADICAL EVEN;So;0;ON; 9F4A;;;;N;;;;; -2FD2;KANGXI RADICAL TOOTH;So;0;ON; 9F52;;;;N;;;;; -2FD3;KANGXI RADICAL DRAGON;So;0;ON; 9F8D;;;;N;;;;; -2FD4;KANGXI RADICAL TURTLE;So;0;ON; 9F9C;;;;N;;;;; -2FD5;KANGXI RADICAL FLUTE;So;0;ON; 9FA0;;;;N;;;;; -2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;; -2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;; -2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;; -2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;; -2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;; -2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;; -2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;; -2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;; -2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;; -2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;; -2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;; -2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;; -3000;IDEOGRAPHIC SPACE;Zs;0;WS; 0020;;;;N;;;;; -3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;; -3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;; -3003;DITTO MARK;Po;0;ON;;;;;N;;;;; -3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;; -3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;; -3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;; -3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;; -3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;; -3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;; -300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;; -300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;; -300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;; -300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;; -300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;; -300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;; -3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;; -3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;; -3012;POSTAL MARK;So;0;ON;;;;;N;;;;; -3013;GETA MARK;So;0;ON;;;;;N;;;;; -3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;; -3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;; -3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;; -3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;; -3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;; -3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;; -301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;; -301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;; -301C;WAVE DASH;Pd;0;ON;;;;;N;;;;; -301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;; -301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;; -301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;; -3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;; -3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;; -3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;; -3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;; -3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;; -3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;; -3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;; -3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;; -3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;; -3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;; -302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;; -302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;; -302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;; -302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;; -302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;; -302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;; -3030;WAVY DASH;Pd;0;ON;;;;;N;;;;; -3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;; -3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;; -3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;; -3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;; -3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;; -3036;CIRCLED POSTAL MARK;So;0;ON; 3012;;;;N;;;;; -3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;; -3038;HANGZHOU NUMERAL TEN;Nl;0;L; 5341;;;10;N;;;;; -3039;HANGZHOU NUMERAL TWENTY;Nl;0;L; 5344;;;20;N;;;;; -303A;HANGZHOU NUMERAL THIRTY;Nl;0;L; 5345;;;30;N;;;;; -303B;VERTICAL IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;; -303C;MASU MARK;Lo;0;L;;;;;N;;;;; -303D;PART ALTERNATION MARK;Po;0;ON;;;;;N;;;;; -303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;; -303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;; -3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;; -3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;; -3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;; -3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;; -3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;; -3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;; -3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;; -3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;; -3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;; -304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;; -304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;; -304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;; -304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;; -304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;; -304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;; -3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;; -3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;; -3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;; -3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;; -3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;; -3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;; -3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;; -3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;; -3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;; -3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;; -305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;; -305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;; -305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;; -305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;; -305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;; -305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;; -3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;; -3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;; -3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;; -3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;; -3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;; -3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;; -3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;; -3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;; -3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;; -3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;; -306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;; -306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;; -306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;; -306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;; -306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;; -306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;; -3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;; -3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;; -3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;; -3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;; -3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;; -3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;; -3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;; -3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;; -3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;; -3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;; -307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;; -307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;; -307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;; -307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;; -307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;; -307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;; -3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;; -3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;; -3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;; -3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;; -3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;; -3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;; -3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;; -3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;; -3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;; -3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;; -308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;; -308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;; -308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;; -308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;; -308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;; -308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;; -3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;; -3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;; -3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;; -3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;; -3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;; -3095;HIRAGANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;; -3096;HIRAGANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;; -3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;; -309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;; -309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON; 0020 3099;;;;N;;;;; -309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON; 0020 309A;;;;N;;;;; -309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;; -309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;; -309F;HIRAGANA DIGRAPH YORI;Lo;0;L; 3088 308A;;;;N;;;;; -30A0;KATAKANA-HIRAGANA DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;; -30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;; -30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;; -30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;; -30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;; -30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;; -30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;; -30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;; -30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;; -30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;; -30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;; -30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;; -30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;; -30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;; -30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;; -30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;; -30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;; -30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;; -30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;; -30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;; -30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;; -30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;; -30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;; -30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;; -30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;; -30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;; -30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;; -30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;; -30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;; -30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;; -30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;; -30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;; -30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;; -30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;; -30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;; -30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;; -30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;; -30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;; -30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;; -30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;; -30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;; -30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;; -30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;; -30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;; -30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;; -30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;; -30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;; -30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;; -30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;; -30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;; -30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;; -30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;; -30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;; -30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;; -30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;; -30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;; -30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;; -30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;; -30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;; -30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;; -30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;; -30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;; -30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;; -30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;; -30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;; -30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;; -30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;; -30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;; -30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;; -30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;; -30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;; -30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;; -30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;; -30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;; -30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;; -30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;; -30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;; -30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;; -30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;; -30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;; -30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;; -30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;; -30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;; -30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;; -30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;; -30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;; -30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;; -30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;; -30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;; -30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;; -30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;; -30FB;KATAKANA MIDDLE DOT;Po;0;ON;;;;;N;;;;; -30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;; -30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;; -30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;; -30FF;KATAKANA DIGRAPH KOTO;Lo;0;L; 30B3 30C8;;;;N;;;;; -3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;; -3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;; -3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;; -3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;; -3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;; -310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;; -310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;; -310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;; -310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;; -310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;; -310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;; -3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;; -3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;; -3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;; -3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;; -3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;; -3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;; -3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;; -3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;; -3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;; -3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;; -311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;; -311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;; -311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;; -311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;; -311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;; -311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;; -3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;; -3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;; -3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;; -3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;; -3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;; -3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;; -3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;; -3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;; -3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;; -3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;; -312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;; -312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;; -312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;; -312D;BOPOMOFO LETTER IH;Lo;0;L;;;;;N;;;;; -3131;HANGUL LETTER KIYEOK;Lo;0;L; 1100;;;;N;HANGUL LETTER GIYEOG;;;; -3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L; 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;; -3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L; 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;; -3134;HANGUL LETTER NIEUN;Lo;0;L; 1102;;;;N;;;;; -3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L; 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;; -3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L; 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;; -3137;HANGUL LETTER TIKEUT;Lo;0;L; 1103;;;;N;HANGUL LETTER DIGEUD;;;; -3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L; 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;; -3139;HANGUL LETTER RIEUL;Lo;0;L; 1105;;;;N;HANGUL LETTER LIEUL;;;; -313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L; 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;; -313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L; 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;; -313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L; 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;; -313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L; 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;; -313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L; 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;; -313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L; 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;; -3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L; 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;; -3141;HANGUL LETTER MIEUM;Lo;0;L; 1106;;;;N;;;;; -3142;HANGUL LETTER PIEUP;Lo;0;L; 1107;;;;N;HANGUL LETTER BIEUB;;;; -3143;HANGUL LETTER SSANGPIEUP;Lo;0;L; 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;; -3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L; 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;; -3145;HANGUL LETTER SIOS;Lo;0;L; 1109;;;;N;;;;; -3146;HANGUL LETTER SSANGSIOS;Lo;0;L; 110A;;;;N;HANGUL LETTER SSANG SIOS;;;; -3147;HANGUL LETTER IEUNG;Lo;0;L; 110B;;;;N;;;;; -3148;HANGUL LETTER CIEUC;Lo;0;L; 110C;;;;N;HANGUL LETTER JIEUJ;;;; -3149;HANGUL LETTER SSANGCIEUC;Lo;0;L; 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;; -314A;HANGUL LETTER CHIEUCH;Lo;0;L; 110E;;;;N;HANGUL LETTER CIEUC;;;; -314B;HANGUL LETTER KHIEUKH;Lo;0;L; 110F;;;;N;HANGUL LETTER KIYEOK;;;; -314C;HANGUL LETTER THIEUTH;Lo;0;L; 1110;;;;N;HANGUL LETTER TIEUT;;;; -314D;HANGUL LETTER PHIEUPH;Lo;0;L; 1111;;;;N;HANGUL LETTER PIEUP;;;; -314E;HANGUL LETTER HIEUH;Lo;0;L; 1112;;;;N;;;;; -314F;HANGUL LETTER A;Lo;0;L; 1161;;;;N;;;;; -3150;HANGUL LETTER AE;Lo;0;L; 1162;;;;N;;;;; -3151;HANGUL LETTER YA;Lo;0;L; 1163;;;;N;;;;; -3152;HANGUL LETTER YAE;Lo;0;L; 1164;;;;N;;;;; -3153;HANGUL LETTER EO;Lo;0;L; 1165;;;;N;;;;; -3154;HANGUL LETTER E;Lo;0;L; 1166;;;;N;;;;; -3155;HANGUL LETTER YEO;Lo;0;L; 1167;;;;N;;;;; -3156;HANGUL LETTER YE;Lo;0;L; 1168;;;;N;;;;; -3157;HANGUL LETTER O;Lo;0;L; 1169;;;;N;;;;; -3158;HANGUL LETTER WA;Lo;0;L; 116A;;;;N;;;;; -3159;HANGUL LETTER WAE;Lo;0;L; 116B;;;;N;;;;; -315A;HANGUL LETTER OE;Lo;0;L; 116C;;;;N;;;;; -315B;HANGUL LETTER YO;Lo;0;L; 116D;;;;N;;;;; -315C;HANGUL LETTER U;Lo;0;L; 116E;;;;N;;;;; -315D;HANGUL LETTER WEO;Lo;0;L; 116F;;;;N;;;;; -315E;HANGUL LETTER WE;Lo;0;L; 1170;;;;N;;;;; -315F;HANGUL LETTER WI;Lo;0;L; 1171;;;;N;;;;; -3160;HANGUL LETTER YU;Lo;0;L; 1172;;;;N;;;;; -3161;HANGUL LETTER EU;Lo;0;L; 1173;;;;N;;;;; -3162;HANGUL LETTER YI;Lo;0;L; 1174;;;;N;;;;; -3163;HANGUL LETTER I;Lo;0;L; 1175;;;;N;;;;; -3164;HANGUL FILLER;Lo;0;L; 1160;;;;N;HANGUL CAE OM;;;; -3165;HANGUL LETTER SSANGNIEUN;Lo;0;L; 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;; -3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L; 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;; -3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L; 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;; -3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L; 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;; -3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L; 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;; -316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L; 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;; -316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L; 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;; -316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L; 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;; -316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L; 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;; -316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L; 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;; -316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L; 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;; -3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L; 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;; -3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L; 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;; -3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L; 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;; -3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L; 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;; -3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L; 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;; -3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L; 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;; -3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L; 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;; -3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L; 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;; -3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L; 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;; -3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L; 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;; -317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L; 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;; -317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L; 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;; -317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L; 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;; -317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L; 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;; -317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L; 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;; -317F;HANGUL LETTER PANSIOS;Lo;0;L; 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;; -3180;HANGUL LETTER SSANGIEUNG;Lo;0;L; 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;; -3181;HANGUL LETTER YESIEUNG;Lo;0;L; 114C;;;;N;HANGUL LETTER NGIEUNG;;;; -3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L; 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;; -3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L; 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;; -3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L; 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;; -3185;HANGUL LETTER SSANGHIEUH;Lo;0;L; 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;; -3186;HANGUL LETTER YEORINHIEUH;Lo;0;L; 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;; -3187;HANGUL LETTER YO-YA;Lo;0;L; 1184;;;;N;HANGUL LETTER YOYA;;;; -3188;HANGUL LETTER YO-YAE;Lo;0;L; 1185;;;;N;HANGUL LETTER YOYAE;;;; -3189;HANGUL LETTER YO-I;Lo;0;L; 1188;;;;N;HANGUL LETTER YOI;;;; -318A;HANGUL LETTER YU-YEO;Lo;0;L; 1191;;;;N;HANGUL LETTER YUYEO;;;; -318B;HANGUL LETTER YU-YE;Lo;0;L; 1192;;;;N;HANGUL LETTER YUYE;;;; -318C;HANGUL LETTER YU-I;Lo;0;L; 1194;;;;N;HANGUL LETTER YUI;;;; -318D;HANGUL LETTER ARAEA;Lo;0;L; 119E;;;;N;HANGUL LETTER ALAE A;;;; -318E;HANGUL LETTER ARAEAE;Lo;0;L; 11A1;;;;N;HANGUL LETTER ALAE AE;;;; -3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;; -3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;; -3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L; 4E00;;;1;N;KAERITEN ITI;Kaeriten;;; -3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L; 4E8C;;;2;N;KAERITEN NI;Kaeriten;;; -3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L; 4E09;;;3;N;KAERITEN SAN;Kaeriten;;; -3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L; 56DB;;;4;N;KAERITEN SI;Kaeriten;;; -3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L; 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;; -3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L; 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;; -3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L; 4E0B;;;;N;KAERITEN GE;Kaeriten;;; -3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L; 7532;;;;N;KAERITEN KOU;Kaeriten;;; -319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L; 4E59;;;;N;KAERITEN OTU;Kaeriten;;; -319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L; 4E19;;;;N;KAERITEN HEI;Kaeriten;;; -319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L; 4E01;;;;N;KAERITEN TEI;Kaeriten;;; -319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L; 5929;;;;N;KAERITEN TEN;Kaeriten;;; -319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L; 5730;;;;N;KAERITEN TI;Kaeriten;;; -319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L; 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;; -31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;; -31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;; -31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;; -31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;; -31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;; -31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;; -31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;; -31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;; -31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;; -31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;; -31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;; -31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;; -31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;; -31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;; -31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;; -31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;; -31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;; -31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;; -31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;; -31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;; -31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;; -31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;; -31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;; -31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;; -31C0;CJK STROKE T;So;0;ON;;;;;N;;;;; -31C1;CJK STROKE WG;So;0;ON;;;;;N;;;;; -31C2;CJK STROKE XG;So;0;ON;;;;;N;;;;; -31C3;CJK STROKE BXG;So;0;ON;;;;;N;;;;; -31C4;CJK STROKE SW;So;0;ON;;;;;N;;;;; -31C5;CJK STROKE HZZ;So;0;ON;;;;;N;;;;; -31C6;CJK STROKE HZG;So;0;ON;;;;;N;;;;; -31C7;CJK STROKE HP;So;0;ON;;;;;N;;;;; -31C8;CJK STROKE HZWG;So;0;ON;;;;;N;;;;; -31C9;CJK STROKE SZWG;So;0;ON;;;;;N;;;;; -31CA;CJK STROKE HZT;So;0;ON;;;;;N;;;;; -31CB;CJK STROKE HZZP;So;0;ON;;;;;N;;;;; -31CC;CJK STROKE HPWG;So;0;ON;;;;;N;;;;; -31CD;CJK STROKE HZW;So;0;ON;;;;;N;;;;; -31CE;CJK STROKE HZZZ;So;0;ON;;;;;N;;;;; -31CF;CJK STROKE N;So;0;ON;;;;;N;;;;; -31D0;CJK STROKE H;So;0;ON;;;;;N;;;;; -31D1;CJK STROKE S;So;0;ON;;;;;N;;;;; -31D2;CJK STROKE P;So;0;ON;;;;;N;;;;; -31D3;CJK STROKE SP;So;0;ON;;;;;N;;;;; -31D4;CJK STROKE D;So;0;ON;;;;;N;;;;; -31D5;CJK STROKE HZ;So;0;ON;;;;;N;;;;; -31D6;CJK STROKE HG;So;0;ON;;;;;N;;;;; -31D7;CJK STROKE SZ;So;0;ON;;;;;N;;;;; -31D8;CJK STROKE SWZ;So;0;ON;;;;;N;;;;; -31D9;CJK STROKE ST;So;0;ON;;;;;N;;;;; -31DA;CJK STROKE SG;So;0;ON;;;;;N;;;;; -31DB;CJK STROKE PD;So;0;ON;;;;;N;;;;; -31DC;CJK STROKE PZ;So;0;ON;;;;;N;;;;; -31DD;CJK STROKE TN;So;0;ON;;;;;N;;;;; -31DE;CJK STROKE SZZ;So;0;ON;;;;;N;;;;; -31DF;CJK STROKE SWG;So;0;ON;;;;;N;;;;; -31E0;CJK STROKE HXWG;So;0;ON;;;;;N;;;;; -31E1;CJK STROKE HZZZG;So;0;ON;;;;;N;;;;; -31E2;CJK STROKE PG;So;0;ON;;;;;N;;;;; -31E3;CJK STROKE Q;So;0;ON;;;;;N;;;;; -31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;; -31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;; -31F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;; -31F3;KATAKANA LETTER SMALL TO;Lo;0;L;;;;;N;;;;; -31F4;KATAKANA LETTER SMALL NU;Lo;0;L;;;;;N;;;;; -31F5;KATAKANA LETTER SMALL HA;Lo;0;L;;;;;N;;;;; -31F6;KATAKANA LETTER SMALL HI;Lo;0;L;;;;;N;;;;; -31F7;KATAKANA LETTER SMALL HU;Lo;0;L;;;;;N;;;;; -31F8;KATAKANA LETTER SMALL HE;Lo;0;L;;;;;N;;;;; -31F9;KATAKANA LETTER SMALL HO;Lo;0;L;;;;;N;;;;; -31FA;KATAKANA LETTER SMALL MU;Lo;0;L;;;;;N;;;;; -31FB;KATAKANA LETTER SMALL RA;Lo;0;L;;;;;N;;;;; -31FC;KATAKANA LETTER SMALL RI;Lo;0;L;;;;;N;;;;; -31FD;KATAKANA LETTER SMALL RU;Lo;0;L;;;;;N;;;;; -31FE;KATAKANA LETTER SMALL RE;Lo;0;L;;;;;N;;;;; -31FF;KATAKANA LETTER SMALL RO;Lo;0;L;;;;;N;;;;; -3200;PARENTHESIZED HANGUL KIYEOK;So;0;L; 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;; -3201;PARENTHESIZED HANGUL NIEUN;So;0;L; 0028 1102 0029;;;;N;;;;; -3202;PARENTHESIZED HANGUL TIKEUT;So;0;L; 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;; -3203;PARENTHESIZED HANGUL RIEUL;So;0;L; 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;; -3204;PARENTHESIZED HANGUL MIEUM;So;0;L; 0028 1106 0029;;;;N;;;;; -3205;PARENTHESIZED HANGUL PIEUP;So;0;L; 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;; -3206;PARENTHESIZED HANGUL SIOS;So;0;L; 0028 1109 0029;;;;N;;;;; -3207;PARENTHESIZED HANGUL IEUNG;So;0;L; 0028 110B 0029;;;;N;;;;; -3208;PARENTHESIZED HANGUL CIEUC;So;0;L; 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;; -3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L; 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;; -320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L; 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;; -320B;PARENTHESIZED HANGUL THIEUTH;So;0;L; 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;; -320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L; 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;; -320D;PARENTHESIZED HANGUL HIEUH;So;0;L; 0028 1112 0029;;;;N;;;;; -320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L; 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;; -320F;PARENTHESIZED HANGUL NIEUN A;So;0;L; 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;; -3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L; 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;; -3211;PARENTHESIZED HANGUL RIEUL A;So;0;L; 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;; -3212;PARENTHESIZED HANGUL MIEUM A;So;0;L; 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;; -3213;PARENTHESIZED HANGUL PIEUP A;So;0;L; 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;; -3214;PARENTHESIZED HANGUL SIOS A;So;0;L; 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;; -3215;PARENTHESIZED HANGUL IEUNG A;So;0;L; 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;; -3216;PARENTHESIZED HANGUL CIEUC A;So;0;L; 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;; -3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L; 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;; -3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L; 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;; -3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L; 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;; -321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L; 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;; -321B;PARENTHESIZED HANGUL HIEUH A;So;0;L; 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;; -321C;PARENTHESIZED HANGUL CIEUC U;So;0;L; 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;; -321D;PARENTHESIZED KOREAN CHARACTER OJEON;So;0;ON; 0028 110B 1169 110C 1165 11AB 0029;;;;N;;;;; -321E;PARENTHESIZED KOREAN CHARACTER O HU;So;0;ON; 0028 110B 1169 1112 116E 0029;;;;N;;;;; -3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L; 0028 4E00 0029;;;1;N;;;;; -3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L; 0028 4E8C 0029;;;2;N;;;;; -3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L; 0028 4E09 0029;;;3;N;;;;; -3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L; 0028 56DB 0029;;;4;N;;;;; -3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L; 0028 4E94 0029;;;5;N;;;;; -3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L; 0028 516D 0029;;;6;N;;;;; -3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L; 0028 4E03 0029;;;7;N;;;;; -3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L; 0028 516B 0029;;;8;N;;;;; -3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L; 0028 4E5D 0029;;;9;N;;;;; -3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L; 0028 5341 0029;;;10;N;;;;; -322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L; 0028 6708 0029;;;;N;;;;; -322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L; 0028 706B 0029;;;;N;;;;; -322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L; 0028 6C34 0029;;;;N;;;;; -322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L; 0028 6728 0029;;;;N;;;;; -322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L; 0028 91D1 0029;;;;N;;;;; -322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L; 0028 571F 0029;;;;N;;;;; -3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L; 0028 65E5 0029;;;;N;;;;; -3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L; 0028 682A 0029;;;;N;;;;; -3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L; 0028 6709 0029;;;;N;;;;; -3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L; 0028 793E 0029;;;;N;;;;; -3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L; 0028 540D 0029;;;;N;;;;; -3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L; 0028 7279 0029;;;;N;;;;; -3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L; 0028 8CA1 0029;;;;N;;;;; -3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L; 0028 795D 0029;;;;N;;;;; -3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L; 0028 52B4 0029;;;;N;;;;; -3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L; 0028 4EE3 0029;;;;N;;;;; -323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L; 0028 547C 0029;;;;N;;;;; -323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L; 0028 5B66 0029;;;;N;;;;; -323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L; 0028 76E3 0029;;;;N;;;;; -323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L; 0028 4F01 0029;;;;N;;;;; -323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L; 0028 8CC7 0029;;;;N;;;;; -323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L; 0028 5354 0029;;;;N;;;;; -3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L; 0028 796D 0029;;;;N;;;;; -3241;PARENTHESIZED IDEOGRAPH REST;So;0;L; 0028 4F11 0029;;;;N;;;;; -3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L; 0028 81EA 0029;;;;N;;;;; -3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L; 0028 81F3 0029;;;;N;;;;; -3250;PARTNERSHIP SIGN;So;0;ON; 0050 0054 0045;;;;N;;;;; -3251;CIRCLED NUMBER TWENTY ONE;No;0;ON; 0032 0031;;;21;N;;;;; -3252;CIRCLED NUMBER TWENTY TWO;No;0;ON; 0032 0032;;;22;N;;;;; -3253;CIRCLED NUMBER TWENTY THREE;No;0;ON; 0032 0033;;;23;N;;;;; -3254;CIRCLED NUMBER TWENTY FOUR;No;0;ON; 0032 0034;;;24;N;;;;; -3255;CIRCLED NUMBER TWENTY FIVE;No;0;ON; 0032 0035;;;25;N;;;;; -3256;CIRCLED NUMBER TWENTY SIX;No;0;ON; 0032 0036;;;26;N;;;;; -3257;CIRCLED NUMBER TWENTY SEVEN;No;0;ON; 0032 0037;;;27;N;;;;; -3258;CIRCLED NUMBER TWENTY EIGHT;No;0;ON; 0032 0038;;;28;N;;;;; -3259;CIRCLED NUMBER TWENTY NINE;No;0;ON; 0032 0039;;;29;N;;;;; -325A;CIRCLED NUMBER THIRTY;No;0;ON; 0033 0030;;;30;N;;;;; -325B;CIRCLED NUMBER THIRTY ONE;No;0;ON; 0033 0031;;;31;N;;;;; -325C;CIRCLED NUMBER THIRTY TWO;No;0;ON; 0033 0032;;;32;N;;;;; -325D;CIRCLED NUMBER THIRTY THREE;No;0;ON; 0033 0033;;;33;N;;;;; -325E;CIRCLED NUMBER THIRTY FOUR;No;0;ON; 0033 0034;;;34;N;;;;; -325F;CIRCLED NUMBER THIRTY FIVE;No;0;ON; 0033 0035;;;35;N;;;;; -3260;CIRCLED HANGUL KIYEOK;So;0;L; 1100;;;;N;CIRCLED HANGUL GIYEOG;;;; -3261;CIRCLED HANGUL NIEUN;So;0;L; 1102;;;;N;;;;; -3262;CIRCLED HANGUL TIKEUT;So;0;L; 1103;;;;N;CIRCLED HANGUL DIGEUD;;;; -3263;CIRCLED HANGUL RIEUL;So;0;L; 1105;;;;N;CIRCLED HANGUL LIEUL;;;; -3264;CIRCLED HANGUL MIEUM;So;0;L; 1106;;;;N;;;;; -3265;CIRCLED HANGUL PIEUP;So;0;L; 1107;;;;N;CIRCLED HANGUL BIEUB;;;; -3266;CIRCLED HANGUL SIOS;So;0;L; 1109;;;;N;;;;; -3267;CIRCLED HANGUL IEUNG;So;0;L; 110B;;;;N;;;;; -3268;CIRCLED HANGUL CIEUC;So;0;L; 110C;;;;N;CIRCLED HANGUL JIEUJ;;;; -3269;CIRCLED HANGUL CHIEUCH;So;0;L; 110E;;;;N;CIRCLED HANGUL CIEUC;;;; -326A;CIRCLED HANGUL KHIEUKH;So;0;L; 110F;;;;N;CIRCLED HANGUL KIYEOK;;;; -326B;CIRCLED HANGUL THIEUTH;So;0;L; 1110;;;;N;CIRCLED HANGUL TIEUT;;;; -326C;CIRCLED HANGUL PHIEUPH;So;0;L; 1111;;;;N;CIRCLED HANGUL PIEUP;;;; -326D;CIRCLED HANGUL HIEUH;So;0;L; 1112;;;;N;;;;; -326E;CIRCLED HANGUL KIYEOK A;So;0;L; 1100 1161;;;;N;CIRCLED HANGUL GA;;;; -326F;CIRCLED HANGUL NIEUN A;So;0;L; 1102 1161;;;;N;CIRCLED HANGUL NA;;;; -3270;CIRCLED HANGUL TIKEUT A;So;0;L; 1103 1161;;;;N;CIRCLED HANGUL DA;;;; -3271;CIRCLED HANGUL RIEUL A;So;0;L; 1105 1161;;;;N;CIRCLED HANGUL LA;;;; -3272;CIRCLED HANGUL MIEUM A;So;0;L; 1106 1161;;;;N;CIRCLED HANGUL MA;;;; -3273;CIRCLED HANGUL PIEUP A;So;0;L; 1107 1161;;;;N;CIRCLED HANGUL BA;;;; -3274;CIRCLED HANGUL SIOS A;So;0;L; 1109 1161;;;;N;CIRCLED HANGUL SA;;;; -3275;CIRCLED HANGUL IEUNG A;So;0;L; 110B 1161;;;;N;CIRCLED HANGUL A;;;; -3276;CIRCLED HANGUL CIEUC A;So;0;L; 110C 1161;;;;N;CIRCLED HANGUL JA;;;; -3277;CIRCLED HANGUL CHIEUCH A;So;0;L; 110E 1161;;;;N;CIRCLED HANGUL CA;;;; -3278;CIRCLED HANGUL KHIEUKH A;So;0;L; 110F 1161;;;;N;CIRCLED HANGUL KA;;;; -3279;CIRCLED HANGUL THIEUTH A;So;0;L; 1110 1161;;;;N;CIRCLED HANGUL TA;;;; -327A;CIRCLED HANGUL PHIEUPH A;So;0;L; 1111 1161;;;;N;CIRCLED HANGUL PA;;;; -327B;CIRCLED HANGUL HIEUH A;So;0;L; 1112 1161;;;;N;CIRCLED HANGUL HA;;;; -327C;CIRCLED KOREAN CHARACTER CHAMKO;So;0;ON; 110E 1161 11B7 1100 1169;;;;N;;;;; -327D;CIRCLED KOREAN CHARACTER JUEUI;So;0;ON; 110C 116E 110B 1174;;;;N;;;;; -327E;CIRCLED HANGUL IEUNG U;So;0;ON; 110B 116E;;;;N;;;;; -327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;; -3280;CIRCLED IDEOGRAPH ONE;No;0;L; 4E00;;;1;N;;;;; -3281;CIRCLED IDEOGRAPH TWO;No;0;L; 4E8C;;;2;N;;;;; -3282;CIRCLED IDEOGRAPH THREE;No;0;L; 4E09;;;3;N;;;;; -3283;CIRCLED IDEOGRAPH FOUR;No;0;L; 56DB;;;4;N;;;;; -3284;CIRCLED IDEOGRAPH FIVE;No;0;L; 4E94;;;5;N;;;;; -3285;CIRCLED IDEOGRAPH SIX;No;0;L; 516D;;;6;N;;;;; -3286;CIRCLED IDEOGRAPH SEVEN;No;0;L; 4E03;;;7;N;;;;; -3287;CIRCLED IDEOGRAPH EIGHT;No;0;L; 516B;;;8;N;;;;; -3288;CIRCLED IDEOGRAPH NINE;No;0;L; 4E5D;;;9;N;;;;; -3289;CIRCLED IDEOGRAPH TEN;No;0;L; 5341;;;10;N;;;;; -328A;CIRCLED IDEOGRAPH MOON;So;0;L; 6708;;;;N;;;;; -328B;CIRCLED IDEOGRAPH FIRE;So;0;L; 706B;;;;N;;;;; -328C;CIRCLED IDEOGRAPH WATER;So;0;L; 6C34;;;;N;;;;; -328D;CIRCLED IDEOGRAPH WOOD;So;0;L; 6728;;;;N;;;;; -328E;CIRCLED IDEOGRAPH METAL;So;0;L; 91D1;;;;N;;;;; -328F;CIRCLED IDEOGRAPH EARTH;So;0;L; 571F;;;;N;;;;; -3290;CIRCLED IDEOGRAPH SUN;So;0;L; 65E5;;;;N;;;;; -3291;CIRCLED IDEOGRAPH STOCK;So;0;L; 682A;;;;N;;;;; -3292;CIRCLED IDEOGRAPH HAVE;So;0;L; 6709;;;;N;;;;; -3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L; 793E;;;;N;;;;; -3294;CIRCLED IDEOGRAPH NAME;So;0;L; 540D;;;;N;;;;; -3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L; 7279;;;;N;;;;; -3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L; 8CA1;;;;N;;;;; -3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L; 795D;;;;N;;;;; -3298;CIRCLED IDEOGRAPH LABOR;So;0;L; 52B4;;;;N;;;;; -3299;CIRCLED IDEOGRAPH SECRET;So;0;L; 79D8;;;;N;;;;; -329A;CIRCLED IDEOGRAPH MALE;So;0;L; 7537;;;;N;;;;; -329B;CIRCLED IDEOGRAPH FEMALE;So;0;L; 5973;;;;N;;;;; -329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L; 9069;;;;N;;;;; -329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L; 512A;;;;N;;;;; -329E;CIRCLED IDEOGRAPH PRINT;So;0;L; 5370;;;;N;;;;; -329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L; 6CE8;;;;N;;;;; -32A0;CIRCLED IDEOGRAPH ITEM;So;0;L; 9805;;;;N;;;;; -32A1;CIRCLED IDEOGRAPH REST;So;0;L; 4F11;;;;N;;;;; -32A2;CIRCLED IDEOGRAPH COPY;So;0;L; 5199;;;;N;;;;; -32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L; 6B63;;;;N;;;;; -32A4;CIRCLED IDEOGRAPH HIGH;So;0;L; 4E0A;;;;N;;;;; -32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L; 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;; -32A6;CIRCLED IDEOGRAPH LOW;So;0;L; 4E0B;;;;N;;;;; -32A7;CIRCLED IDEOGRAPH LEFT;So;0;L; 5DE6;;;;N;;;;; -32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L; 53F3;;;;N;;;;; -32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L; 533B;;;;N;;;;; -32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L; 5B97;;;;N;;;;; -32AB;CIRCLED IDEOGRAPH STUDY;So;0;L; 5B66;;;;N;;;;; -32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L; 76E3;;;;N;;;;; -32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L; 4F01;;;;N;;;;; -32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L; 8CC7;;;;N;;;;; -32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L; 5354;;;;N;;;;; -32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L; 591C;;;;N;;;;; -32B1;CIRCLED NUMBER THIRTY SIX;No;0;ON; 0033 0036;;;36;N;;;;; -32B2;CIRCLED NUMBER THIRTY SEVEN;No;0;ON; 0033 0037;;;37;N;;;;; -32B3;CIRCLED NUMBER THIRTY EIGHT;No;0;ON; 0033 0038;;;38;N;;;;; -32B4;CIRCLED NUMBER THIRTY NINE;No;0;ON; 0033 0039;;;39;N;;;;; -32B5;CIRCLED NUMBER FORTY;No;0;ON; 0034 0030;;;40;N;;;;; -32B6;CIRCLED NUMBER FORTY ONE;No;0;ON; 0034 0031;;;41;N;;;;; -32B7;CIRCLED NUMBER FORTY TWO;No;0;ON; 0034 0032;;;42;N;;;;; -32B8;CIRCLED NUMBER FORTY THREE;No;0;ON; 0034 0033;;;43;N;;;;; -32B9;CIRCLED NUMBER FORTY FOUR;No;0;ON; 0034 0034;;;44;N;;;;; -32BA;CIRCLED NUMBER FORTY FIVE;No;0;ON; 0034 0035;;;45;N;;;;; -32BB;CIRCLED NUMBER FORTY SIX;No;0;ON; 0034 0036;;;46;N;;;;; -32BC;CIRCLED NUMBER FORTY SEVEN;No;0;ON; 0034 0037;;;47;N;;;;; -32BD;CIRCLED NUMBER FORTY EIGHT;No;0;ON; 0034 0038;;;48;N;;;;; -32BE;CIRCLED NUMBER FORTY NINE;No;0;ON; 0034 0039;;;49;N;;;;; -32BF;CIRCLED NUMBER FIFTY;No;0;ON; 0035 0030;;;50;N;;;;; -32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L; 0031 6708;;;;N;;;;; -32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L; 0032 6708;;;;N;;;;; -32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L; 0033 6708;;;;N;;;;; -32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L; 0034 6708;;;;N;;;;; -32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L; 0035 6708;;;;N;;;;; -32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L; 0036 6708;;;;N;;;;; -32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L; 0037 6708;;;;N;;;;; -32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L; 0038 6708;;;;N;;;;; -32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L; 0039 6708;;;;N;;;;; -32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L; 0031 0030 6708;;;;N;;;;; -32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L; 0031 0031 6708;;;;N;;;;; -32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L; 0031 0032 6708;;;;N;;;;; -32CC;SQUARE HG;So;0;ON; 0048 0067;;;;N;;;;; -32CD;SQUARE ERG;So;0;ON; 0065 0072 0067;;;;N;;;;; -32CE;SQUARE EV;So;0;ON; 0065 0056;;;;N;;;;; -32CF;LIMITED LIABILITY SIGN;So;0;ON; 004C 0054 0044;;;;N;;;;; -32D0;CIRCLED KATAKANA A;So;0;L; 30A2;;;;N;;;;; -32D1;CIRCLED KATAKANA I;So;0;L; 30A4;;;;N;;;;; -32D2;CIRCLED KATAKANA U;So;0;L; 30A6;;;;N;;;;; -32D3;CIRCLED KATAKANA E;So;0;L; 30A8;;;;N;;;;; -32D4;CIRCLED KATAKANA O;So;0;L; 30AA;;;;N;;;;; -32D5;CIRCLED KATAKANA KA;So;0;L; 30AB;;;;N;;;;; -32D6;CIRCLED KATAKANA KI;So;0;L; 30AD;;;;N;;;;; -32D7;CIRCLED KATAKANA KU;So;0;L; 30AF;;;;N;;;;; -32D8;CIRCLED KATAKANA KE;So;0;L; 30B1;;;;N;;;;; -32D9;CIRCLED KATAKANA KO;So;0;L; 30B3;;;;N;;;;; -32DA;CIRCLED KATAKANA SA;So;0;L; 30B5;;;;N;;;;; -32DB;CIRCLED KATAKANA SI;So;0;L; 30B7;;;;N;;;;; -32DC;CIRCLED KATAKANA SU;So;0;L; 30B9;;;;N;;;;; -32DD;CIRCLED KATAKANA SE;So;0;L; 30BB;;;;N;;;;; -32DE;CIRCLED KATAKANA SO;So;0;L; 30BD;;;;N;;;;; -32DF;CIRCLED KATAKANA TA;So;0;L; 30BF;;;;N;;;;; -32E0;CIRCLED KATAKANA TI;So;0;L; 30C1;;;;N;;;;; -32E1;CIRCLED KATAKANA TU;So;0;L; 30C4;;;;N;;;;; -32E2;CIRCLED KATAKANA TE;So;0;L; 30C6;;;;N;;;;; -32E3;CIRCLED KATAKANA TO;So;0;L; 30C8;;;;N;;;;; -32E4;CIRCLED KATAKANA NA;So;0;L; 30CA;;;;N;;;;; -32E5;CIRCLED KATAKANA NI;So;0;L; 30CB;;;;N;;;;; -32E6;CIRCLED KATAKANA NU;So;0;L; 30CC;;;;N;;;;; -32E7;CIRCLED KATAKANA NE;So;0;L; 30CD;;;;N;;;;; -32E8;CIRCLED KATAKANA NO;So;0;L; 30CE;;;;N;;;;; -32E9;CIRCLED KATAKANA HA;So;0;L; 30CF;;;;N;;;;; -32EA;CIRCLED KATAKANA HI;So;0;L; 30D2;;;;N;;;;; -32EB;CIRCLED KATAKANA HU;So;0;L; 30D5;;;;N;;;;; -32EC;CIRCLED KATAKANA HE;So;0;L; 30D8;;;;N;;;;; -32ED;CIRCLED KATAKANA HO;So;0;L; 30DB;;;;N;;;;; -32EE;CIRCLED KATAKANA MA;So;0;L; 30DE;;;;N;;;;; -32EF;CIRCLED KATAKANA MI;So;0;L; 30DF;;;;N;;;;; -32F0;CIRCLED KATAKANA MU;So;0;L; 30E0;;;;N;;;;; -32F1;CIRCLED KATAKANA ME;So;0;L; 30E1;;;;N;;;;; -32F2;CIRCLED KATAKANA MO;So;0;L; 30E2;;;;N;;;;; -32F3;CIRCLED KATAKANA YA;So;0;L; 30E4;;;;N;;;;; -32F4;CIRCLED KATAKANA YU;So;0;L; 30E6;;;;N;;;;; -32F5;CIRCLED KATAKANA YO;So;0;L; 30E8;;;;N;;;;; -32F6;CIRCLED KATAKANA RA;So;0;L; 30E9;;;;N;;;;; -32F7;CIRCLED KATAKANA RI;So;0;L; 30EA;;;;N;;;;; -32F8;CIRCLED KATAKANA RU;So;0;L; 30EB;;;;N;;;;; -32F9;CIRCLED KATAKANA RE;So;0;L; 30EC;;;;N;;;;; -32FA;CIRCLED KATAKANA RO;So;0;L; 30ED;;;;N;;;;; -32FB;CIRCLED KATAKANA WA;So;0;L; 30EF;;;;N;;;;; -32FC;CIRCLED KATAKANA WI;So;0;L; 30F0;;;;N;;;;; -32FD;CIRCLED KATAKANA WE;So;0;L; 30F1;;;;N;;;;; -32FE;CIRCLED KATAKANA WO;So;0;L; 30F2;;;;N;;;;; -3300;SQUARE APAATO;So;0;L; 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;; -3301;SQUARE ARUHUA;So;0;L; 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;; -3302;SQUARE ANPEA;So;0;L; 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;; -3303;SQUARE AARU;So;0;L; 30A2 30FC 30EB;;;;N;SQUARED AARU;;;; -3304;SQUARE ININGU;So;0;L; 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;; -3305;SQUARE INTI;So;0;L; 30A4 30F3 30C1;;;;N;SQUARED INTI;;;; -3306;SQUARE UON;So;0;L; 30A6 30A9 30F3;;;;N;SQUARED UON;;;; -3307;SQUARE ESUKUUDO;So;0;L; 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;; -3308;SQUARE EEKAA;So;0;L; 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;; -3309;SQUARE ONSU;So;0;L; 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;; -330A;SQUARE OOMU;So;0;L; 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;; -330B;SQUARE KAIRI;So;0;L; 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;; -330C;SQUARE KARATTO;So;0;L; 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;; -330D;SQUARE KARORII;So;0;L; 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;; -330E;SQUARE GARON;So;0;L; 30AC 30ED 30F3;;;;N;SQUARED GARON;;;; -330F;SQUARE GANMA;So;0;L; 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;; -3310;SQUARE GIGA;So;0;L; 30AE 30AC;;;;N;SQUARED GIGA;;;; -3311;SQUARE GINII;So;0;L; 30AE 30CB 30FC;;;;N;SQUARED GINII;;;; -3312;SQUARE KYURII;So;0;L; 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;; -3313;SQUARE GIRUDAA;So;0;L; 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;; -3314;SQUARE KIRO;So;0;L; 30AD 30ED;;;;N;SQUARED KIRO;;;; -3315;SQUARE KIROGURAMU;So;0;L; 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;; -3316;SQUARE KIROMEETORU;So;0;L; 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;; -3317;SQUARE KIROWATTO;So;0;L; 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;; -3318;SQUARE GURAMU;So;0;L; 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;; -3319;SQUARE GURAMUTON;So;0;L; 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;; -331A;SQUARE KURUZEIRO;So;0;L; 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;; -331B;SQUARE KUROONE;So;0;L; 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;; -331C;SQUARE KEESU;So;0;L; 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;; -331D;SQUARE KORUNA;So;0;L; 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;; -331E;SQUARE KOOPO;So;0;L; 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;; -331F;SQUARE SAIKURU;So;0;L; 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;; -3320;SQUARE SANTIIMU;So;0;L; 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;; -3321;SQUARE SIRINGU;So;0;L; 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;; -3322;SQUARE SENTI;So;0;L; 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;; -3323;SQUARE SENTO;So;0;L; 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;; -3324;SQUARE DAASU;So;0;L; 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;; -3325;SQUARE DESI;So;0;L; 30C7 30B7;;;;N;SQUARED DESI;;;; -3326;SQUARE DORU;So;0;L; 30C9 30EB;;;;N;SQUARED DORU;;;; -3327;SQUARE TON;So;0;L; 30C8 30F3;;;;N;SQUARED TON;;;; -3328;SQUARE NANO;So;0;L; 30CA 30CE;;;;N;SQUARED NANO;;;; -3329;SQUARE NOTTO;So;0;L; 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;; -332A;SQUARE HAITU;So;0;L; 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;; -332B;SQUARE PAASENTO;So;0;L; 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;; -332C;SQUARE PAATU;So;0;L; 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;; -332D;SQUARE BAARERU;So;0;L; 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;; -332E;SQUARE PIASUTORU;So;0;L; 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;; -332F;SQUARE PIKURU;So;0;L; 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;; -3330;SQUARE PIKO;So;0;L; 30D4 30B3;;;;N;SQUARED PIKO;;;; -3331;SQUARE BIRU;So;0;L; 30D3 30EB;;;;N;SQUARED BIRU;;;; -3332;SQUARE HUARADDO;So;0;L; 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;; -3333;SQUARE HUIITO;So;0;L; 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;; -3334;SQUARE BUSSYERU;So;0;L; 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;; -3335;SQUARE HURAN;So;0;L; 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;; -3336;SQUARE HEKUTAARU;So;0;L; 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;; -3337;SQUARE PESO;So;0;L; 30DA 30BD;;;;N;SQUARED PESO;;;; -3338;SQUARE PENIHI;So;0;L; 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;; -3339;SQUARE HERUTU;So;0;L; 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;; -333A;SQUARE PENSU;So;0;L; 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;; -333B;SQUARE PEEZI;So;0;L; 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;; -333C;SQUARE BEETA;So;0;L; 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;; -333D;SQUARE POINTO;So;0;L; 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;; -333E;SQUARE BORUTO;So;0;L; 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;; -333F;SQUARE HON;So;0;L; 30DB 30F3;;;;N;SQUARED HON;;;; -3340;SQUARE PONDO;So;0;L; 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;; -3341;SQUARE HOORU;So;0;L; 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;; -3342;SQUARE HOON;So;0;L; 30DB 30FC 30F3;;;;N;SQUARED HOON;;;; -3343;SQUARE MAIKURO;So;0;L; 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;; -3344;SQUARE MAIRU;So;0;L; 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;; -3345;SQUARE MAHHA;So;0;L; 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;; -3346;SQUARE MARUKU;So;0;L; 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;; -3347;SQUARE MANSYON;So;0;L; 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;; -3348;SQUARE MIKURON;So;0;L; 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;; -3349;SQUARE MIRI;So;0;L; 30DF 30EA;;;;N;SQUARED MIRI;;;; -334A;SQUARE MIRIBAARU;So;0;L; 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;; -334B;SQUARE MEGA;So;0;L; 30E1 30AC;;;;N;SQUARED MEGA;;;; -334C;SQUARE MEGATON;So;0;L; 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;; -334D;SQUARE MEETORU;So;0;L; 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;; -334E;SQUARE YAADO;So;0;L; 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;; -334F;SQUARE YAARU;So;0;L; 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;; -3350;SQUARE YUAN;So;0;L; 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;; -3351;SQUARE RITTORU;So;0;L; 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;; -3352;SQUARE RIRA;So;0;L; 30EA 30E9;;;;N;SQUARED RIRA;;;; -3353;SQUARE RUPII;So;0;L; 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;; -3354;SQUARE RUUBURU;So;0;L; 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;; -3355;SQUARE REMU;So;0;L; 30EC 30E0;;;;N;SQUARED REMU;;;; -3356;SQUARE RENTOGEN;So;0;L; 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;; -3357;SQUARE WATTO;So;0;L; 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;; -3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L; 0030 70B9;;;;N;;;;; -3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L; 0031 70B9;;;;N;;;;; -335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L; 0032 70B9;;;;N;;;;; -335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L; 0033 70B9;;;;N;;;;; -335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L; 0034 70B9;;;;N;;;;; -335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L; 0035 70B9;;;;N;;;;; -335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L; 0036 70B9;;;;N;;;;; -335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L; 0037 70B9;;;;N;;;;; -3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L; 0038 70B9;;;;N;;;;; -3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L; 0039 70B9;;;;N;;;;; -3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L; 0031 0030 70B9;;;;N;;;;; -3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L; 0031 0031 70B9;;;;N;;;;; -3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L; 0031 0032 70B9;;;;N;;;;; -3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L; 0031 0033 70B9;;;;N;;;;; -3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L; 0031 0034 70B9;;;;N;;;;; -3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L; 0031 0035 70B9;;;;N;;;;; -3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L; 0031 0036 70B9;;;;N;;;;; -3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L; 0031 0037 70B9;;;;N;;;;; -336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L; 0031 0038 70B9;;;;N;;;;; -336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L; 0031 0039 70B9;;;;N;;;;; -336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L; 0032 0030 70B9;;;;N;;;;; -336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L; 0032 0031 70B9;;;;N;;;;; -336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L; 0032 0032 70B9;;;;N;;;;; -336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L; 0032 0033 70B9;;;;N;;;;; -3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L; 0032 0034 70B9;;;;N;;;;; -3371;SQUARE HPA;So;0;L; 0068 0050 0061;;;;N;;;;; -3372;SQUARE DA;So;0;L; 0064 0061;;;;N;;;;; -3373;SQUARE AU;So;0;L; 0041 0055;;;;N;;;;; -3374;SQUARE BAR;So;0;L; 0062 0061 0072;;;;N;;;;; -3375;SQUARE OV;So;0;L; 006F 0056;;;;N;;;;; -3376;SQUARE PC;So;0;L; 0070 0063;;;;N;;;;; -3377;SQUARE DM;So;0;ON; 0064 006D;;;;N;;;;; -3378;SQUARE DM SQUARED;So;0;ON; 0064 006D 00B2;;;;N;;;;; -3379;SQUARE DM CUBED;So;0;ON; 0064 006D 00B3;;;;N;;;;; -337A;SQUARE IU;So;0;ON; 0049 0055;;;;N;;;;; -337B;SQUARE ERA NAME HEISEI;So;0;L; 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;; -337C;SQUARE ERA NAME SYOUWA;So;0;L; 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;; -337D;SQUARE ERA NAME TAISYOU;So;0;L; 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;; -337E;SQUARE ERA NAME MEIZI;So;0;L; 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;; -337F;SQUARE CORPORATION;So;0;L; 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;; -3380;SQUARE PA AMPS;So;0;L; 0070 0041;;;;N;SQUARED PA AMPS;;;; -3381;SQUARE NA;So;0;L; 006E 0041;;;;N;SQUARED NA;;;; -3382;SQUARE MU A;So;0;L; 03BC 0041;;;;N;SQUARED MU A;;;; -3383;SQUARE MA;So;0;L; 006D 0041;;;;N;SQUARED MA;;;; -3384;SQUARE KA;So;0;L; 006B 0041;;;;N;SQUARED KA;;;; -3385;SQUARE KB;So;0;L; 004B 0042;;;;N;SQUARED KB;;;; -3386;SQUARE MB;So;0;L; 004D 0042;;;;N;SQUARED MB;;;; -3387;SQUARE GB;So;0;L; 0047 0042;;;;N;SQUARED GB;;;; -3388;SQUARE CAL;So;0;L; 0063 0061 006C;;;;N;SQUARED CAL;;;; -3389;SQUARE KCAL;So;0;L; 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;; -338A;SQUARE PF;So;0;L; 0070 0046;;;;N;SQUARED PF;;;; -338B;SQUARE NF;So;0;L; 006E 0046;;;;N;SQUARED NF;;;; -338C;SQUARE MU F;So;0;L; 03BC 0046;;;;N;SQUARED MU F;;;; -338D;SQUARE MU G;So;0;L; 03BC 0067;;;;N;SQUARED MU G;;;; -338E;SQUARE MG;So;0;L; 006D 0067;;;;N;SQUARED MG;;;; -338F;SQUARE KG;So;0;L; 006B 0067;;;;N;SQUARED KG;;;; -3390;SQUARE HZ;So;0;L; 0048 007A;;;;N;SQUARED HZ;;;; -3391;SQUARE KHZ;So;0;L; 006B 0048 007A;;;;N;SQUARED KHZ;;;; -3392;SQUARE MHZ;So;0;L; 004D 0048 007A;;;;N;SQUARED MHZ;;;; -3393;SQUARE GHZ;So;0;L; 0047 0048 007A;;;;N;SQUARED GHZ;;;; -3394;SQUARE THZ;So;0;L; 0054 0048 007A;;;;N;SQUARED THZ;;;; -3395;SQUARE MU L;So;0;L; 03BC 2113;;;;N;SQUARED MU L;;;; -3396;SQUARE ML;So;0;L; 006D 2113;;;;N;SQUARED ML;;;; -3397;SQUARE DL;So;0;L; 0064 2113;;;;N;SQUARED DL;;;; -3398;SQUARE KL;So;0;L; 006B 2113;;;;N;SQUARED KL;;;; -3399;SQUARE FM;So;0;L; 0066 006D;;;;N;SQUARED FM;;;; -339A;SQUARE NM;So;0;L; 006E 006D;;;;N;SQUARED NM;;;; -339B;SQUARE MU M;So;0;L; 03BC 006D;;;;N;SQUARED MU M;;;; -339C;SQUARE MM;So;0;L; 006D 006D;;;;N;SQUARED MM;;;; -339D;SQUARE CM;So;0;L; 0063 006D;;;;N;SQUARED CM;;;; -339E;SQUARE KM;So;0;L; 006B 006D;;;;N;SQUARED KM;;;; -339F;SQUARE MM SQUARED;So;0;L; 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;; -33A0;SQUARE CM SQUARED;So;0;L; 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;; -33A1;SQUARE M SQUARED;So;0;L; 006D 00B2;;;;N;SQUARED M SQUARED;;;; -33A2;SQUARE KM SQUARED;So;0;L; 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;; -33A3;SQUARE MM CUBED;So;0;L; 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;; -33A4;SQUARE CM CUBED;So;0;L; 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;; -33A5;SQUARE M CUBED;So;0;L; 006D 00B3;;;;N;SQUARED M CUBED;;;; -33A6;SQUARE KM CUBED;So;0;L; 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;; -33A7;SQUARE M OVER S;So;0;L; 006D 2215 0073;;;;N;SQUARED M OVER S;;;; -33A8;SQUARE M OVER S SQUARED;So;0;L; 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;; -33A9;SQUARE PA;So;0;L; 0050 0061;;;;N;SQUARED PA;;;; -33AA;SQUARE KPA;So;0;L; 006B 0050 0061;;;;N;SQUARED KPA;;;; -33AB;SQUARE MPA;So;0;L; 004D 0050 0061;;;;N;SQUARED MPA;;;; -33AC;SQUARE GPA;So;0;L; 0047 0050 0061;;;;N;SQUARED GPA;;;; -33AD;SQUARE RAD;So;0;L; 0072 0061 0064;;;;N;SQUARED RAD;;;; -33AE;SQUARE RAD OVER S;So;0;L; 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;; -33AF;SQUARE RAD OVER S SQUARED;So;0;L; 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;; -33B0;SQUARE PS;So;0;L; 0070 0073;;;;N;SQUARED PS;;;; -33B1;SQUARE NS;So;0;L; 006E 0073;;;;N;SQUARED NS;;;; -33B2;SQUARE MU S;So;0;L; 03BC 0073;;;;N;SQUARED MU S;;;; -33B3;SQUARE MS;So;0;L; 006D 0073;;;;N;SQUARED MS;;;; -33B4;SQUARE PV;So;0;L; 0070 0056;;;;N;SQUARED PV;;;; -33B5;SQUARE NV;So;0;L; 006E 0056;;;;N;SQUARED NV;;;; -33B6;SQUARE MU V;So;0;L; 03BC 0056;;;;N;SQUARED MU V;;;; -33B7;SQUARE MV;So;0;L; 006D 0056;;;;N;SQUARED MV;;;; -33B8;SQUARE KV;So;0;L; 006B 0056;;;;N;SQUARED KV;;;; -33B9;SQUARE MV MEGA;So;0;L; 004D 0056;;;;N;SQUARED MV MEGA;;;; -33BA;SQUARE PW;So;0;L; 0070 0057;;;;N;SQUARED PW;;;; -33BB;SQUARE NW;So;0;L; 006E 0057;;;;N;SQUARED NW;;;; -33BC;SQUARE MU W;So;0;L; 03BC 0057;;;;N;SQUARED MU W;;;; -33BD;SQUARE MW;So;0;L; 006D 0057;;;;N;SQUARED MW;;;; -33BE;SQUARE KW;So;0;L; 006B 0057;;;;N;SQUARED KW;;;; -33BF;SQUARE MW MEGA;So;0;L; 004D 0057;;;;N;SQUARED MW MEGA;;;; -33C0;SQUARE K OHM;So;0;L; 006B 03A9;;;;N;SQUARED K OHM;;;; -33C1;SQUARE M OHM;So;0;L; 004D 03A9;;;;N;SQUARED M OHM;;;; -33C2;SQUARE AM;So;0;L; 0061 002E 006D 002E;;;;N;SQUARED AM;;;; -33C3;SQUARE BQ;So;0;L; 0042 0071;;;;N;SQUARED BQ;;;; -33C4;SQUARE CC;So;0;L; 0063 0063;;;;N;SQUARED CC;;;; -33C5;SQUARE CD;So;0;L; 0063 0064;;;;N;SQUARED CD;;;; -33C6;SQUARE C OVER KG;So;0;L; 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;; -33C7;SQUARE CO;So;0;L; 0043 006F 002E;;;;N;SQUARED CO;;;; -33C8;SQUARE DB;So;0;L; 0064 0042;;;;N;SQUARED DB;;;; -33C9;SQUARE GY;So;0;L; 0047 0079;;;;N;SQUARED GY;;;; -33CA;SQUARE HA;So;0;L; 0068 0061;;;;N;SQUARED HA;;;; -33CB;SQUARE HP;So;0;L; 0048 0050;;;;N;SQUARED HP;;;; -33CC;SQUARE IN;So;0;L; 0069 006E;;;;N;SQUARED IN;;;; -33CD;SQUARE KK;So;0;L; 004B 004B;;;;N;SQUARED KK;;;; -33CE;SQUARE KM CAPITAL;So;0;L; 004B 004D;;;;N;SQUARED KM CAPITAL;;;; -33CF;SQUARE KT;So;0;L; 006B 0074;;;;N;SQUARED KT;;;; -33D0;SQUARE LM;So;0;L; 006C 006D;;;;N;SQUARED LM;;;; -33D1;SQUARE LN;So;0;L; 006C 006E;;;;N;SQUARED LN;;;; -33D2;SQUARE LOG;So;0;L; 006C 006F 0067;;;;N;SQUARED LOG;;;; -33D3;SQUARE LX;So;0;L; 006C 0078;;;;N;SQUARED LX;;;; -33D4;SQUARE MB SMALL;So;0;L; 006D 0062;;;;N;SQUARED MB SMALL;;;; -33D5;SQUARE MIL;So;0;L; 006D 0069 006C;;;;N;SQUARED MIL;;;; -33D6;SQUARE MOL;So;0;L; 006D 006F 006C;;;;N;SQUARED MOL;;;; -33D7;SQUARE PH;So;0;L; 0050 0048;;;;N;SQUARED PH;;;; -33D8;SQUARE PM;So;0;L; 0070 002E 006D 002E;;;;N;SQUARED PM;;;; -33D9;SQUARE PPM;So;0;L; 0050 0050 004D;;;;N;SQUARED PPM;;;; -33DA;SQUARE PR;So;0;L; 0050 0052;;;;N;SQUARED PR;;;; -33DB;SQUARE SR;So;0;L; 0073 0072;;;;N;SQUARED SR;;;; -33DC;SQUARE SV;So;0;L; 0053 0076;;;;N;SQUARED SV;;;; -33DD;SQUARE WB;So;0;L; 0057 0062;;;;N;SQUARED WB;;;; -33DE;SQUARE V OVER M;So;0;ON; 0056 2215 006D;;;;N;;;;; -33DF;SQUARE A OVER M;So;0;ON; 0041 2215 006D;;;;N;;;;; -33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L; 0031 65E5;;;;N;;;;; -33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L; 0032 65E5;;;;N;;;;; -33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L; 0033 65E5;;;;N;;;;; -33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L; 0034 65E5;;;;N;;;;; -33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L; 0035 65E5;;;;N;;;;; -33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L; 0036 65E5;;;;N;;;;; -33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L; 0037 65E5;;;;N;;;;; -33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L; 0038 65E5;;;;N;;;;; -33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L; 0039 65E5;;;;N;;;;; -33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L; 0031 0030 65E5;;;;N;;;;; -33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L; 0031 0031 65E5;;;;N;;;;; -33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L; 0031 0032 65E5;;;;N;;;;; -33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L; 0031 0033 65E5;;;;N;;;;; -33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L; 0031 0034 65E5;;;;N;;;;; -33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L; 0031 0035 65E5;;;;N;;;;; -33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L; 0031 0036 65E5;;;;N;;;;; -33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L; 0031 0037 65E5;;;;N;;;;; -33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L; 0031 0038 65E5;;;;N;;;;; -33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L; 0031 0039 65E5;;;;N;;;;; -33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L; 0032 0030 65E5;;;;N;;;;; -33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L; 0032 0031 65E5;;;;N;;;;; -33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L; 0032 0032 65E5;;;;N;;;;; -33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L; 0032 0033 65E5;;;;N;;;;; -33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L; 0032 0034 65E5;;;;N;;;;; -33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L; 0032 0035 65E5;;;;N;;;;; -33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L; 0032 0036 65E5;;;;N;;;;; -33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L; 0032 0037 65E5;;;;N;;;;; -33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L; 0032 0038 65E5;;;;N;;;;; -33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L; 0032 0039 65E5;;;;N;;;;; -33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L; 0033 0030 65E5;;;;N;;;;; -33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L; 0033 0031 65E5;;;;N;;;;; -33FF;SQUARE GAL;So;0;ON; 0067 0061 006C;;;;N;;;;; -3400;;Lo;0;L;;;;;N;;;;; -4DB5;;Lo;0;L;;;;;N;;;;; -4DC0;HEXAGRAM FOR THE CREATIVE HEAVEN;So;0;ON;;;;;N;;;;; -4DC1;HEXAGRAM FOR THE RECEPTIVE EARTH;So;0;ON;;;;;N;;;;; -4DC2;HEXAGRAM FOR DIFFICULTY AT THE BEGINNING;So;0;ON;;;;;N;;;;; -4DC3;HEXAGRAM FOR YOUTHFUL FOLLY;So;0;ON;;;;;N;;;;; -4DC4;HEXAGRAM FOR WAITING;So;0;ON;;;;;N;;;;; -4DC5;HEXAGRAM FOR CONFLICT;So;0;ON;;;;;N;;;;; -4DC6;HEXAGRAM FOR THE ARMY;So;0;ON;;;;;N;;;;; -4DC7;HEXAGRAM FOR HOLDING TOGETHER;So;0;ON;;;;;N;;;;; -4DC8;HEXAGRAM FOR SMALL TAMING;So;0;ON;;;;;N;;;;; -4DC9;HEXAGRAM FOR TREADING;So;0;ON;;;;;N;;;;; -4DCA;HEXAGRAM FOR PEACE;So;0;ON;;;;;N;;;;; -4DCB;HEXAGRAM FOR STANDSTILL;So;0;ON;;;;;N;;;;; -4DCC;HEXAGRAM FOR FELLOWSHIP;So;0;ON;;;;;N;;;;; -4DCD;HEXAGRAM FOR GREAT POSSESSION;So;0;ON;;;;;N;;;;; -4DCE;HEXAGRAM FOR MODESTY;So;0;ON;;;;;N;;;;; -4DCF;HEXAGRAM FOR ENTHUSIASM;So;0;ON;;;;;N;;;;; -4DD0;HEXAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;; -4DD1;HEXAGRAM FOR WORK ON THE DECAYED;So;0;ON;;;;;N;;;;; -4DD2;HEXAGRAM FOR APPROACH;So;0;ON;;;;;N;;;;; -4DD3;HEXAGRAM FOR CONTEMPLATION;So;0;ON;;;;;N;;;;; -4DD4;HEXAGRAM FOR BITING THROUGH;So;0;ON;;;;;N;;;;; -4DD5;HEXAGRAM FOR GRACE;So;0;ON;;;;;N;;;;; -4DD6;HEXAGRAM FOR SPLITTING APART;So;0;ON;;;;;N;;;;; -4DD7;HEXAGRAM FOR RETURN;So;0;ON;;;;;N;;;;; -4DD8;HEXAGRAM FOR INNOCENCE;So;0;ON;;;;;N;;;;; -4DD9;HEXAGRAM FOR GREAT TAMING;So;0;ON;;;;;N;;;;; -4DDA;HEXAGRAM FOR MOUTH CORNERS;So;0;ON;;;;;N;;;;; -4DDB;HEXAGRAM FOR GREAT PREPONDERANCE;So;0;ON;;;;;N;;;;; -4DDC;HEXAGRAM FOR THE ABYSMAL WATER;So;0;ON;;;;;N;;;;; -4DDD;HEXAGRAM FOR THE CLINGING FIRE;So;0;ON;;;;;N;;;;; -4DDE;HEXAGRAM FOR INFLUENCE;So;0;ON;;;;;N;;;;; -4DDF;HEXAGRAM FOR DURATION;So;0;ON;;;;;N;;;;; -4DE0;HEXAGRAM FOR RETREAT;So;0;ON;;;;;N;;;;; -4DE1;HEXAGRAM FOR GREAT POWER;So;0;ON;;;;;N;;;;; -4DE2;HEXAGRAM FOR PROGRESS;So;0;ON;;;;;N;;;;; -4DE3;HEXAGRAM FOR DARKENING OF THE LIGHT;So;0;ON;;;;;N;;;;; -4DE4;HEXAGRAM FOR THE FAMILY;So;0;ON;;;;;N;;;;; -4DE5;HEXAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;; -4DE6;HEXAGRAM FOR OBSTRUCTION;So;0;ON;;;;;N;;;;; -4DE7;HEXAGRAM FOR DELIVERANCE;So;0;ON;;;;;N;;;;; -4DE8;HEXAGRAM FOR DECREASE;So;0;ON;;;;;N;;;;; -4DE9;HEXAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;; -4DEA;HEXAGRAM FOR BREAKTHROUGH;So;0;ON;;;;;N;;;;; -4DEB;HEXAGRAM FOR COMING TO MEET;So;0;ON;;;;;N;;;;; -4DEC;HEXAGRAM FOR GATHERING TOGETHER;So;0;ON;;;;;N;;;;; -4DED;HEXAGRAM FOR PUSHING UPWARD;So;0;ON;;;;;N;;;;; -4DEE;HEXAGRAM FOR OPPRESSION;So;0;ON;;;;;N;;;;; -4DEF;HEXAGRAM FOR THE WELL;So;0;ON;;;;;N;;;;; -4DF0;HEXAGRAM FOR REVOLUTION;So;0;ON;;;;;N;;;;; -4DF1;HEXAGRAM FOR THE CAULDRON;So;0;ON;;;;;N;;;;; -4DF2;HEXAGRAM FOR THE AROUSING THUNDER;So;0;ON;;;;;N;;;;; -4DF3;HEXAGRAM FOR THE KEEPING STILL MOUNTAIN;So;0;ON;;;;;N;;;;; -4DF4;HEXAGRAM FOR DEVELOPMENT;So;0;ON;;;;;N;;;;; -4DF5;HEXAGRAM FOR THE MARRYING MAIDEN;So;0;ON;;;;;N;;;;; -4DF6;HEXAGRAM FOR ABUNDANCE;So;0;ON;;;;;N;;;;; -4DF7;HEXAGRAM FOR THE WANDERER;So;0;ON;;;;;N;;;;; -4DF8;HEXAGRAM FOR THE GENTLE WIND;So;0;ON;;;;;N;;;;; -4DF9;HEXAGRAM FOR THE JOYOUS LAKE;So;0;ON;;;;;N;;;;; -4DFA;HEXAGRAM FOR DISPERSION;So;0;ON;;;;;N;;;;; -4DFB;HEXAGRAM FOR LIMITATION;So;0;ON;;;;;N;;;;; -4DFC;HEXAGRAM FOR INNER TRUTH;So;0;ON;;;;;N;;;;; -4DFD;HEXAGRAM FOR SMALL PREPONDERANCE;So;0;ON;;;;;N;;;;; -4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;; -4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;; -4E00;;Lo;0;L;;;;;N;;;;; -9FC3;;Lo;0;L;;;;;N;;;;; -A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;; -A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;; -A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;; -A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;; -A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;; -A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;; -A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;; -A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;; -A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;; -A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;; -A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;; -A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;; -A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;; -A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;; -A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;; -A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;; -A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;; -A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;; -A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;; -A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;; -A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;; -A015;YI SYLLABLE WU;Lm;0;L;;;;;N;;;;; -A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;; -A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;; -A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;; -A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;; -A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;; -A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;; -A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;; -A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;; -A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;; -A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;; -A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;; -A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;; -A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;; -A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;; -A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;; -A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;; -A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;; -A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;; -A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;; -A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;; -A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;; -A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;; -A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;; -A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;; -A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;; -A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;; -A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;; -A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;; -A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;; -A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;; -A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;; -A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;; -A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;; -A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;; -A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;; -A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;; -A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;; -A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;; -A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;; -A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;; -A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;; -A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;; -A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;; -A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;; -A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;; -A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;; -A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;; -A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;; -A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;; -A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;; -A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;; -A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;; -A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;; -A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;; -A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;; -A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;; -A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;; -A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;; -A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;; -A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;; -A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;; -A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;; -A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;; -A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;; -A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;; -A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;; -A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;; -A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;; -A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;; -A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;; -A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;; -A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;; -A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;; -A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;; -A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;; -A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;; -A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;; -A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;; -A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;; -A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;; -A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;; -A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;; -A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;; -A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;; -A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;; -A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;; -A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;; -A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;; -A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;; -A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;; -A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;; -A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;; -A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;; -A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;; -A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;; -A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;; -A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;; -A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;; -A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;; -A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;; -A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;; -A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;; -A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;; -A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;; -A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;; -A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;; -A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;; -A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;; -A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;; -A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;; -A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;; -A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;; -A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;; -A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;; -A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;; -A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;; -A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;; -A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;; -A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;; -A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;; -A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;; -A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;; -A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;; -A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;; -A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;; -A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;; -A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;; -A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;; -A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;; -A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;; -A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;; -A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;; -A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;; -A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;; -A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;; -A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;; -A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;; -A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;; -A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;; -A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;; -A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;; -A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;; -A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;; -A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;; -A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;; -A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;; -A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;; -A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;; -A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;; -A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;; -A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;; -A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;; -A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;; -A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;; -A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;; -A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;; -A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;; -A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;; -A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;; -A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;; -A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;; -A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;; -A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;; -A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;; -A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;; -A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;; -A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;; -A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;; -A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;; -A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;; -A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;; -A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;; -A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;; -A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;; -A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;; -A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;; -A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;; -A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;; -A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;; -A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;; -A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;; -A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;; -A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;; -A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;; -A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;; -A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;; -A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;; -A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;; -A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;; -A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;; -A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;; -A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;; -A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;; -A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;; -A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;; -A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;; -A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;; -A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;; -A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;; -A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;; -A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;; -A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;; -A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;; -A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;; -A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;; -A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;; -A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;; -A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;; -A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;; -A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;; -A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;; -A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;; -A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;; -A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;; -A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;; -A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;; -A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;; -A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;; -A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;; -A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;; -A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;; -A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;; -A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;; -A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;; -A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;; -A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;; -A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;; -A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;; -A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;; -A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;; -A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;; -A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;; -A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;; -A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;; -A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;; -A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;; -A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;; -A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;; -A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;; -A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;; -A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;; -A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;; -A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;; -A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;; -A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;; -A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;; -A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;; -A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;; -A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;; -A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;; -A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;; -A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;; -A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;; -A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;; -A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;; -A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;; -A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;; -A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;; -A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;; -A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;; -A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;; -A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;; -A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;; -A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;; -A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;; -A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;; -A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;; -A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;; -A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;; -A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;; -A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;; -A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;; -A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;; -A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;; -A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;; -A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;; -A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;; -A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;; -A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;; -A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;; -A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;; -A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;; -A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;; -A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;; -A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;; -A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;; -A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;; -A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;; -A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;; -A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;; -A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;; -A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;; -A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;; -A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;; -A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;; -A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;; -A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;; -A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;; -A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;; -A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;; -A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;; -A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;; -A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;; -A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;; -A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;; -A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;; -A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;; -A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;; -A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;; -A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;; -A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;; -A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;; -A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;; -A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;; -A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;; -A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;; -A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;; -A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;; -A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;; -A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;; -A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;; -A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;; -A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;; -A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;; -A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;; -A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;; -A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;; -A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;; -A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;; -A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;; -A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;; -A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;; -A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;; -A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;; -A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;; -A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;; -A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;; -A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;; -A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;; -A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;; -A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;; -A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;; -A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;; -A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;; -A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;; -A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;; -A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;; -A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;; -A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;; -A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;; -A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;; -A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;; -A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;; -A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;; -A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;; -A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;; -A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;; -A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;; -A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;; -A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;; -A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;; -A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;; -A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;; -A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;; -A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;; -A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;; -A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;; -A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;; -A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;; -A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;; -A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;; -A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;; -A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;; -A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;; -A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;; -A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;; -A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;; -A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;; -A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;; -A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;; -A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;; -A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;; -A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;; -A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;; -A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;; -A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;; -A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;; -A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;; -A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;; -A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;; -A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;; -A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;; -A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;; -A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;; -A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;; -A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;; -A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;; -A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;; -A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;; -A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;; -A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;; -A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;; -A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;; -A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;; -A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;; -A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;; -A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;; -A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;; -A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;; -A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;; -A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;; -A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;; -A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;; -A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;; -A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;; -A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;; -A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;; -A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;; -A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;; -A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;; -A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;; -A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;; -A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;; -A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;; -A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;; -A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;; -A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;; -A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;; -A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;; -A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;; -A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;; -A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;; -A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;; -A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;; -A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;; -A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;; -A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;; -A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;; -A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;; -A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;; -A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;; -A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;; -A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;; -A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;; -A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;; -A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;; -A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;; -A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;; -A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;; -A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;; -A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;; -A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;; -A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;; -A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;; -A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;; -A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;; -A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;; -A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;; -A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;; -A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;; -A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;; -A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;; -A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;; -A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;; -A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;; -A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;; -A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;; -A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;; -A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;; -A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;; -A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;; -A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;; -A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;; -A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;; -A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;; -A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;; -A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;; -A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;; -A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;; -A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;; -A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;; -A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;; -A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;; -A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;; -A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;; -A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;; -A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;; -A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;; -A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;; -A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;; -A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;; -A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;; -A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;; -A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;; -A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;; -A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;; -A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;; -A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;; -A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;; -A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;; -A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;; -A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;; -A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;; -A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;; -A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;; -A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;; -A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;; -A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;; -A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;; -A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;; -A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;; -A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;; -A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;; -A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;; -A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;; -A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;; -A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;; -A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;; -A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;; -A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;; -A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;; -A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;; -A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;; -A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;; -A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;; -A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;; -A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;; -A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;; -A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;; -A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;; -A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;; -A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;; -A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;; -A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;; -A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;; -A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;; -A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;; -A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;; -A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;; -A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;; -A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;; -A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;; -A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;; -A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;; -A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;; -A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;; -A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;; -A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;; -A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;; -A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;; -A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;; -A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;; -A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;; -A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;; -A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;; -A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;; -A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;; -A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;; -A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;; -A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;; -A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;; -A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;; -A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;; -A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;; -A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;; -A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;; -A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;; -A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;; -A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;; -A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;; -A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;; -A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;; -A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;; -A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;; -A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;; -A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;; -A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;; -A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;; -A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;; -A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;; -A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;; -A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;; -A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;; -A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;; -A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;; -A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;; -A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;; -A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;; -A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;; -A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;; -A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;; -A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;; -A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;; -A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;; -A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;; -A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;; -A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;; -A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;; -A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;; -A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;; -A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;; -A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;; -A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;; -A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;; -A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;; -A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;; -A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;; -A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;; -A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;; -A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;; -A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;; -A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;; -A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;; -A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;; -A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;; -A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;; -A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;; -A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;; -A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;; -A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;; -A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;; -A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;; -A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;; -A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;; -A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;; -A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;; -A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;; -A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;; -A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;; -A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;; -A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;; -A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;; -A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;; -A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;; -A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;; -A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;; -A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;; -A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;; -A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;; -A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;; -A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;; -A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;; -A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;; -A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;; -A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;; -A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;; -A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;; -A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;; -A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;; -A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;; -A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;; -A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;; -A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;; -A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;; -A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;; -A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;; -A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;; -A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;; -A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;; -A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;; -A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;; -A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;; -A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;; -A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;; -A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;; -A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;; -A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;; -A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;; -A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;; -A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;; -A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;; -A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;; -A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;; -A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;; -A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;; -A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;; -A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;; -A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;; -A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;; -A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;; -A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;; -A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;; -A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;; -A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;; -A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;; -A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;; -A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;; -A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;; -A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;; -A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;; -A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;; -A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;; -A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;; -A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;; -A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;; -A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;; -A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;; -A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;; -A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;; -A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;; -A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;; -A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;; -A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;; -A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;; -A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;; -A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;; -A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;; -A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;; -A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;; -A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;; -A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;; -A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;; -A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;; -A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;; -A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;; -A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;; -A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;; -A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;; -A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;; -A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;; -A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;; -A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;; -A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;; -A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;; -A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;; -A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;; -A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;; -A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;; -A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;; -A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;; -A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;; -A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;; -A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;; -A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;; -A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;; -A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;; -A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;; -A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;; -A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;; -A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;; -A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;; -A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;; -A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;; -A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;; -A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;; -A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;; -A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;; -A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;; -A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;; -A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;; -A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;; -A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;; -A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;; -A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;; -A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;; -A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;; -A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;; -A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;; -A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;; -A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;; -A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;; -A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;; -A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;; -A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;; -A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;; -A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;; -A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;; -A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;; -A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;; -A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;; -A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;; -A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;; -A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;; -A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;; -A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;; -A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;; -A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;; -A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;; -A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;; -A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;; -A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;; -A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;; -A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;; -A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;; -A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;; -A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;; -A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;; -A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;; -A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;; -A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;; -A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;; -A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;; -A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;; -A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;; -A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;; -A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;; -A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;; -A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;; -A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;; -A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;; -A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;; -A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;; -A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;; -A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;; -A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;; -A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;; -A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;; -A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;; -A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;; -A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;; -A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;; -A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;; -A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;; -A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;; -A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;; -A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;; -A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;; -A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;; -A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; -A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;; -A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;; -A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;; -A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;; -A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;; -A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;; -A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; -A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;; -A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;; -A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;; -A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; -A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;; -A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;; -A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;; -A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; -A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;; -A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;; -A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;; -A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;; -A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;; -A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;; -A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;; -A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;; -A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;; -A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;; -A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;; -A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;; -A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;; -A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;; -A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;; -A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;; -A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;; -A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;; -A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;; -A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;; -A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;; -A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;; -A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;; -A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;; -A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;; -A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;; -A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;; -A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;; -A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;; -A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;; -A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;; -A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;; -A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;; -A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;; -A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;; -A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;; -A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;; -A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;; -A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;; -A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;; -A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;; -A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;; -A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;; -A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;; -A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;; -A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;; -A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;; -A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;; -A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;; -A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;; -A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;; -A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;; -A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;; -A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;; -A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;; -A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;; -A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;; -A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;; -A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;; -A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;; -A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;; -A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;; -A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;; -A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;; -A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;; -A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;; -A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;; -A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;; -A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;; -A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;; -A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;; -A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;; -A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;; -A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;; -A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;; -A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;; -A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;; -A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;; -A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;; -A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;; -A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;; -A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;; -A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;; -A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;; -A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;; -A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;; -A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;; -A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;; -A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;; -A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;; -A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;; -A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;; -A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;; -A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;; -A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;; -A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;; -A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;; -A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;; -A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;; -A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;; -A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;; -A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;; -A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;; -A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;; -A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;; -A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;; -A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;; -A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;; -A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;; -A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;; -A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;; -A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;; -A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;; -A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;; -A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;; -A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;; -A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;; -A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;; -A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;; -A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;; -A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;; -A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;; -A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;; -A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;; -A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;; -A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;; -A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;; -A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;; -A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;; -A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;; -A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;; -A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;; -A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;; -A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;; -A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;; -A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;; -A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;; -A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;; -A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;; -A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;; -A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;; -A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;; -A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;; -A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;; -A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;; -A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;; -A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;; -A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;; -A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;; -A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;; -A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;; -A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;; -A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;; -A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;; -A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;; -A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;; -A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;; -A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;; -A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;; -A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;; -A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;; -A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;; -A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;; -A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;; -A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;; -A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;; -A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;; -A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;; -A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;; -A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;; -A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;; -A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;; -A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;; -A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;; -A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;; -A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;; -A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;; -A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;; -A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;; -A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;; -A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;; -A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;; -A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;; -A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;; -A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;; -A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;; -A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;; -A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;; -A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;; -A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;; -A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;; -A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;; -A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;; -A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;; -A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;; -A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;; -A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;; -A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;; -A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;; -A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;; -A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;; -A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;; -A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;; -A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;; -A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;; -A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;; -A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;; -A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;; -A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;; -A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;; -A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;; -A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;; -A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;; -A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;; -A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;; -A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;; -A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;; -A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;; -A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;; -A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;; -A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;; -A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;; -A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;; -A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;; -A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;; -A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;; -A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;; -A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;; -A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;; -A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;; -A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;; -A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;; -A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;; -A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;; -A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;; -A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;; -A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;; -A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;; -A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;; -A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;; -A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;; -A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;; -A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;; -A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;; -A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;; -A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;; -A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;; -A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;; -A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;; -A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;; -A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;; -A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;; -A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;; -A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;; -A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;; -A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;; -A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;; -A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;; -A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;; -A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;; -A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;; -A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;; -A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;; -A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;; -A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;; -A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;; -A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;; -A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;; -A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;; -A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;; -A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;; -A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;; -A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;; -A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;; -A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;; -A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;; -A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;; -A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;; -A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;; -A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;; -A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;; -A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;; -A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;; -A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;; -A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;; -A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;; -A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;; -A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;; -A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;; -A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;; -A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;; -A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;; -A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;; -A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;; -A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;; -A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;; -A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;; -A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;; -A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;; -A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;; -A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;; -A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;; -A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;; -A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;; -A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;; -A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;; -A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;; -A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;; -A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;; -A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;; -A491;YI RADICAL LI;So;0;ON;;;;;N;;;;; -A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;; -A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;; -A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;; -A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;; -A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;; -A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;; -A498;YI RADICAL MI;So;0;ON;;;;;N;;;;; -A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;; -A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;; -A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;; -A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;; -A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;; -A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;; -A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;; -A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;; -A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;; -A4A2;YI RADICAL ZUP;So;0;ON;;;;;N;;;;; -A4A3;YI RADICAL CYT;So;0;ON;;;;;N;;;;; -A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;; -A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;; -A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;; -A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;; -A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;; -A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;; -A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;; -A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;; -A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;; -A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;; -A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;; -A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;; -A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;; -A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;; -A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;; -A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;; -A4B4;YI RADICAL NZUP;So;0;ON;;;;;N;;;;; -A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;; -A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;; -A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;; -A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;; -A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;; -A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;; -A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;; -A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;; -A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;; -A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;; -A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;; -A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;; -A4C1;YI RADICAL ZUR;So;0;ON;;;;;N;;;;; -A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;; -A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;; -A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;; -A4C5;YI RADICAL NBIE;So;0;ON;;;;;N;;;;; -A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;; -A500;VAI SYLLABLE EE;Lo;0;L;;;;;N;;;;; -A501;VAI SYLLABLE EEN;Lo;0;L;;;;;N;;;;; -A502;VAI SYLLABLE HEE;Lo;0;L;;;;;N;;;;; -A503;VAI SYLLABLE WEE;Lo;0;L;;;;;N;;;;; -A504;VAI SYLLABLE WEEN;Lo;0;L;;;;;N;;;;; -A505;VAI SYLLABLE PEE;Lo;0;L;;;;;N;;;;; -A506;VAI SYLLABLE BHEE;Lo;0;L;;;;;N;;;;; -A507;VAI SYLLABLE BEE;Lo;0;L;;;;;N;;;;; -A508;VAI SYLLABLE MBEE;Lo;0;L;;;;;N;;;;; -A509;VAI SYLLABLE KPEE;Lo;0;L;;;;;N;;;;; -A50A;VAI SYLLABLE MGBEE;Lo;0;L;;;;;N;;;;; -A50B;VAI SYLLABLE GBEE;Lo;0;L;;;;;N;;;;; -A50C;VAI SYLLABLE FEE;Lo;0;L;;;;;N;;;;; -A50D;VAI SYLLABLE VEE;Lo;0;L;;;;;N;;;;; -A50E;VAI SYLLABLE TEE;Lo;0;L;;;;;N;;;;; -A50F;VAI SYLLABLE THEE;Lo;0;L;;;;;N;;;;; -A510;VAI SYLLABLE DHEE;Lo;0;L;;;;;N;;;;; -A511;VAI SYLLABLE DHHEE;Lo;0;L;;;;;N;;;;; -A512;VAI SYLLABLE LEE;Lo;0;L;;;;;N;;;;; -A513;VAI SYLLABLE REE;Lo;0;L;;;;;N;;;;; -A514;VAI SYLLABLE DEE;Lo;0;L;;;;;N;;;;; -A515;VAI SYLLABLE NDEE;Lo;0;L;;;;;N;;;;; -A516;VAI SYLLABLE SEE;Lo;0;L;;;;;N;;;;; -A517;VAI SYLLABLE SHEE;Lo;0;L;;;;;N;;;;; -A518;VAI SYLLABLE ZEE;Lo;0;L;;;;;N;;;;; -A519;VAI SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;; -A51A;VAI SYLLABLE CEE;Lo;0;L;;;;;N;;;;; -A51B;VAI SYLLABLE JEE;Lo;0;L;;;;;N;;;;; -A51C;VAI SYLLABLE NJEE;Lo;0;L;;;;;N;;;;; -A51D;VAI SYLLABLE YEE;Lo;0;L;;;;;N;;;;; -A51E;VAI SYLLABLE KEE;Lo;0;L;;;;;N;;;;; -A51F;VAI SYLLABLE NGGEE;Lo;0;L;;;;;N;;;;; -A520;VAI SYLLABLE GEE;Lo;0;L;;;;;N;;;;; -A521;VAI SYLLABLE MEE;Lo;0;L;;;;;N;;;;; -A522;VAI SYLLABLE NEE;Lo;0;L;;;;;N;;;;; -A523;VAI SYLLABLE NYEE;Lo;0;L;;;;;N;;;;; -A524;VAI SYLLABLE I;Lo;0;L;;;;;N;;;;; -A525;VAI SYLLABLE IN;Lo;0;L;;;;;N;;;;; -A526;VAI SYLLABLE HI;Lo;0;L;;;;;N;;;;; -A527;VAI SYLLABLE HIN;Lo;0;L;;;;;N;;;;; -A528;VAI SYLLABLE WI;Lo;0;L;;;;;N;;;;; -A529;VAI SYLLABLE WIN;Lo;0;L;;;;;N;;;;; -A52A;VAI SYLLABLE PI;Lo;0;L;;;;;N;;;;; -A52B;VAI SYLLABLE BHI;Lo;0;L;;;;;N;;;;; -A52C;VAI SYLLABLE BI;Lo;0;L;;;;;N;;;;; -A52D;VAI SYLLABLE MBI;Lo;0;L;;;;;N;;;;; -A52E;VAI SYLLABLE KPI;Lo;0;L;;;;;N;;;;; -A52F;VAI SYLLABLE MGBI;Lo;0;L;;;;;N;;;;; -A530;VAI SYLLABLE GBI;Lo;0;L;;;;;N;;;;; -A531;VAI SYLLABLE FI;Lo;0;L;;;;;N;;;;; -A532;VAI SYLLABLE VI;Lo;0;L;;;;;N;;;;; -A533;VAI SYLLABLE TI;Lo;0;L;;;;;N;;;;; -A534;VAI SYLLABLE THI;Lo;0;L;;;;;N;;;;; -A535;VAI SYLLABLE DHI;Lo;0;L;;;;;N;;;;; -A536;VAI SYLLABLE DHHI;Lo;0;L;;;;;N;;;;; -A537;VAI SYLLABLE LI;Lo;0;L;;;;;N;;;;; -A538;VAI SYLLABLE RI;Lo;0;L;;;;;N;;;;; -A539;VAI SYLLABLE DI;Lo;0;L;;;;;N;;;;; -A53A;VAI SYLLABLE NDI;Lo;0;L;;;;;N;;;;; -A53B;VAI SYLLABLE SI;Lo;0;L;;;;;N;;;;; -A53C;VAI SYLLABLE SHI;Lo;0;L;;;;;N;;;;; -A53D;VAI SYLLABLE ZI;Lo;0;L;;;;;N;;;;; -A53E;VAI SYLLABLE ZHI;Lo;0;L;;;;;N;;;;; -A53F;VAI SYLLABLE CI;Lo;0;L;;;;;N;;;;; -A540;VAI SYLLABLE JI;Lo;0;L;;;;;N;;;;; -A541;VAI SYLLABLE NJI;Lo;0;L;;;;;N;;;;; -A542;VAI SYLLABLE YI;Lo;0;L;;;;;N;;;;; -A543;VAI SYLLABLE KI;Lo;0;L;;;;;N;;;;; -A544;VAI SYLLABLE NGGI;Lo;0;L;;;;;N;;;;; -A545;VAI SYLLABLE GI;Lo;0;L;;;;;N;;;;; -A546;VAI SYLLABLE MI;Lo;0;L;;;;;N;;;;; -A547;VAI SYLLABLE NI;Lo;0;L;;;;;N;;;;; -A548;VAI SYLLABLE NYI;Lo;0;L;;;;;N;;;;; -A549;VAI SYLLABLE A;Lo;0;L;;;;;N;;;;; -A54A;VAI SYLLABLE AN;Lo;0;L;;;;;N;;;;; -A54B;VAI SYLLABLE NGAN;Lo;0;L;;;;;N;;;;; -A54C;VAI SYLLABLE HA;Lo;0;L;;;;;N;;;;; -A54D;VAI SYLLABLE HAN;Lo;0;L;;;;;N;;;;; -A54E;VAI SYLLABLE WA;Lo;0;L;;;;;N;;;;; -A54F;VAI SYLLABLE WAN;Lo;0;L;;;;;N;;;;; -A550;VAI SYLLABLE PA;Lo;0;L;;;;;N;;;;; -A551;VAI SYLLABLE BHA;Lo;0;L;;;;;N;;;;; -A552;VAI SYLLABLE BA;Lo;0;L;;;;;N;;;;; -A553;VAI SYLLABLE MBA;Lo;0;L;;;;;N;;;;; -A554;VAI SYLLABLE KPA;Lo;0;L;;;;;N;;;;; -A555;VAI SYLLABLE KPAN;Lo;0;L;;;;;N;;;;; -A556;VAI SYLLABLE MGBA;Lo;0;L;;;;;N;;;;; -A557;VAI SYLLABLE GBA;Lo;0;L;;;;;N;;;;; -A558;VAI SYLLABLE FA;Lo;0;L;;;;;N;;;;; -A559;VAI SYLLABLE VA;Lo;0;L;;;;;N;;;;; -A55A;VAI SYLLABLE TA;Lo;0;L;;;;;N;;;;; -A55B;VAI SYLLABLE THA;Lo;0;L;;;;;N;;;;; -A55C;VAI SYLLABLE DHA;Lo;0;L;;;;;N;;;;; -A55D;VAI SYLLABLE DHHA;Lo;0;L;;;;;N;;;;; -A55E;VAI SYLLABLE LA;Lo;0;L;;;;;N;;;;; -A55F;VAI SYLLABLE RA;Lo;0;L;;;;;N;;;;; -A560;VAI SYLLABLE DA;Lo;0;L;;;;;N;;;;; -A561;VAI SYLLABLE NDA;Lo;0;L;;;;;N;;;;; -A562;VAI SYLLABLE SA;Lo;0;L;;;;;N;;;;; -A563;VAI SYLLABLE SHA;Lo;0;L;;;;;N;;;;; -A564;VAI SYLLABLE ZA;Lo;0;L;;;;;N;;;;; -A565;VAI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; -A566;VAI SYLLABLE CA;Lo;0;L;;;;;N;;;;; -A567;VAI SYLLABLE JA;Lo;0;L;;;;;N;;;;; -A568;VAI SYLLABLE NJA;Lo;0;L;;;;;N;;;;; -A569;VAI SYLLABLE YA;Lo;0;L;;;;;N;;;;; -A56A;VAI SYLLABLE KA;Lo;0;L;;;;;N;;;;; -A56B;VAI SYLLABLE KAN;Lo;0;L;;;;;N;;;;; -A56C;VAI SYLLABLE NGGA;Lo;0;L;;;;;N;;;;; -A56D;VAI SYLLABLE GA;Lo;0;L;;;;;N;;;;; -A56E;VAI SYLLABLE MA;Lo;0;L;;;;;N;;;;; -A56F;VAI SYLLABLE NA;Lo;0;L;;;;;N;;;;; -A570;VAI SYLLABLE NYA;Lo;0;L;;;;;N;;;;; -A571;VAI SYLLABLE OO;Lo;0;L;;;;;N;;;;; -A572;VAI SYLLABLE OON;Lo;0;L;;;;;N;;;;; -A573;VAI SYLLABLE HOO;Lo;0;L;;;;;N;;;;; -A574;VAI SYLLABLE WOO;Lo;0;L;;;;;N;;;;; -A575;VAI SYLLABLE WOON;Lo;0;L;;;;;N;;;;; -A576;VAI SYLLABLE POO;Lo;0;L;;;;;N;;;;; -A577;VAI SYLLABLE BHOO;Lo;0;L;;;;;N;;;;; -A578;VAI SYLLABLE BOO;Lo;0;L;;;;;N;;;;; -A579;VAI SYLLABLE MBOO;Lo;0;L;;;;;N;;;;; -A57A;VAI SYLLABLE KPOO;Lo;0;L;;;;;N;;;;; -A57B;VAI SYLLABLE MGBOO;Lo;0;L;;;;;N;;;;; -A57C;VAI SYLLABLE GBOO;Lo;0;L;;;;;N;;;;; -A57D;VAI SYLLABLE FOO;Lo;0;L;;;;;N;;;;; -A57E;VAI SYLLABLE VOO;Lo;0;L;;;;;N;;;;; -A57F;VAI SYLLABLE TOO;Lo;0;L;;;;;N;;;;; -A580;VAI SYLLABLE THOO;Lo;0;L;;;;;N;;;;; -A581;VAI SYLLABLE DHOO;Lo;0;L;;;;;N;;;;; -A582;VAI SYLLABLE DHHOO;Lo;0;L;;;;;N;;;;; -A583;VAI SYLLABLE LOO;Lo;0;L;;;;;N;;;;; -A584;VAI SYLLABLE ROO;Lo;0;L;;;;;N;;;;; -A585;VAI SYLLABLE DOO;Lo;0;L;;;;;N;;;;; -A586;VAI SYLLABLE NDOO;Lo;0;L;;;;;N;;;;; -A587;VAI SYLLABLE SOO;Lo;0;L;;;;;N;;;;; -A588;VAI SYLLABLE SHOO;Lo;0;L;;;;;N;;;;; -A589;VAI SYLLABLE ZOO;Lo;0;L;;;;;N;;;;; -A58A;VAI SYLLABLE ZHOO;Lo;0;L;;;;;N;;;;; -A58B;VAI SYLLABLE COO;Lo;0;L;;;;;N;;;;; -A58C;VAI SYLLABLE JOO;Lo;0;L;;;;;N;;;;; -A58D;VAI SYLLABLE NJOO;Lo;0;L;;;;;N;;;;; -A58E;VAI SYLLABLE YOO;Lo;0;L;;;;;N;;;;; -A58F;VAI SYLLABLE KOO;Lo;0;L;;;;;N;;;;; -A590;VAI SYLLABLE NGGOO;Lo;0;L;;;;;N;;;;; -A591;VAI SYLLABLE GOO;Lo;0;L;;;;;N;;;;; -A592;VAI SYLLABLE MOO;Lo;0;L;;;;;N;;;;; -A593;VAI SYLLABLE NOO;Lo;0;L;;;;;N;;;;; -A594;VAI SYLLABLE NYOO;Lo;0;L;;;;;N;;;;; -A595;VAI SYLLABLE U;Lo;0;L;;;;;N;;;;; -A596;VAI SYLLABLE UN;Lo;0;L;;;;;N;;;;; -A597;VAI SYLLABLE HU;Lo;0;L;;;;;N;;;;; -A598;VAI SYLLABLE HUN;Lo;0;L;;;;;N;;;;; -A599;VAI SYLLABLE WU;Lo;0;L;;;;;N;;;;; -A59A;VAI SYLLABLE WUN;Lo;0;L;;;;;N;;;;; -A59B;VAI SYLLABLE PU;Lo;0;L;;;;;N;;;;; -A59C;VAI SYLLABLE BHU;Lo;0;L;;;;;N;;;;; -A59D;VAI SYLLABLE BU;Lo;0;L;;;;;N;;;;; -A59E;VAI SYLLABLE MBU;Lo;0;L;;;;;N;;;;; -A59F;VAI SYLLABLE KPU;Lo;0;L;;;;;N;;;;; -A5A0;VAI SYLLABLE MGBU;Lo;0;L;;;;;N;;;;; -A5A1;VAI SYLLABLE GBU;Lo;0;L;;;;;N;;;;; -A5A2;VAI SYLLABLE FU;Lo;0;L;;;;;N;;;;; -A5A3;VAI SYLLABLE VU;Lo;0;L;;;;;N;;;;; -A5A4;VAI SYLLABLE TU;Lo;0;L;;;;;N;;;;; -A5A5;VAI SYLLABLE THU;Lo;0;L;;;;;N;;;;; -A5A6;VAI SYLLABLE DHU;Lo;0;L;;;;;N;;;;; -A5A7;VAI SYLLABLE DHHU;Lo;0;L;;;;;N;;;;; -A5A8;VAI SYLLABLE LU;Lo;0;L;;;;;N;;;;; -A5A9;VAI SYLLABLE RU;Lo;0;L;;;;;N;;;;; -A5AA;VAI SYLLABLE DU;Lo;0;L;;;;;N;;;;; -A5AB;VAI SYLLABLE NDU;Lo;0;L;;;;;N;;;;; -A5AC;VAI SYLLABLE SU;Lo;0;L;;;;;N;;;;; -A5AD;VAI SYLLABLE SHU;Lo;0;L;;;;;N;;;;; -A5AE;VAI SYLLABLE ZU;Lo;0;L;;;;;N;;;;; -A5AF;VAI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; -A5B0;VAI SYLLABLE CU;Lo;0;L;;;;;N;;;;; -A5B1;VAI SYLLABLE JU;Lo;0;L;;;;;N;;;;; -A5B2;VAI SYLLABLE NJU;Lo;0;L;;;;;N;;;;; -A5B3;VAI SYLLABLE YU;Lo;0;L;;;;;N;;;;; -A5B4;VAI SYLLABLE KU;Lo;0;L;;;;;N;;;;; -A5B5;VAI SYLLABLE NGGU;Lo;0;L;;;;;N;;;;; -A5B6;VAI SYLLABLE GU;Lo;0;L;;;;;N;;;;; -A5B7;VAI SYLLABLE MU;Lo;0;L;;;;;N;;;;; -A5B8;VAI SYLLABLE NU;Lo;0;L;;;;;N;;;;; -A5B9;VAI SYLLABLE NYU;Lo;0;L;;;;;N;;;;; -A5BA;VAI SYLLABLE O;Lo;0;L;;;;;N;;;;; -A5BB;VAI SYLLABLE ON;Lo;0;L;;;;;N;;;;; -A5BC;VAI SYLLABLE NGON;Lo;0;L;;;;;N;;;;; -A5BD;VAI SYLLABLE HO;Lo;0;L;;;;;N;;;;; -A5BE;VAI SYLLABLE HON;Lo;0;L;;;;;N;;;;; -A5BF;VAI SYLLABLE WO;Lo;0;L;;;;;N;;;;; -A5C0;VAI SYLLABLE WON;Lo;0;L;;;;;N;;;;; -A5C1;VAI SYLLABLE PO;Lo;0;L;;;;;N;;;;; -A5C2;VAI SYLLABLE BHO;Lo;0;L;;;;;N;;;;; -A5C3;VAI SYLLABLE BO;Lo;0;L;;;;;N;;;;; -A5C4;VAI SYLLABLE MBO;Lo;0;L;;;;;N;;;;; -A5C5;VAI SYLLABLE KPO;Lo;0;L;;;;;N;;;;; -A5C6;VAI SYLLABLE MGBO;Lo;0;L;;;;;N;;;;; -A5C7;VAI SYLLABLE GBO;Lo;0;L;;;;;N;;;;; -A5C8;VAI SYLLABLE GBON;Lo;0;L;;;;;N;;;;; -A5C9;VAI SYLLABLE FO;Lo;0;L;;;;;N;;;;; -A5CA;VAI SYLLABLE VO;Lo;0;L;;;;;N;;;;; -A5CB;VAI SYLLABLE TO;Lo;0;L;;;;;N;;;;; -A5CC;VAI SYLLABLE THO;Lo;0;L;;;;;N;;;;; -A5CD;VAI SYLLABLE DHO;Lo;0;L;;;;;N;;;;; -A5CE;VAI SYLLABLE DHHO;Lo;0;L;;;;;N;;;;; -A5CF;VAI SYLLABLE LO;Lo;0;L;;;;;N;;;;; -A5D0;VAI SYLLABLE RO;Lo;0;L;;;;;N;;;;; -A5D1;VAI SYLLABLE DO;Lo;0;L;;;;;N;;;;; -A5D2;VAI SYLLABLE NDO;Lo;0;L;;;;;N;;;;; -A5D3;VAI SYLLABLE SO;Lo;0;L;;;;;N;;;;; -A5D4;VAI SYLLABLE SHO;Lo;0;L;;;;;N;;;;; -A5D5;VAI SYLLABLE ZO;Lo;0;L;;;;;N;;;;; -A5D6;VAI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; -A5D7;VAI SYLLABLE CO;Lo;0;L;;;;;N;;;;; -A5D8;VAI SYLLABLE JO;Lo;0;L;;;;;N;;;;; -A5D9;VAI SYLLABLE NJO;Lo;0;L;;;;;N;;;;; -A5DA;VAI SYLLABLE YO;Lo;0;L;;;;;N;;;;; -A5DB;VAI SYLLABLE KO;Lo;0;L;;;;;N;;;;; -A5DC;VAI SYLLABLE NGGO;Lo;0;L;;;;;N;;;;; -A5DD;VAI SYLLABLE GO;Lo;0;L;;;;;N;;;;; -A5DE;VAI SYLLABLE MO;Lo;0;L;;;;;N;;;;; -A5DF;VAI SYLLABLE NO;Lo;0;L;;;;;N;;;;; -A5E0;VAI SYLLABLE NYO;Lo;0;L;;;;;N;;;;; -A5E1;VAI SYLLABLE E;Lo;0;L;;;;;N;;;;; -A5E2;VAI SYLLABLE EN;Lo;0;L;;;;;N;;;;; -A5E3;VAI SYLLABLE NGEN;Lo;0;L;;;;;N;;;;; -A5E4;VAI SYLLABLE HE;Lo;0;L;;;;;N;;;;; -A5E5;VAI SYLLABLE HEN;Lo;0;L;;;;;N;;;;; -A5E6;VAI SYLLABLE WE;Lo;0;L;;;;;N;;;;; -A5E7;VAI SYLLABLE WEN;Lo;0;L;;;;;N;;;;; -A5E8;VAI SYLLABLE PE;Lo;0;L;;;;;N;;;;; -A5E9;VAI SYLLABLE BHE;Lo;0;L;;;;;N;;;;; -A5EA;VAI SYLLABLE BE;Lo;0;L;;;;;N;;;;; -A5EB;VAI SYLLABLE MBE;Lo;0;L;;;;;N;;;;; -A5EC;VAI SYLLABLE KPE;Lo;0;L;;;;;N;;;;; -A5ED;VAI SYLLABLE KPEN;Lo;0;L;;;;;N;;;;; -A5EE;VAI SYLLABLE MGBE;Lo;0;L;;;;;N;;;;; -A5EF;VAI SYLLABLE GBE;Lo;0;L;;;;;N;;;;; -A5F0;VAI SYLLABLE GBEN;Lo;0;L;;;;;N;;;;; -A5F1;VAI SYLLABLE FE;Lo;0;L;;;;;N;;;;; -A5F2;VAI SYLLABLE VE;Lo;0;L;;;;;N;;;;; -A5F3;VAI SYLLABLE TE;Lo;0;L;;;;;N;;;;; -A5F4;VAI SYLLABLE THE;Lo;0;L;;;;;N;;;;; -A5F5;VAI SYLLABLE DHE;Lo;0;L;;;;;N;;;;; -A5F6;VAI SYLLABLE DHHE;Lo;0;L;;;;;N;;;;; -A5F7;VAI SYLLABLE LE;Lo;0;L;;;;;N;;;;; -A5F8;VAI SYLLABLE RE;Lo;0;L;;;;;N;;;;; -A5F9;VAI SYLLABLE DE;Lo;0;L;;;;;N;;;;; -A5FA;VAI SYLLABLE NDE;Lo;0;L;;;;;N;;;;; -A5FB;VAI SYLLABLE SE;Lo;0;L;;;;;N;;;;; -A5FC;VAI SYLLABLE SHE;Lo;0;L;;;;;N;;;;; -A5FD;VAI SYLLABLE ZE;Lo;0;L;;;;;N;;;;; -A5FE;VAI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; -A5FF;VAI SYLLABLE CE;Lo;0;L;;;;;N;;;;; -A600;VAI SYLLABLE JE;Lo;0;L;;;;;N;;;;; -A601;VAI SYLLABLE NJE;Lo;0;L;;;;;N;;;;; -A602;VAI SYLLABLE YE;Lo;0;L;;;;;N;;;;; -A603;VAI SYLLABLE KE;Lo;0;L;;;;;N;;;;; -A604;VAI SYLLABLE NGGE;Lo;0;L;;;;;N;;;;; -A605;VAI SYLLABLE NGGEN;Lo;0;L;;;;;N;;;;; -A606;VAI SYLLABLE GE;Lo;0;L;;;;;N;;;;; -A607;VAI SYLLABLE GEN;Lo;0;L;;;;;N;;;;; -A608;VAI SYLLABLE ME;Lo;0;L;;;;;N;;;;; -A609;VAI SYLLABLE NE;Lo;0;L;;;;;N;;;;; -A60A;VAI SYLLABLE NYE;Lo;0;L;;;;;N;;;;; -A60B;VAI SYLLABLE NG;Lo;0;L;;;;;N;;;;; -A60C;VAI SYLLABLE LENGTHENER;Lm;0;L;;;;;N;;;;; -A60D;VAI COMMA;Po;0;ON;;;;;N;;;;; -A60E;VAI FULL STOP;Po;0;ON;;;;;N;;;;; -A60F;VAI QUESTION MARK;Po;0;ON;;;;;N;;;;; -A610;VAI SYLLABLE NDOLE FA;Lo;0;L;;;;;N;;;;; -A611;VAI SYLLABLE NDOLE KA;Lo;0;L;;;;;N;;;;; -A612;VAI SYLLABLE NDOLE SOO;Lo;0;L;;;;;N;;;;; -A613;VAI SYMBOL FEENG;Lo;0;L;;;;;N;;;;; -A614;VAI SYMBOL KEENG;Lo;0;L;;;;;N;;;;; -A615;VAI SYMBOL TING;Lo;0;L;;;;;N;;;;; -A616;VAI SYMBOL NII;Lo;0;L;;;;;N;;;;; -A617;VAI SYMBOL BANG;Lo;0;L;;;;;N;;;;; -A618;VAI SYMBOL FAA;Lo;0;L;;;;;N;;;;; -A619;VAI SYMBOL TAA;Lo;0;L;;;;;N;;;;; -A61A;VAI SYMBOL DANG;Lo;0;L;;;;;N;;;;; -A61B;VAI SYMBOL DOONG;Lo;0;L;;;;;N;;;;; -A61C;VAI SYMBOL KUNG;Lo;0;L;;;;;N;;;;; -A61D;VAI SYMBOL TONG;Lo;0;L;;;;;N;;;;; -A61E;VAI SYMBOL DO-O;Lo;0;L;;;;;N;;;;; -A61F;VAI SYMBOL JONG;Lo;0;L;;;;;N;;;;; -A620;VAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -A621;VAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -A622;VAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -A623;VAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -A624;VAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -A625;VAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -A626;VAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -A627;VAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -A628;VAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -A629;VAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -A62A;VAI SYLLABLE NDOLE MA;Lo;0;L;;;;;N;;;;; -A62B;VAI SYLLABLE NDOLE DO;Lo;0;L;;;;;N;;;;; -A640;CYRILLIC CAPITAL LETTER ZEMLYA;Lu;0;L;;;;;N;;;;A641; -A641;CYRILLIC SMALL LETTER ZEMLYA;Ll;0;L;;;;;N;;;A640;;A640 -A642;CYRILLIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;A643; -A643;CYRILLIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;A642;;A642 -A644;CYRILLIC CAPITAL LETTER REVERSED DZE;Lu;0;L;;;;;N;;;;A645; -A645;CYRILLIC SMALL LETTER REVERSED DZE;Ll;0;L;;;;;N;;;A644;;A644 -A646;CYRILLIC CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;A647; -A647;CYRILLIC SMALL LETTER IOTA;Ll;0;L;;;;;N;;;A646;;A646 -A648;CYRILLIC CAPITAL LETTER DJERV;Lu;0;L;;;;;N;;;;A649; -A649;CYRILLIC SMALL LETTER DJERV;Ll;0;L;;;;;N;;;A648;;A648 -A64A;CYRILLIC CAPITAL LETTER MONOGRAPH UK;Lu;0;L;;;;;N;;;;A64B; -A64B;CYRILLIC SMALL LETTER MONOGRAPH UK;Ll;0;L;;;;;N;;;A64A;;A64A -A64C;CYRILLIC CAPITAL LETTER BROAD OMEGA;Lu;0;L;;;;;N;;;;A64D; -A64D;CYRILLIC SMALL LETTER BROAD OMEGA;Ll;0;L;;;;;N;;;A64C;;A64C -A64E;CYRILLIC CAPITAL LETTER NEUTRAL YER;Lu;0;L;;;;;N;;;;A64F; -A64F;CYRILLIC SMALL LETTER NEUTRAL YER;Ll;0;L;;;;;N;;;A64E;;A64E -A650;CYRILLIC CAPITAL LETTER YERU WITH BACK YER;Lu;0;L;;;;;N;;;;A651; -A651;CYRILLIC SMALL LETTER YERU WITH BACK YER;Ll;0;L;;;;;N;;;A650;;A650 -A652;CYRILLIC CAPITAL LETTER IOTIFIED YAT;Lu;0;L;;;;;N;;;;A653; -A653;CYRILLIC SMALL LETTER IOTIFIED YAT;Ll;0;L;;;;;N;;;A652;;A652 -A654;CYRILLIC CAPITAL LETTER REVERSED YU;Lu;0;L;;;;;N;;;;A655; -A655;CYRILLIC SMALL LETTER REVERSED YU;Ll;0;L;;;;;N;;;A654;;A654 -A656;CYRILLIC CAPITAL LETTER IOTIFIED A;Lu;0;L;;;;;N;;;;A657; -A657;CYRILLIC SMALL LETTER IOTIFIED A;Ll;0;L;;;;;N;;;A656;;A656 -A658;CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A659; -A659;CYRILLIC SMALL LETTER CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A658;;A658 -A65A;CYRILLIC CAPITAL LETTER BLENDED YUS;Lu;0;L;;;;;N;;;;A65B; -A65B;CYRILLIC SMALL LETTER BLENDED YUS;Ll;0;L;;;;;N;;;A65A;;A65A -A65C;CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A65D; -A65D;CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A65C;;A65C -A65E;CYRILLIC CAPITAL LETTER YN;Lu;0;L;;;;;N;;;;A65F; -A65F;CYRILLIC SMALL LETTER YN;Ll;0;L;;;;;N;;;A65E;;A65E -A662;CYRILLIC CAPITAL LETTER SOFT DE;Lu;0;L;;;;;N;;;;A663; -A663;CYRILLIC SMALL LETTER SOFT DE;Ll;0;L;;;;;N;;;A662;;A662 -A664;CYRILLIC CAPITAL LETTER SOFT EL;Lu;0;L;;;;;N;;;;A665; -A665;CYRILLIC SMALL LETTER SOFT EL;Ll;0;L;;;;;N;;;A664;;A664 -A666;CYRILLIC CAPITAL LETTER SOFT EM;Lu;0;L;;;;;N;;;;A667; -A667;CYRILLIC SMALL LETTER SOFT EM;Ll;0;L;;;;;N;;;A666;;A666 -A668;CYRILLIC CAPITAL LETTER MONOCULAR O;Lu;0;L;;;;;N;;;;A669; -A669;CYRILLIC SMALL LETTER MONOCULAR O;Ll;0;L;;;;;N;;;A668;;A668 -A66A;CYRILLIC CAPITAL LETTER BINOCULAR O;Lu;0;L;;;;;N;;;;A66B; -A66B;CYRILLIC SMALL LETTER BINOCULAR O;Ll;0;L;;;;;N;;;A66A;;A66A -A66C;CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O;Lu;0;L;;;;;N;;;;A66D; -A66D;CYRILLIC SMALL LETTER DOUBLE MONOCULAR O;Ll;0;L;;;;;N;;;A66C;;A66C -A66E;CYRILLIC LETTER MULTIOCULAR O;Lo;0;L;;;;;N;;;;; -A66F;COMBINING CYRILLIC VZMET;Mn;230;NSM;;;;;N;;;;; -A670;COMBINING CYRILLIC TEN MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; -A671;COMBINING CYRILLIC HUNDRED MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; -A672;COMBINING CYRILLIC THOUSAND MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; -A673;SLAVONIC ASTERISK;Po;0;ON;;;;;N;;;;; -A67C;COMBINING CYRILLIC KAVYKA;Mn;230;NSM;;;;;N;;;;; -A67D;COMBINING CYRILLIC PAYEROK;Mn;230;NSM;;;;;N;;;;; -A67E;CYRILLIC KAVYKA;Po;0;ON;;;;;N;;;;; -A67F;CYRILLIC PAYEROK;Lm;0;ON;;;;;N;;;;; -A680;CYRILLIC CAPITAL LETTER DWE;Lu;0;L;;;;;N;;;;A681; -A681;CYRILLIC SMALL LETTER DWE;Ll;0;L;;;;;N;;;A680;;A680 -A682;CYRILLIC CAPITAL LETTER DZWE;Lu;0;L;;;;;N;;;;A683; -A683;CYRILLIC SMALL LETTER DZWE;Ll;0;L;;;;;N;;;A682;;A682 -A684;CYRILLIC CAPITAL LETTER ZHWE;Lu;0;L;;;;;N;;;;A685; -A685;CYRILLIC SMALL LETTER ZHWE;Ll;0;L;;;;;N;;;A684;;A684 -A686;CYRILLIC CAPITAL LETTER CCHE;Lu;0;L;;;;;N;;;;A687; -A687;CYRILLIC SMALL LETTER CCHE;Ll;0;L;;;;;N;;;A686;;A686 -A688;CYRILLIC CAPITAL LETTER DZZE;Lu;0;L;;;;;N;;;;A689; -A689;CYRILLIC SMALL LETTER DZZE;Ll;0;L;;;;;N;;;A688;;A688 -A68A;CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;A68B; -A68B;CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;A68A;;A68A -A68C;CYRILLIC CAPITAL LETTER TWE;Lu;0;L;;;;;N;;;;A68D; -A68D;CYRILLIC SMALL LETTER TWE;Ll;0;L;;;;;N;;;A68C;;A68C -A68E;CYRILLIC CAPITAL LETTER TSWE;Lu;0;L;;;;;N;;;;A68F; -A68F;CYRILLIC SMALL LETTER TSWE;Ll;0;L;;;;;N;;;A68E;;A68E -A690;CYRILLIC CAPITAL LETTER TSSE;Lu;0;L;;;;;N;;;;A691; -A691;CYRILLIC SMALL LETTER TSSE;Ll;0;L;;;;;N;;;A690;;A690 -A692;CYRILLIC CAPITAL LETTER TCHE;Lu;0;L;;;;;N;;;;A693; -A693;CYRILLIC SMALL LETTER TCHE;Ll;0;L;;;;;N;;;A692;;A692 -A694;CYRILLIC CAPITAL LETTER HWE;Lu;0;L;;;;;N;;;;A695; -A695;CYRILLIC SMALL LETTER HWE;Ll;0;L;;;;;N;;;A694;;A694 -A696;CYRILLIC CAPITAL LETTER SHWE;Lu;0;L;;;;;N;;;;A697; -A697;CYRILLIC SMALL LETTER SHWE;Ll;0;L;;;;;N;;;A696;;A696 -A700;MODIFIER LETTER CHINESE TONE YIN PING;Sk;0;ON;;;;;N;;;;; -A701;MODIFIER LETTER CHINESE TONE YANG PING;Sk;0;ON;;;;;N;;;;; -A702;MODIFIER LETTER CHINESE TONE YIN SHANG;Sk;0;ON;;;;;N;;;;; -A703;MODIFIER LETTER CHINESE TONE YANG SHANG;Sk;0;ON;;;;;N;;;;; -A704;MODIFIER LETTER CHINESE TONE YIN QU;Sk;0;ON;;;;;N;;;;; -A705;MODIFIER LETTER CHINESE TONE YANG QU;Sk;0;ON;;;;;N;;;;; -A706;MODIFIER LETTER CHINESE TONE YIN RU;Sk;0;ON;;;;;N;;;;; -A707;MODIFIER LETTER CHINESE TONE YANG RU;Sk;0;ON;;;;;N;;;;; -A708;MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; -A709;MODIFIER LETTER HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; -A70A;MODIFIER LETTER MID DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; -A70B;MODIFIER LETTER LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; -A70C;MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; -A70D;MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A70E;MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A70F;MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A710;MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A711;MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A712;MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A713;MODIFIER LETTER HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A714;MODIFIER LETTER MID LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A715;MODIFIER LETTER LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A716;MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A717;MODIFIER LETTER DOT VERTICAL BAR;Lm;0;ON;;;;;N;;;;; -A718;MODIFIER LETTER DOT SLASH;Lm;0;ON;;;;;N;;;;; -A719;MODIFIER LETTER DOT HORIZONTAL BAR;Lm;0;ON;;;;;N;;;;; -A71A;MODIFIER LETTER LOWER RIGHT CORNER ANGLE;Lm;0;ON;;;;;N;;;;; -A71B;MODIFIER LETTER RAISED UP ARROW;Lm;0;ON;;;;;N;;;;; -A71C;MODIFIER LETTER RAISED DOWN ARROW;Lm;0;ON;;;;;N;;;;; -A71D;MODIFIER LETTER RAISED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;; -A71E;MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;; -A71F;MODIFIER LETTER LOW INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;; -A720;MODIFIER LETTER STRESS AND HIGH TONE;Sk;0;ON;;;;;N;;;;; -A721;MODIFIER LETTER STRESS AND LOW TONE;Sk;0;ON;;;;;N;;;;; -A722;LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF;Lu;0;L;;;;;N;;;;A723; -A723;LATIN SMALL LETTER EGYPTOLOGICAL ALEF;Ll;0;L;;;;;N;;;A722;;A722 -A724;LATIN CAPITAL LETTER EGYPTOLOGICAL AIN;Lu;0;L;;;;;N;;;;A725; -A725;LATIN SMALL LETTER EGYPTOLOGICAL AIN;Ll;0;L;;;;;N;;;A724;;A724 -A726;LATIN CAPITAL LETTER HENG;Lu;0;L;;;;;N;;;;A727; -A727;LATIN SMALL LETTER HENG;Ll;0;L;;;;;N;;;A726;;A726 -A728;LATIN CAPITAL LETTER TZ;Lu;0;L;;;;;N;;;;A729; -A729;LATIN SMALL LETTER TZ;Ll;0;L;;;;;N;;;A728;;A728 -A72A;LATIN CAPITAL LETTER TRESILLO;Lu;0;L;;;;;N;;;;A72B; -A72B;LATIN SMALL LETTER TRESILLO;Ll;0;L;;;;;N;;;A72A;;A72A -A72C;LATIN CAPITAL LETTER CUATRILLO;Lu;0;L;;;;;N;;;;A72D; -A72D;LATIN SMALL LETTER CUATRILLO;Ll;0;L;;;;;N;;;A72C;;A72C -A72E;LATIN CAPITAL LETTER CUATRILLO WITH COMMA;Lu;0;L;;;;;N;;;;A72F; -A72F;LATIN SMALL LETTER CUATRILLO WITH COMMA;Ll;0;L;;;;;N;;;A72E;;A72E -A730;LATIN LETTER SMALL CAPITAL F;Ll;0;L;;;;;N;;;;; -A731;LATIN LETTER SMALL CAPITAL S;Ll;0;L;;;;;N;;;;; -A732;LATIN CAPITAL LETTER AA;Lu;0;L;;;;;N;;;;A733; -A733;LATIN SMALL LETTER AA;Ll;0;L;;;;;N;;;A732;;A732 -A734;LATIN CAPITAL LETTER AO;Lu;0;L;;;;;N;;;;A735; -A735;LATIN SMALL LETTER AO;Ll;0;L;;;;;N;;;A734;;A734 -A736;LATIN CAPITAL LETTER AU;Lu;0;L;;;;;N;;;;A737; -A737;LATIN SMALL LETTER AU;Ll;0;L;;;;;N;;;A736;;A736 -A738;LATIN CAPITAL LETTER AV;Lu;0;L;;;;;N;;;;A739; -A739;LATIN SMALL LETTER AV;Ll;0;L;;;;;N;;;A738;;A738 -A73A;LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR;Lu;0;L;;;;;N;;;;A73B; -A73B;LATIN SMALL LETTER AV WITH HORIZONTAL BAR;Ll;0;L;;;;;N;;;A73A;;A73A -A73C;LATIN CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;A73D; -A73D;LATIN SMALL LETTER AY;Ll;0;L;;;;;N;;;A73C;;A73C -A73E;LATIN CAPITAL LETTER REVERSED C WITH DOT;Lu;0;L;;;;;N;;;;A73F; -A73F;LATIN SMALL LETTER REVERSED C WITH DOT;Ll;0;L;;;;;N;;;A73E;;A73E -A740;LATIN CAPITAL LETTER K WITH STROKE;Lu;0;L;;;;;N;;;;A741; -A741;LATIN SMALL LETTER K WITH STROKE;Ll;0;L;;;;;N;;;A740;;A740 -A742;LATIN CAPITAL LETTER K WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A743; -A743;LATIN SMALL LETTER K WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A742;;A742 -A744;LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A745; -A745;LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE;Ll;0;L;;;;;N;;;A744;;A744 -A746;LATIN CAPITAL LETTER BROKEN L;Lu;0;L;;;;;N;;;;A747; -A747;LATIN SMALL LETTER BROKEN L;Ll;0;L;;;;;N;;;A746;;A746 -A748;LATIN CAPITAL LETTER L WITH HIGH STROKE;Lu;0;L;;;;;N;;;;A749; -A749;LATIN SMALL LETTER L WITH HIGH STROKE;Ll;0;L;;;;;N;;;A748;;A748 -A74A;LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY;Lu;0;L;;;;;N;;;;A74B; -A74B;LATIN SMALL LETTER O WITH LONG STROKE OVERLAY;Ll;0;L;;;;;N;;;A74A;;A74A -A74C;LATIN CAPITAL LETTER O WITH LOOP;Lu;0;L;;;;;N;;;;A74D; -A74D;LATIN SMALL LETTER O WITH LOOP;Ll;0;L;;;;;N;;;A74C;;A74C -A74E;LATIN CAPITAL LETTER OO;Lu;0;L;;;;;N;;;;A74F; -A74F;LATIN SMALL LETTER OO;Ll;0;L;;;;;N;;;A74E;;A74E -A750;LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A751; -A751;LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A750;;A750 -A752;LATIN CAPITAL LETTER P WITH FLOURISH;Lu;0;L;;;;;N;;;;A753; -A753;LATIN SMALL LETTER P WITH FLOURISH;Ll;0;L;;;;;N;;;A752;;A752 -A754;LATIN CAPITAL LETTER P WITH SQUIRREL TAIL;Lu;0;L;;;;;N;;;;A755; -A755;LATIN SMALL LETTER P WITH SQUIRREL TAIL;Ll;0;L;;;;;N;;;A754;;A754 -A756;LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A757; -A757;LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A756;;A756 -A758;LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A759; -A759;LATIN SMALL LETTER Q WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A758;;A758 -A75A;LATIN CAPITAL LETTER R ROTUNDA;Lu;0;L;;;;;N;;;;A75B; -A75B;LATIN SMALL LETTER R ROTUNDA;Ll;0;L;;;;;N;;;A75A;;A75A -A75C;LATIN CAPITAL LETTER RUM ROTUNDA;Lu;0;L;;;;;N;;;;A75D; -A75D;LATIN SMALL LETTER RUM ROTUNDA;Ll;0;L;;;;;N;;;A75C;;A75C -A75E;LATIN CAPITAL LETTER V WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A75F; -A75F;LATIN SMALL LETTER V WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A75E;;A75E -A760;LATIN CAPITAL LETTER VY;Lu;0;L;;;;;N;;;;A761; -A761;LATIN SMALL LETTER VY;Ll;0;L;;;;;N;;;A760;;A760 -A762;LATIN CAPITAL LETTER VISIGOTHIC Z;Lu;0;L;;;;;N;;;;A763; -A763;LATIN SMALL LETTER VISIGOTHIC Z;Ll;0;L;;;;;N;;;A762;;A762 -A764;LATIN CAPITAL LETTER THORN WITH STROKE;Lu;0;L;;;;;N;;;;A765; -A765;LATIN SMALL LETTER THORN WITH STROKE;Ll;0;L;;;;;N;;;A764;;A764 -A766;LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A767; -A767;LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A766;;A766 -A768;LATIN CAPITAL LETTER VEND;Lu;0;L;;;;;N;;;;A769; -A769;LATIN SMALL LETTER VEND;Ll;0;L;;;;;N;;;A768;;A768 -A76A;LATIN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;A76B; -A76B;LATIN SMALL LETTER ET;Ll;0;L;;;;;N;;;A76A;;A76A -A76C;LATIN CAPITAL LETTER IS;Lu;0;L;;;;;N;;;;A76D; -A76D;LATIN SMALL LETTER IS;Ll;0;L;;;;;N;;;A76C;;A76C -A76E;LATIN CAPITAL LETTER CON;Lu;0;L;;;;;N;;;;A76F; -A76F;LATIN SMALL LETTER CON;Ll;0;L;;;;;N;;;A76E;;A76E -A770;MODIFIER LETTER US;Lm;0;L; A76F;;;;N;;;;; -A771;LATIN SMALL LETTER DUM;Ll;0;L;;;;;N;;;;; -A772;LATIN SMALL LETTER LUM;Ll;0;L;;;;;N;;;;; -A773;LATIN SMALL LETTER MUM;Ll;0;L;;;;;N;;;;; -A774;LATIN SMALL LETTER NUM;Ll;0;L;;;;;N;;;;; -A775;LATIN SMALL LETTER RUM;Ll;0;L;;;;;N;;;;; -A776;LATIN LETTER SMALL CAPITAL RUM;Ll;0;L;;;;;N;;;;; -A777;LATIN SMALL LETTER TUM;Ll;0;L;;;;;N;;;;; -A778;LATIN SMALL LETTER UM;Ll;0;L;;;;;N;;;;; -A779;LATIN CAPITAL LETTER INSULAR D;Lu;0;L;;;;;N;;;;A77A; -A77A;LATIN SMALL LETTER INSULAR D;Ll;0;L;;;;;N;;;A779;;A779 -A77B;LATIN CAPITAL LETTER INSULAR F;Lu;0;L;;;;;N;;;;A77C; -A77C;LATIN SMALL LETTER INSULAR F;Ll;0;L;;;;;N;;;A77B;;A77B -A77D;LATIN CAPITAL LETTER INSULAR G;Lu;0;L;;;;;N;;;;1D79; -A77E;LATIN CAPITAL LETTER TURNED INSULAR G;Lu;0;L;;;;;N;;;;A77F; -A77F;LATIN SMALL LETTER TURNED INSULAR G;Ll;0;L;;;;;N;;;A77E;;A77E -A780;LATIN CAPITAL LETTER TURNED L;Lu;0;L;;;;;N;;;;A781; -A781;LATIN SMALL LETTER TURNED L;Ll;0;L;;;;;N;;;A780;;A780 -A782;LATIN CAPITAL LETTER INSULAR R;Lu;0;L;;;;;N;;;;A783; -A783;LATIN SMALL LETTER INSULAR R;Ll;0;L;;;;;N;;;A782;;A782 -A784;LATIN CAPITAL LETTER INSULAR S;Lu;0;L;;;;;N;;;;A785; -A785;LATIN SMALL LETTER INSULAR S;Ll;0;L;;;;;N;;;A784;;A784 -A786;LATIN CAPITAL LETTER INSULAR T;Lu;0;L;;;;;N;;;;A787; -A787;LATIN SMALL LETTER INSULAR T;Ll;0;L;;;;;N;;;A786;;A786 -A788;MODIFIER LETTER LOW CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;;;;; -A789;MODIFIER LETTER COLON;Sk;0;L;;;;;N;;;;; -A78A;MODIFIER LETTER SHORT EQUALS SIGN;Sk;0;L;;;;;N;;;;; -A78B;LATIN CAPITAL LETTER SALTILLO;Lu;0;L;;;;;N;;;;A78C; -A78C;LATIN SMALL LETTER SALTILLO;Ll;0;L;;;;;N;;;A78B;;A78B -A7FB;LATIN EPIGRAPHIC LETTER REVERSED F;Lo;0;L;;;;;N;;;;; -A7FC;LATIN EPIGRAPHIC LETTER REVERSED P;Lo;0;L;;;;;N;;;;; -A7FD;LATIN EPIGRAPHIC LETTER INVERTED M;Lo;0;L;;;;;N;;;;; -A7FE;LATIN EPIGRAPHIC LETTER I LONGA;Lo;0;L;;;;;N;;;;; -A7FF;LATIN EPIGRAPHIC LETTER ARCHAIC M;Lo;0;L;;;;;N;;;;; -A800;SYLOTI NAGRI LETTER A;Lo;0;L;;;;;N;;;;; -A801;SYLOTI NAGRI LETTER I;Lo;0;L;;;;;N;;;;; -A802;SYLOTI NAGRI SIGN DVISVARA;Mn;0;NSM;;;;;N;;;;; -A803;SYLOTI NAGRI LETTER U;Lo;0;L;;;;;N;;;;; -A804;SYLOTI NAGRI LETTER E;Lo;0;L;;;;;N;;;;; -A805;SYLOTI NAGRI LETTER O;Lo;0;L;;;;;N;;;;; -A806;SYLOTI NAGRI SIGN HASANTA;Mn;9;NSM;;;;;N;;;;; -A807;SYLOTI NAGRI LETTER KO;Lo;0;L;;;;;N;;;;; -A808;SYLOTI NAGRI LETTER KHO;Lo;0;L;;;;;N;;;;; -A809;SYLOTI NAGRI LETTER GO;Lo;0;L;;;;;N;;;;; -A80A;SYLOTI NAGRI LETTER GHO;Lo;0;L;;;;;N;;;;; -A80B;SYLOTI NAGRI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -A80C;SYLOTI NAGRI LETTER CO;Lo;0;L;;;;;N;;;;; -A80D;SYLOTI NAGRI LETTER CHO;Lo;0;L;;;;;N;;;;; -A80E;SYLOTI NAGRI LETTER JO;Lo;0;L;;;;;N;;;;; -A80F;SYLOTI NAGRI LETTER JHO;Lo;0;L;;;;;N;;;;; -A810;SYLOTI NAGRI LETTER TTO;Lo;0;L;;;;;N;;;;; -A811;SYLOTI NAGRI LETTER TTHO;Lo;0;L;;;;;N;;;;; -A812;SYLOTI NAGRI LETTER DDO;Lo;0;L;;;;;N;;;;; -A813;SYLOTI NAGRI LETTER DDHO;Lo;0;L;;;;;N;;;;; -A814;SYLOTI NAGRI LETTER TO;Lo;0;L;;;;;N;;;;; -A815;SYLOTI NAGRI LETTER THO;Lo;0;L;;;;;N;;;;; -A816;SYLOTI NAGRI LETTER DO;Lo;0;L;;;;;N;;;;; -A817;SYLOTI NAGRI LETTER DHO;Lo;0;L;;;;;N;;;;; -A818;SYLOTI NAGRI LETTER NO;Lo;0;L;;;;;N;;;;; -A819;SYLOTI NAGRI LETTER PO;Lo;0;L;;;;;N;;;;; -A81A;SYLOTI NAGRI LETTER PHO;Lo;0;L;;;;;N;;;;; -A81B;SYLOTI NAGRI LETTER BO;Lo;0;L;;;;;N;;;;; -A81C;SYLOTI NAGRI LETTER BHO;Lo;0;L;;;;;N;;;;; -A81D;SYLOTI NAGRI LETTER MO;Lo;0;L;;;;;N;;;;; -A81E;SYLOTI NAGRI LETTER RO;Lo;0;L;;;;;N;;;;; -A81F;SYLOTI NAGRI LETTER LO;Lo;0;L;;;;;N;;;;; -A820;SYLOTI NAGRI LETTER RRO;Lo;0;L;;;;;N;;;;; -A821;SYLOTI NAGRI LETTER SO;Lo;0;L;;;;;N;;;;; -A822;SYLOTI NAGRI LETTER HO;Lo;0;L;;;;;N;;;;; -A823;SYLOTI NAGRI VOWEL SIGN A;Mc;0;L;;;;;N;;;;; -A824;SYLOTI NAGRI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -A825;SYLOTI NAGRI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -A826;SYLOTI NAGRI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -A827;SYLOTI NAGRI VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; -A828;SYLOTI NAGRI POETRY MARK-1;So;0;ON;;;;;N;;;;; -A829;SYLOTI NAGRI POETRY MARK-2;So;0;ON;;;;;N;;;;; -A82A;SYLOTI NAGRI POETRY MARK-3;So;0;ON;;;;;N;;;;; -A82B;SYLOTI NAGRI POETRY MARK-4;So;0;ON;;;;;N;;;;; -A840;PHAGS-PA LETTER KA;Lo;0;L;;;;;N;;;;; -A841;PHAGS-PA LETTER KHA;Lo;0;L;;;;;N;;;;; -A842;PHAGS-PA LETTER GA;Lo;0;L;;;;;N;;;;; -A843;PHAGS-PA LETTER NGA;Lo;0;L;;;;;N;;;;; -A844;PHAGS-PA LETTER CA;Lo;0;L;;;;;N;;;;; -A845;PHAGS-PA LETTER CHA;Lo;0;L;;;;;N;;;;; -A846;PHAGS-PA LETTER JA;Lo;0;L;;;;;N;;;;; -A847;PHAGS-PA LETTER NYA;Lo;0;L;;;;;N;;;;; -A848;PHAGS-PA LETTER TA;Lo;0;L;;;;;N;;;;; -A849;PHAGS-PA LETTER THA;Lo;0;L;;;;;N;;;;; -A84A;PHAGS-PA LETTER DA;Lo;0;L;;;;;N;;;;; -A84B;PHAGS-PA LETTER NA;Lo;0;L;;;;;N;;;;; -A84C;PHAGS-PA LETTER PA;Lo;0;L;;;;;N;;;;; -A84D;PHAGS-PA LETTER PHA;Lo;0;L;;;;;N;;;;; -A84E;PHAGS-PA LETTER BA;Lo;0;L;;;;;N;;;;; -A84F;PHAGS-PA LETTER MA;Lo;0;L;;;;;N;;;;; -A850;PHAGS-PA LETTER TSA;Lo;0;L;;;;;N;;;;; -A851;PHAGS-PA LETTER TSHA;Lo;0;L;;;;;N;;;;; -A852;PHAGS-PA LETTER DZA;Lo;0;L;;;;;N;;;;; -A853;PHAGS-PA LETTER WA;Lo;0;L;;;;;N;;;;; -A854;PHAGS-PA LETTER ZHA;Lo;0;L;;;;;N;;;;; -A855;PHAGS-PA LETTER ZA;Lo;0;L;;;;;N;;;;; -A856;PHAGS-PA LETTER SMALL A;Lo;0;L;;;;;N;;;;; -A857;PHAGS-PA LETTER YA;Lo;0;L;;;;;N;;;;; -A858;PHAGS-PA LETTER RA;Lo;0;L;;;;;N;;;;; -A859;PHAGS-PA LETTER LA;Lo;0;L;;;;;N;;;;; -A85A;PHAGS-PA LETTER SHA;Lo;0;L;;;;;N;;;;; -A85B;PHAGS-PA LETTER SA;Lo;0;L;;;;;N;;;;; -A85C;PHAGS-PA LETTER HA;Lo;0;L;;;;;N;;;;; -A85D;PHAGS-PA LETTER A;Lo;0;L;;;;;N;;;;; -A85E;PHAGS-PA LETTER I;Lo;0;L;;;;;N;;;;; -A85F;PHAGS-PA LETTER U;Lo;0;L;;;;;N;;;;; -A860;PHAGS-PA LETTER E;Lo;0;L;;;;;N;;;;; -A861;PHAGS-PA LETTER O;Lo;0;L;;;;;N;;;;; -A862;PHAGS-PA LETTER QA;Lo;0;L;;;;;N;;;;; -A863;PHAGS-PA LETTER XA;Lo;0;L;;;;;N;;;;; -A864;PHAGS-PA LETTER FA;Lo;0;L;;;;;N;;;;; -A865;PHAGS-PA LETTER GGA;Lo;0;L;;;;;N;;;;; -A866;PHAGS-PA LETTER EE;Lo;0;L;;;;;N;;;;; -A867;PHAGS-PA SUBJOINED LETTER WA;Lo;0;L;;;;;N;;;;; -A868;PHAGS-PA SUBJOINED LETTER YA;Lo;0;L;;;;;N;;;;; -A869;PHAGS-PA LETTER TTA;Lo;0;L;;;;;N;;;;; -A86A;PHAGS-PA LETTER TTHA;Lo;0;L;;;;;N;;;;; -A86B;PHAGS-PA LETTER DDA;Lo;0;L;;;;;N;;;;; -A86C;PHAGS-PA LETTER NNA;Lo;0;L;;;;;N;;;;; -A86D;PHAGS-PA LETTER ALTERNATE YA;Lo;0;L;;;;;N;;;;; -A86E;PHAGS-PA LETTER VOICELESS SHA;Lo;0;L;;;;;N;;;;; -A86F;PHAGS-PA LETTER VOICED HA;Lo;0;L;;;;;N;;;;; -A870;PHAGS-PA LETTER ASPIRATED FA;Lo;0;L;;;;;N;;;;; -A871;PHAGS-PA SUBJOINED LETTER RA;Lo;0;L;;;;;N;;;;; -A872;PHAGS-PA SUPERFIXED LETTER RA;Lo;0;L;;;;;N;;;;; -A873;PHAGS-PA LETTER CANDRABINDU;Lo;0;L;;;;;N;;;;; -A874;PHAGS-PA SINGLE HEAD MARK;Po;0;ON;;;;;N;;;;; -A875;PHAGS-PA DOUBLE HEAD MARK;Po;0;ON;;;;;N;;;;; -A876;PHAGS-PA MARK SHAD;Po;0;ON;;;;;N;;;;; -A877;PHAGS-PA MARK DOUBLE SHAD;Po;0;ON;;;;;N;;;;; -A880;SAURASHTRA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; -A881;SAURASHTRA SIGN VISARGA;Mc;0;L;;;;;N;;;;; -A882;SAURASHTRA LETTER A;Lo;0;L;;;;;N;;;;; -A883;SAURASHTRA LETTER AA;Lo;0;L;;;;;N;;;;; -A884;SAURASHTRA LETTER I;Lo;0;L;;;;;N;;;;; -A885;SAURASHTRA LETTER II;Lo;0;L;;;;;N;;;;; -A886;SAURASHTRA LETTER U;Lo;0;L;;;;;N;;;;; -A887;SAURASHTRA LETTER UU;Lo;0;L;;;;;N;;;;; -A888;SAURASHTRA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -A889;SAURASHTRA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -A88A;SAURASHTRA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -A88B;SAURASHTRA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -A88C;SAURASHTRA LETTER E;Lo;0;L;;;;;N;;;;; -A88D;SAURASHTRA LETTER EE;Lo;0;L;;;;;N;;;;; -A88E;SAURASHTRA LETTER AI;Lo;0;L;;;;;N;;;;; -A88F;SAURASHTRA LETTER O;Lo;0;L;;;;;N;;;;; -A890;SAURASHTRA LETTER OO;Lo;0;L;;;;;N;;;;; -A891;SAURASHTRA LETTER AU;Lo;0;L;;;;;N;;;;; -A892;SAURASHTRA LETTER KA;Lo;0;L;;;;;N;;;;; -A893;SAURASHTRA LETTER KHA;Lo;0;L;;;;;N;;;;; -A894;SAURASHTRA LETTER GA;Lo;0;L;;;;;N;;;;; -A895;SAURASHTRA LETTER GHA;Lo;0;L;;;;;N;;;;; -A896;SAURASHTRA LETTER NGA;Lo;0;L;;;;;N;;;;; -A897;SAURASHTRA LETTER CA;Lo;0;L;;;;;N;;;;; -A898;SAURASHTRA LETTER CHA;Lo;0;L;;;;;N;;;;; -A899;SAURASHTRA LETTER JA;Lo;0;L;;;;;N;;;;; -A89A;SAURASHTRA LETTER JHA;Lo;0;L;;;;;N;;;;; -A89B;SAURASHTRA LETTER NYA;Lo;0;L;;;;;N;;;;; -A89C;SAURASHTRA LETTER TTA;Lo;0;L;;;;;N;;;;; -A89D;SAURASHTRA LETTER TTHA;Lo;0;L;;;;;N;;;;; -A89E;SAURASHTRA LETTER DDA;Lo;0;L;;;;;N;;;;; -A89F;SAURASHTRA LETTER DDHA;Lo;0;L;;;;;N;;;;; -A8A0;SAURASHTRA LETTER NNA;Lo;0;L;;;;;N;;;;; -A8A1;SAURASHTRA LETTER TA;Lo;0;L;;;;;N;;;;; -A8A2;SAURASHTRA LETTER THA;Lo;0;L;;;;;N;;;;; -A8A3;SAURASHTRA LETTER DA;Lo;0;L;;;;;N;;;;; -A8A4;SAURASHTRA LETTER DHA;Lo;0;L;;;;;N;;;;; -A8A5;SAURASHTRA LETTER NA;Lo;0;L;;;;;N;;;;; -A8A6;SAURASHTRA LETTER PA;Lo;0;L;;;;;N;;;;; -A8A7;SAURASHTRA LETTER PHA;Lo;0;L;;;;;N;;;;; -A8A8;SAURASHTRA LETTER BA;Lo;0;L;;;;;N;;;;; -A8A9;SAURASHTRA LETTER BHA;Lo;0;L;;;;;N;;;;; -A8AA;SAURASHTRA LETTER MA;Lo;0;L;;;;;N;;;;; -A8AB;SAURASHTRA LETTER YA;Lo;0;L;;;;;N;;;;; -A8AC;SAURASHTRA LETTER RA;Lo;0;L;;;;;N;;;;; -A8AD;SAURASHTRA LETTER LA;Lo;0;L;;;;;N;;;;; -A8AE;SAURASHTRA LETTER VA;Lo;0;L;;;;;N;;;;; -A8AF;SAURASHTRA LETTER SHA;Lo;0;L;;;;;N;;;;; -A8B0;SAURASHTRA LETTER SSA;Lo;0;L;;;;;N;;;;; -A8B1;SAURASHTRA LETTER SA;Lo;0;L;;;;;N;;;;; -A8B2;SAURASHTRA LETTER HA;Lo;0;L;;;;;N;;;;; -A8B3;SAURASHTRA LETTER LLA;Lo;0;L;;;;;N;;;;; -A8B4;SAURASHTRA CONSONANT SIGN HAARU;Mc;0;L;;;;;N;;;;; -A8B5;SAURASHTRA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -A8B6;SAURASHTRA VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -A8B7;SAURASHTRA VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -A8B8;SAURASHTRA VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -A8B9;SAURASHTRA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -A8BA;SAURASHTRA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; -A8BB;SAURASHTRA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; -A8BC;SAURASHTRA VOWEL SIGN VOCALIC L;Mc;0;L;;;;;N;;;;; -A8BD;SAURASHTRA VOWEL SIGN VOCALIC LL;Mc;0;L;;;;;N;;;;; -A8BE;SAURASHTRA VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -A8BF;SAURASHTRA VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; -A8C0;SAURASHTRA VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -A8C1;SAURASHTRA VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -A8C2;SAURASHTRA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; -A8C3;SAURASHTRA VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; -A8C4;SAURASHTRA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -A8CE;SAURASHTRA DANDA;Po;0;L;;;;;N;;;;; -A8CF;SAURASHTRA DOUBLE DANDA;Po;0;L;;;;;N;;;;; -A8D0;SAURASHTRA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -A8D1;SAURASHTRA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -A8D2;SAURASHTRA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -A8D3;SAURASHTRA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -A8D4;SAURASHTRA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -A8D5;SAURASHTRA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -A8D6;SAURASHTRA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -A8D7;SAURASHTRA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -A8D8;SAURASHTRA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -A8D9;SAURASHTRA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -A900;KAYAH LI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -A901;KAYAH LI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -A902;KAYAH LI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -A903;KAYAH LI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -A904;KAYAH LI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -A905;KAYAH LI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -A906;KAYAH LI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -A907;KAYAH LI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -A908;KAYAH LI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -A909;KAYAH LI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -A90A;KAYAH LI LETTER KA;Lo;0;L;;;;;N;;;;; -A90B;KAYAH LI LETTER KHA;Lo;0;L;;;;;N;;;;; -A90C;KAYAH LI LETTER GA;Lo;0;L;;;;;N;;;;; -A90D;KAYAH LI LETTER NGA;Lo;0;L;;;;;N;;;;; -A90E;KAYAH LI LETTER SA;Lo;0;L;;;;;N;;;;; -A90F;KAYAH LI LETTER SHA;Lo;0;L;;;;;N;;;;; -A910;KAYAH LI LETTER ZA;Lo;0;L;;;;;N;;;;; -A911;KAYAH LI LETTER NYA;Lo;0;L;;;;;N;;;;; -A912;KAYAH LI LETTER TA;Lo;0;L;;;;;N;;;;; -A913;KAYAH LI LETTER HTA;Lo;0;L;;;;;N;;;;; -A914;KAYAH LI LETTER NA;Lo;0;L;;;;;N;;;;; -A915;KAYAH LI LETTER PA;Lo;0;L;;;;;N;;;;; -A916;KAYAH LI LETTER PHA;Lo;0;L;;;;;N;;;;; -A917;KAYAH LI LETTER MA;Lo;0;L;;;;;N;;;;; -A918;KAYAH LI LETTER DA;Lo;0;L;;;;;N;;;;; -A919;KAYAH LI LETTER BA;Lo;0;L;;;;;N;;;;; -A91A;KAYAH LI LETTER RA;Lo;0;L;;;;;N;;;;; -A91B;KAYAH LI LETTER YA;Lo;0;L;;;;;N;;;;; -A91C;KAYAH LI LETTER LA;Lo;0;L;;;;;N;;;;; -A91D;KAYAH LI LETTER WA;Lo;0;L;;;;;N;;;;; -A91E;KAYAH LI LETTER THA;Lo;0;L;;;;;N;;;;; -A91F;KAYAH LI LETTER HA;Lo;0;L;;;;;N;;;;; -A920;KAYAH LI LETTER VA;Lo;0;L;;;;;N;;;;; -A921;KAYAH LI LETTER CA;Lo;0;L;;;;;N;;;;; -A922;KAYAH LI LETTER A;Lo;0;L;;;;;N;;;;; -A923;KAYAH LI LETTER OE;Lo;0;L;;;;;N;;;;; -A924;KAYAH LI LETTER I;Lo;0;L;;;;;N;;;;; -A925;KAYAH LI LETTER OO;Lo;0;L;;;;;N;;;;; -A926;KAYAH LI VOWEL UE;Mn;0;NSM;;;;;N;;;;; -A927;KAYAH LI VOWEL E;Mn;0;NSM;;;;;N;;;;; -A928;KAYAH LI VOWEL U;Mn;0;NSM;;;;;N;;;;; -A929;KAYAH LI VOWEL EE;Mn;0;NSM;;;;;N;;;;; -A92A;KAYAH LI VOWEL O;Mn;0;NSM;;;;;N;;;;; -A92B;KAYAH LI TONE PLOPHU;Mn;220;NSM;;;;;N;;;;; -A92C;KAYAH LI TONE CALYA;Mn;220;NSM;;;;;N;;;;; -A92D;KAYAH LI TONE CALYA PLOPHU;Mn;220;NSM;;;;;N;;;;; -A92E;KAYAH LI SIGN CWI;Po;0;L;;;;;N;;;;; -A92F;KAYAH LI SIGN SHYA;Po;0;L;;;;;N;;;;; -A930;REJANG LETTER KA;Lo;0;L;;;;;N;;;;; -A931;REJANG LETTER GA;Lo;0;L;;;;;N;;;;; -A932;REJANG LETTER NGA;Lo;0;L;;;;;N;;;;; -A933;REJANG LETTER TA;Lo;0;L;;;;;N;;;;; -A934;REJANG LETTER DA;Lo;0;L;;;;;N;;;;; -A935;REJANG LETTER NA;Lo;0;L;;;;;N;;;;; -A936;REJANG LETTER PA;Lo;0;L;;;;;N;;;;; -A937;REJANG LETTER BA;Lo;0;L;;;;;N;;;;; -A938;REJANG LETTER MA;Lo;0;L;;;;;N;;;;; -A939;REJANG LETTER CA;Lo;0;L;;;;;N;;;;; -A93A;REJANG LETTER JA;Lo;0;L;;;;;N;;;;; -A93B;REJANG LETTER NYA;Lo;0;L;;;;;N;;;;; -A93C;REJANG LETTER SA;Lo;0;L;;;;;N;;;;; -A93D;REJANG LETTER RA;Lo;0;L;;;;;N;;;;; -A93E;REJANG LETTER LA;Lo;0;L;;;;;N;;;;; -A93F;REJANG LETTER YA;Lo;0;L;;;;;N;;;;; -A940;REJANG LETTER WA;Lo;0;L;;;;;N;;;;; -A941;REJANG LETTER HA;Lo;0;L;;;;;N;;;;; -A942;REJANG LETTER MBA;Lo;0;L;;;;;N;;;;; -A943;REJANG LETTER NGGA;Lo;0;L;;;;;N;;;;; -A944;REJANG LETTER NDA;Lo;0;L;;;;;N;;;;; -A945;REJANG LETTER NYJA;Lo;0;L;;;;;N;;;;; -A946;REJANG LETTER A;Lo;0;L;;;;;N;;;;; -A947;REJANG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -A948;REJANG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -A949;REJANG VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -A94A;REJANG VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; -A94B;REJANG VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; -A94C;REJANG VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; -A94D;REJANG VOWEL SIGN EU;Mn;0;NSM;;;;;N;;;;; -A94E;REJANG VOWEL SIGN EA;Mn;0;NSM;;;;;N;;;;; -A94F;REJANG CONSONANT SIGN NG;Mn;0;NSM;;;;;N;;;;; -A950;REJANG CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;; -A951;REJANG CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;; -A952;REJANG CONSONANT SIGN H;Mc;0;L;;;;;N;;;;; -A953;REJANG VIRAMA;Mc;9;L;;;;;N;;;;; -A95F;REJANG SECTION MARK;Po;0;L;;;;;N;;;;; -AA00;CHAM LETTER A;Lo;0;L;;;;;N;;;;; -AA01;CHAM LETTER I;Lo;0;L;;;;;N;;;;; -AA02;CHAM LETTER U;Lo;0;L;;;;;N;;;;; -AA03;CHAM LETTER E;Lo;0;L;;;;;N;;;;; -AA04;CHAM LETTER AI;Lo;0;L;;;;;N;;;;; -AA05;CHAM LETTER O;Lo;0;L;;;;;N;;;;; -AA06;CHAM LETTER KA;Lo;0;L;;;;;N;;;;; -AA07;CHAM LETTER KHA;Lo;0;L;;;;;N;;;;; -AA08;CHAM LETTER GA;Lo;0;L;;;;;N;;;;; -AA09;CHAM LETTER GHA;Lo;0;L;;;;;N;;;;; -AA0A;CHAM LETTER NGUE;Lo;0;L;;;;;N;;;;; -AA0B;CHAM LETTER NGA;Lo;0;L;;;;;N;;;;; -AA0C;CHAM LETTER CHA;Lo;0;L;;;;;N;;;;; -AA0D;CHAM LETTER CHHA;Lo;0;L;;;;;N;;;;; -AA0E;CHAM LETTER JA;Lo;0;L;;;;;N;;;;; -AA0F;CHAM LETTER JHA;Lo;0;L;;;;;N;;;;; -AA10;CHAM LETTER NHUE;Lo;0;L;;;;;N;;;;; -AA11;CHAM LETTER NHA;Lo;0;L;;;;;N;;;;; -AA12;CHAM LETTER NHJA;Lo;0;L;;;;;N;;;;; -AA13;CHAM LETTER TA;Lo;0;L;;;;;N;;;;; -AA14;CHAM LETTER THA;Lo;0;L;;;;;N;;;;; -AA15;CHAM LETTER DA;Lo;0;L;;;;;N;;;;; -AA16;CHAM LETTER DHA;Lo;0;L;;;;;N;;;;; -AA17;CHAM LETTER NUE;Lo;0;L;;;;;N;;;;; -AA18;CHAM LETTER NA;Lo;0;L;;;;;N;;;;; -AA19;CHAM LETTER DDA;Lo;0;L;;;;;N;;;;; -AA1A;CHAM LETTER PA;Lo;0;L;;;;;N;;;;; -AA1B;CHAM LETTER PPA;Lo;0;L;;;;;N;;;;; -AA1C;CHAM LETTER PHA;Lo;0;L;;;;;N;;;;; -AA1D;CHAM LETTER BA;Lo;0;L;;;;;N;;;;; -AA1E;CHAM LETTER BHA;Lo;0;L;;;;;N;;;;; -AA1F;CHAM LETTER MUE;Lo;0;L;;;;;N;;;;; -AA20;CHAM LETTER MA;Lo;0;L;;;;;N;;;;; -AA21;CHAM LETTER BBA;Lo;0;L;;;;;N;;;;; -AA22;CHAM LETTER YA;Lo;0;L;;;;;N;;;;; -AA23;CHAM LETTER RA;Lo;0;L;;;;;N;;;;; -AA24;CHAM LETTER LA;Lo;0;L;;;;;N;;;;; -AA25;CHAM LETTER VA;Lo;0;L;;;;;N;;;;; -AA26;CHAM LETTER SSA;Lo;0;L;;;;;N;;;;; -AA27;CHAM LETTER SA;Lo;0;L;;;;;N;;;;; -AA28;CHAM LETTER HA;Lo;0;L;;;;;N;;;;; -AA29;CHAM VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;; -AA2A;CHAM VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -AA2B;CHAM VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -AA2C;CHAM VOWEL SIGN EI;Mn;0;NSM;;;;;N;;;;; -AA2D;CHAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -AA2E;CHAM VOWEL SIGN OE;Mn;0;NSM;;;;;N;;;;; -AA2F;CHAM VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -AA30;CHAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -AA31;CHAM VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; -AA32;CHAM VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;; -AA33;CHAM CONSONANT SIGN YA;Mc;0;L;;;;;N;;;;; -AA34;CHAM CONSONANT SIGN RA;Mc;0;L;;;;;N;;;;; -AA35;CHAM CONSONANT SIGN LA;Mn;0;NSM;;;;;N;;;;; -AA36;CHAM CONSONANT SIGN WA;Mn;0;NSM;;;;;N;;;;; -AA40;CHAM LETTER FINAL K;Lo;0;L;;;;;N;;;;; -AA41;CHAM LETTER FINAL G;Lo;0;L;;;;;N;;;;; -AA42;CHAM LETTER FINAL NG;Lo;0;L;;;;;N;;;;; -AA43;CHAM CONSONANT SIGN FINAL NG;Mn;0;NSM;;;;;N;;;;; -AA44;CHAM LETTER FINAL CH;Lo;0;L;;;;;N;;;;; -AA45;CHAM LETTER FINAL T;Lo;0;L;;;;;N;;;;; -AA46;CHAM LETTER FINAL N;Lo;0;L;;;;;N;;;;; -AA47;CHAM LETTER FINAL P;Lo;0;L;;;;;N;;;;; -AA48;CHAM LETTER FINAL Y;Lo;0;L;;;;;N;;;;; -AA49;CHAM LETTER FINAL R;Lo;0;L;;;;;N;;;;; -AA4A;CHAM LETTER FINAL L;Lo;0;L;;;;;N;;;;; -AA4B;CHAM LETTER FINAL SS;Lo;0;L;;;;;N;;;;; -AA4C;CHAM CONSONANT SIGN FINAL M;Mn;0;NSM;;;;;N;;;;; -AA4D;CHAM CONSONANT SIGN FINAL H;Mc;0;L;;;;;N;;;;; -AA50;CHAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -AA51;CHAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -AA52;CHAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -AA53;CHAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -AA54;CHAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -AA55;CHAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -AA56;CHAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -AA57;CHAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -AA58;CHAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -AA59;CHAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -AA5C;CHAM PUNCTUATION SPIRAL;Po;0;L;;;;;N;;;;; -AA5D;CHAM PUNCTUATION DANDA;Po;0;L;;;;;N;;;;; -AA5E;CHAM PUNCTUATION DOUBLE DANDA;Po;0;L;;;;;N;;;;; -AA5F;CHAM PUNCTUATION TRIPLE DANDA;Po;0;L;;;;;N;;;;; -AC00;;Lo;0;L;;;;;N;;;;; -D7A3;;Lo;0;L;;;;;N;;;;; -D800;;Cs;0;L;;;;;N;;;;; -DB7F;;Cs;0;L;;;;;N;;;;; -DB80;;Cs;0;L;;;;;N;;;;; -DBFF;;Cs;0;L;;;;;N;;;;; -DC00;;Cs;0;L;;;;;N;;;;; -DFFF;;Cs;0;L;;;;;N;;;;; -E000;;Co;0;L;;;;;N;;;;; -F8FF;;Co;0;L;;;;;N;;;;; -F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;; -F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;; -F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;; -F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;; -F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;; -F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;; -F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;; -F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;; -F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;; -F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;; -F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;; -F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;; -F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;; -F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;; -F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;; -F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;; -F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;; -F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;; -F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;; -F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;; -F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;; -F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;; -F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;; -F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;; -F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;; -F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;; -F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;; -F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;; -F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;; -F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;; -F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;; -F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;; -F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;; -F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;; -F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;; -F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;; -F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;; -F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;; -F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;; -F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;; -F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;; -F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;; -F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;; -F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;; -F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;; -F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;; -F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;; -F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;; -F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;; -F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;; -F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;; -F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;; -F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;; -F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;; -F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;; -F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;; -F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;; -F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;; -F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;; -F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;; -F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;; -F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;; -F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;; -F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;; -F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;; -F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;; -F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;; -F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;; -F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;; -F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;; -F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;; -F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;; -F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;; -F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;; -F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;; -F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;; -F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;; -F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;; -F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;; -F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;; -F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;; -F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;964B;;;;N;;;;; -F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;; -F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;; -F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;; -F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;; -F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;; -F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;; -F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;; -F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;; -F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;; -F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;; -F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;; -F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;; -F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;; -F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;; -F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;; -F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;; -F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;; -F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;; -F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;; -F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;; -F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;; -F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;; -F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;; -F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;; -F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;; -F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;3;N;;;;; -F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;; -F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;; -F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;; -F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;; -F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;; -F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;; -F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;; -F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;10;N;;;;; -F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;; -F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;; -F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;; -F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;; -F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;2;N;;;;; -F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;; -F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;; -F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;; -F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;; -F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;; -F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;; -F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;; -F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;; -F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;; -F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;; -F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;; -F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;; -F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;; -F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;; -F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;; -F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;; -F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;; -F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;; -F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;; -F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;; -F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;; -F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;; -F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;; -F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;; -F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;; -F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;; -F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;; -F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;; -F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;; -F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;; -F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;; -F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;; -F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;; -F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;; -F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;; -F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;; -F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;; -F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;; -F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;; -F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;; -F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;; -F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;; -F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;; -F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;; -F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;; -F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;; -F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;; -F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;; -F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;; -F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;; -F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;; -F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;; -F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;; -F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;; -F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;; -F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;; -F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;; -F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;0;N;;;;; -F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;; -F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;; -F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;; -F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;; -F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;; -F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;; -F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;; -F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;; -F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;; -F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;; -F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;; -F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;; -F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;; -F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;; -F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;; -F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;; -F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;; -F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;; -F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;; -F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;; -F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;; -F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;; -F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;; -F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;; -F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;; -F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;; -F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;; -F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;; -F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;; -F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;; -F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;6;N;;;;; -F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;; -F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;6;N;;;;; -F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;; -F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;; -F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;; -F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;; -F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;; -F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;; -F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;; -F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;; -F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;; -F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;; -F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;; -F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;; -F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;; -F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;; -F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;; -F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;; -F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;; -F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;; -F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;; -F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;; -F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;; -F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;; -F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;; -F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;; -F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;; -F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;; -F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;; -F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;; -F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;; -F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;; -F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;; -F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;; -F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;; -F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;; -F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;; -F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;; -F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;; -F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;; -F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;; -F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;; -F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;; -F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;10;N;;;;; -F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;; -F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;; -FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;; -FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;; -FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;; -FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;; -FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;; -FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;; -FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;; -FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;; -FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;; -FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;; -FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;; -FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;; -FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;; -FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;; -FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;; -FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;; -FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;; -FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;; -FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;; -FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;; -FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;; -FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;; -FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;; -FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;; -FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;; -FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;; -FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;; -FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;; -FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;; -FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;; -FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;; -FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;*;;; -FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;; -FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;; -FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;; -FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;*;;; -FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;; -FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;; -FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;; -FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;; -FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;; -FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;; -FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;; -FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;; -FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;; -FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;; -FA30;CJK COMPATIBILITY IDEOGRAPH-FA30;Lo;0;L;4FAE;;;;N;;;;; -FA31;CJK COMPATIBILITY IDEOGRAPH-FA31;Lo;0;L;50E7;;;;N;;;;; -FA32;CJK COMPATIBILITY IDEOGRAPH-FA32;Lo;0;L;514D;;;;N;;;;; -FA33;CJK COMPATIBILITY IDEOGRAPH-FA33;Lo;0;L;52C9;;;;N;;;;; -FA34;CJK COMPATIBILITY IDEOGRAPH-FA34;Lo;0;L;52E4;;;;N;;;;; -FA35;CJK COMPATIBILITY IDEOGRAPH-FA35;Lo;0;L;5351;;;;N;;;;; -FA36;CJK COMPATIBILITY IDEOGRAPH-FA36;Lo;0;L;559D;;;;N;;;;; -FA37;CJK COMPATIBILITY IDEOGRAPH-FA37;Lo;0;L;5606;;;;N;;;;; -FA38;CJK COMPATIBILITY IDEOGRAPH-FA38;Lo;0;L;5668;;;;N;;;;; -FA39;CJK COMPATIBILITY IDEOGRAPH-FA39;Lo;0;L;5840;;;;N;;;;; -FA3A;CJK COMPATIBILITY IDEOGRAPH-FA3A;Lo;0;L;58A8;;;;N;;;;; -FA3B;CJK COMPATIBILITY IDEOGRAPH-FA3B;Lo;0;L;5C64;;;;N;;;;; -FA3C;CJK COMPATIBILITY IDEOGRAPH-FA3C;Lo;0;L;5C6E;;;;N;;;;; -FA3D;CJK COMPATIBILITY IDEOGRAPH-FA3D;Lo;0;L;6094;;;;N;;;;; -FA3E;CJK COMPATIBILITY IDEOGRAPH-FA3E;Lo;0;L;6168;;;;N;;;;; -FA3F;CJK COMPATIBILITY IDEOGRAPH-FA3F;Lo;0;L;618E;;;;N;;;;; -FA40;CJK COMPATIBILITY IDEOGRAPH-FA40;Lo;0;L;61F2;;;;N;;;;; -FA41;CJK COMPATIBILITY IDEOGRAPH-FA41;Lo;0;L;654F;;;;N;;;;; -FA42;CJK COMPATIBILITY IDEOGRAPH-FA42;Lo;0;L;65E2;;;;N;;;;; -FA43;CJK COMPATIBILITY IDEOGRAPH-FA43;Lo;0;L;6691;;;;N;;;;; -FA44;CJK COMPATIBILITY IDEOGRAPH-FA44;Lo;0;L;6885;;;;N;;;;; -FA45;CJK COMPATIBILITY IDEOGRAPH-FA45;Lo;0;L;6D77;;;;N;;;;; -FA46;CJK COMPATIBILITY IDEOGRAPH-FA46;Lo;0;L;6E1A;;;;N;;;;; -FA47;CJK COMPATIBILITY IDEOGRAPH-FA47;Lo;0;L;6F22;;;;N;;;;; -FA48;CJK COMPATIBILITY IDEOGRAPH-FA48;Lo;0;L;716E;;;;N;;;;; -FA49;CJK COMPATIBILITY IDEOGRAPH-FA49;Lo;0;L;722B;;;;N;;;;; -FA4A;CJK COMPATIBILITY IDEOGRAPH-FA4A;Lo;0;L;7422;;;;N;;;;; -FA4B;CJK COMPATIBILITY IDEOGRAPH-FA4B;Lo;0;L;7891;;;;N;;;;; -FA4C;CJK COMPATIBILITY IDEOGRAPH-FA4C;Lo;0;L;793E;;;;N;;;;; -FA4D;CJK COMPATIBILITY IDEOGRAPH-FA4D;Lo;0;L;7949;;;;N;;;;; -FA4E;CJK COMPATIBILITY IDEOGRAPH-FA4E;Lo;0;L;7948;;;;N;;;;; -FA4F;CJK COMPATIBILITY IDEOGRAPH-FA4F;Lo;0;L;7950;;;;N;;;;; -FA50;CJK COMPATIBILITY IDEOGRAPH-FA50;Lo;0;L;7956;;;;N;;;;; -FA51;CJK COMPATIBILITY IDEOGRAPH-FA51;Lo;0;L;795D;;;;N;;;;; -FA52;CJK COMPATIBILITY IDEOGRAPH-FA52;Lo;0;L;798D;;;;N;;;;; -FA53;CJK COMPATIBILITY IDEOGRAPH-FA53;Lo;0;L;798E;;;;N;;;;; -FA54;CJK COMPATIBILITY IDEOGRAPH-FA54;Lo;0;L;7A40;;;;N;;;;; -FA55;CJK COMPATIBILITY IDEOGRAPH-FA55;Lo;0;L;7A81;;;;N;;;;; -FA56;CJK COMPATIBILITY IDEOGRAPH-FA56;Lo;0;L;7BC0;;;;N;;;;; -FA57;CJK COMPATIBILITY IDEOGRAPH-FA57;Lo;0;L;7DF4;;;;N;;;;; -FA58;CJK COMPATIBILITY IDEOGRAPH-FA58;Lo;0;L;7E09;;;;N;;;;; -FA59;CJK COMPATIBILITY IDEOGRAPH-FA59;Lo;0;L;7E41;;;;N;;;;; -FA5A;CJK COMPATIBILITY IDEOGRAPH-FA5A;Lo;0;L;7F72;;;;N;;;;; -FA5B;CJK COMPATIBILITY IDEOGRAPH-FA5B;Lo;0;L;8005;;;;N;;;;; -FA5C;CJK COMPATIBILITY IDEOGRAPH-FA5C;Lo;0;L;81ED;;;;N;;;;; -FA5D;CJK COMPATIBILITY IDEOGRAPH-FA5D;Lo;0;L;8279;;;;N;;;;; -FA5E;CJK COMPATIBILITY IDEOGRAPH-FA5E;Lo;0;L;8279;;;;N;;;;; -FA5F;CJK COMPATIBILITY IDEOGRAPH-FA5F;Lo;0;L;8457;;;;N;;;;; -FA60;CJK COMPATIBILITY IDEOGRAPH-FA60;Lo;0;L;8910;;;;N;;;;; -FA61;CJK COMPATIBILITY IDEOGRAPH-FA61;Lo;0;L;8996;;;;N;;;;; -FA62;CJK COMPATIBILITY IDEOGRAPH-FA62;Lo;0;L;8B01;;;;N;;;;; -FA63;CJK COMPATIBILITY IDEOGRAPH-FA63;Lo;0;L;8B39;;;;N;;;;; -FA64;CJK COMPATIBILITY IDEOGRAPH-FA64;Lo;0;L;8CD3;;;;N;;;;; -FA65;CJK COMPATIBILITY IDEOGRAPH-FA65;Lo;0;L;8D08;;;;N;;;;; -FA66;CJK COMPATIBILITY IDEOGRAPH-FA66;Lo;0;L;8FB6;;;;N;;;;; -FA67;CJK COMPATIBILITY IDEOGRAPH-FA67;Lo;0;L;9038;;;;N;;;;; -FA68;CJK COMPATIBILITY IDEOGRAPH-FA68;Lo;0;L;96E3;;;;N;;;;; -FA69;CJK COMPATIBILITY IDEOGRAPH-FA69;Lo;0;L;97FF;;;;N;;;;; -FA6A;CJK COMPATIBILITY IDEOGRAPH-FA6A;Lo;0;L;983B;;;;N;;;;; -FA70;CJK COMPATIBILITY IDEOGRAPH-FA70;Lo;0;L;4E26;;;;N;;;;; -FA71;CJK COMPATIBILITY IDEOGRAPH-FA71;Lo;0;L;51B5;;;;N;;;;; -FA72;CJK COMPATIBILITY IDEOGRAPH-FA72;Lo;0;L;5168;;;;N;;;;; -FA73;CJK COMPATIBILITY IDEOGRAPH-FA73;Lo;0;L;4F80;;;;N;;;;; -FA74;CJK COMPATIBILITY IDEOGRAPH-FA74;Lo;0;L;5145;;;;N;;;;; -FA75;CJK COMPATIBILITY IDEOGRAPH-FA75;Lo;0;L;5180;;;;N;;;;; -FA76;CJK COMPATIBILITY IDEOGRAPH-FA76;Lo;0;L;52C7;;;;N;;;;; -FA77;CJK COMPATIBILITY IDEOGRAPH-FA77;Lo;0;L;52FA;;;;N;;;;; -FA78;CJK COMPATIBILITY IDEOGRAPH-FA78;Lo;0;L;559D;;;;N;;;;; -FA79;CJK COMPATIBILITY IDEOGRAPH-FA79;Lo;0;L;5555;;;;N;;;;; -FA7A;CJK COMPATIBILITY IDEOGRAPH-FA7A;Lo;0;L;5599;;;;N;;;;; -FA7B;CJK COMPATIBILITY IDEOGRAPH-FA7B;Lo;0;L;55E2;;;;N;;;;; -FA7C;CJK COMPATIBILITY IDEOGRAPH-FA7C;Lo;0;L;585A;;;;N;;;;; -FA7D;CJK COMPATIBILITY IDEOGRAPH-FA7D;Lo;0;L;58B3;;;;N;;;;; -FA7E;CJK COMPATIBILITY IDEOGRAPH-FA7E;Lo;0;L;5944;;;;N;;;;; -FA7F;CJK COMPATIBILITY IDEOGRAPH-FA7F;Lo;0;L;5954;;;;N;;;;; -FA80;CJK COMPATIBILITY IDEOGRAPH-FA80;Lo;0;L;5A62;;;;N;;;;; -FA81;CJK COMPATIBILITY IDEOGRAPH-FA81;Lo;0;L;5B28;;;;N;;;;; -FA82;CJK COMPATIBILITY IDEOGRAPH-FA82;Lo;0;L;5ED2;;;;N;;;;; -FA83;CJK COMPATIBILITY IDEOGRAPH-FA83;Lo;0;L;5ED9;;;;N;;;;; -FA84;CJK COMPATIBILITY IDEOGRAPH-FA84;Lo;0;L;5F69;;;;N;;;;; -FA85;CJK COMPATIBILITY IDEOGRAPH-FA85;Lo;0;L;5FAD;;;;N;;;;; -FA86;CJK COMPATIBILITY IDEOGRAPH-FA86;Lo;0;L;60D8;;;;N;;;;; -FA87;CJK COMPATIBILITY IDEOGRAPH-FA87;Lo;0;L;614E;;;;N;;;;; -FA88;CJK COMPATIBILITY IDEOGRAPH-FA88;Lo;0;L;6108;;;;N;;;;; -FA89;CJK COMPATIBILITY IDEOGRAPH-FA89;Lo;0;L;618E;;;;N;;;;; -FA8A;CJK COMPATIBILITY IDEOGRAPH-FA8A;Lo;0;L;6160;;;;N;;;;; -FA8B;CJK COMPATIBILITY IDEOGRAPH-FA8B;Lo;0;L;61F2;;;;N;;;;; -FA8C;CJK COMPATIBILITY IDEOGRAPH-FA8C;Lo;0;L;6234;;;;N;;;;; -FA8D;CJK COMPATIBILITY IDEOGRAPH-FA8D;Lo;0;L;63C4;;;;N;;;;; -FA8E;CJK COMPATIBILITY IDEOGRAPH-FA8E;Lo;0;L;641C;;;;N;;;;; -FA8F;CJK COMPATIBILITY IDEOGRAPH-FA8F;Lo;0;L;6452;;;;N;;;;; -FA90;CJK COMPATIBILITY IDEOGRAPH-FA90;Lo;0;L;6556;;;;N;;;;; -FA91;CJK COMPATIBILITY IDEOGRAPH-FA91;Lo;0;L;6674;;;;N;;;;; -FA92;CJK COMPATIBILITY IDEOGRAPH-FA92;Lo;0;L;6717;;;;N;;;;; -FA93;CJK COMPATIBILITY IDEOGRAPH-FA93;Lo;0;L;671B;;;;N;;;;; -FA94;CJK COMPATIBILITY IDEOGRAPH-FA94;Lo;0;L;6756;;;;N;;;;; -FA95;CJK COMPATIBILITY IDEOGRAPH-FA95;Lo;0;L;6B79;;;;N;;;;; -FA96;CJK COMPATIBILITY IDEOGRAPH-FA96;Lo;0;L;6BBA;;;;N;;;;; -FA97;CJK COMPATIBILITY IDEOGRAPH-FA97;Lo;0;L;6D41;;;;N;;;;; -FA98;CJK COMPATIBILITY IDEOGRAPH-FA98;Lo;0;L;6EDB;;;;N;;;;; -FA99;CJK COMPATIBILITY IDEOGRAPH-FA99;Lo;0;L;6ECB;;;;N;;;;; -FA9A;CJK COMPATIBILITY IDEOGRAPH-FA9A;Lo;0;L;6F22;;;;N;;;;; -FA9B;CJK COMPATIBILITY IDEOGRAPH-FA9B;Lo;0;L;701E;;;;N;;;;; -FA9C;CJK COMPATIBILITY IDEOGRAPH-FA9C;Lo;0;L;716E;;;;N;;;;; -FA9D;CJK COMPATIBILITY IDEOGRAPH-FA9D;Lo;0;L;77A7;;;;N;;;;; -FA9E;CJK COMPATIBILITY IDEOGRAPH-FA9E;Lo;0;L;7235;;;;N;;;;; -FA9F;CJK COMPATIBILITY IDEOGRAPH-FA9F;Lo;0;L;72AF;;;;N;;;;; -FAA0;CJK COMPATIBILITY IDEOGRAPH-FAA0;Lo;0;L;732A;;;;N;;;;; -FAA1;CJK COMPATIBILITY IDEOGRAPH-FAA1;Lo;0;L;7471;;;;N;;;;; -FAA2;CJK COMPATIBILITY IDEOGRAPH-FAA2;Lo;0;L;7506;;;;N;;;;; -FAA3;CJK COMPATIBILITY IDEOGRAPH-FAA3;Lo;0;L;753B;;;;N;;;;; -FAA4;CJK COMPATIBILITY IDEOGRAPH-FAA4;Lo;0;L;761D;;;;N;;;;; -FAA5;CJK COMPATIBILITY IDEOGRAPH-FAA5;Lo;0;L;761F;;;;N;;;;; -FAA6;CJK COMPATIBILITY IDEOGRAPH-FAA6;Lo;0;L;76CA;;;;N;;;;; -FAA7;CJK COMPATIBILITY IDEOGRAPH-FAA7;Lo;0;L;76DB;;;;N;;;;; -FAA8;CJK COMPATIBILITY IDEOGRAPH-FAA8;Lo;0;L;76F4;;;;N;;;;; -FAA9;CJK COMPATIBILITY IDEOGRAPH-FAA9;Lo;0;L;774A;;;;N;;;;; -FAAA;CJK COMPATIBILITY IDEOGRAPH-FAAA;Lo;0;L;7740;;;;N;;;;; -FAAB;CJK COMPATIBILITY IDEOGRAPH-FAAB;Lo;0;L;78CC;;;;N;;;;; -FAAC;CJK COMPATIBILITY IDEOGRAPH-FAAC;Lo;0;L;7AB1;;;;N;;;;; -FAAD;CJK COMPATIBILITY IDEOGRAPH-FAAD;Lo;0;L;7BC0;;;;N;;;;; -FAAE;CJK COMPATIBILITY IDEOGRAPH-FAAE;Lo;0;L;7C7B;;;;N;;;;; -FAAF;CJK COMPATIBILITY IDEOGRAPH-FAAF;Lo;0;L;7D5B;;;;N;;;;; -FAB0;CJK COMPATIBILITY IDEOGRAPH-FAB0;Lo;0;L;7DF4;;;;N;;;;; -FAB1;CJK COMPATIBILITY IDEOGRAPH-FAB1;Lo;0;L;7F3E;;;;N;;;;; -FAB2;CJK COMPATIBILITY IDEOGRAPH-FAB2;Lo;0;L;8005;;;;N;;;;; -FAB3;CJK COMPATIBILITY IDEOGRAPH-FAB3;Lo;0;L;8352;;;;N;;;;; -FAB4;CJK COMPATIBILITY IDEOGRAPH-FAB4;Lo;0;L;83EF;;;;N;;;;; -FAB5;CJK COMPATIBILITY IDEOGRAPH-FAB5;Lo;0;L;8779;;;;N;;;;; -FAB6;CJK COMPATIBILITY IDEOGRAPH-FAB6;Lo;0;L;8941;;;;N;;;;; -FAB7;CJK COMPATIBILITY IDEOGRAPH-FAB7;Lo;0;L;8986;;;;N;;;;; -FAB8;CJK COMPATIBILITY IDEOGRAPH-FAB8;Lo;0;L;8996;;;;N;;;;; -FAB9;CJK COMPATIBILITY IDEOGRAPH-FAB9;Lo;0;L;8ABF;;;;N;;;;; -FABA;CJK COMPATIBILITY IDEOGRAPH-FABA;Lo;0;L;8AF8;;;;N;;;;; -FABB;CJK COMPATIBILITY IDEOGRAPH-FABB;Lo;0;L;8ACB;;;;N;;;;; -FABC;CJK COMPATIBILITY IDEOGRAPH-FABC;Lo;0;L;8B01;;;;N;;;;; -FABD;CJK COMPATIBILITY IDEOGRAPH-FABD;Lo;0;L;8AFE;;;;N;;;;; -FABE;CJK COMPATIBILITY IDEOGRAPH-FABE;Lo;0;L;8AED;;;;N;;;;; -FABF;CJK COMPATIBILITY IDEOGRAPH-FABF;Lo;0;L;8B39;;;;N;;;;; -FAC0;CJK COMPATIBILITY IDEOGRAPH-FAC0;Lo;0;L;8B8A;;;;N;;;;; -FAC1;CJK COMPATIBILITY IDEOGRAPH-FAC1;Lo;0;L;8D08;;;;N;;;;; -FAC2;CJK COMPATIBILITY IDEOGRAPH-FAC2;Lo;0;L;8F38;;;;N;;;;; -FAC3;CJK COMPATIBILITY IDEOGRAPH-FAC3;Lo;0;L;9072;;;;N;;;;; -FAC4;CJK COMPATIBILITY IDEOGRAPH-FAC4;Lo;0;L;9199;;;;N;;;;; -FAC5;CJK COMPATIBILITY IDEOGRAPH-FAC5;Lo;0;L;9276;;;;N;;;;; -FAC6;CJK COMPATIBILITY IDEOGRAPH-FAC6;Lo;0;L;967C;;;;N;;;;; -FAC7;CJK COMPATIBILITY IDEOGRAPH-FAC7;Lo;0;L;96E3;;;;N;;;;; -FAC8;CJK COMPATIBILITY IDEOGRAPH-FAC8;Lo;0;L;9756;;;;N;;;;; -FAC9;CJK COMPATIBILITY IDEOGRAPH-FAC9;Lo;0;L;97DB;;;;N;;;;; -FACA;CJK COMPATIBILITY IDEOGRAPH-FACA;Lo;0;L;97FF;;;;N;;;;; -FACB;CJK COMPATIBILITY IDEOGRAPH-FACB;Lo;0;L;980B;;;;N;;;;; -FACC;CJK COMPATIBILITY IDEOGRAPH-FACC;Lo;0;L;983B;;;;N;;;;; -FACD;CJK COMPATIBILITY IDEOGRAPH-FACD;Lo;0;L;9B12;;;;N;;;;; -FACE;CJK COMPATIBILITY IDEOGRAPH-FACE;Lo;0;L;9F9C;;;;N;;;;; -FACF;CJK COMPATIBILITY IDEOGRAPH-FACF;Lo;0;L;2284A;;;;N;;;;; -FAD0;CJK COMPATIBILITY IDEOGRAPH-FAD0;Lo;0;L;22844;;;;N;;;;; -FAD1;CJK COMPATIBILITY IDEOGRAPH-FAD1;Lo;0;L;233D5;;;;N;;;;; -FAD2;CJK COMPATIBILITY IDEOGRAPH-FAD2;Lo;0;L;3B9D;;;;N;;;;; -FAD3;CJK COMPATIBILITY IDEOGRAPH-FAD3;Lo;0;L;4018;;;;N;;;;; -FAD4;CJK COMPATIBILITY IDEOGRAPH-FAD4;Lo;0;L;4039;;;;N;;;;; -FAD5;CJK COMPATIBILITY IDEOGRAPH-FAD5;Lo;0;L;25249;;;;N;;;;; -FAD6;CJK COMPATIBILITY IDEOGRAPH-FAD6;Lo;0;L;25CD0;;;;N;;;;; -FAD7;CJK COMPATIBILITY IDEOGRAPH-FAD7;Lo;0;L;27ED3;;;;N;;;;; -FAD8;CJK COMPATIBILITY IDEOGRAPH-FAD8;Lo;0;L;9F43;;;;N;;;;; -FAD9;CJK COMPATIBILITY IDEOGRAPH-FAD9;Lo;0;L;9F8E;;;;N;;;;; -FB00;LATIN SMALL LIGATURE FF;Ll;0;L; 0066 0066;;;;N;;;;; -FB01;LATIN SMALL LIGATURE FI;Ll;0;L; 0066 0069;;;;N;;;;; -FB02;LATIN SMALL LIGATURE FL;Ll;0;L; 0066 006C;;;;N;;;;; -FB03;LATIN SMALL LIGATURE FFI;Ll;0;L; 0066 0066 0069;;;;N;;;;; -FB04;LATIN SMALL LIGATURE FFL;Ll;0;L; 0066 0066 006C;;;;N;;;;; -FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L; 017F 0074;;;;N;;;;; -FB06;LATIN SMALL LIGATURE ST;Ll;0;L; 0073 0074;;;;N;;;;; -FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L; 0574 0576;;;;N;;;;; -FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L; 0574 0565;;;;N;;;;; -FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L; 0574 056B;;;;N;;;;; -FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L; 057E 0576;;;;N;;;;; -FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L; 0574 056D;;;;N;;;;; -FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;; -FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;; -FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;; -FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R; 05E2;;;;N;;;;; -FB21;HEBREW LETTER WIDE ALEF;Lo;0;R; 05D0;;;;N;;;;; -FB22;HEBREW LETTER WIDE DALET;Lo;0;R; 05D3;;;;N;;;;; -FB23;HEBREW LETTER WIDE HE;Lo;0;R; 05D4;;;;N;;;;; -FB24;HEBREW LETTER WIDE KAF;Lo;0;R; 05DB;;;;N;;;;; -FB25;HEBREW LETTER WIDE LAMED;Lo;0;R; 05DC;;;;N;;;;; -FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R; 05DD;;;;N;;;;; -FB27;HEBREW LETTER WIDE RESH;Lo;0;R; 05E8;;;;N;;;;; -FB28;HEBREW LETTER WIDE TAV;Lo;0;R; 05EA;;;;N;;;;; -FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; -FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;; -FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;; -FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;; -FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;; -FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;; -FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;; -FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;; -FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;; -FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;; -FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;; -FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;; -FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;; -FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;; -FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;; -FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;; -FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;; -FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;; -FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;; -FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;; -FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;; -FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;; -FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;; -FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;; -FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;; -FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;; -FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;; -FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;; -FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;; -FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;; -FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;; -FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;; -FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;; -FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R; 05D0 05DC;;;;N;;;;; -FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL; 0671;;;;N;;;;; -FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL; 0671;;;;N;;;;; -FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL; 067B;;;;N;;;;; -FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL; 067B;;;;N;;;;; -FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL; 067B;;;;N;;;;; -FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL; 067B;;;;N;;;;; -FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL; 067E;;;;N;;;;; -FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL; 067E;;;;N;;;;; -FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL; 067E;;;;N;;;;; -FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL; 067E;;;;N;;;;; -FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL; 0680;;;;N;;;;; -FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL; 0680;;;;N;;;;; -FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL; 0680;;;;N;;;;; -FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL; 0680;;;;N;;;;; -FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL; 067A;;;;N;;;;; -FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL; 067A;;;;N;;;;; -FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL; 067A;;;;N;;;;; -FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL; 067A;;;;N;;;;; -FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL; 067F;;;;N;;;;; -FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL; 067F;;;;N;;;;; -FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL; 067F;;;;N;;;;; -FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL; 067F;;;;N;;;;; -FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL; 0679;;;;N;;;;; -FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL; 0679;;;;N;;;;; -FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL; 0679;;;;N;;;;; -FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL; 0679;;;;N;;;;; -FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL; 06A4;;;;N;;;;; -FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL; 06A4;;;;N;;;;; -FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL; 06A4;;;;N;;;;; -FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL; 06A4;;;;N;;;;; -FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL; 06A6;;;;N;;;;; -FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL; 06A6;;;;N;;;;; -FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL; 06A6;;;;N;;;;; -FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL; 06A6;;;;N;;;;; -FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL; 0684;;;;N;;;;; -FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL; 0684;;;;N;;;;; -FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL; 0684;;;;N;;;;; -FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL; 0684;;;;N;;;;; -FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL; 0683;;;;N;;;;; -FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL; 0683;;;;N;;;;; -FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL; 0683;;;;N;;;;; -FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL; 0683;;;;N;;;;; -FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL; 0686;;;;N;;;;; -FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL; 0686;;;;N;;;;; -FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL; 0686;;;;N;;;;; -FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL; 0686;;;;N;;;;; -FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL; 0687;;;;N;;;;; -FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL; 0687;;;;N;;;;; -FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL; 0687;;;;N;;;;; -FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL; 0687;;;;N;;;;; -FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL; 068D;;;;N;;;;; -FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL; 068D;;;;N;;;;; -FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL; 068C;;;;N;;;;; -FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL; 068C;;;;N;;;;; -FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL; 068E;;;;N;;;;; -FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL; 068E;;;;N;;;;; -FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL; 0688;;;;N;;;;; -FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL; 0688;;;;N;;;;; -FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL; 0698;;;;N;;;;; -FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL; 0698;;;;N;;;;; -FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL; 0691;;;;N;;;;; -FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL; 0691;;;;N;;;;; -FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL; 06A9;;;;N;;;;; -FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL; 06A9;;;;N;;;;; -FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL; 06A9;;;;N;;;;; -FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL; 06A9;;;;N;;;;; -FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL; 06AF;;;;N;;;;; -FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL; 06AF;;;;N;;;;; -FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL; 06AF;;;;N;;;;; -FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL; 06AF;;;;N;;;;; -FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL; 06B3;;;;N;;;;; -FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL; 06B3;;;;N;;;;; -FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL; 06B3;;;;N;;;;; -FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL; 06B3;;;;N;;;;; -FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL; 06B1;;;;N;;;;; -FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL; 06B1;;;;N;;;;; -FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL; 06B1;;;;N;;;;; -FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL; 06B1;;;;N;;;;; -FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL; 06BA;;;;N;;;;; -FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL; 06BA;;;;N;;;;; -FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL; 06BB;;;;N;;;;; -FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL; 06BB;;;;N;;;;; -FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL; 06BB;;;;N;;;;; -FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL; 06BB;;;;N;;;;; -FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL; 06C0;;;;N;;;;; -FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL; 06C0;;;;N;;;;; -FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL; 06C1;;;;N;;;;; -FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL; 06C1;;;;N;;;;; -FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL; 06C1;;;;N;;;;; -FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL; 06C1;;;;N;;;;; -FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL; 06BE;;;;N;;;;; -FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL; 06BE;;;;N;;;;; -FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL; 06BE;;;;N;;;;; -FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL; 06BE;;;;N;;;;; -FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL; 06D2;;;;N;;;;; -FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL; 06D2;;;;N;;;;; -FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 06D3;;;;N;;;;; -FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 06D3;;;;N;;;;; -FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL; 06AD;;;;N;;;;; -FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL; 06AD;;;;N;;;;; -FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL; 06AD;;;;N;;;;; -FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL; 06AD;;;;N;;;;; -FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL; 06C7;;;;N;;;;; -FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL; 06C7;;;;N;;;;; -FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL; 06C6;;;;N;;;;; -FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL; 06C6;;;;N;;;;; -FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL; 06C8;;;;N;;;;; -FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL; 06C8;;;;N;;;;; -FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0677;;;;N;;;;; -FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL; 06CB;;;;N;;;;; -FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL; 06CB;;;;N;;;;; -FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL; 06C5;;;;N;;;;; -FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL; 06C5;;;;N;;;;; -FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL; 06C9;;;;N;;;;; -FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL; 06C9;;;;N;;;;; -FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL; 06D0;;;;N;;;;; -FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL; 06D0;;;;N;;;;; -FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL; 06D0;;;;N;;;;; -FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL; 06D0;;;;N;;;;; -FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL; 0649;;;;N;;;;; -FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL; 0649;;;;N;;;;; -FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL; 0626 0627;;;;N;;;;; -FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL; 0626 0627;;;;N;;;;; -FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL; 0626 06D5;;;;N;;;;; -FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL; 0626 06D5;;;;N;;;;; -FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL; 0626 0648;;;;N;;;;; -FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL; 0626 0648;;;;N;;;;; -FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL; 0626 06C7;;;;N;;;;; -FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL; 0626 06C7;;;;N;;;;; -FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL; 0626 06C6;;;;N;;;;; -FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL; 0626 06C6;;;;N;;;;; -FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL; 0626 06C8;;;;N;;;;; -FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL; 0626 06C8;;;;N;;;;; -FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL; 0626 06D0;;;;N;;;;; -FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL; 0626 06D0;;;;N;;;;; -FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL; 0626 06D0;;;;N;;;;; -FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0626 0649;;;;N;;;;; -FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0626 0649;;;;N;;;;; -FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL; 0626 0649;;;;N;;;;; -FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL; 06CC;;;;N;;;;; -FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL; 06CC;;;;N;;;;; -FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL; 06CC;;;;N;;;;; -FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL; 06CC;;;;N;;;;; -FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL; 0626 062C;;;;N;;;;; -FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL; 0626 062D;;;;N;;;;; -FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL; 0626 0645;;;;N;;;;; -FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0626 0649;;;;N;;;;; -FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL; 0626 064A;;;;N;;;;; -FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL; 0628 062C;;;;N;;;;; -FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL; 0628 062D;;;;N;;;;; -FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL; 0628 062E;;;;N;;;;; -FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL; 0628 0645;;;;N;;;;; -FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0628 0649;;;;N;;;;; -FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL; 0628 064A;;;;N;;;;; -FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL; 062A 062C;;;;N;;;;; -FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL; 062A 062D;;;;N;;;;; -FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL; 062A 062E;;;;N;;;;; -FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL; 062A 0645;;;;N;;;;; -FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062A 0649;;;;N;;;;; -FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL; 062A 064A;;;;N;;;;; -FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL; 062B 062C;;;;N;;;;; -FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL; 062B 0645;;;;N;;;;; -FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062B 0649;;;;N;;;;; -FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL; 062B 064A;;;;N;;;;; -FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL; 062C 062D;;;;N;;;;; -FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL; 062C 0645;;;;N;;;;; -FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL; 062D 062C;;;;N;;;;; -FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL; 062D 0645;;;;N;;;;; -FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL; 062E 062C;;;;N;;;;; -FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL; 062E 062D;;;;N;;;;; -FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL; 062E 0645;;;;N;;;;; -FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL; 0633 062C;;;;N;;;;; -FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL; 0633 062D;;;;N;;;;; -FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL; 0633 062E;;;;N;;;;; -FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL; 0633 0645;;;;N;;;;; -FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL; 0635 062D;;;;N;;;;; -FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL; 0635 0645;;;;N;;;;; -FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL; 0636 062C;;;;N;;;;; -FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL; 0636 062D;;;;N;;;;; -FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL; 0636 062E;;;;N;;;;; -FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL; 0636 0645;;;;N;;;;; -FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL; 0637 062D;;;;N;;;;; -FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL; 0637 0645;;;;N;;;;; -FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL; 0638 0645;;;;N;;;;; -FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL; 0639 062C;;;;N;;;;; -FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL; 0639 0645;;;;N;;;;; -FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL; 063A 062C;;;;N;;;;; -FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL; 063A 0645;;;;N;;;;; -FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL; 0641 062C;;;;N;;;;; -FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL; 0641 062D;;;;N;;;;; -FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL; 0641 062E;;;;N;;;;; -FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL; 0641 0645;;;;N;;;;; -FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0641 0649;;;;N;;;;; -FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL; 0641 064A;;;;N;;;;; -FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL; 0642 062D;;;;N;;;;; -FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL; 0642 0645;;;;N;;;;; -FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0642 0649;;;;N;;;;; -FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL; 0642 064A;;;;N;;;;; -FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL; 0643 0627;;;;N;;;;; -FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL; 0643 062C;;;;N;;;;; -FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL; 0643 062D;;;;N;;;;; -FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL; 0643 062E;;;;N;;;;; -FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL; 0643 0644;;;;N;;;;; -FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL; 0643 0645;;;;N;;;;; -FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0643 0649;;;;N;;;;; -FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL; 0643 064A;;;;N;;;;; -FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL; 0644 062C;;;;N;;;;; -FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL; 0644 062D;;;;N;;;;; -FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL; 0644 062E;;;;N;;;;; -FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL; 0644 0645;;;;N;;;;; -FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0644 0649;;;;N;;;;; -FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL; 0644 064A;;;;N;;;;; -FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL; 0645 062C;;;;N;;;;; -FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL; 0645 062D;;;;N;;;;; -FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL; 0645 062E;;;;N;;;;; -FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL; 0645 0645;;;;N;;;;; -FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0645 0649;;;;N;;;;; -FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL; 0645 064A;;;;N;;;;; -FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL; 0646 062C;;;;N;;;;; -FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL; 0646 062D;;;;N;;;;; -FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL; 0646 062E;;;;N;;;;; -FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL; 0646 0645;;;;N;;;;; -FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0646 0649;;;;N;;;;; -FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL; 0646 064A;;;;N;;;;; -FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL; 0647 062C;;;;N;;;;; -FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL; 0647 0645;;;;N;;;;; -FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0647 0649;;;;N;;;;; -FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL; 0647 064A;;;;N;;;;; -FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL; 064A 062C;;;;N;;;;; -FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL; 064A 062D;;;;N;;;;; -FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL; 064A 062E;;;;N;;;;; -FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL; 064A 0645;;;;N;;;;; -FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 064A 0649;;;;N;;;;; -FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL; 064A 064A;;;;N;;;;; -FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0630 0670;;;;N;;;;; -FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0631 0670;;;;N;;;;; -FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0649 0670;;;;N;;;;; -FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL; 0020 064C 0651;;;;N;;;;; -FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL; 0020 064D 0651;;;;N;;;;; -FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL; 0020 064E 0651;;;;N;;;;; -FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL; 0020 064F 0651;;;;N;;;;; -FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL; 0020 0650 0651;;;;N;;;;; -FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0020 0651 0670;;;;N;;;;; -FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL; 0626 0631;;;;N;;;;; -FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL; 0626 0632;;;;N;;;;; -FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL; 0626 0645;;;;N;;;;; -FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL; 0626 0646;;;;N;;;;; -FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0626 0649;;;;N;;;;; -FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL; 0626 064A;;;;N;;;;; -FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL; 0628 0631;;;;N;;;;; -FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL; 0628 0632;;;;N;;;;; -FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL; 0628 0645;;;;N;;;;; -FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL; 0628 0646;;;;N;;;;; -FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0628 0649;;;;N;;;;; -FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL; 0628 064A;;;;N;;;;; -FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL; 062A 0631;;;;N;;;;; -FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL; 062A 0632;;;;N;;;;; -FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL; 062A 0645;;;;N;;;;; -FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL; 062A 0646;;;;N;;;;; -FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 0649;;;;N;;;;; -FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL; 062A 064A;;;;N;;;;; -FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL; 062B 0631;;;;N;;;;; -FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL; 062B 0632;;;;N;;;;; -FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL; 062B 0645;;;;N;;;;; -FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL; 062B 0646;;;;N;;;;; -FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062B 0649;;;;N;;;;; -FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL; 062B 064A;;;;N;;;;; -FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0641 0649;;;;N;;;;; -FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL; 0641 064A;;;;N;;;;; -FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0642 0649;;;;N;;;;; -FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL; 0642 064A;;;;N;;;;; -FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL; 0643 0627;;;;N;;;;; -FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL; 0643 0644;;;;N;;;;; -FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL; 0643 0645;;;;N;;;;; -FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0643 0649;;;;N;;;;; -FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL; 0643 064A;;;;N;;;;; -FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL; 0644 0645;;;;N;;;;; -FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0644 0649;;;;N;;;;; -FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL; 0644 064A;;;;N;;;;; -FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL; 0645 0627;;;;N;;;;; -FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0645 0645;;;;N;;;;; -FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL; 0646 0631;;;;N;;;;; -FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL; 0646 0632;;;;N;;;;; -FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL; 0646 0645;;;;N;;;;; -FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL; 0646 0646;;;;N;;;;; -FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 0649;;;;N;;;;; -FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL; 0646 064A;;;;N;;;;; -FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL; 0649 0670;;;;N;;;;; -FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL; 064A 0631;;;;N;;;;; -FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL; 064A 0632;;;;N;;;;; -FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL; 064A 0645;;;;N;;;;; -FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL; 064A 0646;;;;N;;;;; -FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 064A 0649;;;;N;;;;; -FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL; 064A 064A;;;;N;;;;; -FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL; 0626 062C;;;;N;;;;; -FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL; 0626 062D;;;;N;;;;; -FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL; 0626 062E;;;;N;;;;; -FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL; 0626 0645;;;;N;;;;; -FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL; 0626 0647;;;;N;;;;; -FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL; 0628 062C;;;;N;;;;; -FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL; 0628 062D;;;;N;;;;; -FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL; 0628 062E;;;;N;;;;; -FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL; 0628 0645;;;;N;;;;; -FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL; 0628 0647;;;;N;;;;; -FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL; 062A 062C;;;;N;;;;; -FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL; 062A 062D;;;;N;;;;; -FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL; 062A 062E;;;;N;;;;; -FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL; 062A 0645;;;;N;;;;; -FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL; 062A 0647;;;;N;;;;; -FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL; 062B 0645;;;;N;;;;; -FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL; 062C 062D;;;;N;;;;; -FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 062C 0645;;;;N;;;;; -FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL; 062D 062C;;;;N;;;;; -FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL; 062D 0645;;;;N;;;;; -FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL; 062E 062C;;;;N;;;;; -FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 062E 0645;;;;N;;;;; -FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL; 0633 062C;;;;N;;;;; -FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL; 0633 062D;;;;N;;;;; -FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL; 0633 062E;;;;N;;;;; -FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL; 0633 0645;;;;N;;;;; -FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL; 0635 062D;;;;N;;;;; -FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL; 0635 062E;;;;N;;;;; -FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL; 0635 0645;;;;N;;;;; -FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL; 0636 062C;;;;N;;;;; -FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL; 0636 062D;;;;N;;;;; -FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL; 0636 062E;;;;N;;;;; -FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL; 0636 0645;;;;N;;;;; -FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL; 0637 062D;;;;N;;;;; -FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL; 0638 0645;;;;N;;;;; -FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL; 0639 062C;;;;N;;;;; -FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL; 0639 0645;;;;N;;;;; -FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL; 063A 062C;;;;N;;;;; -FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL; 063A 0645;;;;N;;;;; -FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL; 0641 062C;;;;N;;;;; -FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL; 0641 062D;;;;N;;;;; -FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL; 0641 062E;;;;N;;;;; -FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL; 0641 0645;;;;N;;;;; -FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL; 0642 062D;;;;N;;;;; -FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL; 0642 0645;;;;N;;;;; -FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL; 0643 062C;;;;N;;;;; -FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL; 0643 062D;;;;N;;;;; -FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL; 0643 062E;;;;N;;;;; -FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL; 0643 0644;;;;N;;;;; -FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL; 0643 0645;;;;N;;;;; -FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL; 0644 062C;;;;N;;;;; -FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL; 0644 062D;;;;N;;;;; -FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL; 0644 062E;;;;N;;;;; -FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL; 0644 0645;;;;N;;;;; -FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL; 0644 0647;;;;N;;;;; -FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0645 062C;;;;N;;;;; -FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0645 062D;;;;N;;;;; -FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL; 0645 062E;;;;N;;;;; -FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0645 0645;;;;N;;;;; -FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL; 0646 062C;;;;N;;;;; -FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL; 0646 062D;;;;N;;;;; -FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL; 0646 062E;;;;N;;;;; -FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL; 0646 0645;;;;N;;;;; -FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL; 0646 0647;;;;N;;;;; -FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL; 0647 062C;;;;N;;;;; -FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL; 0647 0645;;;;N;;;;; -FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL; 0647 0670;;;;N;;;;; -FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL; 064A 062C;;;;N;;;;; -FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL; 064A 062D;;;;N;;;;; -FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL; 064A 062E;;;;N;;;;; -FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL; 064A 0645;;;;N;;;;; -FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL; 064A 0647;;;;N;;;;; -FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL; 0626 0645;;;;N;;;;; -FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL; 0626 0647;;;;N;;;;; -FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL; 0628 0645;;;;N;;;;; -FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL; 0628 0647;;;;N;;;;; -FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL; 062A 0645;;;;N;;;;; -FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL; 062A 0647;;;;N;;;;; -FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL; 062B 0645;;;;N;;;;; -FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL; 062B 0647;;;;N;;;;; -FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL; 0633 0645;;;;N;;;;; -FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL; 0633 0647;;;;N;;;;; -FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL; 0634 0645;;;;N;;;;; -FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL; 0634 0647;;;;N;;;;; -FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL; 0643 0644;;;;N;;;;; -FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL; 0643 0645;;;;N;;;;; -FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL; 0644 0645;;;;N;;;;; -FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL; 0646 0645;;;;N;;;;; -FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL; 0646 0647;;;;N;;;;; -FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL; 064A 0645;;;;N;;;;; -FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL; 064A 0647;;;;N;;;;; -FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL; 0640 064E 0651;;;;N;;;;; -FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL; 0640 064F 0651;;;;N;;;;; -FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL; 0640 0650 0651;;;;N;;;;; -FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0637 0649;;;;N;;;;; -FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL; 0637 064A;;;;N;;;;; -FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0639 0649;;;;N;;;;; -FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL; 0639 064A;;;;N;;;;; -FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 063A 0649;;;;N;;;;; -FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL; 063A 064A;;;;N;;;;; -FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0633 0649;;;;N;;;;; -FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL; 0633 064A;;;;N;;;;; -FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0634 0649;;;;N;;;;; -FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL; 0634 064A;;;;N;;;;; -FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062D 0649;;;;N;;;;; -FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL; 062D 064A;;;;N;;;;; -FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062C 0649;;;;N;;;;; -FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL; 062C 064A;;;;N;;;;; -FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062E 0649;;;;N;;;;; -FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL; 062E 064A;;;;N;;;;; -FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0635 0649;;;;N;;;;; -FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL; 0635 064A;;;;N;;;;; -FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0636 0649;;;;N;;;;; -FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL; 0636 064A;;;;N;;;;; -FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL; 0634 062C;;;;N;;;;; -FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL; 0634 062D;;;;N;;;;; -FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL; 0634 062E;;;;N;;;;; -FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL; 0634 0645;;;;N;;;;; -FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL; 0634 0631;;;;N;;;;; -FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL; 0633 0631;;;;N;;;;; -FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL; 0635 0631;;;;N;;;;; -FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL; 0636 0631;;;;N;;;;; -FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0637 0649;;;;N;;;;; -FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL; 0637 064A;;;;N;;;;; -FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0639 0649;;;;N;;;;; -FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL; 0639 064A;;;;N;;;;; -FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 063A 0649;;;;N;;;;; -FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL; 063A 064A;;;;N;;;;; -FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0633 0649;;;;N;;;;; -FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL; 0633 064A;;;;N;;;;; -FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0634 0649;;;;N;;;;; -FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL; 0634 064A;;;;N;;;;; -FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062D 0649;;;;N;;;;; -FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL; 062D 064A;;;;N;;;;; -FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062C 0649;;;;N;;;;; -FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL; 062C 064A;;;;N;;;;; -FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062E 0649;;;;N;;;;; -FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL; 062E 064A;;;;N;;;;; -FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0635 0649;;;;N;;;;; -FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL; 0635 064A;;;;N;;;;; -FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0636 0649;;;;N;;;;; -FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL; 0636 064A;;;;N;;;;; -FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL; 0634 062C;;;;N;;;;; -FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL; 0634 062D;;;;N;;;;; -FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL; 0634 062E;;;;N;;;;; -FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL; 0634 0645;;;;N;;;;; -FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL; 0634 0631;;;;N;;;;; -FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL; 0633 0631;;;;N;;;;; -FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL; 0635 0631;;;;N;;;;; -FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL; 0636 0631;;;;N;;;;; -FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL; 0634 062C;;;;N;;;;; -FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL; 0634 062D;;;;N;;;;; -FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL; 0634 062E;;;;N;;;;; -FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL; 0634 0645;;;;N;;;;; -FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL; 0633 0647;;;;N;;;;; -FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL; 0634 0647;;;;N;;;;; -FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL; 0637 0645;;;;N;;;;; -FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL; 0633 062C;;;;N;;;;; -FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL; 0633 062D;;;;N;;;;; -FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL; 0633 062E;;;;N;;;;; -FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL; 0634 062C;;;;N;;;;; -FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL; 0634 062D;;;;N;;;;; -FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL; 0634 062E;;;;N;;;;; -FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL; 0637 0645;;;;N;;;;; -FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL; 0638 0645;;;;N;;;;; -FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL; 0627 064B;;;;N;;;;; -FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL; 0627 064B;;;;N;;;;; -FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;; -FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;; -FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 062A 062C 0645;;;;N;;;;; -FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL; 062A 062D 062C;;;;N;;;;; -FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL; 062A 062D 062C;;;;N;;;;; -FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 062A 062D 0645;;;;N;;;;; -FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 062A 062E 0645;;;;N;;;;; -FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 062A 0645 062C;;;;N;;;;; -FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 062A 0645 062D;;;;N;;;;; -FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL; 062A 0645 062E;;;;N;;;;; -FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 062C 0645 062D;;;;N;;;;; -FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 062C 0645 062D;;;;N;;;;; -FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 062D 0645 064A;;;;N;;;;; -FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062D 0645 0649;;;;N;;;;; -FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL; 0633 062D 062C;;;;N;;;;; -FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL; 0633 062C 062D;;;;N;;;;; -FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0633 062C 0649;;;;N;;;;; -FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0633 0645 062D;;;;N;;;;; -FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0633 0645 062D;;;;N;;;;; -FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0633 0645 062C;;;;N;;;;; -FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0633 0645 0645;;;;N;;;;; -FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0633 0645 0645;;;;N;;;;; -FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL; 0635 062D 062D;;;;N;;;;; -FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL; 0635 062D 062D;;;;N;;;;; -FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0635 0645 0645;;;;N;;;;; -FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL; 0634 062D 0645;;;;N;;;;; -FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0634 062D 0645;;;;N;;;;; -FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0634 062C 064A;;;;N;;;;; -FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL; 0634 0645 062E;;;;N;;;;; -FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL; 0634 0645 062E;;;;N;;;;; -FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0634 0645 0645;;;;N;;;;; -FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0634 0645 0645;;;;N;;;;; -FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0636 062D 0649;;;;N;;;;; -FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL; 0636 062E 0645;;;;N;;;;; -FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0636 062E 0645;;;;N;;;;; -FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0637 0645 062D;;;;N;;;;; -FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0637 0645 062D;;;;N;;;;; -FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0637 0645 0645;;;;N;;;;; -FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0637 0645 064A;;;;N;;;;; -FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL; 0639 062C 0645;;;;N;;;;; -FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0639 0645 0645;;;;N;;;;; -FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0639 0645 0645;;;;N;;;;; -FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0639 0645 0649;;;;N;;;;; -FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 063A 0645 0645;;;;N;;;;; -FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 063A 0645 064A;;;;N;;;;; -FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 063A 0645 0649;;;;N;;;;; -FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL; 0641 062E 0645;;;;N;;;;; -FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0641 062E 0645;;;;N;;;;; -FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0642 0645 062D;;;;N;;;;; -FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0642 0645 0645;;;;N;;;;; -FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL; 0644 062D 0645;;;;N;;;;; -FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0644 062D 064A;;;;N;;;;; -FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0644 062D 0649;;;;N;;;;; -FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0644 062C 062C;;;;N;;;;; -FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL; 0644 062C 062C;;;;N;;;;; -FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL; 0644 062E 0645;;;;N;;;;; -FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0644 062E 0645;;;;N;;;;; -FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0644 0645 062D;;;;N;;;;; -FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0644 0645 062D;;;;N;;;;; -FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL; 0645 062D 062C;;;;N;;;;; -FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0645 062D 0645;;;;N;;;;; -FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0645 062D 064A;;;;N;;;;; -FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL; 0645 062C 062D;;;;N;;;;; -FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0645 062C 0645;;;;N;;;;; -FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL; 0645 062E 062C;;;;N;;;;; -FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0645 062E 0645;;;;N;;;;; -FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL; 0645 062C 062E;;;;N;;;;; -FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0647 0645 062C;;;;N;;;;; -FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0647 0645 0645;;;;N;;;;; -FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0646 062D 0645;;;;N;;;;; -FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 062D 0649;;;;N;;;;; -FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL; 0646 062C 0645;;;;N;;;;; -FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0646 062C 0645;;;;N;;;;; -FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 062C 0649;;;;N;;;;; -FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0646 0645 064A;;;;N;;;;; -FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 0645 0649;;;;N;;;;; -FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 064A 0645 0645;;;;N;;;;; -FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 064A 0645 0645;;;;N;;;;; -FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 0628 062E 064A;;;;N;;;;; -FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 062A 062C 064A;;;;N;;;;; -FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 062C 0649;;;;N;;;;; -FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 062A 062E 064A;;;;N;;;;; -FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 062E 0649;;;;N;;;;; -FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 062A 0645 064A;;;;N;;;;; -FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 0645 0649;;;;N;;;;; -FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 062C 0645 064A;;;;N;;;;; -FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062C 062D 0649;;;;N;;;;; -FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062C 0645 0649;;;;N;;;;; -FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0633 062E 0649;;;;N;;;;; -FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0635 062D 064A;;;;N;;;;; -FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0634 062D 064A;;;;N;;;;; -FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0636 062D 064A;;;;N;;;;; -FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0644 062C 064A;;;;N;;;;; -FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0644 0645 064A;;;;N;;;;; -FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 064A 062D 064A;;;;N;;;;; -FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 064A 062C 064A;;;;N;;;;; -FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 064A 0645 064A;;;;N;;;;; -FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0645 0645 064A;;;;N;;;;; -FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0642 0645 064A;;;;N;;;;; -FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0646 062D 064A;;;;N;;;;; -FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0642 0645 062D;;;;N;;;;; -FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0644 062D 0645;;;;N;;;;; -FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0639 0645 064A;;;;N;;;;; -FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0643 0645 064A;;;;N;;;;; -FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL; 0646 062C 062D;;;;N;;;;; -FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 0645 062E 064A;;;;N;;;;; -FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0644 062C 0645;;;;N;;;;; -FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0643 0645 0645;;;;N;;;;; -FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL; 0644 062C 0645;;;;N;;;;; -FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL; 0646 062C 062D;;;;N;;;;; -FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 062C 062D 064A;;;;N;;;;; -FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 062D 062C 064A;;;;N;;;;; -FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0645 062C 064A;;;;N;;;;; -FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0641 0645 064A;;;;N;;;;; -FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0628 062D 064A;;;;N;;;;; -FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0643 0645 0645;;;;N;;;;; -FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0639 062C 0645;;;;N;;;;; -FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0635 0645 0645;;;;N;;;;; -FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 0633 062E 064A;;;;N;;;;; -FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0646 062C 064A;;;;N;;;;; -FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL; 0635 0644 06D2;;;;N;;;;; -FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL; 0642 0644 06D2;;;;N;;;;; -FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL; 0627 0644 0644 0647;;;;N;;;;; -FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL; 0627 0643 0628 0631;;;;N;;;;; -FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL; 0645 062D 0645 062F;;;;N;;;;; -FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL; 0635 0644 0639 0645;;;;N;;;;; -FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL; 0631 0633 0648 0644;;;;N;;;;; -FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL; 0639 0644 064A 0647;;;;N;;;;; -FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL; 0648 0633 0644 0645;;;;N;;;;; -FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL; 0635 0644 0649;;;;N;;;;; -FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL; 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;; -FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL; 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;; -FDFC;RIAL SIGN;Sc;0;AL; 0631 06CC 0627 0644;;;;N;;;;; -FDFD;ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;So;0;ON;;;;;N;;;;; -FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;; -FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;; -FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;; -FE03;VARIATION SELECTOR-4;Mn;0;NSM;;;;;N;;;;; -FE04;VARIATION SELECTOR-5;Mn;0;NSM;;;;;N;;;;; -FE05;VARIATION SELECTOR-6;Mn;0;NSM;;;;;N;;;;; -FE06;VARIATION SELECTOR-7;Mn;0;NSM;;;;;N;;;;; -FE07;VARIATION SELECTOR-8;Mn;0;NSM;;;;;N;;;;; -FE08;VARIATION SELECTOR-9;Mn;0;NSM;;;;;N;;;;; -FE09;VARIATION SELECTOR-10;Mn;0;NSM;;;;;N;;;;; -FE0A;VARIATION SELECTOR-11;Mn;0;NSM;;;;;N;;;;; -FE0B;VARIATION SELECTOR-12;Mn;0;NSM;;;;;N;;;;; -FE0C;VARIATION SELECTOR-13;Mn;0;NSM;;;;;N;;;;; -FE0D;VARIATION SELECTOR-14;Mn;0;NSM;;;;;N;;;;; -FE0E;VARIATION SELECTOR-15;Mn;0;NSM;;;;;N;;;;; -FE0F;VARIATION SELECTOR-16;Mn;0;NSM;;;;;N;;;;; -FE10;PRESENTATION FORM FOR VERTICAL COMMA;Po;0;ON; 002C;;;;N;;;;; -FE11;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA;Po;0;ON; 3001;;;;N;;;;; -FE12;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP;Po;0;ON; 3002;;;;N;;;;; -FE13;PRESENTATION FORM FOR VERTICAL COLON;Po;0;ON; 003A;;;;N;;;;; -FE14;PRESENTATION FORM FOR VERTICAL SEMICOLON;Po;0;ON; 003B;;;;N;;;;; -FE15;PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK;Po;0;ON; 0021;;;;N;;;;; -FE16;PRESENTATION FORM FOR VERTICAL QUESTION MARK;Po;0;ON; 003F;;;;N;;;;; -FE17;PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET;Ps;0;ON; 3016;;;;N;;;;; -FE18;PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET;Pe;0;ON; 3017;;;;N;;;;; -FE19;PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS;Po;0;ON; 2026;;;;N;;;;; -FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;; -FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;; -FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;; -FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;; -FE24;COMBINING MACRON LEFT HALF;Mn;230;NSM;;;;;N;;;;; -FE25;COMBINING MACRON RIGHT HALF;Mn;230;NSM;;;;;N;;;;; -FE26;COMBINING CONJOINING MACRON;Mn;230;NSM;;;;;N;;;;; -FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON; 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;; -FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON; 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;; -FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON; 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;; -FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON; 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;; -FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON; 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;; -FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON; 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;; -FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;; -FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON; 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;; -FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON; 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;; -FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON; 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;; -FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON; 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;; -FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON; 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;; -FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON; 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;; -FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON; 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;; -FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON; 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;; -FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON; 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;; -FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON; 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;; -FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON; 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;; -FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON; 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;; -FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON; 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;; -FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON; 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;; -FE45;SESAME DOT;Po;0;ON;;;;;N;;;;; -FE46;WHITE SESAME DOT;Po;0;ON;;;;;N;;;;; -FE47;PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET;Ps;0;ON; 005B;;;;N;;;;; -FE48;PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET;Pe;0;ON; 005D;;;;N;;;;; -FE49;DASHED OVERLINE;Po;0;ON; 203E;;;;N;SPACING DASHED OVERSCORE;;;; -FE4A;CENTRELINE OVERLINE;Po;0;ON; 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;; -FE4B;WAVY OVERLINE;Po;0;ON; 203E;;;;N;SPACING WAVY OVERSCORE;;;; -FE4C;DOUBLE WAVY OVERLINE;Po;0;ON; 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;; -FE4D;DASHED LOW LINE;Pc;0;ON; 005F;;;;N;SPACING DASHED UNDERSCORE;;;; -FE4E;CENTRELINE LOW LINE;Pc;0;ON; 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;; -FE4F;WAVY LOW LINE;Pc;0;ON; 005F;;;;N;SPACING WAVY UNDERSCORE;;;; -FE50;SMALL COMMA;Po;0;CS; 002C;;;;N;;;;; -FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON; 3001;;;;N;;;;; -FE52;SMALL FULL STOP;Po;0;CS; 002E;;;;N;SMALL PERIOD;;;; -FE54;SMALL SEMICOLON;Po;0;ON; 003B;;;;N;;;;; -FE55;SMALL COLON;Po;0;CS; 003A;;;;N;;;;; -FE56;SMALL QUESTION MARK;Po;0;ON; 003F;;;;N;;;;; -FE57;SMALL EXCLAMATION MARK;Po;0;ON; 0021;;;;N;;;;; -FE58;SMALL EM DASH;Pd;0;ON; 2014;;;;N;;;;; -FE59;SMALL LEFT PARENTHESIS;Ps;0;ON; 0028;;;;Y;SMALL OPENING PARENTHESIS;;;; -FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;Y;SMALL CLOSING PARENTHESIS;;;; -FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON; 007B;;;;Y;SMALL OPENING CURLY BRACKET;;;; -FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON; 007D;;;;Y;SMALL CLOSING CURLY BRACKET;;;; -FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON; 3014;;;;Y;SMALL OPENING TORTOISE SHELL BRACKET;;;; -FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON; 3015;;;;Y;SMALL CLOSING TORTOISE SHELL BRACKET;;;; -FE5F;SMALL NUMBER SIGN;Po;0;ET; 0023;;;;N;;;;; -FE60;SMALL AMPERSAND;Po;0;ON; 0026;;;;N;;;;; -FE61;SMALL ASTERISK;Po;0;ON; 002A;;;;N;;;;; -FE62;SMALL PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; -FE63;SMALL HYPHEN-MINUS;Pd;0;ES; 002D;;;;N;;;;; -FE64;SMALL LESS-THAN SIGN;Sm;0;ON; 003C;;;;Y;;;;; -FE65;SMALL GREATER-THAN SIGN;Sm;0;ON; 003E;;;;Y;;;;; -FE66;SMALL EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; -FE68;SMALL REVERSE SOLIDUS;Po;0;ON; 005C;;;;N;SMALL BACKSLASH;;;; -FE69;SMALL DOLLAR SIGN;Sc;0;ET; 0024;;;;N;;;;; -FE6A;SMALL PERCENT SIGN;Po;0;ET; 0025;;;;N;;;;; -FE6B;SMALL COMMERCIAL AT;Po;0;ON; 0040;;;;N;;;;; -FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL; 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;; -FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL; 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;; -FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL; 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;; -FE73;ARABIC TAIL FRAGMENT;Lo;0;AL;;;;;N;;;;; -FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL; 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;; -FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL; 0020 064E;;;;N;ARABIC SPACING FATHAH;;;; -FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL; 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;; -FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL; 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;; -FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL; 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;; -FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL; 0020 0650;;;;N;ARABIC SPACING KASRAH;;;; -FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL; 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;; -FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL; 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;; -FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL; 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;; -FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL; 0020 0652;;;;N;ARABIC SPACING SUKUN;;;; -FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL; 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;; -FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL; 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;; -FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL; 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;; -FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL; 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;; -FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;; -FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;; -FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;; -FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;; -FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL; 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;; -FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL; 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;; -FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;; -FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;; -FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;; -FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;; -FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL; 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;; -FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL; 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;; -FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;; -FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;; -FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;; -FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;; -FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL; 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;; -FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL; 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;; -FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;; -FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;; -FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;; -FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;; -FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;; -FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;; -FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;; -FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;; -FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;; -FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;; -FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;; -FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;; -FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;; -FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;; -FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;; -FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;; -FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;; -FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;; -FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;; -FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;; -FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL; 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;; -FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL; 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;; -FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL; 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;; -FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL; 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;; -FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL; 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;; -FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL; 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;; -FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL; 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;; -FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL; 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;; -FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;; -FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;; -FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;; -FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;; -FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;; -FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;; -FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;; -FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;; -FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;; -FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;; -FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;; -FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;; -FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;; -FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;; -FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;; -FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;; -FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;; -FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;; -FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;; -FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;; -FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;; -FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;; -FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;; -FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;; -FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;; -FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;; -FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;; -FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;; -FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;; -FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;; -FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;; -FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;; -FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;; -FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;; -FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;; -FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;; -FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;; -FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;; -FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;; -FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;; -FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;; -FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;; -FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;; -FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;; -FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;; -FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;; -FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;; -FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;; -FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;; -FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;; -FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;; -FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;; -FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;; -FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;; -FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;; -FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;; -FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;; -FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;; -FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;; -FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;; -FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL; 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;; -FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL; 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;; -FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;; -FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL; 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;; -FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;; -FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;; -FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;; -FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;; -FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL; 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;; -FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL; 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;; -FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;; -FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;; -FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL; 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;; -FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL; 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;; -FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL; 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;; -FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL; 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;; -FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;; -FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON; 0021;;;;N;;;;; -FF02;FULLWIDTH QUOTATION MARK;Po;0;ON; 0022;;;;N;;;;; -FF03;FULLWIDTH NUMBER SIGN;Po;0;ET; 0023;;;;N;;;;; -FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET; 0024;;;;N;;;;; -FF05;FULLWIDTH PERCENT SIGN;Po;0;ET; 0025;;;;N;;;;; -FF06;FULLWIDTH AMPERSAND;Po;0;ON; 0026;;;;N;;;;; -FF07;FULLWIDTH APOSTROPHE;Po;0;ON; 0027;;;;N;;;;; -FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON; 0028;;;;Y;FULLWIDTH OPENING PARENTHESIS;;;; -FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;Y;FULLWIDTH CLOSING PARENTHESIS;;;; -FF0A;FULLWIDTH ASTERISK;Po;0;ON; 002A;;;;N;;;;; -FF0B;FULLWIDTH PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; -FF0C;FULLWIDTH COMMA;Po;0;CS; 002C;;;;N;;;;; -FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ES; 002D;;;;N;;;;; -FF0E;FULLWIDTH FULL STOP;Po;0;CS; 002E;;;;N;FULLWIDTH PERIOD;;;; -FF0F;FULLWIDTH SOLIDUS;Po;0;CS; 002F;;;;N;FULLWIDTH SLASH;;;; -FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; -FF11;FULLWIDTH DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; -FF12;FULLWIDTH DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; -FF13;FULLWIDTH DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; -FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; -FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; -FF16;FULLWIDTH DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; -FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; -FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; -FF19;FULLWIDTH DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; -FF1A;FULLWIDTH COLON;Po;0;CS; 003A;;;;N;;;;; -FF1B;FULLWIDTH SEMICOLON;Po;0;ON; 003B;;;;N;;;;; -FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON; 003C;;;;Y;;;;; -FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; -FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON; 003E;;;;Y;;;;; -FF1F;FULLWIDTH QUESTION MARK;Po;0;ON; 003F;;;;N;;;;; -FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON; 0040;;;;N;;;;; -FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L; 0041;;;;N;;;;FF41; -FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L; 0042;;;;N;;;;FF42; -FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L; 0043;;;;N;;;;FF43; -FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L; 0044;;;;N;;;;FF44; -FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L; 0045;;;;N;;;;FF45; -FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L; 0046;;;;N;;;;FF46; -FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L; 0047;;;;N;;;;FF47; -FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L; 0048;;;;N;;;;FF48; -FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L; 0049;;;;N;;;;FF49; -FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L; 004A;;;;N;;;;FF4A; -FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L; 004B;;;;N;;;;FF4B; -FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L; 004C;;;;N;;;;FF4C; -FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L; 004D;;;;N;;;;FF4D; -FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L; 004E;;;;N;;;;FF4E; -FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L; 004F;;;;N;;;;FF4F; -FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L; 0050;;;;N;;;;FF50; -FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L; 0051;;;;N;;;;FF51; -FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L; 0052;;;;N;;;;FF52; -FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L; 0053;;;;N;;;;FF53; -FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L; 0054;;;;N;;;;FF54; -FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L; 0055;;;;N;;;;FF55; -FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L; 0056;;;;N;;;;FF56; -FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L; 0057;;;;N;;;;FF57; -FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L; 0058;;;;N;;;;FF58; -FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L; 0059;;;;N;;;;FF59; -FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L; 005A;;;;N;;;;FF5A; -FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON; 005B;;;;Y;FULLWIDTH OPENING SQUARE BRACKET;;;; -FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON; 005C;;;;N;FULLWIDTH BACKSLASH;;;; -FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON; 005D;;;;Y;FULLWIDTH CLOSING SQUARE BRACKET;;;; -FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON; 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;; -FF3F;FULLWIDTH LOW LINE;Pc;0;ON; 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;; -FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON; 0060;;;;N;FULLWIDTH SPACING GRAVE;;;; -FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L; 0061;;;;N;;;FF21;;FF21 -FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L; 0062;;;;N;;;FF22;;FF22 -FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L; 0063;;;;N;;;FF23;;FF23 -FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L; 0064;;;;N;;;FF24;;FF24 -FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L; 0065;;;;N;;;FF25;;FF25 -FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L; 0066;;;;N;;;FF26;;FF26 -FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L; 0067;;;;N;;;FF27;;FF27 -FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L; 0068;;;;N;;;FF28;;FF28 -FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L; 0069;;;;N;;;FF29;;FF29 -FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L; 006A;;;;N;;;FF2A;;FF2A -FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L; 006B;;;;N;;;FF2B;;FF2B -FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L; 006C;;;;N;;;FF2C;;FF2C -FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L; 006D;;;;N;;;FF2D;;FF2D -FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L; 006E;;;;N;;;FF2E;;FF2E -FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L; 006F;;;;N;;;FF2F;;FF2F -FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L; 0070;;;;N;;;FF30;;FF30 -FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L; 0071;;;;N;;;FF31;;FF31 -FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L; 0072;;;;N;;;FF32;;FF32 -FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L; 0073;;;;N;;;FF33;;FF33 -FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L; 0074;;;;N;;;FF34;;FF34 -FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L; 0075;;;;N;;;FF35;;FF35 -FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L; 0076;;;;N;;;FF36;;FF36 -FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L; 0077;;;;N;;;FF37;;FF37 -FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L; 0078;;;;N;;;FF38;;FF38 -FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L; 0079;;;;N;;;FF39;;FF39 -FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L; 007A;;;;N;;;FF3A;;FF3A -FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON; 007B;;;;Y;FULLWIDTH OPENING CURLY BRACKET;;;; -FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON; 007C;;;;N;FULLWIDTH VERTICAL BAR;;;; -FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON; 007D;;;;Y;FULLWIDTH CLOSING CURLY BRACKET;;;; -FF5E;FULLWIDTH TILDE;Sm;0;ON; 007E;;;;N;FULLWIDTH SPACING TILDE;;;; -FF5F;FULLWIDTH LEFT WHITE PARENTHESIS;Ps;0;ON; 2985;;;;Y;;*;;; -FF60;FULLWIDTH RIGHT WHITE PARENTHESIS;Pe;0;ON; 2986;;;;Y;;*;;; -FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON; 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;; -FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON; 300C;;;;Y;HALFWIDTH OPENING CORNER BRACKET;;;; -FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON; 300D;;;;Y;HALFWIDTH CLOSING CORNER BRACKET;;;; -FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON; 3001;;;;N;;;;; -FF65;HALFWIDTH KATAKANA MIDDLE DOT;Po;0;ON; 30FB;;;;N;;;;; -FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L; 30F2;;;;N;;;;; -FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L; 30A1;;;;N;;;;; -FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L; 30A3;;;;N;;;;; -FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L; 30A5;;;;N;;;;; -FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L; 30A7;;;;N;;;;; -FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L; 30A9;;;;N;;;;; -FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L; 30E3;;;;N;;;;; -FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L; 30E5;;;;N;;;;; -FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L; 30E7;;;;N;;;;; -FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L; 30C3;;;;N;;;;; -FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L; 30FC;;;;N;;;;; -FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L; 30A2;;;;N;;;;; -FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L; 30A4;;;;N;;;;; -FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L; 30A6;;;;N;;;;; -FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L; 30A8;;;;N;;;;; -FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L; 30AA;;;;N;;;;; -FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L; 30AB;;;;N;;;;; -FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L; 30AD;;;;N;;;;; -FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L; 30AF;;;;N;;;;; -FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L; 30B1;;;;N;;;;; -FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L; 30B3;;;;N;;;;; -FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L; 30B5;;;;N;;;;; -FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L; 30B7;;;;N;;;;; -FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L; 30B9;;;;N;;;;; -FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L; 30BB;;;;N;;;;; -FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L; 30BD;;;;N;;;;; -FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L; 30BF;;;;N;;;;; -FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L; 30C1;;;;N;;;;; -FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L; 30C4;;;;N;;;;; -FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L; 30C6;;;;N;;;;; -FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L; 30C8;;;;N;;;;; -FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L; 30CA;;;;N;;;;; -FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L; 30CB;;;;N;;;;; -FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L; 30CC;;;;N;;;;; -FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L; 30CD;;;;N;;;;; -FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L; 30CE;;;;N;;;;; -FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L; 30CF;;;;N;;;;; -FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L; 30D2;;;;N;;;;; -FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L; 30D5;;;;N;;;;; -FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L; 30D8;;;;N;;;;; -FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L; 30DB;;;;N;;;;; -FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L; 30DE;;;;N;;;;; -FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L; 30DF;;;;N;;;;; -FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L; 30E0;;;;N;;;;; -FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L; 30E1;;;;N;;;;; -FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L; 30E2;;;;N;;;;; -FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L; 30E4;;;;N;;;;; -FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L; 30E6;;;;N;;;;; -FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L; 30E8;;;;N;;;;; -FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L; 30E9;;;;N;;;;; -FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L; 30EA;;;;N;;;;; -FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L; 30EB;;;;N;;;;; -FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L; 30EC;;;;N;;;;; -FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L; 30ED;;;;N;;;;; -FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L; 30EF;;;;N;;;;; -FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L; 30F3;;;;N;;;;; -FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L; 3099;;;;N;;halfwidth katakana-hiragana voiced sound mark;;; -FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L; 309A;;;;N;;halfwidth katakana-hiragana semi-voiced sound mark;;; -FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L; 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;; -FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L; 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;; -FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L; 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;; -FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L; 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;; -FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L; 3134;;;;N;;;;; -FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L; 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;; -FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L; 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;; -FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L; 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;; -FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L; 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;; -FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L; 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;; -FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L; 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;; -FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L; 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;; -FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L; 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;; -FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L; 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;; -FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L; 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;; -FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L; 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;; -FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L; 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;; -FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L; 3141;;;;N;;;;; -FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L; 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;; -FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L; 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;; -FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L; 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;; -FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L; 3145;;;;N;;;;; -FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L; 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;; -FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L; 3147;;;;N;;;;; -FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L; 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;; -FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L; 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;; -FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L; 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;; -FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L; 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;; -FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L; 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;; -FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L; 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;; -FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L; 314E;;;;N;;;;; -FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L; 314F;;;;N;;;;; -FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L; 3150;;;;N;;;;; -FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L; 3151;;;;N;;;;; -FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L; 3152;;;;N;;;;; -FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L; 3153;;;;N;;;;; -FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L; 3154;;;;N;;;;; -FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L; 3155;;;;N;;;;; -FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L; 3156;;;;N;;;;; -FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L; 3157;;;;N;;;;; -FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L; 3158;;;;N;;;;; -FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L; 3159;;;;N;;;;; -FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L; 315A;;;;N;;;;; -FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L; 315B;;;;N;;;;; -FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L; 315C;;;;N;;;;; -FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L; 315D;;;;N;;;;; -FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L; 315E;;;;N;;;;; -FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L; 315F;;;;N;;;;; -FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L; 3160;;;;N;;;;; -FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L; 3161;;;;N;;;;; -FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L; 3162;;;;N;;;;; -FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L; 3163;;;;N;;;;; -FFE0;FULLWIDTH CENT SIGN;Sc;0;ET; 00A2;;;;N;;;;; -FFE1;FULLWIDTH POUND SIGN;Sc;0;ET; 00A3;;;;N;;;;; -FFE2;FULLWIDTH NOT SIGN;Sm;0;ON; 00AC;;;;N;;;;; -FFE3;FULLWIDTH MACRON;Sk;0;ON; 00AF;;;;N;FULLWIDTH SPACING MACRON;*;;; -FFE4;FULLWIDTH BROKEN BAR;So;0;ON; 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;; -FFE5;FULLWIDTH YEN SIGN;Sc;0;ET; 00A5;;;;N;;;;; -FFE6;FULLWIDTH WON SIGN;Sc;0;ET; 20A9;;;;N;;;;; -FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON; 2502;;;;N;;;;; -FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON; 2190;;;;N;;;;; -FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON; 2191;;;;N;;;;; -FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON; 2192;;;;N;;;;; -FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON; 2193;;;;N;;;;; -FFED;HALFWIDTH BLACK SQUARE;So;0;ON; 25A0;;;;N;;;;; -FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON; 25CB;;;;N;;;;; -FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;ON;;;;;N;;;;; -FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;ON;;;;;N;;;;; -FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;ON;;;;;N;;;;; -FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; -FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; -10000;LINEAR B SYLLABLE B008 A;Lo;0;L;;;;;N;;;;; -10001;LINEAR B SYLLABLE B038 E;Lo;0;L;;;;;N;;;;; -10002;LINEAR B SYLLABLE B028 I;Lo;0;L;;;;;N;;;;; -10003;LINEAR B SYLLABLE B061 O;Lo;0;L;;;;;N;;;;; -10004;LINEAR B SYLLABLE B010 U;Lo;0;L;;;;;N;;;;; -10005;LINEAR B SYLLABLE B001 DA;Lo;0;L;;;;;N;;;;; -10006;LINEAR B SYLLABLE B045 DE;Lo;0;L;;;;;N;;;;; -10007;LINEAR B SYLLABLE B007 DI;Lo;0;L;;;;;N;;;;; -10008;LINEAR B SYLLABLE B014 DO;Lo;0;L;;;;;N;;;;; -10009;LINEAR B SYLLABLE B051 DU;Lo;0;L;;;;;N;;;;; -1000A;LINEAR B SYLLABLE B057 JA;Lo;0;L;;;;;N;;;;; -1000B;LINEAR B SYLLABLE B046 JE;Lo;0;L;;;;;N;;;;; -1000D;LINEAR B SYLLABLE B036 JO;Lo;0;L;;;;;N;;;;; -1000E;LINEAR B SYLLABLE B065 JU;Lo;0;L;;;;;N;;;;; -1000F;LINEAR B SYLLABLE B077 KA;Lo;0;L;;;;;N;;;;; -10010;LINEAR B SYLLABLE B044 KE;Lo;0;L;;;;;N;;;;; -10011;LINEAR B SYLLABLE B067 KI;Lo;0;L;;;;;N;;;;; -10012;LINEAR B SYLLABLE B070 KO;Lo;0;L;;;;;N;;;;; -10013;LINEAR B SYLLABLE B081 KU;Lo;0;L;;;;;N;;;;; -10014;LINEAR B SYLLABLE B080 MA;Lo;0;L;;;;;N;;;;; -10015;LINEAR B SYLLABLE B013 ME;Lo;0;L;;;;;N;;;;; -10016;LINEAR B SYLLABLE B073 MI;Lo;0;L;;;;;N;;;;; -10017;LINEAR B SYLLABLE B015 MO;Lo;0;L;;;;;N;;;;; -10018;LINEAR B SYLLABLE B023 MU;Lo;0;L;;;;;N;;;;; -10019;LINEAR B SYLLABLE B006 NA;Lo;0;L;;;;;N;;;;; -1001A;LINEAR B SYLLABLE B024 NE;Lo;0;L;;;;;N;;;;; -1001B;LINEAR B SYLLABLE B030 NI;Lo;0;L;;;;;N;;;;; -1001C;LINEAR B SYLLABLE B052 NO;Lo;0;L;;;;;N;;;;; -1001D;LINEAR B SYLLABLE B055 NU;Lo;0;L;;;;;N;;;;; -1001E;LINEAR B SYLLABLE B003 PA;Lo;0;L;;;;;N;;;;; -1001F;LINEAR B SYLLABLE B072 PE;Lo;0;L;;;;;N;;;;; -10020;LINEAR B SYLLABLE B039 PI;Lo;0;L;;;;;N;;;;; -10021;LINEAR B SYLLABLE B011 PO;Lo;0;L;;;;;N;;;;; -10022;LINEAR B SYLLABLE B050 PU;Lo;0;L;;;;;N;;;;; -10023;LINEAR B SYLLABLE B016 QA;Lo;0;L;;;;;N;;;;; -10024;LINEAR B SYLLABLE B078 QE;Lo;0;L;;;;;N;;;;; -10025;LINEAR B SYLLABLE B021 QI;Lo;0;L;;;;;N;;;;; -10026;LINEAR B SYLLABLE B032 QO;Lo;0;L;;;;;N;;;;; -10028;LINEAR B SYLLABLE B060 RA;Lo;0;L;;;;;N;;;;; -10029;LINEAR B SYLLABLE B027 RE;Lo;0;L;;;;;N;;;;; -1002A;LINEAR B SYLLABLE B053 RI;Lo;0;L;;;;;N;;;;; -1002B;LINEAR B SYLLABLE B002 RO;Lo;0;L;;;;;N;;;;; -1002C;LINEAR B SYLLABLE B026 RU;Lo;0;L;;;;;N;;;;; -1002D;LINEAR B SYLLABLE B031 SA;Lo;0;L;;;;;N;;;;; -1002E;LINEAR B SYLLABLE B009 SE;Lo;0;L;;;;;N;;;;; -1002F;LINEAR B SYLLABLE B041 SI;Lo;0;L;;;;;N;;;;; -10030;LINEAR B SYLLABLE B012 SO;Lo;0;L;;;;;N;;;;; -10031;LINEAR B SYLLABLE B058 SU;Lo;0;L;;;;;N;;;;; -10032;LINEAR B SYLLABLE B059 TA;Lo;0;L;;;;;N;;;;; -10033;LINEAR B SYLLABLE B004 TE;Lo;0;L;;;;;N;;;;; -10034;LINEAR B SYLLABLE B037 TI;Lo;0;L;;;;;N;;;;; -10035;LINEAR B SYLLABLE B005 TO;Lo;0;L;;;;;N;;;;; -10036;LINEAR B SYLLABLE B069 TU;Lo;0;L;;;;;N;;;;; -10037;LINEAR B SYLLABLE B054 WA;Lo;0;L;;;;;N;;;;; -10038;LINEAR B SYLLABLE B075 WE;Lo;0;L;;;;;N;;;;; -10039;LINEAR B SYLLABLE B040 WI;Lo;0;L;;;;;N;;;;; -1003A;LINEAR B SYLLABLE B042 WO;Lo;0;L;;;;;N;;;;; -1003C;LINEAR B SYLLABLE B017 ZA;Lo;0;L;;;;;N;;;;; -1003D;LINEAR B SYLLABLE B074 ZE;Lo;0;L;;;;;N;;;;; -1003F;LINEAR B SYLLABLE B020 ZO;Lo;0;L;;;;;N;;;;; -10040;LINEAR B SYLLABLE B025 A2;Lo;0;L;;;;;N;;;;; -10041;LINEAR B SYLLABLE B043 A3;Lo;0;L;;;;;N;;;;; -10042;LINEAR B SYLLABLE B085 AU;Lo;0;L;;;;;N;;;;; -10043;LINEAR B SYLLABLE B071 DWE;Lo;0;L;;;;;N;;;;; -10044;LINEAR B SYLLABLE B090 DWO;Lo;0;L;;;;;N;;;;; -10045;LINEAR B SYLLABLE B048 NWA;Lo;0;L;;;;;N;;;;; -10046;LINEAR B SYLLABLE B029 PU2;Lo;0;L;;;;;N;;;;; -10047;LINEAR B SYLLABLE B062 PTE;Lo;0;L;;;;;N;;;;; -10048;LINEAR B SYLLABLE B076 RA2;Lo;0;L;;;;;N;;;;; -10049;LINEAR B SYLLABLE B033 RA3;Lo;0;L;;;;;N;;;;; -1004A;LINEAR B SYLLABLE B068 RO2;Lo;0;L;;;;;N;;;;; -1004B;LINEAR B SYLLABLE B066 TA2;Lo;0;L;;;;;N;;;;; -1004C;LINEAR B SYLLABLE B087 TWE;Lo;0;L;;;;;N;;;;; -1004D;LINEAR B SYLLABLE B091 TWO;Lo;0;L;;;;;N;;;;; -10050;LINEAR B SYMBOL B018;Lo;0;L;;;;;N;;;;; -10051;LINEAR B SYMBOL B019;Lo;0;L;;;;;N;;;;; -10052;LINEAR B SYMBOL B022;Lo;0;L;;;;;N;;;;; -10053;LINEAR B SYMBOL B034;Lo;0;L;;;;;N;;;;; -10054;LINEAR B SYMBOL B047;Lo;0;L;;;;;N;;;;; -10055;LINEAR B SYMBOL B049;Lo;0;L;;;;;N;;;;; -10056;LINEAR B SYMBOL B056;Lo;0;L;;;;;N;;;;; -10057;LINEAR B SYMBOL B063;Lo;0;L;;;;;N;;;;; -10058;LINEAR B SYMBOL B064;Lo;0;L;;;;;N;;;;; -10059;LINEAR B SYMBOL B079;Lo;0;L;;;;;N;;;;; -1005A;LINEAR B SYMBOL B082;Lo;0;L;;;;;N;;;;; -1005B;LINEAR B SYMBOL B083;Lo;0;L;;;;;N;;;;; -1005C;LINEAR B SYMBOL B086;Lo;0;L;;;;;N;;;;; -1005D;LINEAR B SYMBOL B089;Lo;0;L;;;;;N;;;;; -10080;LINEAR B IDEOGRAM B100 MAN;Lo;0;L;;;;;N;;;;; -10081;LINEAR B IDEOGRAM B102 WOMAN;Lo;0;L;;;;;N;;;;; -10082;LINEAR B IDEOGRAM B104 DEER;Lo;0;L;;;;;N;;;;; -10083;LINEAR B IDEOGRAM B105 EQUID;Lo;0;L;;;;;N;;;;; -10084;LINEAR B IDEOGRAM B105F MARE;Lo;0;L;;;;;N;;;;; -10085;LINEAR B IDEOGRAM B105M STALLION;Lo;0;L;;;;;N;;;;; -10086;LINEAR B IDEOGRAM B106F EWE;Lo;0;L;;;;;N;;;;; -10087;LINEAR B IDEOGRAM B106M RAM;Lo;0;L;;;;;N;;;;; -10088;LINEAR B IDEOGRAM B107F SHE-GOAT;Lo;0;L;;;;;N;;;;; -10089;LINEAR B IDEOGRAM B107M HE-GOAT;Lo;0;L;;;;;N;;;;; -1008A;LINEAR B IDEOGRAM B108F SOW;Lo;0;L;;;;;N;;;;; -1008B;LINEAR B IDEOGRAM B108M BOAR;Lo;0;L;;;;;N;;;;; -1008C;LINEAR B IDEOGRAM B109F COW;Lo;0;L;;;;;N;;;;; -1008D;LINEAR B IDEOGRAM B109M BULL;Lo;0;L;;;;;N;;;;; -1008E;LINEAR B IDEOGRAM B120 WHEAT;Lo;0;L;;;;;N;;;;; -1008F;LINEAR B IDEOGRAM B121 BARLEY;Lo;0;L;;;;;N;;;;; -10090;LINEAR B IDEOGRAM B122 OLIVE;Lo;0;L;;;;;N;;;;; -10091;LINEAR B IDEOGRAM B123 SPICE;Lo;0;L;;;;;N;;;;; -10092;LINEAR B IDEOGRAM B125 CYPERUS;Lo;0;L;;;;;N;;;;; -10093;LINEAR B MONOGRAM B127 KAPO;Lo;0;L;;;;;N;;;;; -10094;LINEAR B MONOGRAM B128 KANAKO;Lo;0;L;;;;;N;;;;; -10095;LINEAR B IDEOGRAM B130 OIL;Lo;0;L;;;;;N;;;;; -10096;LINEAR B IDEOGRAM B131 WINE;Lo;0;L;;;;;N;;;;; -10097;LINEAR B IDEOGRAM B132;Lo;0;L;;;;;N;;;;; -10098;LINEAR B MONOGRAM B133 AREPA;Lo;0;L;;;;;N;;;;; -10099;LINEAR B MONOGRAM B135 MERI;Lo;0;L;;;;;N;;;;; -1009A;LINEAR B IDEOGRAM B140 BRONZE;Lo;0;L;;;;;N;;;;; -1009B;LINEAR B IDEOGRAM B141 GOLD;Lo;0;L;;;;;N;;;;; -1009C;LINEAR B IDEOGRAM B142;Lo;0;L;;;;;N;;;;; -1009D;LINEAR B IDEOGRAM B145 WOOL;Lo;0;L;;;;;N;;;;; -1009E;LINEAR B IDEOGRAM B146;Lo;0;L;;;;;N;;;;; -1009F;LINEAR B IDEOGRAM B150;Lo;0;L;;;;;N;;;;; -100A0;LINEAR B IDEOGRAM B151 HORN;Lo;0;L;;;;;N;;;;; -100A1;LINEAR B IDEOGRAM B152;Lo;0;L;;;;;N;;;;; -100A2;LINEAR B IDEOGRAM B153;Lo;0;L;;;;;N;;;;; -100A3;LINEAR B IDEOGRAM B154;Lo;0;L;;;;;N;;;;; -100A4;LINEAR B MONOGRAM B156 TURO2;Lo;0;L;;;;;N;;;;; -100A5;LINEAR B IDEOGRAM B157;Lo;0;L;;;;;N;;;;; -100A6;LINEAR B IDEOGRAM B158;Lo;0;L;;;;;N;;;;; -100A7;LINEAR B IDEOGRAM B159 CLOTH;Lo;0;L;;;;;N;;;;; -100A8;LINEAR B IDEOGRAM B160;Lo;0;L;;;;;N;;;;; -100A9;LINEAR B IDEOGRAM B161;Lo;0;L;;;;;N;;;;; -100AA;LINEAR B IDEOGRAM B162 GARMENT;Lo;0;L;;;;;N;;;;; -100AB;LINEAR B IDEOGRAM B163 ARMOUR;Lo;0;L;;;;;N;;;;; -100AC;LINEAR B IDEOGRAM B164;Lo;0;L;;;;;N;;;;; -100AD;LINEAR B IDEOGRAM B165;Lo;0;L;;;;;N;;;;; -100AE;LINEAR B IDEOGRAM B166;Lo;0;L;;;;;N;;;;; -100AF;LINEAR B IDEOGRAM B167;Lo;0;L;;;;;N;;;;; -100B0;LINEAR B IDEOGRAM B168;Lo;0;L;;;;;N;;;;; -100B1;LINEAR B IDEOGRAM B169;Lo;0;L;;;;;N;;;;; -100B2;LINEAR B IDEOGRAM B170;Lo;0;L;;;;;N;;;;; -100B3;LINEAR B IDEOGRAM B171;Lo;0;L;;;;;N;;;;; -100B4;LINEAR B IDEOGRAM B172;Lo;0;L;;;;;N;;;;; -100B5;LINEAR B IDEOGRAM B173 MONTH;Lo;0;L;;;;;N;;;;; -100B6;LINEAR B IDEOGRAM B174;Lo;0;L;;;;;N;;;;; -100B7;LINEAR B IDEOGRAM B176 TREE;Lo;0;L;;;;;N;;;;; -100B8;LINEAR B IDEOGRAM B177;Lo;0;L;;;;;N;;;;; -100B9;LINEAR B IDEOGRAM B178;Lo;0;L;;;;;N;;;;; -100BA;LINEAR B IDEOGRAM B179;Lo;0;L;;;;;N;;;;; -100BB;LINEAR B IDEOGRAM B180;Lo;0;L;;;;;N;;;;; -100BC;LINEAR B IDEOGRAM B181;Lo;0;L;;;;;N;;;;; -100BD;LINEAR B IDEOGRAM B182;Lo;0;L;;;;;N;;;;; -100BE;LINEAR B IDEOGRAM B183;Lo;0;L;;;;;N;;;;; -100BF;LINEAR B IDEOGRAM B184;Lo;0;L;;;;;N;;;;; -100C0;LINEAR B IDEOGRAM B185;Lo;0;L;;;;;N;;;;; -100C1;LINEAR B IDEOGRAM B189;Lo;0;L;;;;;N;;;;; -100C2;LINEAR B IDEOGRAM B190;Lo;0;L;;;;;N;;;;; -100C3;LINEAR B IDEOGRAM B191 HELMET;Lo;0;L;;;;;N;;;;; -100C4;LINEAR B IDEOGRAM B220 FOOTSTOOL;Lo;0;L;;;;;N;;;;; -100C5;LINEAR B IDEOGRAM B225 BATHTUB;Lo;0;L;;;;;N;;;;; -100C6;LINEAR B IDEOGRAM B230 SPEAR;Lo;0;L;;;;;N;;;;; -100C7;LINEAR B IDEOGRAM B231 ARROW;Lo;0;L;;;;;N;;;;; -100C8;LINEAR B IDEOGRAM B232;Lo;0;L;;;;;N;;;;; -100C9;LINEAR B IDEOGRAM B233 SWORD;Lo;0;L;;;;;N;;pug;;; -100CA;LINEAR B IDEOGRAM B234;Lo;0;L;;;;;N;;;;; -100CB;LINEAR B IDEOGRAM B236;Lo;0;L;;;;;N;;gup;;; -100CC;LINEAR B IDEOGRAM B240 WHEELED CHARIOT;Lo;0;L;;;;;N;;;;; -100CD;LINEAR B IDEOGRAM B241 CHARIOT;Lo;0;L;;;;;N;;;;; -100CE;LINEAR B IDEOGRAM B242 CHARIOT FRAME;Lo;0;L;;;;;N;;;;; -100CF;LINEAR B IDEOGRAM B243 WHEEL;Lo;0;L;;;;;N;;;;; -100D0;LINEAR B IDEOGRAM B245;Lo;0;L;;;;;N;;;;; -100D1;LINEAR B IDEOGRAM B246;Lo;0;L;;;;;N;;;;; -100D2;LINEAR B MONOGRAM B247 DIPTE;Lo;0;L;;;;;N;;;;; -100D3;LINEAR B IDEOGRAM B248;Lo;0;L;;;;;N;;;;; -100D4;LINEAR B IDEOGRAM B249;Lo;0;L;;;;;N;;;;; -100D5;LINEAR B IDEOGRAM B251;Lo;0;L;;;;;N;;;;; -100D6;LINEAR B IDEOGRAM B252;Lo;0;L;;;;;N;;;;; -100D7;LINEAR B IDEOGRAM B253;Lo;0;L;;;;;N;;;;; -100D8;LINEAR B IDEOGRAM B254 DART;Lo;0;L;;;;;N;;;;; -100D9;LINEAR B IDEOGRAM B255;Lo;0;L;;;;;N;;;;; -100DA;LINEAR B IDEOGRAM B256;Lo;0;L;;;;;N;;;;; -100DB;LINEAR B IDEOGRAM B257;Lo;0;L;;;;;N;;;;; -100DC;LINEAR B IDEOGRAM B258;Lo;0;L;;;;;N;;;;; -100DD;LINEAR B IDEOGRAM B259;Lo;0;L;;;;;N;;;;; -100DE;LINEAR B IDEOGRAM VESSEL B155;Lo;0;L;;;;;N;;;;; -100DF;LINEAR B IDEOGRAM VESSEL B200;Lo;0;L;;;;;N;;;;; -100E0;LINEAR B IDEOGRAM VESSEL B201;Lo;0;L;;;;;N;;;;; -100E1;LINEAR B IDEOGRAM VESSEL B202;Lo;0;L;;;;;N;;;;; -100E2;LINEAR B IDEOGRAM VESSEL B203;Lo;0;L;;;;;N;;;;; -100E3;LINEAR B IDEOGRAM VESSEL B204;Lo;0;L;;;;;N;;;;; -100E4;LINEAR B IDEOGRAM VESSEL B205;Lo;0;L;;;;;N;;;;; -100E5;LINEAR B IDEOGRAM VESSEL B206;Lo;0;L;;;;;N;;;;; -100E6;LINEAR B IDEOGRAM VESSEL B207;Lo;0;L;;;;;N;;;;; -100E7;LINEAR B IDEOGRAM VESSEL B208;Lo;0;L;;;;;N;;;;; -100E8;LINEAR B IDEOGRAM VESSEL B209;Lo;0;L;;;;;N;;;;; -100E9;LINEAR B IDEOGRAM VESSEL B210;Lo;0;L;;;;;N;;;;; -100EA;LINEAR B IDEOGRAM VESSEL B211;Lo;0;L;;;;;N;;;;; -100EB;LINEAR B IDEOGRAM VESSEL B212;Lo;0;L;;;;;N;;;;; -100EC;LINEAR B IDEOGRAM VESSEL B213;Lo;0;L;;;;;N;;;;; -100ED;LINEAR B IDEOGRAM VESSEL B214;Lo;0;L;;;;;N;;;;; -100EE;LINEAR B IDEOGRAM VESSEL B215;Lo;0;L;;;;;N;;;;; -100EF;LINEAR B IDEOGRAM VESSEL B216;Lo;0;L;;;;;N;;;;; -100F0;LINEAR B IDEOGRAM VESSEL B217;Lo;0;L;;;;;N;;;;; -100F1;LINEAR B IDEOGRAM VESSEL B218;Lo;0;L;;;;;N;;;;; -100F2;LINEAR B IDEOGRAM VESSEL B219;Lo;0;L;;;;;N;;;;; -100F3;LINEAR B IDEOGRAM VESSEL B221;Lo;0;L;;;;;N;;;;; -100F4;LINEAR B IDEOGRAM VESSEL B222;Lo;0;L;;;;;N;;;;; -100F5;LINEAR B IDEOGRAM VESSEL B226;Lo;0;L;;;;;N;;;;; -100F6;LINEAR B IDEOGRAM VESSEL B227;Lo;0;L;;;;;N;;;;; -100F7;LINEAR B IDEOGRAM VESSEL B228;Lo;0;L;;;;;N;;;;; -100F8;LINEAR B IDEOGRAM VESSEL B229;Lo;0;L;;;;;N;;;;; -100F9;LINEAR B IDEOGRAM VESSEL B250;Lo;0;L;;;;;N;;;;; -100FA;LINEAR B IDEOGRAM VESSEL B305;Lo;0;L;;;;;N;;;;; -10100;AEGEAN WORD SEPARATOR LINE;Po;0;L;;;;;N;;;;; -10101;AEGEAN WORD SEPARATOR DOT;Po;0;ON;;;;;N;;;;; -10102;AEGEAN CHECK MARK;So;0;L;;;;;N;;;;; -10107;AEGEAN NUMBER ONE;No;0;L;;;;1;N;;;;; -10108;AEGEAN NUMBER TWO;No;0;L;;;;2;N;;;;; -10109;AEGEAN NUMBER THREE;No;0;L;;;;3;N;;;;; -1010A;AEGEAN NUMBER FOUR;No;0;L;;;;4;N;;;;; -1010B;AEGEAN NUMBER FIVE;No;0;L;;;;5;N;;;;; -1010C;AEGEAN NUMBER SIX;No;0;L;;;;6;N;;;;; -1010D;AEGEAN NUMBER SEVEN;No;0;L;;;;7;N;;;;; -1010E;AEGEAN NUMBER EIGHT;No;0;L;;;;8;N;;;;; -1010F;AEGEAN NUMBER NINE;No;0;L;;;;9;N;;;;; -10110;AEGEAN NUMBER TEN;No;0;L;;;;10;N;;;;; -10111;AEGEAN NUMBER TWENTY;No;0;L;;;;20;N;;;;; -10112;AEGEAN NUMBER THIRTY;No;0;L;;;;30;N;;;;; -10113;AEGEAN NUMBER FORTY;No;0;L;;;;40;N;;;;; -10114;AEGEAN NUMBER FIFTY;No;0;L;;;;50;N;;;;; -10115;AEGEAN NUMBER SIXTY;No;0;L;;;;60;N;;;;; -10116;AEGEAN NUMBER SEVENTY;No;0;L;;;;70;N;;;;; -10117;AEGEAN NUMBER EIGHTY;No;0;L;;;;80;N;;;;; -10118;AEGEAN NUMBER NINETY;No;0;L;;;;90;N;;;;; -10119;AEGEAN NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; -1011A;AEGEAN NUMBER TWO HUNDRED;No;0;L;;;;200;N;;;;; -1011B;AEGEAN NUMBER THREE HUNDRED;No;0;L;;;;300;N;;;;; -1011C;AEGEAN NUMBER FOUR HUNDRED;No;0;L;;;;400;N;;;;; -1011D;AEGEAN NUMBER FIVE HUNDRED;No;0;L;;;;500;N;;;;; -1011E;AEGEAN NUMBER SIX HUNDRED;No;0;L;;;;600;N;;;;; -1011F;AEGEAN NUMBER SEVEN HUNDRED;No;0;L;;;;700;N;;;;; -10120;AEGEAN NUMBER EIGHT HUNDRED;No;0;L;;;;800;N;;;;; -10121;AEGEAN NUMBER NINE HUNDRED;No;0;L;;;;900;N;;;;; -10122;AEGEAN NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; -10123;AEGEAN NUMBER TWO THOUSAND;No;0;L;;;;2000;N;;;;; -10124;AEGEAN NUMBER THREE THOUSAND;No;0;L;;;;3000;N;;;;; -10125;AEGEAN NUMBER FOUR THOUSAND;No;0;L;;;;4000;N;;;;; -10126;AEGEAN NUMBER FIVE THOUSAND;No;0;L;;;;5000;N;;;;; -10127;AEGEAN NUMBER SIX THOUSAND;No;0;L;;;;6000;N;;;;; -10128;AEGEAN NUMBER SEVEN THOUSAND;No;0;L;;;;7000;N;;;;; -10129;AEGEAN NUMBER EIGHT THOUSAND;No;0;L;;;;8000;N;;;;; -1012A;AEGEAN NUMBER NINE THOUSAND;No;0;L;;;;9000;N;;;;; -1012B;AEGEAN NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;; -1012C;AEGEAN NUMBER TWENTY THOUSAND;No;0;L;;;;20000;N;;;;; -1012D;AEGEAN NUMBER THIRTY THOUSAND;No;0;L;;;;30000;N;;;;; -1012E;AEGEAN NUMBER FORTY THOUSAND;No;0;L;;;;40000;N;;;;; -1012F;AEGEAN NUMBER FIFTY THOUSAND;No;0;L;;;;50000;N;;;;; -10130;AEGEAN NUMBER SIXTY THOUSAND;No;0;L;;;;60000;N;;;;; -10131;AEGEAN NUMBER SEVENTY THOUSAND;No;0;L;;;;70000;N;;;;; -10132;AEGEAN NUMBER EIGHTY THOUSAND;No;0;L;;;;80000;N;;;;; -10133;AEGEAN NUMBER NINETY THOUSAND;No;0;L;;;;90000;N;;;;; -10137;AEGEAN WEIGHT BASE UNIT;So;0;L;;;;;N;;;;; -10138;AEGEAN WEIGHT FIRST SUBUNIT;So;0;L;;;;;N;;;;; -10139;AEGEAN WEIGHT SECOND SUBUNIT;So;0;L;;;;;N;;;;; -1013A;AEGEAN WEIGHT THIRD SUBUNIT;So;0;L;;;;;N;;;;; -1013B;AEGEAN WEIGHT FOURTH SUBUNIT;So;0;L;;;;;N;;;;; -1013C;AEGEAN DRY MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;; -1013D;AEGEAN LIQUID MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;; -1013E;AEGEAN MEASURE SECOND SUBUNIT;So;0;L;;;;;N;;;;; -1013F;AEGEAN MEASURE THIRD SUBUNIT;So;0;L;;;;;N;;;;; -10140;GREEK ACROPHONIC ATTIC ONE QUARTER;Nl;0;ON;;;;1/4;N;;;;; -10141;GREEK ACROPHONIC ATTIC ONE HALF;Nl;0;ON;;;;1/2;N;;;;; -10142;GREEK ACROPHONIC ATTIC ONE DRACHMA;Nl;0;ON;;;;1;N;;;;; -10143;GREEK ACROPHONIC ATTIC FIVE;Nl;0;ON;;;;5;N;;;;; -10144;GREEK ACROPHONIC ATTIC FIFTY;Nl;0;ON;;;;50;N;;;;; -10145;GREEK ACROPHONIC ATTIC FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -10146;GREEK ACROPHONIC ATTIC FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;; -10147;GREEK ACROPHONIC ATTIC FIFTY THOUSAND;Nl;0;ON;;;;50000;N;;;;; -10148;GREEK ACROPHONIC ATTIC FIVE TALENTS;Nl;0;ON;;;;5;N;;;;; -10149;GREEK ACROPHONIC ATTIC TEN TALENTS;Nl;0;ON;;;;10;N;;;;; -1014A;GREEK ACROPHONIC ATTIC FIFTY TALENTS;Nl;0;ON;;;;50;N;;;;; -1014B;GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS;Nl;0;ON;;;;100;N;;;;; -1014C;GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS;Nl;0;ON;;;;500;N;;;;; -1014D;GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS;Nl;0;ON;;;;1000;N;;;;; -1014E;GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS;Nl;0;ON;;;;5000;N;;;;; -1014F;GREEK ACROPHONIC ATTIC FIVE STATERS;Nl;0;ON;;;;5;N;;;;; -10150;GREEK ACROPHONIC ATTIC TEN STATERS;Nl;0;ON;;;;10;N;;;;; -10151;GREEK ACROPHONIC ATTIC FIFTY STATERS;Nl;0;ON;;;;50;N;;;;; -10152;GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS;Nl;0;ON;;;;100;N;;;;; -10153;GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS;Nl;0;ON;;;;500;N;;;;; -10154;GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS;Nl;0;ON;;;;1000;N;;;;; -10155;GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS;Nl;0;ON;;;;10000;N;;;;; -10156;GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS;Nl;0;ON;;;;50000;N;;;;; -10157;GREEK ACROPHONIC ATTIC TEN MNAS;Nl;0;ON;;;;10;N;;;;; -10158;GREEK ACROPHONIC HERAEUM ONE PLETHRON;Nl;0;ON;;;;1;N;;;;; -10159;GREEK ACROPHONIC THESPIAN ONE;Nl;0;ON;;;;1;N;;;;; -1015A;GREEK ACROPHONIC HERMIONIAN ONE;Nl;0;ON;;;;1;N;;;;; -1015B;GREEK ACROPHONIC EPIDAUREAN TWO;Nl;0;ON;;;;2;N;;;;; -1015C;GREEK ACROPHONIC THESPIAN TWO;Nl;0;ON;;;;2;N;;;;; -1015D;GREEK ACROPHONIC CYRENAIC TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;; -1015E;GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;; -1015F;GREEK ACROPHONIC TROEZENIAN FIVE;Nl;0;ON;;;;5;N;;;;; -10160;GREEK ACROPHONIC TROEZENIAN TEN;Nl;0;ON;;;;10;N;;;;; -10161;GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM;Nl;0;ON;;;;10;N;;;;; -10162;GREEK ACROPHONIC HERMIONIAN TEN;Nl;0;ON;;;;10;N;;;;; -10163;GREEK ACROPHONIC MESSENIAN TEN;Nl;0;ON;;;;10;N;;;;; -10164;GREEK ACROPHONIC THESPIAN TEN;Nl;0;ON;;;;10;N;;;;; -10165;GREEK ACROPHONIC THESPIAN THIRTY;Nl;0;ON;;;;30;N;;;;; -10166;GREEK ACROPHONIC TROEZENIAN FIFTY;Nl;0;ON;;;;50;N;;;;; -10167;GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM;Nl;0;ON;;;;50;N;;;;; -10168;GREEK ACROPHONIC HERMIONIAN FIFTY;Nl;0;ON;;;;50;N;;;;; -10169;GREEK ACROPHONIC THESPIAN FIFTY;Nl;0;ON;;;;50;N;;;;; -1016A;GREEK ACROPHONIC THESPIAN ONE HUNDRED;Nl;0;ON;;;;100;N;;;;; -1016B;GREEK ACROPHONIC THESPIAN THREE HUNDRED;Nl;0;ON;;;;300;N;;;;; -1016C;GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -1016D;GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -1016E;GREEK ACROPHONIC THESPIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -1016F;GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -10170;GREEK ACROPHONIC NAXIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -10171;GREEK ACROPHONIC THESPIAN ONE THOUSAND;Nl;0;ON;;;;1000;N;;;;; -10172;GREEK ACROPHONIC THESPIAN FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;; -10173;GREEK ACROPHONIC DELPHIC FIVE MNAS;Nl;0;ON;;;;5;N;;;;; -10174;GREEK ACROPHONIC STRATIAN FIFTY MNAS;Nl;0;ON;;;;50;N;;;;; -10175;GREEK ONE HALF SIGN;No;0;ON;;;;1/2;N;;;;; -10176;GREEK ONE HALF SIGN ALTERNATE FORM;No;0;ON;;;;1/2;N;;;;; -10177;GREEK TWO THIRDS SIGN;No;0;ON;;;;2/3;N;;;;; -10178;GREEK THREE QUARTERS SIGN;No;0;ON;;;;3/4;N;;;;; -10179;GREEK YEAR SIGN;So;0;ON;;;;;N;;;;; -1017A;GREEK TALENT SIGN;So;0;ON;;;;;N;;;;; -1017B;GREEK DRACHMA SIGN;So;0;ON;;;;;N;;;;; -1017C;GREEK OBOL SIGN;So;0;ON;;;;;N;;;;; -1017D;GREEK TWO OBOLS SIGN;So;0;ON;;;;;N;;;;; -1017E;GREEK THREE OBOLS SIGN;So;0;ON;;;;;N;;;;; -1017F;GREEK FOUR OBOLS SIGN;So;0;ON;;;;;N;;;;; -10180;GREEK FIVE OBOLS SIGN;So;0;ON;;;;;N;;;;; -10181;GREEK METRETES SIGN;So;0;ON;;;;;N;;;;; -10182;GREEK KYATHOS BASE SIGN;So;0;ON;;;;;N;;;;; -10183;GREEK LITRA SIGN;So;0;ON;;;;;N;;;;; -10184;GREEK OUNKIA SIGN;So;0;ON;;;;;N;;;;; -10185;GREEK XESTES SIGN;So;0;ON;;;;;N;;;;; -10186;GREEK ARTABE SIGN;So;0;ON;;;;;N;;;;; -10187;GREEK AROURA SIGN;So;0;ON;;;;;N;;;;; -10188;GREEK GRAMMA SIGN;So;0;ON;;;;;N;;;;; -10189;GREEK TRYBLION BASE SIGN;So;0;ON;;;;;N;;;;; -1018A;GREEK ZERO SIGN;No;0;ON;;;;0;N;;;;; -10190;ROMAN SEXTANS SIGN;So;0;ON;;;;;N;;;;; -10191;ROMAN UNCIA SIGN;So;0;ON;;;;;N;;;;; -10192;ROMAN SEMUNCIA SIGN;So;0;ON;;;;;N;;;;; -10193;ROMAN SEXTULA SIGN;So;0;ON;;;;;N;;;;; -10194;ROMAN DIMIDIA SEXTULA SIGN;So;0;ON;;;;;N;;;;; -10195;ROMAN SILIQUA SIGN;So;0;ON;;;;;N;;;;; -10196;ROMAN DENARIUS SIGN;So;0;ON;;;;;N;;;;; -10197;ROMAN QUINARIUS SIGN;So;0;ON;;;;;N;;;;; -10198;ROMAN SESTERTIUS SIGN;So;0;ON;;;;;N;;;;; -10199;ROMAN DUPONDIUS SIGN;So;0;ON;;;;;N;;;;; -1019A;ROMAN AS SIGN;So;0;ON;;;;;N;;;;; -1019B;ROMAN CENTURIAL SIGN;So;0;ON;;;;;N;;;;; -101D0;PHAISTOS DISC SIGN PEDESTRIAN;So;0;L;;;;;N;;;;; -101D1;PHAISTOS DISC SIGN PLUMED HEAD;So;0;L;;;;;N;;;;; -101D2;PHAISTOS DISC SIGN TATTOOED HEAD;So;0;L;;;;;N;;;;; -101D3;PHAISTOS DISC SIGN CAPTIVE;So;0;L;;;;;N;;;;; -101D4;PHAISTOS DISC SIGN CHILD;So;0;L;;;;;N;;;;; -101D5;PHAISTOS DISC SIGN WOMAN;So;0;L;;;;;N;;;;; -101D6;PHAISTOS DISC SIGN HELMET;So;0;L;;;;;N;;;;; -101D7;PHAISTOS DISC SIGN GAUNTLET;So;0;L;;;;;N;;;;; -101D8;PHAISTOS DISC SIGN TIARA;So;0;L;;;;;N;;;;; -101D9;PHAISTOS DISC SIGN ARROW;So;0;L;;;;;N;;;;; -101DA;PHAISTOS DISC SIGN BOW;So;0;L;;;;;N;;;;; -101DB;PHAISTOS DISC SIGN SHIELD;So;0;L;;;;;N;;;;; -101DC;PHAISTOS DISC SIGN CLUB;So;0;L;;;;;N;;;;; -101DD;PHAISTOS DISC SIGN MANACLES;So;0;L;;;;;N;;;;; -101DE;PHAISTOS DISC SIGN MATTOCK;So;0;L;;;;;N;;;;; -101DF;PHAISTOS DISC SIGN SAW;So;0;L;;;;;N;;;;; -101E0;PHAISTOS DISC SIGN LID;So;0;L;;;;;N;;;;; -101E1;PHAISTOS DISC SIGN BOOMERANG;So;0;L;;;;;N;;;;; -101E2;PHAISTOS DISC SIGN CARPENTRY PLANE;So;0;L;;;;;N;;;;; -101E3;PHAISTOS DISC SIGN DOLIUM;So;0;L;;;;;N;;;;; -101E4;PHAISTOS DISC SIGN COMB;So;0;L;;;;;N;;;;; -101E5;PHAISTOS DISC SIGN SLING;So;0;L;;;;;N;;;;; -101E6;PHAISTOS DISC SIGN COLUMN;So;0;L;;;;;N;;;;; -101E7;PHAISTOS DISC SIGN BEEHIVE;So;0;L;;;;;N;;;;; -101E8;PHAISTOS DISC SIGN SHIP;So;0;L;;;;;N;;;;; -101E9;PHAISTOS DISC SIGN HORN;So;0;L;;;;;N;;;;; -101EA;PHAISTOS DISC SIGN HIDE;So;0;L;;;;;N;;;;; -101EB;PHAISTOS DISC SIGN BULLS LEG;So;0;L;;;;;N;;;;; -101EC;PHAISTOS DISC SIGN CAT;So;0;L;;;;;N;;;;; -101ED;PHAISTOS DISC SIGN RAM;So;0;L;;;;;N;;;;; -101EE;PHAISTOS DISC SIGN EAGLE;So;0;L;;;;;N;;;;; -101EF;PHAISTOS DISC SIGN DOVE;So;0;L;;;;;N;;;;; -101F0;PHAISTOS DISC SIGN TUNNY;So;0;L;;;;;N;;;;; -101F1;PHAISTOS DISC SIGN BEE;So;0;L;;;;;N;;;;; -101F2;PHAISTOS DISC SIGN PLANE TREE;So;0;L;;;;;N;;;;; -101F3;PHAISTOS DISC SIGN VINE;So;0;L;;;;;N;;;;; -101F4;PHAISTOS DISC SIGN PAPYRUS;So;0;L;;;;;N;;;;; -101F5;PHAISTOS DISC SIGN ROSETTE;So;0;L;;;;;N;;;;; -101F6;PHAISTOS DISC SIGN LILY;So;0;L;;;;;N;;;;; -101F7;PHAISTOS DISC SIGN OX BACK;So;0;L;;;;;N;;;;; -101F8;PHAISTOS DISC SIGN FLUTE;So;0;L;;;;;N;;;;; -101F9;PHAISTOS DISC SIGN GRATER;So;0;L;;;;;N;;;;; -101FA;PHAISTOS DISC SIGN STRAINER;So;0;L;;;;;N;;;;; -101FB;PHAISTOS DISC SIGN SMALL AXE;So;0;L;;;;;N;;;;; -101FC;PHAISTOS DISC SIGN WAVY BAND;So;0;L;;;;;N;;;;; -101FD;PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE;Mn;220;NSM;;;;;N;;;;; -10280;LYCIAN LETTER A;Lo;0;L;;;;;N;;;;; -10281;LYCIAN LETTER E;Lo;0;L;;;;;N;;;;; -10282;LYCIAN LETTER B;Lo;0;L;;;;;N;;;;; -10283;LYCIAN LETTER BH;Lo;0;L;;;;;N;;;;; -10284;LYCIAN LETTER G;Lo;0;L;;;;;N;;;;; -10285;LYCIAN LETTER D;Lo;0;L;;;;;N;;;;; -10286;LYCIAN LETTER I;Lo;0;L;;;;;N;;;;; -10287;LYCIAN LETTER W;Lo;0;L;;;;;N;;;;; -10288;LYCIAN LETTER Z;Lo;0;L;;;;;N;;;;; -10289;LYCIAN LETTER TH;Lo;0;L;;;;;N;;;;; -1028A;LYCIAN LETTER J;Lo;0;L;;;;;N;;;;; -1028B;LYCIAN LETTER K;Lo;0;L;;;;;N;;;;; -1028C;LYCIAN LETTER Q;Lo;0;L;;;;;N;;;;; -1028D;LYCIAN LETTER L;Lo;0;L;;;;;N;;;;; -1028E;LYCIAN LETTER M;Lo;0;L;;;;;N;;;;; -1028F;LYCIAN LETTER N;Lo;0;L;;;;;N;;;;; -10290;LYCIAN LETTER MM;Lo;0;L;;;;;N;;;;; -10291;LYCIAN LETTER NN;Lo;0;L;;;;;N;;;;; -10292;LYCIAN LETTER U;Lo;0;L;;;;;N;;;;; -10293;LYCIAN LETTER P;Lo;0;L;;;;;N;;;;; -10294;LYCIAN LETTER KK;Lo;0;L;;;;;N;;;;; -10295;LYCIAN LETTER R;Lo;0;L;;;;;N;;;;; -10296;LYCIAN LETTER S;Lo;0;L;;;;;N;;;;; -10297;LYCIAN LETTER T;Lo;0;L;;;;;N;;;;; -10298;LYCIAN LETTER TT;Lo;0;L;;;;;N;;;;; -10299;LYCIAN LETTER AN;Lo;0;L;;;;;N;;;;; -1029A;LYCIAN LETTER EN;Lo;0;L;;;;;N;;;;; -1029B;LYCIAN LETTER H;Lo;0;L;;;;;N;;;;; -1029C;LYCIAN LETTER X;Lo;0;L;;;;;N;;;;; -102A0;CARIAN LETTER A;Lo;0;L;;;;;N;;;;; -102A1;CARIAN LETTER P2;Lo;0;L;;;;;N;;;;; -102A2;CARIAN LETTER D;Lo;0;L;;;;;N;;;;; -102A3;CARIAN LETTER L;Lo;0;L;;;;;N;;;;; -102A4;CARIAN LETTER UUU;Lo;0;L;;;;;N;;;;; -102A5;CARIAN LETTER R;Lo;0;L;;;;;N;;;;; -102A6;CARIAN LETTER LD;Lo;0;L;;;;;N;;;;; -102A7;CARIAN LETTER A2;Lo;0;L;;;;;N;;;;; -102A8;CARIAN LETTER Q;Lo;0;L;;;;;N;;;;; -102A9;CARIAN LETTER B;Lo;0;L;;;;;N;;;;; -102AA;CARIAN LETTER M;Lo;0;L;;;;;N;;;;; -102AB;CARIAN LETTER O;Lo;0;L;;;;;N;;;;; -102AC;CARIAN LETTER D2;Lo;0;L;;;;;N;;;;; -102AD;CARIAN LETTER T;Lo;0;L;;;;;N;;;;; -102AE;CARIAN LETTER SH;Lo;0;L;;;;;N;;;;; -102AF;CARIAN LETTER SH2;Lo;0;L;;;;;N;;;;; -102B0;CARIAN LETTER S;Lo;0;L;;;;;N;;;;; -102B1;CARIAN LETTER C-18;Lo;0;L;;;;;N;;;;; -102B2;CARIAN LETTER U;Lo;0;L;;;;;N;;;;; -102B3;CARIAN LETTER NN;Lo;0;L;;;;;N;;;;; -102B4;CARIAN LETTER X;Lo;0;L;;;;;N;;;;; -102B5;CARIAN LETTER N;Lo;0;L;;;;;N;;;;; -102B6;CARIAN LETTER TT2;Lo;0;L;;;;;N;;;;; -102B7;CARIAN LETTER P;Lo;0;L;;;;;N;;;;; -102B8;CARIAN LETTER SS;Lo;0;L;;;;;N;;;;; -102B9;CARIAN LETTER I;Lo;0;L;;;;;N;;;;; -102BA;CARIAN LETTER E;Lo;0;L;;;;;N;;;;; -102BB;CARIAN LETTER UUUU;Lo;0;L;;;;;N;;;;; -102BC;CARIAN LETTER K;Lo;0;L;;;;;N;;;;; -102BD;CARIAN LETTER K2;Lo;0;L;;;;;N;;;;; -102BE;CARIAN LETTER ND;Lo;0;L;;;;;N;;;;; -102BF;CARIAN LETTER UU;Lo;0;L;;;;;N;;;;; -102C0;CARIAN LETTER G;Lo;0;L;;;;;N;;;;; -102C1;CARIAN LETTER G2;Lo;0;L;;;;;N;;;;; -102C2;CARIAN LETTER ST;Lo;0;L;;;;;N;;;;; -102C3;CARIAN LETTER ST2;Lo;0;L;;;;;N;;;;; -102C4;CARIAN LETTER NG;Lo;0;L;;;;;N;;;;; -102C5;CARIAN LETTER II;Lo;0;L;;;;;N;;;;; -102C6;CARIAN LETTER C-39;Lo;0;L;;;;;N;;;;; -102C7;CARIAN LETTER TT;Lo;0;L;;;;;N;;;;; -102C8;CARIAN LETTER UUU2;Lo;0;L;;;;;N;;;;; -102C9;CARIAN LETTER RR;Lo;0;L;;;;;N;;;;; -102CA;CARIAN LETTER MB;Lo;0;L;;;;;N;;;;; -102CB;CARIAN LETTER MB2;Lo;0;L;;;;;N;;;;; -102CC;CARIAN LETTER MB3;Lo;0;L;;;;;N;;;;; -102CD;CARIAN LETTER MB4;Lo;0;L;;;;;N;;;;; -102CE;CARIAN LETTER LD2;Lo;0;L;;;;;N;;;;; -102CF;CARIAN LETTER E2;Lo;0;L;;;;;N;;;;; -102D0;CARIAN LETTER UUU3;Lo;0;L;;;;;N;;;;; -10300;OLD ITALIC LETTER A;Lo;0;L;;;;;N;;;;; -10301;OLD ITALIC LETTER BE;Lo;0;L;;;;;N;;;;; -10302;OLD ITALIC LETTER KE;Lo;0;L;;;;;N;;;;; -10303;OLD ITALIC LETTER DE;Lo;0;L;;;;;N;;;;; -10304;OLD ITALIC LETTER E;Lo;0;L;;;;;N;;;;; -10305;OLD ITALIC LETTER VE;Lo;0;L;;;;;N;;;;; -10306;OLD ITALIC LETTER ZE;Lo;0;L;;;;;N;;;;; -10307;OLD ITALIC LETTER HE;Lo;0;L;;;;;N;;;;; -10308;OLD ITALIC LETTER THE;Lo;0;L;;;;;N;;;;; -10309;OLD ITALIC LETTER I;Lo;0;L;;;;;N;;;;; -1030A;OLD ITALIC LETTER KA;Lo;0;L;;;;;N;;;;; -1030B;OLD ITALIC LETTER EL;Lo;0;L;;;;;N;;;;; -1030C;OLD ITALIC LETTER EM;Lo;0;L;;;;;N;;;;; -1030D;OLD ITALIC LETTER EN;Lo;0;L;;;;;N;;;;; -1030E;OLD ITALIC LETTER ESH;Lo;0;L;;;;;N;;;;; -1030F;OLD ITALIC LETTER O;Lo;0;L;;;;;N;;Faliscan;;; -10310;OLD ITALIC LETTER PE;Lo;0;L;;;;;N;;;;; -10311;OLD ITALIC LETTER SHE;Lo;0;L;;;;;N;;;;; -10312;OLD ITALIC LETTER KU;Lo;0;L;;;;;N;;;;; -10313;OLD ITALIC LETTER ER;Lo;0;L;;;;;N;;;;; -10314;OLD ITALIC LETTER ES;Lo;0;L;;;;;N;;;;; -10315;OLD ITALIC LETTER TE;Lo;0;L;;;;;N;;;;; -10316;OLD ITALIC LETTER U;Lo;0;L;;;;;N;;;;; -10317;OLD ITALIC LETTER EKS;Lo;0;L;;;;;N;;Faliscan;;; -10318;OLD ITALIC LETTER PHE;Lo;0;L;;;;;N;;;;; -10319;OLD ITALIC LETTER KHE;Lo;0;L;;;;;N;;;;; -1031A;OLD ITALIC LETTER EF;Lo;0;L;;;;;N;;;;; -1031B;OLD ITALIC LETTER ERS;Lo;0;L;;;;;N;;Umbrian;;; -1031C;OLD ITALIC LETTER CHE;Lo;0;L;;;;;N;;Umbrian;;; -1031D;OLD ITALIC LETTER II;Lo;0;L;;;;;N;;Oscan;;; -1031E;OLD ITALIC LETTER UU;Lo;0;L;;;;;N;;Oscan;;; -10320;OLD ITALIC NUMERAL ONE;No;0;L;;;;1;N;;;;; -10321;OLD ITALIC NUMERAL FIVE;No;0;L;;;;5;N;;;;; -10322;OLD ITALIC NUMERAL TEN;No;0;L;;;;10;N;;;;; -10323;OLD ITALIC NUMERAL FIFTY;No;0;L;;;;50;N;;;;; -10330;GOTHIC LETTER AHSA;Lo;0;L;;;;;N;;;;; -10331;GOTHIC LETTER BAIRKAN;Lo;0;L;;;;;N;;;;; -10332;GOTHIC LETTER GIBA;Lo;0;L;;;;;N;;;;; -10333;GOTHIC LETTER DAGS;Lo;0;L;;;;;N;;;;; -10334;GOTHIC LETTER AIHVUS;Lo;0;L;;;;;N;;;;; -10335;GOTHIC LETTER QAIRTHRA;Lo;0;L;;;;;N;;;;; -10336;GOTHIC LETTER IUJA;Lo;0;L;;;;;N;;;;; -10337;GOTHIC LETTER HAGL;Lo;0;L;;;;;N;;;;; -10338;GOTHIC LETTER THIUTH;Lo;0;L;;;;;N;;;;; -10339;GOTHIC LETTER EIS;Lo;0;L;;;;;N;;;;; -1033A;GOTHIC LETTER KUSMA;Lo;0;L;;;;;N;;;;; -1033B;GOTHIC LETTER LAGUS;Lo;0;L;;;;;N;;;;; -1033C;GOTHIC LETTER MANNA;Lo;0;L;;;;;N;;;;; -1033D;GOTHIC LETTER NAUTHS;Lo;0;L;;;;;N;;;;; -1033E;GOTHIC LETTER JER;Lo;0;L;;;;;N;;;;; -1033F;GOTHIC LETTER URUS;Lo;0;L;;;;;N;;;;; -10340;GOTHIC LETTER PAIRTHRA;Lo;0;L;;;;;N;;;;; -10341;GOTHIC LETTER NINETY;Nl;0;L;;;;90;N;;;;; -10342;GOTHIC LETTER RAIDA;Lo;0;L;;;;;N;;;;; -10343;GOTHIC LETTER SAUIL;Lo;0;L;;;;;N;;;;; -10344;GOTHIC LETTER TEIWS;Lo;0;L;;;;;N;;;;; -10345;GOTHIC LETTER WINJA;Lo;0;L;;;;;N;;;;; -10346;GOTHIC LETTER FAIHU;Lo;0;L;;;;;N;;;;; -10347;GOTHIC LETTER IGGWS;Lo;0;L;;;;;N;;;;; -10348;GOTHIC LETTER HWAIR;Lo;0;L;;;;;N;;;;; -10349;GOTHIC LETTER OTHAL;Lo;0;L;;;;;N;;;;; -1034A;GOTHIC LETTER NINE HUNDRED;Nl;0;L;;;;900;N;;;;; -10380;UGARITIC LETTER ALPA;Lo;0;L;;;;;N;;;;; -10381;UGARITIC LETTER BETA;Lo;0;L;;;;;N;;;;; -10382;UGARITIC LETTER GAMLA;Lo;0;L;;;;;N;;;;; -10383;UGARITIC LETTER KHA;Lo;0;L;;;;;N;;;;; -10384;UGARITIC LETTER DELTA;Lo;0;L;;;;;N;;;;; -10385;UGARITIC LETTER HO;Lo;0;L;;;;;N;;;;; -10386;UGARITIC LETTER WO;Lo;0;L;;;;;N;;;;; -10387;UGARITIC LETTER ZETA;Lo;0;L;;;;;N;;;;; -10388;UGARITIC LETTER HOTA;Lo;0;L;;;;;N;;;;; -10389;UGARITIC LETTER TET;Lo;0;L;;;;;N;;;;; -1038A;UGARITIC LETTER YOD;Lo;0;L;;;;;N;;;;; -1038B;UGARITIC LETTER KAF;Lo;0;L;;;;;N;;;;; -1038C;UGARITIC LETTER SHIN;Lo;0;L;;;;;N;;;;; -1038D;UGARITIC LETTER LAMDA;Lo;0;L;;;;;N;;;;; -1038E;UGARITIC LETTER MEM;Lo;0;L;;;;;N;;;;; -1038F;UGARITIC LETTER DHAL;Lo;0;L;;;;;N;;;;; -10390;UGARITIC LETTER NUN;Lo;0;L;;;;;N;;;;; -10391;UGARITIC LETTER ZU;Lo;0;L;;;;;N;;;;; -10392;UGARITIC LETTER SAMKA;Lo;0;L;;;;;N;;;;; -10393;UGARITIC LETTER AIN;Lo;0;L;;;;;N;;;;; -10394;UGARITIC LETTER PU;Lo;0;L;;;;;N;;;;; -10395;UGARITIC LETTER SADE;Lo;0;L;;;;;N;;;;; -10396;UGARITIC LETTER QOPA;Lo;0;L;;;;;N;;;;; -10397;UGARITIC LETTER RASHA;Lo;0;L;;;;;N;;;;; -10398;UGARITIC LETTER THANNA;Lo;0;L;;;;;N;;;;; -10399;UGARITIC LETTER GHAIN;Lo;0;L;;;;;N;;;;; -1039A;UGARITIC LETTER TO;Lo;0;L;;;;;N;;;;; -1039B;UGARITIC LETTER I;Lo;0;L;;;;;N;;;;; -1039C;UGARITIC LETTER U;Lo;0;L;;;;;N;;;;; -1039D;UGARITIC LETTER SSU;Lo;0;L;;;;;N;;;;; -1039F;UGARITIC WORD DIVIDER;Po;0;L;;;;;N;;;;; -103A0;OLD PERSIAN SIGN A;Lo;0;L;;;;;N;;;;; -103A1;OLD PERSIAN SIGN I;Lo;0;L;;;;;N;;;;; -103A2;OLD PERSIAN SIGN U;Lo;0;L;;;;;N;;;;; -103A3;OLD PERSIAN SIGN KA;Lo;0;L;;;;;N;;;;; -103A4;OLD PERSIAN SIGN KU;Lo;0;L;;;;;N;;;;; -103A5;OLD PERSIAN SIGN GA;Lo;0;L;;;;;N;;;;; -103A6;OLD PERSIAN SIGN GU;Lo;0;L;;;;;N;;;;; -103A7;OLD PERSIAN SIGN XA;Lo;0;L;;;;;N;;;;; -103A8;OLD PERSIAN SIGN CA;Lo;0;L;;;;;N;;;;; -103A9;OLD PERSIAN SIGN JA;Lo;0;L;;;;;N;;;;; -103AA;OLD PERSIAN SIGN JI;Lo;0;L;;;;;N;;;;; -103AB;OLD PERSIAN SIGN TA;Lo;0;L;;;;;N;;;;; -103AC;OLD PERSIAN SIGN TU;Lo;0;L;;;;;N;;;;; -103AD;OLD PERSIAN SIGN DA;Lo;0;L;;;;;N;;;;; -103AE;OLD PERSIAN SIGN DI;Lo;0;L;;;;;N;;;;; -103AF;OLD PERSIAN SIGN DU;Lo;0;L;;;;;N;;;;; -103B0;OLD PERSIAN SIGN THA;Lo;0;L;;;;;N;;;;; -103B1;OLD PERSIAN SIGN PA;Lo;0;L;;;;;N;;;;; -103B2;OLD PERSIAN SIGN BA;Lo;0;L;;;;;N;;;;; -103B3;OLD PERSIAN SIGN FA;Lo;0;L;;;;;N;;;;; -103B4;OLD PERSIAN SIGN NA;Lo;0;L;;;;;N;;;;; -103B5;OLD PERSIAN SIGN NU;Lo;0;L;;;;;N;;;;; -103B6;OLD PERSIAN SIGN MA;Lo;0;L;;;;;N;;;;; -103B7;OLD PERSIAN SIGN MI;Lo;0;L;;;;;N;;;;; -103B8;OLD PERSIAN SIGN MU;Lo;0;L;;;;;N;;;;; -103B9;OLD PERSIAN SIGN YA;Lo;0;L;;;;;N;;;;; -103BA;OLD PERSIAN SIGN VA;Lo;0;L;;;;;N;;;;; -103BB;OLD PERSIAN SIGN VI;Lo;0;L;;;;;N;;;;; -103BC;OLD PERSIAN SIGN RA;Lo;0;L;;;;;N;;;;; -103BD;OLD PERSIAN SIGN RU;Lo;0;L;;;;;N;;;;; -103BE;OLD PERSIAN SIGN LA;Lo;0;L;;;;;N;;;;; -103BF;OLD PERSIAN SIGN SA;Lo;0;L;;;;;N;;;;; -103C0;OLD PERSIAN SIGN ZA;Lo;0;L;;;;;N;;;;; -103C1;OLD PERSIAN SIGN SHA;Lo;0;L;;;;;N;;;;; -103C2;OLD PERSIAN SIGN SSA;Lo;0;L;;;;;N;;;;; -103C3;OLD PERSIAN SIGN HA;Lo;0;L;;;;;N;;;;; -103C8;OLD PERSIAN SIGN AURAMAZDAA;Lo;0;L;;;;;N;;;;; -103C9;OLD PERSIAN SIGN AURAMAZDAA-2;Lo;0;L;;;;;N;;;;; -103CA;OLD PERSIAN SIGN AURAMAZDAAHA;Lo;0;L;;;;;N;;;;; -103CB;OLD PERSIAN SIGN XSHAAYATHIYA;Lo;0;L;;;;;N;;;;; -103CC;OLD PERSIAN SIGN DAHYAAUSH;Lo;0;L;;;;;N;;;;; -103CD;OLD PERSIAN SIGN DAHYAAUSH-2;Lo;0;L;;;;;N;;;;; -103CE;OLD PERSIAN SIGN BAGA;Lo;0;L;;;;;N;;;;; -103CF;OLD PERSIAN SIGN BUUMISH;Lo;0;L;;;;;N;;;;; -103D0;OLD PERSIAN WORD DIVIDER;Po;0;L;;;;;N;;;;; -103D1;OLD PERSIAN NUMBER ONE;Nl;0;L;;;;1;N;;;;; -103D2;OLD PERSIAN NUMBER TWO;Nl;0;L;;;;2;N;;;;; -103D3;OLD PERSIAN NUMBER TEN;Nl;0;L;;;;10;N;;;;; -103D4;OLD PERSIAN NUMBER TWENTY;Nl;0;L;;;;20;N;;;;; -103D5;OLD PERSIAN NUMBER HUNDRED;Nl;0;L;;;;100;N;;;;; -10400;DESERET CAPITAL LETTER LONG I;Lu;0;L;;;;;N;;;;10428; -10401;DESERET CAPITAL LETTER LONG E;Lu;0;L;;;;;N;;;;10429; -10402;DESERET CAPITAL LETTER LONG A;Lu;0;L;;;;;N;;;;1042A; -10403;DESERET CAPITAL LETTER LONG AH;Lu;0;L;;;;;N;;;;1042B; -10404;DESERET CAPITAL LETTER LONG O;Lu;0;L;;;;;N;;;;1042C; -10405;DESERET CAPITAL LETTER LONG OO;Lu;0;L;;;;;N;;;;1042D; -10406;DESERET CAPITAL LETTER SHORT I;Lu;0;L;;;;;N;;;;1042E; -10407;DESERET CAPITAL LETTER SHORT E;Lu;0;L;;;;;N;;;;1042F; -10408;DESERET CAPITAL LETTER SHORT A;Lu;0;L;;;;;N;;;;10430; -10409;DESERET CAPITAL LETTER SHORT AH;Lu;0;L;;;;;N;;;;10431; -1040A;DESERET CAPITAL LETTER SHORT O;Lu;0;L;;;;;N;;;;10432; -1040B;DESERET CAPITAL LETTER SHORT OO;Lu;0;L;;;;;N;;;;10433; -1040C;DESERET CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;10434; -1040D;DESERET CAPITAL LETTER OW;Lu;0;L;;;;;N;;;;10435; -1040E;DESERET CAPITAL LETTER WU;Lu;0;L;;;;;N;;;;10436; -1040F;DESERET CAPITAL LETTER YEE;Lu;0;L;;;;;N;;;;10437; -10410;DESERET CAPITAL LETTER H;Lu;0;L;;;;;N;;;;10438; -10411;DESERET CAPITAL LETTER PEE;Lu;0;L;;;;;N;;;;10439; -10412;DESERET CAPITAL LETTER BEE;Lu;0;L;;;;;N;;;;1043A; -10413;DESERET CAPITAL LETTER TEE;Lu;0;L;;;;;N;;;;1043B; -10414;DESERET CAPITAL LETTER DEE;Lu;0;L;;;;;N;;;;1043C; -10415;DESERET CAPITAL LETTER CHEE;Lu;0;L;;;;;N;;;;1043D; -10416;DESERET CAPITAL LETTER JEE;Lu;0;L;;;;;N;;;;1043E; -10417;DESERET CAPITAL LETTER KAY;Lu;0;L;;;;;N;;;;1043F; -10418;DESERET CAPITAL LETTER GAY;Lu;0;L;;;;;N;;;;10440; -10419;DESERET CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;10441; -1041A;DESERET CAPITAL LETTER VEE;Lu;0;L;;;;;N;;;;10442; -1041B;DESERET CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;10443; -1041C;DESERET CAPITAL LETTER THEE;Lu;0;L;;;;;N;;;;10444; -1041D;DESERET CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;10445; -1041E;DESERET CAPITAL LETTER ZEE;Lu;0;L;;;;;N;;;;10446; -1041F;DESERET CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;10447; -10420;DESERET CAPITAL LETTER ZHEE;Lu;0;L;;;;;N;;;;10448; -10421;DESERET CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;10449; -10422;DESERET CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;1044A; -10423;DESERET CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;1044B; -10424;DESERET CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;1044C; -10425;DESERET CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;1044D; -10426;DESERET CAPITAL LETTER OI;Lu;0;L;;;;;N;;;;1044E; -10427;DESERET CAPITAL LETTER EW;Lu;0;L;;;;;N;;;;1044F; -10428;DESERET SMALL LETTER LONG I;Ll;0;L;;;;;N;;;10400;;10400 -10429;DESERET SMALL LETTER LONG E;Ll;0;L;;;;;N;;;10401;;10401 -1042A;DESERET SMALL LETTER LONG A;Ll;0;L;;;;;N;;;10402;;10402 -1042B;DESERET SMALL LETTER LONG AH;Ll;0;L;;;;;N;;;10403;;10403 -1042C;DESERET SMALL LETTER LONG O;Ll;0;L;;;;;N;;;10404;;10404 -1042D;DESERET SMALL LETTER LONG OO;Ll;0;L;;;;;N;;;10405;;10405 -1042E;DESERET SMALL LETTER SHORT I;Ll;0;L;;;;;N;;;10406;;10406 -1042F;DESERET SMALL LETTER SHORT E;Ll;0;L;;;;;N;;;10407;;10407 -10430;DESERET SMALL LETTER SHORT A;Ll;0;L;;;;;N;;;10408;;10408 -10431;DESERET SMALL LETTER SHORT AH;Ll;0;L;;;;;N;;;10409;;10409 -10432;DESERET SMALL LETTER SHORT O;Ll;0;L;;;;;N;;;1040A;;1040A -10433;DESERET SMALL LETTER SHORT OO;Ll;0;L;;;;;N;;;1040B;;1040B -10434;DESERET SMALL LETTER AY;Ll;0;L;;;;;N;;;1040C;;1040C -10435;DESERET SMALL LETTER OW;Ll;0;L;;;;;N;;;1040D;;1040D -10436;DESERET SMALL LETTER WU;Ll;0;L;;;;;N;;;1040E;;1040E -10437;DESERET SMALL LETTER YEE;Ll;0;L;;;;;N;;;1040F;;1040F -10438;DESERET SMALL LETTER H;Ll;0;L;;;;;N;;;10410;;10410 -10439;DESERET SMALL LETTER PEE;Ll;0;L;;;;;N;;;10411;;10411 -1043A;DESERET SMALL LETTER BEE;Ll;0;L;;;;;N;;;10412;;10412 -1043B;DESERET SMALL LETTER TEE;Ll;0;L;;;;;N;;;10413;;10413 -1043C;DESERET SMALL LETTER DEE;Ll;0;L;;;;;N;;;10414;;10414 -1043D;DESERET SMALL LETTER CHEE;Ll;0;L;;;;;N;;;10415;;10415 -1043E;DESERET SMALL LETTER JEE;Ll;0;L;;;;;N;;;10416;;10416 -1043F;DESERET SMALL LETTER KAY;Ll;0;L;;;;;N;;;10417;;10417 -10440;DESERET SMALL LETTER GAY;Ll;0;L;;;;;N;;;10418;;10418 -10441;DESERET SMALL LETTER EF;Ll;0;L;;;;;N;;;10419;;10419 -10442;DESERET SMALL LETTER VEE;Ll;0;L;;;;;N;;;1041A;;1041A -10443;DESERET SMALL LETTER ETH;Ll;0;L;;;;;N;;;1041B;;1041B -10444;DESERET SMALL LETTER THEE;Ll;0;L;;;;;N;;;1041C;;1041C -10445;DESERET SMALL LETTER ES;Ll;0;L;;;;;N;;;1041D;;1041D -10446;DESERET SMALL LETTER ZEE;Ll;0;L;;;;;N;;;1041E;;1041E -10447;DESERET SMALL LETTER ESH;Ll;0;L;;;;;N;;;1041F;;1041F -10448;DESERET SMALL LETTER ZHEE;Ll;0;L;;;;;N;;;10420;;10420 -10449;DESERET SMALL LETTER ER;Ll;0;L;;;;;N;;;10421;;10421 -1044A;DESERET SMALL LETTER EL;Ll;0;L;;;;;N;;;10422;;10422 -1044B;DESERET SMALL LETTER EM;Ll;0;L;;;;;N;;;10423;;10423 -1044C;DESERET SMALL LETTER EN;Ll;0;L;;;;;N;;;10424;;10424 -1044D;DESERET SMALL LETTER ENG;Ll;0;L;;;;;N;;;10425;;10425 -1044E;DESERET SMALL LETTER OI;Ll;0;L;;;;;N;;;10426;;10426 -1044F;DESERET SMALL LETTER EW;Ll;0;L;;;;;N;;;10427;;10427 -10450;SHAVIAN LETTER PEEP;Lo;0;L;;;;;N;;;;; -10451;SHAVIAN LETTER TOT;Lo;0;L;;;;;N;;;;; -10452;SHAVIAN LETTER KICK;Lo;0;L;;;;;N;;;;; -10453;SHAVIAN LETTER FEE;Lo;0;L;;;;;N;;;;; -10454;SHAVIAN LETTER THIGH;Lo;0;L;;;;;N;;;;; -10455;SHAVIAN LETTER SO;Lo;0;L;;;;;N;;;;; -10456;SHAVIAN LETTER SURE;Lo;0;L;;;;;N;;;;; -10457;SHAVIAN LETTER CHURCH;Lo;0;L;;;;;N;;;;; -10458;SHAVIAN LETTER YEA;Lo;0;L;;;;;N;;;;; -10459;SHAVIAN LETTER HUNG;Lo;0;L;;;;;N;;;;; -1045A;SHAVIAN LETTER BIB;Lo;0;L;;;;;N;;;;; -1045B;SHAVIAN LETTER DEAD;Lo;0;L;;;;;N;;;;; -1045C;SHAVIAN LETTER GAG;Lo;0;L;;;;;N;;;;; -1045D;SHAVIAN LETTER VOW;Lo;0;L;;;;;N;;;;; -1045E;SHAVIAN LETTER THEY;Lo;0;L;;;;;N;;;;; -1045F;SHAVIAN LETTER ZOO;Lo;0;L;;;;;N;;;;; -10460;SHAVIAN LETTER MEASURE;Lo;0;L;;;;;N;;;;; -10461;SHAVIAN LETTER JUDGE;Lo;0;L;;;;;N;;;;; -10462;SHAVIAN LETTER WOE;Lo;0;L;;;;;N;;;;; -10463;SHAVIAN LETTER HA-HA;Lo;0;L;;;;;N;;;;; -10464;SHAVIAN LETTER LOLL;Lo;0;L;;;;;N;;;;; -10465;SHAVIAN LETTER MIME;Lo;0;L;;;;;N;;;;; -10466;SHAVIAN LETTER IF;Lo;0;L;;;;;N;;;;; -10467;SHAVIAN LETTER EGG;Lo;0;L;;;;;N;;;;; -10468;SHAVIAN LETTER ASH;Lo;0;L;;;;;N;;;;; -10469;SHAVIAN LETTER ADO;Lo;0;L;;;;;N;;;;; -1046A;SHAVIAN LETTER ON;Lo;0;L;;;;;N;;;;; -1046B;SHAVIAN LETTER WOOL;Lo;0;L;;;;;N;;;;; -1046C;SHAVIAN LETTER OUT;Lo;0;L;;;;;N;;;;; -1046D;SHAVIAN LETTER AH;Lo;0;L;;;;;N;;;;; -1046E;SHAVIAN LETTER ROAR;Lo;0;L;;;;;N;;;;; -1046F;SHAVIAN LETTER NUN;Lo;0;L;;;;;N;;;;; -10470;SHAVIAN LETTER EAT;Lo;0;L;;;;;N;;;;; -10471;SHAVIAN LETTER AGE;Lo;0;L;;;;;N;;;;; -10472;SHAVIAN LETTER ICE;Lo;0;L;;;;;N;;;;; -10473;SHAVIAN LETTER UP;Lo;0;L;;;;;N;;;;; -10474;SHAVIAN LETTER OAK;Lo;0;L;;;;;N;;;;; -10475;SHAVIAN LETTER OOZE;Lo;0;L;;;;;N;;;;; -10476;SHAVIAN LETTER OIL;Lo;0;L;;;;;N;;;;; -10477;SHAVIAN LETTER AWE;Lo;0;L;;;;;N;;;;; -10478;SHAVIAN LETTER ARE;Lo;0;L;;;;;N;;;;; -10479;SHAVIAN LETTER OR;Lo;0;L;;;;;N;;;;; -1047A;SHAVIAN LETTER AIR;Lo;0;L;;;;;N;;;;; -1047B;SHAVIAN LETTER ERR;Lo;0;L;;;;;N;;;;; -1047C;SHAVIAN LETTER ARRAY;Lo;0;L;;;;;N;;;;; -1047D;SHAVIAN LETTER EAR;Lo;0;L;;;;;N;;;;; -1047E;SHAVIAN LETTER IAN;Lo;0;L;;;;;N;;;;; -1047F;SHAVIAN LETTER YEW;Lo;0;L;;;;;N;;;;; -10480;OSMANYA LETTER ALEF;Lo;0;L;;;;;N;;;;; -10481;OSMANYA LETTER BA;Lo;0;L;;;;;N;;;;; -10482;OSMANYA LETTER TA;Lo;0;L;;;;;N;;;;; -10483;OSMANYA LETTER JA;Lo;0;L;;;;;N;;;;; -10484;OSMANYA LETTER XA;Lo;0;L;;;;;N;;;;; -10485;OSMANYA LETTER KHA;Lo;0;L;;;;;N;;;;; -10486;OSMANYA LETTER DEEL;Lo;0;L;;;;;N;;;;; -10487;OSMANYA LETTER RA;Lo;0;L;;;;;N;;;;; -10488;OSMANYA LETTER SA;Lo;0;L;;;;;N;;;;; -10489;OSMANYA LETTER SHIIN;Lo;0;L;;;;;N;;;;; -1048A;OSMANYA LETTER DHA;Lo;0;L;;;;;N;;;;; -1048B;OSMANYA LETTER CAYN;Lo;0;L;;;;;N;;;;; -1048C;OSMANYA LETTER GA;Lo;0;L;;;;;N;;;;; -1048D;OSMANYA LETTER FA;Lo;0;L;;;;;N;;;;; -1048E;OSMANYA LETTER QAAF;Lo;0;L;;;;;N;;;;; -1048F;OSMANYA LETTER KAAF;Lo;0;L;;;;;N;;;;; -10490;OSMANYA LETTER LAAN;Lo;0;L;;;;;N;;;;; -10491;OSMANYA LETTER MIIN;Lo;0;L;;;;;N;;;;; -10492;OSMANYA LETTER NUUN;Lo;0;L;;;;;N;;;;; -10493;OSMANYA LETTER WAW;Lo;0;L;;;;;N;;;;; -10494;OSMANYA LETTER HA;Lo;0;L;;;;;N;;;;; -10495;OSMANYA LETTER YA;Lo;0;L;;;;;N;;;;; -10496;OSMANYA LETTER A;Lo;0;L;;;;;N;;;;; -10497;OSMANYA LETTER E;Lo;0;L;;;;;N;;;;; -10498;OSMANYA LETTER I;Lo;0;L;;;;;N;;;;; -10499;OSMANYA LETTER O;Lo;0;L;;;;;N;;;;; -1049A;OSMANYA LETTER U;Lo;0;L;;;;;N;;;;; -1049B;OSMANYA LETTER AA;Lo;0;L;;;;;N;;;;; -1049C;OSMANYA LETTER EE;Lo;0;L;;;;;N;;;;; -1049D;OSMANYA LETTER OO;Lo;0;L;;;;;N;;;;; -104A0;OSMANYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -104A1;OSMANYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -104A2;OSMANYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -104A3;OSMANYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -104A4;OSMANYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -104A5;OSMANYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -104A6;OSMANYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -104A7;OSMANYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -104A8;OSMANYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -104A9;OSMANYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -10800;CYPRIOT SYLLABLE A;Lo;0;R;;;;;N;;;;; -10801;CYPRIOT SYLLABLE E;Lo;0;R;;;;;N;;;;; -10802;CYPRIOT SYLLABLE I;Lo;0;R;;;;;N;;;;; -10803;CYPRIOT SYLLABLE O;Lo;0;R;;;;;N;;;;; -10804;CYPRIOT SYLLABLE U;Lo;0;R;;;;;N;;;;; -10805;CYPRIOT SYLLABLE JA;Lo;0;R;;;;;N;;;;; -10808;CYPRIOT SYLLABLE JO;Lo;0;R;;;;;N;;;;; -1080A;CYPRIOT SYLLABLE KA;Lo;0;R;;;;;N;;;;; -1080B;CYPRIOT SYLLABLE KE;Lo;0;R;;;;;N;;;;; -1080C;CYPRIOT SYLLABLE KI;Lo;0;R;;;;;N;;;;; -1080D;CYPRIOT SYLLABLE KO;Lo;0;R;;;;;N;;;;; -1080E;CYPRIOT SYLLABLE KU;Lo;0;R;;;;;N;;;;; -1080F;CYPRIOT SYLLABLE LA;Lo;0;R;;;;;N;;;;; -10810;CYPRIOT SYLLABLE LE;Lo;0;R;;;;;N;;;;; -10811;CYPRIOT SYLLABLE LI;Lo;0;R;;;;;N;;;;; -10812;CYPRIOT SYLLABLE LO;Lo;0;R;;;;;N;;;;; -10813;CYPRIOT SYLLABLE LU;Lo;0;R;;;;;N;;;;; -10814;CYPRIOT SYLLABLE MA;Lo;0;R;;;;;N;;;;; -10815;CYPRIOT SYLLABLE ME;Lo;0;R;;;;;N;;;;; -10816;CYPRIOT SYLLABLE MI;Lo;0;R;;;;;N;;;;; -10817;CYPRIOT SYLLABLE MO;Lo;0;R;;;;;N;;;;; -10818;CYPRIOT SYLLABLE MU;Lo;0;R;;;;;N;;;;; -10819;CYPRIOT SYLLABLE NA;Lo;0;R;;;;;N;;;;; -1081A;CYPRIOT SYLLABLE NE;Lo;0;R;;;;;N;;;;; -1081B;CYPRIOT SYLLABLE NI;Lo;0;R;;;;;N;;;;; -1081C;CYPRIOT SYLLABLE NO;Lo;0;R;;;;;N;;;;; -1081D;CYPRIOT SYLLABLE NU;Lo;0;R;;;;;N;;;;; -1081E;CYPRIOT SYLLABLE PA;Lo;0;R;;;;;N;;;;; -1081F;CYPRIOT SYLLABLE PE;Lo;0;R;;;;;N;;;;; -10820;CYPRIOT SYLLABLE PI;Lo;0;R;;;;;N;;;;; -10821;CYPRIOT SYLLABLE PO;Lo;0;R;;;;;N;;;;; -10822;CYPRIOT SYLLABLE PU;Lo;0;R;;;;;N;;;;; -10823;CYPRIOT SYLLABLE RA;Lo;0;R;;;;;N;;;;; -10824;CYPRIOT SYLLABLE RE;Lo;0;R;;;;;N;;;;; -10825;CYPRIOT SYLLABLE RI;Lo;0;R;;;;;N;;;;; -10826;CYPRIOT SYLLABLE RO;Lo;0;R;;;;;N;;;;; -10827;CYPRIOT SYLLABLE RU;Lo;0;R;;;;;N;;;;; -10828;CYPRIOT SYLLABLE SA;Lo;0;R;;;;;N;;;;; -10829;CYPRIOT SYLLABLE SE;Lo;0;R;;;;;N;;;;; -1082A;CYPRIOT SYLLABLE SI;Lo;0;R;;;;;N;;;;; -1082B;CYPRIOT SYLLABLE SO;Lo;0;R;;;;;N;;;;; -1082C;CYPRIOT SYLLABLE SU;Lo;0;R;;;;;N;;;;; -1082D;CYPRIOT SYLLABLE TA;Lo;0;R;;;;;N;;;;; -1082E;CYPRIOT SYLLABLE TE;Lo;0;R;;;;;N;;;;; -1082F;CYPRIOT SYLLABLE TI;Lo;0;R;;;;;N;;;;; -10830;CYPRIOT SYLLABLE TO;Lo;0;R;;;;;N;;;;; -10831;CYPRIOT SYLLABLE TU;Lo;0;R;;;;;N;;;;; -10832;CYPRIOT SYLLABLE WA;Lo;0;R;;;;;N;;;;; -10833;CYPRIOT SYLLABLE WE;Lo;0;R;;;;;N;;;;; -10834;CYPRIOT SYLLABLE WI;Lo;0;R;;;;;N;;;;; -10835;CYPRIOT SYLLABLE WO;Lo;0;R;;;;;N;;;;; -10837;CYPRIOT SYLLABLE XA;Lo;0;R;;;;;N;;;;; -10838;CYPRIOT SYLLABLE XE;Lo;0;R;;;;;N;;;;; -1083C;CYPRIOT SYLLABLE ZA;Lo;0;R;;;;;N;;;;; -1083F;CYPRIOT SYLLABLE ZO;Lo;0;R;;;;;N;;;;; -10900;PHOENICIAN LETTER ALF;Lo;0;R;;;;;N;;;;; -10901;PHOENICIAN LETTER BET;Lo;0;R;;;;;N;;;;; -10902;PHOENICIAN LETTER GAML;Lo;0;R;;;;;N;;;;; -10903;PHOENICIAN LETTER DELT;Lo;0;R;;;;;N;;;;; -10904;PHOENICIAN LETTER HE;Lo;0;R;;;;;N;;;;; -10905;PHOENICIAN LETTER WAU;Lo;0;R;;;;;N;;;;; -10906;PHOENICIAN LETTER ZAI;Lo;0;R;;;;;N;;;;; -10907;PHOENICIAN LETTER HET;Lo;0;R;;;;;N;;;;; -10908;PHOENICIAN LETTER TET;Lo;0;R;;;;;N;;;;; -10909;PHOENICIAN LETTER YOD;Lo;0;R;;;;;N;;;;; -1090A;PHOENICIAN LETTER KAF;Lo;0;R;;;;;N;;;;; -1090B;PHOENICIAN LETTER LAMD;Lo;0;R;;;;;N;;;;; -1090C;PHOENICIAN LETTER MEM;Lo;0;R;;;;;N;;;;; -1090D;PHOENICIAN LETTER NUN;Lo;0;R;;;;;N;;;;; -1090E;PHOENICIAN LETTER SEMK;Lo;0;R;;;;;N;;;;; -1090F;PHOENICIAN LETTER AIN;Lo;0;R;;;;;N;;;;; -10910;PHOENICIAN LETTER PE;Lo;0;R;;;;;N;;;;; -10911;PHOENICIAN LETTER SADE;Lo;0;R;;;;;N;;;;; -10912;PHOENICIAN LETTER QOF;Lo;0;R;;;;;N;;;;; -10913;PHOENICIAN LETTER ROSH;Lo;0;R;;;;;N;;;;; -10914;PHOENICIAN LETTER SHIN;Lo;0;R;;;;;N;;;;; -10915;PHOENICIAN LETTER TAU;Lo;0;R;;;;;N;;;;; -10916;PHOENICIAN NUMBER ONE;No;0;R;;;;1;N;;;;; -10917;PHOENICIAN NUMBER TEN;No;0;R;;;;10;N;;;;; -10918;PHOENICIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;; -10919;PHOENICIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; -1091F;PHOENICIAN WORD SEPARATOR;Po;0;ON;;;;;N;;;;; -10920;LYDIAN LETTER A;Lo;0;R;;;;;N;;;;; -10921;LYDIAN LETTER B;Lo;0;R;;;;;N;;;;; -10922;LYDIAN LETTER G;Lo;0;R;;;;;N;;;;; -10923;LYDIAN LETTER D;Lo;0;R;;;;;N;;;;; -10924;LYDIAN LETTER E;Lo;0;R;;;;;N;;;;; -10925;LYDIAN LETTER V;Lo;0;R;;;;;N;;;;; -10926;LYDIAN LETTER I;Lo;0;R;;;;;N;;;;; -10927;LYDIAN LETTER Y;Lo;0;R;;;;;N;;;;; -10928;LYDIAN LETTER K;Lo;0;R;;;;;N;;;;; -10929;LYDIAN LETTER L;Lo;0;R;;;;;N;;;;; -1092A;LYDIAN LETTER M;Lo;0;R;;;;;N;;;;; -1092B;LYDIAN LETTER N;Lo;0;R;;;;;N;;;;; -1092C;LYDIAN LETTER O;Lo;0;R;;;;;N;;;;; -1092D;LYDIAN LETTER R;Lo;0;R;;;;;N;;;;; -1092E;LYDIAN LETTER SS;Lo;0;R;;;;;N;;;;; -1092F;LYDIAN LETTER T;Lo;0;R;;;;;N;;;;; -10930;LYDIAN LETTER U;Lo;0;R;;;;;N;;;;; -10931;LYDIAN LETTER F;Lo;0;R;;;;;N;;;;; -10932;LYDIAN LETTER Q;Lo;0;R;;;;;N;;;;; -10933;LYDIAN LETTER S;Lo;0;R;;;;;N;;;;; -10934;LYDIAN LETTER TT;Lo;0;R;;;;;N;;;;; -10935;LYDIAN LETTER AN;Lo;0;R;;;;;N;;;;; -10936;LYDIAN LETTER EN;Lo;0;R;;;;;N;;;;; -10937;LYDIAN LETTER LY;Lo;0;R;;;;;N;;;;; -10938;LYDIAN LETTER NN;Lo;0;R;;;;;N;;;;; -10939;LYDIAN LETTER C;Lo;0;R;;;;;N;;;;; -1093F;LYDIAN TRIANGULAR MARK;Po;0;R;;;;;N;;;;; -10A00;KHAROSHTHI LETTER A;Lo;0;R;;;;;N;;;;; -10A01;KHAROSHTHI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -10A02;KHAROSHTHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -10A03;KHAROSHTHI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -10A05;KHAROSHTHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -10A06;KHAROSHTHI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; -10A0C;KHAROSHTHI VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;; -10A0D;KHAROSHTHI SIGN DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;; -10A0E;KHAROSHTHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -10A0F;KHAROSHTHI SIGN VISARGA;Mn;230;NSM;;;;;N;;;;; -10A10;KHAROSHTHI LETTER KA;Lo;0;R;;;;;N;;;;; -10A11;KHAROSHTHI LETTER KHA;Lo;0;R;;;;;N;;;;; -10A12;KHAROSHTHI LETTER GA;Lo;0;R;;;;;N;;;;; -10A13;KHAROSHTHI LETTER GHA;Lo;0;R;;;;;N;;;;; -10A15;KHAROSHTHI LETTER CA;Lo;0;R;;;;;N;;;;; -10A16;KHAROSHTHI LETTER CHA;Lo;0;R;;;;;N;;;;; -10A17;KHAROSHTHI LETTER JA;Lo;0;R;;;;;N;;;;; -10A19;KHAROSHTHI LETTER NYA;Lo;0;R;;;;;N;;;;; -10A1A;KHAROSHTHI LETTER TTA;Lo;0;R;;;;;N;;;;; -10A1B;KHAROSHTHI LETTER TTHA;Lo;0;R;;;;;N;;;;; -10A1C;KHAROSHTHI LETTER DDA;Lo;0;R;;;;;N;;;;; -10A1D;KHAROSHTHI LETTER DDHA;Lo;0;R;;;;;N;;;;; -10A1E;KHAROSHTHI LETTER NNA;Lo;0;R;;;;;N;;;;; -10A1F;KHAROSHTHI LETTER TA;Lo;0;R;;;;;N;;;;; -10A20;KHAROSHTHI LETTER THA;Lo;0;R;;;;;N;;;;; -10A21;KHAROSHTHI LETTER DA;Lo;0;R;;;;;N;;;;; -10A22;KHAROSHTHI LETTER DHA;Lo;0;R;;;;;N;;;;; -10A23;KHAROSHTHI LETTER NA;Lo;0;R;;;;;N;;;;; -10A24;KHAROSHTHI LETTER PA;Lo;0;R;;;;;N;;;;; -10A25;KHAROSHTHI LETTER PHA;Lo;0;R;;;;;N;;;;; -10A26;KHAROSHTHI LETTER BA;Lo;0;R;;;;;N;;;;; -10A27;KHAROSHTHI LETTER BHA;Lo;0;R;;;;;N;;;;; -10A28;KHAROSHTHI LETTER MA;Lo;0;R;;;;;N;;;;; -10A29;KHAROSHTHI LETTER YA;Lo;0;R;;;;;N;;;;; -10A2A;KHAROSHTHI LETTER RA;Lo;0;R;;;;;N;;;;; -10A2B;KHAROSHTHI LETTER LA;Lo;0;R;;;;;N;;;;; -10A2C;KHAROSHTHI LETTER VA;Lo;0;R;;;;;N;;;;; -10A2D;KHAROSHTHI LETTER SHA;Lo;0;R;;;;;N;;;;; -10A2E;KHAROSHTHI LETTER SSA;Lo;0;R;;;;;N;;;;; -10A2F;KHAROSHTHI LETTER SA;Lo;0;R;;;;;N;;;;; -10A30;KHAROSHTHI LETTER ZA;Lo;0;R;;;;;N;;;;; -10A31;KHAROSHTHI LETTER HA;Lo;0;R;;;;;N;;;;; -10A32;KHAROSHTHI LETTER KKA;Lo;0;R;;;;;N;;;;; -10A33;KHAROSHTHI LETTER TTTHA;Lo;0;R;;;;;N;;;;; -10A38;KHAROSHTHI SIGN BAR ABOVE;Mn;230;NSM;;;;;N;;;;; -10A39;KHAROSHTHI SIGN CAUDA;Mn;1;NSM;;;;;N;;;;; -10A3A;KHAROSHTHI SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;; -10A3F;KHAROSHTHI VIRAMA;Mn;9;NSM;;;;;N;;;;; -10A40;KHAROSHTHI DIGIT ONE;No;0;R;;;1;1;N;;;;; -10A41;KHAROSHTHI DIGIT TWO;No;0;R;;;2;2;N;;;;; -10A42;KHAROSHTHI DIGIT THREE;No;0;R;;;3;3;N;;;;; -10A43;KHAROSHTHI DIGIT FOUR;No;0;R;;;4;4;N;;;;; -10A44;KHAROSHTHI NUMBER TEN;No;0;R;;;;10;N;;;;; -10A45;KHAROSHTHI NUMBER TWENTY;No;0;R;;;;20;N;;;;; -10A46;KHAROSHTHI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; -10A47;KHAROSHTHI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;; -10A50;KHAROSHTHI PUNCTUATION DOT;Po;0;R;;;;;N;;;;; -10A51;KHAROSHTHI PUNCTUATION SMALL CIRCLE;Po;0;R;;;;;N;;;;; -10A52;KHAROSHTHI PUNCTUATION CIRCLE;Po;0;R;;;;;N;;;;; -10A53;KHAROSHTHI PUNCTUATION CRESCENT BAR;Po;0;R;;;;;N;;;;; -10A54;KHAROSHTHI PUNCTUATION MANGALAM;Po;0;R;;;;;N;;;;; -10A55;KHAROSHTHI PUNCTUATION LOTUS;Po;0;R;;;;;N;;;;; -10A56;KHAROSHTHI PUNCTUATION DANDA;Po;0;R;;;;;N;;;;; -10A57;KHAROSHTHI PUNCTUATION DOUBLE DANDA;Po;0;R;;;;;N;;;;; -10A58;KHAROSHTHI PUNCTUATION LINES;Po;0;R;;;;;N;;;;; -12000;CUNEIFORM SIGN A;Lo;0;L;;;;;N;;;;; -12001;CUNEIFORM SIGN A TIMES A;Lo;0;L;;;;;N;;;;; -12002;CUNEIFORM SIGN A TIMES BAD;Lo;0;L;;;;;N;;;;; -12003;CUNEIFORM SIGN A TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -12004;CUNEIFORM SIGN A TIMES HA;Lo;0;L;;;;;N;;;;; -12005;CUNEIFORM SIGN A TIMES IGI;Lo;0;L;;;;;N;;;;; -12006;CUNEIFORM SIGN A TIMES LAGAR GUNU;Lo;0;L;;;;;N;;;;; -12007;CUNEIFORM SIGN A TIMES MUSH;Lo;0;L;;;;;N;;;;; -12008;CUNEIFORM SIGN A TIMES SAG;Lo;0;L;;;;;N;;;;; -12009;CUNEIFORM SIGN A2;Lo;0;L;;;;;N;;;;; -1200A;CUNEIFORM SIGN AB;Lo;0;L;;;;;N;;;;; -1200B;CUNEIFORM SIGN AB TIMES ASH2;Lo;0;L;;;;;N;;;;; -1200C;CUNEIFORM SIGN AB TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;; -1200D;CUNEIFORM SIGN AB TIMES GAL;Lo;0;L;;;;;N;;;;; -1200E;CUNEIFORM SIGN AB TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -1200F;CUNEIFORM SIGN AB TIMES HA;Lo;0;L;;;;;N;;;;; -12010;CUNEIFORM SIGN AB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -12011;CUNEIFORM SIGN AB TIMES IMIN;Lo;0;L;;;;;N;;;;; -12012;CUNEIFORM SIGN AB TIMES LAGAB;Lo;0;L;;;;;N;;;;; -12013;CUNEIFORM SIGN AB TIMES SHESH;Lo;0;L;;;;;N;;;;; -12014;CUNEIFORM SIGN AB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;; -12015;CUNEIFORM SIGN AB GUNU;Lo;0;L;;;;;N;;;;; -12016;CUNEIFORM SIGN AB2;Lo;0;L;;;;;N;;;;; -12017;CUNEIFORM SIGN AB2 TIMES BALAG;Lo;0;L;;;;;N;;;;; -12018;CUNEIFORM SIGN AB2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -12019;CUNEIFORM SIGN AB2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; -1201A;CUNEIFORM SIGN AB2 TIMES SHA3;Lo;0;L;;;;;N;;;;; -1201B;CUNEIFORM SIGN AB2 TIMES TAK4;Lo;0;L;;;;;N;;;;; -1201C;CUNEIFORM SIGN AD;Lo;0;L;;;;;N;;;;; -1201D;CUNEIFORM SIGN AK;Lo;0;L;;;;;N;;;;; -1201E;CUNEIFORM SIGN AK TIMES ERIN2;Lo;0;L;;;;;N;;;;; -1201F;CUNEIFORM SIGN AK TIMES SHITA PLUS GISH;Lo;0;L;;;;;N;;;;; -12020;CUNEIFORM SIGN AL;Lo;0;L;;;;;N;;;;; -12021;CUNEIFORM SIGN AL TIMES AL;Lo;0;L;;;;;N;;;;; -12022;CUNEIFORM SIGN AL TIMES DIM2;Lo;0;L;;;;;N;;;;; -12023;CUNEIFORM SIGN AL TIMES GISH;Lo;0;L;;;;;N;;;;; -12024;CUNEIFORM SIGN AL TIMES HA;Lo;0;L;;;;;N;;;;; -12025;CUNEIFORM SIGN AL TIMES KAD3;Lo;0;L;;;;;N;;;;; -12026;CUNEIFORM SIGN AL TIMES KI;Lo;0;L;;;;;N;;;;; -12027;CUNEIFORM SIGN AL TIMES SHE;Lo;0;L;;;;;N;;;;; -12028;CUNEIFORM SIGN AL TIMES USH;Lo;0;L;;;;;N;;;;; -12029;CUNEIFORM SIGN ALAN;Lo;0;L;;;;;N;;;;; -1202A;CUNEIFORM SIGN ALEPH;Lo;0;L;;;;;N;;;;; -1202B;CUNEIFORM SIGN AMAR;Lo;0;L;;;;;N;;;;; -1202C;CUNEIFORM SIGN AMAR TIMES SHE;Lo;0;L;;;;;N;;;;; -1202D;CUNEIFORM SIGN AN;Lo;0;L;;;;;N;;;;; -1202E;CUNEIFORM SIGN AN OVER AN;Lo;0;L;;;;;N;;;;; -1202F;CUNEIFORM SIGN AN THREE TIMES;Lo;0;L;;;;;N;;;;; -12030;CUNEIFORM SIGN AN PLUS NAGA OPPOSING AN PLUS NAGA;Lo;0;L;;;;;N;;;;; -12031;CUNEIFORM SIGN AN PLUS NAGA SQUARED;Lo;0;L;;;;;N;;;;; -12032;CUNEIFORM SIGN ANSHE;Lo;0;L;;;;;N;;;;; -12033;CUNEIFORM SIGN APIN;Lo;0;L;;;;;N;;;;; -12034;CUNEIFORM SIGN ARAD;Lo;0;L;;;;;N;;;;; -12035;CUNEIFORM SIGN ARAD TIMES KUR;Lo;0;L;;;;;N;;;;; -12036;CUNEIFORM SIGN ARKAB;Lo;0;L;;;;;N;;;;; -12037;CUNEIFORM SIGN ASAL2;Lo;0;L;;;;;N;;;;; -12038;CUNEIFORM SIGN ASH;Lo;0;L;;;;;N;;;;; -12039;CUNEIFORM SIGN ASH ZIDA TENU;Lo;0;L;;;;;N;;;;; -1203A;CUNEIFORM SIGN ASH KABA TENU;Lo;0;L;;;;;N;;;;; -1203B;CUNEIFORM SIGN ASH OVER ASH TUG2 OVER TUG2 TUG2 OVER TUG2 PAP;Lo;0;L;;;;;N;;;;; -1203C;CUNEIFORM SIGN ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;; -1203D;CUNEIFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;; -1203E;CUNEIFORM SIGN ASH2;Lo;0;L;;;;;N;;;;; -1203F;CUNEIFORM SIGN ASHGAB;Lo;0;L;;;;;N;;;;; -12040;CUNEIFORM SIGN BA;Lo;0;L;;;;;N;;;;; -12041;CUNEIFORM SIGN BAD;Lo;0;L;;;;;N;;;;; -12042;CUNEIFORM SIGN BAG3;Lo;0;L;;;;;N;;;;; -12043;CUNEIFORM SIGN BAHAR2;Lo;0;L;;;;;N;;;;; -12044;CUNEIFORM SIGN BAL;Lo;0;L;;;;;N;;;;; -12045;CUNEIFORM SIGN BAL OVER BAL;Lo;0;L;;;;;N;;;;; -12046;CUNEIFORM SIGN BALAG;Lo;0;L;;;;;N;;;;; -12047;CUNEIFORM SIGN BAR;Lo;0;L;;;;;N;;;;; -12048;CUNEIFORM SIGN BARA2;Lo;0;L;;;;;N;;;;; -12049;CUNEIFORM SIGN BI;Lo;0;L;;;;;N;;;;; -1204A;CUNEIFORM SIGN BI TIMES A;Lo;0;L;;;;;N;;;;; -1204B;CUNEIFORM SIGN BI TIMES GAR;Lo;0;L;;;;;N;;;;; -1204C;CUNEIFORM SIGN BI TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -1204D;CUNEIFORM SIGN BU;Lo;0;L;;;;;N;;;;; -1204E;CUNEIFORM SIGN BU OVER BU AB;Lo;0;L;;;;;N;;;;; -1204F;CUNEIFORM SIGN BU OVER BU UN;Lo;0;L;;;;;N;;;;; -12050;CUNEIFORM SIGN BU CROSSING BU;Lo;0;L;;;;;N;;;;; -12051;CUNEIFORM SIGN BULUG;Lo;0;L;;;;;N;;;;; -12052;CUNEIFORM SIGN BULUG OVER BULUG;Lo;0;L;;;;;N;;;;; -12053;CUNEIFORM SIGN BUR;Lo;0;L;;;;;N;;;;; -12054;CUNEIFORM SIGN BUR2;Lo;0;L;;;;;N;;;;; -12055;CUNEIFORM SIGN DA;Lo;0;L;;;;;N;;;;; -12056;CUNEIFORM SIGN DAG;Lo;0;L;;;;;N;;;;; -12057;CUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MASH;Lo;0;L;;;;;N;;;;; -12058;CUNEIFORM SIGN DAG KISIM5 TIMES AMAR;Lo;0;L;;;;;N;;;;; -12059;CUNEIFORM SIGN DAG KISIM5 TIMES BALAG;Lo;0;L;;;;;N;;;;; -1205A;CUNEIFORM SIGN DAG KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;; -1205B;CUNEIFORM SIGN DAG KISIM5 TIMES GA;Lo;0;L;;;;;N;;;;; -1205C;CUNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASH;Lo;0;L;;;;;N;;;;; -1205D;CUNEIFORM SIGN DAG KISIM5 TIMES GI;Lo;0;L;;;;;N;;;;; -1205E;CUNEIFORM SIGN DAG KISIM5 TIMES GIR2;Lo;0;L;;;;;N;;;;; -1205F;CUNEIFORM SIGN DAG KISIM5 TIMES GUD;Lo;0;L;;;;;N;;;;; -12060;CUNEIFORM SIGN DAG KISIM5 TIMES HA;Lo;0;L;;;;;N;;;;; -12061;CUNEIFORM SIGN DAG KISIM5 TIMES IR;Lo;0;L;;;;;N;;;;; -12062;CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LU;Lo;0;L;;;;;N;;;;; -12063;CUNEIFORM SIGN DAG KISIM5 TIMES KAK;Lo;0;L;;;;;N;;;;; -12064;CUNEIFORM SIGN DAG KISIM5 TIMES LA;Lo;0;L;;;;;N;;;;; -12065;CUNEIFORM SIGN DAG KISIM5 TIMES LU;Lo;0;L;;;;;N;;;;; -12066;CUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2;Lo;0;L;;;;;N;;;;; -12067;CUNEIFORM SIGN DAG KISIM5 TIMES LUM;Lo;0;L;;;;;N;;;;; -12068;CUNEIFORM SIGN DAG KISIM5 TIMES NE;Lo;0;L;;;;;N;;;;; -12069;CUNEIFORM SIGN DAG KISIM5 TIMES PAP PLUS PAP;Lo;0;L;;;;;N;;;;; -1206A;CUNEIFORM SIGN DAG KISIM5 TIMES SI;Lo;0;L;;;;;N;;;;; -1206B;CUNEIFORM SIGN DAG KISIM5 TIMES TAK4;Lo;0;L;;;;;N;;;;; -1206C;CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2;Lo;0;L;;;;;N;;;;; -1206D;CUNEIFORM SIGN DAG KISIM5 TIMES USH;Lo;0;L;;;;;N;;;;; -1206E;CUNEIFORM SIGN DAM;Lo;0;L;;;;;N;;;;; -1206F;CUNEIFORM SIGN DAR;Lo;0;L;;;;;N;;;;; -12070;CUNEIFORM SIGN DARA3;Lo;0;L;;;;;N;;;;; -12071;CUNEIFORM SIGN DARA4;Lo;0;L;;;;;N;;;;; -12072;CUNEIFORM SIGN DI;Lo;0;L;;;;;N;;;;; -12073;CUNEIFORM SIGN DIB;Lo;0;L;;;;;N;;;;; -12074;CUNEIFORM SIGN DIM;Lo;0;L;;;;;N;;;;; -12075;CUNEIFORM SIGN DIM TIMES SHE;Lo;0;L;;;;;N;;;;; -12076;CUNEIFORM SIGN DIM2;Lo;0;L;;;;;N;;;;; -12077;CUNEIFORM SIGN DIN;Lo;0;L;;;;;N;;;;; -12078;CUNEIFORM SIGN DIN KASKAL U GUNU DISH;Lo;0;L;;;;;N;;;;; -12079;CUNEIFORM SIGN DISH;Lo;0;L;;;;;N;;;;; -1207A;CUNEIFORM SIGN DU;Lo;0;L;;;;;N;;;;; -1207B;CUNEIFORM SIGN DU OVER DU;Lo;0;L;;;;;N;;;;; -1207C;CUNEIFORM SIGN DU GUNU;Lo;0;L;;;;;N;;;;; -1207D;CUNEIFORM SIGN DU SHESHIG;Lo;0;L;;;;;N;;;;; -1207E;CUNEIFORM SIGN DUB;Lo;0;L;;;;;N;;;;; -1207F;CUNEIFORM SIGN DUB TIMES ESH2;Lo;0;L;;;;;N;;;;; -12080;CUNEIFORM SIGN DUB2;Lo;0;L;;;;;N;;;;; -12081;CUNEIFORM SIGN DUG;Lo;0;L;;;;;N;;;;; -12082;CUNEIFORM SIGN DUGUD;Lo;0;L;;;;;N;;;;; -12083;CUNEIFORM SIGN DUH;Lo;0;L;;;;;N;;;;; -12084;CUNEIFORM SIGN DUN;Lo;0;L;;;;;N;;;;; -12085;CUNEIFORM SIGN DUN3;Lo;0;L;;;;;N;;;;; -12086;CUNEIFORM SIGN DUN3 GUNU;Lo;0;L;;;;;N;;;;; -12087;CUNEIFORM SIGN DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;; -12088;CUNEIFORM SIGN DUN4;Lo;0;L;;;;;N;;;;; -12089;CUNEIFORM SIGN DUR2;Lo;0;L;;;;;N;;;;; -1208A;CUNEIFORM SIGN E;Lo;0;L;;;;;N;;;;; -1208B;CUNEIFORM SIGN E TIMES PAP;Lo;0;L;;;;;N;;;;; -1208C;CUNEIFORM SIGN E OVER E NUN OVER NUN;Lo;0;L;;;;;N;;;;; -1208D;CUNEIFORM SIGN E2;Lo;0;L;;;;;N;;;;; -1208E;CUNEIFORM SIGN E2 TIMES A PLUS HA PLUS DA;Lo;0;L;;;;;N;;;;; -1208F;CUNEIFORM SIGN E2 TIMES GAR;Lo;0;L;;;;;N;;;;; -12090;CUNEIFORM SIGN E2 TIMES MI;Lo;0;L;;;;;N;;;;; -12091;CUNEIFORM SIGN E2 TIMES SAL;Lo;0;L;;;;;N;;;;; -12092;CUNEIFORM SIGN E2 TIMES SHE;Lo;0;L;;;;;N;;;;; -12093;CUNEIFORM SIGN E2 TIMES U;Lo;0;L;;;;;N;;;;; -12094;CUNEIFORM SIGN EDIN;Lo;0;L;;;;;N;;;;; -12095;CUNEIFORM SIGN EGIR;Lo;0;L;;;;;N;;;;; -12096;CUNEIFORM SIGN EL;Lo;0;L;;;;;N;;;;; -12097;CUNEIFORM SIGN EN;Lo;0;L;;;;;N;;;;; -12098;CUNEIFORM SIGN EN TIMES GAN2;Lo;0;L;;;;;N;;;;; -12099;CUNEIFORM SIGN EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -1209A;CUNEIFORM SIGN EN TIMES ME;Lo;0;L;;;;;N;;;;; -1209B;CUNEIFORM SIGN EN CROSSING EN;Lo;0;L;;;;;N;;;;; -1209C;CUNEIFORM SIGN EN OPPOSING EN;Lo;0;L;;;;;N;;;;; -1209D;CUNEIFORM SIGN EN SQUARED;Lo;0;L;;;;;N;;;;; -1209E;CUNEIFORM SIGN EREN;Lo;0;L;;;;;N;;;;; -1209F;CUNEIFORM SIGN ERIN2;Lo;0;L;;;;;N;;;;; -120A0;CUNEIFORM SIGN ESH2;Lo;0;L;;;;;N;;;;; -120A1;CUNEIFORM SIGN EZEN;Lo;0;L;;;;;N;;;;; -120A2;CUNEIFORM SIGN EZEN TIMES A;Lo;0;L;;;;;N;;;;; -120A3;CUNEIFORM SIGN EZEN TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;; -120A4;CUNEIFORM SIGN EZEN TIMES A PLUS LAL TIMES LAL;Lo;0;L;;;;;N;;;;; -120A5;CUNEIFORM SIGN EZEN TIMES AN;Lo;0;L;;;;;N;;;;; -120A6;CUNEIFORM SIGN EZEN TIMES BAD;Lo;0;L;;;;;N;;;;; -120A7;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;; -120A8;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;; -120A9;CUNEIFORM SIGN EZEN TIMES HA;Lo;0;L;;;;;N;;;;; -120AA;CUNEIFORM SIGN EZEN TIMES HA GUNU;Lo;0;L;;;;;N;;;;; -120AB;CUNEIFORM SIGN EZEN TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -120AC;CUNEIFORM SIGN EZEN TIMES KASKAL;Lo;0;L;;;;;N;;;;; -120AD;CUNEIFORM SIGN EZEN TIMES KASKAL SQUARED;Lo;0;L;;;;;N;;;;; -120AE;CUNEIFORM SIGN EZEN TIMES KU3;Lo;0;L;;;;;N;;;;; -120AF;CUNEIFORM SIGN EZEN TIMES LA;Lo;0;L;;;;;N;;;;; -120B0;CUNEIFORM SIGN EZEN TIMES LAL TIMES LAL;Lo;0;L;;;;;N;;;;; -120B1;CUNEIFORM SIGN EZEN TIMES LI;Lo;0;L;;;;;N;;;;; -120B2;CUNEIFORM SIGN EZEN TIMES LU;Lo;0;L;;;;;N;;;;; -120B3;CUNEIFORM SIGN EZEN TIMES U2;Lo;0;L;;;;;N;;;;; -120B4;CUNEIFORM SIGN EZEN TIMES UD;Lo;0;L;;;;;N;;;;; -120B5;CUNEIFORM SIGN GA;Lo;0;L;;;;;N;;;;; -120B6;CUNEIFORM SIGN GA GUNU;Lo;0;L;;;;;N;;;;; -120B7;CUNEIFORM SIGN GA2;Lo;0;L;;;;;N;;;;; -120B8;CUNEIFORM SIGN GA2 TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;; -120B9;CUNEIFORM SIGN GA2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;; -120BA;CUNEIFORM SIGN GA2 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;; -120BB;CUNEIFORM SIGN GA2 TIMES AB2 TENU PLUS TAB;Lo;0;L;;;;;N;;;;; -120BC;CUNEIFORM SIGN GA2 TIMES AN;Lo;0;L;;;;;N;;;;; -120BD;CUNEIFORM SIGN GA2 TIMES ASH;Lo;0;L;;;;;N;;;;; -120BE;CUNEIFORM SIGN GA2 TIMES ASH2 PLUS GAL;Lo;0;L;;;;;N;;;;; -120BF;CUNEIFORM SIGN GA2 TIMES BAD;Lo;0;L;;;;;N;;;;; -120C0;CUNEIFORM SIGN GA2 TIMES BAR PLUS RA;Lo;0;L;;;;;N;;;;; -120C1;CUNEIFORM SIGN GA2 TIMES BUR;Lo;0;L;;;;;N;;;;; -120C2;CUNEIFORM SIGN GA2 TIMES BUR PLUS RA;Lo;0;L;;;;;N;;;;; -120C3;CUNEIFORM SIGN GA2 TIMES DA;Lo;0;L;;;;;N;;;;; -120C4;CUNEIFORM SIGN GA2 TIMES DI;Lo;0;L;;;;;N;;;;; -120C5;CUNEIFORM SIGN GA2 TIMES DIM TIMES SHE;Lo;0;L;;;;;N;;;;; -120C6;CUNEIFORM SIGN GA2 TIMES DUB;Lo;0;L;;;;;N;;;;; -120C7;CUNEIFORM SIGN GA2 TIMES EL;Lo;0;L;;;;;N;;;;; -120C8;CUNEIFORM SIGN GA2 TIMES EL PLUS LA;Lo;0;L;;;;;N;;;;; -120C9;CUNEIFORM SIGN GA2 TIMES EN;Lo;0;L;;;;;N;;;;; -120CA;CUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -120CB;CUNEIFORM SIGN GA2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -120CC;CUNEIFORM SIGN GA2 TIMES GAR;Lo;0;L;;;;;N;;;;; -120CD;CUNEIFORM SIGN GA2 TIMES GI;Lo;0;L;;;;;N;;;;; -120CE;CUNEIFORM SIGN GA2 TIMES GI4;Lo;0;L;;;;;N;;;;; -120CF;CUNEIFORM SIGN GA2 TIMES GI4 PLUS A;Lo;0;L;;;;;N;;;;; -120D0;CUNEIFORM SIGN GA2 TIMES GIR2 PLUS SU;Lo;0;L;;;;;N;;;;; -120D1;CUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2;Lo;0;L;;;;;N;;;;; -120D2;CUNEIFORM SIGN GA2 TIMES HAL;Lo;0;L;;;;;N;;;;; -120D3;CUNEIFORM SIGN GA2 TIMES HAL PLUS LA;Lo;0;L;;;;;N;;;;; -120D4;CUNEIFORM SIGN GA2 TIMES HI PLUS LI;Lo;0;L;;;;;N;;;;; -120D5;CUNEIFORM SIGN GA2 TIMES HUB2;Lo;0;L;;;;;N;;;;; -120D6;CUNEIFORM SIGN GA2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -120D7;CUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASH;Lo;0;L;;;;;N;;;;; -120D8;CUNEIFORM SIGN GA2 TIMES KAK;Lo;0;L;;;;;N;;;;; -120D9;CUNEIFORM SIGN GA2 TIMES KASKAL;Lo;0;L;;;;;N;;;;; -120DA;CUNEIFORM SIGN GA2 TIMES KID;Lo;0;L;;;;;N;;;;; -120DB;CUNEIFORM SIGN GA2 TIMES KID PLUS LAL;Lo;0;L;;;;;N;;;;; -120DC;CUNEIFORM SIGN GA2 TIMES KU3 PLUS AN;Lo;0;L;;;;;N;;;;; -120DD;CUNEIFORM SIGN GA2 TIMES LA;Lo;0;L;;;;;N;;;;; -120DE;CUNEIFORM SIGN GA2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; -120DF;CUNEIFORM SIGN GA2 TIMES MI;Lo;0;L;;;;;N;;;;; -120E0;CUNEIFORM SIGN GA2 TIMES NUN;Lo;0;L;;;;;N;;;;; -120E1;CUNEIFORM SIGN GA2 TIMES NUN OVER NUN;Lo;0;L;;;;;N;;;;; -120E2;CUNEIFORM SIGN GA2 TIMES PA;Lo;0;L;;;;;N;;;;; -120E3;CUNEIFORM SIGN GA2 TIMES SAL;Lo;0;L;;;;;N;;;;; -120E4;CUNEIFORM SIGN GA2 TIMES SAR;Lo;0;L;;;;;N;;;;; -120E5;CUNEIFORM SIGN GA2 TIMES SHE;Lo;0;L;;;;;N;;;;; -120E6;CUNEIFORM SIGN GA2 TIMES SHE PLUS TUR;Lo;0;L;;;;;N;;;;; -120E7;CUNEIFORM SIGN GA2 TIMES SHID;Lo;0;L;;;;;N;;;;; -120E8;CUNEIFORM SIGN GA2 TIMES SUM;Lo;0;L;;;;;N;;;;; -120E9;CUNEIFORM SIGN GA2 TIMES TAK4;Lo;0;L;;;;;N;;;;; -120EA;CUNEIFORM SIGN GA2 TIMES U;Lo;0;L;;;;;N;;;;; -120EB;CUNEIFORM SIGN GA2 TIMES UD;Lo;0;L;;;;;N;;;;; -120EC;CUNEIFORM SIGN GA2 TIMES UD PLUS DU;Lo;0;L;;;;;N;;;;; -120ED;CUNEIFORM SIGN GA2 OVER GA2;Lo;0;L;;;;;N;;;;; -120EE;CUNEIFORM SIGN GABA;Lo;0;L;;;;;N;;;;; -120EF;CUNEIFORM SIGN GABA CROSSING GABA;Lo;0;L;;;;;N;;;;; -120F0;CUNEIFORM SIGN GAD;Lo;0;L;;;;;N;;;;; -120F1;CUNEIFORM SIGN GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; -120F2;CUNEIFORM SIGN GAL;Lo;0;L;;;;;N;;;;; -120F3;CUNEIFORM SIGN GAL GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; -120F4;CUNEIFORM SIGN GALAM;Lo;0;L;;;;;N;;;;; -120F5;CUNEIFORM SIGN GAM;Lo;0;L;;;;;N;;;;; -120F6;CUNEIFORM SIGN GAN;Lo;0;L;;;;;N;;;;; -120F7;CUNEIFORM SIGN GAN2;Lo;0;L;;;;;N;;;;; -120F8;CUNEIFORM SIGN GAN2 TENU;Lo;0;L;;;;;N;;;;; -120F9;CUNEIFORM SIGN GAN2 OVER GAN2;Lo;0;L;;;;;N;;;;; -120FA;CUNEIFORM SIGN GAN2 CROSSING GAN2;Lo;0;L;;;;;N;;;;; -120FB;CUNEIFORM SIGN GAR;Lo;0;L;;;;;N;;;;; -120FC;CUNEIFORM SIGN GAR3;Lo;0;L;;;;;N;;;;; -120FD;CUNEIFORM SIGN GASHAN;Lo;0;L;;;;;N;;;;; -120FE;CUNEIFORM SIGN GESHTIN;Lo;0;L;;;;;N;;;;; -120FF;CUNEIFORM SIGN GESHTIN TIMES KUR;Lo;0;L;;;;;N;;;;; -12100;CUNEIFORM SIGN GI;Lo;0;L;;;;;N;;;;; -12101;CUNEIFORM SIGN GI TIMES E;Lo;0;L;;;;;N;;;;; -12102;CUNEIFORM SIGN GI TIMES U;Lo;0;L;;;;;N;;;;; -12103;CUNEIFORM SIGN GI CROSSING GI;Lo;0;L;;;;;N;;;;; -12104;CUNEIFORM SIGN GI4;Lo;0;L;;;;;N;;;;; -12105;CUNEIFORM SIGN GI4 OVER GI4;Lo;0;L;;;;;N;;;;; -12106;CUNEIFORM SIGN GI4 CROSSING GI4;Lo;0;L;;;;;N;;;;; -12107;CUNEIFORM SIGN GIDIM;Lo;0;L;;;;;N;;;;; -12108;CUNEIFORM SIGN GIR2;Lo;0;L;;;;;N;;;;; -12109;CUNEIFORM SIGN GIR2 GUNU;Lo;0;L;;;;;N;;;;; -1210A;CUNEIFORM SIGN GIR3;Lo;0;L;;;;;N;;;;; -1210B;CUNEIFORM SIGN GIR3 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;; -1210C;CUNEIFORM SIGN GIR3 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -1210D;CUNEIFORM SIGN GIR3 TIMES IGI;Lo;0;L;;;;;N;;;;; -1210E;CUNEIFORM SIGN GIR3 TIMES LU PLUS IGI;Lo;0;L;;;;;N;;;;; -1210F;CUNEIFORM SIGN GIR3 TIMES PA;Lo;0;L;;;;;N;;;;; -12110;CUNEIFORM SIGN GISAL;Lo;0;L;;;;;N;;;;; -12111;CUNEIFORM SIGN GISH;Lo;0;L;;;;;N;;;;; -12112;CUNEIFORM SIGN GISH CROSSING GISH;Lo;0;L;;;;;N;;;;; -12113;CUNEIFORM SIGN GISH TIMES BAD;Lo;0;L;;;;;N;;;;; -12114;CUNEIFORM SIGN GISH TIMES TAK4;Lo;0;L;;;;;N;;;;; -12115;CUNEIFORM SIGN GISH TENU;Lo;0;L;;;;;N;;;;; -12116;CUNEIFORM SIGN GU;Lo;0;L;;;;;N;;;;; -12117;CUNEIFORM SIGN GU CROSSING GU;Lo;0;L;;;;;N;;;;; -12118;CUNEIFORM SIGN GU2;Lo;0;L;;;;;N;;;;; -12119;CUNEIFORM SIGN GU2 TIMES KAK;Lo;0;L;;;;;N;;;;; -1211A;CUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -1211B;CUNEIFORM SIGN GU2 TIMES NUN;Lo;0;L;;;;;N;;;;; -1211C;CUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2;Lo;0;L;;;;;N;;;;; -1211D;CUNEIFORM SIGN GU2 GUNU;Lo;0;L;;;;;N;;;;; -1211E;CUNEIFORM SIGN GUD;Lo;0;L;;;;;N;;;;; -1211F;CUNEIFORM SIGN GUD TIMES A PLUS KUR;Lo;0;L;;;;;N;;;;; -12120;CUNEIFORM SIGN GUD TIMES KUR;Lo;0;L;;;;;N;;;;; -12121;CUNEIFORM SIGN GUD OVER GUD LUGAL;Lo;0;L;;;;;N;;;;; -12122;CUNEIFORM SIGN GUL;Lo;0;L;;;;;N;;;;; -12123;CUNEIFORM SIGN GUM;Lo;0;L;;;;;N;;;;; -12124;CUNEIFORM SIGN GUM TIMES SHE;Lo;0;L;;;;;N;;;;; -12125;CUNEIFORM SIGN GUR;Lo;0;L;;;;;N;;;;; -12126;CUNEIFORM SIGN GUR7;Lo;0;L;;;;;N;;;;; -12127;CUNEIFORM SIGN GURUN;Lo;0;L;;;;;N;;;;; -12128;CUNEIFORM SIGN GURUSH;Lo;0;L;;;;;N;;;;; -12129;CUNEIFORM SIGN HA;Lo;0;L;;;;;N;;;;; -1212A;CUNEIFORM SIGN HA TENU;Lo;0;L;;;;;N;;;;; -1212B;CUNEIFORM SIGN HA GUNU;Lo;0;L;;;;;N;;;;; -1212C;CUNEIFORM SIGN HAL;Lo;0;L;;;;;N;;;;; -1212D;CUNEIFORM SIGN HI;Lo;0;L;;;;;N;;;;; -1212E;CUNEIFORM SIGN HI TIMES ASH;Lo;0;L;;;;;N;;;;; -1212F;CUNEIFORM SIGN HI TIMES ASH2;Lo;0;L;;;;;N;;;;; -12130;CUNEIFORM SIGN HI TIMES BAD;Lo;0;L;;;;;N;;;;; -12131;CUNEIFORM SIGN HI TIMES DISH;Lo;0;L;;;;;N;;;;; -12132;CUNEIFORM SIGN HI TIMES GAD;Lo;0;L;;;;;N;;;;; -12133;CUNEIFORM SIGN HI TIMES KIN;Lo;0;L;;;;;N;;;;; -12134;CUNEIFORM SIGN HI TIMES NUN;Lo;0;L;;;;;N;;;;; -12135;CUNEIFORM SIGN HI TIMES SHE;Lo;0;L;;;;;N;;;;; -12136;CUNEIFORM SIGN HI TIMES U;Lo;0;L;;;;;N;;;;; -12137;CUNEIFORM SIGN HU;Lo;0;L;;;;;N;;;;; -12138;CUNEIFORM SIGN HUB2;Lo;0;L;;;;;N;;;;; -12139;CUNEIFORM SIGN HUB2 TIMES AN;Lo;0;L;;;;;N;;;;; -1213A;CUNEIFORM SIGN HUB2 TIMES HAL;Lo;0;L;;;;;N;;;;; -1213B;CUNEIFORM SIGN HUB2 TIMES KASKAL;Lo;0;L;;;;;N;;;;; -1213C;CUNEIFORM SIGN HUB2 TIMES LISH;Lo;0;L;;;;;N;;;;; -1213D;CUNEIFORM SIGN HUB2 TIMES UD;Lo;0;L;;;;;N;;;;; -1213E;CUNEIFORM SIGN HUL2;Lo;0;L;;;;;N;;;;; -1213F;CUNEIFORM SIGN I;Lo;0;L;;;;;N;;;;; -12140;CUNEIFORM SIGN I A;Lo;0;L;;;;;N;;;;; -12141;CUNEIFORM SIGN IB;Lo;0;L;;;;;N;;;;; -12142;CUNEIFORM SIGN IDIM;Lo;0;L;;;;;N;;;;; -12143;CUNEIFORM SIGN IDIM OVER IDIM BUR;Lo;0;L;;;;;N;;;;; -12144;CUNEIFORM SIGN IDIM OVER IDIM SQUARED;Lo;0;L;;;;;N;;;;; -12145;CUNEIFORM SIGN IG;Lo;0;L;;;;;N;;;;; -12146;CUNEIFORM SIGN IGI;Lo;0;L;;;;;N;;;;; -12147;CUNEIFORM SIGN IGI DIB;Lo;0;L;;;;;N;;;;; -12148;CUNEIFORM SIGN IGI RI;Lo;0;L;;;;;N;;;;; -12149;CUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OVER UD;Lo;0;L;;;;;N;;;;; -1214A;CUNEIFORM SIGN IGI GUNU;Lo;0;L;;;;;N;;;;; -1214B;CUNEIFORM SIGN IL;Lo;0;L;;;;;N;;;;; -1214C;CUNEIFORM SIGN IL TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -1214D;CUNEIFORM SIGN IL2;Lo;0;L;;;;;N;;;;; -1214E;CUNEIFORM SIGN IM;Lo;0;L;;;;;N;;;;; -1214F;CUNEIFORM SIGN IM TIMES TAK4;Lo;0;L;;;;;N;;;;; -12150;CUNEIFORM SIGN IM CROSSING IM;Lo;0;L;;;;;N;;;;; -12151;CUNEIFORM SIGN IM OPPOSING IM;Lo;0;L;;;;;N;;;;; -12152;CUNEIFORM SIGN IM SQUARED;Lo;0;L;;;;;N;;;;; -12153;CUNEIFORM SIGN IMIN;Lo;0;L;;;;;N;;;;; -12154;CUNEIFORM SIGN IN;Lo;0;L;;;;;N;;;;; -12155;CUNEIFORM SIGN IR;Lo;0;L;;;;;N;;;;; -12156;CUNEIFORM SIGN ISH;Lo;0;L;;;;;N;;;;; -12157;CUNEIFORM SIGN KA;Lo;0;L;;;;;N;;;;; -12158;CUNEIFORM SIGN KA TIMES A;Lo;0;L;;;;;N;;;;; -12159;CUNEIFORM SIGN KA TIMES AD;Lo;0;L;;;;;N;;;;; -1215A;CUNEIFORM SIGN KA TIMES AD PLUS KU3;Lo;0;L;;;;;N;;;;; -1215B;CUNEIFORM SIGN KA TIMES ASH2;Lo;0;L;;;;;N;;;;; -1215C;CUNEIFORM SIGN KA TIMES BAD;Lo;0;L;;;;;N;;;;; -1215D;CUNEIFORM SIGN KA TIMES BALAG;Lo;0;L;;;;;N;;;;; -1215E;CUNEIFORM SIGN KA TIMES BAR;Lo;0;L;;;;;N;;;;; -1215F;CUNEIFORM SIGN KA TIMES BI;Lo;0;L;;;;;N;;;;; -12160;CUNEIFORM SIGN KA TIMES ERIN2;Lo;0;L;;;;;N;;;;; -12161;CUNEIFORM SIGN KA TIMES ESH2;Lo;0;L;;;;;N;;;;; -12162;CUNEIFORM SIGN KA TIMES GA;Lo;0;L;;;;;N;;;;; -12163;CUNEIFORM SIGN KA TIMES GAL;Lo;0;L;;;;;N;;;;; -12164;CUNEIFORM SIGN KA TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -12165;CUNEIFORM SIGN KA TIMES GAR;Lo;0;L;;;;;N;;;;; -12166;CUNEIFORM SIGN KA TIMES GAR PLUS SHA3 PLUS A;Lo;0;L;;;;;N;;;;; -12167;CUNEIFORM SIGN KA TIMES GI;Lo;0;L;;;;;N;;;;; -12168;CUNEIFORM SIGN KA TIMES GIR2;Lo;0;L;;;;;N;;;;; -12169;CUNEIFORM SIGN KA TIMES GISH PLUS SAR;Lo;0;L;;;;;N;;;;; -1216A;CUNEIFORM SIGN KA TIMES GISH CROSSING GISH;Lo;0;L;;;;;N;;;;; -1216B;CUNEIFORM SIGN KA TIMES GU;Lo;0;L;;;;;N;;;;; -1216C;CUNEIFORM SIGN KA TIMES GUR7;Lo;0;L;;;;;N;;;;; -1216D;CUNEIFORM SIGN KA TIMES IGI;Lo;0;L;;;;;N;;;;; -1216E;CUNEIFORM SIGN KA TIMES IM;Lo;0;L;;;;;N;;;;; -1216F;CUNEIFORM SIGN KA TIMES KAK;Lo;0;L;;;;;N;;;;; -12170;CUNEIFORM SIGN KA TIMES KI;Lo;0;L;;;;;N;;;;; -12171;CUNEIFORM SIGN KA TIMES KID;Lo;0;L;;;;;N;;;;; -12172;CUNEIFORM SIGN KA TIMES LI;Lo;0;L;;;;;N;;;;; -12173;CUNEIFORM SIGN KA TIMES LU;Lo;0;L;;;;;N;;;;; -12174;CUNEIFORM SIGN KA TIMES ME;Lo;0;L;;;;;N;;;;; -12175;CUNEIFORM SIGN KA TIMES ME PLUS DU;Lo;0;L;;;;;N;;;;; -12176;CUNEIFORM SIGN KA TIMES ME PLUS GI;Lo;0;L;;;;;N;;;;; -12177;CUNEIFORM SIGN KA TIMES ME PLUS TE;Lo;0;L;;;;;N;;;;; -12178;CUNEIFORM SIGN KA TIMES MI;Lo;0;L;;;;;N;;;;; -12179;CUNEIFORM SIGN KA TIMES MI PLUS NUNUZ;Lo;0;L;;;;;N;;;;; -1217A;CUNEIFORM SIGN KA TIMES NE;Lo;0;L;;;;;N;;;;; -1217B;CUNEIFORM SIGN KA TIMES NUN;Lo;0;L;;;;;N;;;;; -1217C;CUNEIFORM SIGN KA TIMES PI;Lo;0;L;;;;;N;;;;; -1217D;CUNEIFORM SIGN KA TIMES RU;Lo;0;L;;;;;N;;;;; -1217E;CUNEIFORM SIGN KA TIMES SA;Lo;0;L;;;;;N;;;;; -1217F;CUNEIFORM SIGN KA TIMES SAR;Lo;0;L;;;;;N;;;;; -12180;CUNEIFORM SIGN KA TIMES SHA;Lo;0;L;;;;;N;;;;; -12181;CUNEIFORM SIGN KA TIMES SHE;Lo;0;L;;;;;N;;;;; -12182;CUNEIFORM SIGN KA TIMES SHID;Lo;0;L;;;;;N;;;;; -12183;CUNEIFORM SIGN KA TIMES SHU;Lo;0;L;;;;;N;;;;; -12184;CUNEIFORM SIGN KA TIMES SIG;Lo;0;L;;;;;N;;;;; -12185;CUNEIFORM SIGN KA TIMES SUHUR;Lo;0;L;;;;;N;;;;; -12186;CUNEIFORM SIGN KA TIMES TAR;Lo;0;L;;;;;N;;;;; -12187;CUNEIFORM SIGN KA TIMES U;Lo;0;L;;;;;N;;;;; -12188;CUNEIFORM SIGN KA TIMES U2;Lo;0;L;;;;;N;;;;; -12189;CUNEIFORM SIGN KA TIMES UD;Lo;0;L;;;;;N;;;;; -1218A;CUNEIFORM SIGN KA TIMES UMUM TIMES PA;Lo;0;L;;;;;N;;;;; -1218B;CUNEIFORM SIGN KA TIMES USH;Lo;0;L;;;;;N;;;;; -1218C;CUNEIFORM SIGN KA TIMES ZI;Lo;0;L;;;;;N;;;;; -1218D;CUNEIFORM SIGN KA2;Lo;0;L;;;;;N;;;;; -1218E;CUNEIFORM SIGN KA2 CROSSING KA2;Lo;0;L;;;;;N;;;;; -1218F;CUNEIFORM SIGN KAB;Lo;0;L;;;;;N;;;;; -12190;CUNEIFORM SIGN KAD2;Lo;0;L;;;;;N;;;;; -12191;CUNEIFORM SIGN KAD3;Lo;0;L;;;;;N;;;;; -12192;CUNEIFORM SIGN KAD4;Lo;0;L;;;;;N;;;;; -12193;CUNEIFORM SIGN KAD5;Lo;0;L;;;;;N;;;;; -12194;CUNEIFORM SIGN KAD5 OVER KAD5;Lo;0;L;;;;;N;;;;; -12195;CUNEIFORM SIGN KAK;Lo;0;L;;;;;N;;;;; -12196;CUNEIFORM SIGN KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -12197;CUNEIFORM SIGN KAL;Lo;0;L;;;;;N;;;;; -12198;CUNEIFORM SIGN KAL TIMES BAD;Lo;0;L;;;;;N;;;;; -12199;CUNEIFORM SIGN KAL CROSSING KAL;Lo;0;L;;;;;N;;;;; -1219A;CUNEIFORM SIGN KAM2;Lo;0;L;;;;;N;;;;; -1219B;CUNEIFORM SIGN KAM4;Lo;0;L;;;;;N;;;;; -1219C;CUNEIFORM SIGN KASKAL;Lo;0;L;;;;;N;;;;; -1219D;CUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;; -1219E;CUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;; -1219F;CUNEIFORM SIGN KESH2;Lo;0;L;;;;;N;;;;; -121A0;CUNEIFORM SIGN KI;Lo;0;L;;;;;N;;;;; -121A1;CUNEIFORM SIGN KI TIMES BAD;Lo;0;L;;;;;N;;;;; -121A2;CUNEIFORM SIGN KI TIMES U;Lo;0;L;;;;;N;;;;; -121A3;CUNEIFORM SIGN KI TIMES UD;Lo;0;L;;;;;N;;;;; -121A4;CUNEIFORM SIGN KID;Lo;0;L;;;;;N;;;;; -121A5;CUNEIFORM SIGN KIN;Lo;0;L;;;;;N;;;;; -121A6;CUNEIFORM SIGN KISAL;Lo;0;L;;;;;N;;;;; -121A7;CUNEIFORM SIGN KISH;Lo;0;L;;;;;N;;;;; -121A8;CUNEIFORM SIGN KISIM5;Lo;0;L;;;;;N;;;;; -121A9;CUNEIFORM SIGN KISIM5 OVER KISIM5;Lo;0;L;;;;;N;;;;; -121AA;CUNEIFORM SIGN KU;Lo;0;L;;;;;N;;;;; -121AB;CUNEIFORM SIGN KU OVER HI TIMES ASH2 KU OVER HI TIMES ASH2;Lo;0;L;;;;;N;;;;; -121AC;CUNEIFORM SIGN KU3;Lo;0;L;;;;;N;;;;; -121AD;CUNEIFORM SIGN KU4;Lo;0;L;;;;;N;;;;; -121AE;CUNEIFORM SIGN KU4 VARIANT FORM;Lo;0;L;;;;;N;;;;; -121AF;CUNEIFORM SIGN KU7;Lo;0;L;;;;;N;;;;; -121B0;CUNEIFORM SIGN KUL;Lo;0;L;;;;;N;;;;; -121B1;CUNEIFORM SIGN KUL GUNU;Lo;0;L;;;;;N;;;;; -121B2;CUNEIFORM SIGN KUN;Lo;0;L;;;;;N;;;;; -121B3;CUNEIFORM SIGN KUR;Lo;0;L;;;;;N;;;;; -121B4;CUNEIFORM SIGN KUR OPPOSING KUR;Lo;0;L;;;;;N;;;;; -121B5;CUNEIFORM SIGN KUSHU2;Lo;0;L;;;;;N;;;;; -121B6;CUNEIFORM SIGN KWU318;Lo;0;L;;;;;N;;;;; -121B7;CUNEIFORM SIGN LA;Lo;0;L;;;;;N;;;;; -121B8;CUNEIFORM SIGN LAGAB;Lo;0;L;;;;;N;;;;; -121B9;CUNEIFORM SIGN LAGAB TIMES A;Lo;0;L;;;;;N;;;;; -121BA;CUNEIFORM SIGN LAGAB TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;; -121BB;CUNEIFORM SIGN LAGAB TIMES A PLUS GAR;Lo;0;L;;;;;N;;;;; -121BC;CUNEIFORM SIGN LAGAB TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;; -121BD;CUNEIFORM SIGN LAGAB TIMES AL;Lo;0;L;;;;;N;;;;; -121BE;CUNEIFORM SIGN LAGAB TIMES AN;Lo;0;L;;;;;N;;;;; -121BF;CUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENU;Lo;0;L;;;;;N;;;;; -121C0;CUNEIFORM SIGN LAGAB TIMES BAD;Lo;0;L;;;;;N;;;;; -121C1;CUNEIFORM SIGN LAGAB TIMES BI;Lo;0;L;;;;;N;;;;; -121C2;CUNEIFORM SIGN LAGAB TIMES DAR;Lo;0;L;;;;;N;;;;; -121C3;CUNEIFORM SIGN LAGAB TIMES EN;Lo;0;L;;;;;N;;;;; -121C4;CUNEIFORM SIGN LAGAB TIMES GA;Lo;0;L;;;;;N;;;;; -121C5;CUNEIFORM SIGN LAGAB TIMES GAR;Lo;0;L;;;;;N;;;;; -121C6;CUNEIFORM SIGN LAGAB TIMES GUD;Lo;0;L;;;;;N;;;;; -121C7;CUNEIFORM SIGN LAGAB TIMES GUD PLUS GUD;Lo;0;L;;;;;N;;;;; -121C8;CUNEIFORM SIGN LAGAB TIMES HA;Lo;0;L;;;;;N;;;;; -121C9;CUNEIFORM SIGN LAGAB TIMES HAL;Lo;0;L;;;;;N;;;;; -121CA;CUNEIFORM SIGN LAGAB TIMES HI TIMES NUN;Lo;0;L;;;;;N;;;;; -121CB;CUNEIFORM SIGN LAGAB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -121CC;CUNEIFORM SIGN LAGAB TIMES IM;Lo;0;L;;;;;N;;;;; -121CD;CUNEIFORM SIGN LAGAB TIMES IM PLUS HA;Lo;0;L;;;;;N;;;;; -121CE;CUNEIFORM SIGN LAGAB TIMES IM PLUS LU;Lo;0;L;;;;;N;;;;; -121CF;CUNEIFORM SIGN LAGAB TIMES KI;Lo;0;L;;;;;N;;;;; -121D0;CUNEIFORM SIGN LAGAB TIMES KIN;Lo;0;L;;;;;N;;;;; -121D1;CUNEIFORM SIGN LAGAB TIMES KU3;Lo;0;L;;;;;N;;;;; -121D2;CUNEIFORM SIGN LAGAB TIMES KUL;Lo;0;L;;;;;N;;;;; -121D3;CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS A;Lo;0;L;;;;;N;;;;; -121D4;CUNEIFORM SIGN LAGAB TIMES LAGAB;Lo;0;L;;;;;N;;;;; -121D5;CUNEIFORM SIGN LAGAB TIMES LISH;Lo;0;L;;;;;N;;;;; -121D6;CUNEIFORM SIGN LAGAB TIMES LU;Lo;0;L;;;;;N;;;;; -121D7;CUNEIFORM SIGN LAGAB TIMES LUL;Lo;0;L;;;;;N;;;;; -121D8;CUNEIFORM SIGN LAGAB TIMES ME;Lo;0;L;;;;;N;;;;; -121D9;CUNEIFORM SIGN LAGAB TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; -121DA;CUNEIFORM SIGN LAGAB TIMES MUSH;Lo;0;L;;;;;N;;;;; -121DB;CUNEIFORM SIGN LAGAB TIMES NE;Lo;0;L;;;;;N;;;;; -121DC;CUNEIFORM SIGN LAGAB TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;; -121DD;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH PLUS ERIN2;Lo;0;L;;;;;N;;;;; -121DE;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU;Lo;0;L;;;;;N;;;;; -121DF;CUNEIFORM SIGN LAGAB TIMES SHU2;Lo;0;L;;;;;N;;;;; -121E0;CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2;Lo;0;L;;;;;N;;;;; -121E1;CUNEIFORM SIGN LAGAB TIMES SUM;Lo;0;L;;;;;N;;;;; -121E2;CUNEIFORM SIGN LAGAB TIMES TAG;Lo;0;L;;;;;N;;;;; -121E3;CUNEIFORM SIGN LAGAB TIMES TAK4;Lo;0;L;;;;;N;;;;; -121E4;CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NA;Lo;0;L;;;;;N;;;;; -121E5;CUNEIFORM SIGN LAGAB TIMES U;Lo;0;L;;;;;N;;;;; -121E6;CUNEIFORM SIGN LAGAB TIMES U PLUS A;Lo;0;L;;;;;N;;;;; -121E7;CUNEIFORM SIGN LAGAB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;; -121E8;CUNEIFORM SIGN LAGAB TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;; -121E9;CUNEIFORM SIGN LAGAB TIMES UD;Lo;0;L;;;;;N;;;;; -121EA;CUNEIFORM SIGN LAGAB TIMES USH;Lo;0;L;;;;;N;;;;; -121EB;CUNEIFORM SIGN LAGAB SQUARED;Lo;0;L;;;;;N;;;;; -121EC;CUNEIFORM SIGN LAGAR;Lo;0;L;;;;;N;;;;; -121ED;CUNEIFORM SIGN LAGAR TIMES SHE;Lo;0;L;;;;;N;;;;; -121EE;CUNEIFORM SIGN LAGAR TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;; -121EF;CUNEIFORM SIGN LAGAR GUNU;Lo;0;L;;;;;N;;;;; -121F0;CUNEIFORM SIGN LAGAR GUNU OVER LAGAR GUNU SHE;Lo;0;L;;;;;N;;;;; -121F1;CUNEIFORM SIGN LAHSHU;Lo;0;L;;;;;N;;;;; -121F2;CUNEIFORM SIGN LAL;Lo;0;L;;;;;N;;;;; -121F3;CUNEIFORM SIGN LAL TIMES LAL;Lo;0;L;;;;;N;;;;; -121F4;CUNEIFORM SIGN LAM;Lo;0;L;;;;;N;;;;; -121F5;CUNEIFORM SIGN LAM TIMES KUR;Lo;0;L;;;;;N;;;;; -121F6;CUNEIFORM SIGN LAM TIMES KUR PLUS RU;Lo;0;L;;;;;N;;;;; -121F7;CUNEIFORM SIGN LI;Lo;0;L;;;;;N;;;;; -121F8;CUNEIFORM SIGN LIL;Lo;0;L;;;;;N;;;;; -121F9;CUNEIFORM SIGN LIMMU2;Lo;0;L;;;;;N;;;;; -121FA;CUNEIFORM SIGN LISH;Lo;0;L;;;;;N;;;;; -121FB;CUNEIFORM SIGN LU;Lo;0;L;;;;;N;;;;; -121FC;CUNEIFORM SIGN LU TIMES BAD;Lo;0;L;;;;;N;;;;; -121FD;CUNEIFORM SIGN LU2;Lo;0;L;;;;;N;;;;; -121FE;CUNEIFORM SIGN LU2 TIMES AL;Lo;0;L;;;;;N;;;;; -121FF;CUNEIFORM SIGN LU2 TIMES BAD;Lo;0;L;;;;;N;;;;; -12200;CUNEIFORM SIGN LU2 TIMES ESH2;Lo;0;L;;;;;N;;;;; -12201;CUNEIFORM SIGN LU2 TIMES ESH2 TENU;Lo;0;L;;;;;N;;;;; -12202;CUNEIFORM SIGN LU2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -12203;CUNEIFORM SIGN LU2 TIMES HI TIMES BAD;Lo;0;L;;;;;N;;;;; -12204;CUNEIFORM SIGN LU2 TIMES IM;Lo;0;L;;;;;N;;;;; -12205;CUNEIFORM SIGN LU2 TIMES KAD2;Lo;0;L;;;;;N;;;;; -12206;CUNEIFORM SIGN LU2 TIMES KAD3;Lo;0;L;;;;;N;;;;; -12207;CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASH;Lo;0;L;;;;;N;;;;; -12208;CUNEIFORM SIGN LU2 TIMES KI;Lo;0;L;;;;;N;;;;; -12209;CUNEIFORM SIGN LU2 TIMES LA PLUS ASH;Lo;0;L;;;;;N;;;;; -1220A;CUNEIFORM SIGN LU2 TIMES LAGAB;Lo;0;L;;;;;N;;;;; -1220B;CUNEIFORM SIGN LU2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; -1220C;CUNEIFORM SIGN LU2 TIMES NE;Lo;0;L;;;;;N;;;;; -1220D;CUNEIFORM SIGN LU2 TIMES NU;Lo;0;L;;;;;N;;;;; -1220E;CUNEIFORM SIGN LU2 TIMES SI PLUS ASH;Lo;0;L;;;;;N;;;;; -1220F;CUNEIFORM SIGN LU2 TIMES SIK2 PLUS BU;Lo;0;L;;;;;N;;;;; -12210;CUNEIFORM SIGN LU2 TIMES TUG2;Lo;0;L;;;;;N;;;;; -12211;CUNEIFORM SIGN LU2 TENU;Lo;0;L;;;;;N;;;;; -12212;CUNEIFORM SIGN LU2 CROSSING LU2;Lo;0;L;;;;;N;;;;; -12213;CUNEIFORM SIGN LU2 OPPOSING LU2;Lo;0;L;;;;;N;;;;; -12214;CUNEIFORM SIGN LU2 SQUARED;Lo;0;L;;;;;N;;;;; -12215;CUNEIFORM SIGN LU2 SHESHIG;Lo;0;L;;;;;N;;;;; -12216;CUNEIFORM SIGN LU3;Lo;0;L;;;;;N;;;;; -12217;CUNEIFORM SIGN LUGAL;Lo;0;L;;;;;N;;;;; -12218;CUNEIFORM SIGN LUGAL OVER LUGAL;Lo;0;L;;;;;N;;;;; -12219;CUNEIFORM SIGN LUGAL OPPOSING LUGAL;Lo;0;L;;;;;N;;;;; -1221A;CUNEIFORM SIGN LUGAL SHESHIG;Lo;0;L;;;;;N;;;;; -1221B;CUNEIFORM SIGN LUH;Lo;0;L;;;;;N;;;;; -1221C;CUNEIFORM SIGN LUL;Lo;0;L;;;;;N;;;;; -1221D;CUNEIFORM SIGN LUM;Lo;0;L;;;;;N;;;;; -1221E;CUNEIFORM SIGN LUM OVER LUM;Lo;0;L;;;;;N;;;;; -1221F;CUNEIFORM SIGN LUM OVER LUM GAR OVER GAR;Lo;0;L;;;;;N;;;;; -12220;CUNEIFORM SIGN MA;Lo;0;L;;;;;N;;;;; -12221;CUNEIFORM SIGN MA TIMES TAK4;Lo;0;L;;;;;N;;;;; -12222;CUNEIFORM SIGN MA GUNU;Lo;0;L;;;;;N;;;;; -12223;CUNEIFORM SIGN MA2;Lo;0;L;;;;;N;;;;; -12224;CUNEIFORM SIGN MAH;Lo;0;L;;;;;N;;;;; -12225;CUNEIFORM SIGN MAR;Lo;0;L;;;;;N;;;;; -12226;CUNEIFORM SIGN MASH;Lo;0;L;;;;;N;;;;; -12227;CUNEIFORM SIGN MASH2;Lo;0;L;;;;;N;;;;; -12228;CUNEIFORM SIGN ME;Lo;0;L;;;;;N;;;;; -12229;CUNEIFORM SIGN MES;Lo;0;L;;;;;N;;;;; -1222A;CUNEIFORM SIGN MI;Lo;0;L;;;;;N;;;;; -1222B;CUNEIFORM SIGN MIN;Lo;0;L;;;;;N;;;;; -1222C;CUNEIFORM SIGN MU;Lo;0;L;;;;;N;;;;; -1222D;CUNEIFORM SIGN MU OVER MU;Lo;0;L;;;;;N;;;;; -1222E;CUNEIFORM SIGN MUG;Lo;0;L;;;;;N;;;;; -1222F;CUNEIFORM SIGN MUG GUNU;Lo;0;L;;;;;N;;;;; -12230;CUNEIFORM SIGN MUNSUB;Lo;0;L;;;;;N;;;;; -12231;CUNEIFORM SIGN MURGU2;Lo;0;L;;;;;N;;;;; -12232;CUNEIFORM SIGN MUSH;Lo;0;L;;;;;N;;;;; -12233;CUNEIFORM SIGN MUSH TIMES A;Lo;0;L;;;;;N;;;;; -12234;CUNEIFORM SIGN MUSH TIMES KUR;Lo;0;L;;;;;N;;;;; -12235;CUNEIFORM SIGN MUSH TIMES ZA;Lo;0;L;;;;;N;;;;; -12236;CUNEIFORM SIGN MUSH OVER MUSH;Lo;0;L;;;;;N;;;;; -12237;CUNEIFORM SIGN MUSH OVER MUSH TIMES A PLUS NA;Lo;0;L;;;;;N;;;;; -12238;CUNEIFORM SIGN MUSH CROSSING MUSH;Lo;0;L;;;;;N;;;;; -12239;CUNEIFORM SIGN MUSH3;Lo;0;L;;;;;N;;;;; -1223A;CUNEIFORM SIGN MUSH3 TIMES A;Lo;0;L;;;;;N;;;;; -1223B;CUNEIFORM SIGN MUSH3 TIMES A PLUS DI;Lo;0;L;;;;;N;;;;; -1223C;CUNEIFORM SIGN MUSH3 TIMES DI;Lo;0;L;;;;;N;;;;; -1223D;CUNEIFORM SIGN MUSH3 GUNU;Lo;0;L;;;;;N;;;;; -1223E;CUNEIFORM SIGN NA;Lo;0;L;;;;;N;;;;; -1223F;CUNEIFORM SIGN NA2;Lo;0;L;;;;;N;;;;; -12240;CUNEIFORM SIGN NAGA;Lo;0;L;;;;;N;;;;; -12241;CUNEIFORM SIGN NAGA INVERTED;Lo;0;L;;;;;N;;;;; -12242;CUNEIFORM SIGN NAGA TIMES SHU TENU;Lo;0;L;;;;;N;;;;; -12243;CUNEIFORM SIGN NAGA OPPOSING NAGA;Lo;0;L;;;;;N;;;;; -12244;CUNEIFORM SIGN NAGAR;Lo;0;L;;;;;N;;;;; -12245;CUNEIFORM SIGN NAM NUTILLU;Lo;0;L;;;;;N;;;;; -12246;CUNEIFORM SIGN NAM;Lo;0;L;;;;;N;;;;; -12247;CUNEIFORM SIGN NAM2;Lo;0;L;;;;;N;;;;; -12248;CUNEIFORM SIGN NE;Lo;0;L;;;;;N;;;;; -12249;CUNEIFORM SIGN NE TIMES A;Lo;0;L;;;;;N;;;;; -1224A;CUNEIFORM SIGN NE TIMES UD;Lo;0;L;;;;;N;;;;; -1224B;CUNEIFORM SIGN NE SHESHIG;Lo;0;L;;;;;N;;;;; -1224C;CUNEIFORM SIGN NI;Lo;0;L;;;;;N;;;;; -1224D;CUNEIFORM SIGN NI TIMES E;Lo;0;L;;;;;N;;;;; -1224E;CUNEIFORM SIGN NI2;Lo;0;L;;;;;N;;;;; -1224F;CUNEIFORM SIGN NIM;Lo;0;L;;;;;N;;;;; -12250;CUNEIFORM SIGN NIM TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -12251;CUNEIFORM SIGN NIM TIMES GAR PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;; -12252;CUNEIFORM SIGN NINDA2;Lo;0;L;;;;;N;;;;; -12253;CUNEIFORM SIGN NINDA2 TIMES AN;Lo;0;L;;;;;N;;;;; -12254;CUNEIFORM SIGN NINDA2 TIMES ASH;Lo;0;L;;;;;N;;;;; -12255;CUNEIFORM SIGN NINDA2 TIMES ASH PLUS ASH;Lo;0;L;;;;;N;;;;; -12256;CUNEIFORM SIGN NINDA2 TIMES GUD;Lo;0;L;;;;;N;;;;; -12257;CUNEIFORM SIGN NINDA2 TIMES ME PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;; -12258;CUNEIFORM SIGN NINDA2 TIMES NE;Lo;0;L;;;;;N;;;;; -12259;CUNEIFORM SIGN NINDA2 TIMES NUN;Lo;0;L;;;;;N;;;;; -1225A;CUNEIFORM SIGN NINDA2 TIMES SHE;Lo;0;L;;;;;N;;;;; -1225B;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS A AN;Lo;0;L;;;;;N;;;;; -1225C;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH;Lo;0;L;;;;;N;;;;; -1225D;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH PLUS ASH;Lo;0;L;;;;;N;;;;; -1225E;CUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;; -1225F;CUNEIFORM SIGN NINDA2 TIMES USH;Lo;0;L;;;;;N;;;;; -12260;CUNEIFORM SIGN NISAG;Lo;0;L;;;;;N;;;;; -12261;CUNEIFORM SIGN NU;Lo;0;L;;;;;N;;;;; -12262;CUNEIFORM SIGN NU11;Lo;0;L;;;;;N;;;;; -12263;CUNEIFORM SIGN NUN;Lo;0;L;;;;;N;;;;; -12264;CUNEIFORM SIGN NUN LAGAR TIMES GAR;Lo;0;L;;;;;N;;;;; -12265;CUNEIFORM SIGN NUN LAGAR TIMES MASH;Lo;0;L;;;;;N;;;;; -12266;CUNEIFORM SIGN NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;; -12267;CUNEIFORM SIGN NUN LAGAR TIMES SAL OVER NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;; -12268;CUNEIFORM SIGN NUN LAGAR TIMES USH;Lo;0;L;;;;;N;;;;; -12269;CUNEIFORM SIGN NUN TENU;Lo;0;L;;;;;N;;;;; -1226A;CUNEIFORM SIGN NUN OVER NUN;Lo;0;L;;;;;N;;;;; -1226B;CUNEIFORM SIGN NUN CROSSING NUN;Lo;0;L;;;;;N;;;;; -1226C;CUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGAR;Lo;0;L;;;;;N;;;;; -1226D;CUNEIFORM SIGN NUNUZ;Lo;0;L;;;;;N;;;;; -1226E;CUNEIFORM SIGN NUNUZ AB2 TIMES ASHGAB;Lo;0;L;;;;;N;;;;; -1226F;CUNEIFORM SIGN NUNUZ AB2 TIMES BI;Lo;0;L;;;;;N;;;;; -12270;CUNEIFORM SIGN NUNUZ AB2 TIMES DUG;Lo;0;L;;;;;N;;;;; -12271;CUNEIFORM SIGN NUNUZ AB2 TIMES GUD;Lo;0;L;;;;;N;;;;; -12272;CUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -12273;CUNEIFORM SIGN NUNUZ AB2 TIMES KAD3;Lo;0;L;;;;;N;;;;; -12274;CUNEIFORM SIGN NUNUZ AB2 TIMES LA;Lo;0;L;;;;;N;;;;; -12275;CUNEIFORM SIGN NUNUZ AB2 TIMES NE;Lo;0;L;;;;;N;;;;; -12276;CUNEIFORM SIGN NUNUZ AB2 TIMES SILA3;Lo;0;L;;;;;N;;;;; -12277;CUNEIFORM SIGN NUNUZ AB2 TIMES U2;Lo;0;L;;;;;N;;;;; -12278;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;; -12279;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI U;Lo;0;L;;;;;N;;;;; -1227A;CUNEIFORM SIGN PA;Lo;0;L;;;;;N;;;;; -1227B;CUNEIFORM SIGN PAD;Lo;0;L;;;;;N;;;;; -1227C;CUNEIFORM SIGN PAN;Lo;0;L;;;;;N;;;;; -1227D;CUNEIFORM SIGN PAP;Lo;0;L;;;;;N;;;;; -1227E;CUNEIFORM SIGN PESH2;Lo;0;L;;;;;N;;;;; -1227F;CUNEIFORM SIGN PI;Lo;0;L;;;;;N;;;;; -12280;CUNEIFORM SIGN PI TIMES A;Lo;0;L;;;;;N;;;;; -12281;CUNEIFORM SIGN PI TIMES AB;Lo;0;L;;;;;N;;;;; -12282;CUNEIFORM SIGN PI TIMES BI;Lo;0;L;;;;;N;;;;; -12283;CUNEIFORM SIGN PI TIMES BU;Lo;0;L;;;;;N;;;;; -12284;CUNEIFORM SIGN PI TIMES E;Lo;0;L;;;;;N;;;;; -12285;CUNEIFORM SIGN PI TIMES I;Lo;0;L;;;;;N;;;;; -12286;CUNEIFORM SIGN PI TIMES IB;Lo;0;L;;;;;N;;;;; -12287;CUNEIFORM SIGN PI TIMES U;Lo;0;L;;;;;N;;;;; -12288;CUNEIFORM SIGN PI TIMES U2;Lo;0;L;;;;;N;;;;; -12289;CUNEIFORM SIGN PI CROSSING PI;Lo;0;L;;;;;N;;;;; -1228A;CUNEIFORM SIGN PIRIG;Lo;0;L;;;;;N;;;;; -1228B;CUNEIFORM SIGN PIRIG TIMES KAL;Lo;0;L;;;;;N;;;;; -1228C;CUNEIFORM SIGN PIRIG TIMES UD;Lo;0;L;;;;;N;;;;; -1228D;CUNEIFORM SIGN PIRIG TIMES ZA;Lo;0;L;;;;;N;;;;; -1228E;CUNEIFORM SIGN PIRIG OPPOSING PIRIG;Lo;0;L;;;;;N;;;;; -1228F;CUNEIFORM SIGN RA;Lo;0;L;;;;;N;;;;; -12290;CUNEIFORM SIGN RAB;Lo;0;L;;;;;N;;;;; -12291;CUNEIFORM SIGN RI;Lo;0;L;;;;;N;;;;; -12292;CUNEIFORM SIGN RU;Lo;0;L;;;;;N;;;;; -12293;CUNEIFORM SIGN SA;Lo;0;L;;;;;N;;;;; -12294;CUNEIFORM SIGN SAG NUTILLU;Lo;0;L;;;;;N;;;;; -12295;CUNEIFORM SIGN SAG;Lo;0;L;;;;;N;;;;; -12296;CUNEIFORM SIGN SAG TIMES A;Lo;0;L;;;;;N;;;;; -12297;CUNEIFORM SIGN SAG TIMES DU;Lo;0;L;;;;;N;;;;; -12298;CUNEIFORM SIGN SAG TIMES DUB;Lo;0;L;;;;;N;;;;; -12299;CUNEIFORM SIGN SAG TIMES HA;Lo;0;L;;;;;N;;;;; -1229A;CUNEIFORM SIGN SAG TIMES KAK;Lo;0;L;;;;;N;;;;; -1229B;CUNEIFORM SIGN SAG TIMES KUR;Lo;0;L;;;;;N;;;;; -1229C;CUNEIFORM SIGN SAG TIMES LUM;Lo;0;L;;;;;N;;;;; -1229D;CUNEIFORM SIGN SAG TIMES MI;Lo;0;L;;;;;N;;;;; -1229E;CUNEIFORM SIGN SAG TIMES NUN;Lo;0;L;;;;;N;;;;; -1229F;CUNEIFORM SIGN SAG TIMES SAL;Lo;0;L;;;;;N;;;;; -122A0;CUNEIFORM SIGN SAG TIMES SHID;Lo;0;L;;;;;N;;;;; -122A1;CUNEIFORM SIGN SAG TIMES TAB;Lo;0;L;;;;;N;;;;; -122A2;CUNEIFORM SIGN SAG TIMES U2;Lo;0;L;;;;;N;;;;; -122A3;CUNEIFORM SIGN SAG TIMES UB;Lo;0;L;;;;;N;;;;; -122A4;CUNEIFORM SIGN SAG TIMES UM;Lo;0;L;;;;;N;;;;; -122A5;CUNEIFORM SIGN SAG TIMES UR;Lo;0;L;;;;;N;;;;; -122A6;CUNEIFORM SIGN SAG TIMES USH;Lo;0;L;;;;;N;;;;; -122A7;CUNEIFORM SIGN SAG OVER SAG;Lo;0;L;;;;;N;;;;; -122A8;CUNEIFORM SIGN SAG GUNU;Lo;0;L;;;;;N;;;;; -122A9;CUNEIFORM SIGN SAL;Lo;0;L;;;;;N;;;;; -122AA;CUNEIFORM SIGN SAL LAGAB TIMES ASH2;Lo;0;L;;;;;N;;;;; -122AB;CUNEIFORM SIGN SANGA2;Lo;0;L;;;;;N;;;;; -122AC;CUNEIFORM SIGN SAR;Lo;0;L;;;;;N;;;;; -122AD;CUNEIFORM SIGN SHA;Lo;0;L;;;;;N;;;;; -122AE;CUNEIFORM SIGN SHA3;Lo;0;L;;;;;N;;;;; -122AF;CUNEIFORM SIGN SHA3 TIMES A;Lo;0;L;;;;;N;;;;; -122B0;CUNEIFORM SIGN SHA3 TIMES BAD;Lo;0;L;;;;;N;;;;; -122B1;CUNEIFORM SIGN SHA3 TIMES GISH;Lo;0;L;;;;;N;;;;; -122B2;CUNEIFORM SIGN SHA3 TIMES NE;Lo;0;L;;;;;N;;;;; -122B3;CUNEIFORM SIGN SHA3 TIMES SHU2;Lo;0;L;;;;;N;;;;; -122B4;CUNEIFORM SIGN SHA3 TIMES TUR;Lo;0;L;;;;;N;;;;; -122B5;CUNEIFORM SIGN SHA3 TIMES U;Lo;0;L;;;;;N;;;;; -122B6;CUNEIFORM SIGN SHA3 TIMES U PLUS A;Lo;0;L;;;;;N;;;;; -122B7;CUNEIFORM SIGN SHA6;Lo;0;L;;;;;N;;;;; -122B8;CUNEIFORM SIGN SHAB6;Lo;0;L;;;;;N;;;;; -122B9;CUNEIFORM SIGN SHAR2;Lo;0;L;;;;;N;;;;; -122BA;CUNEIFORM SIGN SHE;Lo;0;L;;;;;N;;;;; -122BB;CUNEIFORM SIGN SHE HU;Lo;0;L;;;;;N;;;;; -122BC;CUNEIFORM SIGN SHE OVER SHE GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; -122BD;CUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GAR;Lo;0;L;;;;;N;;;;; -122BE;CUNEIFORM SIGN SHEG9;Lo;0;L;;;;;N;;;;; -122BF;CUNEIFORM SIGN SHEN;Lo;0;L;;;;;N;;;;; -122C0;CUNEIFORM SIGN SHESH;Lo;0;L;;;;;N;;;;; -122C1;CUNEIFORM SIGN SHESH2;Lo;0;L;;;;;N;;;;; -122C2;CUNEIFORM SIGN SHESHLAM;Lo;0;L;;;;;N;;;;; -122C3;CUNEIFORM SIGN SHID;Lo;0;L;;;;;N;;;;; -122C4;CUNEIFORM SIGN SHID TIMES A;Lo;0;L;;;;;N;;;;; -122C5;CUNEIFORM SIGN SHID TIMES IM;Lo;0;L;;;;;N;;;;; -122C6;CUNEIFORM SIGN SHIM;Lo;0;L;;;;;N;;;;; -122C7;CUNEIFORM SIGN SHIM TIMES A;Lo;0;L;;;;;N;;;;; -122C8;CUNEIFORM SIGN SHIM TIMES BAL;Lo;0;L;;;;;N;;;;; -122C9;CUNEIFORM SIGN SHIM TIMES BULUG;Lo;0;L;;;;;N;;;;; -122CA;CUNEIFORM SIGN SHIM TIMES DIN;Lo;0;L;;;;;N;;;;; -122CB;CUNEIFORM SIGN SHIM TIMES GAR;Lo;0;L;;;;;N;;;;; -122CC;CUNEIFORM SIGN SHIM TIMES IGI;Lo;0;L;;;;;N;;;;; -122CD;CUNEIFORM SIGN SHIM TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -122CE;CUNEIFORM SIGN SHIM TIMES KUSHU2;Lo;0;L;;;;;N;;;;; -122CF;CUNEIFORM SIGN SHIM TIMES LUL;Lo;0;L;;;;;N;;;;; -122D0;CUNEIFORM SIGN SHIM TIMES MUG;Lo;0;L;;;;;N;;;;; -122D1;CUNEIFORM SIGN SHIM TIMES SAL;Lo;0;L;;;;;N;;;;; -122D2;CUNEIFORM SIGN SHINIG;Lo;0;L;;;;;N;;;;; -122D3;CUNEIFORM SIGN SHIR;Lo;0;L;;;;;N;;;;; -122D4;CUNEIFORM SIGN SHIR TENU;Lo;0;L;;;;;N;;;;; -122D5;CUNEIFORM SIGN SHIR OVER SHIR BUR OVER BUR;Lo;0;L;;;;;N;;;;; -122D6;CUNEIFORM SIGN SHITA;Lo;0;L;;;;;N;;;;; -122D7;CUNEIFORM SIGN SHU;Lo;0;L;;;;;N;;;;; -122D8;CUNEIFORM SIGN SHU OVER INVERTED SHU;Lo;0;L;;;;;N;;;;; -122D9;CUNEIFORM SIGN SHU2;Lo;0;L;;;;;N;;;;; -122DA;CUNEIFORM SIGN SHUBUR;Lo;0;L;;;;;N;;;;; -122DB;CUNEIFORM SIGN SI;Lo;0;L;;;;;N;;;;; -122DC;CUNEIFORM SIGN SI GUNU;Lo;0;L;;;;;N;;;;; -122DD;CUNEIFORM SIGN SIG;Lo;0;L;;;;;N;;;;; -122DE;CUNEIFORM SIGN SIG4;Lo;0;L;;;;;N;;;;; -122DF;CUNEIFORM SIGN SIG4 OVER SIG4 SHU2;Lo;0;L;;;;;N;;;;; -122E0;CUNEIFORM SIGN SIK2;Lo;0;L;;;;;N;;;;; -122E1;CUNEIFORM SIGN SILA3;Lo;0;L;;;;;N;;;;; -122E2;CUNEIFORM SIGN SU;Lo;0;L;;;;;N;;;;; -122E3;CUNEIFORM SIGN SU OVER SU;Lo;0;L;;;;;N;;;;; -122E4;CUNEIFORM SIGN SUD;Lo;0;L;;;;;N;;;;; -122E5;CUNEIFORM SIGN SUD2;Lo;0;L;;;;;N;;;;; -122E6;CUNEIFORM SIGN SUHUR;Lo;0;L;;;;;N;;;;; -122E7;CUNEIFORM SIGN SUM;Lo;0;L;;;;;N;;;;; -122E8;CUNEIFORM SIGN SUMASH;Lo;0;L;;;;;N;;;;; -122E9;CUNEIFORM SIGN SUR;Lo;0;L;;;;;N;;;;; -122EA;CUNEIFORM SIGN SUR9;Lo;0;L;;;;;N;;;;; -122EB;CUNEIFORM SIGN TA;Lo;0;L;;;;;N;;;;; -122EC;CUNEIFORM SIGN TA ASTERISK;Lo;0;L;;;;;N;;;;; -122ED;CUNEIFORM SIGN TA TIMES HI;Lo;0;L;;;;;N;;;;; -122EE;CUNEIFORM SIGN TA TIMES MI;Lo;0;L;;;;;N;;;;; -122EF;CUNEIFORM SIGN TA GUNU;Lo;0;L;;;;;N;;;;; -122F0;CUNEIFORM SIGN TAB;Lo;0;L;;;;;N;;;;; -122F1;CUNEIFORM SIGN TAB OVER TAB NI OVER NI DISH OVER DISH;Lo;0;L;;;;;N;;;;; -122F2;CUNEIFORM SIGN TAB SQUARED;Lo;0;L;;;;;N;;;;; -122F3;CUNEIFORM SIGN TAG;Lo;0;L;;;;;N;;;;; -122F4;CUNEIFORM SIGN TAG TIMES BI;Lo;0;L;;;;;N;;;;; -122F5;CUNEIFORM SIGN TAG TIMES GUD;Lo;0;L;;;;;N;;;;; -122F6;CUNEIFORM SIGN TAG TIMES SHE;Lo;0;L;;;;;N;;;;; -122F7;CUNEIFORM SIGN TAG TIMES SHU;Lo;0;L;;;;;N;;;;; -122F8;CUNEIFORM SIGN TAG TIMES TUG2;Lo;0;L;;;;;N;;;;; -122F9;CUNEIFORM SIGN TAG TIMES UD;Lo;0;L;;;;;N;;;;; -122FA;CUNEIFORM SIGN TAK4;Lo;0;L;;;;;N;;;;; -122FB;CUNEIFORM SIGN TAR;Lo;0;L;;;;;N;;;;; -122FC;CUNEIFORM SIGN TE;Lo;0;L;;;;;N;;;;; -122FD;CUNEIFORM SIGN TE GUNU;Lo;0;L;;;;;N;;;;; -122FE;CUNEIFORM SIGN TI;Lo;0;L;;;;;N;;;;; -122FF;CUNEIFORM SIGN TI TENU;Lo;0;L;;;;;N;;;;; -12300;CUNEIFORM SIGN TIL;Lo;0;L;;;;;N;;;;; -12301;CUNEIFORM SIGN TIR;Lo;0;L;;;;;N;;;;; -12302;CUNEIFORM SIGN TIR TIMES TAK4;Lo;0;L;;;;;N;;;;; -12303;CUNEIFORM SIGN TIR OVER TIR;Lo;0;L;;;;;N;;;;; -12304;CUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; -12305;CUNEIFORM SIGN TU;Lo;0;L;;;;;N;;;;; -12306;CUNEIFORM SIGN TUG2;Lo;0;L;;;;;N;;;;; -12307;CUNEIFORM SIGN TUK;Lo;0;L;;;;;N;;;;; -12308;CUNEIFORM SIGN TUM;Lo;0;L;;;;;N;;;;; -12309;CUNEIFORM SIGN TUR;Lo;0;L;;;;;N;;;;; -1230A;CUNEIFORM SIGN TUR OVER TUR ZA OVER ZA;Lo;0;L;;;;;N;;;;; -1230B;CUNEIFORM SIGN U;Lo;0;L;;;;;N;;;;; -1230C;CUNEIFORM SIGN U GUD;Lo;0;L;;;;;N;;;;; -1230D;CUNEIFORM SIGN U U U;Lo;0;L;;;;;N;;;;; -1230E;CUNEIFORM SIGN U OVER U PA OVER PA GAR OVER GAR;Lo;0;L;;;;;N;;;;; -1230F;CUNEIFORM SIGN U OVER U SUR OVER SUR;Lo;0;L;;;;;N;;;;; -12310;CUNEIFORM SIGN U OVER U U REVERSED OVER U REVERSED;Lo;0;L;;;;;N;;;;; -12311;CUNEIFORM SIGN U2;Lo;0;L;;;;;N;;;;; -12312;CUNEIFORM SIGN UB;Lo;0;L;;;;;N;;;;; -12313;CUNEIFORM SIGN UD;Lo;0;L;;;;;N;;;;; -12314;CUNEIFORM SIGN UD KUSHU2;Lo;0;L;;;;;N;;;;; -12315;CUNEIFORM SIGN UD TIMES BAD;Lo;0;L;;;;;N;;;;; -12316;CUNEIFORM SIGN UD TIMES MI;Lo;0;L;;;;;N;;;;; -12317;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;; -12318;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U GUNU;Lo;0;L;;;;;N;;;;; -12319;CUNEIFORM SIGN UD GUNU;Lo;0;L;;;;;N;;;;; -1231A;CUNEIFORM SIGN UD SHESHIG;Lo;0;L;;;;;N;;;;; -1231B;CUNEIFORM SIGN UD SHESHIG TIMES BAD;Lo;0;L;;;;;N;;;;; -1231C;CUNEIFORM SIGN UDUG;Lo;0;L;;;;;N;;;;; -1231D;CUNEIFORM SIGN UM;Lo;0;L;;;;;N;;;;; -1231E;CUNEIFORM SIGN UM TIMES LAGAB;Lo;0;L;;;;;N;;;;; -1231F;CUNEIFORM SIGN UM TIMES ME PLUS DA;Lo;0;L;;;;;N;;;;; -12320;CUNEIFORM SIGN UM TIMES SHA3;Lo;0;L;;;;;N;;;;; -12321;CUNEIFORM SIGN UM TIMES U;Lo;0;L;;;;;N;;;;; -12322;CUNEIFORM SIGN UMBIN;Lo;0;L;;;;;N;;;;; -12323;CUNEIFORM SIGN UMUM;Lo;0;L;;;;;N;;;;; -12324;CUNEIFORM SIGN UMUM TIMES KASKAL;Lo;0;L;;;;;N;;;;; -12325;CUNEIFORM SIGN UMUM TIMES PA;Lo;0;L;;;;;N;;;;; -12326;CUNEIFORM SIGN UN;Lo;0;L;;;;;N;;;;; -12327;CUNEIFORM SIGN UN GUNU;Lo;0;L;;;;;N;;;;; -12328;CUNEIFORM SIGN UR;Lo;0;L;;;;;N;;;;; -12329;CUNEIFORM SIGN UR CROSSING UR;Lo;0;L;;;;;N;;;;; -1232A;CUNEIFORM SIGN UR SHESHIG;Lo;0;L;;;;;N;;;;; -1232B;CUNEIFORM SIGN UR2;Lo;0;L;;;;;N;;;;; -1232C;CUNEIFORM SIGN UR2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;; -1232D;CUNEIFORM SIGN UR2 TIMES A PLUS NA;Lo;0;L;;;;;N;;;;; -1232E;CUNEIFORM SIGN UR2 TIMES AL;Lo;0;L;;;;;N;;;;; -1232F;CUNEIFORM SIGN UR2 TIMES HA;Lo;0;L;;;;;N;;;;; -12330;CUNEIFORM SIGN UR2 TIMES NUN;Lo;0;L;;;;;N;;;;; -12331;CUNEIFORM SIGN UR2 TIMES U2;Lo;0;L;;;;;N;;;;; -12332;CUNEIFORM SIGN UR2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;; -12333;CUNEIFORM SIGN UR2 TIMES U2 PLUS BI;Lo;0;L;;;;;N;;;;; -12334;CUNEIFORM SIGN UR4;Lo;0;L;;;;;N;;;;; -12335;CUNEIFORM SIGN URI;Lo;0;L;;;;;N;;;;; -12336;CUNEIFORM SIGN URI3;Lo;0;L;;;;;N;;;;; -12337;CUNEIFORM SIGN URU;Lo;0;L;;;;;N;;;;; -12338;CUNEIFORM SIGN URU TIMES A;Lo;0;L;;;;;N;;;;; -12339;CUNEIFORM SIGN URU TIMES ASHGAB;Lo;0;L;;;;;N;;;;; -1233A;CUNEIFORM SIGN URU TIMES BAR;Lo;0;L;;;;;N;;;;; -1233B;CUNEIFORM SIGN URU TIMES DUN;Lo;0;L;;;;;N;;;;; -1233C;CUNEIFORM SIGN URU TIMES GA;Lo;0;L;;;;;N;;;;; -1233D;CUNEIFORM SIGN URU TIMES GAL;Lo;0;L;;;;;N;;;;; -1233E;CUNEIFORM SIGN URU TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -1233F;CUNEIFORM SIGN URU TIMES GAR;Lo;0;L;;;;;N;;;;; -12340;CUNEIFORM SIGN URU TIMES GU;Lo;0;L;;;;;N;;;;; -12341;CUNEIFORM SIGN URU TIMES HA;Lo;0;L;;;;;N;;;;; -12342;CUNEIFORM SIGN URU TIMES IGI;Lo;0;L;;;;;N;;;;; -12343;CUNEIFORM SIGN URU TIMES IM;Lo;0;L;;;;;N;;;;; -12344;CUNEIFORM SIGN URU TIMES ISH;Lo;0;L;;;;;N;;;;; -12345;CUNEIFORM SIGN URU TIMES KI;Lo;0;L;;;;;N;;;;; -12346;CUNEIFORM SIGN URU TIMES LUM;Lo;0;L;;;;;N;;;;; -12347;CUNEIFORM SIGN URU TIMES MIN;Lo;0;L;;;;;N;;;;; -12348;CUNEIFORM SIGN URU TIMES PA;Lo;0;L;;;;;N;;;;; -12349;CUNEIFORM SIGN URU TIMES SHE;Lo;0;L;;;;;N;;;;; -1234A;CUNEIFORM SIGN URU TIMES SIG4;Lo;0;L;;;;;N;;;;; -1234B;CUNEIFORM SIGN URU TIMES TU;Lo;0;L;;;;;N;;;;; -1234C;CUNEIFORM SIGN URU TIMES U PLUS GUD;Lo;0;L;;;;;N;;;;; -1234D;CUNEIFORM SIGN URU TIMES UD;Lo;0;L;;;;;N;;;;; -1234E;CUNEIFORM SIGN URU TIMES URUDA;Lo;0;L;;;;;N;;;;; -1234F;CUNEIFORM SIGN URUDA;Lo;0;L;;;;;N;;;;; -12350;CUNEIFORM SIGN URUDA TIMES U;Lo;0;L;;;;;N;;;;; -12351;CUNEIFORM SIGN USH;Lo;0;L;;;;;N;;;;; -12352;CUNEIFORM SIGN USH TIMES A;Lo;0;L;;;;;N;;;;; -12353;CUNEIFORM SIGN USH TIMES KU;Lo;0;L;;;;;N;;;;; -12354;CUNEIFORM SIGN USH TIMES KUR;Lo;0;L;;;;;N;;;;; -12355;CUNEIFORM SIGN USH TIMES TAK4;Lo;0;L;;;;;N;;;;; -12356;CUNEIFORM SIGN USHX;Lo;0;L;;;;;N;;;;; -12357;CUNEIFORM SIGN USH2;Lo;0;L;;;;;N;;;;; -12358;CUNEIFORM SIGN USHUMX;Lo;0;L;;;;;N;;;;; -12359;CUNEIFORM SIGN UTUKI;Lo;0;L;;;;;N;;;;; -1235A;CUNEIFORM SIGN UZ3;Lo;0;L;;;;;N;;;;; -1235B;CUNEIFORM SIGN UZ3 TIMES KASKAL;Lo;0;L;;;;;N;;;;; -1235C;CUNEIFORM SIGN UZU;Lo;0;L;;;;;N;;;;; -1235D;CUNEIFORM SIGN ZA;Lo;0;L;;;;;N;;;;; -1235E;CUNEIFORM SIGN ZA TENU;Lo;0;L;;;;;N;;;;; -1235F;CUNEIFORM SIGN ZA SQUARED TIMES KUR;Lo;0;L;;;;;N;;;;; -12360;CUNEIFORM SIGN ZAG;Lo;0;L;;;;;N;;;;; -12361;CUNEIFORM SIGN ZAMX;Lo;0;L;;;;;N;;;;; -12362;CUNEIFORM SIGN ZE2;Lo;0;L;;;;;N;;;;; -12363;CUNEIFORM SIGN ZI;Lo;0;L;;;;;N;;;;; -12364;CUNEIFORM SIGN ZI OVER ZI;Lo;0;L;;;;;N;;;;; -12365;CUNEIFORM SIGN ZI3;Lo;0;L;;;;;N;;;;; -12366;CUNEIFORM SIGN ZIB;Lo;0;L;;;;;N;;;;; -12367;CUNEIFORM SIGN ZIB KABA TENU;Lo;0;L;;;;;N;;;;; -12368;CUNEIFORM SIGN ZIG;Lo;0;L;;;;;N;;;;; -12369;CUNEIFORM SIGN ZIZ2;Lo;0;L;;;;;N;;;;; -1236A;CUNEIFORM SIGN ZU;Lo;0;L;;;;;N;;;;; -1236B;CUNEIFORM SIGN ZU5;Lo;0;L;;;;;N;;;;; -1236C;CUNEIFORM SIGN ZU5 TIMES A;Lo;0;L;;;;;N;;;;; -1236D;CUNEIFORM SIGN ZUBUR;Lo;0;L;;;;;N;;;;; -1236E;CUNEIFORM SIGN ZUM;Lo;0;L;;;;;N;;;;; -12400;CUNEIFORM NUMERIC SIGN TWO ASH;Nl;0;L;;;;2;N;;;;; -12401;CUNEIFORM NUMERIC SIGN THREE ASH;Nl;0;L;;;;3;N;;;;; -12402;CUNEIFORM NUMERIC SIGN FOUR ASH;Nl;0;L;;;;4;N;;;;; -12403;CUNEIFORM NUMERIC SIGN FIVE ASH;Nl;0;L;;;;5;N;;;;; -12404;CUNEIFORM NUMERIC SIGN SIX ASH;Nl;0;L;;;;6;N;;;;; -12405;CUNEIFORM NUMERIC SIGN SEVEN ASH;Nl;0;L;;;;7;N;;;;; -12406;CUNEIFORM NUMERIC SIGN EIGHT ASH;Nl;0;L;;;;8;N;;;;; -12407;CUNEIFORM NUMERIC SIGN NINE ASH;Nl;0;L;;;;9;N;;;;; -12408;CUNEIFORM NUMERIC SIGN THREE DISH;Nl;0;L;;;;3;N;;;;; -12409;CUNEIFORM NUMERIC SIGN FOUR DISH;Nl;0;L;;;;4;N;;;;; -1240A;CUNEIFORM NUMERIC SIGN FIVE DISH;Nl;0;L;;;;5;N;;;;; -1240B;CUNEIFORM NUMERIC SIGN SIX DISH;Nl;0;L;;;;6;N;;;;; -1240C;CUNEIFORM NUMERIC SIGN SEVEN DISH;Nl;0;L;;;;7;N;;;;; -1240D;CUNEIFORM NUMERIC SIGN EIGHT DISH;Nl;0;L;;;;8;N;;;;; -1240E;CUNEIFORM NUMERIC SIGN NINE DISH;Nl;0;L;;;;9;N;;;;; -1240F;CUNEIFORM NUMERIC SIGN FOUR U;Nl;0;L;;;;4;N;;;;; -12410;CUNEIFORM NUMERIC SIGN FIVE U;Nl;0;L;;;;5;N;;;;; -12411;CUNEIFORM NUMERIC SIGN SIX U;Nl;0;L;;;;6;N;;;;; -12412;CUNEIFORM NUMERIC SIGN SEVEN U;Nl;0;L;;;;7;N;;;;; -12413;CUNEIFORM NUMERIC SIGN EIGHT U;Nl;0;L;;;;8;N;;;;; -12414;CUNEIFORM NUMERIC SIGN NINE U;Nl;0;L;;;;9;N;;;;; -12415;CUNEIFORM NUMERIC SIGN ONE GESH2;Nl;0;L;;;;1;N;;;;; -12416;CUNEIFORM NUMERIC SIGN TWO GESH2;Nl;0;L;;;;2;N;;;;; -12417;CUNEIFORM NUMERIC SIGN THREE GESH2;Nl;0;L;;;;3;N;;;;; -12418;CUNEIFORM NUMERIC SIGN FOUR GESH2;Nl;0;L;;;;4;N;;;;; -12419;CUNEIFORM NUMERIC SIGN FIVE GESH2;Nl;0;L;;;;5;N;;;;; -1241A;CUNEIFORM NUMERIC SIGN SIX GESH2;Nl;0;L;;;;6;N;;;;; -1241B;CUNEIFORM NUMERIC SIGN SEVEN GESH2;Nl;0;L;;;;7;N;;;;; -1241C;CUNEIFORM NUMERIC SIGN EIGHT GESH2;Nl;0;L;;;;8;N;;;;; -1241D;CUNEIFORM NUMERIC SIGN NINE GESH2;Nl;0;L;;;;9;N;;;;; -1241E;CUNEIFORM NUMERIC SIGN ONE GESHU;Nl;0;L;;;;1;N;;;;; -1241F;CUNEIFORM NUMERIC SIGN TWO GESHU;Nl;0;L;;;;2;N;;;;; -12420;CUNEIFORM NUMERIC SIGN THREE GESHU;Nl;0;L;;;;3;N;;;;; -12421;CUNEIFORM NUMERIC SIGN FOUR GESHU;Nl;0;L;;;;4;N;;;;; -12422;CUNEIFORM NUMERIC SIGN FIVE GESHU;Nl;0;L;;;;5;N;;;;; -12423;CUNEIFORM NUMERIC SIGN TWO SHAR2;Nl;0;L;;;;2;N;;;;; -12424;CUNEIFORM NUMERIC SIGN THREE SHAR2;Nl;0;L;;;;3;N;;;;; -12425;CUNEIFORM NUMERIC SIGN THREE SHAR2 VARIANT FORM;Nl;0;L;;;;3;N;;;;; -12426;CUNEIFORM NUMERIC SIGN FOUR SHAR2;Nl;0;L;;;;4;N;;;;; -12427;CUNEIFORM NUMERIC SIGN FIVE SHAR2;Nl;0;L;;;;5;N;;;;; -12428;CUNEIFORM NUMERIC SIGN SIX SHAR2;Nl;0;L;;;;6;N;;;;; -12429;CUNEIFORM NUMERIC SIGN SEVEN SHAR2;Nl;0;L;;;;7;N;;;;; -1242A;CUNEIFORM NUMERIC SIGN EIGHT SHAR2;Nl;0;L;;;;8;N;;;;; -1242B;CUNEIFORM NUMERIC SIGN NINE SHAR2;Nl;0;L;;;;9;N;;;;; -1242C;CUNEIFORM NUMERIC SIGN ONE SHARU;Nl;0;L;;;;1;N;;;;; -1242D;CUNEIFORM NUMERIC SIGN TWO SHARU;Nl;0;L;;;;2;N;;;;; -1242E;CUNEIFORM NUMERIC SIGN THREE SHARU;Nl;0;L;;;;3;N;;;;; -1242F;CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM;Nl;0;L;;;;3;N;;;;; -12430;CUNEIFORM NUMERIC SIGN FOUR SHARU;Nl;0;L;;;;4;N;;;;; -12431;CUNEIFORM NUMERIC SIGN FIVE SHARU;Nl;0;L;;;;5;N;;;;; -12432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;;N;;;;; -12433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;;N;;;;; -12434;CUNEIFORM NUMERIC SIGN ONE BURU;Nl;0;L;;;;1;N;;;;; -12435;CUNEIFORM NUMERIC SIGN TWO BURU;Nl;0;L;;;;2;N;;;;; -12436;CUNEIFORM NUMERIC SIGN THREE BURU;Nl;0;L;;;;3;N;;;;; -12437;CUNEIFORM NUMERIC SIGN THREE BURU VARIANT FORM;Nl;0;L;;;;3;N;;;;; -12438;CUNEIFORM NUMERIC SIGN FOUR BURU;Nl;0;L;;;;4;N;;;;; -12439;CUNEIFORM NUMERIC SIGN FIVE BURU;Nl;0;L;;;;5;N;;;;; -1243A;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16;Nl;0;L;;;;3;N;;;;; -1243B;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH21;Nl;0;L;;;;3;N;;;;; -1243C;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU;Nl;0;L;;;;4;N;;;;; -1243D;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4;Nl;0;L;;;;4;N;;;;; -1243E;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU A;Nl;0;L;;;;4;N;;;;; -1243F;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU B;Nl;0;L;;;;4;N;;;;; -12440;CUNEIFORM NUMERIC SIGN SIX VARIANT FORM ASH9;Nl;0;L;;;;6;N;;;;; -12441;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN3;Nl;0;L;;;;7;N;;;;; -12442;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN A;Nl;0;L;;;;7;N;;;;; -12443;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN B;Nl;0;L;;;;7;N;;;;; -12444;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU;Nl;0;L;;;;8;N;;;;; -12445;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3;Nl;0;L;;;;8;N;;;;; -12446;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU;Nl;0;L;;;;9;N;;;;; -12447;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU3;Nl;0;L;;;;9;N;;;;; -12448;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4;Nl;0;L;;;;9;N;;;;; -12449;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU A;Nl;0;L;;;;9;N;;;;; -1244A;CUNEIFORM NUMERIC SIGN TWO ASH TENU;Nl;0;L;;;;2;N;;;;; -1244B;CUNEIFORM NUMERIC SIGN THREE ASH TENU;Nl;0;L;;;;3;N;;;;; -1244C;CUNEIFORM NUMERIC SIGN FOUR ASH TENU;Nl;0;L;;;;4;N;;;;; -1244D;CUNEIFORM NUMERIC SIGN FIVE ASH TENU;Nl;0;L;;;;5;N;;;;; -1244E;CUNEIFORM NUMERIC SIGN SIX ASH TENU;Nl;0;L;;;;6;N;;;;; -1244F;CUNEIFORM NUMERIC SIGN ONE BAN2;Nl;0;L;;;;1;N;;;;; -12450;CUNEIFORM NUMERIC SIGN TWO BAN2;Nl;0;L;;;;2;N;;;;; -12451;CUNEIFORM NUMERIC SIGN THREE BAN2;Nl;0;L;;;;3;N;;;;; -12452;CUNEIFORM NUMERIC SIGN FOUR BAN2;Nl;0;L;;;;4;N;;;;; -12453;CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM;Nl;0;L;;;;4;N;;;;; -12454;CUNEIFORM NUMERIC SIGN FIVE BAN2;Nl;0;L;;;;5;N;;;;; -12455;CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM;Nl;0;L;;;;5;N;;;;; -12456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;;N;;;;; -12457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;;N;;;;; -12458;CUNEIFORM NUMERIC SIGN ONE ESHE3;Nl;0;L;;;;1;N;;;;; -12459;CUNEIFORM NUMERIC SIGN TWO ESHE3;Nl;0;L;;;;2;N;;;;; -1245A;CUNEIFORM NUMERIC SIGN ONE THIRD DISH;Nl;0;L;;;;1/3;N;;;;; -1245B;CUNEIFORM NUMERIC SIGN TWO THIRDS DISH;Nl;0;L;;;;2/3;N;;;;; -1245C;CUNEIFORM NUMERIC SIGN FIVE SIXTHS DISH;Nl;0;L;;;;5/6;N;;;;; -1245D;CUNEIFORM NUMERIC SIGN ONE THIRD VARIANT FORM A;Nl;0;L;;;;1/3;N;;;;; -1245E;CUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT FORM A;Nl;0;L;;;;2/3;N;;;;; -1245F;CUNEIFORM NUMERIC SIGN ONE EIGHTH ASH;Nl;0;L;;;;1/8;N;;;;; -12460;CUNEIFORM NUMERIC SIGN ONE QUARTER ASH;Nl;0;L;;;;1/4;N;;;;; -12461;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTH;Nl;0;L;;;;1/6;N;;;;; -12462;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER;Nl;0;L;;;;1/4;N;;;;; -12470;CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER;Po;0;L;;;;;N;;;;; -12471;CUNEIFORM PUNCTUATION SIGN VERTICAL COLON;Po;0;L;;;;;N;;;;; -12472;CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON;Po;0;L;;;;;N;;;;; -12473;CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON;Po;0;L;;;;;N;;;;; -1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;; -1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;; -1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;; -1D003;BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON;So;0;L;;;;;N;;;;; -1D004;BYZANTINE MUSICAL SYMBOL OXEIA DIPLI;So;0;L;;;;;N;;;;; -1D005;BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON;So;0;L;;;;;N;;;;; -1D006;BYZANTINE MUSICAL SYMBOL VAREIA DIPLI;So;0;L;;;;;N;;;;; -1D007;BYZANTINE MUSICAL SYMBOL KATHISTI;So;0;L;;;;;N;;;;; -1D008;BYZANTINE MUSICAL SYMBOL SYRMATIKI;So;0;L;;;;;N;;;;; -1D009;BYZANTINE MUSICAL SYMBOL PARAKLITIKI;So;0;L;;;;;N;;;;; -1D00A;BYZANTINE MUSICAL SYMBOL YPOKRISIS;So;0;L;;;;;N;;;;; -1D00B;BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI;So;0;L;;;;;N;;;;; -1D00C;BYZANTINE MUSICAL SYMBOL KREMASTI;So;0;L;;;;;N;;;;; -1D00D;BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON;So;0;L;;;;;N;;;;; -1D00E;BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON;So;0;L;;;;;N;;;;; -1D00F;BYZANTINE MUSICAL SYMBOL TELEIA;So;0;L;;;;;N;;;;; -1D010;BYZANTINE MUSICAL SYMBOL KENTIMATA;So;0;L;;;;;N;;;;; -1D011;BYZANTINE MUSICAL SYMBOL APOSTROFOS;So;0;L;;;;;N;;;;; -1D012;BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI;So;0;L;;;;;N;;;;; -1D013;BYZANTINE MUSICAL SYMBOL SYNEVMA;So;0;L;;;;;N;;;;; -1D014;BYZANTINE MUSICAL SYMBOL THITA;So;0;L;;;;;N;;;;; -1D015;BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION;So;0;L;;;;;N;;;;; -1D016;BYZANTINE MUSICAL SYMBOL GORGON ARCHAION;So;0;L;;;;;N;;;;; -1D017;BYZANTINE MUSICAL SYMBOL PSILON;So;0;L;;;;;N;;;;; -1D018;BYZANTINE MUSICAL SYMBOL CHAMILON;So;0;L;;;;;N;;;;; -1D019;BYZANTINE MUSICAL SYMBOL VATHY;So;0;L;;;;;N;;;;; -1D01A;BYZANTINE MUSICAL SYMBOL ISON ARCHAION;So;0;L;;;;;N;;;;; -1D01B;BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION;So;0;L;;;;;N;;;;; -1D01C;BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION;So;0;L;;;;;N;;;;; -1D01D;BYZANTINE MUSICAL SYMBOL SAXIMATA;So;0;L;;;;;N;;;;; -1D01E;BYZANTINE MUSICAL SYMBOL PARICHON;So;0;L;;;;;N;;;;; -1D01F;BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA;So;0;L;;;;;N;;;;; -1D020;BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION;So;0;L;;;;;N;;;;; -1D021;BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION;So;0;L;;;;;N;;;;; -1D022;BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION;So;0;L;;;;;N;;;;; -1D023;BYZANTINE MUSICAL SYMBOL APOTHEMA;So;0;L;;;;;N;;;;; -1D024;BYZANTINE MUSICAL SYMBOL KLASMA;So;0;L;;;;;N;;;;; -1D025;BYZANTINE MUSICAL SYMBOL REVMA;So;0;L;;;;;N;;;;; -1D026;BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION;So;0;L;;;;;N;;;;; -1D027;BYZANTINE MUSICAL SYMBOL TINAGMA;So;0;L;;;;;N;;;;; -1D028;BYZANTINE MUSICAL SYMBOL ANATRICHISMA;So;0;L;;;;;N;;;;; -1D029;BYZANTINE MUSICAL SYMBOL SEISMA;So;0;L;;;;;N;;;;; -1D02A;BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION;So;0;L;;;;;N;;;;; -1D02B;BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU;So;0;L;;;;;N;;;;; -1D02C;BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION;So;0;L;;;;;N;;;;; -1D02D;BYZANTINE MUSICAL SYMBOL THEMA;So;0;L;;;;;N;;;;; -1D02E;BYZANTINE MUSICAL SYMBOL LEMOI;So;0;L;;;;;N;;;;; -1D02F;BYZANTINE MUSICAL SYMBOL DYO;So;0;L;;;;;N;;;;; -1D030;BYZANTINE MUSICAL SYMBOL TRIA;So;0;L;;;;;N;;;;; -1D031;BYZANTINE MUSICAL SYMBOL TESSERA;So;0;L;;;;;N;;;;; -1D032;BYZANTINE MUSICAL SYMBOL KRATIMATA;So;0;L;;;;;N;;;;; -1D033;BYZANTINE MUSICAL SYMBOL APESO EXO NEO;So;0;L;;;;;N;;;;; -1D034;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION;So;0;L;;;;;N;;;;; -1D035;BYZANTINE MUSICAL SYMBOL IMIFTHORA;So;0;L;;;;;N;;;;; -1D036;BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION;So;0;L;;;;;N;;;;; -1D037;BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON;So;0;L;;;;;N;;;;; -1D038;BYZANTINE MUSICAL SYMBOL PELASTON;So;0;L;;;;;N;;;;; -1D039;BYZANTINE MUSICAL SYMBOL PSIFISTON;So;0;L;;;;;N;;;;; -1D03A;BYZANTINE MUSICAL SYMBOL KONTEVMA;So;0;L;;;;;N;;;;; -1D03B;BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION;So;0;L;;;;;N;;;;; -1D03C;BYZANTINE MUSICAL SYMBOL RAPISMA;So;0;L;;;;;N;;;;; -1D03D;BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION;So;0;L;;;;;N;;;;; -1D03E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION;So;0;L;;;;;N;;;;; -1D03F;BYZANTINE MUSICAL SYMBOL ICHADIN;So;0;L;;;;;N;;;;; -1D040;BYZANTINE MUSICAL SYMBOL NANA;So;0;L;;;;;N;;;;; -1D041;BYZANTINE MUSICAL SYMBOL PETASMA;So;0;L;;;;;N;;;;; -1D042;BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO;So;0;L;;;;;N;;;;; -1D043;BYZANTINE MUSICAL SYMBOL TROMIKON ALLO;So;0;L;;;;;N;;;;; -1D044;BYZANTINE MUSICAL SYMBOL STRAGGISMATA;So;0;L;;;;;N;;;;; -1D045;BYZANTINE MUSICAL SYMBOL GRONTHISMATA;So;0;L;;;;;N;;;;; -1D046;BYZANTINE MUSICAL SYMBOL ISON NEO;So;0;L;;;;;N;;;;; -1D047;BYZANTINE MUSICAL SYMBOL OLIGON NEO;So;0;L;;;;;N;;;;; -1D048;BYZANTINE MUSICAL SYMBOL OXEIA NEO;So;0;L;;;;;N;;;;; -1D049;BYZANTINE MUSICAL SYMBOL PETASTI;So;0;L;;;;;N;;;;; -1D04A;BYZANTINE MUSICAL SYMBOL KOUFISMA;So;0;L;;;;;N;;;;; -1D04B;BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA;So;0;L;;;;;N;;;;; -1D04C;BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA;So;0;L;;;;;N;;;;; -1D04D;BYZANTINE MUSICAL SYMBOL PELASTON NEO;So;0;L;;;;;N;;;;; -1D04E;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO;So;0;L;;;;;N;;;;; -1D04F;BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO;So;0;L;;;;;N;;;;; -1D050;BYZANTINE MUSICAL SYMBOL YPSILI;So;0;L;;;;;N;;;;; -1D051;BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO;So;0;L;;;;;N;;;;; -1D052;BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO;So;0;L;;;;;N;;;;; -1D053;BYZANTINE MUSICAL SYMBOL YPORROI;So;0;L;;;;;N;;;;; -1D054;BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON;So;0;L;;;;;N;;;;; -1D055;BYZANTINE MUSICAL SYMBOL ELAFRON;So;0;L;;;;;N;;;;; -1D056;BYZANTINE MUSICAL SYMBOL CHAMILI;So;0;L;;;;;N;;;;; -1D057;BYZANTINE MUSICAL SYMBOL MIKRON ISON;So;0;L;;;;;N;;;;; -1D058;BYZANTINE MUSICAL SYMBOL VAREIA NEO;So;0;L;;;;;N;;;;; -1D059;BYZANTINE MUSICAL SYMBOL PIASMA NEO;So;0;L;;;;;N;;;;; -1D05A;BYZANTINE MUSICAL SYMBOL PSIFISTON NEO;So;0;L;;;;;N;;;;; -1D05B;BYZANTINE MUSICAL SYMBOL OMALON;So;0;L;;;;;N;;;;; -1D05C;BYZANTINE MUSICAL SYMBOL ANTIKENOMA;So;0;L;;;;;N;;;;; -1D05D;BYZANTINE MUSICAL SYMBOL LYGISMA;So;0;L;;;;;N;;;;; -1D05E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO;So;0;L;;;;;N;;;;; -1D05F;BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO;So;0;L;;;;;N;;;;; -1D060;BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA;So;0;L;;;;;N;;;;; -1D061;BYZANTINE MUSICAL SYMBOL KYLISMA;So;0;L;;;;;N;;;;; -1D062;BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA;So;0;L;;;;;N;;;;; -1D063;BYZANTINE MUSICAL SYMBOL TROMIKON NEO;So;0;L;;;;;N;;;;; -1D064;BYZANTINE MUSICAL SYMBOL EKSTREPTON;So;0;L;;;;;N;;;;; -1D065;BYZANTINE MUSICAL SYMBOL SYNAGMA NEO;So;0;L;;;;;N;;;;; -1D066;BYZANTINE MUSICAL SYMBOL SYRMA;So;0;L;;;;;N;;;;; -1D067;BYZANTINE MUSICAL SYMBOL CHOREVMA NEO;So;0;L;;;;;N;;;;; -1D068;BYZANTINE MUSICAL SYMBOL EPEGERMA;So;0;L;;;;;N;;;;; -1D069;BYZANTINE MUSICAL SYMBOL SEISMA NEO;So;0;L;;;;;N;;;;; -1D06A;BYZANTINE MUSICAL SYMBOL XIRON KLASMA;So;0;L;;;;;N;;;;; -1D06B;BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON;So;0;L;;;;;N;;;;; -1D06C;BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA;So;0;L;;;;;N;;;;; -1D06D;BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA;So;0;L;;;;;N;;;;; -1D06E;BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA;So;0;L;;;;;N;;;;; -1D06F;BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA;So;0;L;;;;;N;;;;; -1D070;BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA;So;0;L;;;;;N;;;;; -1D071;BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA;So;0;L;;;;;N;;;;; -1D072;BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON;So;0;L;;;;;N;;;;; -1D073;BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON;So;0;L;;;;;N;;;;; -1D074;BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON;So;0;L;;;;;N;;;;; -1D075;BYZANTINE MUSICAL SYMBOL OYRANISMA NEO;So;0;L;;;;;N;;;;; -1D076;BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO;So;0;L;;;;;N;;;;; -1D077;BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO;So;0;L;;;;;N;;;;; -1D078;BYZANTINE MUSICAL SYMBOL THEMA APLOUN;So;0;L;;;;;N;;;;; -1D079;BYZANTINE MUSICAL SYMBOL THES KAI APOTHES;So;0;L;;;;;N;;;;; -1D07A;BYZANTINE MUSICAL SYMBOL KATAVASMA;So;0;L;;;;;N;;;;; -1D07B;BYZANTINE MUSICAL SYMBOL ENDOFONON;So;0;L;;;;;N;;;;; -1D07C;BYZANTINE MUSICAL SYMBOL YFEN KATO;So;0;L;;;;;N;;;;; -1D07D;BYZANTINE MUSICAL SYMBOL YFEN ANO;So;0;L;;;;;N;;;;; -1D07E;BYZANTINE MUSICAL SYMBOL STAVROS;So;0;L;;;;;N;;;;; -1D07F;BYZANTINE MUSICAL SYMBOL KLASMA ANO;So;0;L;;;;;N;;;;; -1D080;BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION;So;0;L;;;;;N;;;;; -1D081;BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION;So;0;L;;;;;N;;;;; -1D082;BYZANTINE MUSICAL SYMBOL KRATIMA ALLO;So;0;L;;;;;N;;;;; -1D083;BYZANTINE MUSICAL SYMBOL KRATIMA NEO;So;0;L;;;;;N;;;;; -1D084;BYZANTINE MUSICAL SYMBOL APODERMA NEO;So;0;L;;;;;N;;;;; -1D085;BYZANTINE MUSICAL SYMBOL APLI;So;0;L;;;;;N;;;;; -1D086;BYZANTINE MUSICAL SYMBOL DIPLI;So;0;L;;;;;N;;;;; -1D087;BYZANTINE MUSICAL SYMBOL TRIPLI;So;0;L;;;;;N;;;;; -1D088;BYZANTINE MUSICAL SYMBOL TETRAPLI;So;0;L;;;;;N;;;;; -1D089;BYZANTINE MUSICAL SYMBOL KORONIS;So;0;L;;;;;N;;;;; -1D08A;BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU;So;0;L;;;;;N;;;;; -1D08B;BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON;So;0;L;;;;;N;;;;; -1D08C;BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON;So;0;L;;;;;N;;;;; -1D08D;BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON;So;0;L;;;;;N;;;;; -1D08E;BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU;So;0;L;;;;;N;;;;; -1D08F;BYZANTINE MUSICAL SYMBOL GORGON NEO ANO;So;0;L;;;;;N;;;;; -1D090;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA;So;0;L;;;;;N;;;;; -1D091;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;; -1D092;BYZANTINE MUSICAL SYMBOL DIGORGON;So;0;L;;;;;N;;;;; -1D093;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO;So;0;L;;;;;N;;;;; -1D094;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO;So;0;L;;;;;N;;;;; -1D095;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;; -1D096;BYZANTINE MUSICAL SYMBOL TRIGORGON;So;0;L;;;;;N;;;;; -1D097;BYZANTINE MUSICAL SYMBOL ARGON;So;0;L;;;;;N;;;;; -1D098;BYZANTINE MUSICAL SYMBOL IMIDIARGON;So;0;L;;;;;N;;;;; -1D099;BYZANTINE MUSICAL SYMBOL DIARGON;So;0;L;;;;;N;;;;; -1D09A;BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI;So;0;L;;;;;N;;;;; -1D09B;BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI;So;0;L;;;;;N;;;;; -1D09C;BYZANTINE MUSICAL SYMBOL AGOGI ARGI;So;0;L;;;;;N;;;;; -1D09D;BYZANTINE MUSICAL SYMBOL AGOGI METRIA;So;0;L;;;;;N;;;;; -1D09E;BYZANTINE MUSICAL SYMBOL AGOGI MESI;So;0;L;;;;;N;;;;; -1D09F;BYZANTINE MUSICAL SYMBOL AGOGI GORGI;So;0;L;;;;;N;;;;; -1D0A0;BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI;So;0;L;;;;;N;;;;; -1D0A1;BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI;So;0;L;;;;;N;;;;; -1D0A2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS;So;0;L;;;;;N;;;;; -1D0A3;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS;So;0;L;;;;;N;;;;; -1D0A4;BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS;So;0;L;;;;;N;;;;; -1D0A5;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS;So;0;L;;;;;N;;;;; -1D0A6;BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS;So;0;L;;;;;N;;;;; -1D0A7;BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS;So;0;L;;;;;N;;;;; -1D0A8;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS;So;0;L;;;;;N;;;;; -1D0A9;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS;So;0;L;;;;;N;;;;; -1D0AA;BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS;So;0;L;;;;;N;;;;; -1D0AB;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS;So;0;L;;;;;N;;;;; -1D0AC;BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS;So;0;L;;;;;N;;;;; -1D0AD;BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS;So;0;L;;;;;N;;;;; -1D0AE;BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS;So;0;L;;;;;N;;;;; -1D0AF;BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS;So;0;L;;;;;N;;;;; -1D0B0;BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS;So;0;L;;;;;N;;;;; -1D0B1;BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS;So;0;L;;;;;N;;;;; -1D0B2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS;So;0;L;;;;;N;;;;; -1D0B3;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS;So;0;L;;;;;N;;;;; -1D0B4;BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN;So;0;L;;;;;N;;;;; -1D0B5;BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN;So;0;L;;;;;N;;;;; -1D0B6;BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU;So;0;L;;;;;N;;;;; -1D0B7;BYZANTINE MUSICAL SYMBOL IMIFONON;So;0;L;;;;;N;;;;; -1D0B8;BYZANTINE MUSICAL SYMBOL IMIFTHORON;So;0;L;;;;;N;;;;; -1D0B9;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU;So;0;L;;;;;N;;;;; -1D0BA;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA;So;0;L;;;;;N;;;;; -1D0BB;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA;So;0;L;;;;;N;;;;; -1D0BC;BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS;So;0;L;;;;;N;;;;; -1D0BD;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI;So;0;L;;;;;N;;;;; -1D0BE;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI;So;0;L;;;;;N;;;;; -1D0BF;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE;So;0;L;;;;;N;;;;; -1D0C0;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO;So;0;L;;;;;N;;;;; -1D0C1;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO;So;0;L;;;;;N;;;;; -1D0C2;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO;So;0;L;;;;;N;;;;; -1D0C3;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS;So;0;L;;;;;N;;;;; -1D0C4;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS;So;0;L;;;;;N;;;;; -1D0C5;BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS;So;0;L;;;;;N;;;;; -1D0C6;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI;So;0;L;;;;;N;;;;; -1D0C7;BYZANTINE MUSICAL SYMBOL FTHORA NENANO;So;0;L;;;;;N;;;;; -1D0C8;BYZANTINE MUSICAL SYMBOL CHROA ZYGOS;So;0;L;;;;;N;;;;; -1D0C9;BYZANTINE MUSICAL SYMBOL CHROA KLITON;So;0;L;;;;;N;;;;; -1D0CA;BYZANTINE MUSICAL SYMBOL CHROA SPATHI;So;0;L;;;;;N;;;;; -1D0CB;BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION;So;0;L;;;;;N;;;;; -1D0CC;BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA;So;0;L;;;;;N;;;;; -1D0CD;BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION;So;0;L;;;;;N;;;;; -1D0CE;BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION;So;0;L;;;;;N;;;;; -1D0CF;BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION;So;0;L;;;;;N;;;;; -1D0D0;BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;; -1D0D1;BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;; -1D0D2;BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;; -1D0D3;BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;; -1D0D4;BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;; -1D0D5;BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;; -1D0D6;BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;; -1D0D7;BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;; -1D0D8;BYZANTINE MUSICAL SYMBOL GENIKI DIESIS;So;0;L;;;;;N;;;;; -1D0D9;BYZANTINE MUSICAL SYMBOL GENIKI YFESIS;So;0;L;;;;;N;;;;; -1D0DA;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI;So;0;L;;;;;N;;;;; -1D0DB;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI;So;0;L;;;;;N;;;;; -1D0DC;BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI;So;0;L;;;;;N;;;;; -1D0DD;BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS;So;0;L;;;;;N;;;;; -1D0DE;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS;So;0;L;;;;;N;;;;; -1D0DF;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU;So;0;L;;;;;N;;;;; -1D0E0;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU;So;0;L;;;;;N;;;;; -1D0E1;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU;So;0;L;;;;;N;;;;; -1D0E2;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS;So;0;L;;;;;N;;;;; -1D0E3;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU;So;0;L;;;;;N;;;;; -1D0E4;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU;So;0;L;;;;;N;;;;; -1D0E5;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU;So;0;L;;;;;N;;;;; -1D0E6;BYZANTINE MUSICAL SYMBOL DIGRAMMA GG;So;0;L;;;;;N;;;;; -1D0E7;BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU;So;0;L;;;;;N;;;;; -1D0E8;BYZANTINE MUSICAL SYMBOL STIGMA;So;0;L;;;;;N;;;;; -1D0E9;BYZANTINE MUSICAL SYMBOL ARKTIKO PA;So;0;L;;;;;N;;;;; -1D0EA;BYZANTINE MUSICAL SYMBOL ARKTIKO VOU;So;0;L;;;;;N;;;;; -1D0EB;BYZANTINE MUSICAL SYMBOL ARKTIKO GA;So;0;L;;;;;N;;;;; -1D0EC;BYZANTINE MUSICAL SYMBOL ARKTIKO DI;So;0;L;;;;;N;;;;; -1D0ED;BYZANTINE MUSICAL SYMBOL ARKTIKO KE;So;0;L;;;;;N;;;;; -1D0EE;BYZANTINE MUSICAL SYMBOL ARKTIKO ZO;So;0;L;;;;;N;;;;; -1D0EF;BYZANTINE MUSICAL SYMBOL ARKTIKO NI;So;0;L;;;;;N;;;;; -1D0F0;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO;So;0;L;;;;;N;;;;; -1D0F1;BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO;So;0;L;;;;;N;;;;; -1D0F2;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO;So;0;L;;;;;N;;;;; -1D0F3;BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO;So;0;L;;;;;N;;;;; -1D0F4;BYZANTINE MUSICAL SYMBOL KLASMA KATO;So;0;L;;;;;N;;;;; -1D0F5;BYZANTINE MUSICAL SYMBOL GORGON NEO KATO;So;0;L;;;;;N;;;;; -1D100;MUSICAL SYMBOL SINGLE BARLINE;So;0;L;;;;;N;;;;; -1D101;MUSICAL SYMBOL DOUBLE BARLINE;So;0;L;;;;;N;;;;; -1D102;MUSICAL SYMBOL FINAL BARLINE;So;0;L;;;;;N;;;;; -1D103;MUSICAL SYMBOL REVERSE FINAL BARLINE;So;0;L;;;;;N;;;;; -1D104;MUSICAL SYMBOL DASHED BARLINE;So;0;L;;;;;N;;;;; -1D105;MUSICAL SYMBOL SHORT BARLINE;So;0;L;;;;;N;;;;; -1D106;MUSICAL SYMBOL LEFT REPEAT SIGN;So;0;L;;;;;N;;;;; -1D107;MUSICAL SYMBOL RIGHT REPEAT SIGN;So;0;L;;;;;N;;;;; -1D108;MUSICAL SYMBOL REPEAT DOTS;So;0;L;;;;;N;;;;; -1D109;MUSICAL SYMBOL DAL SEGNO;So;0;L;;;;;N;;;;; -1D10A;MUSICAL SYMBOL DA CAPO;So;0;L;;;;;N;;;;; -1D10B;MUSICAL SYMBOL SEGNO;So;0;L;;;;;N;;;;; -1D10C;MUSICAL SYMBOL CODA;So;0;L;;;;;N;;;;; -1D10D;MUSICAL SYMBOL REPEATED FIGURE-1;So;0;L;;;;;N;;;;; -1D10E;MUSICAL SYMBOL REPEATED FIGURE-2;So;0;L;;;;;N;;;;; -1D10F;MUSICAL SYMBOL REPEATED FIGURE-3;So;0;L;;;;;N;;;;; -1D110;MUSICAL SYMBOL FERMATA;So;0;L;;;;;N;;;;; -1D111;MUSICAL SYMBOL FERMATA BELOW;So;0;L;;;;;N;;;;; -1D112;MUSICAL SYMBOL BREATH MARK;So;0;L;;;;;N;;;;; -1D113;MUSICAL SYMBOL CAESURA;So;0;L;;;;;N;;;;; -1D114;MUSICAL SYMBOL BRACE;So;0;L;;;;;N;;;;; -1D115;MUSICAL SYMBOL BRACKET;So;0;L;;;;;N;;;;; -1D116;MUSICAL SYMBOL ONE-LINE STAFF;So;0;L;;;;;N;;;;; -1D117;MUSICAL SYMBOL TWO-LINE STAFF;So;0;L;;;;;N;;;;; -1D118;MUSICAL SYMBOL THREE-LINE STAFF;So;0;L;;;;;N;;;;; -1D119;MUSICAL SYMBOL FOUR-LINE STAFF;So;0;L;;;;;N;;;;; -1D11A;MUSICAL SYMBOL FIVE-LINE STAFF;So;0;L;;;;;N;;;;; -1D11B;MUSICAL SYMBOL SIX-LINE STAFF;So;0;L;;;;;N;;;;; -1D11C;MUSICAL SYMBOL SIX-STRING FRETBOARD;So;0;L;;;;;N;;;;; -1D11D;MUSICAL SYMBOL FOUR-STRING FRETBOARD;So;0;L;;;;;N;;;;; -1D11E;MUSICAL SYMBOL G CLEF;So;0;L;;;;;N;;;;; -1D11F;MUSICAL SYMBOL G CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;; -1D120;MUSICAL SYMBOL G CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;; -1D121;MUSICAL SYMBOL C CLEF;So;0;L;;;;;N;;;;; -1D122;MUSICAL SYMBOL F CLEF;So;0;L;;;;;N;;;;; -1D123;MUSICAL SYMBOL F CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;; -1D124;MUSICAL SYMBOL F CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;; -1D125;MUSICAL SYMBOL DRUM CLEF-1;So;0;L;;;;;N;;;;; -1D126;MUSICAL SYMBOL DRUM CLEF-2;So;0;L;;;;;N;;;;; -1D129;MUSICAL SYMBOL MULTIPLE MEASURE REST;So;0;L;;;;;N;;;;; -1D12A;MUSICAL SYMBOL DOUBLE SHARP;So;0;L;;;;;N;;;;; -1D12B;MUSICAL SYMBOL DOUBLE FLAT;So;0;L;;;;;N;;;;; -1D12C;MUSICAL SYMBOL FLAT UP;So;0;L;;;;;N;;;;; -1D12D;MUSICAL SYMBOL FLAT DOWN;So;0;L;;;;;N;;;;; -1D12E;MUSICAL SYMBOL NATURAL UP;So;0;L;;;;;N;;;;; -1D12F;MUSICAL SYMBOL NATURAL DOWN;So;0;L;;;;;N;;;;; -1D130;MUSICAL SYMBOL SHARP UP;So;0;L;;;;;N;;;;; -1D131;MUSICAL SYMBOL SHARP DOWN;So;0;L;;;;;N;;;;; -1D132;MUSICAL SYMBOL QUARTER TONE SHARP;So;0;L;;;;;N;;;;; -1D133;MUSICAL SYMBOL QUARTER TONE FLAT;So;0;L;;;;;N;;;;; -1D134;MUSICAL SYMBOL COMMON TIME;So;0;L;;;;;N;;;;; -1D135;MUSICAL SYMBOL CUT TIME;So;0;L;;;;;N;;;;; -1D136;MUSICAL SYMBOL OTTAVA ALTA;So;0;L;;;;;N;;;;; -1D137;MUSICAL SYMBOL OTTAVA BASSA;So;0;L;;;;;N;;;;; -1D138;MUSICAL SYMBOL QUINDICESIMA ALTA;So;0;L;;;;;N;;;;; -1D139;MUSICAL SYMBOL QUINDICESIMA BASSA;So;0;L;;;;;N;;;;; -1D13A;MUSICAL SYMBOL MULTI REST;So;0;L;;;;;N;;;;; -1D13B;MUSICAL SYMBOL WHOLE REST;So;0;L;;;;;N;;;;; -1D13C;MUSICAL SYMBOL HALF REST;So;0;L;;;;;N;;;;; -1D13D;MUSICAL SYMBOL QUARTER REST;So;0;L;;;;;N;;;;; -1D13E;MUSICAL SYMBOL EIGHTH REST;So;0;L;;;;;N;;;;; -1D13F;MUSICAL SYMBOL SIXTEENTH REST;So;0;L;;;;;N;;;;; -1D140;MUSICAL SYMBOL THIRTY-SECOND REST;So;0;L;;;;;N;;;;; -1D141;MUSICAL SYMBOL SIXTY-FOURTH REST;So;0;L;;;;;N;;;;; -1D142;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST;So;0;L;;;;;N;;;;; -1D143;MUSICAL SYMBOL X NOTEHEAD;So;0;L;;;;;N;;;;; -1D144;MUSICAL SYMBOL PLUS NOTEHEAD;So;0;L;;;;;N;;;;; -1D145;MUSICAL SYMBOL CIRCLE X NOTEHEAD;So;0;L;;;;;N;;;;; -1D146;MUSICAL SYMBOL SQUARE NOTEHEAD WHITE;So;0;L;;;;;N;;;;; -1D147;MUSICAL SYMBOL SQUARE NOTEHEAD BLACK;So;0;L;;;;;N;;;;; -1D148;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE;So;0;L;;;;;N;;;;; -1D149;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK;So;0;L;;;;;N;;;;; -1D14A;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE;So;0;L;;;;;N;;;;; -1D14B;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK;So;0;L;;;;;N;;;;; -1D14C;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE;So;0;L;;;;;N;;;;; -1D14D;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK;So;0;L;;;;;N;;;;; -1D14E;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;; -1D14F;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;; -1D150;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE;So;0;L;;;;;N;;;;; -1D151;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK;So;0;L;;;;;N;;;;; -1D152;MUSICAL SYMBOL MOON NOTEHEAD WHITE;So;0;L;;;;;N;;;;; -1D153;MUSICAL SYMBOL MOON NOTEHEAD BLACK;So;0;L;;;;;N;;;;; -1D154;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;; -1D155;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;; -1D156;MUSICAL SYMBOL PARENTHESIS NOTEHEAD;So;0;L;;;;;N;;;;; -1D157;MUSICAL SYMBOL VOID NOTEHEAD;So;0;L;;;;;N;;;;; -1D158;MUSICAL SYMBOL NOTEHEAD BLACK;So;0;L;;;;;N;;;;; -1D159;MUSICAL SYMBOL NULL NOTEHEAD;So;0;L;;;;;N;;;;; -1D15A;MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE;So;0;L;;;;;N;;;;; -1D15B;MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK;So;0;L;;;;;N;;;;; -1D15C;MUSICAL SYMBOL BREVE;So;0;L;;;;;N;;;;; -1D15D;MUSICAL SYMBOL WHOLE NOTE;So;0;L;;;;;N;;;;; -1D15E;MUSICAL SYMBOL HALF NOTE;So;0;L;1D157 1D165;;;;N;;;;; -1D15F;MUSICAL SYMBOL QUARTER NOTE;So;0;L;1D158 1D165;;;;N;;;;; -1D160;MUSICAL SYMBOL EIGHTH NOTE;So;0;L;1D15F 1D16E;;;;N;;;;; -1D161;MUSICAL SYMBOL SIXTEENTH NOTE;So;0;L;1D15F 1D16F;;;;N;;;;; -1D162;MUSICAL SYMBOL THIRTY-SECOND NOTE;So;0;L;1D15F 1D170;;;;N;;;;; -1D163;MUSICAL SYMBOL SIXTY-FOURTH NOTE;So;0;L;1D15F 1D171;;;;N;;;;; -1D164;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;So;0;L;1D15F 1D172;;;;N;;;;; -1D165;MUSICAL SYMBOL COMBINING STEM;Mc;216;L;;;;;N;;;;; -1D166;MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;Mc;216;L;;;;;N;;;;; -1D167;MUSICAL SYMBOL COMBINING TREMOLO-1;Mn;1;NSM;;;;;N;;;;; -1D168;MUSICAL SYMBOL COMBINING TREMOLO-2;Mn;1;NSM;;;;;N;;;;; -1D169;MUSICAL SYMBOL COMBINING TREMOLO-3;Mn;1;NSM;;;;;N;;;;; -1D16A;MUSICAL SYMBOL FINGERED TREMOLO-1;So;0;L;;;;;N;;;;; -1D16B;MUSICAL SYMBOL FINGERED TREMOLO-2;So;0;L;;;;;N;;;;; -1D16C;MUSICAL SYMBOL FINGERED TREMOLO-3;So;0;L;;;;;N;;;;; -1D16D;MUSICAL SYMBOL COMBINING AUGMENTATION DOT;Mc;226;L;;;;;N;;;;; -1D16E;MUSICAL SYMBOL COMBINING FLAG-1;Mc;216;L;;;;;N;;;;; -1D16F;MUSICAL SYMBOL COMBINING FLAG-2;Mc;216;L;;;;;N;;;;; -1D170;MUSICAL SYMBOL COMBINING FLAG-3;Mc;216;L;;;;;N;;;;; -1D171;MUSICAL SYMBOL COMBINING FLAG-4;Mc;216;L;;;;;N;;;;; -1D172;MUSICAL SYMBOL COMBINING FLAG-5;Mc;216;L;;;;;N;;;;; -1D173;MUSICAL SYMBOL BEGIN BEAM;Cf;0;BN;;;;;N;;;;; -1D174;MUSICAL SYMBOL END BEAM;Cf;0;BN;;;;;N;;;;; -1D175;MUSICAL SYMBOL BEGIN TIE;Cf;0;BN;;;;;N;;;;; -1D176;MUSICAL SYMBOL END TIE;Cf;0;BN;;;;;N;;;;; -1D177;MUSICAL SYMBOL BEGIN SLUR;Cf;0;BN;;;;;N;;;;; -1D178;MUSICAL SYMBOL END SLUR;Cf;0;BN;;;;;N;;;;; -1D179;MUSICAL SYMBOL BEGIN PHRASE;Cf;0;BN;;;;;N;;;;; -1D17A;MUSICAL SYMBOL END PHRASE;Cf;0;BN;;;;;N;;;;; -1D17B;MUSICAL SYMBOL COMBINING ACCENT;Mn;220;NSM;;;;;N;;;;; -1D17C;MUSICAL SYMBOL COMBINING STACCATO;Mn;220;NSM;;;;;N;;;;; -1D17D;MUSICAL SYMBOL COMBINING TENUTO;Mn;220;NSM;;;;;N;;;;; -1D17E;MUSICAL SYMBOL COMBINING STACCATISSIMO;Mn;220;NSM;;;;;N;;;;; -1D17F;MUSICAL SYMBOL COMBINING MARCATO;Mn;220;NSM;;;;;N;;;;; -1D180;MUSICAL SYMBOL COMBINING MARCATO-STACCATO;Mn;220;NSM;;;;;N;;;;; -1D181;MUSICAL SYMBOL COMBINING ACCENT-STACCATO;Mn;220;NSM;;;;;N;;;;; -1D182;MUSICAL SYMBOL COMBINING LOURE;Mn;220;NSM;;;;;N;;;;; -1D183;MUSICAL SYMBOL ARPEGGIATO UP;So;0;L;;;;;N;;;;; -1D184;MUSICAL SYMBOL ARPEGGIATO DOWN;So;0;L;;;;;N;;;;; -1D185;MUSICAL SYMBOL COMBINING DOIT;Mn;230;NSM;;;;;N;;;;; -1D186;MUSICAL SYMBOL COMBINING RIP;Mn;230;NSM;;;;;N;;;;; -1D187;MUSICAL SYMBOL COMBINING FLIP;Mn;230;NSM;;;;;N;;;;; -1D188;MUSICAL SYMBOL COMBINING SMEAR;Mn;230;NSM;;;;;N;;;;; -1D189;MUSICAL SYMBOL COMBINING BEND;Mn;230;NSM;;;;;N;;;;; -1D18A;MUSICAL SYMBOL COMBINING DOUBLE TONGUE;Mn;220;NSM;;;;;N;;;;; -1D18B;MUSICAL SYMBOL COMBINING TRIPLE TONGUE;Mn;220;NSM;;;;;N;;;;; -1D18C;MUSICAL SYMBOL RINFORZANDO;So;0;L;;;;;N;;;;; -1D18D;MUSICAL SYMBOL SUBITO;So;0;L;;;;;N;;;;; -1D18E;MUSICAL SYMBOL Z;So;0;L;;;;;N;;;;; -1D18F;MUSICAL SYMBOL PIANO;So;0;L;;;;;N;;;;; -1D190;MUSICAL SYMBOL MEZZO;So;0;L;;;;;N;;;;; -1D191;MUSICAL SYMBOL FORTE;So;0;L;;;;;N;;;;; -1D192;MUSICAL SYMBOL CRESCENDO;So;0;L;;;;;N;;;;; -1D193;MUSICAL SYMBOL DECRESCENDO;So;0;L;;;;;N;;;;; -1D194;MUSICAL SYMBOL GRACE NOTE SLASH;So;0;L;;;;;N;;;;; -1D195;MUSICAL SYMBOL GRACE NOTE NO SLASH;So;0;L;;;;;N;;;;; -1D196;MUSICAL SYMBOL TR;So;0;L;;;;;N;;;;; -1D197;MUSICAL SYMBOL TURN;So;0;L;;;;;N;;;;; -1D198;MUSICAL SYMBOL INVERTED TURN;So;0;L;;;;;N;;;;; -1D199;MUSICAL SYMBOL TURN SLASH;So;0;L;;;;;N;;;;; -1D19A;MUSICAL SYMBOL TURN UP;So;0;L;;;;;N;;;;; -1D19B;MUSICAL SYMBOL ORNAMENT STROKE-1;So;0;L;;;;;N;;;;; -1D19C;MUSICAL SYMBOL ORNAMENT STROKE-2;So;0;L;;;;;N;;;;; -1D19D;MUSICAL SYMBOL ORNAMENT STROKE-3;So;0;L;;;;;N;;;;; -1D19E;MUSICAL SYMBOL ORNAMENT STROKE-4;So;0;L;;;;;N;;;;; -1D19F;MUSICAL SYMBOL ORNAMENT STROKE-5;So;0;L;;;;;N;;;;; -1D1A0;MUSICAL SYMBOL ORNAMENT STROKE-6;So;0;L;;;;;N;;;;; -1D1A1;MUSICAL SYMBOL ORNAMENT STROKE-7;So;0;L;;;;;N;;;;; -1D1A2;MUSICAL SYMBOL ORNAMENT STROKE-8;So;0;L;;;;;N;;;;; -1D1A3;MUSICAL SYMBOL ORNAMENT STROKE-9;So;0;L;;;;;N;;;;; -1D1A4;MUSICAL SYMBOL ORNAMENT STROKE-10;So;0;L;;;;;N;;;;; -1D1A5;MUSICAL SYMBOL ORNAMENT STROKE-11;So;0;L;;;;;N;;;;; -1D1A6;MUSICAL SYMBOL HAUPTSTIMME;So;0;L;;;;;N;;;;; -1D1A7;MUSICAL SYMBOL NEBENSTIMME;So;0;L;;;;;N;;;;; -1D1A8;MUSICAL SYMBOL END OF STIMME;So;0;L;;;;;N;;;;; -1D1A9;MUSICAL SYMBOL DEGREE SLASH;So;0;L;;;;;N;;;;; -1D1AA;MUSICAL SYMBOL COMBINING DOWN BOW;Mn;230;NSM;;;;;N;;;;; -1D1AB;MUSICAL SYMBOL COMBINING UP BOW;Mn;230;NSM;;;;;N;;;;; -1D1AC;MUSICAL SYMBOL COMBINING HARMONIC;Mn;230;NSM;;;;;N;;;;; -1D1AD;MUSICAL SYMBOL COMBINING SNAP PIZZICATO;Mn;230;NSM;;;;;N;;;;; -1D1AE;MUSICAL SYMBOL PEDAL MARK;So;0;L;;;;;N;;;;; -1D1AF;MUSICAL SYMBOL PEDAL UP MARK;So;0;L;;;;;N;;;;; -1D1B0;MUSICAL SYMBOL HALF PEDAL MARK;So;0;L;;;;;N;;;;; -1D1B1;MUSICAL SYMBOL GLISSANDO UP;So;0;L;;;;;N;;;;; -1D1B2;MUSICAL SYMBOL GLISSANDO DOWN;So;0;L;;;;;N;;;;; -1D1B3;MUSICAL SYMBOL WITH FINGERNAILS;So;0;L;;;;;N;;;;; -1D1B4;MUSICAL SYMBOL DAMP;So;0;L;;;;;N;;;;; -1D1B5;MUSICAL SYMBOL DAMP ALL;So;0;L;;;;;N;;;;; -1D1B6;MUSICAL SYMBOL MAXIMA;So;0;L;;;;;N;;;;; -1D1B7;MUSICAL SYMBOL LONGA;So;0;L;;;;;N;;;;; -1D1B8;MUSICAL SYMBOL BREVIS;So;0;L;;;;;N;;;;; -1D1B9;MUSICAL SYMBOL SEMIBREVIS WHITE;So;0;L;;;;;N;;;;; -1D1BA;MUSICAL SYMBOL SEMIBREVIS BLACK;So;0;L;;;;;N;;;;; -1D1BB;MUSICAL SYMBOL MINIMA;So;0;L;1D1B9 1D165;;;;N;;;;; -1D1BC;MUSICAL SYMBOL MINIMA BLACK;So;0;L;1D1BA 1D165;;;;N;;;;; -1D1BD;MUSICAL SYMBOL SEMIMINIMA WHITE;So;0;L;1D1BB 1D16E;;;;N;;;;; -1D1BE;MUSICAL SYMBOL SEMIMINIMA BLACK;So;0;L;1D1BC 1D16E;;;;N;;;;; -1D1BF;MUSICAL SYMBOL FUSA WHITE;So;0;L;1D1BB 1D16F;;;;N;;;;; -1D1C0;MUSICAL SYMBOL FUSA BLACK;So;0;L;1D1BC 1D16F;;;;N;;;;; -1D1C1;MUSICAL SYMBOL LONGA PERFECTA REST;So;0;L;;;;;N;;;;; -1D1C2;MUSICAL SYMBOL LONGA IMPERFECTA REST;So;0;L;;;;;N;;;;; -1D1C3;MUSICAL SYMBOL BREVIS REST;So;0;L;;;;;N;;;;; -1D1C4;MUSICAL SYMBOL SEMIBREVIS REST;So;0;L;;;;;N;;;;; -1D1C5;MUSICAL SYMBOL MINIMA REST;So;0;L;;;;;N;;;;; -1D1C6;MUSICAL SYMBOL SEMIMINIMA REST;So;0;L;;;;;N;;;;; -1D1C7;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;; -1D1C8;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;; -1D1C9;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;; -1D1CA;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;; -1D1CB;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;; -1D1CC;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;; -1D1CD;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2;So;0;L;;;;;N;;;;; -1D1CE;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3;So;0;L;;;;;N;;;;; -1D1CF;MUSICAL SYMBOL CROIX;So;0;L;;;;;N;;;;; -1D1D0;MUSICAL SYMBOL GREGORIAN C CLEF;So;0;L;;;;;N;;;;; -1D1D1;MUSICAL SYMBOL GREGORIAN F CLEF;So;0;L;;;;;N;;;;; -1D1D2;MUSICAL SYMBOL SQUARE B;So;0;L;;;;;N;;;;; -1D1D3;MUSICAL SYMBOL VIRGA;So;0;L;;;;;N;;;;; -1D1D4;MUSICAL SYMBOL PODATUS;So;0;L;;;;;N;;;;; -1D1D5;MUSICAL SYMBOL CLIVIS;So;0;L;;;;;N;;;;; -1D1D6;MUSICAL SYMBOL SCANDICUS;So;0;L;;;;;N;;;;; -1D1D7;MUSICAL SYMBOL CLIMACUS;So;0;L;;;;;N;;;;; -1D1D8;MUSICAL SYMBOL TORCULUS;So;0;L;;;;;N;;;;; -1D1D9;MUSICAL SYMBOL PORRECTUS;So;0;L;;;;;N;;;;; -1D1DA;MUSICAL SYMBOL PORRECTUS FLEXUS;So;0;L;;;;;N;;;;; -1D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;; -1D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;; -1D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;; -1D200;GREEK VOCAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;; -1D201;GREEK VOCAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;; -1D202;GREEK VOCAL NOTATION SYMBOL-3;So;0;ON;;;;;N;;;;; -1D203;GREEK VOCAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;; -1D204;GREEK VOCAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;; -1D205;GREEK VOCAL NOTATION SYMBOL-6;So;0;ON;;;;;N;;;;; -1D206;GREEK VOCAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;; -1D207;GREEK VOCAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;; -1D208;GREEK VOCAL NOTATION SYMBOL-9;So;0;ON;;;;;N;;;;; -1D209;GREEK VOCAL NOTATION SYMBOL-10;So;0;ON;;;;;N;;;;; -1D20A;GREEK VOCAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;; -1D20B;GREEK VOCAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;; -1D20C;GREEK VOCAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;; -1D20D;GREEK VOCAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;; -1D20E;GREEK VOCAL NOTATION SYMBOL-15;So;0;ON;;;;;N;;;;; -1D20F;GREEK VOCAL NOTATION SYMBOL-16;So;0;ON;;;;;N;;;;; -1D210;GREEK VOCAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;; -1D211;GREEK VOCAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;; -1D212;GREEK VOCAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;; -1D213;GREEK VOCAL NOTATION SYMBOL-20;So;0;ON;;;;;N;;;;; -1D214;GREEK VOCAL NOTATION SYMBOL-21;So;0;ON;;;;;N;;;;; -1D215;GREEK VOCAL NOTATION SYMBOL-22;So;0;ON;;;;;N;;;;; -1D216;GREEK VOCAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;; -1D217;GREEK VOCAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;; -1D218;GREEK VOCAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;; -1D219;GREEK VOCAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;; -1D21A;GREEK VOCAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;; -1D21B;GREEK VOCAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;; -1D21C;GREEK VOCAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;; -1D21D;GREEK INSTRUMENTAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;; -1D21E;GREEK INSTRUMENTAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;; -1D21F;GREEK INSTRUMENTAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;; -1D220;GREEK INSTRUMENTAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;; -1D221;GREEK INSTRUMENTAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;; -1D222;GREEK INSTRUMENTAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;; -1D223;GREEK INSTRUMENTAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;; -1D224;GREEK INSTRUMENTAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;; -1D225;GREEK INSTRUMENTAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;; -1D226;GREEK INSTRUMENTAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;; -1D227;GREEK INSTRUMENTAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;; -1D228;GREEK INSTRUMENTAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;; -1D229;GREEK INSTRUMENTAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;; -1D22A;GREEK INSTRUMENTAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;; -1D22B;GREEK INSTRUMENTAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;; -1D22C;GREEK INSTRUMENTAL NOTATION SYMBOL-25;So;0;ON;;;;;N;;;;; -1D22D;GREEK INSTRUMENTAL NOTATION SYMBOL-26;So;0;ON;;;;;N;;;;; -1D22E;GREEK INSTRUMENTAL NOTATION SYMBOL-27;So;0;ON;;;;;N;;;;; -1D22F;GREEK INSTRUMENTAL NOTATION SYMBOL-29;So;0;ON;;;;;N;;;;; -1D230;GREEK INSTRUMENTAL NOTATION SYMBOL-30;So;0;ON;;;;;N;;;;; -1D231;GREEK INSTRUMENTAL NOTATION SYMBOL-32;So;0;ON;;;;;N;;;;; -1D232;GREEK INSTRUMENTAL NOTATION SYMBOL-36;So;0;ON;;;;;N;;;;; -1D233;GREEK INSTRUMENTAL NOTATION SYMBOL-37;So;0;ON;;;;;N;;;;; -1D234;GREEK INSTRUMENTAL NOTATION SYMBOL-38;So;0;ON;;;;;N;;;;; -1D235;GREEK INSTRUMENTAL NOTATION SYMBOL-39;So;0;ON;;;;;N;;;;; -1D236;GREEK INSTRUMENTAL NOTATION SYMBOL-40;So;0;ON;;;;;N;;;;; -1D237;GREEK INSTRUMENTAL NOTATION SYMBOL-42;So;0;ON;;;;;N;;;;; -1D238;GREEK INSTRUMENTAL NOTATION SYMBOL-43;So;0;ON;;;;;N;;;;; -1D239;GREEK INSTRUMENTAL NOTATION SYMBOL-45;So;0;ON;;;;;N;;;;; -1D23A;GREEK INSTRUMENTAL NOTATION SYMBOL-47;So;0;ON;;;;;N;;;;; -1D23B;GREEK INSTRUMENTAL NOTATION SYMBOL-48;So;0;ON;;;;;N;;;;; -1D23C;GREEK INSTRUMENTAL NOTATION SYMBOL-49;So;0;ON;;;;;N;;;;; -1D23D;GREEK INSTRUMENTAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;; -1D23E;GREEK INSTRUMENTAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;; -1D23F;GREEK INSTRUMENTAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;; -1D240;GREEK INSTRUMENTAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;; -1D241;GREEK INSTRUMENTAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;; -1D242;COMBINING GREEK MUSICAL TRISEME;Mn;230;NSM;;;;;N;;;;; -1D243;COMBINING GREEK MUSICAL TETRASEME;Mn;230;NSM;;;;;N;;;;; -1D244;COMBINING GREEK MUSICAL PENTASEME;Mn;230;NSM;;;;;N;;;;; -1D245;GREEK MUSICAL LEIMMA;So;0;ON;;;;;N;;;;; -1D300;MONOGRAM FOR EARTH;So;0;ON;;;;;N;;ren *;;; -1D301;DIGRAM FOR HEAVENLY EARTH;So;0;ON;;;;;N;;tian ren *;;; -1D302;DIGRAM FOR HUMAN EARTH;So;0;ON;;;;;N;;di ren *;;; -1D303;DIGRAM FOR EARTHLY HEAVEN;So;0;ON;;;;;N;;ren tian *;;; -1D304;DIGRAM FOR EARTHLY HUMAN;So;0;ON;;;;;N;;ren di *;;; -1D305;DIGRAM FOR EARTH;So;0;ON;;;;;N;;ren ren *;;; -1D306;TETRAGRAM FOR CENTRE;So;0;ON;;;;;N;;;;; -1D307;TETRAGRAM FOR FULL CIRCLE;So;0;ON;;;;;N;;;;; -1D308;TETRAGRAM FOR MIRED;So;0;ON;;;;;N;;;;; -1D309;TETRAGRAM FOR BARRIER;So;0;ON;;;;;N;;;;; -1D30A;TETRAGRAM FOR KEEPING SMALL;So;0;ON;;;;;N;;;;; -1D30B;TETRAGRAM FOR CONTRARIETY;So;0;ON;;;;;N;;;;; -1D30C;TETRAGRAM FOR ASCENT;So;0;ON;;;;;N;;;;; -1D30D;TETRAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;; -1D30E;TETRAGRAM FOR BRANCHING OUT;So;0;ON;;;;;N;;;;; -1D30F;TETRAGRAM FOR DEFECTIVENESS OR DISTORTION;So;0;ON;;;;;N;;;;; -1D310;TETRAGRAM FOR DIVERGENCE;So;0;ON;;;;;N;;;;; -1D311;TETRAGRAM FOR YOUTHFULNESS;So;0;ON;;;;;N;;;;; -1D312;TETRAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;; -1D313;TETRAGRAM FOR PENETRATION;So;0;ON;;;;;N;;;;; -1D314;TETRAGRAM FOR REACH;So;0;ON;;;;;N;;;;; -1D315;TETRAGRAM FOR CONTACT;So;0;ON;;;;;N;;;;; -1D316;TETRAGRAM FOR HOLDING BACK;So;0;ON;;;;;N;;;;; -1D317;TETRAGRAM FOR WAITING;So;0;ON;;;;;N;;;;; -1D318;TETRAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;; -1D319;TETRAGRAM FOR ADVANCE;So;0;ON;;;;;N;;;;; -1D31A;TETRAGRAM FOR RELEASE;So;0;ON;;;;;N;;;;; -1D31B;TETRAGRAM FOR RESISTANCE;So;0;ON;;;;;N;;;;; -1D31C;TETRAGRAM FOR EASE;So;0;ON;;;;;N;;;;; -1D31D;TETRAGRAM FOR JOY;So;0;ON;;;;;N;;;;; -1D31E;TETRAGRAM FOR CONTENTION;So;0;ON;;;;;N;;;;; -1D31F;TETRAGRAM FOR ENDEAVOUR;So;0;ON;;;;;N;;;;; -1D320;TETRAGRAM FOR DUTIES;So;0;ON;;;;;N;;;;; -1D321;TETRAGRAM FOR CHANGE;So;0;ON;;;;;N;;;;; -1D322;TETRAGRAM FOR DECISIVENESS;So;0;ON;;;;;N;;;;; -1D323;TETRAGRAM FOR BOLD RESOLUTION;So;0;ON;;;;;N;;;;; -1D324;TETRAGRAM FOR PACKING;So;0;ON;;;;;N;;;;; -1D325;TETRAGRAM FOR LEGION;So;0;ON;;;;;N;;;;; -1D326;TETRAGRAM FOR CLOSENESS;So;0;ON;;;;;N;;;;; -1D327;TETRAGRAM FOR KINSHIP;So;0;ON;;;;;N;;;;; -1D328;TETRAGRAM FOR GATHERING;So;0;ON;;;;;N;;;;; -1D329;TETRAGRAM FOR STRENGTH;So;0;ON;;;;;N;;;;; -1D32A;TETRAGRAM FOR PURITY;So;0;ON;;;;;N;;;;; -1D32B;TETRAGRAM FOR FULLNESS;So;0;ON;;;;;N;;;;; -1D32C;TETRAGRAM FOR RESIDENCE;So;0;ON;;;;;N;;;;; -1D32D;TETRAGRAM FOR LAW OR MODEL;So;0;ON;;;;;N;;;;; -1D32E;TETRAGRAM FOR RESPONSE;So;0;ON;;;;;N;;;;; -1D32F;TETRAGRAM FOR GOING TO MEET;So;0;ON;;;;;N;;;;; -1D330;TETRAGRAM FOR ENCOUNTERS;So;0;ON;;;;;N;;;;; -1D331;TETRAGRAM FOR STOVE;So;0;ON;;;;;N;;;;; -1D332;TETRAGRAM FOR GREATNESS;So;0;ON;;;;;N;;;;; -1D333;TETRAGRAM FOR ENLARGEMENT;So;0;ON;;;;;N;;;;; -1D334;TETRAGRAM FOR PATTERN;So;0;ON;;;;;N;;;;; -1D335;TETRAGRAM FOR RITUAL;So;0;ON;;;;;N;;;;; -1D336;TETRAGRAM FOR FLIGHT;So;0;ON;;;;;N;;;;; -1D337;TETRAGRAM FOR VASTNESS OR WASTING;So;0;ON;;;;;N;;;;; -1D338;TETRAGRAM FOR CONSTANCY;So;0;ON;;;;;N;;;;; -1D339;TETRAGRAM FOR MEASURE;So;0;ON;;;;;N;;;;; -1D33A;TETRAGRAM FOR ETERNITY;So;0;ON;;;;;N;;;;; -1D33B;TETRAGRAM FOR UNITY;So;0;ON;;;;;N;;;;; -1D33C;TETRAGRAM FOR DIMINISHMENT;So;0;ON;;;;;N;;;;; -1D33D;TETRAGRAM FOR CLOSED MOUTH;So;0;ON;;;;;N;;;;; -1D33E;TETRAGRAM FOR GUARDEDNESS;So;0;ON;;;;;N;;;;; -1D33F;TETRAGRAM FOR GATHERING IN;So;0;ON;;;;;N;;;;; -1D340;TETRAGRAM FOR MASSING;So;0;ON;;;;;N;;;;; -1D341;TETRAGRAM FOR ACCUMULATION;So;0;ON;;;;;N;;;;; -1D342;TETRAGRAM FOR EMBELLISHMENT;So;0;ON;;;;;N;;;;; -1D343;TETRAGRAM FOR DOUBT;So;0;ON;;;;;N;;;;; -1D344;TETRAGRAM FOR WATCH;So;0;ON;;;;;N;;;;; -1D345;TETRAGRAM FOR SINKING;So;0;ON;;;;;N;;;;; -1D346;TETRAGRAM FOR INNER;So;0;ON;;;;;N;;;;; -1D347;TETRAGRAM FOR DEPARTURE;So;0;ON;;;;;N;;;;; -1D348;TETRAGRAM FOR DARKENING;So;0;ON;;;;;N;;;;; -1D349;TETRAGRAM FOR DIMMING;So;0;ON;;;;;N;;;;; -1D34A;TETRAGRAM FOR EXHAUSTION;So;0;ON;;;;;N;;;;; -1D34B;TETRAGRAM FOR SEVERANCE;So;0;ON;;;;;N;;;;; -1D34C;TETRAGRAM FOR STOPPAGE;So;0;ON;;;;;N;;;;; -1D34D;TETRAGRAM FOR HARDNESS;So;0;ON;;;;;N;;;;; -1D34E;TETRAGRAM FOR COMPLETION;So;0;ON;;;;;N;;;;; -1D34F;TETRAGRAM FOR CLOSURE;So;0;ON;;;;;N;;;;; -1D350;TETRAGRAM FOR FAILURE;So;0;ON;;;;;N;;;;; -1D351;TETRAGRAM FOR AGGRAVATION;So;0;ON;;;;;N;;;;; -1D352;TETRAGRAM FOR COMPLIANCE;So;0;ON;;;;;N;;;;; -1D353;TETRAGRAM FOR ON THE VERGE;So;0;ON;;;;;N;;;;; -1D354;TETRAGRAM FOR DIFFICULTIES;So;0;ON;;;;;N;;;;; -1D355;TETRAGRAM FOR LABOURING;So;0;ON;;;;;N;;;;; -1D356;TETRAGRAM FOR FOSTERING;So;0;ON;;;;;N;;;;; -1D360;COUNTING ROD UNIT DIGIT ONE;No;0;L;;;;1;N;;;;; -1D361;COUNTING ROD UNIT DIGIT TWO;No;0;L;;;;2;N;;;;; -1D362;COUNTING ROD UNIT DIGIT THREE;No;0;L;;;;3;N;;;;; -1D363;COUNTING ROD UNIT DIGIT FOUR;No;0;L;;;;4;N;;;;; -1D364;COUNTING ROD UNIT DIGIT FIVE;No;0;L;;;;5;N;;;;; -1D365;COUNTING ROD UNIT DIGIT SIX;No;0;L;;;;6;N;;;;; -1D366;COUNTING ROD UNIT DIGIT SEVEN;No;0;L;;;;7;N;;;;; -1D367;COUNTING ROD UNIT DIGIT EIGHT;No;0;L;;;;8;N;;;;; -1D368;COUNTING ROD UNIT DIGIT NINE;No;0;L;;;;9;N;;;;; -1D369;COUNTING ROD TENS DIGIT ONE;No;0;L;;;;10;N;;;;; -1D36A;COUNTING ROD TENS DIGIT TWO;No;0;L;;;;20;N;;;;; -1D36B;COUNTING ROD TENS DIGIT THREE;No;0;L;;;;30;N;;;;; -1D36C;COUNTING ROD TENS DIGIT FOUR;No;0;L;;;;40;N;;;;; -1D36D;COUNTING ROD TENS DIGIT FIVE;No;0;L;;;;50;N;;;;; -1D36E;COUNTING ROD TENS DIGIT SIX;No;0;L;;;;60;N;;;;; -1D36F;COUNTING ROD TENS DIGIT SEVEN;No;0;L;;;;70;N;;;;; -1D370;COUNTING ROD TENS DIGIT EIGHT;No;0;L;;;;80;N;;;;; -1D371;COUNTING ROD TENS DIGIT NINE;No;0;L;;;;90;N;;;;; -1D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D403;MATHEMATICAL BOLD CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D404;MATHEMATICAL BOLD CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D405;MATHEMATICAL BOLD CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D406;MATHEMATICAL BOLD CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D407;MATHEMATICAL BOLD CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D408;MATHEMATICAL BOLD CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D409;MATHEMATICAL BOLD CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D40A;MATHEMATICAL BOLD CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D40B;MATHEMATICAL BOLD CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D40C;MATHEMATICAL BOLD CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D40D;MATHEMATICAL BOLD CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D40E;MATHEMATICAL BOLD CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D40F;MATHEMATICAL BOLD CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D410;MATHEMATICAL BOLD CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D411;MATHEMATICAL BOLD CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D412;MATHEMATICAL BOLD CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D413;MATHEMATICAL BOLD CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D414;MATHEMATICAL BOLD CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D415;MATHEMATICAL BOLD CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D416;MATHEMATICAL BOLD CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D417;MATHEMATICAL BOLD CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D418;MATHEMATICAL BOLD CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D419;MATHEMATICAL BOLD CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D41A;MATHEMATICAL BOLD SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D41B;MATHEMATICAL BOLD SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D41C;MATHEMATICAL BOLD SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D41D;MATHEMATICAL BOLD SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D41E;MATHEMATICAL BOLD SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D41F;MATHEMATICAL BOLD SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D420;MATHEMATICAL BOLD SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D421;MATHEMATICAL BOLD SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D422;MATHEMATICAL BOLD SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D423;MATHEMATICAL BOLD SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D424;MATHEMATICAL BOLD SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D425;MATHEMATICAL BOLD SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D426;MATHEMATICAL BOLD SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D427;MATHEMATICAL BOLD SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D428;MATHEMATICAL BOLD SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D429;MATHEMATICAL BOLD SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D42A;MATHEMATICAL BOLD SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D42B;MATHEMATICAL BOLD SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D42C;MATHEMATICAL BOLD SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D42D;MATHEMATICAL BOLD SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D42E;MATHEMATICAL BOLD SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D42F;MATHEMATICAL BOLD SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D430;MATHEMATICAL BOLD SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D431;MATHEMATICAL BOLD SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D432;MATHEMATICAL BOLD SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D433;MATHEMATICAL BOLD SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D434;MATHEMATICAL ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D435;MATHEMATICAL ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D436;MATHEMATICAL ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D437;MATHEMATICAL ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D438;MATHEMATICAL ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D439;MATHEMATICAL ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D43A;MATHEMATICAL ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D43B;MATHEMATICAL ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D43C;MATHEMATICAL ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D43D;MATHEMATICAL ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D43E;MATHEMATICAL ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D43F;MATHEMATICAL ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D440;MATHEMATICAL ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D441;MATHEMATICAL ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D442;MATHEMATICAL ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D443;MATHEMATICAL ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D444;MATHEMATICAL ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D445;MATHEMATICAL ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D446;MATHEMATICAL ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D447;MATHEMATICAL ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D448;MATHEMATICAL ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D449;MATHEMATICAL ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D44A;MATHEMATICAL ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D44B;MATHEMATICAL ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D44C;MATHEMATICAL ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D44D;MATHEMATICAL ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D44E;MATHEMATICAL ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D44F;MATHEMATICAL ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D450;MATHEMATICAL ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D451;MATHEMATICAL ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D452;MATHEMATICAL ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D453;MATHEMATICAL ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D454;MATHEMATICAL ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D456;MATHEMATICAL ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D457;MATHEMATICAL ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D458;MATHEMATICAL ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D459;MATHEMATICAL ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D45A;MATHEMATICAL ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D45B;MATHEMATICAL ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D45C;MATHEMATICAL ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D45D;MATHEMATICAL ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D45E;MATHEMATICAL ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D45F;MATHEMATICAL ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D460;MATHEMATICAL ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D461;MATHEMATICAL ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D462;MATHEMATICAL ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D463;MATHEMATICAL ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D464;MATHEMATICAL ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D465;MATHEMATICAL ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D466;MATHEMATICAL ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D467;MATHEMATICAL ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D468;MATHEMATICAL BOLD ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D469;MATHEMATICAL BOLD ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D46A;MATHEMATICAL BOLD ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D46B;MATHEMATICAL BOLD ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D46C;MATHEMATICAL BOLD ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D46D;MATHEMATICAL BOLD ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D46E;MATHEMATICAL BOLD ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D46F;MATHEMATICAL BOLD ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D470;MATHEMATICAL BOLD ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D471;MATHEMATICAL BOLD ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D472;MATHEMATICAL BOLD ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D473;MATHEMATICAL BOLD ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D474;MATHEMATICAL BOLD ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D475;MATHEMATICAL BOLD ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D476;MATHEMATICAL BOLD ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D477;MATHEMATICAL BOLD ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D478;MATHEMATICAL BOLD ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D479;MATHEMATICAL BOLD ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D47A;MATHEMATICAL BOLD ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D47B;MATHEMATICAL BOLD ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D47C;MATHEMATICAL BOLD ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D47D;MATHEMATICAL BOLD ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D47E;MATHEMATICAL BOLD ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D47F;MATHEMATICAL BOLD ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D480;MATHEMATICAL BOLD ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D481;MATHEMATICAL BOLD ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D482;MATHEMATICAL BOLD ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D483;MATHEMATICAL BOLD ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D484;MATHEMATICAL BOLD ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D485;MATHEMATICAL BOLD ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D486;MATHEMATICAL BOLD ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D487;MATHEMATICAL BOLD ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D488;MATHEMATICAL BOLD ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D489;MATHEMATICAL BOLD ITALIC SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D48A;MATHEMATICAL BOLD ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D48B;MATHEMATICAL BOLD ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D48C;MATHEMATICAL BOLD ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D48D;MATHEMATICAL BOLD ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D48E;MATHEMATICAL BOLD ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D48F;MATHEMATICAL BOLD ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D490;MATHEMATICAL BOLD ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D491;MATHEMATICAL BOLD ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D492;MATHEMATICAL BOLD ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D493;MATHEMATICAL BOLD ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D494;MATHEMATICAL BOLD ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D495;MATHEMATICAL BOLD ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D496;MATHEMATICAL BOLD ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D497;MATHEMATICAL BOLD ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D498;MATHEMATICAL BOLD ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D499;MATHEMATICAL BOLD ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D49A;MATHEMATICAL BOLD ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D49B;MATHEMATICAL BOLD ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D49C;MATHEMATICAL SCRIPT CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D49E;MATHEMATICAL SCRIPT CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D49F;MATHEMATICAL SCRIPT CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D4A2;MATHEMATICAL SCRIPT CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D4A5;MATHEMATICAL SCRIPT CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D4A6;MATHEMATICAL SCRIPT CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D4A9;MATHEMATICAL SCRIPT CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D4AA;MATHEMATICAL SCRIPT CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D4AB;MATHEMATICAL SCRIPT CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D4AC;MATHEMATICAL SCRIPT CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D4AE;MATHEMATICAL SCRIPT CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D4AF;MATHEMATICAL SCRIPT CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D4B0;MATHEMATICAL SCRIPT CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D4B1;MATHEMATICAL SCRIPT CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D4B2;MATHEMATICAL SCRIPT CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D4B3;MATHEMATICAL SCRIPT CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D4B4;MATHEMATICAL SCRIPT CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D4B5;MATHEMATICAL SCRIPT CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D4B6;MATHEMATICAL SCRIPT SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D4B7;MATHEMATICAL SCRIPT SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D4B8;MATHEMATICAL SCRIPT SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D4B9;MATHEMATICAL SCRIPT SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D4BB;MATHEMATICAL SCRIPT SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D4BD;MATHEMATICAL SCRIPT SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D4BE;MATHEMATICAL SCRIPT SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D4BF;MATHEMATICAL SCRIPT SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D4C0;MATHEMATICAL SCRIPT SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D4C1;MATHEMATICAL SCRIPT SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D4C2;MATHEMATICAL SCRIPT SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D4C3;MATHEMATICAL SCRIPT SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D4C5;MATHEMATICAL SCRIPT SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D4C6;MATHEMATICAL SCRIPT SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D4C7;MATHEMATICAL SCRIPT SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D4C8;MATHEMATICAL SCRIPT SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D4C9;MATHEMATICAL SCRIPT SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D4CA;MATHEMATICAL SCRIPT SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D4CB;MATHEMATICAL SCRIPT SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D4CC;MATHEMATICAL SCRIPT SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D4CD;MATHEMATICAL SCRIPT SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D4CE;MATHEMATICAL SCRIPT SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D4CF;MATHEMATICAL SCRIPT SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D4D0;MATHEMATICAL BOLD SCRIPT CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D4D1;MATHEMATICAL BOLD SCRIPT CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D4D2;MATHEMATICAL BOLD SCRIPT CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D4D3;MATHEMATICAL BOLD SCRIPT CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D4D4;MATHEMATICAL BOLD SCRIPT CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D4D5;MATHEMATICAL BOLD SCRIPT CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D4D6;MATHEMATICAL BOLD SCRIPT CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D4D7;MATHEMATICAL BOLD SCRIPT CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D4D8;MATHEMATICAL BOLD SCRIPT CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D4D9;MATHEMATICAL BOLD SCRIPT CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D4DA;MATHEMATICAL BOLD SCRIPT CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D4DB;MATHEMATICAL BOLD SCRIPT CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D4DC;MATHEMATICAL BOLD SCRIPT CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D4DD;MATHEMATICAL BOLD SCRIPT CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D4DE;MATHEMATICAL BOLD SCRIPT CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D4DF;MATHEMATICAL BOLD SCRIPT CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D4E0;MATHEMATICAL BOLD SCRIPT CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D4E1;MATHEMATICAL BOLD SCRIPT CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D4E2;MATHEMATICAL BOLD SCRIPT CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D4E3;MATHEMATICAL BOLD SCRIPT CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D4E4;MATHEMATICAL BOLD SCRIPT CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D4E5;MATHEMATICAL BOLD SCRIPT CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D4E6;MATHEMATICAL BOLD SCRIPT CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D4E7;MATHEMATICAL BOLD SCRIPT CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D4E8;MATHEMATICAL BOLD SCRIPT CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D4E9;MATHEMATICAL BOLD SCRIPT CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D4EA;MATHEMATICAL BOLD SCRIPT SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D4EB;MATHEMATICAL BOLD SCRIPT SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D4EC;MATHEMATICAL BOLD SCRIPT SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D4ED;MATHEMATICAL BOLD SCRIPT SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D4EE;MATHEMATICAL BOLD SCRIPT SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D4EF;MATHEMATICAL BOLD SCRIPT SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D4F0;MATHEMATICAL BOLD SCRIPT SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D4F1;MATHEMATICAL BOLD SCRIPT SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D4F2;MATHEMATICAL BOLD SCRIPT SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D4F3;MATHEMATICAL BOLD SCRIPT SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D4F4;MATHEMATICAL BOLD SCRIPT SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D4F5;MATHEMATICAL BOLD SCRIPT SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D4F6;MATHEMATICAL BOLD SCRIPT SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D4F7;MATHEMATICAL BOLD SCRIPT SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D4F8;MATHEMATICAL BOLD SCRIPT SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D4F9;MATHEMATICAL BOLD SCRIPT SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D4FA;MATHEMATICAL BOLD SCRIPT SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D4FB;MATHEMATICAL BOLD SCRIPT SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D4FC;MATHEMATICAL BOLD SCRIPT SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D4FD;MATHEMATICAL BOLD SCRIPT SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D4FE;MATHEMATICAL BOLD SCRIPT SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D4FF;MATHEMATICAL BOLD SCRIPT SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D500;MATHEMATICAL BOLD SCRIPT SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D501;MATHEMATICAL BOLD SCRIPT SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D502;MATHEMATICAL BOLD SCRIPT SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D503;MATHEMATICAL BOLD SCRIPT SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D504;MATHEMATICAL FRAKTUR CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D505;MATHEMATICAL FRAKTUR CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D507;MATHEMATICAL FRAKTUR CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D508;MATHEMATICAL FRAKTUR CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D509;MATHEMATICAL FRAKTUR CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D50A;MATHEMATICAL FRAKTUR CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D50D;MATHEMATICAL FRAKTUR CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D50E;MATHEMATICAL FRAKTUR CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D50F;MATHEMATICAL FRAKTUR CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D510;MATHEMATICAL FRAKTUR CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D511;MATHEMATICAL FRAKTUR CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D512;MATHEMATICAL FRAKTUR CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D513;MATHEMATICAL FRAKTUR CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D514;MATHEMATICAL FRAKTUR CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D516;MATHEMATICAL FRAKTUR CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D517;MATHEMATICAL FRAKTUR CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D518;MATHEMATICAL FRAKTUR CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D519;MATHEMATICAL FRAKTUR CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D51A;MATHEMATICAL FRAKTUR CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D51B;MATHEMATICAL FRAKTUR CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D51C;MATHEMATICAL FRAKTUR CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D51E;MATHEMATICAL FRAKTUR SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D51F;MATHEMATICAL FRAKTUR SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D520;MATHEMATICAL FRAKTUR SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D521;MATHEMATICAL FRAKTUR SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D522;MATHEMATICAL FRAKTUR SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D523;MATHEMATICAL FRAKTUR SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D524;MATHEMATICAL FRAKTUR SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D525;MATHEMATICAL FRAKTUR SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D526;MATHEMATICAL FRAKTUR SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D527;MATHEMATICAL FRAKTUR SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D528;MATHEMATICAL FRAKTUR SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D529;MATHEMATICAL FRAKTUR SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D52A;MATHEMATICAL FRAKTUR SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D52B;MATHEMATICAL FRAKTUR SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D52C;MATHEMATICAL FRAKTUR SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D52D;MATHEMATICAL FRAKTUR SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D52E;MATHEMATICAL FRAKTUR SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D52F;MATHEMATICAL FRAKTUR SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D530;MATHEMATICAL FRAKTUR SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D531;MATHEMATICAL FRAKTUR SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D532;MATHEMATICAL FRAKTUR SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D533;MATHEMATICAL FRAKTUR SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D534;MATHEMATICAL FRAKTUR SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D535;MATHEMATICAL FRAKTUR SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D536;MATHEMATICAL FRAKTUR SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D537;MATHEMATICAL FRAKTUR SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D538;MATHEMATICAL DOUBLE-STRUCK CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D539;MATHEMATICAL DOUBLE-STRUCK CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D53B;MATHEMATICAL DOUBLE-STRUCK CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D53C;MATHEMATICAL DOUBLE-STRUCK CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D53D;MATHEMATICAL DOUBLE-STRUCK CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D53E;MATHEMATICAL DOUBLE-STRUCK CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D540;MATHEMATICAL DOUBLE-STRUCK CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D541;MATHEMATICAL DOUBLE-STRUCK CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D542;MATHEMATICAL DOUBLE-STRUCK CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D543;MATHEMATICAL DOUBLE-STRUCK CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D544;MATHEMATICAL DOUBLE-STRUCK CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D546;MATHEMATICAL DOUBLE-STRUCK CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D54A;MATHEMATICAL DOUBLE-STRUCK CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D54B;MATHEMATICAL DOUBLE-STRUCK CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D54C;MATHEMATICAL DOUBLE-STRUCK CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D54D;MATHEMATICAL DOUBLE-STRUCK CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D54E;MATHEMATICAL DOUBLE-STRUCK CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D54F;MATHEMATICAL DOUBLE-STRUCK CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D550;MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D552;MATHEMATICAL DOUBLE-STRUCK SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D553;MATHEMATICAL DOUBLE-STRUCK SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D554;MATHEMATICAL DOUBLE-STRUCK SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D555;MATHEMATICAL DOUBLE-STRUCK SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D556;MATHEMATICAL DOUBLE-STRUCK SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D557;MATHEMATICAL DOUBLE-STRUCK SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D558;MATHEMATICAL DOUBLE-STRUCK SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D559;MATHEMATICAL DOUBLE-STRUCK SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D55A;MATHEMATICAL DOUBLE-STRUCK SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D55B;MATHEMATICAL DOUBLE-STRUCK SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D55C;MATHEMATICAL DOUBLE-STRUCK SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D55D;MATHEMATICAL DOUBLE-STRUCK SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D55E;MATHEMATICAL DOUBLE-STRUCK SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D55F;MATHEMATICAL DOUBLE-STRUCK SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D560;MATHEMATICAL DOUBLE-STRUCK SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D561;MATHEMATICAL DOUBLE-STRUCK SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D562;MATHEMATICAL DOUBLE-STRUCK SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D563;MATHEMATICAL DOUBLE-STRUCK SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D564;MATHEMATICAL DOUBLE-STRUCK SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D565;MATHEMATICAL DOUBLE-STRUCK SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D566;MATHEMATICAL DOUBLE-STRUCK SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D567;MATHEMATICAL DOUBLE-STRUCK SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D568;MATHEMATICAL DOUBLE-STRUCK SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D569;MATHEMATICAL DOUBLE-STRUCK SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D56A;MATHEMATICAL DOUBLE-STRUCK SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D56B;MATHEMATICAL DOUBLE-STRUCK SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D56C;MATHEMATICAL BOLD FRAKTUR CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D56D;MATHEMATICAL BOLD FRAKTUR CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D56E;MATHEMATICAL BOLD FRAKTUR CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D56F;MATHEMATICAL BOLD FRAKTUR CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D570;MATHEMATICAL BOLD FRAKTUR CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D571;MATHEMATICAL BOLD FRAKTUR CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D572;MATHEMATICAL BOLD FRAKTUR CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D573;MATHEMATICAL BOLD FRAKTUR CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D574;MATHEMATICAL BOLD FRAKTUR CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D575;MATHEMATICAL BOLD FRAKTUR CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D576;MATHEMATICAL BOLD FRAKTUR CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D577;MATHEMATICAL BOLD FRAKTUR CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D578;MATHEMATICAL BOLD FRAKTUR CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D579;MATHEMATICAL BOLD FRAKTUR CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D57A;MATHEMATICAL BOLD FRAKTUR CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D57B;MATHEMATICAL BOLD FRAKTUR CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D57C;MATHEMATICAL BOLD FRAKTUR CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D57D;MATHEMATICAL BOLD FRAKTUR CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D57E;MATHEMATICAL BOLD FRAKTUR CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D57F;MATHEMATICAL BOLD FRAKTUR CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D580;MATHEMATICAL BOLD FRAKTUR CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D581;MATHEMATICAL BOLD FRAKTUR CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D582;MATHEMATICAL BOLD FRAKTUR CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D583;MATHEMATICAL BOLD FRAKTUR CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D584;MATHEMATICAL BOLD FRAKTUR CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D585;MATHEMATICAL BOLD FRAKTUR CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D586;MATHEMATICAL BOLD FRAKTUR SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D587;MATHEMATICAL BOLD FRAKTUR SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D588;MATHEMATICAL BOLD FRAKTUR SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D589;MATHEMATICAL BOLD FRAKTUR SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D58A;MATHEMATICAL BOLD FRAKTUR SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D58B;MATHEMATICAL BOLD FRAKTUR SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D58C;MATHEMATICAL BOLD FRAKTUR SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D58D;MATHEMATICAL BOLD FRAKTUR SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D58E;MATHEMATICAL BOLD FRAKTUR SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D58F;MATHEMATICAL BOLD FRAKTUR SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D590;MATHEMATICAL BOLD FRAKTUR SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D591;MATHEMATICAL BOLD FRAKTUR SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D592;MATHEMATICAL BOLD FRAKTUR SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D593;MATHEMATICAL BOLD FRAKTUR SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D594;MATHEMATICAL BOLD FRAKTUR SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D595;MATHEMATICAL BOLD FRAKTUR SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D596;MATHEMATICAL BOLD FRAKTUR SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D597;MATHEMATICAL BOLD FRAKTUR SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D598;MATHEMATICAL BOLD FRAKTUR SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D599;MATHEMATICAL BOLD FRAKTUR SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D59A;MATHEMATICAL BOLD FRAKTUR SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D59B;MATHEMATICAL BOLD FRAKTUR SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D59C;MATHEMATICAL BOLD FRAKTUR SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D59D;MATHEMATICAL BOLD FRAKTUR SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D59E;MATHEMATICAL BOLD FRAKTUR SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D59F;MATHEMATICAL BOLD FRAKTUR SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D5A0;MATHEMATICAL SANS-SERIF CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D5A1;MATHEMATICAL SANS-SERIF CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D5A2;MATHEMATICAL SANS-SERIF CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D5A3;MATHEMATICAL SANS-SERIF CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D5A4;MATHEMATICAL SANS-SERIF CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D5A5;MATHEMATICAL SANS-SERIF CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D5A6;MATHEMATICAL SANS-SERIF CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D5A7;MATHEMATICAL SANS-SERIF CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D5A8;MATHEMATICAL SANS-SERIF CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D5A9;MATHEMATICAL SANS-SERIF CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D5AA;MATHEMATICAL SANS-SERIF CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D5AB;MATHEMATICAL SANS-SERIF CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D5AC;MATHEMATICAL SANS-SERIF CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D5AD;MATHEMATICAL SANS-SERIF CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D5AE;MATHEMATICAL SANS-SERIF CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D5AF;MATHEMATICAL SANS-SERIF CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D5B0;MATHEMATICAL SANS-SERIF CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D5B1;MATHEMATICAL SANS-SERIF CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D5B2;MATHEMATICAL SANS-SERIF CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D5B3;MATHEMATICAL SANS-SERIF CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D5B4;MATHEMATICAL SANS-SERIF CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D5B5;MATHEMATICAL SANS-SERIF CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D5B6;MATHEMATICAL SANS-SERIF CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D5B7;MATHEMATICAL SANS-SERIF CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D5B8;MATHEMATICAL SANS-SERIF CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D5B9;MATHEMATICAL SANS-SERIF CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D5BA;MATHEMATICAL SANS-SERIF SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D5BB;MATHEMATICAL SANS-SERIF SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D5BC;MATHEMATICAL SANS-SERIF SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D5BD;MATHEMATICAL SANS-SERIF SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D5BE;MATHEMATICAL SANS-SERIF SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D5BF;MATHEMATICAL SANS-SERIF SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D5C0;MATHEMATICAL SANS-SERIF SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D5C1;MATHEMATICAL SANS-SERIF SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D5C2;MATHEMATICAL SANS-SERIF SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D5C3;MATHEMATICAL SANS-SERIF SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D5C4;MATHEMATICAL SANS-SERIF SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D5C5;MATHEMATICAL SANS-SERIF SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D5C6;MATHEMATICAL SANS-SERIF SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D5C7;MATHEMATICAL SANS-SERIF SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D5C8;MATHEMATICAL SANS-SERIF SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D5C9;MATHEMATICAL SANS-SERIF SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D5CA;MATHEMATICAL SANS-SERIF SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D5CB;MATHEMATICAL SANS-SERIF SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D5CC;MATHEMATICAL SANS-SERIF SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D5CD;MATHEMATICAL SANS-SERIF SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D5CE;MATHEMATICAL SANS-SERIF SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D5CF;MATHEMATICAL SANS-SERIF SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D5D0;MATHEMATICAL SANS-SERIF SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D5D1;MATHEMATICAL SANS-SERIF SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D5D2;MATHEMATICAL SANS-SERIF SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D5D3;MATHEMATICAL SANS-SERIF SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D5D4;MATHEMATICAL SANS-SERIF BOLD CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D5D5;MATHEMATICAL SANS-SERIF BOLD CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D5D6;MATHEMATICAL SANS-SERIF BOLD CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D5D7;MATHEMATICAL SANS-SERIF BOLD CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D5D8;MATHEMATICAL SANS-SERIF BOLD CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D5D9;MATHEMATICAL SANS-SERIF BOLD CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D5DA;MATHEMATICAL SANS-SERIF BOLD CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D5DB;MATHEMATICAL SANS-SERIF BOLD CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D5DC;MATHEMATICAL SANS-SERIF BOLD CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D5DD;MATHEMATICAL SANS-SERIF BOLD CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D5DE;MATHEMATICAL SANS-SERIF BOLD CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D5DF;MATHEMATICAL SANS-SERIF BOLD CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D5E0;MATHEMATICAL SANS-SERIF BOLD CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D5E1;MATHEMATICAL SANS-SERIF BOLD CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D5E2;MATHEMATICAL SANS-SERIF BOLD CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D5E3;MATHEMATICAL SANS-SERIF BOLD CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D5E4;MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D5E5;MATHEMATICAL SANS-SERIF BOLD CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D5E6;MATHEMATICAL SANS-SERIF BOLD CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D5E7;MATHEMATICAL SANS-SERIF BOLD CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D5E8;MATHEMATICAL SANS-SERIF BOLD CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D5E9;MATHEMATICAL SANS-SERIF BOLD CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D5EA;MATHEMATICAL SANS-SERIF BOLD CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D5EB;MATHEMATICAL SANS-SERIF BOLD CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D5EC;MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D5ED;MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D5EE;MATHEMATICAL SANS-SERIF BOLD SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D5EF;MATHEMATICAL SANS-SERIF BOLD SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D5F0;MATHEMATICAL SANS-SERIF BOLD SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D5F1;MATHEMATICAL SANS-SERIF BOLD SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D5F2;MATHEMATICAL SANS-SERIF BOLD SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D5F3;MATHEMATICAL SANS-SERIF BOLD SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D5F4;MATHEMATICAL SANS-SERIF BOLD SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D5F5;MATHEMATICAL SANS-SERIF BOLD SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D5F6;MATHEMATICAL SANS-SERIF BOLD SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D5F7;MATHEMATICAL SANS-SERIF BOLD SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D5F8;MATHEMATICAL SANS-SERIF BOLD SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D5F9;MATHEMATICAL SANS-SERIF BOLD SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D5FA;MATHEMATICAL SANS-SERIF BOLD SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D5FB;MATHEMATICAL SANS-SERIF BOLD SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D5FC;MATHEMATICAL SANS-SERIF BOLD SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D5FD;MATHEMATICAL SANS-SERIF BOLD SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D5FE;MATHEMATICAL SANS-SERIF BOLD SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D5FF;MATHEMATICAL SANS-SERIF BOLD SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D600;MATHEMATICAL SANS-SERIF BOLD SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D601;MATHEMATICAL SANS-SERIF BOLD SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D602;MATHEMATICAL SANS-SERIF BOLD SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D603;MATHEMATICAL SANS-SERIF BOLD SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D604;MATHEMATICAL SANS-SERIF BOLD SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D605;MATHEMATICAL SANS-SERIF BOLD SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D606;MATHEMATICAL SANS-SERIF BOLD SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D607;MATHEMATICAL SANS-SERIF BOLD SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D608;MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D609;MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D60A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D60B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D60C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D60D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D60E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D60F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D610;MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D611;MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D612;MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D613;MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D614;MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D615;MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D616;MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D617;MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D618;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D619;MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D61A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D61B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D61C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D61D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D61E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D61F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D620;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D621;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D622;MATHEMATICAL SANS-SERIF ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D623;MATHEMATICAL SANS-SERIF ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D624;MATHEMATICAL SANS-SERIF ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D625;MATHEMATICAL SANS-SERIF ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D626;MATHEMATICAL SANS-SERIF ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D627;MATHEMATICAL SANS-SERIF ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D628;MATHEMATICAL SANS-SERIF ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D629;MATHEMATICAL SANS-SERIF ITALIC SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D62A;MATHEMATICAL SANS-SERIF ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D62B;MATHEMATICAL SANS-SERIF ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D62C;MATHEMATICAL SANS-SERIF ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D62D;MATHEMATICAL SANS-SERIF ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D62E;MATHEMATICAL SANS-SERIF ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D62F;MATHEMATICAL SANS-SERIF ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D630;MATHEMATICAL SANS-SERIF ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D631;MATHEMATICAL SANS-SERIF ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D632;MATHEMATICAL SANS-SERIF ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D633;MATHEMATICAL SANS-SERIF ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D634;MATHEMATICAL SANS-SERIF ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D635;MATHEMATICAL SANS-SERIF ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D636;MATHEMATICAL SANS-SERIF ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D637;MATHEMATICAL SANS-SERIF ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D638;MATHEMATICAL SANS-SERIF ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D639;MATHEMATICAL SANS-SERIF ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D63A;MATHEMATICAL SANS-SERIF ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D63B;MATHEMATICAL SANS-SERIF ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D63C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D63D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D63E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D63F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D640;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D641;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D642;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D643;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D644;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D645;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D646;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D647;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D648;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D649;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D64A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D64B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D64C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D64D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D64E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D64F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D650;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D651;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D652;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D653;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D654;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D655;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D656;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D657;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D658;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D659;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D65A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D65B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D65C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D65D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D65E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D65F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D660;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D661;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D662;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D663;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D664;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D665;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D666;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D667;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D668;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D669;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D66A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D66B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D66C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D66D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D66E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D66F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D670;MATHEMATICAL MONOSPACE CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D671;MATHEMATICAL MONOSPACE CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D672;MATHEMATICAL MONOSPACE CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D673;MATHEMATICAL MONOSPACE CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D674;MATHEMATICAL MONOSPACE CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D675;MATHEMATICAL MONOSPACE CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D676;MATHEMATICAL MONOSPACE CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D677;MATHEMATICAL MONOSPACE CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D678;MATHEMATICAL MONOSPACE CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D679;MATHEMATICAL MONOSPACE CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D67A;MATHEMATICAL MONOSPACE CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D67B;MATHEMATICAL MONOSPACE CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D67C;MATHEMATICAL MONOSPACE CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D67D;MATHEMATICAL MONOSPACE CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D67E;MATHEMATICAL MONOSPACE CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D67F;MATHEMATICAL MONOSPACE CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D680;MATHEMATICAL MONOSPACE CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D681;MATHEMATICAL MONOSPACE CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D682;MATHEMATICAL MONOSPACE CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D683;MATHEMATICAL MONOSPACE CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D684;MATHEMATICAL MONOSPACE CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D685;MATHEMATICAL MONOSPACE CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D686;MATHEMATICAL MONOSPACE CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D687;MATHEMATICAL MONOSPACE CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D688;MATHEMATICAL MONOSPACE CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D689;MATHEMATICAL MONOSPACE CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D68A;MATHEMATICAL MONOSPACE SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D68B;MATHEMATICAL MONOSPACE SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D68C;MATHEMATICAL MONOSPACE SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D68D;MATHEMATICAL MONOSPACE SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D68E;MATHEMATICAL MONOSPACE SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D68F;MATHEMATICAL MONOSPACE SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D690;MATHEMATICAL MONOSPACE SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D691;MATHEMATICAL MONOSPACE SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D692;MATHEMATICAL MONOSPACE SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D693;MATHEMATICAL MONOSPACE SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D694;MATHEMATICAL MONOSPACE SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D695;MATHEMATICAL MONOSPACE SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D696;MATHEMATICAL MONOSPACE SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D697;MATHEMATICAL MONOSPACE SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D698;MATHEMATICAL MONOSPACE SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D699;MATHEMATICAL MONOSPACE SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D69A;MATHEMATICAL MONOSPACE SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D69B;MATHEMATICAL MONOSPACE SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D69C;MATHEMATICAL MONOSPACE SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D69D;MATHEMATICAL MONOSPACE SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D69E;MATHEMATICAL MONOSPACE SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D69F;MATHEMATICAL MONOSPACE SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D6A0;MATHEMATICAL MONOSPACE SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D6A1;MATHEMATICAL MONOSPACE SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D6A2;MATHEMATICAL MONOSPACE SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D6A3;MATHEMATICAL MONOSPACE SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D6A4;MATHEMATICAL ITALIC SMALL DOTLESS I;Ll;0;L; 0131;;;;N;;;;; -1D6A5;MATHEMATICAL ITALIC SMALL DOTLESS J;Ll;0;L; 0237;;;;N;;;;; -1D6A8;MATHEMATICAL BOLD CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; -1D6A9;MATHEMATICAL BOLD CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; -1D6AA;MATHEMATICAL BOLD CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; -1D6AB;MATHEMATICAL BOLD CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; -1D6AC;MATHEMATICAL BOLD CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; -1D6AD;MATHEMATICAL BOLD CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; -1D6AE;MATHEMATICAL BOLD CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; -1D6AF;MATHEMATICAL BOLD CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; -1D6B0;MATHEMATICAL BOLD CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; -1D6B1;MATHEMATICAL BOLD CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; -1D6B2;MATHEMATICAL BOLD CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; -1D6B3;MATHEMATICAL BOLD CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; -1D6B4;MATHEMATICAL BOLD CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; -1D6B5;MATHEMATICAL BOLD CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; -1D6B6;MATHEMATICAL BOLD CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; -1D6B7;MATHEMATICAL BOLD CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; -1D6B8;MATHEMATICAL BOLD CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; -1D6B9;MATHEMATICAL BOLD CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; -1D6BA;MATHEMATICAL BOLD CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; -1D6BB;MATHEMATICAL BOLD CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; -1D6BC;MATHEMATICAL BOLD CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; -1D6BD;MATHEMATICAL BOLD CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; -1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; -1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; -1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; -1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L; 2207;;;;N;;;;; -1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; -1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; -1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; -1D6C5;MATHEMATICAL BOLD SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; -1D6C6;MATHEMATICAL BOLD SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; -1D6C7;MATHEMATICAL BOLD SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; -1D6C8;MATHEMATICAL BOLD SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; -1D6C9;MATHEMATICAL BOLD SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; -1D6CA;MATHEMATICAL BOLD SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; -1D6CB;MATHEMATICAL BOLD SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; -1D6CC;MATHEMATICAL BOLD SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; -1D6CD;MATHEMATICAL BOLD SMALL MU;Ll;0;L; 03BC;;;;N;;;;; -1D6CE;MATHEMATICAL BOLD SMALL NU;Ll;0;L; 03BD;;;;N;;;;; -1D6CF;MATHEMATICAL BOLD SMALL XI;Ll;0;L; 03BE;;;;N;;;;; -1D6D0;MATHEMATICAL BOLD SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; -1D6D1;MATHEMATICAL BOLD SMALL PI;Ll;0;L; 03C0;;;;N;;;;; -1D6D2;MATHEMATICAL BOLD SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; -1D6D3;MATHEMATICAL BOLD SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; -1D6D4;MATHEMATICAL BOLD SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; -1D6D5;MATHEMATICAL BOLD SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; -1D6D6;MATHEMATICAL BOLD SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; -1D6D7;MATHEMATICAL BOLD SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; -1D6D8;MATHEMATICAL BOLD SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; -1D6D9;MATHEMATICAL BOLD SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; -1D6DA;MATHEMATICAL BOLD SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; -1D6DB;MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;Sm;0;L; 2202;;;;Y;;;;; -1D6DC;MATHEMATICAL BOLD EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; -1D6DD;MATHEMATICAL BOLD THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; -1D6DE;MATHEMATICAL BOLD KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; -1D6DF;MATHEMATICAL BOLD PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; -1D6E0;MATHEMATICAL BOLD RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; -1D6E1;MATHEMATICAL BOLD PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; -1D6E2;MATHEMATICAL ITALIC CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; -1D6E3;MATHEMATICAL ITALIC CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; -1D6E4;MATHEMATICAL ITALIC CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; -1D6E5;MATHEMATICAL ITALIC CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; -1D6E6;MATHEMATICAL ITALIC CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; -1D6E7;MATHEMATICAL ITALIC CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; -1D6E8;MATHEMATICAL ITALIC CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; -1D6E9;MATHEMATICAL ITALIC CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; -1D6EA;MATHEMATICAL ITALIC CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; -1D6EB;MATHEMATICAL ITALIC CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; -1D6EC;MATHEMATICAL ITALIC CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; -1D6ED;MATHEMATICAL ITALIC CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; -1D6EE;MATHEMATICAL ITALIC CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; -1D6EF;MATHEMATICAL ITALIC CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; -1D6F0;MATHEMATICAL ITALIC CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; -1D6F1;MATHEMATICAL ITALIC CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; -1D6F2;MATHEMATICAL ITALIC CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; -1D6F3;MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; -1D6F4;MATHEMATICAL ITALIC CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; -1D6F5;MATHEMATICAL ITALIC CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; -1D6F6;MATHEMATICAL ITALIC CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; -1D6F7;MATHEMATICAL ITALIC CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; -1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; -1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; -1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; -1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;; -1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; -1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; -1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; -1D6FF;MATHEMATICAL ITALIC SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; -1D700;MATHEMATICAL ITALIC SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; -1D701;MATHEMATICAL ITALIC SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; -1D702;MATHEMATICAL ITALIC SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; -1D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; -1D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; -1D705;MATHEMATICAL ITALIC SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; -1D706;MATHEMATICAL ITALIC SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; -1D707;MATHEMATICAL ITALIC SMALL MU;Ll;0;L; 03BC;;;;N;;;;; -1D708;MATHEMATICAL ITALIC SMALL NU;Ll;0;L; 03BD;;;;N;;;;; -1D709;MATHEMATICAL ITALIC SMALL XI;Ll;0;L; 03BE;;;;N;;;;; -1D70A;MATHEMATICAL ITALIC SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; -1D70B;MATHEMATICAL ITALIC SMALL PI;Ll;0;L; 03C0;;;;N;;;;; -1D70C;MATHEMATICAL ITALIC SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; -1D70D;MATHEMATICAL ITALIC SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; -1D70E;MATHEMATICAL ITALIC SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; -1D70F;MATHEMATICAL ITALIC SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; -1D710;MATHEMATICAL ITALIC SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; -1D711;MATHEMATICAL ITALIC SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; -1D712;MATHEMATICAL ITALIC SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; -1D713;MATHEMATICAL ITALIC SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; -1D714;MATHEMATICAL ITALIC SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; -1D715;MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;Sm;0;L; 2202;;;;Y;;;;; -1D716;MATHEMATICAL ITALIC EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; -1D717;MATHEMATICAL ITALIC THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; -1D718;MATHEMATICAL ITALIC KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; -1D719;MATHEMATICAL ITALIC PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; -1D71A;MATHEMATICAL ITALIC RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; -1D71B;MATHEMATICAL ITALIC PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; -1D71C;MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; -1D71D;MATHEMATICAL BOLD ITALIC CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; -1D71E;MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; -1D71F;MATHEMATICAL BOLD ITALIC CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; -1D720;MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; -1D721;MATHEMATICAL BOLD ITALIC CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; -1D722;MATHEMATICAL BOLD ITALIC CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; -1D723;MATHEMATICAL BOLD ITALIC CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; -1D724;MATHEMATICAL BOLD ITALIC CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; -1D725;MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; -1D726;MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; -1D727;MATHEMATICAL BOLD ITALIC CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; -1D728;MATHEMATICAL BOLD ITALIC CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; -1D729;MATHEMATICAL BOLD ITALIC CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; -1D72A;MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; -1D72B;MATHEMATICAL BOLD ITALIC CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; -1D72C;MATHEMATICAL BOLD ITALIC CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; -1D72D;MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; -1D72E;MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; -1D72F;MATHEMATICAL BOLD ITALIC CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; -1D730;MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; -1D731;MATHEMATICAL BOLD ITALIC CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; -1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; -1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; -1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; -1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;; -1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; -1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; -1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; -1D739;MATHEMATICAL BOLD ITALIC SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; -1D73A;MATHEMATICAL BOLD ITALIC SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; -1D73B;MATHEMATICAL BOLD ITALIC SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; -1D73C;MATHEMATICAL BOLD ITALIC SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; -1D73D;MATHEMATICAL BOLD ITALIC SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; -1D73E;MATHEMATICAL BOLD ITALIC SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; -1D73F;MATHEMATICAL BOLD ITALIC SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; -1D740;MATHEMATICAL BOLD ITALIC SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; -1D741;MATHEMATICAL BOLD ITALIC SMALL MU;Ll;0;L; 03BC;;;;N;;;;; -1D742;MATHEMATICAL BOLD ITALIC SMALL NU;Ll;0;L; 03BD;;;;N;;;;; -1D743;MATHEMATICAL BOLD ITALIC SMALL XI;Ll;0;L; 03BE;;;;N;;;;; -1D744;MATHEMATICAL BOLD ITALIC SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; -1D745;MATHEMATICAL BOLD ITALIC SMALL PI;Ll;0;L; 03C0;;;;N;;;;; -1D746;MATHEMATICAL BOLD ITALIC SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; -1D747;MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; -1D748;MATHEMATICAL BOLD ITALIC SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; -1D749;MATHEMATICAL BOLD ITALIC SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; -1D74A;MATHEMATICAL BOLD ITALIC SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; -1D74B;MATHEMATICAL BOLD ITALIC SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; -1D74C;MATHEMATICAL BOLD ITALIC SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; -1D74D;MATHEMATICAL BOLD ITALIC SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; -1D74E;MATHEMATICAL BOLD ITALIC SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; -1D74F;MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L; 2202;;;;Y;;;;; -1D750;MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; -1D751;MATHEMATICAL BOLD ITALIC THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; -1D752;MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; -1D753;MATHEMATICAL BOLD ITALIC PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; -1D754;MATHEMATICAL BOLD ITALIC RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; -1D755;MATHEMATICAL BOLD ITALIC PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; -1D756;MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; -1D757;MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; -1D758;MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; -1D759;MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; -1D75A;MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; -1D75B;MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; -1D75C;MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; -1D75D;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; -1D75E;MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; -1D75F;MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; -1D760;MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; -1D761;MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; -1D762;MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; -1D763;MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; -1D764;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; -1D765;MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; -1D766;MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; -1D767;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; -1D768;MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; -1D769;MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; -1D76A;MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; -1D76B;MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; -1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; -1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; -1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; -1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L; 2207;;;;N;;;;; -1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; -1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; -1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; -1D773;MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; -1D774;MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; -1D775;MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; -1D776;MATHEMATICAL SANS-SERIF BOLD SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; -1D777;MATHEMATICAL SANS-SERIF BOLD SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; -1D778;MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; -1D779;MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; -1D77A;MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; -1D77B;MATHEMATICAL SANS-SERIF BOLD SMALL MU;Ll;0;L; 03BC;;;;N;;;;; -1D77C;MATHEMATICAL SANS-SERIF BOLD SMALL NU;Ll;0;L; 03BD;;;;N;;;;; -1D77D;MATHEMATICAL SANS-SERIF BOLD SMALL XI;Ll;0;L; 03BE;;;;N;;;;; -1D77E;MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; -1D77F;MATHEMATICAL SANS-SERIF BOLD SMALL PI;Ll;0;L; 03C0;;;;N;;;;; -1D780;MATHEMATICAL SANS-SERIF BOLD SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; -1D781;MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; -1D782;MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; -1D783;MATHEMATICAL SANS-SERIF BOLD SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; -1D784;MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; -1D785;MATHEMATICAL SANS-SERIF BOLD SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; -1D786;MATHEMATICAL SANS-SERIF BOLD SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; -1D787;MATHEMATICAL SANS-SERIF BOLD SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; -1D788;MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; -1D789;MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;Sm;0;L; 2202;;;;Y;;;;; -1D78A;MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; -1D78B;MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; -1D78C;MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; -1D78D;MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; -1D78E;MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; -1D78F;MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; -1D790;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; -1D791;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; -1D792;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; -1D793;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; -1D794;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; -1D795;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; -1D796;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; -1D797;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; -1D798;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; -1D799;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; -1D79A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; -1D79B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; -1D79C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; -1D79D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; -1D79E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; -1D79F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; -1D7A0;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; -1D7A1;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; -1D7A2;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; -1D7A3;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; -1D7A4;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; -1D7A5;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; -1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; -1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; -1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; -1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;; -1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; -1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; -1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; -1D7AD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; -1D7AE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; -1D7AF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; -1D7B0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; -1D7B1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; -1D7B2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; -1D7B3;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; -1D7B4;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; -1D7B5;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;Ll;0;L; 03BC;;;;N;;;;; -1D7B6;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;Ll;0;L; 03BD;;;;N;;;;; -1D7B7;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;Ll;0;L; 03BE;;;;N;;;;; -1D7B8;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; -1D7B9;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;Ll;0;L; 03C0;;;;N;;;;; -1D7BA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; -1D7BB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; -1D7BC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; -1D7BD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; -1D7BE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; -1D7BF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; -1D7C0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; -1D7C1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; -1D7C2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; -1D7C3;MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L; 2202;;;;Y;;;;; -1D7C4;MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; -1D7C5;MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; -1D7C6;MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; -1D7C7;MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; -1D7C8;MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; -1D7C9;MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; -1D7CA;MATHEMATICAL BOLD CAPITAL DIGAMMA;Lu;0;L; 03DC;;;;N;;;;; -1D7CB;MATHEMATICAL BOLD SMALL DIGAMMA;Ll;0;L; 03DD;;;;N;;;;; -1D7CE;MATHEMATICAL BOLD DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; -1D7CF;MATHEMATICAL BOLD DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; -1D7D0;MATHEMATICAL BOLD DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; -1D7D1;MATHEMATICAL BOLD DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; -1D7D2;MATHEMATICAL BOLD DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; -1D7D3;MATHEMATICAL BOLD DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; -1D7D4;MATHEMATICAL BOLD DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; -1D7D5;MATHEMATICAL BOLD DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; -1D7D6;MATHEMATICAL BOLD DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; -1D7D7;MATHEMATICAL BOLD DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; -1D7D8;MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; -1D7D9;MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; -1D7DA;MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; -1D7DB;MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; -1D7DC;MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; -1D7DD;MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; -1D7DE;MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; -1D7DF;MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; -1D7E0;MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; -1D7E1;MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; -1D7E2;MATHEMATICAL SANS-SERIF DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; -1D7E3;MATHEMATICAL SANS-SERIF DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; -1D7E4;MATHEMATICAL SANS-SERIF DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; -1D7E5;MATHEMATICAL SANS-SERIF DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; -1D7E6;MATHEMATICAL SANS-SERIF DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; -1D7E7;MATHEMATICAL SANS-SERIF DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; -1D7E8;MATHEMATICAL SANS-SERIF DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; -1D7E9;MATHEMATICAL SANS-SERIF DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; -1D7EA;MATHEMATICAL SANS-SERIF DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; -1D7EB;MATHEMATICAL SANS-SERIF DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; -1D7EC;MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; -1D7ED;MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; -1D7EE;MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; -1D7EF;MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; -1D7F0;MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; -1D7F1;MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; -1D7F2;MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; -1D7F3;MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; -1D7F4;MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; -1D7F5;MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; -1D7F6;MATHEMATICAL MONOSPACE DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; -1D7F7;MATHEMATICAL MONOSPACE DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; -1D7F8;MATHEMATICAL MONOSPACE DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; -1D7F9;MATHEMATICAL MONOSPACE DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; -1D7FA;MATHEMATICAL MONOSPACE DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; -1D7FB;MATHEMATICAL MONOSPACE DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; -1D7FC;MATHEMATICAL MONOSPACE DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; -1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; -1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; -1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; -1F000;MAHJONG TILE EAST WIND;So;0;ON;;;;;N;;;;; -1F001;MAHJONG TILE SOUTH WIND;So;0;ON;;;;;N;;;;; -1F002;MAHJONG TILE WEST WIND;So;0;ON;;;;;N;;;;; -1F003;MAHJONG TILE NORTH WIND;So;0;ON;;;;;N;;;;; -1F004;MAHJONG TILE RED DRAGON;So;0;ON;;;;;N;;;;; -1F005;MAHJONG TILE GREEN DRAGON;So;0;ON;;;;;N;;;;; -1F006;MAHJONG TILE WHITE DRAGON;So;0;ON;;;;;N;;;;; -1F007;MAHJONG TILE ONE OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F008;MAHJONG TILE TWO OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F009;MAHJONG TILE THREE OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F00A;MAHJONG TILE FOUR OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F00B;MAHJONG TILE FIVE OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F00C;MAHJONG TILE SIX OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F00D;MAHJONG TILE SEVEN OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F00E;MAHJONG TILE EIGHT OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F00F;MAHJONG TILE NINE OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F010;MAHJONG TILE ONE OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F011;MAHJONG TILE TWO OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F012;MAHJONG TILE THREE OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F013;MAHJONG TILE FOUR OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F014;MAHJONG TILE FIVE OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F015;MAHJONG TILE SIX OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F016;MAHJONG TILE SEVEN OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F017;MAHJONG TILE EIGHT OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F018;MAHJONG TILE NINE OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F019;MAHJONG TILE ONE OF CIRCLES;So;0;ON;;;;;N;;;;; -1F01A;MAHJONG TILE TWO OF CIRCLES;So;0;ON;;;;;N;;;;; -1F01B;MAHJONG TILE THREE OF CIRCLES;So;0;ON;;;;;N;;;;; -1F01C;MAHJONG TILE FOUR OF CIRCLES;So;0;ON;;;;;N;;;;; -1F01D;MAHJONG TILE FIVE OF CIRCLES;So;0;ON;;;;;N;;;;; -1F01E;MAHJONG TILE SIX OF CIRCLES;So;0;ON;;;;;N;;;;; -1F01F;MAHJONG TILE SEVEN OF CIRCLES;So;0;ON;;;;;N;;;;; -1F020;MAHJONG TILE EIGHT OF CIRCLES;So;0;ON;;;;;N;;;;; -1F021;MAHJONG TILE NINE OF CIRCLES;So;0;ON;;;;;N;;;;; -1F022;MAHJONG TILE PLUM;So;0;ON;;;;;N;;;;; -1F023;MAHJONG TILE ORCHID;So;0;ON;;;;;N;;;;; -1F024;MAHJONG TILE BAMBOO;So;0;ON;;;;;N;;;;; -1F025;MAHJONG TILE CHRYSANTHEMUM;So;0;ON;;;;;N;;;;; -1F026;MAHJONG TILE SPRING;So;0;ON;;;;;N;;;;; -1F027;MAHJONG TILE SUMMER;So;0;ON;;;;;N;;;;; -1F028;MAHJONG TILE AUTUMN;So;0;ON;;;;;N;;;;; -1F029;MAHJONG TILE WINTER;So;0;ON;;;;;N;;;;; -1F02A;MAHJONG TILE JOKER;So;0;ON;;;;;N;;;;; -1F02B;MAHJONG TILE BACK;So;0;ON;;;;;N;;;;; -1F030;DOMINO TILE HORIZONTAL BACK;So;0;ON;;;;;N;;;;; -1F031;DOMINO TILE HORIZONTAL-00-00;So;0;ON;;;;;N;;;;; -1F032;DOMINO TILE HORIZONTAL-00-01;So;0;ON;;;;;N;;;;; -1F033;DOMINO TILE HORIZONTAL-00-02;So;0;ON;;;;;N;;;;; -1F034;DOMINO TILE HORIZONTAL-00-03;So;0;ON;;;;;N;;;;; -1F035;DOMINO TILE HORIZONTAL-00-04;So;0;ON;;;;;N;;;;; -1F036;DOMINO TILE HORIZONTAL-00-05;So;0;ON;;;;;N;;;;; -1F037;DOMINO TILE HORIZONTAL-00-06;So;0;ON;;;;;N;;;;; -1F038;DOMINO TILE HORIZONTAL-01-00;So;0;ON;;;;;N;;;;; -1F039;DOMINO TILE HORIZONTAL-01-01;So;0;ON;;;;;N;;;;; -1F03A;DOMINO TILE HORIZONTAL-01-02;So;0;ON;;;;;N;;;;; -1F03B;DOMINO TILE HORIZONTAL-01-03;So;0;ON;;;;;N;;;;; -1F03C;DOMINO TILE HORIZONTAL-01-04;So;0;ON;;;;;N;;;;; -1F03D;DOMINO TILE HORIZONTAL-01-05;So;0;ON;;;;;N;;;;; -1F03E;DOMINO TILE HORIZONTAL-01-06;So;0;ON;;;;;N;;;;; -1F03F;DOMINO TILE HORIZONTAL-02-00;So;0;ON;;;;;N;;;;; -1F040;DOMINO TILE HORIZONTAL-02-01;So;0;ON;;;;;N;;;;; -1F041;DOMINO TILE HORIZONTAL-02-02;So;0;ON;;;;;N;;;;; -1F042;DOMINO TILE HORIZONTAL-02-03;So;0;ON;;;;;N;;;;; -1F043;DOMINO TILE HORIZONTAL-02-04;So;0;ON;;;;;N;;;;; -1F044;DOMINO TILE HORIZONTAL-02-05;So;0;ON;;;;;N;;;;; -1F045;DOMINO TILE HORIZONTAL-02-06;So;0;ON;;;;;N;;;;; -1F046;DOMINO TILE HORIZONTAL-03-00;So;0;ON;;;;;N;;;;; -1F047;DOMINO TILE HORIZONTAL-03-01;So;0;ON;;;;;N;;;;; -1F048;DOMINO TILE HORIZONTAL-03-02;So;0;ON;;;;;N;;;;; -1F049;DOMINO TILE HORIZONTAL-03-03;So;0;ON;;;;;N;;;;; -1F04A;DOMINO TILE HORIZONTAL-03-04;So;0;ON;;;;;N;;;;; -1F04B;DOMINO TILE HORIZONTAL-03-05;So;0;ON;;;;;N;;;;; -1F04C;DOMINO TILE HORIZONTAL-03-06;So;0;ON;;;;;N;;;;; -1F04D;DOMINO TILE HORIZONTAL-04-00;So;0;ON;;;;;N;;;;; -1F04E;DOMINO TILE HORIZONTAL-04-01;So;0;ON;;;;;N;;;;; -1F04F;DOMINO TILE HORIZONTAL-04-02;So;0;ON;;;;;N;;;;; -1F050;DOMINO TILE HORIZONTAL-04-03;So;0;ON;;;;;N;;;;; -1F051;DOMINO TILE HORIZONTAL-04-04;So;0;ON;;;;;N;;;;; -1F052;DOMINO TILE HORIZONTAL-04-05;So;0;ON;;;;;N;;;;; -1F053;DOMINO TILE HORIZONTAL-04-06;So;0;ON;;;;;N;;;;; -1F054;DOMINO TILE HORIZONTAL-05-00;So;0;ON;;;;;N;;;;; -1F055;DOMINO TILE HORIZONTAL-05-01;So;0;ON;;;;;N;;;;; -1F056;DOMINO TILE HORIZONTAL-05-02;So;0;ON;;;;;N;;;;; -1F057;DOMINO TILE HORIZONTAL-05-03;So;0;ON;;;;;N;;;;; -1F058;DOMINO TILE HORIZONTAL-05-04;So;0;ON;;;;;N;;;;; -1F059;DOMINO TILE HORIZONTAL-05-05;So;0;ON;;;;;N;;;;; -1F05A;DOMINO TILE HORIZONTAL-05-06;So;0;ON;;;;;N;;;;; -1F05B;DOMINO TILE HORIZONTAL-06-00;So;0;ON;;;;;N;;;;; -1F05C;DOMINO TILE HORIZONTAL-06-01;So;0;ON;;;;;N;;;;; -1F05D;DOMINO TILE HORIZONTAL-06-02;So;0;ON;;;;;N;;;;; -1F05E;DOMINO TILE HORIZONTAL-06-03;So;0;ON;;;;;N;;;;; -1F05F;DOMINO TILE HORIZONTAL-06-04;So;0;ON;;;;;N;;;;; -1F060;DOMINO TILE HORIZONTAL-06-05;So;0;ON;;;;;N;;;;; -1F061;DOMINO TILE HORIZONTAL-06-06;So;0;ON;;;;;N;;;;; -1F062;DOMINO TILE VERTICAL BACK;So;0;ON;;;;;N;;;;; -1F063;DOMINO TILE VERTICAL-00-00;So;0;ON;;;;;N;;;;; -1F064;DOMINO TILE VERTICAL-00-01;So;0;ON;;;;;N;;;;; -1F065;DOMINO TILE VERTICAL-00-02;So;0;ON;;;;;N;;;;; -1F066;DOMINO TILE VERTICAL-00-03;So;0;ON;;;;;N;;;;; -1F067;DOMINO TILE VERTICAL-00-04;So;0;ON;;;;;N;;;;; -1F068;DOMINO TILE VERTICAL-00-05;So;0;ON;;;;;N;;;;; -1F069;DOMINO TILE VERTICAL-00-06;So;0;ON;;;;;N;;;;; -1F06A;DOMINO TILE VERTICAL-01-00;So;0;ON;;;;;N;;;;; -1F06B;DOMINO TILE VERTICAL-01-01;So;0;ON;;;;;N;;;;; -1F06C;DOMINO TILE VERTICAL-01-02;So;0;ON;;;;;N;;;;; -1F06D;DOMINO TILE VERTICAL-01-03;So;0;ON;;;;;N;;;;; -1F06E;DOMINO TILE VERTICAL-01-04;So;0;ON;;;;;N;;;;; -1F06F;DOMINO TILE VERTICAL-01-05;So;0;ON;;;;;N;;;;; -1F070;DOMINO TILE VERTICAL-01-06;So;0;ON;;;;;N;;;;; -1F071;DOMINO TILE VERTICAL-02-00;So;0;ON;;;;;N;;;;; -1F072;DOMINO TILE VERTICAL-02-01;So;0;ON;;;;;N;;;;; -1F073;DOMINO TILE VERTICAL-02-02;So;0;ON;;;;;N;;;;; -1F074;DOMINO TILE VERTICAL-02-03;So;0;ON;;;;;N;;;;; -1F075;DOMINO TILE VERTICAL-02-04;So;0;ON;;;;;N;;;;; -1F076;DOMINO TILE VERTICAL-02-05;So;0;ON;;;;;N;;;;; -1F077;DOMINO TILE VERTICAL-02-06;So;0;ON;;;;;N;;;;; -1F078;DOMINO TILE VERTICAL-03-00;So;0;ON;;;;;N;;;;; -1F079;DOMINO TILE VERTICAL-03-01;So;0;ON;;;;;N;;;;; -1F07A;DOMINO TILE VERTICAL-03-02;So;0;ON;;;;;N;;;;; -1F07B;DOMINO TILE VERTICAL-03-03;So;0;ON;;;;;N;;;;; -1F07C;DOMINO TILE VERTICAL-03-04;So;0;ON;;;;;N;;;;; -1F07D;DOMINO TILE VERTICAL-03-05;So;0;ON;;;;;N;;;;; -1F07E;DOMINO TILE VERTICAL-03-06;So;0;ON;;;;;N;;;;; -1F07F;DOMINO TILE VERTICAL-04-00;So;0;ON;;;;;N;;;;; -1F080;DOMINO TILE VERTICAL-04-01;So;0;ON;;;;;N;;;;; -1F081;DOMINO TILE VERTICAL-04-02;So;0;ON;;;;;N;;;;; -1F082;DOMINO TILE VERTICAL-04-03;So;0;ON;;;;;N;;;;; -1F083;DOMINO TILE VERTICAL-04-04;So;0;ON;;;;;N;;;;; -1F084;DOMINO TILE VERTICAL-04-05;So;0;ON;;;;;N;;;;; -1F085;DOMINO TILE VERTICAL-04-06;So;0;ON;;;;;N;;;;; -1F086;DOMINO TILE VERTICAL-05-00;So;0;ON;;;;;N;;;;; -1F087;DOMINO TILE VERTICAL-05-01;So;0;ON;;;;;N;;;;; -1F088;DOMINO TILE VERTICAL-05-02;So;0;ON;;;;;N;;;;; -1F089;DOMINO TILE VERTICAL-05-03;So;0;ON;;;;;N;;;;; -1F08A;DOMINO TILE VERTICAL-05-04;So;0;ON;;;;;N;;;;; -1F08B;DOMINO TILE VERTICAL-05-05;So;0;ON;;;;;N;;;;; -1F08C;DOMINO TILE VERTICAL-05-06;So;0;ON;;;;;N;;;;; -1F08D;DOMINO TILE VERTICAL-06-00;So;0;ON;;;;;N;;;;; -1F08E;DOMINO TILE VERTICAL-06-01;So;0;ON;;;;;N;;;;; -1F08F;DOMINO TILE VERTICAL-06-02;So;0;ON;;;;;N;;;;; -1F090;DOMINO TILE VERTICAL-06-03;So;0;ON;;;;;N;;;;; -1F091;DOMINO TILE VERTICAL-06-04;So;0;ON;;;;;N;;;;; -1F092;DOMINO TILE VERTICAL-06-05;So;0;ON;;;;;N;;;;; -1F093;DOMINO TILE VERTICAL-06-06;So;0;ON;;;;;N;;;;; -20000;;Lo;0;L;;;;;N;;;;; -2A6D6;;Lo;0;L;;;;;N;;;;; -2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;; -2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;; -2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;; -2F803;CJK COMPATIBILITY IDEOGRAPH-2F803;Lo;0;L;20122;;;;N;;;;; -2F804;CJK COMPATIBILITY IDEOGRAPH-2F804;Lo;0;L;4F60;;;;N;;;;; -2F805;CJK COMPATIBILITY IDEOGRAPH-2F805;Lo;0;L;4FAE;;;;N;;;;; -2F806;CJK COMPATIBILITY IDEOGRAPH-2F806;Lo;0;L;4FBB;;;;N;;;;; -2F807;CJK COMPATIBILITY IDEOGRAPH-2F807;Lo;0;L;5002;;;;N;;;;; -2F808;CJK COMPATIBILITY IDEOGRAPH-2F808;Lo;0;L;507A;;;;N;;;;; -2F809;CJK COMPATIBILITY IDEOGRAPH-2F809;Lo;0;L;5099;;;;N;;;;; -2F80A;CJK COMPATIBILITY IDEOGRAPH-2F80A;Lo;0;L;50E7;;;;N;;;;; -2F80B;CJK COMPATIBILITY IDEOGRAPH-2F80B;Lo;0;L;50CF;;;;N;;;;; -2F80C;CJK COMPATIBILITY IDEOGRAPH-2F80C;Lo;0;L;349E;;;;N;;;;; -2F80D;CJK COMPATIBILITY IDEOGRAPH-2F80D;Lo;0;L;2063A;;;;N;;;;; -2F80E;CJK COMPATIBILITY IDEOGRAPH-2F80E;Lo;0;L;514D;;;;N;;;;; -2F80F;CJK COMPATIBILITY IDEOGRAPH-2F80F;Lo;0;L;5154;;;;N;;;;; -2F810;CJK COMPATIBILITY IDEOGRAPH-2F810;Lo;0;L;5164;;;;N;;;;; -2F811;CJK COMPATIBILITY IDEOGRAPH-2F811;Lo;0;L;5177;;;;N;;;;; -2F812;CJK COMPATIBILITY IDEOGRAPH-2F812;Lo;0;L;2051C;;;;N;;;;; -2F813;CJK COMPATIBILITY IDEOGRAPH-2F813;Lo;0;L;34B9;;;;N;;;;; -2F814;CJK COMPATIBILITY IDEOGRAPH-2F814;Lo;0;L;5167;;;;N;;;;; -2F815;CJK COMPATIBILITY IDEOGRAPH-2F815;Lo;0;L;518D;;;;N;;;;; -2F816;CJK COMPATIBILITY IDEOGRAPH-2F816;Lo;0;L;2054B;;;;N;;;;; -2F817;CJK COMPATIBILITY IDEOGRAPH-2F817;Lo;0;L;5197;;;;N;;;;; -2F818;CJK COMPATIBILITY IDEOGRAPH-2F818;Lo;0;L;51A4;;;;N;;;;; -2F819;CJK COMPATIBILITY IDEOGRAPH-2F819;Lo;0;L;4ECC;;;;N;;;;; -2F81A;CJK COMPATIBILITY IDEOGRAPH-2F81A;Lo;0;L;51AC;;;;N;;;;; -2F81B;CJK COMPATIBILITY IDEOGRAPH-2F81B;Lo;0;L;51B5;;;;N;;;;; -2F81C;CJK COMPATIBILITY IDEOGRAPH-2F81C;Lo;0;L;291DF;;;;N;;;;; -2F81D;CJK COMPATIBILITY IDEOGRAPH-2F81D;Lo;0;L;51F5;;;;N;;;;; -2F81E;CJK COMPATIBILITY IDEOGRAPH-2F81E;Lo;0;L;5203;;;;N;;;;; -2F81F;CJK COMPATIBILITY IDEOGRAPH-2F81F;Lo;0;L;34DF;;;;N;;;;; -2F820;CJK COMPATIBILITY IDEOGRAPH-2F820;Lo;0;L;523B;;;;N;;;;; -2F821;CJK COMPATIBILITY IDEOGRAPH-2F821;Lo;0;L;5246;;;;N;;;;; -2F822;CJK COMPATIBILITY IDEOGRAPH-2F822;Lo;0;L;5272;;;;N;;;;; -2F823;CJK COMPATIBILITY IDEOGRAPH-2F823;Lo;0;L;5277;;;;N;;;;; -2F824;CJK COMPATIBILITY IDEOGRAPH-2F824;Lo;0;L;3515;;;;N;;;;; -2F825;CJK COMPATIBILITY IDEOGRAPH-2F825;Lo;0;L;52C7;;;;N;;;;; -2F826;CJK COMPATIBILITY IDEOGRAPH-2F826;Lo;0;L;52C9;;;;N;;;;; -2F827;CJK COMPATIBILITY IDEOGRAPH-2F827;Lo;0;L;52E4;;;;N;;;;; -2F828;CJK COMPATIBILITY IDEOGRAPH-2F828;Lo;0;L;52FA;;;;N;;;;; -2F829;CJK COMPATIBILITY IDEOGRAPH-2F829;Lo;0;L;5305;;;;N;;;;; -2F82A;CJK COMPATIBILITY IDEOGRAPH-2F82A;Lo;0;L;5306;;;;N;;;;; -2F82B;CJK COMPATIBILITY IDEOGRAPH-2F82B;Lo;0;L;5317;;;;N;;;;; -2F82C;CJK COMPATIBILITY IDEOGRAPH-2F82C;Lo;0;L;5349;;;;N;;;;; -2F82D;CJK COMPATIBILITY IDEOGRAPH-2F82D;Lo;0;L;5351;;;;N;;;;; -2F82E;CJK COMPATIBILITY IDEOGRAPH-2F82E;Lo;0;L;535A;;;;N;;;;; -2F82F;CJK COMPATIBILITY IDEOGRAPH-2F82F;Lo;0;L;5373;;;;N;;;;; -2F830;CJK COMPATIBILITY IDEOGRAPH-2F830;Lo;0;L;537D;;;;N;;;;; -2F831;CJK COMPATIBILITY IDEOGRAPH-2F831;Lo;0;L;537F;;;;N;;;;; -2F832;CJK COMPATIBILITY IDEOGRAPH-2F832;Lo;0;L;537F;;;;N;;;;; -2F833;CJK COMPATIBILITY IDEOGRAPH-2F833;Lo;0;L;537F;;;;N;;;;; -2F834;CJK COMPATIBILITY IDEOGRAPH-2F834;Lo;0;L;20A2C;;;;N;;;;; -2F835;CJK COMPATIBILITY IDEOGRAPH-2F835;Lo;0;L;7070;;;;N;;;;; -2F836;CJK COMPATIBILITY IDEOGRAPH-2F836;Lo;0;L;53CA;;;;N;;;;; -2F837;CJK COMPATIBILITY IDEOGRAPH-2F837;Lo;0;L;53DF;;;;N;;;;; -2F838;CJK COMPATIBILITY IDEOGRAPH-2F838;Lo;0;L;20B63;;;;N;;;;; -2F839;CJK COMPATIBILITY IDEOGRAPH-2F839;Lo;0;L;53EB;;;;N;;;;; -2F83A;CJK COMPATIBILITY IDEOGRAPH-2F83A;Lo;0;L;53F1;;;;N;;;;; -2F83B;CJK COMPATIBILITY IDEOGRAPH-2F83B;Lo;0;L;5406;;;;N;;;;; -2F83C;CJK COMPATIBILITY IDEOGRAPH-2F83C;Lo;0;L;549E;;;;N;;;;; -2F83D;CJK COMPATIBILITY IDEOGRAPH-2F83D;Lo;0;L;5438;;;;N;;;;; -2F83E;CJK COMPATIBILITY IDEOGRAPH-2F83E;Lo;0;L;5448;;;;N;;;;; -2F83F;CJK COMPATIBILITY IDEOGRAPH-2F83F;Lo;0;L;5468;;;;N;;;;; -2F840;CJK COMPATIBILITY IDEOGRAPH-2F840;Lo;0;L;54A2;;;;N;;;;; -2F841;CJK COMPATIBILITY IDEOGRAPH-2F841;Lo;0;L;54F6;;;;N;;;;; -2F842;CJK COMPATIBILITY IDEOGRAPH-2F842;Lo;0;L;5510;;;;N;;;;; -2F843;CJK COMPATIBILITY IDEOGRAPH-2F843;Lo;0;L;5553;;;;N;;;;; -2F844;CJK COMPATIBILITY IDEOGRAPH-2F844;Lo;0;L;5563;;;;N;;;;; -2F845;CJK COMPATIBILITY IDEOGRAPH-2F845;Lo;0;L;5584;;;;N;;;;; -2F846;CJK COMPATIBILITY IDEOGRAPH-2F846;Lo;0;L;5584;;;;N;;;;; -2F847;CJK COMPATIBILITY IDEOGRAPH-2F847;Lo;0;L;5599;;;;N;;;;; -2F848;CJK COMPATIBILITY IDEOGRAPH-2F848;Lo;0;L;55AB;;;;N;;;;; -2F849;CJK COMPATIBILITY IDEOGRAPH-2F849;Lo;0;L;55B3;;;;N;;;;; -2F84A;CJK COMPATIBILITY IDEOGRAPH-2F84A;Lo;0;L;55C2;;;;N;;;;; -2F84B;CJK COMPATIBILITY IDEOGRAPH-2F84B;Lo;0;L;5716;;;;N;;;;; -2F84C;CJK COMPATIBILITY IDEOGRAPH-2F84C;Lo;0;L;5606;;;;N;;;;; -2F84D;CJK COMPATIBILITY IDEOGRAPH-2F84D;Lo;0;L;5717;;;;N;;;;; -2F84E;CJK COMPATIBILITY IDEOGRAPH-2F84E;Lo;0;L;5651;;;;N;;;;; -2F84F;CJK COMPATIBILITY IDEOGRAPH-2F84F;Lo;0;L;5674;;;;N;;;;; -2F850;CJK COMPATIBILITY IDEOGRAPH-2F850;Lo;0;L;5207;;;;N;;;;; -2F851;CJK COMPATIBILITY IDEOGRAPH-2F851;Lo;0;L;58EE;;;;N;;;;; -2F852;CJK COMPATIBILITY IDEOGRAPH-2F852;Lo;0;L;57CE;;;;N;;;;; -2F853;CJK COMPATIBILITY IDEOGRAPH-2F853;Lo;0;L;57F4;;;;N;;;;; -2F854;CJK COMPATIBILITY IDEOGRAPH-2F854;Lo;0;L;580D;;;;N;;;;; -2F855;CJK COMPATIBILITY IDEOGRAPH-2F855;Lo;0;L;578B;;;;N;;;;; -2F856;CJK COMPATIBILITY IDEOGRAPH-2F856;Lo;0;L;5832;;;;N;;;;; -2F857;CJK COMPATIBILITY IDEOGRAPH-2F857;Lo;0;L;5831;;;;N;;;;; -2F858;CJK COMPATIBILITY IDEOGRAPH-2F858;Lo;0;L;58AC;;;;N;;;;; -2F859;CJK COMPATIBILITY IDEOGRAPH-2F859;Lo;0;L;214E4;;;;N;;;;; -2F85A;CJK COMPATIBILITY IDEOGRAPH-2F85A;Lo;0;L;58F2;;;;N;;;;; -2F85B;CJK COMPATIBILITY IDEOGRAPH-2F85B;Lo;0;L;58F7;;;;N;;;;; -2F85C;CJK COMPATIBILITY IDEOGRAPH-2F85C;Lo;0;L;5906;;;;N;;;;; -2F85D;CJK COMPATIBILITY IDEOGRAPH-2F85D;Lo;0;L;591A;;;;N;;;;; -2F85E;CJK COMPATIBILITY IDEOGRAPH-2F85E;Lo;0;L;5922;;;;N;;;;; -2F85F;CJK COMPATIBILITY IDEOGRAPH-2F85F;Lo;0;L;5962;;;;N;;;;; -2F860;CJK COMPATIBILITY IDEOGRAPH-2F860;Lo;0;L;216A8;;;;N;;;;; -2F861;CJK COMPATIBILITY IDEOGRAPH-2F861;Lo;0;L;216EA;;;;N;;;;; -2F862;CJK COMPATIBILITY IDEOGRAPH-2F862;Lo;0;L;59EC;;;;N;;;;; -2F863;CJK COMPATIBILITY IDEOGRAPH-2F863;Lo;0;L;5A1B;;;;N;;;;; -2F864;CJK COMPATIBILITY IDEOGRAPH-2F864;Lo;0;L;5A27;;;;N;;;;; -2F865;CJK COMPATIBILITY IDEOGRAPH-2F865;Lo;0;L;59D8;;;;N;;;;; -2F866;CJK COMPATIBILITY IDEOGRAPH-2F866;Lo;0;L;5A66;;;;N;;;;; -2F867;CJK COMPATIBILITY IDEOGRAPH-2F867;Lo;0;L;36EE;;;;N;;;;; -2F868;CJK COMPATIBILITY IDEOGRAPH-2F868;Lo;0;L;36FC;;;;N;;;;; -2F869;CJK COMPATIBILITY IDEOGRAPH-2F869;Lo;0;L;5B08;;;;N;;;;; -2F86A;CJK COMPATIBILITY IDEOGRAPH-2F86A;Lo;0;L;5B3E;;;;N;;;;; -2F86B;CJK COMPATIBILITY IDEOGRAPH-2F86B;Lo;0;L;5B3E;;;;N;;;;; -2F86C;CJK COMPATIBILITY IDEOGRAPH-2F86C;Lo;0;L;219C8;;;;N;;;;; -2F86D;CJK COMPATIBILITY IDEOGRAPH-2F86D;Lo;0;L;5BC3;;;;N;;;;; -2F86E;CJK COMPATIBILITY IDEOGRAPH-2F86E;Lo;0;L;5BD8;;;;N;;;;; -2F86F;CJK COMPATIBILITY IDEOGRAPH-2F86F;Lo;0;L;5BE7;;;;N;;;;; -2F870;CJK COMPATIBILITY IDEOGRAPH-2F870;Lo;0;L;5BF3;;;;N;;;;; -2F871;CJK COMPATIBILITY IDEOGRAPH-2F871;Lo;0;L;21B18;;;;N;;;;; -2F872;CJK COMPATIBILITY IDEOGRAPH-2F872;Lo;0;L;5BFF;;;;N;;;;; -2F873;CJK COMPATIBILITY IDEOGRAPH-2F873;Lo;0;L;5C06;;;;N;;;;; -2F874;CJK COMPATIBILITY IDEOGRAPH-2F874;Lo;0;L;5F53;;;;N;;;;; -2F875;CJK COMPATIBILITY IDEOGRAPH-2F875;Lo;0;L;5C22;;;;N;;;;; -2F876;CJK COMPATIBILITY IDEOGRAPH-2F876;Lo;0;L;3781;;;;N;;;;; -2F877;CJK COMPATIBILITY IDEOGRAPH-2F877;Lo;0;L;5C60;;;;N;;;;; -2F878;CJK COMPATIBILITY IDEOGRAPH-2F878;Lo;0;L;5C6E;;;;N;;;;; -2F879;CJK COMPATIBILITY IDEOGRAPH-2F879;Lo;0;L;5CC0;;;;N;;;;; -2F87A;CJK COMPATIBILITY IDEOGRAPH-2F87A;Lo;0;L;5C8D;;;;N;;;;; -2F87B;CJK COMPATIBILITY IDEOGRAPH-2F87B;Lo;0;L;21DE4;;;;N;;;;; -2F87C;CJK COMPATIBILITY IDEOGRAPH-2F87C;Lo;0;L;5D43;;;;N;;;;; -2F87D;CJK COMPATIBILITY IDEOGRAPH-2F87D;Lo;0;L;21DE6;;;;N;;;;; -2F87E;CJK COMPATIBILITY IDEOGRAPH-2F87E;Lo;0;L;5D6E;;;;N;;;;; -2F87F;CJK COMPATIBILITY IDEOGRAPH-2F87F;Lo;0;L;5D6B;;;;N;;;;; -2F880;CJK COMPATIBILITY IDEOGRAPH-2F880;Lo;0;L;5D7C;;;;N;;;;; -2F881;CJK COMPATIBILITY IDEOGRAPH-2F881;Lo;0;L;5DE1;;;;N;;;;; -2F882;CJK COMPATIBILITY IDEOGRAPH-2F882;Lo;0;L;5DE2;;;;N;;;;; -2F883;CJK COMPATIBILITY IDEOGRAPH-2F883;Lo;0;L;382F;;;;N;;;;; -2F884;CJK COMPATIBILITY IDEOGRAPH-2F884;Lo;0;L;5DFD;;;;N;;;;; -2F885;CJK COMPATIBILITY IDEOGRAPH-2F885;Lo;0;L;5E28;;;;N;;;;; -2F886;CJK COMPATIBILITY IDEOGRAPH-2F886;Lo;0;L;5E3D;;;;N;;;;; -2F887;CJK COMPATIBILITY IDEOGRAPH-2F887;Lo;0;L;5E69;;;;N;;;;; -2F888;CJK COMPATIBILITY IDEOGRAPH-2F888;Lo;0;L;3862;;;;N;;;;; -2F889;CJK COMPATIBILITY IDEOGRAPH-2F889;Lo;0;L;22183;;;;N;;;;; -2F88A;CJK COMPATIBILITY IDEOGRAPH-2F88A;Lo;0;L;387C;;;;N;;;;; -2F88B;CJK COMPATIBILITY IDEOGRAPH-2F88B;Lo;0;L;5EB0;;;;N;;;;; -2F88C;CJK COMPATIBILITY IDEOGRAPH-2F88C;Lo;0;L;5EB3;;;;N;;;;; -2F88D;CJK COMPATIBILITY IDEOGRAPH-2F88D;Lo;0;L;5EB6;;;;N;;;;; -2F88E;CJK COMPATIBILITY IDEOGRAPH-2F88E;Lo;0;L;5ECA;;;;N;;;;; -2F88F;CJK COMPATIBILITY IDEOGRAPH-2F88F;Lo;0;L;2A392;;;;N;;;;; -2F890;CJK COMPATIBILITY IDEOGRAPH-2F890;Lo;0;L;5EFE;;;9;N;;;;; -2F891;CJK COMPATIBILITY IDEOGRAPH-2F891;Lo;0;L;22331;;;;N;;;;; -2F892;CJK COMPATIBILITY IDEOGRAPH-2F892;Lo;0;L;22331;;;;N;;;;; -2F893;CJK COMPATIBILITY IDEOGRAPH-2F893;Lo;0;L;8201;;;;N;;;;; -2F894;CJK COMPATIBILITY IDEOGRAPH-2F894;Lo;0;L;5F22;;;;N;;;;; -2F895;CJK COMPATIBILITY IDEOGRAPH-2F895;Lo;0;L;5F22;;;;N;;;;; -2F896;CJK COMPATIBILITY IDEOGRAPH-2F896;Lo;0;L;38C7;;;;N;;;;; -2F897;CJK COMPATIBILITY IDEOGRAPH-2F897;Lo;0;L;232B8;;;;N;;;;; -2F898;CJK COMPATIBILITY IDEOGRAPH-2F898;Lo;0;L;261DA;;;;N;;;;; -2F899;CJK COMPATIBILITY IDEOGRAPH-2F899;Lo;0;L;5F62;;;;N;;;;; -2F89A;CJK COMPATIBILITY IDEOGRAPH-2F89A;Lo;0;L;5F6B;;;;N;;;;; -2F89B;CJK COMPATIBILITY IDEOGRAPH-2F89B;Lo;0;L;38E3;;;;N;;;;; -2F89C;CJK COMPATIBILITY IDEOGRAPH-2F89C;Lo;0;L;5F9A;;;;N;;;;; -2F89D;CJK COMPATIBILITY IDEOGRAPH-2F89D;Lo;0;L;5FCD;;;;N;;;;; -2F89E;CJK COMPATIBILITY IDEOGRAPH-2F89E;Lo;0;L;5FD7;;;;N;;;;; -2F89F;CJK COMPATIBILITY IDEOGRAPH-2F89F;Lo;0;L;5FF9;;;;N;;;;; -2F8A0;CJK COMPATIBILITY IDEOGRAPH-2F8A0;Lo;0;L;6081;;;;N;;;;; -2F8A1;CJK COMPATIBILITY IDEOGRAPH-2F8A1;Lo;0;L;393A;;;;N;;;;; -2F8A2;CJK COMPATIBILITY IDEOGRAPH-2F8A2;Lo;0;L;391C;;;;N;;;;; -2F8A3;CJK COMPATIBILITY IDEOGRAPH-2F8A3;Lo;0;L;6094;;;;N;;;;; -2F8A4;CJK COMPATIBILITY IDEOGRAPH-2F8A4;Lo;0;L;226D4;;;;N;;;;; -2F8A5;CJK COMPATIBILITY IDEOGRAPH-2F8A5;Lo;0;L;60C7;;;;N;;;;; -2F8A6;CJK COMPATIBILITY IDEOGRAPH-2F8A6;Lo;0;L;6148;;;;N;;;;; -2F8A7;CJK COMPATIBILITY IDEOGRAPH-2F8A7;Lo;0;L;614C;;;;N;;;;; -2F8A8;CJK COMPATIBILITY IDEOGRAPH-2F8A8;Lo;0;L;614E;;;;N;;;;; -2F8A9;CJK COMPATIBILITY IDEOGRAPH-2F8A9;Lo;0;L;614C;;;;N;;;;; -2F8AA;CJK COMPATIBILITY IDEOGRAPH-2F8AA;Lo;0;L;617A;;;;N;;;;; -2F8AB;CJK COMPATIBILITY IDEOGRAPH-2F8AB;Lo;0;L;618E;;;;N;;;;; -2F8AC;CJK COMPATIBILITY IDEOGRAPH-2F8AC;Lo;0;L;61B2;;;;N;;;;; -2F8AD;CJK COMPATIBILITY IDEOGRAPH-2F8AD;Lo;0;L;61A4;;;;N;;;;; -2F8AE;CJK COMPATIBILITY IDEOGRAPH-2F8AE;Lo;0;L;61AF;;;;N;;;;; -2F8AF;CJK COMPATIBILITY IDEOGRAPH-2F8AF;Lo;0;L;61DE;;;;N;;;;; -2F8B0;CJK COMPATIBILITY IDEOGRAPH-2F8B0;Lo;0;L;61F2;;;;N;;;;; -2F8B1;CJK COMPATIBILITY IDEOGRAPH-2F8B1;Lo;0;L;61F6;;;;N;;;;; -2F8B2;CJK COMPATIBILITY IDEOGRAPH-2F8B2;Lo;0;L;6210;;;;N;;;;; -2F8B3;CJK COMPATIBILITY IDEOGRAPH-2F8B3;Lo;0;L;621B;;;;N;;;;; -2F8B4;CJK COMPATIBILITY IDEOGRAPH-2F8B4;Lo;0;L;625D;;;;N;;;;; -2F8B5;CJK COMPATIBILITY IDEOGRAPH-2F8B5;Lo;0;L;62B1;;;;N;;;;; -2F8B6;CJK COMPATIBILITY IDEOGRAPH-2F8B6;Lo;0;L;62D4;;;;N;;;;; -2F8B7;CJK COMPATIBILITY IDEOGRAPH-2F8B7;Lo;0;L;6350;;;;N;;;;; -2F8B8;CJK COMPATIBILITY IDEOGRAPH-2F8B8;Lo;0;L;22B0C;;;;N;;;;; -2F8B9;CJK COMPATIBILITY IDEOGRAPH-2F8B9;Lo;0;L;633D;;;;N;;;;; -2F8BA;CJK COMPATIBILITY IDEOGRAPH-2F8BA;Lo;0;L;62FC;;;;N;;;;; -2F8BB;CJK COMPATIBILITY IDEOGRAPH-2F8BB;Lo;0;L;6368;;;;N;;;;; -2F8BC;CJK COMPATIBILITY IDEOGRAPH-2F8BC;Lo;0;L;6383;;;;N;;;;; -2F8BD;CJK COMPATIBILITY IDEOGRAPH-2F8BD;Lo;0;L;63E4;;;;N;;;;; -2F8BE;CJK COMPATIBILITY IDEOGRAPH-2F8BE;Lo;0;L;22BF1;;;;N;;;;; -2F8BF;CJK COMPATIBILITY IDEOGRAPH-2F8BF;Lo;0;L;6422;;;;N;;;;; -2F8C0;CJK COMPATIBILITY IDEOGRAPH-2F8C0;Lo;0;L;63C5;;;;N;;;;; -2F8C1;CJK COMPATIBILITY IDEOGRAPH-2F8C1;Lo;0;L;63A9;;;;N;;;;; -2F8C2;CJK COMPATIBILITY IDEOGRAPH-2F8C2;Lo;0;L;3A2E;;;;N;;;;; -2F8C3;CJK COMPATIBILITY IDEOGRAPH-2F8C3;Lo;0;L;6469;;;;N;;;;; -2F8C4;CJK COMPATIBILITY IDEOGRAPH-2F8C4;Lo;0;L;647E;;;;N;;;;; -2F8C5;CJK COMPATIBILITY IDEOGRAPH-2F8C5;Lo;0;L;649D;;;;N;;;;; -2F8C6;CJK COMPATIBILITY IDEOGRAPH-2F8C6;Lo;0;L;6477;;;;N;;;;; -2F8C7;CJK COMPATIBILITY IDEOGRAPH-2F8C7;Lo;0;L;3A6C;;;;N;;;;; -2F8C8;CJK COMPATIBILITY IDEOGRAPH-2F8C8;Lo;0;L;654F;;;;N;;;;; -2F8C9;CJK COMPATIBILITY IDEOGRAPH-2F8C9;Lo;0;L;656C;;;;N;;;;; -2F8CA;CJK COMPATIBILITY IDEOGRAPH-2F8CA;Lo;0;L;2300A;;;;N;;;;; -2F8CB;CJK COMPATIBILITY IDEOGRAPH-2F8CB;Lo;0;L;65E3;;;;N;;;;; -2F8CC;CJK COMPATIBILITY IDEOGRAPH-2F8CC;Lo;0;L;66F8;;;;N;;;;; -2F8CD;CJK COMPATIBILITY IDEOGRAPH-2F8CD;Lo;0;L;6649;;;;N;;;;; -2F8CE;CJK COMPATIBILITY IDEOGRAPH-2F8CE;Lo;0;L;3B19;;;;N;;;;; -2F8CF;CJK COMPATIBILITY IDEOGRAPH-2F8CF;Lo;0;L;6691;;;;N;;;;; -2F8D0;CJK COMPATIBILITY IDEOGRAPH-2F8D0;Lo;0;L;3B08;;;;N;;;;; -2F8D1;CJK COMPATIBILITY IDEOGRAPH-2F8D1;Lo;0;L;3AE4;;;;N;;;;; -2F8D2;CJK COMPATIBILITY IDEOGRAPH-2F8D2;Lo;0;L;5192;;;;N;;;;; -2F8D3;CJK COMPATIBILITY IDEOGRAPH-2F8D3;Lo;0;L;5195;;;;N;;;;; -2F8D4;CJK COMPATIBILITY IDEOGRAPH-2F8D4;Lo;0;L;6700;;;;N;;;;; -2F8D5;CJK COMPATIBILITY IDEOGRAPH-2F8D5;Lo;0;L;669C;;;;N;;;;; -2F8D6;CJK COMPATIBILITY IDEOGRAPH-2F8D6;Lo;0;L;80AD;;;;N;;;;; -2F8D7;CJK COMPATIBILITY IDEOGRAPH-2F8D7;Lo;0;L;43D9;;;;N;;;;; -2F8D8;CJK COMPATIBILITY IDEOGRAPH-2F8D8;Lo;0;L;6717;;;;N;;;;; -2F8D9;CJK COMPATIBILITY IDEOGRAPH-2F8D9;Lo;0;L;671B;;;;N;;;;; -2F8DA;CJK COMPATIBILITY IDEOGRAPH-2F8DA;Lo;0;L;6721;;;;N;;;;; -2F8DB;CJK COMPATIBILITY IDEOGRAPH-2F8DB;Lo;0;L;675E;;;;N;;;;; -2F8DC;CJK COMPATIBILITY IDEOGRAPH-2F8DC;Lo;0;L;6753;;;;N;;;;; -2F8DD;CJK COMPATIBILITY IDEOGRAPH-2F8DD;Lo;0;L;233C3;;;;N;;;;; -2F8DE;CJK COMPATIBILITY IDEOGRAPH-2F8DE;Lo;0;L;3B49;;;;N;;;;; -2F8DF;CJK COMPATIBILITY IDEOGRAPH-2F8DF;Lo;0;L;67FA;;;;N;;;;; -2F8E0;CJK COMPATIBILITY IDEOGRAPH-2F8E0;Lo;0;L;6785;;;;N;;;;; -2F8E1;CJK COMPATIBILITY IDEOGRAPH-2F8E1;Lo;0;L;6852;;;;N;;;;; -2F8E2;CJK COMPATIBILITY IDEOGRAPH-2F8E2;Lo;0;L;6885;;;;N;;;;; -2F8E3;CJK COMPATIBILITY IDEOGRAPH-2F8E3;Lo;0;L;2346D;;;;N;;;;; -2F8E4;CJK COMPATIBILITY IDEOGRAPH-2F8E4;Lo;0;L;688E;;;;N;;;;; -2F8E5;CJK COMPATIBILITY IDEOGRAPH-2F8E5;Lo;0;L;681F;;;;N;;;;; -2F8E6;CJK COMPATIBILITY IDEOGRAPH-2F8E6;Lo;0;L;6914;;;;N;;;;; -2F8E7;CJK COMPATIBILITY IDEOGRAPH-2F8E7;Lo;0;L;3B9D;;;;N;;;;; -2F8E8;CJK COMPATIBILITY IDEOGRAPH-2F8E8;Lo;0;L;6942;;;;N;;;;; -2F8E9;CJK COMPATIBILITY IDEOGRAPH-2F8E9;Lo;0;L;69A3;;;;N;;;;; -2F8EA;CJK COMPATIBILITY IDEOGRAPH-2F8EA;Lo;0;L;69EA;;;;N;;;;; -2F8EB;CJK COMPATIBILITY IDEOGRAPH-2F8EB;Lo;0;L;6AA8;;;;N;;;;; -2F8EC;CJK COMPATIBILITY IDEOGRAPH-2F8EC;Lo;0;L;236A3;;;;N;;;;; -2F8ED;CJK COMPATIBILITY IDEOGRAPH-2F8ED;Lo;0;L;6ADB;;;;N;;;;; -2F8EE;CJK COMPATIBILITY IDEOGRAPH-2F8EE;Lo;0;L;3C18;;;;N;;;;; -2F8EF;CJK COMPATIBILITY IDEOGRAPH-2F8EF;Lo;0;L;6B21;;;;N;;;;; -2F8F0;CJK COMPATIBILITY IDEOGRAPH-2F8F0;Lo;0;L;238A7;;;;N;;;;; -2F8F1;CJK COMPATIBILITY IDEOGRAPH-2F8F1;Lo;0;L;6B54;;;;N;;;;; -2F8F2;CJK COMPATIBILITY IDEOGRAPH-2F8F2;Lo;0;L;3C4E;;;;N;;;;; -2F8F3;CJK COMPATIBILITY IDEOGRAPH-2F8F3;Lo;0;L;6B72;;;;N;;;;; -2F8F4;CJK COMPATIBILITY IDEOGRAPH-2F8F4;Lo;0;L;6B9F;;;;N;;;;; -2F8F5;CJK COMPATIBILITY IDEOGRAPH-2F8F5;Lo;0;L;6BBA;;;;N;;;;; -2F8F6;CJK COMPATIBILITY IDEOGRAPH-2F8F6;Lo;0;L;6BBB;;;;N;;;;; -2F8F7;CJK COMPATIBILITY IDEOGRAPH-2F8F7;Lo;0;L;23A8D;;;;N;;;;; -2F8F8;CJK COMPATIBILITY IDEOGRAPH-2F8F8;Lo;0;L;21D0B;;;;N;;;;; -2F8F9;CJK COMPATIBILITY IDEOGRAPH-2F8F9;Lo;0;L;23AFA;;;;N;;;;; -2F8FA;CJK COMPATIBILITY IDEOGRAPH-2F8FA;Lo;0;L;6C4E;;;;N;;;;; -2F8FB;CJK COMPATIBILITY IDEOGRAPH-2F8FB;Lo;0;L;23CBC;;;;N;;;;; -2F8FC;CJK COMPATIBILITY IDEOGRAPH-2F8FC;Lo;0;L;6CBF;;;;N;;;;; -2F8FD;CJK COMPATIBILITY IDEOGRAPH-2F8FD;Lo;0;L;6CCD;;;;N;;;;; -2F8FE;CJK COMPATIBILITY IDEOGRAPH-2F8FE;Lo;0;L;6C67;;;;N;;;;; -2F8FF;CJK COMPATIBILITY IDEOGRAPH-2F8FF;Lo;0;L;6D16;;;;N;;;;; -2F900;CJK COMPATIBILITY IDEOGRAPH-2F900;Lo;0;L;6D3E;;;;N;;;;; -2F901;CJK COMPATIBILITY IDEOGRAPH-2F901;Lo;0;L;6D77;;;;N;;;;; -2F902;CJK COMPATIBILITY IDEOGRAPH-2F902;Lo;0;L;6D41;;;;N;;;;; -2F903;CJK COMPATIBILITY IDEOGRAPH-2F903;Lo;0;L;6D69;;;;N;;;;; -2F904;CJK COMPATIBILITY IDEOGRAPH-2F904;Lo;0;L;6D78;;;;N;;;;; -2F905;CJK COMPATIBILITY IDEOGRAPH-2F905;Lo;0;L;6D85;;;;N;;;;; -2F906;CJK COMPATIBILITY IDEOGRAPH-2F906;Lo;0;L;23D1E;;;;N;;;;; -2F907;CJK COMPATIBILITY IDEOGRAPH-2F907;Lo;0;L;6D34;;;;N;;;;; -2F908;CJK COMPATIBILITY IDEOGRAPH-2F908;Lo;0;L;6E2F;;;;N;;;;; -2F909;CJK COMPATIBILITY IDEOGRAPH-2F909;Lo;0;L;6E6E;;;;N;;;;; -2F90A;CJK COMPATIBILITY IDEOGRAPH-2F90A;Lo;0;L;3D33;;;;N;;;;; -2F90B;CJK COMPATIBILITY IDEOGRAPH-2F90B;Lo;0;L;6ECB;;;;N;;;;; -2F90C;CJK COMPATIBILITY IDEOGRAPH-2F90C;Lo;0;L;6EC7;;;;N;;;;; -2F90D;CJK COMPATIBILITY IDEOGRAPH-2F90D;Lo;0;L;23ED1;;;;N;;;;; -2F90E;CJK COMPATIBILITY IDEOGRAPH-2F90E;Lo;0;L;6DF9;;;;N;;;;; -2F90F;CJK COMPATIBILITY IDEOGRAPH-2F90F;Lo;0;L;6F6E;;;;N;;;;; -2F910;CJK COMPATIBILITY IDEOGRAPH-2F910;Lo;0;L;23F5E;;;;N;;;;; -2F911;CJK COMPATIBILITY IDEOGRAPH-2F911;Lo;0;L;23F8E;;;;N;;;;; -2F912;CJK COMPATIBILITY IDEOGRAPH-2F912;Lo;0;L;6FC6;;;;N;;;;; -2F913;CJK COMPATIBILITY IDEOGRAPH-2F913;Lo;0;L;7039;;;;N;;;;; -2F914;CJK COMPATIBILITY IDEOGRAPH-2F914;Lo;0;L;701E;;;;N;;;;; -2F915;CJK COMPATIBILITY IDEOGRAPH-2F915;Lo;0;L;701B;;;;N;;;;; -2F916;CJK COMPATIBILITY IDEOGRAPH-2F916;Lo;0;L;3D96;;;;N;;;;; -2F917;CJK COMPATIBILITY IDEOGRAPH-2F917;Lo;0;L;704A;;;;N;;;;; -2F918;CJK COMPATIBILITY IDEOGRAPH-2F918;Lo;0;L;707D;;;;N;;;;; -2F919;CJK COMPATIBILITY IDEOGRAPH-2F919;Lo;0;L;7077;;;;N;;;;; -2F91A;CJK COMPATIBILITY IDEOGRAPH-2F91A;Lo;0;L;70AD;;;;N;;;;; -2F91B;CJK COMPATIBILITY IDEOGRAPH-2F91B;Lo;0;L;20525;;;;N;;;;; -2F91C;CJK COMPATIBILITY IDEOGRAPH-2F91C;Lo;0;L;7145;;;;N;;;;; -2F91D;CJK COMPATIBILITY IDEOGRAPH-2F91D;Lo;0;L;24263;;;;N;;;;; -2F91E;CJK COMPATIBILITY IDEOGRAPH-2F91E;Lo;0;L;719C;;;;N;;;;; -2F91F;CJK COMPATIBILITY IDEOGRAPH-2F91F;Lo;0;L;243AB;;;;N;;;;; -2F920;CJK COMPATIBILITY IDEOGRAPH-2F920;Lo;0;L;7228;;;;N;;;;; -2F921;CJK COMPATIBILITY IDEOGRAPH-2F921;Lo;0;L;7235;;;;N;;;;; -2F922;CJK COMPATIBILITY IDEOGRAPH-2F922;Lo;0;L;7250;;;;N;;;;; -2F923;CJK COMPATIBILITY IDEOGRAPH-2F923;Lo;0;L;24608;;;;N;;;;; -2F924;CJK COMPATIBILITY IDEOGRAPH-2F924;Lo;0;L;7280;;;;N;;;;; -2F925;CJK COMPATIBILITY IDEOGRAPH-2F925;Lo;0;L;7295;;;;N;;;;; -2F926;CJK COMPATIBILITY IDEOGRAPH-2F926;Lo;0;L;24735;;;;N;;;;; -2F927;CJK COMPATIBILITY IDEOGRAPH-2F927;Lo;0;L;24814;;;;N;;;;; -2F928;CJK COMPATIBILITY IDEOGRAPH-2F928;Lo;0;L;737A;;;;N;;;;; -2F929;CJK COMPATIBILITY IDEOGRAPH-2F929;Lo;0;L;738B;;;;N;;;;; -2F92A;CJK COMPATIBILITY IDEOGRAPH-2F92A;Lo;0;L;3EAC;;;;N;;;;; -2F92B;CJK COMPATIBILITY IDEOGRAPH-2F92B;Lo;0;L;73A5;;;;N;;;;; -2F92C;CJK COMPATIBILITY IDEOGRAPH-2F92C;Lo;0;L;3EB8;;;;N;;;;; -2F92D;CJK COMPATIBILITY IDEOGRAPH-2F92D;Lo;0;L;3EB8;;;;N;;;;; -2F92E;CJK COMPATIBILITY IDEOGRAPH-2F92E;Lo;0;L;7447;;;;N;;;;; -2F92F;CJK COMPATIBILITY IDEOGRAPH-2F92F;Lo;0;L;745C;;;;N;;;;; -2F930;CJK COMPATIBILITY IDEOGRAPH-2F930;Lo;0;L;7471;;;;N;;;;; -2F931;CJK COMPATIBILITY IDEOGRAPH-2F931;Lo;0;L;7485;;;;N;;;;; -2F932;CJK COMPATIBILITY IDEOGRAPH-2F932;Lo;0;L;74CA;;;;N;;;;; -2F933;CJK COMPATIBILITY IDEOGRAPH-2F933;Lo;0;L;3F1B;;;;N;;;;; -2F934;CJK COMPATIBILITY IDEOGRAPH-2F934;Lo;0;L;7524;;;;N;;;;; -2F935;CJK COMPATIBILITY IDEOGRAPH-2F935;Lo;0;L;24C36;;;;N;;;;; -2F936;CJK COMPATIBILITY IDEOGRAPH-2F936;Lo;0;L;753E;;;;N;;;;; -2F937;CJK COMPATIBILITY IDEOGRAPH-2F937;Lo;0;L;24C92;;;;N;;;;; -2F938;CJK COMPATIBILITY IDEOGRAPH-2F938;Lo;0;L;7570;;;;N;;;;; -2F939;CJK COMPATIBILITY IDEOGRAPH-2F939;Lo;0;L;2219F;;;;N;;;;; -2F93A;CJK COMPATIBILITY IDEOGRAPH-2F93A;Lo;0;L;7610;;;;N;;;;; -2F93B;CJK COMPATIBILITY IDEOGRAPH-2F93B;Lo;0;L;24FA1;;;;N;;;;; -2F93C;CJK COMPATIBILITY IDEOGRAPH-2F93C;Lo;0;L;24FB8;;;;N;;;;; -2F93D;CJK COMPATIBILITY IDEOGRAPH-2F93D;Lo;0;L;25044;;;;N;;;;; -2F93E;CJK COMPATIBILITY IDEOGRAPH-2F93E;Lo;0;L;3FFC;;;;N;;;;; -2F93F;CJK COMPATIBILITY IDEOGRAPH-2F93F;Lo;0;L;4008;;;;N;;;;; -2F940;CJK COMPATIBILITY IDEOGRAPH-2F940;Lo;0;L;76F4;;;;N;;;;; -2F941;CJK COMPATIBILITY IDEOGRAPH-2F941;Lo;0;L;250F3;;;;N;;;;; -2F942;CJK COMPATIBILITY IDEOGRAPH-2F942;Lo;0;L;250F2;;;;N;;;;; -2F943;CJK COMPATIBILITY IDEOGRAPH-2F943;Lo;0;L;25119;;;;N;;;;; -2F944;CJK COMPATIBILITY IDEOGRAPH-2F944;Lo;0;L;25133;;;;N;;;;; -2F945;CJK COMPATIBILITY IDEOGRAPH-2F945;Lo;0;L;771E;;;;N;;;;; -2F946;CJK COMPATIBILITY IDEOGRAPH-2F946;Lo;0;L;771F;;;;N;;;;; -2F947;CJK COMPATIBILITY IDEOGRAPH-2F947;Lo;0;L;771F;;;;N;;;;; -2F948;CJK COMPATIBILITY IDEOGRAPH-2F948;Lo;0;L;774A;;;;N;;;;; -2F949;CJK COMPATIBILITY IDEOGRAPH-2F949;Lo;0;L;4039;;;;N;;;;; -2F94A;CJK COMPATIBILITY IDEOGRAPH-2F94A;Lo;0;L;778B;;;;N;;;;; -2F94B;CJK COMPATIBILITY IDEOGRAPH-2F94B;Lo;0;L;4046;;;;N;;;;; -2F94C;CJK COMPATIBILITY IDEOGRAPH-2F94C;Lo;0;L;4096;;;;N;;;;; -2F94D;CJK COMPATIBILITY IDEOGRAPH-2F94D;Lo;0;L;2541D;;;;N;;;;; -2F94E;CJK COMPATIBILITY IDEOGRAPH-2F94E;Lo;0;L;784E;;;;N;;;;; -2F94F;CJK COMPATIBILITY IDEOGRAPH-2F94F;Lo;0;L;788C;;;;N;;;;; -2F950;CJK COMPATIBILITY IDEOGRAPH-2F950;Lo;0;L;78CC;;;;N;;;;; -2F951;CJK COMPATIBILITY IDEOGRAPH-2F951;Lo;0;L;40E3;;;;N;;;;; -2F952;CJK COMPATIBILITY IDEOGRAPH-2F952;Lo;0;L;25626;;;;N;;;;; -2F953;CJK COMPATIBILITY IDEOGRAPH-2F953;Lo;0;L;7956;;;;N;;;;; -2F954;CJK COMPATIBILITY IDEOGRAPH-2F954;Lo;0;L;2569A;;;;N;;;;; -2F955;CJK COMPATIBILITY IDEOGRAPH-2F955;Lo;0;L;256C5;;;;N;;;;; -2F956;CJK COMPATIBILITY IDEOGRAPH-2F956;Lo;0;L;798F;;;;N;;;;; -2F957;CJK COMPATIBILITY IDEOGRAPH-2F957;Lo;0;L;79EB;;;;N;;;;; -2F958;CJK COMPATIBILITY IDEOGRAPH-2F958;Lo;0;L;412F;;;;N;;;;; -2F959;CJK COMPATIBILITY IDEOGRAPH-2F959;Lo;0;L;7A40;;;;N;;;;; -2F95A;CJK COMPATIBILITY IDEOGRAPH-2F95A;Lo;0;L;7A4A;;;;N;;;;; -2F95B;CJK COMPATIBILITY IDEOGRAPH-2F95B;Lo;0;L;7A4F;;;;N;;;;; -2F95C;CJK COMPATIBILITY IDEOGRAPH-2F95C;Lo;0;L;2597C;;;;N;;;;; -2F95D;CJK COMPATIBILITY IDEOGRAPH-2F95D;Lo;0;L;25AA7;;;;N;;;;; -2F95E;CJK COMPATIBILITY IDEOGRAPH-2F95E;Lo;0;L;25AA7;;;;N;;;;; -2F95F;CJK COMPATIBILITY IDEOGRAPH-2F95F;Lo;0;L;7AEE;;;;N;;;;; -2F960;CJK COMPATIBILITY IDEOGRAPH-2F960;Lo;0;L;4202;;;;N;;;;; -2F961;CJK COMPATIBILITY IDEOGRAPH-2F961;Lo;0;L;25BAB;;;;N;;;;; -2F962;CJK COMPATIBILITY IDEOGRAPH-2F962;Lo;0;L;7BC6;;;;N;;;;; -2F963;CJK COMPATIBILITY IDEOGRAPH-2F963;Lo;0;L;7BC9;;;;N;;;;; -2F964;CJK COMPATIBILITY IDEOGRAPH-2F964;Lo;0;L;4227;;;;N;;;;; -2F965;CJK COMPATIBILITY IDEOGRAPH-2F965;Lo;0;L;25C80;;;;N;;;;; -2F966;CJK COMPATIBILITY IDEOGRAPH-2F966;Lo;0;L;7CD2;;;;N;;;;; -2F967;CJK COMPATIBILITY IDEOGRAPH-2F967;Lo;0;L;42A0;;;;N;;;;; -2F968;CJK COMPATIBILITY IDEOGRAPH-2F968;Lo;0;L;7CE8;;;;N;;;;; -2F969;CJK COMPATIBILITY IDEOGRAPH-2F969;Lo;0;L;7CE3;;;;N;;;;; -2F96A;CJK COMPATIBILITY IDEOGRAPH-2F96A;Lo;0;L;7D00;;;;N;;;;; -2F96B;CJK COMPATIBILITY IDEOGRAPH-2F96B;Lo;0;L;25F86;;;;N;;;;; -2F96C;CJK COMPATIBILITY IDEOGRAPH-2F96C;Lo;0;L;7D63;;;;N;;;;; -2F96D;CJK COMPATIBILITY IDEOGRAPH-2F96D;Lo;0;L;4301;;;;N;;;;; -2F96E;CJK COMPATIBILITY IDEOGRAPH-2F96E;Lo;0;L;7DC7;;;;N;;;;; -2F96F;CJK COMPATIBILITY IDEOGRAPH-2F96F;Lo;0;L;7E02;;;;N;;;;; -2F970;CJK COMPATIBILITY IDEOGRAPH-2F970;Lo;0;L;7E45;;;;N;;;;; -2F971;CJK COMPATIBILITY IDEOGRAPH-2F971;Lo;0;L;4334;;;;N;;;;; -2F972;CJK COMPATIBILITY IDEOGRAPH-2F972;Lo;0;L;26228;;;;N;;;;; -2F973;CJK COMPATIBILITY IDEOGRAPH-2F973;Lo;0;L;26247;;;;N;;;;; -2F974;CJK COMPATIBILITY IDEOGRAPH-2F974;Lo;0;L;4359;;;;N;;;;; -2F975;CJK COMPATIBILITY IDEOGRAPH-2F975;Lo;0;L;262D9;;;;N;;;;; -2F976;CJK COMPATIBILITY IDEOGRAPH-2F976;Lo;0;L;7F7A;;;;N;;;;; -2F977;CJK COMPATIBILITY IDEOGRAPH-2F977;Lo;0;L;2633E;;;;N;;;;; -2F978;CJK COMPATIBILITY IDEOGRAPH-2F978;Lo;0;L;7F95;;;;N;;;;; -2F979;CJK COMPATIBILITY IDEOGRAPH-2F979;Lo;0;L;7FFA;;;;N;;;;; -2F97A;CJK COMPATIBILITY IDEOGRAPH-2F97A;Lo;0;L;8005;;;;N;;;;; -2F97B;CJK COMPATIBILITY IDEOGRAPH-2F97B;Lo;0;L;264DA;;;;N;;;;; -2F97C;CJK COMPATIBILITY IDEOGRAPH-2F97C;Lo;0;L;26523;;;;N;;;;; -2F97D;CJK COMPATIBILITY IDEOGRAPH-2F97D;Lo;0;L;8060;;;;N;;;;; -2F97E;CJK COMPATIBILITY IDEOGRAPH-2F97E;Lo;0;L;265A8;;;;N;;;;; -2F97F;CJK COMPATIBILITY IDEOGRAPH-2F97F;Lo;0;L;8070;;;;N;;;;; -2F980;CJK COMPATIBILITY IDEOGRAPH-2F980;Lo;0;L;2335F;;;;N;;;;; -2F981;CJK COMPATIBILITY IDEOGRAPH-2F981;Lo;0;L;43D5;;;;N;;;;; -2F982;CJK COMPATIBILITY IDEOGRAPH-2F982;Lo;0;L;80B2;;;;N;;;;; -2F983;CJK COMPATIBILITY IDEOGRAPH-2F983;Lo;0;L;8103;;;;N;;;;; -2F984;CJK COMPATIBILITY IDEOGRAPH-2F984;Lo;0;L;440B;;;;N;;;;; -2F985;CJK COMPATIBILITY IDEOGRAPH-2F985;Lo;0;L;813E;;;;N;;;;; -2F986;CJK COMPATIBILITY IDEOGRAPH-2F986;Lo;0;L;5AB5;;;;N;;;;; -2F987;CJK COMPATIBILITY IDEOGRAPH-2F987;Lo;0;L;267A7;;;;N;;;;; -2F988;CJK COMPATIBILITY IDEOGRAPH-2F988;Lo;0;L;267B5;;;;N;;;;; -2F989;CJK COMPATIBILITY IDEOGRAPH-2F989;Lo;0;L;23393;;;;N;;;;; -2F98A;CJK COMPATIBILITY IDEOGRAPH-2F98A;Lo;0;L;2339C;;;;N;;;;; -2F98B;CJK COMPATIBILITY IDEOGRAPH-2F98B;Lo;0;L;8201;;;;N;;;;; -2F98C;CJK COMPATIBILITY IDEOGRAPH-2F98C;Lo;0;L;8204;;;;N;;;;; -2F98D;CJK COMPATIBILITY IDEOGRAPH-2F98D;Lo;0;L;8F9E;;;;N;;;;; -2F98E;CJK COMPATIBILITY IDEOGRAPH-2F98E;Lo;0;L;446B;;;;N;;;;; -2F98F;CJK COMPATIBILITY IDEOGRAPH-2F98F;Lo;0;L;8291;;;;N;;;;; -2F990;CJK COMPATIBILITY IDEOGRAPH-2F990;Lo;0;L;828B;;;;N;;;;; -2F991;CJK COMPATIBILITY IDEOGRAPH-2F991;Lo;0;L;829D;;;;N;;;;; -2F992;CJK COMPATIBILITY IDEOGRAPH-2F992;Lo;0;L;52B3;;;;N;;;;; -2F993;CJK COMPATIBILITY IDEOGRAPH-2F993;Lo;0;L;82B1;;;;N;;;;; -2F994;CJK COMPATIBILITY IDEOGRAPH-2F994;Lo;0;L;82B3;;;;N;;;;; -2F995;CJK COMPATIBILITY IDEOGRAPH-2F995;Lo;0;L;82BD;;;;N;;;;; -2F996;CJK COMPATIBILITY IDEOGRAPH-2F996;Lo;0;L;82E6;;;;N;;;;; -2F997;CJK COMPATIBILITY IDEOGRAPH-2F997;Lo;0;L;26B3C;;;;N;;;;; -2F998;CJK COMPATIBILITY IDEOGRAPH-2F998;Lo;0;L;82E5;;;;N;;;;; -2F999;CJK COMPATIBILITY IDEOGRAPH-2F999;Lo;0;L;831D;;;;N;;;;; -2F99A;CJK COMPATIBILITY IDEOGRAPH-2F99A;Lo;0;L;8363;;;;N;;;;; -2F99B;CJK COMPATIBILITY IDEOGRAPH-2F99B;Lo;0;L;83AD;;;;N;;;;; -2F99C;CJK COMPATIBILITY IDEOGRAPH-2F99C;Lo;0;L;8323;;;;N;;;;; -2F99D;CJK COMPATIBILITY IDEOGRAPH-2F99D;Lo;0;L;83BD;;;;N;;;;; -2F99E;CJK COMPATIBILITY IDEOGRAPH-2F99E;Lo;0;L;83E7;;;;N;;;;; -2F99F;CJK COMPATIBILITY IDEOGRAPH-2F99F;Lo;0;L;8457;;;;N;;;;; -2F9A0;CJK COMPATIBILITY IDEOGRAPH-2F9A0;Lo;0;L;8353;;;;N;;;;; -2F9A1;CJK COMPATIBILITY IDEOGRAPH-2F9A1;Lo;0;L;83CA;;;;N;;;;; -2F9A2;CJK COMPATIBILITY IDEOGRAPH-2F9A2;Lo;0;L;83CC;;;;N;;;;; -2F9A3;CJK COMPATIBILITY IDEOGRAPH-2F9A3;Lo;0;L;83DC;;;;N;;;;; -2F9A4;CJK COMPATIBILITY IDEOGRAPH-2F9A4;Lo;0;L;26C36;;;;N;;;;; -2F9A5;CJK COMPATIBILITY IDEOGRAPH-2F9A5;Lo;0;L;26D6B;;;;N;;;;; -2F9A6;CJK COMPATIBILITY IDEOGRAPH-2F9A6;Lo;0;L;26CD5;;;;N;;;;; -2F9A7;CJK COMPATIBILITY IDEOGRAPH-2F9A7;Lo;0;L;452B;;;;N;;;;; -2F9A8;CJK COMPATIBILITY IDEOGRAPH-2F9A8;Lo;0;L;84F1;;;;N;;;;; -2F9A9;CJK COMPATIBILITY IDEOGRAPH-2F9A9;Lo;0;L;84F3;;;;N;;;;; -2F9AA;CJK COMPATIBILITY IDEOGRAPH-2F9AA;Lo;0;L;8516;;;;N;;;;; -2F9AB;CJK COMPATIBILITY IDEOGRAPH-2F9AB;Lo;0;L;273CA;;;;N;;;;; -2F9AC;CJK COMPATIBILITY IDEOGRAPH-2F9AC;Lo;0;L;8564;;;;N;;;;; -2F9AD;CJK COMPATIBILITY IDEOGRAPH-2F9AD;Lo;0;L;26F2C;;;;N;;;;; -2F9AE;CJK COMPATIBILITY IDEOGRAPH-2F9AE;Lo;0;L;455D;;;;N;;;;; -2F9AF;CJK COMPATIBILITY IDEOGRAPH-2F9AF;Lo;0;L;4561;;;;N;;;;; -2F9B0;CJK COMPATIBILITY IDEOGRAPH-2F9B0;Lo;0;L;26FB1;;;;N;;;;; -2F9B1;CJK COMPATIBILITY IDEOGRAPH-2F9B1;Lo;0;L;270D2;;;;N;;;;; -2F9B2;CJK COMPATIBILITY IDEOGRAPH-2F9B2;Lo;0;L;456B;;;;N;;;;; -2F9B3;CJK COMPATIBILITY IDEOGRAPH-2F9B3;Lo;0;L;8650;;;;N;;;;; -2F9B4;CJK COMPATIBILITY IDEOGRAPH-2F9B4;Lo;0;L;865C;;;;N;;;;; -2F9B5;CJK COMPATIBILITY IDEOGRAPH-2F9B5;Lo;0;L;8667;;;;N;;;;; -2F9B6;CJK COMPATIBILITY IDEOGRAPH-2F9B6;Lo;0;L;8669;;;;N;;;;; -2F9B7;CJK COMPATIBILITY IDEOGRAPH-2F9B7;Lo;0;L;86A9;;;;N;;;;; -2F9B8;CJK COMPATIBILITY IDEOGRAPH-2F9B8;Lo;0;L;8688;;;;N;;;;; -2F9B9;CJK COMPATIBILITY IDEOGRAPH-2F9B9;Lo;0;L;870E;;;;N;;;;; -2F9BA;CJK COMPATIBILITY IDEOGRAPH-2F9BA;Lo;0;L;86E2;;;;N;;;;; -2F9BB;CJK COMPATIBILITY IDEOGRAPH-2F9BB;Lo;0;L;8779;;;;N;;;;; -2F9BC;CJK COMPATIBILITY IDEOGRAPH-2F9BC;Lo;0;L;8728;;;;N;;;;; -2F9BD;CJK COMPATIBILITY IDEOGRAPH-2F9BD;Lo;0;L;876B;;;;N;;;;; -2F9BE;CJK COMPATIBILITY IDEOGRAPH-2F9BE;Lo;0;L;8786;;;;N;;;;; -2F9BF;CJK COMPATIBILITY IDEOGRAPH-2F9BF;Lo;0;L;45D7;;;;N;;;;; -2F9C0;CJK COMPATIBILITY IDEOGRAPH-2F9C0;Lo;0;L;87E1;;;;N;;;;; -2F9C1;CJK COMPATIBILITY IDEOGRAPH-2F9C1;Lo;0;L;8801;;;;N;;;;; -2F9C2;CJK COMPATIBILITY IDEOGRAPH-2F9C2;Lo;0;L;45F9;;;;N;;;;; -2F9C3;CJK COMPATIBILITY IDEOGRAPH-2F9C3;Lo;0;L;8860;;;;N;;;;; -2F9C4;CJK COMPATIBILITY IDEOGRAPH-2F9C4;Lo;0;L;8863;;;;N;;;;; -2F9C5;CJK COMPATIBILITY IDEOGRAPH-2F9C5;Lo;0;L;27667;;;;N;;;;; -2F9C6;CJK COMPATIBILITY IDEOGRAPH-2F9C6;Lo;0;L;88D7;;;;N;;;;; -2F9C7;CJK COMPATIBILITY IDEOGRAPH-2F9C7;Lo;0;L;88DE;;;;N;;;;; -2F9C8;CJK COMPATIBILITY IDEOGRAPH-2F9C8;Lo;0;L;4635;;;;N;;;;; -2F9C9;CJK COMPATIBILITY IDEOGRAPH-2F9C9;Lo;0;L;88FA;;;;N;;;;; -2F9CA;CJK COMPATIBILITY IDEOGRAPH-2F9CA;Lo;0;L;34BB;;;;N;;;;; -2F9CB;CJK COMPATIBILITY IDEOGRAPH-2F9CB;Lo;0;L;278AE;;;;N;;;;; -2F9CC;CJK COMPATIBILITY IDEOGRAPH-2F9CC;Lo;0;L;27966;;;;N;;;;; -2F9CD;CJK COMPATIBILITY IDEOGRAPH-2F9CD;Lo;0;L;46BE;;;;N;;;;; -2F9CE;CJK COMPATIBILITY IDEOGRAPH-2F9CE;Lo;0;L;46C7;;;;N;;;;; -2F9CF;CJK COMPATIBILITY IDEOGRAPH-2F9CF;Lo;0;L;8AA0;;;;N;;;;; -2F9D0;CJK COMPATIBILITY IDEOGRAPH-2F9D0;Lo;0;L;8AED;;;;N;;;;; -2F9D1;CJK COMPATIBILITY IDEOGRAPH-2F9D1;Lo;0;L;8B8A;;;;N;;;;; -2F9D2;CJK COMPATIBILITY IDEOGRAPH-2F9D2;Lo;0;L;8C55;;;;N;;;;; -2F9D3;CJK COMPATIBILITY IDEOGRAPH-2F9D3;Lo;0;L;27CA8;;;;N;;;;; -2F9D4;CJK COMPATIBILITY IDEOGRAPH-2F9D4;Lo;0;L;8CAB;;;;N;;;;; -2F9D5;CJK COMPATIBILITY IDEOGRAPH-2F9D5;Lo;0;L;8CC1;;;;N;;;;; -2F9D6;CJK COMPATIBILITY IDEOGRAPH-2F9D6;Lo;0;L;8D1B;;;;N;;;;; -2F9D7;CJK COMPATIBILITY IDEOGRAPH-2F9D7;Lo;0;L;8D77;;;;N;;;;; -2F9D8;CJK COMPATIBILITY IDEOGRAPH-2F9D8;Lo;0;L;27F2F;;;;N;;;;; -2F9D9;CJK COMPATIBILITY IDEOGRAPH-2F9D9;Lo;0;L;20804;;;;N;;;;; -2F9DA;CJK COMPATIBILITY IDEOGRAPH-2F9DA;Lo;0;L;8DCB;;;;N;;;;; -2F9DB;CJK COMPATIBILITY IDEOGRAPH-2F9DB;Lo;0;L;8DBC;;;;N;;;;; -2F9DC;CJK COMPATIBILITY IDEOGRAPH-2F9DC;Lo;0;L;8DF0;;;;N;;;;; -2F9DD;CJK COMPATIBILITY IDEOGRAPH-2F9DD;Lo;0;L;208DE;;;;N;;;;; -2F9DE;CJK COMPATIBILITY IDEOGRAPH-2F9DE;Lo;0;L;8ED4;;;;N;;;;; -2F9DF;CJK COMPATIBILITY IDEOGRAPH-2F9DF;Lo;0;L;8F38;;;;N;;;;; -2F9E0;CJK COMPATIBILITY IDEOGRAPH-2F9E0;Lo;0;L;285D2;;;;N;;;;; -2F9E1;CJK COMPATIBILITY IDEOGRAPH-2F9E1;Lo;0;L;285ED;;;;N;;;;; -2F9E2;CJK COMPATIBILITY IDEOGRAPH-2F9E2;Lo;0;L;9094;;;;N;;;;; -2F9E3;CJK COMPATIBILITY IDEOGRAPH-2F9E3;Lo;0;L;90F1;;;;N;;;;; -2F9E4;CJK COMPATIBILITY IDEOGRAPH-2F9E4;Lo;0;L;9111;;;;N;;;;; -2F9E5;CJK COMPATIBILITY IDEOGRAPH-2F9E5;Lo;0;L;2872E;;;;N;;;;; -2F9E6;CJK COMPATIBILITY IDEOGRAPH-2F9E6;Lo;0;L;911B;;;;N;;;;; -2F9E7;CJK COMPATIBILITY IDEOGRAPH-2F9E7;Lo;0;L;9238;;;;N;;;;; -2F9E8;CJK COMPATIBILITY IDEOGRAPH-2F9E8;Lo;0;L;92D7;;;;N;;;;; -2F9E9;CJK COMPATIBILITY IDEOGRAPH-2F9E9;Lo;0;L;92D8;;;;N;;;;; -2F9EA;CJK COMPATIBILITY IDEOGRAPH-2F9EA;Lo;0;L;927C;;;;N;;;;; -2F9EB;CJK COMPATIBILITY IDEOGRAPH-2F9EB;Lo;0;L;93F9;;;;N;;;;; -2F9EC;CJK COMPATIBILITY IDEOGRAPH-2F9EC;Lo;0;L;9415;;;;N;;;;; -2F9ED;CJK COMPATIBILITY IDEOGRAPH-2F9ED;Lo;0;L;28BFA;;;;N;;;;; -2F9EE;CJK COMPATIBILITY IDEOGRAPH-2F9EE;Lo;0;L;958B;;;;N;;;;; -2F9EF;CJK COMPATIBILITY IDEOGRAPH-2F9EF;Lo;0;L;4995;;;;N;;;;; -2F9F0;CJK COMPATIBILITY IDEOGRAPH-2F9F0;Lo;0;L;95B7;;;;N;;;;; -2F9F1;CJK COMPATIBILITY IDEOGRAPH-2F9F1;Lo;0;L;28D77;;;;N;;;;; -2F9F2;CJK COMPATIBILITY IDEOGRAPH-2F9F2;Lo;0;L;49E6;;;;N;;;;; -2F9F3;CJK COMPATIBILITY IDEOGRAPH-2F9F3;Lo;0;L;96C3;;;;N;;;;; -2F9F4;CJK COMPATIBILITY IDEOGRAPH-2F9F4;Lo;0;L;5DB2;;;;N;;;;; -2F9F5;CJK COMPATIBILITY IDEOGRAPH-2F9F5;Lo;0;L;9723;;;;N;;;;; -2F9F6;CJK COMPATIBILITY IDEOGRAPH-2F9F6;Lo;0;L;29145;;;;N;;;;; -2F9F7;CJK COMPATIBILITY IDEOGRAPH-2F9F7;Lo;0;L;2921A;;;;N;;;;; -2F9F8;CJK COMPATIBILITY IDEOGRAPH-2F9F8;Lo;0;L;4A6E;;;;N;;;;; -2F9F9;CJK COMPATIBILITY IDEOGRAPH-2F9F9;Lo;0;L;4A76;;;;N;;;;; -2F9FA;CJK COMPATIBILITY IDEOGRAPH-2F9FA;Lo;0;L;97E0;;;;N;;;;; -2F9FB;CJK COMPATIBILITY IDEOGRAPH-2F9FB;Lo;0;L;2940A;;;;N;;;;; -2F9FC;CJK COMPATIBILITY IDEOGRAPH-2F9FC;Lo;0;L;4AB2;;;;N;;;;; -2F9FD;CJK COMPATIBILITY IDEOGRAPH-2F9FD;Lo;0;L;29496;;;;N;;;;; -2F9FE;CJK COMPATIBILITY IDEOGRAPH-2F9FE;Lo;0;L;980B;;;;N;;;;; -2F9FF;CJK COMPATIBILITY IDEOGRAPH-2F9FF;Lo;0;L;980B;;;;N;;;;; -2FA00;CJK COMPATIBILITY IDEOGRAPH-2FA00;Lo;0;L;9829;;;;N;;;;; -2FA01;CJK COMPATIBILITY IDEOGRAPH-2FA01;Lo;0;L;295B6;;;;N;;;;; -2FA02;CJK COMPATIBILITY IDEOGRAPH-2FA02;Lo;0;L;98E2;;;;N;;;;; -2FA03;CJK COMPATIBILITY IDEOGRAPH-2FA03;Lo;0;L;4B33;;;;N;;;;; -2FA04;CJK COMPATIBILITY IDEOGRAPH-2FA04;Lo;0;L;9929;;;;N;;;;; -2FA05;CJK COMPATIBILITY IDEOGRAPH-2FA05;Lo;0;L;99A7;;;;N;;;;; -2FA06;CJK COMPATIBILITY IDEOGRAPH-2FA06;Lo;0;L;99C2;;;;N;;;;; -2FA07;CJK COMPATIBILITY IDEOGRAPH-2FA07;Lo;0;L;99FE;;;;N;;;;; -2FA08;CJK COMPATIBILITY IDEOGRAPH-2FA08;Lo;0;L;4BCE;;;;N;;;;; -2FA09;CJK COMPATIBILITY IDEOGRAPH-2FA09;Lo;0;L;29B30;;;;N;;;;; -2FA0A;CJK COMPATIBILITY IDEOGRAPH-2FA0A;Lo;0;L;9B12;;;;N;;;;; -2FA0B;CJK COMPATIBILITY IDEOGRAPH-2FA0B;Lo;0;L;9C40;;;;N;;;;; -2FA0C;CJK COMPATIBILITY IDEOGRAPH-2FA0C;Lo;0;L;9CFD;;;;N;;;;; -2FA0D;CJK COMPATIBILITY IDEOGRAPH-2FA0D;Lo;0;L;4CCE;;;;N;;;;; -2FA0E;CJK COMPATIBILITY IDEOGRAPH-2FA0E;Lo;0;L;4CED;;;;N;;;;; -2FA0F;CJK COMPATIBILITY IDEOGRAPH-2FA0F;Lo;0;L;9D67;;;;N;;;;; -2FA10;CJK COMPATIBILITY IDEOGRAPH-2FA10;Lo;0;L;2A0CE;;;;N;;;;; -2FA11;CJK COMPATIBILITY IDEOGRAPH-2FA11;Lo;0;L;4CF8;;;;N;;;;; -2FA12;CJK COMPATIBILITY IDEOGRAPH-2FA12;Lo;0;L;2A105;;;;N;;;;; -2FA13;CJK COMPATIBILITY IDEOGRAPH-2FA13;Lo;0;L;2A20E;;;;N;;;;; -2FA14;CJK COMPATIBILITY IDEOGRAPH-2FA14;Lo;0;L;2A291;;;;N;;;;; -2FA15;CJK COMPATIBILITY IDEOGRAPH-2FA15;Lo;0;L;9EBB;;;;N;;;;; -2FA16;CJK COMPATIBILITY IDEOGRAPH-2FA16;Lo;0;L;4D56;;;;N;;;;; -2FA17;CJK COMPATIBILITY IDEOGRAPH-2FA17;Lo;0;L;9EF9;;;;N;;;;; -2FA18;CJK COMPATIBILITY IDEOGRAPH-2FA18;Lo;0;L;9EFE;;;;N;;;;; -2FA19;CJK COMPATIBILITY IDEOGRAPH-2FA19;Lo;0;L;9F05;;;;N;;;;; -2FA1A;CJK COMPATIBILITY IDEOGRAPH-2FA1A;Lo;0;L;9F0F;;;;N;;;;; -2FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;; -2FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;; -2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;; -E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;; -E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;; -E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;; -E0022;TAG QUOTATION MARK;Cf;0;BN;;;;;N;;;;; -E0023;TAG NUMBER SIGN;Cf;0;BN;;;;;N;;;;; -E0024;TAG DOLLAR SIGN;Cf;0;BN;;;;;N;;;;; -E0025;TAG PERCENT SIGN;Cf;0;BN;;;;;N;;;;; -E0026;TAG AMPERSAND;Cf;0;BN;;;;;N;;;;; -E0027;TAG APOSTROPHE;Cf;0;BN;;;;;N;;;;; -E0028;TAG LEFT PARENTHESIS;Cf;0;BN;;;;;N;;;;; -E0029;TAG RIGHT PARENTHESIS;Cf;0;BN;;;;;N;;;;; -E002A;TAG ASTERISK;Cf;0;BN;;;;;N;;;;; -E002B;TAG PLUS SIGN;Cf;0;BN;;;;;N;;;;; -E002C;TAG COMMA;Cf;0;BN;;;;;N;;;;; -E002D;TAG HYPHEN-MINUS;Cf;0;BN;;;;;N;;;;; -E002E;TAG FULL STOP;Cf;0;BN;;;;;N;;;;; -E002F;TAG SOLIDUS;Cf;0;BN;;;;;N;;;;; -E0030;TAG DIGIT ZERO;Cf;0;BN;;;;;N;;;;; -E0031;TAG DIGIT ONE;Cf;0;BN;;;;;N;;;;; -E0032;TAG DIGIT TWO;Cf;0;BN;;;;;N;;;;; -E0033;TAG DIGIT THREE;Cf;0;BN;;;;;N;;;;; -E0034;TAG DIGIT FOUR;Cf;0;BN;;;;;N;;;;; -E0035;TAG DIGIT FIVE;Cf;0;BN;;;;;N;;;;; -E0036;TAG DIGIT SIX;Cf;0;BN;;;;;N;;;;; -E0037;TAG DIGIT SEVEN;Cf;0;BN;;;;;N;;;;; -E0038;TAG DIGIT EIGHT;Cf;0;BN;;;;;N;;;;; -E0039;TAG DIGIT NINE;Cf;0;BN;;;;;N;;;;; -E003A;TAG COLON;Cf;0;BN;;;;;N;;;;; -E003B;TAG SEMICOLON;Cf;0;BN;;;;;N;;;;; -E003C;TAG LESS-THAN SIGN;Cf;0;BN;;;;;N;;;;; -E003D;TAG EQUALS SIGN;Cf;0;BN;;;;;N;;;;; -E003E;TAG GREATER-THAN SIGN;Cf;0;BN;;;;;N;;;;; -E003F;TAG QUESTION MARK;Cf;0;BN;;;;;N;;;;; -E0040;TAG COMMERCIAL AT;Cf;0;BN;;;;;N;;;;; -E0041;TAG LATIN CAPITAL LETTER A;Cf;0;BN;;;;;N;;;;; -E0042;TAG LATIN CAPITAL LETTER B;Cf;0;BN;;;;;N;;;;; -E0043;TAG LATIN CAPITAL LETTER C;Cf;0;BN;;;;;N;;;;; -E0044;TAG LATIN CAPITAL LETTER D;Cf;0;BN;;;;;N;;;;; -E0045;TAG LATIN CAPITAL LETTER E;Cf;0;BN;;;;;N;;;;; -E0046;TAG LATIN CAPITAL LETTER F;Cf;0;BN;;;;;N;;;;; -E0047;TAG LATIN CAPITAL LETTER G;Cf;0;BN;;;;;N;;;;; -E0048;TAG LATIN CAPITAL LETTER H;Cf;0;BN;;;;;N;;;;; -E0049;TAG LATIN CAPITAL LETTER I;Cf;0;BN;;;;;N;;;;; -E004A;TAG LATIN CAPITAL LETTER J;Cf;0;BN;;;;;N;;;;; -E004B;TAG LATIN CAPITAL LETTER K;Cf;0;BN;;;;;N;;;;; -E004C;TAG LATIN CAPITAL LETTER L;Cf;0;BN;;;;;N;;;;; -E004D;TAG LATIN CAPITAL LETTER M;Cf;0;BN;;;;;N;;;;; -E004E;TAG LATIN CAPITAL LETTER N;Cf;0;BN;;;;;N;;;;; -E004F;TAG LATIN CAPITAL LETTER O;Cf;0;BN;;;;;N;;;;; -E0050;TAG LATIN CAPITAL LETTER P;Cf;0;BN;;;;;N;;;;; -E0051;TAG LATIN CAPITAL LETTER Q;Cf;0;BN;;;;;N;;;;; -E0052;TAG LATIN CAPITAL LETTER R;Cf;0;BN;;;;;N;;;;; -E0053;TAG LATIN CAPITAL LETTER S;Cf;0;BN;;;;;N;;;;; -E0054;TAG LATIN CAPITAL LETTER T;Cf;0;BN;;;;;N;;;;; -E0055;TAG LATIN CAPITAL LETTER U;Cf;0;BN;;;;;N;;;;; -E0056;TAG LATIN CAPITAL LETTER V;Cf;0;BN;;;;;N;;;;; -E0057;TAG LATIN CAPITAL LETTER W;Cf;0;BN;;;;;N;;;;; -E0058;TAG LATIN CAPITAL LETTER X;Cf;0;BN;;;;;N;;;;; -E0059;TAG LATIN CAPITAL LETTER Y;Cf;0;BN;;;;;N;;;;; -E005A;TAG LATIN CAPITAL LETTER Z;Cf;0;BN;;;;;N;;;;; -E005B;TAG LEFT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;; -E005C;TAG REVERSE SOLIDUS;Cf;0;BN;;;;;N;;;;; -E005D;TAG RIGHT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;; -E005E;TAG CIRCUMFLEX ACCENT;Cf;0;BN;;;;;N;;;;; -E005F;TAG LOW LINE;Cf;0;BN;;;;;N;;;;; -E0060;TAG GRAVE ACCENT;Cf;0;BN;;;;;N;;;;; -E0061;TAG LATIN SMALL LETTER A;Cf;0;BN;;;;;N;;;;; -E0062;TAG LATIN SMALL LETTER B;Cf;0;BN;;;;;N;;;;; -E0063;TAG LATIN SMALL LETTER C;Cf;0;BN;;;;;N;;;;; -E0064;TAG LATIN SMALL LETTER D;Cf;0;BN;;;;;N;;;;; -E0065;TAG LATIN SMALL LETTER E;Cf;0;BN;;;;;N;;;;; -E0066;TAG LATIN SMALL LETTER F;Cf;0;BN;;;;;N;;;;; -E0067;TAG LATIN SMALL LETTER G;Cf;0;BN;;;;;N;;;;; -E0068;TAG LATIN SMALL LETTER H;Cf;0;BN;;;;;N;;;;; -E0069;TAG LATIN SMALL LETTER I;Cf;0;BN;;;;;N;;;;; -E006A;TAG LATIN SMALL LETTER J;Cf;0;BN;;;;;N;;;;; -E006B;TAG LATIN SMALL LETTER K;Cf;0;BN;;;;;N;;;;; -E006C;TAG LATIN SMALL LETTER L;Cf;0;BN;;;;;N;;;;; -E006D;TAG LATIN SMALL LETTER M;Cf;0;BN;;;;;N;;;;; -E006E;TAG LATIN SMALL LETTER N;Cf;0;BN;;;;;N;;;;; -E006F;TAG LATIN SMALL LETTER O;Cf;0;BN;;;;;N;;;;; -E0070;TAG LATIN SMALL LETTER P;Cf;0;BN;;;;;N;;;;; -E0071;TAG LATIN SMALL LETTER Q;Cf;0;BN;;;;;N;;;;; -E0072;TAG LATIN SMALL LETTER R;Cf;0;BN;;;;;N;;;;; -E0073;TAG LATIN SMALL LETTER S;Cf;0;BN;;;;;N;;;;; -E0074;TAG LATIN SMALL LETTER T;Cf;0;BN;;;;;N;;;;; -E0075;TAG LATIN SMALL LETTER U;Cf;0;BN;;;;;N;;;;; -E0076;TAG LATIN SMALL LETTER V;Cf;0;BN;;;;;N;;;;; -E0077;TAG LATIN SMALL LETTER W;Cf;0;BN;;;;;N;;;;; -E0078;TAG LATIN SMALL LETTER X;Cf;0;BN;;;;;N;;;;; -E0079;TAG LATIN SMALL LETTER Y;Cf;0;BN;;;;;N;;;;; -E007A;TAG LATIN SMALL LETTER Z;Cf;0;BN;;;;;N;;;;; -E007B;TAG LEFT CURLY BRACKET;Cf;0;BN;;;;;N;;;;; -E007C;TAG VERTICAL LINE;Cf;0;BN;;;;;N;;;;; -E007D;TAG RIGHT CURLY BRACKET;Cf;0;BN;;;;;N;;;;; -E007E;TAG TILDE;Cf;0;BN;;;;;N;;;;; -E007F;CANCEL TAG;Cf;0;BN;;;;;N;;;;; -E0100;VARIATION SELECTOR-17;Mn;0;NSM;;;;;N;;;;; -E0101;VARIATION SELECTOR-18;Mn;0;NSM;;;;;N;;;;; -E0102;VARIATION SELECTOR-19;Mn;0;NSM;;;;;N;;;;; -E0103;VARIATION SELECTOR-20;Mn;0;NSM;;;;;N;;;;; -E0104;VARIATION SELECTOR-21;Mn;0;NSM;;;;;N;;;;; -E0105;VARIATION SELECTOR-22;Mn;0;NSM;;;;;N;;;;; -E0106;VARIATION SELECTOR-23;Mn;0;NSM;;;;;N;;;;; -E0107;VARIATION SELECTOR-24;Mn;0;NSM;;;;;N;;;;; -E0108;VARIATION SELECTOR-25;Mn;0;NSM;;;;;N;;;;; -E0109;VARIATION SELECTOR-26;Mn;0;NSM;;;;;N;;;;; -E010A;VARIATION SELECTOR-27;Mn;0;NSM;;;;;N;;;;; -E010B;VARIATION SELECTOR-28;Mn;0;NSM;;;;;N;;;;; -E010C;VARIATION SELECTOR-29;Mn;0;NSM;;;;;N;;;;; -E010D;VARIATION SELECTOR-30;Mn;0;NSM;;;;;N;;;;; -E010E;VARIATION SELECTOR-31;Mn;0;NSM;;;;;N;;;;; -E010F;VARIATION SELECTOR-32;Mn;0;NSM;;;;;N;;;;; -E0110;VARIATION SELECTOR-33;Mn;0;NSM;;;;;N;;;;; -E0111;VARIATION SELECTOR-34;Mn;0;NSM;;;;;N;;;;; -E0112;VARIATION SELECTOR-35;Mn;0;NSM;;;;;N;;;;; -E0113;VARIATION SELECTOR-36;Mn;0;NSM;;;;;N;;;;; -E0114;VARIATION SELECTOR-37;Mn;0;NSM;;;;;N;;;;; -E0115;VARIATION SELECTOR-38;Mn;0;NSM;;;;;N;;;;; -E0116;VARIATION SELECTOR-39;Mn;0;NSM;;;;;N;;;;; -E0117;VARIATION SELECTOR-40;Mn;0;NSM;;;;;N;;;;; -E0118;VARIATION SELECTOR-41;Mn;0;NSM;;;;;N;;;;; -E0119;VARIATION SELECTOR-42;Mn;0;NSM;;;;;N;;;;; -E011A;VARIATION SELECTOR-43;Mn;0;NSM;;;;;N;;;;; -E011B;VARIATION SELECTOR-44;Mn;0;NSM;;;;;N;;;;; -E011C;VARIATION SELECTOR-45;Mn;0;NSM;;;;;N;;;;; -E011D;VARIATION SELECTOR-46;Mn;0;NSM;;;;;N;;;;; -E011E;VARIATION SELECTOR-47;Mn;0;NSM;;;;;N;;;;; -E011F;VARIATION SELECTOR-48;Mn;0;NSM;;;;;N;;;;; -E0120;VARIATION SELECTOR-49;Mn;0;NSM;;;;;N;;;;; -E0121;VARIATION SELECTOR-50;Mn;0;NSM;;;;;N;;;;; -E0122;VARIATION SELECTOR-51;Mn;0;NSM;;;;;N;;;;; -E0123;VARIATION SELECTOR-52;Mn;0;NSM;;;;;N;;;;; -E0124;VARIATION SELECTOR-53;Mn;0;NSM;;;;;N;;;;; -E0125;VARIATION SELECTOR-54;Mn;0;NSM;;;;;N;;;;; -E0126;VARIATION SELECTOR-55;Mn;0;NSM;;;;;N;;;;; -E0127;VARIATION SELECTOR-56;Mn;0;NSM;;;;;N;;;;; -E0128;VARIATION SELECTOR-57;Mn;0;NSM;;;;;N;;;;; -E0129;VARIATION SELECTOR-58;Mn;0;NSM;;;;;N;;;;; -E012A;VARIATION SELECTOR-59;Mn;0;NSM;;;;;N;;;;; -E012B;VARIATION SELECTOR-60;Mn;0;NSM;;;;;N;;;;; -E012C;VARIATION SELECTOR-61;Mn;0;NSM;;;;;N;;;;; -E012D;VARIATION SELECTOR-62;Mn;0;NSM;;;;;N;;;;; -E012E;VARIATION SELECTOR-63;Mn;0;NSM;;;;;N;;;;; -E012F;VARIATION SELECTOR-64;Mn;0;NSM;;;;;N;;;;; -E0130;VARIATION SELECTOR-65;Mn;0;NSM;;;;;N;;;;; -E0131;VARIATION SELECTOR-66;Mn;0;NSM;;;;;N;;;;; -E0132;VARIATION SELECTOR-67;Mn;0;NSM;;;;;N;;;;; -E0133;VARIATION SELECTOR-68;Mn;0;NSM;;;;;N;;;;; -E0134;VARIATION SELECTOR-69;Mn;0;NSM;;;;;N;;;;; -E0135;VARIATION SELECTOR-70;Mn;0;NSM;;;;;N;;;;; -E0136;VARIATION SELECTOR-71;Mn;0;NSM;;;;;N;;;;; -E0137;VARIATION SELECTOR-72;Mn;0;NSM;;;;;N;;;;; -E0138;VARIATION SELECTOR-73;Mn;0;NSM;;;;;N;;;;; -E0139;VARIATION SELECTOR-74;Mn;0;NSM;;;;;N;;;;; -E013A;VARIATION SELECTOR-75;Mn;0;NSM;;;;;N;;;;; -E013B;VARIATION SELECTOR-76;Mn;0;NSM;;;;;N;;;;; -E013C;VARIATION SELECTOR-77;Mn;0;NSM;;;;;N;;;;; -E013D;VARIATION SELECTOR-78;Mn;0;NSM;;;;;N;;;;; -E013E;VARIATION SELECTOR-79;Mn;0;NSM;;;;;N;;;;; -E013F;VARIATION SELECTOR-80;Mn;0;NSM;;;;;N;;;;; -E0140;VARIATION SELECTOR-81;Mn;0;NSM;;;;;N;;;;; -E0141;VARIATION SELECTOR-82;Mn;0;NSM;;;;;N;;;;; -E0142;VARIATION SELECTOR-83;Mn;0;NSM;;;;;N;;;;; -E0143;VARIATION SELECTOR-84;Mn;0;NSM;;;;;N;;;;; -E0144;VARIATION SELECTOR-85;Mn;0;NSM;;;;;N;;;;; -E0145;VARIATION SELECTOR-86;Mn;0;NSM;;;;;N;;;;; -E0146;VARIATION SELECTOR-87;Mn;0;NSM;;;;;N;;;;; -E0147;VARIATION SELECTOR-88;Mn;0;NSM;;;;;N;;;;; -E0148;VARIATION SELECTOR-89;Mn;0;NSM;;;;;N;;;;; -E0149;VARIATION SELECTOR-90;Mn;0;NSM;;;;;N;;;;; -E014A;VARIATION SELECTOR-91;Mn;0;NSM;;;;;N;;;;; -E014B;VARIATION SELECTOR-92;Mn;0;NSM;;;;;N;;;;; -E014C;VARIATION SELECTOR-93;Mn;0;NSM;;;;;N;;;;; -E014D;VARIATION SELECTOR-94;Mn;0;NSM;;;;;N;;;;; -E014E;VARIATION SELECTOR-95;Mn;0;NSM;;;;;N;;;;; -E014F;VARIATION SELECTOR-96;Mn;0;NSM;;;;;N;;;;; -E0150;VARIATION SELECTOR-97;Mn;0;NSM;;;;;N;;;;; -E0151;VARIATION SELECTOR-98;Mn;0;NSM;;;;;N;;;;; -E0152;VARIATION SELECTOR-99;Mn;0;NSM;;;;;N;;;;; -E0153;VARIATION SELECTOR-100;Mn;0;NSM;;;;;N;;;;; -E0154;VARIATION SELECTOR-101;Mn;0;NSM;;;;;N;;;;; -E0155;VARIATION SELECTOR-102;Mn;0;NSM;;;;;N;;;;; -E0156;VARIATION SELECTOR-103;Mn;0;NSM;;;;;N;;;;; -E0157;VARIATION SELECTOR-104;Mn;0;NSM;;;;;N;;;;; -E0158;VARIATION SELECTOR-105;Mn;0;NSM;;;;;N;;;;; -E0159;VARIATION SELECTOR-106;Mn;0;NSM;;;;;N;;;;; -E015A;VARIATION SELECTOR-107;Mn;0;NSM;;;;;N;;;;; -E015B;VARIATION SELECTOR-108;Mn;0;NSM;;;;;N;;;;; -E015C;VARIATION SELECTOR-109;Mn;0;NSM;;;;;N;;;;; -E015D;VARIATION SELECTOR-110;Mn;0;NSM;;;;;N;;;;; -E015E;VARIATION SELECTOR-111;Mn;0;NSM;;;;;N;;;;; -E015F;VARIATION SELECTOR-112;Mn;0;NSM;;;;;N;;;;; -E0160;VARIATION SELECTOR-113;Mn;0;NSM;;;;;N;;;;; -E0161;VARIATION SELECTOR-114;Mn;0;NSM;;;;;N;;;;; -E0162;VARIATION SELECTOR-115;Mn;0;NSM;;;;;N;;;;; -E0163;VARIATION SELECTOR-116;Mn;0;NSM;;;;;N;;;;; -E0164;VARIATION SELECTOR-117;Mn;0;NSM;;;;;N;;;;; -E0165;VARIATION SELECTOR-118;Mn;0;NSM;;;;;N;;;;; -E0166;VARIATION SELECTOR-119;Mn;0;NSM;;;;;N;;;;; -E0167;VARIATION SELECTOR-120;Mn;0;NSM;;;;;N;;;;; -E0168;VARIATION SELECTOR-121;Mn;0;NSM;;;;;N;;;;; -E0169;VARIATION SELECTOR-122;Mn;0;NSM;;;;;N;;;;; -E016A;VARIATION SELECTOR-123;Mn;0;NSM;;;;;N;;;;; -E016B;VARIATION SELECTOR-124;Mn;0;NSM;;;;;N;;;;; -E016C;VARIATION SELECTOR-125;Mn;0;NSM;;;;;N;;;;; -E016D;VARIATION SELECTOR-126;Mn;0;NSM;;;;;N;;;;; -E016E;VARIATION SELECTOR-127;Mn;0;NSM;;;;;N;;;;; -E016F;VARIATION SELECTOR-128;Mn;0;NSM;;;;;N;;;;; -E0170;VARIATION SELECTOR-129;Mn;0;NSM;;;;;N;;;;; -E0171;VARIATION SELECTOR-130;Mn;0;NSM;;;;;N;;;;; -E0172;VARIATION SELECTOR-131;Mn;0;NSM;;;;;N;;;;; -E0173;VARIATION SELECTOR-132;Mn;0;NSM;;;;;N;;;;; -E0174;VARIATION SELECTOR-133;Mn;0;NSM;;;;;N;;;;; -E0175;VARIATION SELECTOR-134;Mn;0;NSM;;;;;N;;;;; -E0176;VARIATION SELECTOR-135;Mn;0;NSM;;;;;N;;;;; -E0177;VARIATION SELECTOR-136;Mn;0;NSM;;;;;N;;;;; -E0178;VARIATION SELECTOR-137;Mn;0;NSM;;;;;N;;;;; -E0179;VARIATION SELECTOR-138;Mn;0;NSM;;;;;N;;;;; -E017A;VARIATION SELECTOR-139;Mn;0;NSM;;;;;N;;;;; -E017B;VARIATION SELECTOR-140;Mn;0;NSM;;;;;N;;;;; -E017C;VARIATION SELECTOR-141;Mn;0;NSM;;;;;N;;;;; -E017D;VARIATION SELECTOR-142;Mn;0;NSM;;;;;N;;;;; -E017E;VARIATION SELECTOR-143;Mn;0;NSM;;;;;N;;;;; -E017F;VARIATION SELECTOR-144;Mn;0;NSM;;;;;N;;;;; -E0180;VARIATION SELECTOR-145;Mn;0;NSM;;;;;N;;;;; -E0181;VARIATION SELECTOR-146;Mn;0;NSM;;;;;N;;;;; -E0182;VARIATION SELECTOR-147;Mn;0;NSM;;;;;N;;;;; -E0183;VARIATION SELECTOR-148;Mn;0;NSM;;;;;N;;;;; -E0184;VARIATION SELECTOR-149;Mn;0;NSM;;;;;N;;;;; -E0185;VARIATION SELECTOR-150;Mn;0;NSM;;;;;N;;;;; -E0186;VARIATION SELECTOR-151;Mn;0;NSM;;;;;N;;;;; -E0187;VARIATION SELECTOR-152;Mn;0;NSM;;;;;N;;;;; -E0188;VARIATION SELECTOR-153;Mn;0;NSM;;;;;N;;;;; -E0189;VARIATION SELECTOR-154;Mn;0;NSM;;;;;N;;;;; -E018A;VARIATION SELECTOR-155;Mn;0;NSM;;;;;N;;;;; -E018B;VARIATION SELECTOR-156;Mn;0;NSM;;;;;N;;;;; -E018C;VARIATION SELECTOR-157;Mn;0;NSM;;;;;N;;;;; -E018D;VARIATION SELECTOR-158;Mn;0;NSM;;;;;N;;;;; -E018E;VARIATION SELECTOR-159;Mn;0;NSM;;;;;N;;;;; -E018F;VARIATION SELECTOR-160;Mn;0;NSM;;;;;N;;;;; -E0190;VARIATION SELECTOR-161;Mn;0;NSM;;;;;N;;;;; -E0191;VARIATION SELECTOR-162;Mn;0;NSM;;;;;N;;;;; -E0192;VARIATION SELECTOR-163;Mn;0;NSM;;;;;N;;;;; -E0193;VARIATION SELECTOR-164;Mn;0;NSM;;;;;N;;;;; -E0194;VARIATION SELECTOR-165;Mn;0;NSM;;;;;N;;;;; -E0195;VARIATION SELECTOR-166;Mn;0;NSM;;;;;N;;;;; -E0196;VARIATION SELECTOR-167;Mn;0;NSM;;;;;N;;;;; -E0197;VARIATION SELECTOR-168;Mn;0;NSM;;;;;N;;;;; -E0198;VARIATION SELECTOR-169;Mn;0;NSM;;;;;N;;;;; -E0199;VARIATION SELECTOR-170;Mn;0;NSM;;;;;N;;;;; -E019A;VARIATION SELECTOR-171;Mn;0;NSM;;;;;N;;;;; -E019B;VARIATION SELECTOR-172;Mn;0;NSM;;;;;N;;;;; -E019C;VARIATION SELECTOR-173;Mn;0;NSM;;;;;N;;;;; -E019D;VARIATION SELECTOR-174;Mn;0;NSM;;;;;N;;;;; -E019E;VARIATION SELECTOR-175;Mn;0;NSM;;;;;N;;;;; -E019F;VARIATION SELECTOR-176;Mn;0;NSM;;;;;N;;;;; -E01A0;VARIATION SELECTOR-177;Mn;0;NSM;;;;;N;;;;; -E01A1;VARIATION SELECTOR-178;Mn;0;NSM;;;;;N;;;;; -E01A2;VARIATION SELECTOR-179;Mn;0;NSM;;;;;N;;;;; -E01A3;VARIATION SELECTOR-180;Mn;0;NSM;;;;;N;;;;; -E01A4;VARIATION SELECTOR-181;Mn;0;NSM;;;;;N;;;;; -E01A5;VARIATION SELECTOR-182;Mn;0;NSM;;;;;N;;;;; -E01A6;VARIATION SELECTOR-183;Mn;0;NSM;;;;;N;;;;; -E01A7;VARIATION SELECTOR-184;Mn;0;NSM;;;;;N;;;;; -E01A8;VARIATION SELECTOR-185;Mn;0;NSM;;;;;N;;;;; -E01A9;VARIATION SELECTOR-186;Mn;0;NSM;;;;;N;;;;; -E01AA;VARIATION SELECTOR-187;Mn;0;NSM;;;;;N;;;;; -E01AB;VARIATION SELECTOR-188;Mn;0;NSM;;;;;N;;;;; -E01AC;VARIATION SELECTOR-189;Mn;0;NSM;;;;;N;;;;; -E01AD;VARIATION SELECTOR-190;Mn;0;NSM;;;;;N;;;;; -E01AE;VARIATION SELECTOR-191;Mn;0;NSM;;;;;N;;;;; -E01AF;VARIATION SELECTOR-192;Mn;0;NSM;;;;;N;;;;; -E01B0;VARIATION SELECTOR-193;Mn;0;NSM;;;;;N;;;;; -E01B1;VARIATION SELECTOR-194;Mn;0;NSM;;;;;N;;;;; -E01B2;VARIATION SELECTOR-195;Mn;0;NSM;;;;;N;;;;; -E01B3;VARIATION SELECTOR-196;Mn;0;NSM;;;;;N;;;;; -E01B4;VARIATION SELECTOR-197;Mn;0;NSM;;;;;N;;;;; -E01B5;VARIATION SELECTOR-198;Mn;0;NSM;;;;;N;;;;; -E01B6;VARIATION SELECTOR-199;Mn;0;NSM;;;;;N;;;;; -E01B7;VARIATION SELECTOR-200;Mn;0;NSM;;;;;N;;;;; -E01B8;VARIATION SELECTOR-201;Mn;0;NSM;;;;;N;;;;; -E01B9;VARIATION SELECTOR-202;Mn;0;NSM;;;;;N;;;;; -E01BA;VARIATION SELECTOR-203;Mn;0;NSM;;;;;N;;;;; -E01BB;VARIATION SELECTOR-204;Mn;0;NSM;;;;;N;;;;; -E01BC;VARIATION SELECTOR-205;Mn;0;NSM;;;;;N;;;;; -E01BD;VARIATION SELECTOR-206;Mn;0;NSM;;;;;N;;;;; -E01BE;VARIATION SELECTOR-207;Mn;0;NSM;;;;;N;;;;; -E01BF;VARIATION SELECTOR-208;Mn;0;NSM;;;;;N;;;;; -E01C0;VARIATION SELECTOR-209;Mn;0;NSM;;;;;N;;;;; -E01C1;VARIATION SELECTOR-210;Mn;0;NSM;;;;;N;;;;; -E01C2;VARIATION SELECTOR-211;Mn;0;NSM;;;;;N;;;;; -E01C3;VARIATION SELECTOR-212;Mn;0;NSM;;;;;N;;;;; -E01C4;VARIATION SELECTOR-213;Mn;0;NSM;;;;;N;;;;; -E01C5;VARIATION SELECTOR-214;Mn;0;NSM;;;;;N;;;;; -E01C6;VARIATION SELECTOR-215;Mn;0;NSM;;;;;N;;;;; -E01C7;VARIATION SELECTOR-216;Mn;0;NSM;;;;;N;;;;; -E01C8;VARIATION SELECTOR-217;Mn;0;NSM;;;;;N;;;;; -E01C9;VARIATION SELECTOR-218;Mn;0;NSM;;;;;N;;;;; -E01CA;VARIATION SELECTOR-219;Mn;0;NSM;;;;;N;;;;; -E01CB;VARIATION SELECTOR-220;Mn;0;NSM;;;;;N;;;;; -E01CC;VARIATION SELECTOR-221;Mn;0;NSM;;;;;N;;;;; -E01CD;VARIATION SELECTOR-222;Mn;0;NSM;;;;;N;;;;; -E01CE;VARIATION SELECTOR-223;Mn;0;NSM;;;;;N;;;;; -E01CF;VARIATION SELECTOR-224;Mn;0;NSM;;;;;N;;;;; -E01D0;VARIATION SELECTOR-225;Mn;0;NSM;;;;;N;;;;; -E01D1;VARIATION SELECTOR-226;Mn;0;NSM;;;;;N;;;;; -E01D2;VARIATION SELECTOR-227;Mn;0;NSM;;;;;N;;;;; -E01D3;VARIATION SELECTOR-228;Mn;0;NSM;;;;;N;;;;; -E01D4;VARIATION SELECTOR-229;Mn;0;NSM;;;;;N;;;;; -E01D5;VARIATION SELECTOR-230;Mn;0;NSM;;;;;N;;;;; -E01D6;VARIATION SELECTOR-231;Mn;0;NSM;;;;;N;;;;; -E01D7;VARIATION SELECTOR-232;Mn;0;NSM;;;;;N;;;;; -E01D8;VARIATION SELECTOR-233;Mn;0;NSM;;;;;N;;;;; -E01D9;VARIATION SELECTOR-234;Mn;0;NSM;;;;;N;;;;; -E01DA;VARIATION SELECTOR-235;Mn;0;NSM;;;;;N;;;;; -E01DB;VARIATION SELECTOR-236;Mn;0;NSM;;;;;N;;;;; -E01DC;VARIATION SELECTOR-237;Mn;0;NSM;;;;;N;;;;; -E01DD;VARIATION SELECTOR-238;Mn;0;NSM;;;;;N;;;;; -E01DE;VARIATION SELECTOR-239;Mn;0;NSM;;;;;N;;;;; -E01DF;VARIATION SELECTOR-240;Mn;0;NSM;;;;;N;;;;; -E01E0;VARIATION SELECTOR-241;Mn;0;NSM;;;;;N;;;;; -E01E1;VARIATION SELECTOR-242;Mn;0;NSM;;;;;N;;;;; -E01E2;VARIATION SELECTOR-243;Mn;0;NSM;;;;;N;;;;; -E01E3;VARIATION SELECTOR-244;Mn;0;NSM;;;;;N;;;;; -E01E4;VARIATION SELECTOR-245;Mn;0;NSM;;;;;N;;;;; -E01E5;VARIATION SELECTOR-246;Mn;0;NSM;;;;;N;;;;; -E01E6;VARIATION SELECTOR-247;Mn;0;NSM;;;;;N;;;;; -E01E7;VARIATION SELECTOR-248;Mn;0;NSM;;;;;N;;;;; -E01E8;VARIATION SELECTOR-249;Mn;0;NSM;;;;;N;;;;; -E01E9;VARIATION SELECTOR-250;Mn;0;NSM;;;;;N;;;;; -E01EA;VARIATION SELECTOR-251;Mn;0;NSM;;;;;N;;;;; -E01EB;VARIATION SELECTOR-252;Mn;0;NSM;;;;;N;;;;; -E01EC;VARIATION SELECTOR-253;Mn;0;NSM;;;;;N;;;;; -E01ED;VARIATION SELECTOR-254;Mn;0;NSM;;;;;N;;;;; -E01EE;VARIATION SELECTOR-255;Mn;0;NSM;;;;;N;;;;; -E01EF;VARIATION SELECTOR-256;Mn;0;NSM;;;;;N;;;;; -F0000;;Co;0;L;;;;;N;;;;; -FFFFD;;Co;0;L;;;;;N;;;;; -100000;;Co;0;L;;;;;N;;;;; -10FFFD;;Co;0;L;;;;;N;;;;; diff --git a/enc/unicode/name2ctype.h b/enc/unicode/name2ctype.h index 879cbcb5b2bbfc..2248b8f7cb1dbd 100644 --- a/enc/unicode/name2ctype.h +++ b/enc/unicode/name2ctype.h @@ -3,7 +3,7 @@ #ifndef USE_UNICODE_PROPERTIES /* Computed positions: -k'1,3' */ #else /* USE_UNICODE_PROPERTIES */ -/* Computed positions: -k'1-3' */ +/* Computed positions: -k'1-3,6,12,16,$' */ #endif /* USE_UNICODE_PROPERTIES */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -35,65 +35,45 @@ error "gperf generated tables don't work with this execution character set. Plea -/* 'NEWLINE': [[:NEWLINE:]] */ -static const OnigCodePoint CR_NEWLINE[] = { +#ifdef USE_UNICODE_PROPERTIES +#ifdef USE_UNICODE_PROPERTIES +/* 'Any': - */ +static const OnigCodePoint CR_Any[] = { 1, - 0x000a, 0x000a, -}; /* CR_NEWLINE */ + 0x0000, 0x10ffff, +}; /* CR_Any */ -/* 'Alpha': [[:Alpha:]] */ -static const OnigCodePoint CR_Alpha[] = { - 452, - 0x0041, 0x005a, - 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, - 0x0386, 0x0386, - 0x0388, 0x038a, +/* 'Assigned': - */ +static const OnigCodePoint CR_Assigned[] = { + 485, + 0x0000, 0x0377, + 0x037a, 0x037e, + 0x0384, 0x038a, 0x038c, 0x038c, 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x0483, 0x0523, + 0x03a3, 0x0525, 0x0531, 0x0556, - 0x0559, 0x0559, + 0x0559, 0x055f, 0x0561, 0x0587, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, + 0x0589, 0x058a, + 0x0591, 0x05c7, 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0610, 0x061a, + 0x05f0, 0x05f4, + 0x0600, 0x0603, + 0x0606, 0x061b, + 0x061e, 0x061f, 0x0621, 0x065e, - 0x066e, 0x06d3, - 0x06d5, 0x06dc, - 0x06de, 0x06e8, - 0x06ea, 0x06ef, - 0x06fa, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x074a, + 0x0660, 0x070d, + 0x070f, 0x074a, 0x074d, 0x07b1, - 0x07ca, 0x07f5, - 0x07fa, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0963, - 0x0971, 0x0972, - 0x097b, 0x097f, + 0x07c0, 0x07fa, + 0x0800, 0x082d, + 0x0830, 0x083e, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0972, + 0x0979, 0x097f, 0x0981, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, @@ -107,7 +87,7 @@ static const OnigCodePoint CR_Alpha[] = { 0x09d7, 0x09d7, 0x09dc, 0x09dd, 0x09df, 0x09e3, - 0x09f0, 0x09f1, + 0x09e6, 0x09fb, 0x0a01, 0x0a03, 0x0a05, 0x0a0a, 0x0a0f, 0x0a10, @@ -123,7 +103,7 @@ static const OnigCodePoint CR_Alpha[] = { 0x0a51, 0x0a51, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e, - 0x0a70, 0x0a75, + 0x0a66, 0x0a75, 0x0a81, 0x0a83, 0x0a85, 0x0a8d, 0x0a8f, 0x0a91, @@ -136,6 +116,8 @@ static const OnigCodePoint CR_Alpha[] = { 0x0acb, 0x0acd, 0x0ad0, 0x0ad0, 0x0ae0, 0x0ae3, + 0x0ae6, 0x0aef, + 0x0af1, 0x0af1, 0x0b01, 0x0b03, 0x0b05, 0x0b0c, 0x0b0f, 0x0b10, @@ -149,7 +131,7 @@ static const OnigCodePoint CR_Alpha[] = { 0x0b56, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b63, - 0x0b71, 0x0b71, + 0x0b66, 0x0b71, 0x0b82, 0x0b83, 0x0b85, 0x0b8a, 0x0b8e, 0x0b90, @@ -165,6 +147,7 @@ static const OnigCodePoint CR_Alpha[] = { 0x0bca, 0x0bcd, 0x0bd0, 0x0bd0, 0x0bd7, 0x0bd7, + 0x0be6, 0x0bfa, 0x0c01, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, @@ -177,6 +160,8 @@ static const OnigCodePoint CR_Alpha[] = { 0x0c55, 0x0c56, 0x0c58, 0x0c59, 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c78, 0x0c7f, 0x0c82, 0x0c83, 0x0c85, 0x0c8c, 0x0c8e, 0x0c90, @@ -189,6 +174,8 @@ static const OnigCodePoint CR_Alpha[] = { 0x0cd5, 0x0cd6, 0x0cde, 0x0cde, 0x0ce0, 0x0ce3, + 0x0ce6, 0x0cef, + 0x0cf1, 0x0cf2, 0x0d02, 0x0d03, 0x0d05, 0x0d0c, 0x0d0e, 0x0d10, @@ -199,7 +186,8 @@ static const OnigCodePoint CR_Alpha[] = { 0x0d4a, 0x0d4d, 0x0d57, 0x0d57, 0x0d60, 0x0d63, - 0x0d7a, 0x0d7f, + 0x0d66, 0x0d75, + 0x0d79, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, @@ -210,9 +198,9 @@ static const OnigCodePoint CR_Alpha[] = { 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, - 0x0df2, 0x0df3, + 0x0df2, 0x0df4, 0x0e01, 0x0e3a, - 0x0e40, 0x0e4e, + 0x0e3f, 0x0e5b, 0x0e81, 0x0e82, 0x0e84, 0x0e84, 0x0e87, 0x0e88, @@ -229,28 +217,18 @@ static const OnigCodePoint CR_Alpha[] = { 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, 0x0ec8, 0x0ecd, + 0x0ed0, 0x0ed9, 0x0edc, 0x0edd, - 0x0f00, 0x0f00, - 0x0f18, 0x0f19, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f3e, 0x0f47, + 0x0f00, 0x0f47, 0x0f49, 0x0f6c, - 0x0f71, 0x0f84, - 0x0f86, 0x0f8b, + 0x0f71, 0x0f8b, 0x0f90, 0x0f97, 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x1000, 0x103f, - 0x1050, 0x108f, - 0x10a0, 0x10c5, - 0x10d0, 0x10fa, - 0x10fc, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1200, 0x1248, + 0x0fbe, 0x0fcc, + 0x0fce, 0x0fd8, + 0x1000, 0x10c5, + 0x10d0, 0x10fc, + 0x1100, 0x1248, 0x124a, 0x124d, 0x1250, 0x1256, 0x1258, 0x1258, @@ -266,44 +244,51 @@ static const OnigCodePoint CR_Alpha[] = { 0x12d8, 0x1310, 0x1312, 0x1315, 0x1318, 0x135a, - 0x135f, 0x135f, - 0x1380, 0x138f, + 0x135f, 0x137c, + 0x1380, 0x1399, 0x13a0, 0x13f4, - 0x1401, 0x166c, - 0x166f, 0x1676, - 0x1681, 0x169a, - 0x16a0, 0x16ea, + 0x1400, 0x169c, + 0x16a0, 0x16f0, 0x1700, 0x170c, 0x170e, 0x1714, - 0x1720, 0x1734, + 0x1720, 0x1736, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17d3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dd, - 0x180b, 0x180d, + 0x1780, 0x17dd, + 0x17e0, 0x17e9, + 0x17f0, 0x17f9, + 0x1800, 0x180e, + 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18aa, + 0x18b0, 0x18f5, 0x1900, 0x191c, 0x1920, 0x192b, 0x1930, 0x193b, - 0x1950, 0x196d, + 0x1940, 0x1940, + 0x1944, 0x196d, 0x1970, 0x1974, - 0x1980, 0x19a9, + 0x1980, 0x19ab, 0x19b0, 0x19c9, - 0x1a00, 0x1a1b, + 0x19d0, 0x19da, + 0x19de, 0x1a1b, + 0x1a1e, 0x1a5e, + 0x1a60, 0x1a7c, + 0x1a7f, 0x1a89, + 0x1a90, 0x1a99, + 0x1aa0, 0x1aad, 0x1b00, 0x1b4b, - 0x1b6b, 0x1b73, + 0x1b50, 0x1b7c, 0x1b80, 0x1baa, - 0x1bae, 0x1baf, + 0x1bae, 0x1bb9, 0x1c00, 0x1c37, - 0x1c4d, 0x1c4f, - 0x1c5a, 0x1c7d, + 0x1c3b, 0x1c49, + 0x1c4d, 0x1c7f, + 0x1cd0, 0x1cf2, 0x1d00, 0x1de6, - 0x1dfe, 0x1f15, + 0x1dfd, 0x1f15, 0x1f18, 0x1f1d, 0x1f20, 0x1f45, 0x1f48, 0x1f4d, @@ -313,39 +298,44 @@ static const OnigCodePoint CR_Alpha[] = { 0x1f5d, 0x1f5d, 0x1f5f, 0x1f7d, 0x1f80, 0x1fb4, - 0x1fb6, 0x1fbc, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fcc, - 0x1fd0, 0x1fd3, + 0x1fb6, 0x1fc4, + 0x1fc6, 0x1fd3, 0x1fd6, 0x1fdb, - 0x1fe0, 0x1fec, + 0x1fdd, 0x1fef, 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffc, - 0x2071, 0x2071, - 0x207f, 0x207f, + 0x1ff6, 0x1ffe, + 0x2000, 0x2064, + 0x206a, 0x2071, + 0x2074, 0x208e, 0x2090, 0x2094, + 0x20a0, 0x20b8, 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, - 0x2183, 0x2184, + 0x2100, 0x2189, + 0x2190, 0x23e8, + 0x2400, 0x2426, + 0x2440, 0x244a, + 0x2460, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, + 0x2701, 0x2704, + 0x2706, 0x2709, + 0x270c, 0x2727, + 0x2729, 0x274b, + 0x274d, 0x274d, + 0x274f, 0x2752, + 0x2756, 0x275e, + 0x2761, 0x2794, + 0x2798, 0x27af, + 0x27b1, 0x27be, + 0x27c0, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 0x2b4c, + 0x2b50, 0x2b59, 0x2c00, 0x2c2e, 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2ce4, - 0x2d00, 0x2d25, + 0x2c60, 0x2cf1, + 0x2cf9, 0x2d25, 0x2d30, 0x2d65, 0x2d6f, 0x2d6f, 0x2d80, 0x2d96, @@ -357,72 +347,83 @@ static const OnigCodePoint CR_Alpha[] = { 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, - 0x2de0, 0x2dff, - 0x2e2f, 0x2e2f, - 0x3005, 0x3006, - 0x302a, 0x302f, - 0x3031, 0x3035, - 0x303b, 0x303c, + 0x2de0, 0x2e31, + 0x2e80, 0x2e99, + 0x2e9b, 0x2ef3, + 0x2f00, 0x2fd5, + 0x2ff0, 0x2ffb, + 0x3000, 0x303f, 0x3041, 0x3096, - 0x3099, 0x309a, - 0x309d, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, + 0x3099, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, - 0x31a0, 0x31b7, - 0x31f0, 0x31ff, - 0x3400, 0x3400, - 0x4db5, 0x4db5, - 0x4e00, 0x4e00, - 0x9fc3, 0x9fc3, + 0x3190, 0x31b7, + 0x31c0, 0x31e3, + 0x31f0, 0x321e, + 0x3220, 0x32fe, + 0x3300, 0x4db5, + 0x4dc0, 0x9fcb, 0xa000, 0xa48c, - 0xa500, 0xa60c, - 0xa610, 0xa61f, - 0xa62a, 0xa62b, + 0xa490, 0xa4c6, + 0xa4d0, 0xa62b, 0xa640, 0xa65f, - 0xa662, 0xa672, - 0xa67c, 0xa67d, - 0xa67f, 0xa697, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa78c, - 0xa7fb, 0xa827, - 0xa840, 0xa873, + 0xa662, 0xa673, + 0xa67c, 0xa697, + 0xa6a0, 0xa6f7, + 0xa700, 0xa78c, + 0xa7fb, 0xa82b, + 0xa830, 0xa839, + 0xa840, 0xa877, 0xa880, 0xa8c4, - 0xa90a, 0xa92d, - 0xa930, 0xa953, + 0xa8ce, 0xa8d9, + 0xa8e0, 0xa8fb, + 0xa900, 0xa953, + 0xa95f, 0xa97c, + 0xa980, 0xa9cd, + 0xa9cf, 0xa9d9, + 0xa9de, 0xa9df, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, + 0xaa50, 0xaa59, + 0xaa5c, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadf, + 0xabc0, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xd800, 0xfa2d, + 0xfa30, 0xfa6d, 0xfa70, 0xfad9, 0xfb00, 0xfb06, 0xfb13, 0xfb17, - 0xfb1d, 0xfb28, - 0xfb2a, 0xfb36, + 0xfb1d, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44, 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3d, + 0xfbd3, 0xfd3f, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfb, - 0xfe00, 0xfe0f, + 0xfdf0, 0xfdfd, + 0xfe00, 0xfe19, 0xfe20, 0xfe26, + 0xfe30, 0xfe52, + 0xfe54, 0xfe66, + 0xfe68, 0xfe6b, 0xfe70, 0xfe74, 0xfe76, 0xfefc, - 0xff21, 0xff3a, - 0xff41, 0xff5a, - 0xff66, 0xffbe, + 0xfeff, 0xfeff, + 0xff01, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, + 0xffe0, 0xffe6, + 0xffe8, 0xffee, + 0xfff9, 0xfffd, 0x10000, 0x1000b, 0x1000d, 0x10026, 0x10028, 0x1003a, @@ -430,38 +431,57 @@ static const OnigCodePoint CR_Alpha[] = { 0x1003f, 0x1004d, 0x10050, 0x1005d, 0x10080, 0x100fa, - 0x101fd, 0x101fd, + 0x10100, 0x10102, + 0x10107, 0x10133, + 0x10137, 0x1018a, + 0x10190, 0x1019b, + 0x101d0, 0x101fd, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x10300, 0x1031e, - 0x10330, 0x10340, - 0x10342, 0x10349, + 0x10320, 0x10323, + 0x10330, 0x1034a, 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x10400, 0x1049d, + 0x1039f, 0x103c3, + 0x103c8, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, 0x10800, 0x10805, 0x10808, 0x10808, 0x1080a, 0x10835, 0x10837, 0x10838, 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10915, - 0x10920, 0x10939, + 0x1083f, 0x10855, + 0x10857, 0x1085f, + 0x10900, 0x1091b, + 0x1091f, 0x10939, + 0x1093f, 0x1093f, 0x10a00, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, + 0x10a3f, 0x10a47, + 0x10a50, 0x10a58, + 0x10a60, 0x10a7f, + 0x10b00, 0x10b35, + 0x10b39, 0x10b55, + 0x10b58, 0x10b72, + 0x10b78, 0x10b7f, + 0x10c00, 0x10c48, + 0x10e60, 0x10e7e, + 0x11080, 0x110c1, 0x12000, 0x1236e, - 0x1d165, 0x1d169, - 0x1d16d, 0x1d172, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, + 0x12400, 0x12462, + 0x12470, 0x12473, + 0x13000, 0x1342e, + 0x1d000, 0x1d0f5, + 0x1d100, 0x1d126, + 0x1d129, 0x1d1dd, + 0x1d200, 0x1d245, + 0x1d300, 0x1d356, + 0x1d360, 0x1d371, 0x1d400, 0x1d454, 0x1d456, 0x1d49c, 0x1d49e, 0x1d49f, @@ -481,3829 +501,99 @@ static const OnigCodePoint CR_Alpha[] = { 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, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, + 0x1d6a8, 0x1d7cb, + 0x1d7ce, 0x1d7ff, + 0x1f000, 0x1f02b, + 0x1f030, 0x1f093, + 0x1f100, 0x1f10a, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, 0x2f800, 0x2fa1d, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, 0xe0100, 0xe01ef, -}; /* CR_Alpha */ + 0xf0000, 0xffffd, + 0x100000, 0x10fffd, +}; /* CR_Assigned */ -/* 'Blank': [[:Blank:]] */ -static const OnigCodePoint CR_Blank[] = { - 9, - 0x0009, 0x0009, - 0x0020, 0x0020, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x180e, 0x180e, - 0x2000, 0x200a, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000, -}; /* CR_Blank */ +/* 'C': Major Category */ +static const OnigCodePoint CR_C[] = { + 20, + 0x0000, 0x001f, + 0x007f, 0x009f, + 0x00ad, 0x00ad, + 0x0600, 0x0603, + 0x06dd, 0x06dd, + 0x070f, 0x070f, + 0x17b4, 0x17b5, + 0x200b, 0x200f, + 0x202a, 0x202e, + 0x2060, 0x2064, + 0x206a, 0x206f, + 0xd800, 0xf8ff, + 0xfeff, 0xfeff, + 0xfff9, 0xfffb, + 0x110bd, 0x110bd, + 0x1d173, 0x1d17a, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, + 0xf0000, 0xffffd, + 0x100000, 0x10ffff, +}; /* CR_C */ -/* 'Cntrl': [[:Cntrl:]] */ -static const OnigCodePoint CR_Cntrl[] = { +/* 'Cc': General Category */ +static const OnigCodePoint CR_Cc[] = { 2, 0x0000, 0x001f, 0x007f, 0x009f, -}; /* CR_Cntrl */ +}; /* CR_Cc */ -/* 'Digit': [[:Digit:]] */ -static const OnigCodePoint CR_Digit[] = { - 33, - 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, - 0x0e50, 0x0e59, - 0x0ed0, 0x0ed9, - 0x0f20, 0x0f29, - 0x1040, 0x1049, - 0x1090, 0x1099, - 0x17e0, 0x17e9, - 0x1810, 0x1819, - 0x1946, 0x194f, - 0x19d0, 0x19d9, - 0x1b50, 0x1b59, - 0x1bb0, 0x1bb9, - 0x1c40, 0x1c49, - 0x1c50, 0x1c59, - 0xa620, 0xa629, - 0xa8d0, 0xa8d9, - 0xa900, 0xa909, - 0xaa50, 0xaa59, - 0xff10, 0xff19, - 0x104a0, 0x104a9, - 0x1d7ce, 0x1d7ff, -}; /* CR_Digit */ - -/* 'Graph': [[:Graph:]] */ -static const OnigCodePoint CR_Graph[] = { - 449, - 0x0021, 0x007e, - 0x00a1, 0x00ac, - 0x00ae, 0x0377, - 0x037a, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x0523, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0606, 0x061b, - 0x061e, 0x061f, - 0x0621, 0x065e, - 0x0660, 0x06dc, - 0x06de, 0x070d, - 0x0710, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0972, - 0x097b, 0x097f, - 0x0981, 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, 0x09fa, - 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, - 0x0af1, 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, 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, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, - 0x0c82, 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, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 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, - 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, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fd4, - 0x1000, 0x1099, - 0x109e, 0x10c5, - 0x10d0, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x135f, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1401, 0x1676, - 0x1681, 0x169c, - 0x16a0, 0x16f0, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180d, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a1f, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, - 0x1c00, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c7f, - 0x1d00, 0x1de6, - 0x1dfe, 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, - 0x2010, 0x2027, - 0x2030, 0x205e, - 0x2070, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x2094, - 0x20a0, 0x20b5, - 0x20d0, 0x20f0, - 0x2100, 0x214f, - 0x2153, 0x2188, - 0x2190, 0x23e7, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27ca, - 0x27cc, 0x27cc, - 0x27d0, 0x2b4c, - 0x2b50, 0x2b54, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2cea, - 0x2cf9, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e30, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3001, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31b7, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x3243, - 0x3250, 0x32fe, - 0x3300, 0x3400, - 0x4db5, 0x4db5, - 0x4dc0, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa500, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa673, - 0xa67c, 0xa697, - 0xa700, 0xa78c, - 0xa7fb, 0xa82b, - 0xa840, 0xa877, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, - 0xa900, 0xa953, - 0xa95f, 0xa95f, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa5f, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe26, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xff01, 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, 0x1018a, - 0x10190, 0x1019b, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10919, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x12000, 0x1236e, - 0x12400, 0x12462, - 0x12470, 0x12473, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d172, - 0x1d17b, 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, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0100, 0xe01ef, -}; /* CR_Graph */ - -/* 'Lower': [[:Lower:]] */ -static const OnigCodePoint CR_Lower[] = { - 598, - 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, 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, - 0x0561, 0x0587, - 0x1d00, 0x1d2b, - 0x1d62, 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, - 0x2071, 0x2071, - 0x207f, 0x207f, - 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, 0x2c7c, - 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, - 0x2d00, 0x2d25, - 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, - 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, - 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, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xff41, 0xff5a, - 0x10428, 0x1044f, - 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, -}; /* CR_Lower */ - -/* 'Print': [[:Print:]] */ -static const OnigCodePoint CR_Print[] = { - 452, - 0x0009, 0x000d, - 0x0020, 0x007e, - 0x0085, 0x0085, - 0x00a0, 0x00ac, - 0x00ae, 0x0377, - 0x037a, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x0523, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0606, 0x061b, - 0x061e, 0x061f, - 0x0621, 0x065e, - 0x0660, 0x06dc, - 0x06de, 0x070d, - 0x0710, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0972, - 0x097b, 0x097f, - 0x0981, 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, 0x09fa, - 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, - 0x0af1, 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, 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, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, - 0x0c82, 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, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 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, - 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, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fd4, - 0x1000, 0x1099, - 0x109e, 0x10c5, - 0x10d0, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x135f, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1401, 0x1676, - 0x1680, 0x169c, - 0x16a0, 0x16f0, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a1f, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, - 0x1c00, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c7f, - 0x1d00, 0x1de6, - 0x1dfe, 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, 0x2029, - 0x202f, 0x205f, - 0x2070, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x2094, - 0x20a0, 0x20b5, - 0x20d0, 0x20f0, - 0x2100, 0x214f, - 0x2153, 0x2188, - 0x2190, 0x23e7, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27ca, - 0x27cc, 0x27cc, - 0x27d0, 0x2b4c, - 0x2b50, 0x2b54, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2cea, - 0x2cf9, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e30, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31b7, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x3243, - 0x3250, 0x32fe, - 0x3300, 0x3400, - 0x4db5, 0x4db5, - 0x4dc0, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa500, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa673, - 0xa67c, 0xa697, - 0xa700, 0xa78c, - 0xa7fb, 0xa82b, - 0xa840, 0xa877, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, - 0xa900, 0xa953, - 0xa95f, 0xa95f, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa5f, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe26, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xff01, 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, 0x1018a, - 0x10190, 0x1019b, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10919, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x12000, 0x1236e, - 0x12400, 0x12462, - 0x12470, 0x12473, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d172, - 0x1d17b, 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, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0100, 0xe01ef, -}; /* CR_Print */ - -/* 'Punct': [[:Punct:]] */ -static const OnigCodePoint CR_Punct[] = { - 112, - 0x0021, 0x0023, - 0x0025, 0x002a, - 0x002c, 0x002f, - 0x003a, 0x003b, - 0x003f, 0x0040, - 0x005b, 0x005d, - 0x005f, 0x005f, - 0x007b, 0x007b, - 0x007d, 0x007d, - 0x00a1, 0x00a1, - 0x00ab, 0x00ab, - 0x00b7, 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, - 0x0964, 0x0965, - 0x0970, 0x0970, - 0x0df4, 0x0df4, - 0x0e4f, 0x0e4f, - 0x0e5a, 0x0e5b, - 0x0f04, 0x0f12, - 0x0f3a, 0x0f3d, - 0x0f85, 0x0f85, - 0x0fd0, 0x0fd4, - 0x104a, 0x104f, - 0x10fb, 0x10fb, - 0x1361, 0x1368, - 0x166d, 0x166e, - 0x169b, 0x169c, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x17d4, 0x17d6, - 0x17d8, 0x17da, - 0x1800, 0x180a, - 0x1944, 0x1945, - 0x19de, 0x19df, - 0x1a1e, 0x1a1f, - 0x1b5a, 0x1b60, - 0x1c3b, 0x1c3f, - 0x1c7e, 0x1c7f, - 0x2010, 0x2027, - 0x2030, 0x2043, - 0x2045, 0x2051, - 0x2053, 0x205e, - 0x207d, 0x207e, - 0x208d, 0x208e, - 0x2329, 0x232a, - 0x2768, 0x2775, - 0x27c5, 0x27c6, - 0x27e6, 0x27ef, - 0x2983, 0x2998, - 0x29d8, 0x29db, - 0x29fc, 0x29fd, - 0x2cf9, 0x2cfc, - 0x2cfe, 0x2cff, - 0x2e00, 0x2e2e, - 0x2e30, 0x2e30, - 0x3001, 0x3003, - 0x3008, 0x3011, - 0x3014, 0x301f, - 0x3030, 0x3030, - 0x303d, 0x303d, - 0x30a0, 0x30a0, - 0x30fb, 0x30fb, - 0xa60d, 0xa60f, - 0xa673, 0xa673, - 0xa67e, 0xa67e, - 0xa874, 0xa877, - 0xa8ce, 0xa8cf, - 0xa92e, 0xa92f, - 0xa95f, 0xa95f, - 0xaa5c, 0xaa5f, - 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, 0x10101, - 0x1039f, 0x1039f, - 0x103d0, 0x103d0, - 0x1091f, 0x1091f, - 0x1093f, 0x1093f, - 0x10a50, 0x10a58, - 0x12470, 0x12473, -}; /* CR_Punct */ - -/* 'Space': [[:Space:]] */ -static const OnigCodePoint CR_Space[] = { - 11, - 0x0009, 0x000d, - 0x0020, 0x0020, - 0x0085, 0x0085, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x180e, 0x180e, - 0x2000, 0x200a, - 0x2028, 0x2029, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000, -}; /* CR_Space */ - -/* 'Upper': [[:Upper:]] */ -static const OnigCodePoint CR_Upper[] = { - 591, - 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, - 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, - 0x0531, 0x0556, - 0x10a0, 0x10c5, - 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, 0x2c6f, - 0x2c72, 0x2c72, - 0x2c75, 0x2c75, - 0x2c80, 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, - 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, - 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, - 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, - 0xff21, 0xff3a, - 0x10400, 0x10427, - 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, -}; /* CR_Upper */ - -/* 'XDigit': [[:XDigit:]] */ -static const OnigCodePoint CR_XDigit[] = { - 3, - 0x0030, 0x0039, - 0x0041, 0x0046, - 0x0061, 0x0066, -}; /* CR_XDigit */ - -/* 'Word': [[:Word:]] */ -static const OnigCodePoint CR_Word[] = { - 477, - 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, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x0483, 0x0523, - 0x0531, 0x0556, - 0x0559, 0x0559, - 0x0561, 0x0587, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0610, 0x061a, - 0x0621, 0x065e, - 0x0660, 0x0669, - 0x066e, 0x06d3, - 0x06d5, 0x06dc, - 0x06de, 0x06e8, - 0x06ea, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07f5, - 0x07fa, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0963, - 0x0966, 0x096f, - 0x0971, 0x0972, - 0x097b, 0x097f, - 0x0981, 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, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c82, 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, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 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, - 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, 0x0edd, - 0x0f00, 0x0f00, - 0x0f18, 0x0f19, - 0x0f20, 0x0f29, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f3e, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f84, - 0x0f86, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x1000, 0x1049, - 0x1050, 0x1099, - 0x10a0, 0x10c5, - 0x10d0, 0x10fa, - 0x10fc, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x135f, 0x135f, - 0x1380, 0x138f, - 0x13a0, 0x13f4, - 0x1401, 0x166c, - 0x166f, 0x1676, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1734, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17d3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dd, - 0x17e0, 0x17e9, - 0x180b, 0x180d, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1946, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x1a00, 0x1a1b, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b59, - 0x1b6b, 0x1b73, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, - 0x1c00, 0x1c37, - 0x1c40, 0x1c49, - 0x1c4d, 0x1c7d, - 0x1d00, 0x1de6, - 0x1dfe, 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, 0x2094, - 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, - 0x2183, 0x2184, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2ce4, - 0x2d00, 0x2d25, - 0x2d30, 0x2d65, - 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, 0x3006, - 0x302a, 0x302f, - 0x3031, 0x3035, - 0x303b, 0x303c, - 0x3041, 0x3096, - 0x3099, 0x309a, - 0x309d, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x31a0, 0x31b7, - 0x31f0, 0x31ff, - 0x3400, 0x3400, - 0x4db5, 0x4db5, - 0x4e00, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa500, 0xa60c, - 0xa610, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa672, - 0xa67c, 0xa67d, - 0xa67f, 0xa697, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa78c, - 0xa7fb, 0xa827, - 0xa840, 0xa873, - 0xa880, 0xa8c4, - 0xa8d0, 0xa8d9, - 0xa900, 0xa92d, - 0xa930, 0xa953, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 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, 0xfe26, - 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, - 0x101fd, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10330, 0x10340, - 0x10342, 0x10349, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10915, - 0x10920, 0x10939, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, - 0x12000, 0x1236e, - 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, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0100, 0xe01ef, -}; /* CR_Word */ - -/* 'Alnum': [[:Alnum:]] */ -static const OnigCodePoint CR_Alnum[] = { - 471, - 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, - 0x0300, 0x0374, - 0x0376, 0x0377, - 0x037a, 0x037d, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x0483, 0x0523, - 0x0531, 0x0556, - 0x0559, 0x0559, - 0x0561, 0x0587, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0610, 0x061a, - 0x0621, 0x065e, - 0x0660, 0x0669, - 0x066e, 0x06d3, - 0x06d5, 0x06dc, - 0x06de, 0x06e8, - 0x06ea, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07f5, - 0x07fa, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0963, - 0x0966, 0x096f, - 0x0971, 0x0972, - 0x097b, 0x097f, - 0x0981, 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, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c82, 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, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 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, - 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, 0x0edd, - 0x0f00, 0x0f00, - 0x0f18, 0x0f19, - 0x0f20, 0x0f29, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f3e, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f84, - 0x0f86, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x1000, 0x1049, - 0x1050, 0x1099, - 0x10a0, 0x10c5, - 0x10d0, 0x10fa, - 0x10fc, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x135f, 0x135f, - 0x1380, 0x138f, - 0x13a0, 0x13f4, - 0x1401, 0x166c, - 0x166f, 0x1676, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1734, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17d3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dd, - 0x17e0, 0x17e9, - 0x180b, 0x180d, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1946, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x1a00, 0x1a1b, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b59, - 0x1b6b, 0x1b73, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, - 0x1c00, 0x1c37, - 0x1c40, 0x1c49, - 0x1c4d, 0x1c7d, - 0x1d00, 0x1de6, - 0x1dfe, 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, 0x2094, - 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, - 0x2183, 0x2184, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2ce4, - 0x2d00, 0x2d25, - 0x2d30, 0x2d65, - 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, 0x3006, - 0x302a, 0x302f, - 0x3031, 0x3035, - 0x303b, 0x303c, - 0x3041, 0x3096, - 0x3099, 0x309a, - 0x309d, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x31a0, 0x31b7, - 0x31f0, 0x31ff, - 0x3400, 0x3400, - 0x4db5, 0x4db5, - 0x4e00, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa500, 0xa60c, - 0xa610, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa672, - 0xa67c, 0xa67d, - 0xa67f, 0xa697, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa78c, - 0xa7fb, 0xa827, - 0xa840, 0xa873, - 0xa880, 0xa8c4, - 0xa8d0, 0xa8d9, - 0xa900, 0xa92d, - 0xa930, 0xa953, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 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, 0xfe26, - 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, - 0x101fd, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10330, 0x10340, - 0x10342, 0x10349, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10915, - 0x10920, 0x10939, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, - 0x12000, 0x1236e, - 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, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0100, 0xe01ef, -}; /* CR_Alnum */ - -/* 'ASCII': [[:ASCII:]] */ -static const OnigCodePoint CR_ASCII[] = { - 1, - 0x0000, 0x007f, -}; /* CR_ASCII */ - -#ifdef USE_UNICODE_PROPERTIES -#ifdef USE_UNICODE_PROPERTIES -/* 'Any': - */ -static const OnigCodePoint CR_Any[] = { - 1, - 0x0000, 0x10ffff, -}; /* CR_Any */ - -/* 'Assigned': - */ -static const OnigCodePoint CR_Assigned[] = { - 454, - 0x0000, 0x0377, - 0x037a, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x0523, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0600, 0x0603, - 0x0606, 0x061b, - 0x061e, 0x061f, - 0x0621, 0x065e, - 0x0660, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0972, - 0x097b, 0x097f, - 0x0981, 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, 0x09fa, - 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, - 0x0af1, 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, 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, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, - 0x0c82, 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, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 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, - 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, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fd4, - 0x1000, 0x1099, - 0x109e, 0x10c5, - 0x10d0, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x135f, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1401, 0x1676, - 0x1680, 0x169c, - 0x16a0, 0x16f0, - 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, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a1f, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, - 0x1c00, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c7f, - 0x1d00, 0x1de6, - 0x1dfe, 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, - 0x206a, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x2094, - 0x20a0, 0x20b5, - 0x20d0, 0x20f0, - 0x2100, 0x214f, - 0x2153, 0x2188, - 0x2190, 0x23e7, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27ca, - 0x27cc, 0x27cc, - 0x27d0, 0x2b4c, - 0x2b50, 0x2b54, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2cea, - 0x2cf9, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e30, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31b7, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x3243, - 0x3250, 0x32fe, - 0x3300, 0x3400, - 0x4db5, 0x4db5, - 0x4dc0, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa500, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa673, - 0xa67c, 0xa697, - 0xa700, 0xa78c, - 0xa7fb, 0xa82b, - 0xa840, 0xa877, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, - 0xa900, 0xa953, - 0xa95f, 0xa95f, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa5f, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xd800, 0xd800, - 0xdb7f, 0xdb80, - 0xdbff, 0xdc00, - 0xdfff, 0xe000, - 0xf8ff, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe26, - 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, 0x1018a, - 0x10190, 0x1019b, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10919, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x12000, 0x1236e, - 0x12400, 0x12462, - 0x12470, 0x12473, - 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, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, - 0xf0000, 0xf0000, - 0xffffd, 0xffffd, - 0x100000, 0x100000, -}; /* CR_Assigned */ - -/* 'C': Major Category */ -static const OnigCodePoint CR_C[] = { - 25, - 0x0000, 0x001f, - 0x007f, 0x009f, - 0x00ad, 0x00ad, - 0x0600, 0x0603, - 0x06dd, 0x06dd, - 0x070f, 0x070f, - 0x17b4, 0x17b5, - 0x200b, 0x200f, - 0x202a, 0x202e, - 0x2060, 0x2064, - 0x206a, 0x206f, - 0xd800, 0xd800, - 0xdb7f, 0xdb80, - 0xdbff, 0xdc00, - 0xdfff, 0xe000, - 0xf8ff, 0xf8ff, - 0xfeff, 0xfeff, - 0xfff9, 0xfffb, - 0x1d173, 0x1d17a, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xf0000, 0xf0000, - 0xffffd, 0xffffd, - 0x100000, 0x100000, - 0x10fffd, 0x10ffff, -}; /* CR_C */ - -/* 'Cc': General Category */ -static const OnigCodePoint CR_Cc[] = { - 2, - 0x0000, 0x001f, - 0x007f, 0x009f, -}; /* CR_Cc */ - -/* 'Cf': General Category */ -static const OnigCodePoint CR_Cf[] = { - 14, - 0x00ad, 0x00ad, - 0x0600, 0x0603, - 0x06dd, 0x06dd, - 0x070f, 0x070f, - 0x17b4, 0x17b5, - 0x200b, 0x200f, - 0x202a, 0x202e, - 0x2060, 0x2064, - 0x206a, 0x206f, - 0xfeff, 0xfeff, - 0xfff9, 0xfffb, - 0x1d173, 0x1d17a, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, -}; /* CR_Cf */ +/* 'Cf': General Category */ +static const OnigCodePoint CR_Cf[] = { + 15, + 0x00ad, 0x00ad, + 0x0600, 0x0603, + 0x06dd, 0x06dd, + 0x070f, 0x070f, + 0x17b4, 0x17b5, + 0x200b, 0x200f, + 0x202a, 0x202e, + 0x2060, 0x2064, + 0x206a, 0x206f, + 0xfeff, 0xfeff, + 0xfff9, 0xfffb, + 0x110bd, 0x110bd, + 0x1d173, 0x1d17a, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, +}; /* CR_Cf */ /* 'Cn': General Category */ static const OnigCodePoint CR_Cn[] = { - 454, + 485, 0x0378, 0x0379, 0x037f, 0x0383, 0x038b, 0x038b, 0x038d, 0x038d, 0x03a2, 0x03a2, - 0x0524, 0x0530, + 0x0526, 0x0530, 0x0557, 0x0558, 0x0560, 0x0560, 0x0588, 0x0588, @@ -4318,11 +608,13 @@ static const OnigCodePoint CR_Cn[] = { 0x070e, 0x070e, 0x074b, 0x074c, 0x07b2, 0x07bf, - 0x07fb, 0x0900, + 0x07fb, 0x07ff, + 0x082e, 0x082f, + 0x083f, 0x08ff, 0x093a, 0x093b, - 0x094e, 0x094f, - 0x0955, 0x0957, - 0x0973, 0x097a, + 0x094f, 0x094f, + 0x0956, 0x0957, + 0x0973, 0x0978, 0x0980, 0x0980, 0x0984, 0x0984, 0x098d, 0x098e, @@ -4337,7 +629,7 @@ static const OnigCodePoint CR_Cn[] = { 0x09d8, 0x09db, 0x09de, 0x09de, 0x09e4, 0x09e5, - 0x09fb, 0x0a00, + 0x09fc, 0x0a00, 0x0a04, 0x0a04, 0x0a0b, 0x0a0e, 0x0a11, 0x0a12, @@ -4475,13 +767,9 @@ static const OnigCodePoint CR_Cn[] = { 0x0f98, 0x0f98, 0x0fbd, 0x0fbd, 0x0fcd, 0x0fcd, - 0x0fd5, 0x0fff, - 0x109a, 0x109d, + 0x0fd9, 0x0fff, 0x10c6, 0x10cf, 0x10fd, 0x10ff, - 0x115a, 0x115e, - 0x11a3, 0x11a7, - 0x11fa, 0x11ff, 0x1249, 0x1249, 0x124e, 0x124f, 0x1257, 0x1257, @@ -4500,8 +788,7 @@ static const OnigCodePoint CR_Cn[] = { 0x135b, 0x135e, 0x137d, 0x137f, 0x139a, 0x139f, - 0x13f5, 0x1400, - 0x1677, 0x167f, + 0x13f5, 0x13ff, 0x169d, 0x169f, 0x16f1, 0x16ff, 0x170d, 0x170d, @@ -4517,26 +804,32 @@ static const OnigCodePoint CR_Cn[] = { 0x180f, 0x180f, 0x181a, 0x181f, 0x1878, 0x187f, - 0x18ab, 0x18ff, + 0x18ab, 0x18af, + 0x18f6, 0x18ff, 0x191d, 0x191f, 0x192c, 0x192f, 0x193c, 0x193f, 0x1941, 0x1943, 0x196e, 0x196f, 0x1975, 0x197f, - 0x19aa, 0x19af, + 0x19ac, 0x19af, 0x19ca, 0x19cf, - 0x19da, 0x19dd, + 0x19db, 0x19dd, 0x1a1c, 0x1a1d, - 0x1a20, 0x1aff, + 0x1a5f, 0x1a5f, + 0x1a7d, 0x1a7e, + 0x1a8a, 0x1a8f, + 0x1a9a, 0x1a9f, + 0x1aae, 0x1aff, 0x1b4c, 0x1b4f, 0x1b7d, 0x1b7f, 0x1bab, 0x1bad, 0x1bba, 0x1bff, 0x1c38, 0x1c3a, 0x1c4a, 0x1c4c, - 0x1c80, 0x1cff, - 0x1de7, 0x1dfd, + 0x1c80, 0x1ccf, + 0x1cf3, 0x1cff, + 0x1de7, 0x1dfc, 0x1f16, 0x1f17, 0x1f1e, 0x1f1f, 0x1f46, 0x1f47, @@ -4557,23 +850,22 @@ static const OnigCodePoint CR_Cn[] = { 0x2072, 0x2073, 0x208f, 0x208f, 0x2095, 0x209f, - 0x20b6, 0x20cf, + 0x20b9, 0x20cf, 0x20f1, 0x20ff, - 0x2150, 0x2152, - 0x2189, 0x218f, - 0x23e8, 0x23ff, + 0x218a, 0x218f, + 0x23e9, 0x23ff, 0x2427, 0x243f, 0x244b, 0x245f, - 0x269e, 0x269f, - 0x26bd, 0x26bf, - 0x26c4, 0x2700, + 0x26ce, 0x26ce, + 0x26e2, 0x26e2, + 0x26e4, 0x26e7, + 0x2700, 0x2700, 0x2705, 0x2705, 0x270a, 0x270b, 0x2728, 0x2728, 0x274c, 0x274c, 0x274e, 0x274e, 0x2753, 0x2755, - 0x2757, 0x2757, 0x275f, 0x2760, 0x2795, 0x2797, 0x27b0, 0x27b0, @@ -4581,12 +873,10 @@ static const OnigCodePoint CR_Cn[] = { 0x27cb, 0x27cb, 0x27cd, 0x27cf, 0x2b4d, 0x2b4f, - 0x2b55, 0x2bff, + 0x2b5a, 0x2bff, 0x2c2f, 0x2c2f, 0x2c5f, 0x2c5f, - 0x2c70, 0x2c70, - 0x2c7e, 0x2c7f, - 0x2ceb, 0x2cf8, + 0x2cf2, 0x2cf8, 0x2d26, 0x2d2f, 0x2d66, 0x2d6e, 0x2d70, 0x2d7f, @@ -4599,7 +889,7 @@ static const OnigCodePoint CR_Cn[] = { 0x2dcf, 0x2dcf, 0x2dd7, 0x2dd7, 0x2ddf, 0x2ddf, - 0x2e31, 0x2e7f, + 0x2e32, 0x2e7f, 0x2e9a, 0x2e9a, 0x2ef4, 0x2eff, 0x2fd6, 0x2fef, @@ -4612,37 +902,41 @@ static const OnigCodePoint CR_Cn[] = { 0x31b8, 0x31bf, 0x31e4, 0x31ef, 0x321f, 0x321f, - 0x3244, 0x324f, 0x32ff, 0x32ff, - 0x3401, 0x4db4, 0x4db6, 0x4dbf, - 0x4e01, 0x9fc2, - 0x9fc4, 0x9fff, + 0x9fcc, 0x9fff, 0xa48d, 0xa48f, - 0xa4c7, 0xa4ff, + 0xa4c7, 0xa4cf, 0xa62c, 0xa63f, 0xa660, 0xa661, 0xa674, 0xa67b, - 0xa698, 0xa6ff, + 0xa698, 0xa69f, + 0xa6f8, 0xa6ff, 0xa78d, 0xa7fa, - 0xa82c, 0xa83f, + 0xa82c, 0xa82f, + 0xa83a, 0xa83f, 0xa878, 0xa87f, 0xa8c5, 0xa8cd, - 0xa8da, 0xa8ff, + 0xa8da, 0xa8df, + 0xa8fc, 0xa8ff, 0xa954, 0xa95e, - 0xa960, 0xa9ff, + 0xa97d, 0xa97f, + 0xa9ce, 0xa9ce, + 0xa9da, 0xa9dd, + 0xa9e0, 0xa9ff, 0xaa37, 0xaa3f, 0xaa4e, 0xaa4f, 0xaa5a, 0xaa5b, - 0xaa60, 0xabff, - 0xac01, 0xd7a2, - 0xd7a4, 0xd7ff, - 0xd801, 0xdb7e, - 0xdb81, 0xdbfe, - 0xdc01, 0xdffe, - 0xe001, 0xf8fe, + 0xaa7c, 0xaa7f, + 0xaac3, 0xaada, + 0xaae0, 0xabbf, + 0xabee, 0xabef, + 0xabfa, 0xabff, + 0xd7a4, 0xd7af, + 0xd7c7, 0xd7ca, + 0xd7fc, 0xd7ff, 0xfa2e, 0xfa2f, - 0xfa6b, 0xfa6f, + 0xfa6e, 0xfa6f, 0xfada, 0xfaff, 0xfb07, 0xfb12, 0xfb18, 0xfb1c, @@ -4699,8 +993,9 @@ static const OnigCodePoint CR_Cn[] = { 0x10836, 0x10836, 0x10839, 0x1083b, 0x1083d, 0x1083e, - 0x10840, 0x108ff, - 0x1091a, 0x1091e, + 0x10856, 0x10856, + 0x10860, 0x108ff, + 0x1091c, 0x1091e, 0x1093a, 0x1093e, 0x10940, 0x109ff, 0x10a04, 0x10a04, @@ -4710,10 +1005,19 @@ static const OnigCodePoint CR_Cn[] = { 0x10a34, 0x10a37, 0x10a3b, 0x10a3e, 0x10a48, 0x10a4f, - 0x10a59, 0x11fff, + 0x10a59, 0x10a5f, + 0x10a80, 0x10aff, + 0x10b36, 0x10b38, + 0x10b56, 0x10b57, + 0x10b73, 0x10b77, + 0x10b80, 0x10bff, + 0x10c49, 0x10e5f, + 0x10e7f, 0x1107f, + 0x110c2, 0x11fff, 0x1236f, 0x123ff, 0x12463, 0x1246f, - 0x12474, 0x1cfff, + 0x12474, 0x12fff, + 0x1342f, 0x1cfff, 0x1d0f6, 0x1d0ff, 0x1d127, 0x1d128, 0x1d1de, 0x1d1ff, @@ -4742,444 +1046,7093 @@ static const OnigCodePoint CR_Cn[] = { 0x1d7cc, 0x1d7cd, 0x1d800, 0x1efff, 0x1f02c, 0x1f02f, - 0x1f094, 0x1ffff, - 0x20001, 0x2a6d5, - 0x2a6d7, 0x2f7ff, + 0x1f094, 0x1f0ff, + 0x1f10b, 0x1f10f, + 0x1f12f, 0x1f130, + 0x1f132, 0x1f13c, + 0x1f13e, 0x1f13e, + 0x1f140, 0x1f141, + 0x1f143, 0x1f145, + 0x1f147, 0x1f149, + 0x1f14f, 0x1f156, + 0x1f158, 0x1f15e, + 0x1f160, 0x1f178, + 0x1f17a, 0x1f17a, + 0x1f17d, 0x1f17e, + 0x1f180, 0x1f189, + 0x1f18e, 0x1f18f, + 0x1f191, 0x1f1ff, + 0x1f201, 0x1f20f, + 0x1f232, 0x1f23f, + 0x1f249, 0x1ffff, + 0x2a6d7, 0x2a6ff, + 0x2b735, 0x2f7ff, 0x2fa1e, 0xe0000, 0xe0002, 0xe001f, 0xe0080, 0xe00ff, 0xe01f0, 0xeffff, - 0xf0001, 0xffffc, 0xffffe, 0xfffff, - 0x100001, 0x10ffff, + 0x10fffe, 0x10ffff, }; /* CR_Cn */ -/* 'Co': General Category */ -static const OnigCodePoint CR_Co[] = { - 6, - 0xe000, 0xe000, - 0xf8ff, 0xf8ff, - 0xf0000, 0xf0000, - 0xffffd, 0xffffd, - 0x100000, 0x100000, - 0x10fffd, 0x10fffd, -}; /* CR_Co */ +/* 'Co': General Category */ +static const OnigCodePoint CR_Co[] = { + 3, + 0xe000, 0xf8ff, + 0xf0000, 0xffffd, + 0x100000, 0x10fffd, +}; /* CR_Co */ + +/* 'Cs': General Category */ +static const OnigCodePoint CR_Cs[] = { + 1, + 0xd800, 0xdfff, +}; /* CR_Cs */ + +/* 'L': Major Category */ +static const OnigCodePoint CR_L[] = { + 422, + 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, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0621, 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, + 0x0904, 0x0939, + 0x093d, 0x093d, + 0x0950, 0x0950, + 0x0958, 0x0961, + 0x0971, 0x0972, + 0x0979, 0x097f, + 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, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c3d, + 0x0c58, 0x0c59, + 0x0c60, 0x0c61, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbd, 0x0cbd, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce1, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d3d, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f40, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f88, 0x0f8b, + 0x1000, 0x102a, + 0x103f, 0x103f, + 0x1050, 0x1055, + 0x105a, 0x105d, + 0x1061, 0x1061, + 0x1065, 0x1066, + 0x106e, 0x1070, + 0x1075, 0x1081, + 0x108e, 0x108e, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, + 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, 0x191c, + 0x1950, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19c1, 0x19c7, + 0x1a00, 0x1a16, + 0x1a20, 0x1a54, + 0x1aa7, 0x1aa7, + 0x1b05, 0x1b33, + 0x1b45, 0x1b4b, + 0x1b83, 0x1ba0, + 0x1bae, 0x1baf, + 0x1c00, 0x1c23, + 0x1c4d, 0x1c4f, + 0x1c5a, 0x1c7d, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf1, + 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, 0x2094, + 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, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa61f, + 0xa62a, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa67f, 0xa697, + 0xa6a0, 0xa6e5, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 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, + 0xaa00, 0xaa28, + 0xaa40, 0xaa42, + 0xaa44, 0xaa4b, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaaaf, + 0xaab1, 0xaab1, + 0xaab5, 0xaab6, + 0xaab9, 0xaabd, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabe2, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0x1031e, + 0x10330, 0x10340, + 0x10342, 0x10349, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x10400, 0x1049d, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a00, + 0x10a10, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11083, 0x110af, + 0x12000, 0x1236e, + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_L */ + +/* 'Ll': General Category */ +static const OnigCodePoint CR_Ll[] = { + 599, + 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, 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, + 0x0561, 0x0587, + 0x1d00, 0x1d2b, + 0x1d62, 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, 0x2c7c, + 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, + 0x2d00, 0x2d25, + 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, + 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, + 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, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xff41, 0xff5a, + 0x10428, 0x1044f, + 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, +}; /* CR_Ll */ + +/* 'Lm': General Category */ +static const OnigCodePoint CR_Lm[] = { + 49, + 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, 0x1d61, + 0x1d78, 0x1d78, + 0x1d9b, 0x1dbf, + 0x2071, 0x2071, + 0x207f, 0x207f, + 0x2090, 0x2094, + 0x2c7d, 0x2c7d, + 0x2d6f, 0x2d6f, + 0x2e2f, 0x2e2f, + 0x3005, 0x3005, + 0x3031, 0x3035, + 0x303b, 0x303b, + 0x309d, 0x309e, + 0x30fc, 0x30fe, + 0xa015, 0xa015, + 0xa4f8, 0xa4fd, + 0xa60c, 0xa60c, + 0xa67f, 0xa67f, + 0xa717, 0xa71f, + 0xa770, 0xa770, + 0xa788, 0xa788, + 0xa9cf, 0xa9cf, + 0xaa70, 0xaa70, + 0xaadd, 0xaadd, + 0xff70, 0xff70, + 0xff9e, 0xff9f, +}; /* CR_Lm */ + +/* 'Lo': General Category */ +static const OnigCodePoint CR_Lo[] = { + 311, + 0x01bb, 0x01bb, + 0x01c0, 0x01c3, + 0x0294, 0x0294, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0621, 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, + 0x0904, 0x0939, + 0x093d, 0x093d, + 0x0950, 0x0950, + 0x0958, 0x0961, + 0x0972, 0x0972, + 0x0979, 0x097f, + 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, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c3d, + 0x0c58, 0x0c59, + 0x0c60, 0x0c61, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbd, 0x0cbd, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce1, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d3d, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f40, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f88, 0x0f8b, + 0x1000, 0x102a, + 0x103f, 0x103f, + 0x1050, 0x1055, + 0x105a, 0x105d, + 0x1061, 0x1061, + 0x1065, 0x1066, + 0x106e, 0x1070, + 0x1075, 0x1081, + 0x108e, 0x108e, + 0x10d0, 0x10fa, + 0x1100, 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, + 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, 0x191c, + 0x1950, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19c1, 0x19c7, + 0x1a00, 0x1a16, + 0x1a20, 0x1a54, + 0x1b05, 0x1b33, + 0x1b45, 0x1b4b, + 0x1b83, 0x1ba0, + 0x1bae, 0x1baf, + 0x1c00, 0x1c23, + 0x1c4d, 0x1c4f, + 0x1c5a, 0x1c77, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf1, + 0x2135, 0x2138, + 0x2d30, 0x2d65, + 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa014, + 0xa016, 0xa48c, + 0xa4d0, 0xa4f7, + 0xa500, 0xa60b, + 0xa610, 0xa61f, + 0xa62a, 0xa62b, + 0xa66e, 0xa66e, + 0xa6a0, 0xa6e5, + 0xa7fb, 0xa801, + 0xa803, 0xa805, + 0xa807, 0xa80a, + 0xa80c, 0xa822, + 0xa840, 0xa873, + 0xa882, 0xa8b3, + 0xa8f2, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa90a, 0xa925, + 0xa930, 0xa946, + 0xa960, 0xa97c, + 0xa984, 0xa9b2, + 0xaa00, 0xaa28, + 0xaa40, 0xaa42, + 0xaa44, 0xaa4b, + 0xaa60, 0xaa6f, + 0xaa71, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaaaf, + 0xaab1, 0xaab1, + 0xaab5, 0xaab6, + 0xaab9, 0xaabd, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadc, + 0xabc0, 0xabe2, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0x1031e, + 0x10330, 0x10340, + 0x10342, 0x10349, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x10450, 0x1049d, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a00, + 0x10a10, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11083, 0x110af, + 0x12000, 0x1236e, + 0x13000, 0x1342e, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Lo */ + +/* '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, +}; /* CR_Lt */ + +/* 'Lu': General Category */ +static const OnigCodePoint CR_Lu[] = { + 594, + 0x0041, 0x005a, + 0x00c0, 0x00d6, + 0x00d8, 0x00de, + 0x0100, 0x0100, + 0x0102, 0x0102, + 0x0104, 0x0104, + 0x0106, 0x0106, + 0x0108, 0x0108, + 0x010a, 0x010a, + 0x010c, 0x010c, + 0x010e, 0x010e, + 0x0110, 0x0110, + 0x0112, 0x0112, + 0x0114, 0x0114, + 0x0116, 0x0116, + 0x0118, 0x0118, + 0x011a, 0x011a, + 0x011c, 0x011c, + 0x011e, 0x011e, + 0x0120, 0x0120, + 0x0122, 0x0122, + 0x0124, 0x0124, + 0x0126, 0x0126, + 0x0128, 0x0128, + 0x012a, 0x012a, + 0x012c, 0x012c, + 0x012e, 0x012e, + 0x0130, 0x0130, + 0x0132, 0x0132, + 0x0134, 0x0134, + 0x0136, 0x0136, + 0x0139, 0x0139, + 0x013b, 0x013b, + 0x013d, 0x013d, + 0x013f, 0x013f, + 0x0141, 0x0141, + 0x0143, 0x0143, + 0x0145, 0x0145, + 0x0147, 0x0147, + 0x014a, 0x014a, + 0x014c, 0x014c, + 0x014e, 0x014e, + 0x0150, 0x0150, + 0x0152, 0x0152, + 0x0154, 0x0154, + 0x0156, 0x0156, + 0x0158, 0x0158, + 0x015a, 0x015a, + 0x015c, 0x015c, + 0x015e, 0x015e, + 0x0160, 0x0160, + 0x0162, 0x0162, + 0x0164, 0x0164, + 0x0166, 0x0166, + 0x0168, 0x0168, + 0x016a, 0x016a, + 0x016c, 0x016c, + 0x016e, 0x016e, + 0x0170, 0x0170, + 0x0172, 0x0172, + 0x0174, 0x0174, + 0x0176, 0x0176, + 0x0178, 0x0179, + 0x017b, 0x017b, + 0x017d, 0x017d, + 0x0181, 0x0182, + 0x0184, 0x0184, + 0x0186, 0x0187, + 0x0189, 0x018b, + 0x018e, 0x0191, + 0x0193, 0x0194, + 0x0196, 0x0198, + 0x019c, 0x019d, + 0x019f, 0x01a0, + 0x01a2, 0x01a2, + 0x01a4, 0x01a4, + 0x01a6, 0x01a7, + 0x01a9, 0x01a9, + 0x01ac, 0x01ac, + 0x01ae, 0x01af, + 0x01b1, 0x01b3, + 0x01b5, 0x01b5, + 0x01b7, 0x01b8, + 0x01bc, 0x01bc, + 0x01c4, 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, + 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, + 0x0531, 0x0556, + 0x10a0, 0x10c5, + 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, + 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, + 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, + 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, + 0xff21, 0xff3a, + 0x10400, 0x10427, + 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, +}; /* CR_Lu */ + +/* 'M': Major Category */ +static const OnigCodePoint CR_M[] = { + 188, + 0x0300, 0x036f, + 0x0483, 0x0489, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x0610, 0x061a, + 0x064b, 0x065e, + 0x0670, 0x0670, + 0x06d6, 0x06dc, + 0x06de, 0x06e4, + 0x06e7, 0x06e8, + 0x06ea, 0x06ed, + 0x0711, 0x0711, + 0x0730, 0x074a, + 0x07a6, 0x07b0, + 0x07eb, 0x07f3, + 0x0816, 0x0819, + 0x081b, 0x0823, + 0x0825, 0x0827, + 0x0829, 0x082d, + 0x0900, 0x0903, + 0x093c, 0x093c, + 0x093e, 0x094e, + 0x0951, 0x0955, + 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, + 0x0c01, 0x0c03, + 0x0c3e, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c62, 0x0c63, + 0x0c82, 0x0c83, + 0x0cbc, 0x0cbc, + 0x0cbe, 0x0cc4, + 0x0cc6, 0x0cc8, + 0x0cca, 0x0ccd, + 0x0cd5, 0x0cd6, + 0x0ce2, 0x0ce3, + 0x0d02, 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, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fc6, 0x0fc6, + 0x102b, 0x103e, + 0x1056, 0x1059, + 0x105e, 0x1060, + 0x1062, 0x1064, + 0x1067, 0x106d, + 0x1071, 0x1074, + 0x1082, 0x108d, + 0x108f, 0x108f, + 0x109a, 0x109d, + 0x135f, 0x135f, + 0x1712, 0x1714, + 0x1732, 0x1734, + 0x1752, 0x1753, + 0x1772, 0x1773, + 0x17b6, 0x17d3, + 0x17dd, 0x17dd, + 0x180b, 0x180d, + 0x18a9, 0x18a9, + 0x1920, 0x192b, + 0x1930, 0x193b, + 0x19b0, 0x19c0, + 0x19c8, 0x19c9, + 0x1a17, 0x1a1b, + 0x1a55, 0x1a5e, + 0x1a60, 0x1a7c, + 0x1a7f, 0x1a7f, + 0x1b00, 0x1b04, + 0x1b34, 0x1b44, + 0x1b6b, 0x1b73, + 0x1b80, 0x1b82, + 0x1ba1, 0x1baa, + 0x1c24, 0x1c37, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1ce8, + 0x1ced, 0x1ced, + 0x1cf2, 0x1cf2, + 0x1dc0, 0x1de6, + 0x1dfd, 0x1dff, + 0x20d0, 0x20f0, + 0x2cef, 0x2cf1, + 0x2de0, 0x2dff, + 0x302a, 0x302f, + 0x3099, 0x309a, + 0xa66f, 0xa672, + 0xa67c, 0xa67d, + 0xa6f0, 0xa6f1, + 0xa802, 0xa802, + 0xa806, 0xa806, + 0xa80b, 0xa80b, + 0xa823, 0xa827, + 0xa880, 0xa881, + 0xa8b4, 0xa8c4, + 0xa8e0, 0xa8f1, + 0xa926, 0xa92d, + 0xa947, 0xa953, + 0xa980, 0xa983, + 0xa9b3, 0xa9c0, + 0xaa29, 0xaa36, + 0xaa43, 0xaa43, + 0xaa4c, 0xaa4d, + 0xaa7b, 0xaa7b, + 0xaab0, 0xaab0, + 0xaab2, 0xaab4, + 0xaab7, 0xaab8, + 0xaabe, 0xaabf, + 0xaac1, 0xaac1, + 0xabe3, 0xabea, + 0xabec, 0xabed, + 0xfb1e, 0xfb1e, + 0xfe00, 0xfe0f, + 0xfe20, 0xfe26, + 0x101fd, 0x101fd, + 0x10a01, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a0f, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x11080, 0x11082, + 0x110b0, 0x110ba, + 0x1d165, 0x1d169, + 0x1d16d, 0x1d172, + 0x1d17b, 0x1d182, + 0x1d185, 0x1d18b, + 0x1d1aa, 0x1d1ad, + 0x1d242, 0x1d244, + 0xe0100, 0xe01ef, +}; /* CR_M */ + +/* 'Mc': General Category */ +static const OnigCodePoint CR_Mc[] = { + 106, + 0x0903, 0x0903, + 0x093e, 0x0940, + 0x0949, 0x094c, + 0x094e, 0x094e, + 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, 0x1a1b, + 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, + 0x1c24, 0x1c2b, + 0x1c34, 0x1c35, + 0x1ce1, 0x1ce1, + 0x1cf2, 0x1cf2, + 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, + 0xabe3, 0xabe4, + 0xabe6, 0xabe7, + 0xabe9, 0xabea, + 0xabec, 0xabec, + 0x11082, 0x11082, + 0x110b0, 0x110b2, + 0x110b7, 0x110b8, + 0x1d165, 0x1d166, + 0x1d16d, 0x1d172, +}; /* CR_Mc */ + +/* 'Me': General Category */ +static const OnigCodePoint CR_Me[] = { + 5, + 0x0488, 0x0489, + 0x06de, 0x06de, + 0x20dd, 0x20e0, + 0x20e2, 0x20e4, + 0xa670, 0xa672, +}; /* CR_Me */ + +/* 'Mn': General Category */ +static const OnigCodePoint CR_Mn[] = { + 194, + 0x0300, 0x036f, + 0x0483, 0x0487, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x0610, 0x061a, + 0x064b, 0x065e, + 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, + 0x0900, 0x0902, + 0x093c, 0x093c, + 0x0941, 0x0948, + 0x094d, 0x094d, + 0x0951, 0x0955, + 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, + 0x0c3e, 0x0c40, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c62, 0x0c63, + 0x0cbc, 0x0cbc, + 0x0cbf, 0x0cbf, + 0x0cc6, 0x0cc6, + 0x0ccc, 0x0ccd, + 0x0ce2, 0x0ce3, + 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, + 0x0f90, 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, + 0x135f, 0x135f, + 0x1712, 0x1714, + 0x1732, 0x1734, + 0x1752, 0x1753, + 0x1772, 0x1773, + 0x17b7, 0x17bd, + 0x17c6, 0x17c6, + 0x17c9, 0x17d3, + 0x17dd, 0x17dd, + 0x180b, 0x180d, + 0x18a9, 0x18a9, + 0x1920, 0x1922, + 0x1927, 0x1928, + 0x1932, 0x1932, + 0x1939, 0x193b, + 0x1a17, 0x1a18, + 0x1a56, 0x1a56, + 0x1a58, 0x1a5e, + 0x1a60, 0x1a60, + 0x1a62, 0x1a62, + 0x1a65, 0x1a6c, + 0x1a73, 0x1a7c, + 0x1a7f, 0x1a7f, + 0x1b00, 0x1b03, + 0x1b34, 0x1b34, + 0x1b36, 0x1b3a, + 0x1b3c, 0x1b3c, + 0x1b42, 0x1b42, + 0x1b6b, 0x1b73, + 0x1b80, 0x1b81, + 0x1ba2, 0x1ba5, + 0x1ba8, 0x1ba9, + 0x1c2c, 0x1c33, + 0x1c36, 0x1c37, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1ce0, + 0x1ce2, 0x1ce8, + 0x1ced, 0x1ced, + 0x1dc0, 0x1de6, + 0x1dfd, 0x1dff, + 0x20d0, 0x20dc, + 0x20e1, 0x20e1, + 0x20e5, 0x20f0, + 0x2cef, 0x2cf1, + 0x2de0, 0x2dff, + 0x302a, 0x302f, + 0x3099, 0x309a, + 0xa66f, 0xa66f, + 0xa67c, 0xa67d, + 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, + 0xaa29, 0xaa2e, + 0xaa31, 0xaa32, + 0xaa35, 0xaa36, + 0xaa43, 0xaa43, + 0xaa4c, 0xaa4c, + 0xaab0, 0xaab0, + 0xaab2, 0xaab4, + 0xaab7, 0xaab8, + 0xaabe, 0xaabf, + 0xaac1, 0xaac1, + 0xabe5, 0xabe5, + 0xabe8, 0xabe8, + 0xabed, 0xabed, + 0xfb1e, 0xfb1e, + 0xfe00, 0xfe0f, + 0xfe20, 0xfe26, + 0x101fd, 0x101fd, + 0x10a01, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a0f, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x11080, 0x11081, + 0x110b3, 0x110b6, + 0x110b9, 0x110ba, + 0x1d167, 0x1d169, + 0x1d17b, 0x1d182, + 0x1d185, 0x1d18b, + 0x1d1aa, 0x1d1ad, + 0x1d242, 0x1d244, + 0xe0100, 0xe01ef, +}; /* CR_Mn */ + +/* 'N': Major Category */ +static const OnigCodePoint CR_N[] = { + 81, + 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, + 0x0be6, 0x0bf2, + 0x0c66, 0x0c6f, + 0x0c78, 0x0c7e, + 0x0ce6, 0x0cef, + 0x0d66, 0x0d75, + 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, + 0x3251, 0x325f, + 0x3280, 0x3289, + 0x32b1, 0x32bf, + 0xa620, 0xa629, + 0xa6e6, 0xa6ef, + 0xa830, 0xa835, + 0xa8d0, 0xa8d9, + 0xa900, 0xa909, + 0xa9d0, 0xa9d9, + 0xaa50, 0xaa59, + 0xabf0, 0xabf9, + 0xff10, 0xff19, + 0x10107, 0x10133, + 0x10140, 0x10178, + 0x1018a, 0x1018a, + 0x10320, 0x10323, + 0x10341, 0x10341, + 0x1034a, 0x1034a, + 0x103d1, 0x103d5, + 0x104a0, 0x104a9, + 0x10858, 0x1085f, + 0x10916, 0x1091b, + 0x10a40, 0x10a47, + 0x10a7d, 0x10a7e, + 0x10b58, 0x10b5f, + 0x10b78, 0x10b7f, + 0x10e60, 0x10e7e, + 0x12400, 0x12462, + 0x1d360, 0x1d371, + 0x1d7ce, 0x1d7ff, + 0x1f100, 0x1f10a, +}; /* CR_N */ + +/* 'Nd': General Category */ +static const OnigCodePoint CR_Nd[] = { + 37, + 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, + 0x0e50, 0x0e59, + 0x0ed0, 0x0ed9, + 0x0f20, 0x0f29, + 0x1040, 0x1049, + 0x1090, 0x1099, + 0x17e0, 0x17e9, + 0x1810, 0x1819, + 0x1946, 0x194f, + 0x19d0, 0x19da, + 0x1a80, 0x1a89, + 0x1a90, 0x1a99, + 0x1b50, 0x1b59, + 0x1bb0, 0x1bb9, + 0x1c40, 0x1c49, + 0x1c50, 0x1c59, + 0xa620, 0xa629, + 0xa8d0, 0xa8d9, + 0xa900, 0xa909, + 0xa9d0, 0xa9d9, + 0xaa50, 0xaa59, + 0xabf0, 0xabf9, + 0xff10, 0xff19, + 0x104a0, 0x104a9, + 0x1d7ce, 0x1d7ff, +}; /* CR_Nd */ + +/* '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, 0x12462, +}; /* CR_Nl */ + +/* 'No': General Category */ +static const OnigCodePoint CR_No[] = { + 38, + 0x00b2, 0x00b3, + 0x00b9, 0x00b9, + 0x00bc, 0x00be, + 0x09f4, 0x09f9, + 0x0bf0, 0x0bf2, + 0x0c78, 0x0c7e, + 0x0d70, 0x0d75, + 0x0f2a, 0x0f33, + 0x1369, 0x137c, + 0x17f0, 0x17f9, + 0x2070, 0x2070, + 0x2074, 0x2079, + 0x2080, 0x2089, + 0x2150, 0x215f, + 0x2189, 0x2189, + 0x2460, 0x249b, + 0x24ea, 0x24ff, + 0x2776, 0x2793, + 0x2cfd, 0x2cfd, + 0x3192, 0x3195, + 0x3220, 0x3229, + 0x3251, 0x325f, + 0x3280, 0x3289, + 0x32b1, 0x32bf, + 0xa830, 0xa835, + 0x10107, 0x10133, + 0x10175, 0x10178, + 0x1018a, 0x1018a, + 0x10320, 0x10323, + 0x10858, 0x1085f, + 0x10916, 0x1091b, + 0x10a40, 0x10a47, + 0x10a7d, 0x10a7e, + 0x10b58, 0x10b5f, + 0x10b78, 0x10b7f, + 0x10e60, 0x10e7e, + 0x1d360, 0x1d371, + 0x1f100, 0x1f10a, +}; /* CR_No */ + +/* 'P': Major Category */ +static const OnigCodePoint CR_P[] = { + 129, + 0x0021, 0x0023, + 0x0025, 0x002a, + 0x002c, 0x002f, + 0x003a, 0x003b, + 0x003f, 0x0040, + 0x005b, 0x005d, + 0x005f, 0x005f, + 0x007b, 0x007b, + 0x007d, 0x007d, + 0x00a1, 0x00a1, + 0x00ab, 0x00ab, + 0x00b7, 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, + 0x0964, 0x0965, + 0x0970, 0x0970, + 0x0df4, 0x0df4, + 0x0e4f, 0x0e4f, + 0x0e5a, 0x0e5b, + 0x0f04, 0x0f12, + 0x0f3a, 0x0f3d, + 0x0f85, 0x0f85, + 0x0fd0, 0x0fd4, + 0x104a, 0x104f, + 0x10fb, 0x10fb, + 0x1361, 0x1368, + 0x1400, 0x1400, + 0x166d, 0x166e, + 0x169b, 0x169c, + 0x16eb, 0x16ed, + 0x1735, 0x1736, + 0x17d4, 0x17d6, + 0x17d8, 0x17da, + 0x1800, 0x180a, + 0x1944, 0x1945, + 0x19de, 0x19df, + 0x1a1e, 0x1a1f, + 0x1aa0, 0x1aa6, + 0x1aa8, 0x1aad, + 0x1b5a, 0x1b60, + 0x1c3b, 0x1c3f, + 0x1c7e, 0x1c7f, + 0x1cd3, 0x1cd3, + 0x2010, 0x2027, + 0x2030, 0x2043, + 0x2045, 0x2051, + 0x2053, 0x205e, + 0x207d, 0x207e, + 0x208d, 0x208e, + 0x2329, 0x232a, + 0x2768, 0x2775, + 0x27c5, 0x27c6, + 0x27e6, 0x27ef, + 0x2983, 0x2998, + 0x29d8, 0x29db, + 0x29fc, 0x29fd, + 0x2cf9, 0x2cfc, + 0x2cfe, 0x2cff, + 0x2e00, 0x2e2e, + 0x2e30, 0x2e31, + 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, + 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, 0x10101, + 0x1039f, 0x1039f, + 0x103d0, 0x103d0, + 0x10857, 0x10857, + 0x1091f, 0x1091f, + 0x1093f, 0x1093f, + 0x10a50, 0x10a58, + 0x10a7f, 0x10a7f, + 0x10b39, 0x10b3f, + 0x110bb, 0x110bc, + 0x110be, 0x110c1, + 0x12470, 0x12473, +}; /* CR_P */ + +/* 'Pc': General Category */ +static const OnigCodePoint CR_Pc[] = { + 6, + 0x005f, 0x005f, + 0x203f, 0x2040, + 0x2054, 0x2054, + 0xfe33, 0xfe34, + 0xfe4d, 0xfe4f, + 0xff3f, 0xff3f, +}; /* CR_Pc */ + +/* 'Pd': General Category */ +static const OnigCodePoint CR_Pd[] = { + 15, + 0x002d, 0x002d, + 0x058a, 0x058a, + 0x05be, 0x05be, + 0x1400, 0x1400, + 0x1806, 0x1806, + 0x2010, 0x2015, + 0x2e17, 0x2e17, + 0x2e1a, 0x2e1a, + 0x301c, 0x301c, + 0x3030, 0x3030, + 0x30a0, 0x30a0, + 0xfe31, 0xfe32, + 0xfe58, 0xfe58, + 0xfe63, 0xfe63, + 0xff0d, 0xff0d, +}; /* CR_Pd */ + +/* 'Pe': General Category */ +static const OnigCodePoint CR_Pe[] = { + 70, + 0x0029, 0x0029, + 0x005d, 0x005d, + 0x007d, 0x007d, + 0x0f3b, 0x0f3b, + 0x0f3d, 0x0f3d, + 0x169c, 0x169c, + 0x2046, 0x2046, + 0x207e, 0x207e, + 0x208e, 0x208e, + 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, + 0xfd3f, 0xfd3f, + 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, +}; /* CR_Pe */ + +/* '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, +}; /* CR_Pf */ + +/* '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, +}; /* CR_Pi */ + +/* 'Po': General Category */ +static const OnigCodePoint CR_Po[] = { + 124, + 0x0021, 0x0023, + 0x0025, 0x0027, + 0x002a, 0x002a, + 0x002c, 0x002c, + 0x002e, 0x002f, + 0x003a, 0x003b, + 0x003f, 0x0040, + 0x005c, 0x005c, + 0x00a1, 0x00a1, + 0x00b7, 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, + 0x0964, 0x0965, + 0x0970, 0x0970, + 0x0df4, 0x0df4, + 0x0e4f, 0x0e4f, + 0x0e5a, 0x0e5b, + 0x0f04, 0x0f12, + 0x0f85, 0x0f85, + 0x0fd0, 0x0fd4, + 0x104a, 0x104f, + 0x10fb, 0x10fb, + 0x1361, 0x1368, + 0x166d, 0x166e, + 0x16eb, 0x16ed, + 0x1735, 0x1736, + 0x17d4, 0x17d6, + 0x17d8, 0x17da, + 0x1800, 0x1805, + 0x1807, 0x180a, + 0x1944, 0x1945, + 0x19de, 0x19df, + 0x1a1e, 0x1a1f, + 0x1aa0, 0x1aa6, + 0x1aa8, 0x1aad, + 0x1b5a, 0x1b60, + 0x1c3b, 0x1c3f, + 0x1c7e, 0x1c7f, + 0x1cd3, 0x1cd3, + 0x2016, 0x2017, + 0x2020, 0x2027, + 0x2030, 0x2038, + 0x203b, 0x203e, + 0x2041, 0x2043, + 0x2047, 0x2051, + 0x2053, 0x2053, + 0x2055, 0x205e, + 0x2cf9, 0x2cfc, + 0x2cfe, 0x2cff, + 0x2e00, 0x2e01, + 0x2e06, 0x2e08, + 0x2e0b, 0x2e0b, + 0x2e0e, 0x2e16, + 0x2e18, 0x2e19, + 0x2e1b, 0x2e1b, + 0x2e1e, 0x2e1f, + 0x2e2a, 0x2e2e, + 0x2e30, 0x2e31, + 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, + 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, 0x10101, + 0x1039f, 0x1039f, + 0x103d0, 0x103d0, + 0x10857, 0x10857, + 0x1091f, 0x1091f, + 0x1093f, 0x1093f, + 0x10a50, 0x10a58, + 0x10a7f, 0x10a7f, + 0x10b39, 0x10b3f, + 0x110bb, 0x110bc, + 0x110be, 0x110c1, + 0x12470, 0x12473, +}; /* CR_Po */ + +/* 'Ps': General Category */ +static const OnigCodePoint CR_Ps[] = { + 72, + 0x0028, 0x0028, + 0x005b, 0x005b, + 0x007b, 0x007b, + 0x0f3a, 0x0f3a, + 0x0f3c, 0x0f3c, + 0x169b, 0x169b, + 0x201a, 0x201a, + 0x201e, 0x201e, + 0x2045, 0x2045, + 0x207d, 0x207d, + 0x208d, 0x208d, + 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, + 0x3008, 0x3008, + 0x300a, 0x300a, + 0x300c, 0x300c, + 0x300e, 0x300e, + 0x3010, 0x3010, + 0x3014, 0x3014, + 0x3016, 0x3016, + 0x3018, 0x3018, + 0x301a, 0x301a, + 0x301d, 0x301d, + 0xfd3e, 0xfd3e, + 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, +}; /* CR_Ps */ + +/* 'S': Major Category */ +static const OnigCodePoint CR_S[] = { + 198, + 0x0024, 0x0024, + 0x002b, 0x002b, + 0x003c, 0x003e, + 0x005e, 0x005e, + 0x0060, 0x0060, + 0x007c, 0x007c, + 0x007e, 0x007e, + 0x00a2, 0x00a9, + 0x00ac, 0x00ac, + 0x00ae, 0x00b1, + 0x00b4, 0x00b4, + 0x00b6, 0x00b6, + 0x00b8, 0x00b8, + 0x00d7, 0x00d7, + 0x00f7, 0x00f7, + 0x02c2, 0x02c5, + 0x02d2, 0x02df, + 0x02e5, 0x02eb, + 0x02ed, 0x02ed, + 0x02ef, 0x02ff, + 0x0375, 0x0375, + 0x0384, 0x0385, + 0x03f6, 0x03f6, + 0x0482, 0x0482, + 0x0606, 0x0608, + 0x060b, 0x060b, + 0x060e, 0x060f, + 0x06e9, 0x06e9, + 0x06fd, 0x06fe, + 0x07f6, 0x07f6, + 0x09f2, 0x09f3, + 0x09fa, 0x09fb, + 0x0af1, 0x0af1, + 0x0b70, 0x0b70, + 0x0bf3, 0x0bfa, + 0x0c7f, 0x0c7f, + 0x0cf1, 0x0cf2, + 0x0d79, 0x0d79, + 0x0e3f, 0x0e3f, + 0x0f01, 0x0f03, + 0x0f13, 0x0f17, + 0x0f1a, 0x0f1f, + 0x0f34, 0x0f34, + 0x0f36, 0x0f36, + 0x0f38, 0x0f38, + 0x0fbe, 0x0fc5, + 0x0fc7, 0x0fcc, + 0x0fce, 0x0fcf, + 0x0fd5, 0x0fd8, + 0x109e, 0x109f, + 0x1360, 0x1360, + 0x1390, 0x1399, + 0x17db, 0x17db, + 0x1940, 0x1940, + 0x19e0, 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, 0x20b8, + 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, 0x2328, + 0x232b, 0x23e8, + 0x2400, 0x2426, + 0x2440, 0x244a, + 0x249c, 0x24e9, + 0x2500, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, + 0x2701, 0x2704, + 0x2706, 0x2709, + 0x270c, 0x2727, + 0x2729, 0x274b, + 0x274d, 0x274d, + 0x274f, 0x2752, + 0x2756, 0x275e, + 0x2761, 0x2767, + 0x2794, 0x2794, + 0x2798, 0x27af, + 0x27b1, 0x27be, + 0x27c0, 0x27c4, + 0x27c7, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 0x27e5, + 0x27f0, 0x2982, + 0x2999, 0x29d7, + 0x29dc, 0x29fb, + 0x29fe, 0x2b4c, + 0x2b50, 0x2b59, + 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, 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, + 0xfb29, 0xfb29, + 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, + 0x10102, 0x10102, + 0x10137, 0x1013f, + 0x10179, 0x10189, + 0x10190, 0x1019b, + 0x101d0, 0x101fc, + 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, + 0x1f000, 0x1f02b, + 0x1f030, 0x1f093, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, +}; /* CR_S */ + +/* 'Sc': General Category */ +static const OnigCodePoint CR_Sc[] = { + 16, + 0x0024, 0x0024, + 0x00a2, 0x00a5, + 0x060b, 0x060b, + 0x09f2, 0x09f3, + 0x09fb, 0x09fb, + 0x0af1, 0x0af1, + 0x0bf9, 0x0bf9, + 0x0e3f, 0x0e3f, + 0x17db, 0x17db, + 0x20a0, 0x20b8, + 0xa838, 0xa838, + 0xfdfc, 0xfdfc, + 0xfe69, 0xfe69, + 0xff04, 0xff04, + 0xffe0, 0xffe1, + 0xffe5, 0xffe6, +}; /* CR_Sc */ + +/* 'Sk': General Category */ +static const OnigCodePoint CR_Sk[] = { + 26, + 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, + 0xff3e, 0xff3e, + 0xff40, 0xff40, + 0xffe3, 0xffe3, +}; /* CR_Sk */ + +/* 'Sm': General Category */ +static const OnigCodePoint CR_Sm[] = { + 65, + 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, + 0x2140, 0x2144, + 0x214b, 0x214b, + 0x2190, 0x2194, + 0x219a, 0x219b, + 0x21a0, 0x21a0, + 0x21a3, 0x21a3, + 0x21a6, 0x21a6, + 0x21ae, 0x21ae, + 0x21ce, 0x21cf, + 0x21d2, 0x21d2, + 0x21d4, 0x21d4, + 0x21f4, 0x22ff, + 0x2308, 0x230b, + 0x2320, 0x2321, + 0x237c, 0x237c, + 0x239b, 0x23b3, + 0x23dc, 0x23e1, + 0x25b7, 0x25b7, + 0x25c1, 0x25c1, + 0x25f8, 0x25ff, + 0x266f, 0x266f, + 0x27c0, 0x27c4, + 0x27c7, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 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, +}; /* CR_Sm */ + +/* 'So': General Category */ +static const OnigCodePoint CR_So[] = { + 154, + 0x00a6, 0x00a7, + 0x00a9, 0x00a9, + 0x00ae, 0x00ae, + 0x00b0, 0x00b0, + 0x00b6, 0x00b6, + 0x0482, 0x0482, + 0x060e, 0x060f, + 0x06e9, 0x06e9, + 0x06fd, 0x06fe, + 0x07f6, 0x07f6, + 0x09fa, 0x09fa, + 0x0b70, 0x0b70, + 0x0bf3, 0x0bf8, + 0x0bfa, 0x0bfa, + 0x0c7f, 0x0c7f, + 0x0cf1, 0x0cf2, + 0x0d79, 0x0d79, + 0x0f01, 0x0f03, + 0x0f13, 0x0f17, + 0x0f1a, 0x0f1f, + 0x0f34, 0x0f34, + 0x0f36, 0x0f36, + 0x0f38, 0x0f38, + 0x0fbe, 0x0fc5, + 0x0fc7, 0x0fcc, + 0x0fce, 0x0fcf, + 0x0fd5, 0x0fd8, + 0x109e, 0x109f, + 0x1360, 0x1360, + 0x1390, 0x1399, + 0x1940, 0x1940, + 0x19e0, 0x19ff, + 0x1b61, 0x1b6a, + 0x1b74, 0x1b7c, + 0x2100, 0x2101, + 0x2103, 0x2106, + 0x2108, 0x2109, + 0x2114, 0x2114, + 0x2116, 0x2118, + 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, 0x23e8, + 0x2400, 0x2426, + 0x2440, 0x244a, + 0x249c, 0x24e9, + 0x2500, 0x25b6, + 0x25b8, 0x25c0, + 0x25c2, 0x25f7, + 0x2600, 0x266e, + 0x2670, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, + 0x2701, 0x2704, + 0x2706, 0x2709, + 0x270c, 0x2727, + 0x2729, 0x274b, + 0x274d, 0x274d, + 0x274f, 0x2752, + 0x2756, 0x275e, + 0x2761, 0x2767, + 0x2794, 0x2794, + 0x2798, 0x27af, + 0x27b1, 0x27be, + 0x2800, 0x28ff, + 0x2b00, 0x2b2f, + 0x2b45, 0x2b46, + 0x2b50, 0x2b59, + 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, 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, + 0x10102, 0x10102, + 0x10137, 0x1013f, + 0x10179, 0x10189, + 0x10190, 0x1019b, + 0x101d0, 0x101fc, + 0x1d000, 0x1d0f5, + 0x1d100, 0x1d126, + 0x1d129, 0x1d164, + 0x1d16a, 0x1d16c, + 0x1d183, 0x1d184, + 0x1d18c, 0x1d1a9, + 0x1d1ae, 0x1d1dd, + 0x1d200, 0x1d241, + 0x1d245, 0x1d245, + 0x1d300, 0x1d356, + 0x1f000, 0x1f02b, + 0x1f030, 0x1f093, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, +}; /* CR_So */ + +/* 'Z': Major Category */ +static const OnigCodePoint CR_Z[] = { + 9, + 0x0020, 0x0020, + 0x00a0, 0x00a0, + 0x1680, 0x1680, + 0x180e, 0x180e, + 0x2000, 0x200a, + 0x2028, 0x2029, + 0x202f, 0x202f, + 0x205f, 0x205f, + 0x3000, 0x3000, +}; /* CR_Z */ + +/* 'Zl': General Category */ +static const OnigCodePoint CR_Zl[] = { + 1, + 0x2028, 0x2028, +}; /* CR_Zl */ + +/* 'Zp': General Category */ +static const OnigCodePoint CR_Zp[] = { + 1, + 0x2029, 0x2029, +}; /* CR_Zp */ + +/* 'Zs': General Category */ +static const OnigCodePoint CR_Zs[] = { + 8, + 0x0020, 0x0020, + 0x00a0, 0x00a0, + 0x1680, 0x1680, + 0x180e, 0x180e, + 0x2000, 0x200a, + 0x202f, 0x202f, + 0x205f, 0x205f, + 0x3000, 0x3000, +}; /* CR_Zs */ + +/* 'Math': Derived Property */ +static const OnigCodePoint CR_Math[] = { + 105, + 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, + 0x210a, 0x2113, + 0x2115, 0x2115, + 0x2119, 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, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 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, +}; /* CR_Math */ + +/* 'Alphabetic': Derived Property */ +static const OnigCodePoint CR_Alphabetic[] = { + 474, + 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, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x05b0, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0610, 0x061a, + 0x0621, 0x0657, + 0x0659, 0x065e, + 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, + 0x0900, 0x0939, + 0x093d, 0x094c, + 0x094e, 0x094e, + 0x0950, 0x0950, + 0x0955, 0x0955, + 0x0958, 0x0963, + 0x0971, 0x0972, + 0x0979, 0x097f, + 0x0981, 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, + 0x0c01, 0x0c03, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4c, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c82, 0x0c83, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbd, 0x0cc4, + 0x0cc6, 0x0cc8, + 0x0cca, 0x0ccc, + 0x0cd5, 0x0cd6, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce3, + 0x0d02, 0x0d03, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4c, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f40, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f81, + 0x0f88, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x1000, 0x1036, + 0x1038, 0x1038, + 0x103b, 0x103f, + 0x1050, 0x1062, + 0x1065, 0x1068, + 0x106e, 0x1086, + 0x108e, 0x108e, + 0x109c, 0x109d, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, 0x16f0, + 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, 0x191c, + 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, + 0x1bae, 0x1baf, + 0x1c00, 0x1c35, + 0x1c4d, 0x1c4f, + 0x1c5a, 0x1c7d, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf2, + 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, 0x2094, + 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, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa61f, + 0xa62a, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa67f, 0xa697, + 0xa6a0, 0xa6ef, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 0xa801, + 0xa803, 0xa805, + 0xa807, 0xa80a, + 0xa80c, 0xa827, + 0xa840, 0xa873, + 0xa880, 0xa8c3, + 0xa8f2, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa90a, 0xa92a, + 0xa930, 0xa952, + 0xa960, 0xa97c, + 0xa980, 0xa9bf, + 0xa9cf, 0xa9cf, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaabe, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabea, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0x1031e, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11082, 0x110b8, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Alphabetic */ + +/* 'Lowercase': Derived Property */ +static const OnigCodePoint CR_Lowercase[] = { + 602, + 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, + 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, + 0x2090, 0x2094, + 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, + 0x2d00, 0x2d25, + 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, + 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, + 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, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xff41, 0xff5a, + 0x10428, 0x1044f, + 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, +}; /* CR_Lowercase */ + +/* 'Uppercase': Derived Property */ +static const OnigCodePoint CR_Uppercase[] = { + 596, + 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, + 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, + 0x0531, 0x0556, + 0x10a0, 0x10c5, + 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, + 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, + 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, + 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, + 0xff21, 0xff3a, + 0x10400, 0x10427, + 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, +}; /* CR_Uppercase */ + +/* 'Cased': Derived Property */ +static const OnigCodePoint CR_Cased[] = { + 110, + 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, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0561, 0x0587, + 0x10a0, 0x10c5, + 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, + 0x2090, 0x2094, + 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, + 0x2d00, 0x2d25, + 0xa640, 0xa65f, + 0xa662, 0xa66d, + 0xa680, 0xa697, + 0xa722, 0xa787, + 0xa78b, 0xa78c, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xff21, 0xff3a, + 0xff41, 0xff5a, + 0x10400, 0x1044f, + 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, +}; /* CR_Cased */ + +/* 'Case_Ignorable': Derived Property */ +static const OnigCodePoint CR_Case_Ignorable[] = { + 266, + 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, 0x0603, + 0x0610, 0x061a, + 0x0640, 0x0640, + 0x064b, 0x065e, + 0x0670, 0x0670, + 0x06d6, 0x06e8, + 0x06ea, 0x06ed, + 0x070f, 0x070f, + 0x0711, 0x0711, + 0x0730, 0x074a, + 0x07a6, 0x07b0, + 0x07eb, 0x07f5, + 0x07fa, 0x07fa, + 0x0816, 0x082d, + 0x0900, 0x0902, + 0x093c, 0x093c, + 0x0941, 0x0948, + 0x094d, 0x094d, + 0x0951, 0x0955, + 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, + 0x0c3e, 0x0c40, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c62, 0x0c63, + 0x0cbc, 0x0cbc, + 0x0cbf, 0x0cbf, + 0x0cc6, 0x0cc6, + 0x0ccc, 0x0ccd, + 0x0ce2, 0x0ce3, + 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, + 0x0f90, 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, + 0x135f, 0x135f, + 0x1712, 0x1714, + 0x1732, 0x1734, + 0x1752, 0x1753, + 0x1772, 0x1773, + 0x17b4, 0x17b5, + 0x17b7, 0x17bd, + 0x17c6, 0x17c6, + 0x17c9, 0x17d3, + 0x17d7, 0x17d7, + 0x17dd, 0x17dd, + 0x180b, 0x180d, + 0x1843, 0x1843, + 0x18a9, 0x18a9, + 0x1920, 0x1922, + 0x1927, 0x1928, + 0x1932, 0x1932, + 0x1939, 0x193b, + 0x1a17, 0x1a18, + 0x1a56, 0x1a56, + 0x1a58, 0x1a5e, + 0x1a60, 0x1a60, + 0x1a62, 0x1a62, + 0x1a65, 0x1a6c, + 0x1a73, 0x1a7c, + 0x1a7f, 0x1a7f, + 0x1aa7, 0x1aa7, + 0x1b00, 0x1b03, + 0x1b34, 0x1b34, + 0x1b36, 0x1b3a, + 0x1b3c, 0x1b3c, + 0x1b42, 0x1b42, + 0x1b6b, 0x1b73, + 0x1b80, 0x1b81, + 0x1ba2, 0x1ba5, + 0x1ba8, 0x1ba9, + 0x1c2c, 0x1c33, + 0x1c36, 0x1c37, + 0x1c78, 0x1c7d, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1ce0, + 0x1ce2, 0x1ce8, + 0x1ced, 0x1ced, + 0x1d2c, 0x1d61, + 0x1d78, 0x1d78, + 0x1d9b, 0x1de6, + 0x1dfd, 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, + 0x206a, 0x206f, + 0x2071, 0x2071, + 0x207f, 0x207f, + 0x2090, 0x2094, + 0x20d0, 0x20f0, + 0x2c7d, 0x2c7d, + 0x2cef, 0x2cf1, + 0x2d6f, 0x2d6f, + 0x2de0, 0x2dff, + 0x2e2f, 0x2e2f, + 0x3005, 0x3005, + 0x302a, 0x302f, + 0x3031, 0x3035, + 0x303b, 0x303b, + 0x3099, 0x309e, + 0x30fc, 0x30fe, + 0xa015, 0xa015, + 0xa4f8, 0xa4fd, + 0xa60c, 0xa60c, + 0xa66f, 0xa672, + 0xa67c, 0xa67d, + 0xa67f, 0xa67f, + 0xa6f0, 0xa6f1, + 0xa700, 0xa721, + 0xa770, 0xa770, + 0xa788, 0xa78a, + 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, + 0xaa29, 0xaa2e, + 0xaa31, 0xaa32, + 0xaa35, 0xaa36, + 0xaa43, 0xaa43, + 0xaa4c, 0xaa4c, + 0xaa70, 0xaa70, + 0xaab0, 0xaab0, + 0xaab2, 0xaab4, + 0xaab7, 0xaab8, + 0xaabe, 0xaabf, + 0xaac1, 0xaac1, + 0xaadd, 0xaadd, + 0xabe5, 0xabe5, + 0xabe8, 0xabe8, + 0xabed, 0xabed, + 0xfb1e, 0xfb1e, + 0xfe00, 0xfe0f, + 0xfe13, 0xfe13, + 0xfe20, 0xfe26, + 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, + 0x10a01, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a0f, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x11080, 0x11081, + 0x110b3, 0x110b6, + 0x110b9, 0x110ba, + 0x110bd, 0x110bd, + 0x1d167, 0x1d169, + 0x1d173, 0x1d182, + 0x1d185, 0x1d18b, + 0x1d1aa, 0x1d1ad, + 0x1d242, 0x1d244, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, + 0xe0100, 0xe01ef, +}; /* CR_Case_Ignorable */ -/* 'Cs': General Category */ -static const OnigCodePoint CR_Cs[] = { - 4, - 0xd800, 0xd800, - 0xdb7f, 0xdb80, - 0xdbff, 0xdc00, - 0xdfff, 0xdfff, -}; /* CR_Cs */ +/* 'Changes_When_Lowercased': Derived Property */ +static const OnigCodePoint CR_Changes_When_Lowercased[] = { + 557, + 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, + 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, + 0x0531, 0x0556, + 0x10a0, 0x10c5, + 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, + 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, + 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, + 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, + 0xff21, 0xff3a, + 0x10400, 0x10427, +}; /* CR_Changes_When_Lowercased */ -/* 'L': Major Category */ -static const OnigCodePoint CR_L[] = { - 394, - 0x0041, 0x005a, +/* 'Changes_When_Uppercased': Derived Property */ +static const OnigCodePoint CR_Changes_When_Uppercased[] = { + 573, 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, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x048a, 0x0523, - 0x0531, 0x0556, - 0x0559, 0x0559, + 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, 0x025b, + 0x0260, 0x0260, + 0x0263, 0x0263, + 0x0268, 0x0269, + 0x026b, 0x026b, + 0x026f, 0x026f, + 0x0271, 0x0272, + 0x0275, 0x0275, + 0x027d, 0x027d, + 0x0280, 0x0280, + 0x0283, 0x0283, + 0x0288, 0x028c, + 0x0292, 0x0292, + 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, 0x03f2, + 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, 0x0561, 0x0587, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0621, 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, - 0x0904, 0x0939, - 0x093d, 0x093d, - 0x0950, 0x0950, - 0x0958, 0x0961, - 0x0971, 0x0972, - 0x097b, 0x097f, - 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, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c3d, - 0x0c58, 0x0c59, - 0x0c60, 0x0c61, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbd, 0x0cbd, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d3d, - 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, 0x0edd, - 0x0f00, 0x0f00, - 0x0f40, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f88, 0x0f8b, - 0x1000, 0x102a, - 0x103f, 0x103f, - 0x1050, 0x1055, - 0x105a, 0x105d, - 0x1061, 0x1061, - 0x1065, 0x1066, - 0x106e, 0x1070, - 0x1075, 0x1081, - 0x108e, 0x108e, - 0x10a0, 0x10c5, - 0x10d0, 0x10fa, - 0x10fc, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x1380, 0x138f, - 0x13a0, 0x13f4, - 0x1401, 0x166c, - 0x166f, 0x1676, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x1700, 0x170c, - 0x170e, 0x1711, - 0x1720, 0x1731, - 0x1740, 0x1751, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1780, 0x17b3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dc, - 0x1820, 0x1877, - 0x1880, 0x18a8, - 0x18aa, 0x18aa, - 0x1900, 0x191c, - 0x1950, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19c1, 0x19c7, - 0x1a00, 0x1a16, - 0x1b05, 0x1b33, - 0x1b45, 0x1b4b, - 0x1b83, 0x1ba0, - 0x1bae, 0x1baf, - 0x1c00, 0x1c23, - 0x1c4d, 0x1c4f, - 0x1c5a, 0x1c7d, - 0x1d00, 0x1dbf, - 0x1e00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, + 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, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, + 0x1f60, 0x1f67, + 0x1f70, 0x1f7d, 0x1f80, 0x1fb4, - 0x1fb6, 0x1fbc, + 0x1fb6, 0x1fb7, + 0x1fbc, 0x1fbc, 0x1fbe, 0x1fbe, 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fcc, + 0x1fc6, 0x1fc7, + 0x1fcc, 0x1fcc, 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fe0, 0x1fec, + 0x1fd6, 0x1fd7, + 0x1fe0, 0x1fe7, 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffc, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x2094, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210a, 0x2113, - 0x2115, 0x2115, - 0x2119, 0x211d, - 0x2124, 0x2124, - 0x2126, 0x2126, - 0x2128, 0x2128, - 0x212a, 0x212d, - 0x212f, 0x2139, - 0x213c, 0x213f, - 0x2145, 0x2149, + 0x1ff6, 0x1ff7, + 0x1ffc, 0x1ffc, 0x214e, 0x214e, - 0x2183, 0x2184, - 0x2c00, 0x2c2e, + 0x2170, 0x217f, + 0x2184, 0x2184, + 0x24d0, 0x24e9, 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2ce4, + 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, 0x2d00, 0x2d25, - 0x2d30, 0x2d65, - 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, 0x31b7, - 0x31f0, 0x31ff, - 0x3400, 0x3400, - 0x4db5, 0x4db5, - 0x4e00, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa500, 0xa60c, - 0xa610, 0xa61f, - 0xa62a, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa66e, - 0xa67f, 0xa697, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa78c, - 0xa7fb, 0xa801, - 0xa803, 0xa805, - 0xa807, 0xa80a, - 0xa80c, 0xa822, - 0xa840, 0xa873, - 0xa882, 0xa8b3, - 0xa90a, 0xa925, - 0xa930, 0xa946, - 0xaa00, 0xaa28, - 0xaa40, 0xaa42, - 0xaa44, 0xaa4b, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, + 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, + 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, + 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, 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, 0x1031e, - 0x10330, 0x10340, - 0x10342, 0x10349, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x10400, 0x1049d, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10915, - 0x10920, 0x10939, - 0x10a00, 0x10a00, - 0x10a10, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x12000, 0x1236e, - 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, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, -}; /* CR_L */ + 0x10428, 0x1044f, +}; /* CR_Changes_When_Uppercased */ -/* 'Ll': General Category */ -static const OnigCodePoint CR_Ll[] = { - 598, +/* 'Changes_When_Titlecased': Derived Property */ +static const OnigCodePoint CR_Changes_When_Titlecased[] = { + 574, 0x0061, 0x007a, - 0x00aa, 0x00aa, 0x00b5, 0x00b5, - 0x00ba, 0x00ba, 0x00df, 0x00f6, 0x00f8, 0x00ff, 0x0101, 0x0101, @@ -5209,7 +8162,7 @@ static const OnigCodePoint CR_Ll[] = { 0x0131, 0x0131, 0x0133, 0x0133, 0x0135, 0x0135, - 0x0137, 0x0138, + 0x0137, 0x0137, 0x013a, 0x013a, 0x013c, 0x013c, 0x013e, 0x013e, @@ -5247,24 +8200,25 @@ static const OnigCodePoint CR_Ll[] = { 0x0183, 0x0183, 0x0185, 0x0185, 0x0188, 0x0188, - 0x018c, 0x018d, + 0x018c, 0x018c, 0x0192, 0x0192, 0x0195, 0x0195, - 0x0199, 0x019b, + 0x0199, 0x019a, 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, + 0x01b9, 0x01b9, + 0x01bd, 0x01bd, + 0x01bf, 0x01bf, + 0x01c4, 0x01c4, + 0x01c6, 0x01c7, + 0x01c9, 0x01ca, 0x01cc, 0x01cc, 0x01ce, 0x01ce, 0x01d0, 0x01d0, @@ -5282,7 +8236,7 @@ static const OnigCodePoint CR_Ll[] = { 0x01e9, 0x01e9, 0x01eb, 0x01eb, 0x01ed, 0x01ed, - 0x01ef, 0x01f0, + 0x01ef, 0x01f1, 0x01f3, 0x01f3, 0x01f5, 0x01f5, 0x01f9, 0x01f9, @@ -5305,7 +8259,6 @@ static const OnigCodePoint CR_Ll[] = { 0x021b, 0x021b, 0x021d, 0x021d, 0x021f, 0x021f, - 0x0221, 0x0221, 0x0223, 0x0223, 0x0225, 0x0225, 0x0227, 0x0227, @@ -5314,7 +8267,7 @@ static const OnigCodePoint CR_Ll[] = { 0x022d, 0x022d, 0x022f, 0x022f, 0x0231, 0x0231, - 0x0233, 0x0239, + 0x0233, 0x0233, 0x023c, 0x023c, 0x023f, 0x0240, 0x0242, 0x0242, @@ -5322,542 +8275,1615 @@ static const OnigCodePoint CR_Ll[] = { 0x0249, 0x0249, 0x024b, 0x024b, 0x024d, 0x024d, - 0x024f, 0x0293, - 0x0295, 0x02af, + 0x024f, 0x0254, + 0x0256, 0x0257, + 0x0259, 0x0259, + 0x025b, 0x025b, + 0x0260, 0x0260, + 0x0263, 0x0263, + 0x0268, 0x0269, + 0x026b, 0x026b, + 0x026f, 0x026f, + 0x0271, 0x0272, + 0x0275, 0x0275, + 0x027d, 0x027d, + 0x0280, 0x0280, + 0x0283, 0x0283, + 0x0288, 0x028c, + 0x0292, 0x0292, + 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, 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, + 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, 0x03f2, + 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, + 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, + 0x2d00, 0x2d25, + 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, + 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, + 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, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xff41, 0xff5a, + 0x10428, 0x1044f, +}; /* CR_Changes_When_Titlecased */ + +/* 'Changes_When_Casefolded': Derived Property */ +static const OnigCodePoint CR_Changes_When_Casefolded[] = { + 568, + 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, + 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, + 0x0531, 0x0556, + 0x0587, 0x0587, + 0x10a0, 0x10c5, + 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, + 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, + 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, + 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, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xff21, 0xff3a, + 0x10400, 0x10427, +}; /* CR_Changes_When_Casefolded */ + +/* 'Changes_When_Casemapped': Derived Property */ +static const OnigCodePoint CR_Changes_When_Casemapped[] = { + 97, + 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, 0x025b, + 0x0260, 0x0260, + 0x0263, 0x0263, + 0x0268, 0x0269, + 0x026b, 0x026b, + 0x026f, 0x026f, + 0x0271, 0x0272, + 0x0275, 0x0275, + 0x027d, 0x027d, + 0x0280, 0x0280, + 0x0283, 0x0283, + 0x0288, 0x028c, + 0x0292, 0x0292, + 0x0345, 0x0345, + 0x0370, 0x0373, + 0x0376, 0x0377, + 0x037b, 0x037d, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03d1, + 0x03d5, 0x03f2, + 0x03f4, 0x03f5, + 0x03f7, 0x03fb, + 0x03fd, 0x0481, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0561, 0x0587, + 0x10a0, 0x10c5, + 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, + 0x2d00, 0x2d25, + 0xa640, 0xa65f, + 0xa662, 0xa66d, + 0xa680, 0xa697, + 0xa722, 0xa72f, + 0xa732, 0xa76f, + 0xa779, 0xa787, + 0xa78b, 0xa78c, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xff21, 0xff3a, + 0xff41, 0xff5a, + 0x10400, 0x1044f, +}; /* CR_Changes_When_Casemapped */ + +/* 'ID_Start': Derived Property */ +static const OnigCodePoint CR_ID_Start[] = { + 424, + 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, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, 0x0561, 0x0587, - 0x1d00, 0x1d2b, - 0x1d62, 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, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0621, 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, + 0x0904, 0x0939, + 0x093d, 0x093d, + 0x0950, 0x0950, + 0x0958, 0x0961, + 0x0971, 0x0972, + 0x0979, 0x097f, + 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, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c3d, + 0x0c58, 0x0c59, + 0x0c60, 0x0c61, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbd, 0x0cbd, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce1, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d3d, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f40, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f88, 0x0f8b, + 0x1000, 0x102a, + 0x103f, 0x103f, + 0x1050, 0x1055, + 0x105a, 0x105d, + 0x1061, 0x1061, + 0x1065, 0x1066, + 0x106e, 0x1070, + 0x1075, 0x1081, + 0x108e, 0x108e, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, 0x16f0, + 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, 0x191c, + 0x1950, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19c1, 0x19c7, + 0x1a00, 0x1a16, + 0x1a20, 0x1a54, + 0x1aa7, 0x1aa7, + 0x1b05, 0x1b33, + 0x1b45, 0x1b4b, + 0x1b83, 0x1ba0, + 0x1bae, 0x1baf, + 0x1c00, 0x1c23, + 0x1c4d, 0x1c4f, + 0x1c5a, 0x1c7d, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf1, + 0x1d00, 0x1dbf, + 0x1e00, 0x1f15, + 0x1f18, 0x1f1d, + 0x1f20, 0x1f45, + 0x1f48, 0x1f4d, 0x1f50, 0x1f57, - 0x1f60, 0x1f67, - 0x1f70, 0x1f7d, - 0x1f80, 0x1f87, - 0x1f90, 0x1f97, - 0x1fa0, 0x1fa7, - 0x1fb0, 0x1fb4, - 0x1fb6, 0x1fb7, + 0x1f59, 0x1f59, + 0x1f5b, 0x1f5b, + 0x1f5d, 0x1f5d, + 0x1f5f, 0x1f7d, + 0x1f80, 0x1fb4, + 0x1fb6, 0x1fbc, 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fc7, - 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fd7, - 0x1fe0, 0x1fe7, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ff7, - 0x2071, 0x2071, - 0x207f, 0x207f, - 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, 0x2c7c, - 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, - 0x2d00, 0x2d25, - 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, - 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, - 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, + 0x1fc2, 0x1fc4, + 0x1fc6, 0x1fcc, + 0x1fd0, 0x1fd3, + 0x1fd6, 0x1fdb, + 0x1fe0, 0x1fec, + 0x1ff2, 0x1ff4, + 0x1ff6, 0x1ffc, + 0x2071, 0x2071, + 0x207f, 0x207f, + 0x2090, 0x2094, + 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, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa61f, + 0xa62a, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa67f, 0xa697, + 0xa6a0, 0xa6ef, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 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, + 0xaa00, 0xaa28, + 0xaa40, 0xaa42, + 0xaa44, 0xaa4b, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaaaf, + 0xaab1, 0xaab1, + 0xaab5, 0xaab6, + 0xaab9, 0xaabd, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabe2, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, - 0x10428, 0x1044f, - 0x1d41a, 0x1d433, - 0x1d44e, 0x1d454, - 0x1d456, 0x1d467, - 0x1d482, 0x1d49b, - 0x1d4b6, 0x1d4b9, + 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, 0x1031e, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a00, + 0x10a10, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11083, 0x110af, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 0x1d400, 0x1d454, + 0x1d456, 0x1d49c, + 0x1d49e, 0x1d49f, + 0x1d4a2, 0x1d4a2, + 0x1d4a5, 0x1d4a6, + 0x1d4a9, 0x1d4ac, + 0x1d4ae, 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, + 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, 0x1d6e1, + 0x1d6dc, 0x1d6fa, 0x1d6fc, 0x1d714, - 0x1d716, 0x1d71b, + 0x1d716, 0x1d734, 0x1d736, 0x1d74e, - 0x1d750, 0x1d755, + 0x1d750, 0x1d76e, 0x1d770, 0x1d788, - 0x1d78a, 0x1d78f, + 0x1d78a, 0x1d7a8, 0x1d7aa, 0x1d7c2, - 0x1d7c4, 0x1d7c9, - 0x1d7cb, 0x1d7cb, -}; /* CR_Ll */ + 0x1d7c4, 0x1d7cb, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_ID_Start */ -/* 'Lm': General Category */ -static const OnigCodePoint CR_Lm[] = { - 39, - 0x02b0, 0x02c1, +/* 'ID_Continue': Derived Property */ +static const OnigCodePoint CR_ID_Continue[] = { + 506, + 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, - 0x0374, 0x0374, - 0x037a, 0x037a, + 0x0300, 0x0374, + 0x0376, 0x0377, + 0x037a, 0x037d, + 0x0386, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x0483, 0x0487, + 0x048a, 0x0525, + 0x0531, 0x0556, 0x0559, 0x0559, - 0x0640, 0x0640, - 0x06e5, 0x06e6, - 0x07f4, 0x07f5, - 0x07fa, 0x07fa, - 0x0971, 0x0971, - 0x0e46, 0x0e46, - 0x0ec6, 0x0ec6, - 0x10fc, 0x10fc, - 0x17d7, 0x17d7, - 0x1843, 0x1843, - 0x1c78, 0x1c7d, - 0x1d2c, 0x1d61, - 0x1d78, 0x1d78, - 0x1d9b, 0x1dbf, - 0x2090, 0x2094, - 0x2c7d, 0x2c7d, - 0x2d6f, 0x2d6f, - 0x2e2f, 0x2e2f, - 0x3005, 0x3005, - 0x3031, 0x3035, - 0x303b, 0x303b, - 0x309d, 0x309e, - 0x30fc, 0x30fe, - 0xa015, 0xa015, - 0xa60c, 0xa60c, - 0xa67f, 0xa67f, - 0xa717, 0xa71f, - 0xa770, 0xa770, - 0xa788, 0xa788, - 0xff70, 0xff70, - 0xff9e, 0xff9f, -}; /* CR_Lm */ - -/* 'Lo': General Category */ -static const OnigCodePoint CR_Lo[] = { - 286, - 0x01bb, 0x01bb, - 0x01c0, 0x01c3, - 0x0294, 0x0294, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0621, 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, - 0x0904, 0x0939, - 0x093d, 0x093d, - 0x0950, 0x0950, - 0x0958, 0x0961, - 0x0972, 0x0972, - 0x097b, 0x097f, + 0x0561, 0x0587, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0610, 0x061a, + 0x0621, 0x065e, + 0x0660, 0x0669, + 0x066e, 0x06d3, + 0x06d5, 0x06dc, + 0x06df, 0x06e8, + 0x06ea, 0x06fc, + 0x06ff, 0x06ff, + 0x0710, 0x074a, + 0x074d, 0x07b1, + 0x07c0, 0x07f5, + 0x07fa, 0x07fa, + 0x0800, 0x082d, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0963, + 0x0966, 0x096f, + 0x0971, 0x0972, + 0x0979, 0x097f, + 0x0981, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, 0x0993, 0x09a8, 0x09aa, 0x09b0, 0x09b2, 0x09b2, 0x09b6, 0x09b9, - 0x09bd, 0x09bd, - 0x09ce, 0x09ce, + 0x09bc, 0x09c4, + 0x09c7, 0x09c8, + 0x09cb, 0x09ce, + 0x09d7, 0x09d7, 0x09dc, 0x09dd, - 0x09df, 0x09e1, - 0x09f0, 0x09f1, + 0x09df, 0x09e3, + 0x09e6, 0x09f1, + 0x0a01, 0x0a03, 0x0a05, 0x0a0a, 0x0a0f, 0x0a10, 0x0a13, 0x0a28, @@ -5865,29 +9891,43 @@ static const OnigCodePoint CR_Lo[] = { 0x0a32, 0x0a33, 0x0a35, 0x0a36, 0x0a38, 0x0a39, + 0x0a3c, 0x0a3c, + 0x0a3e, 0x0a42, + 0x0a47, 0x0a48, + 0x0a4b, 0x0a4d, + 0x0a51, 0x0a51, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e, - 0x0a72, 0x0a74, + 0x0a66, 0x0a75, + 0x0a81, 0x0a83, 0x0a85, 0x0a8d, 0x0a8f, 0x0a91, 0x0a93, 0x0aa8, 0x0aaa, 0x0ab0, 0x0ab2, 0x0ab3, 0x0ab5, 0x0ab9, - 0x0abd, 0x0abd, + 0x0abc, 0x0ac5, + 0x0ac7, 0x0ac9, + 0x0acb, 0x0acd, 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae1, + 0x0ae0, 0x0ae3, + 0x0ae6, 0x0aef, + 0x0b01, 0x0b03, 0x0b05, 0x0b0c, 0x0b0f, 0x0b10, 0x0b13, 0x0b28, 0x0b2a, 0x0b30, 0x0b32, 0x0b33, 0x0b35, 0x0b39, - 0x0b3d, 0x0b3d, + 0x0b3c, 0x0b44, + 0x0b47, 0x0b48, + 0x0b4b, 0x0b4d, + 0x0b56, 0x0b57, 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, + 0x0b5f, 0x0b63, + 0x0b66, 0x0b6f, 0x0b71, 0x0b71, - 0x0b83, 0x0b83, + 0x0b82, 0x0b83, 0x0b85, 0x0b8a, 0x0b8e, 0x0b90, 0x0b92, 0x0b95, @@ -5897,38 +9937,64 @@ static const OnigCodePoint CR_Lo[] = { 0x0ba3, 0x0ba4, 0x0ba8, 0x0baa, 0x0bae, 0x0bb9, + 0x0bbe, 0x0bc2, + 0x0bc6, 0x0bc8, + 0x0bca, 0x0bcd, 0x0bd0, 0x0bd0, + 0x0bd7, 0x0bd7, + 0x0be6, 0x0bef, + 0x0c01, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, 0x0c12, 0x0c28, 0x0c2a, 0x0c33, 0x0c35, 0x0c39, - 0x0c3d, 0x0c3d, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, 0x0c58, 0x0c59, - 0x0c60, 0x0c61, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c82, 0x0c83, 0x0c85, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, 0x0cb5, 0x0cb9, - 0x0cbd, 0x0cbd, + 0x0cbc, 0x0cc4, + 0x0cc6, 0x0cc8, + 0x0cca, 0x0ccd, + 0x0cd5, 0x0cd6, 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, + 0x0ce0, 0x0ce3, + 0x0ce6, 0x0cef, + 0x0d02, 0x0d03, 0x0d05, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d28, 0x0d2a, 0x0d39, - 0x0d3d, 0x0d3d, - 0x0d60, 0x0d61, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4d, + 0x0d57, 0x0d57, + 0x0d60, 0x0d63, + 0x0d66, 0x0d6f, 0x0d7a, 0x0d7f, + 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, - 0x0e01, 0x0e30, - 0x0e32, 0x0e33, - 0x0e40, 0x0e45, + 0x0dca, 0x0dca, + 0x0dcf, 0x0dd4, + 0x0dd6, 0x0dd6, + 0x0dd8, 0x0ddf, + 0x0df2, 0x0df3, + 0x0e01, 0x0e3a, + 0x0e40, 0x0e4e, + 0x0e50, 0x0e59, 0x0e81, 0x0e82, 0x0e84, 0x0e84, 0x0e87, 0x0e88, @@ -5940,29 +10006,32 @@ static const OnigCodePoint CR_Lo[] = { 0x0ea5, 0x0ea5, 0x0ea7, 0x0ea7, 0x0eaa, 0x0eab, - 0x0ead, 0x0eb0, - 0x0eb2, 0x0eb3, - 0x0ebd, 0x0ebd, + 0x0ead, 0x0eb9, + 0x0ebb, 0x0ebd, 0x0ec0, 0x0ec4, + 0x0ec6, 0x0ec6, + 0x0ec8, 0x0ecd, + 0x0ed0, 0x0ed9, 0x0edc, 0x0edd, 0x0f00, 0x0f00, - 0x0f40, 0x0f47, + 0x0f18, 0x0f19, + 0x0f20, 0x0f29, + 0x0f35, 0x0f35, + 0x0f37, 0x0f37, + 0x0f39, 0x0f39, + 0x0f3e, 0x0f47, 0x0f49, 0x0f6c, - 0x0f88, 0x0f8b, - 0x1000, 0x102a, - 0x103f, 0x103f, - 0x1050, 0x1055, - 0x105a, 0x105d, - 0x1061, 0x1061, - 0x1065, 0x1066, - 0x106e, 0x1070, - 0x1075, 0x1081, - 0x108e, 0x108e, + 0x0f71, 0x0f84, + 0x0f86, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fc6, 0x0fc6, + 0x1000, 0x1049, + 0x1050, 0x109d, + 0x10a0, 0x10c5, 0x10d0, 0x10fa, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1200, 0x1248, + 0x10fc, 0x10fc, + 0x1100, 0x1248, 0x124a, 0x124d, 0x1250, 0x1256, 0x1258, 0x1258, @@ -5978,39 +10047,104 @@ static const OnigCodePoint CR_Lo[] = { 0x12d8, 0x1310, 0x1312, 0x1315, 0x1318, 0x135a, + 0x135f, 0x135f, + 0x1369, 0x1371, 0x1380, 0x138f, 0x13a0, 0x13f4, 0x1401, 0x166c, - 0x166f, 0x1676, + 0x166f, 0x167f, 0x1681, 0x169a, 0x16a0, 0x16ea, + 0x16ee, 0x16f0, 0x1700, 0x170c, - 0x170e, 0x1711, - 0x1720, 0x1731, - 0x1740, 0x1751, + 0x170e, 0x1714, + 0x1720, 0x1734, + 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, + 0x1772, 0x1773, 0x1780, 0x17b3, - 0x17dc, 0x17dc, - 0x1820, 0x1842, - 0x1844, 0x1877, - 0x1880, 0x18a8, - 0x18aa, 0x18aa, + 0x17b6, 0x17d3, + 0x17d7, 0x17d7, + 0x17dc, 0x17dd, + 0x17e0, 0x17e9, + 0x180b, 0x180d, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18aa, + 0x18b0, 0x18f5, 0x1900, 0x191c, - 0x1950, 0x196d, + 0x1920, 0x192b, + 0x1930, 0x193b, + 0x1946, 0x196d, 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19c1, 0x19c7, - 0x1a00, 0x1a16, - 0x1b05, 0x1b33, - 0x1b45, 0x1b4b, - 0x1b83, 0x1ba0, - 0x1bae, 0x1baf, - 0x1c00, 0x1c23, - 0x1c4d, 0x1c4f, - 0x1c5a, 0x1c77, - 0x2135, 0x2138, + 0x1980, 0x19ab, + 0x19b0, 0x19c9, + 0x19d0, 0x19da, + 0x1a00, 0x1a1b, + 0x1a20, 0x1a5e, + 0x1a60, 0x1a7c, + 0x1a7f, 0x1a89, + 0x1a90, 0x1a99, + 0x1aa7, 0x1aa7, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b59, + 0x1b6b, 0x1b73, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c37, + 0x1c40, 0x1c49, + 0x1c4d, 0x1c7d, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1cf2, + 0x1d00, 0x1de6, + 0x1dfd, 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, 0x2094, + 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, 0x2cf1, + 0x2d00, 0x2d25, 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, 0x2d80, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, @@ -6020,44 +10154,63 @@ static const OnigCodePoint CR_Lo[] = { 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, - 0x3006, 0x3006, - 0x303c, 0x303c, + 0x2de0, 0x2dff, + 0x3005, 0x3007, + 0x3021, 0x302f, + 0x3031, 0x3035, + 0x3038, 0x303c, 0x3041, 0x3096, - 0x309f, 0x309f, + 0x3099, 0x309f, 0x30a1, 0x30fa, - 0x30ff, 0x30ff, + 0x30fc, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x31a0, 0x31b7, 0x31f0, 0x31ff, - 0x3400, 0x3400, - 0x4db5, 0x4db5, - 0x4e00, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa014, - 0xa016, 0xa48c, - 0xa500, 0xa60b, - 0xa610, 0xa61f, - 0xa62a, 0xa62b, - 0xa66e, 0xa66e, - 0xa7fb, 0xa801, - 0xa803, 0xa805, - 0xa807, 0xa80a, - 0xa80c, 0xa822, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66f, + 0xa67c, 0xa67d, + 0xa67f, 0xa697, + 0xa6a0, 0xa6f1, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 0xa827, 0xa840, 0xa873, - 0xa882, 0xa8b3, - 0xa90a, 0xa925, - 0xa930, 0xa946, - 0xaa00, 0xaa28, - 0xaa40, 0xaa42, - 0xaa44, 0xaa4b, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, + 0xa880, 0xa8c4, + 0xa8d0, 0xa8d9, + 0xa8e0, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa900, 0xa92d, + 0xa930, 0xa953, + 0xa960, 0xa97c, + 0xa980, 0xa9c0, + 0xa9cf, 0xa9d9, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabea, + 0xabec, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, + 0xfa30, 0xfa6d, 0xfa70, 0xfad9, - 0xfb1d, 0xfb1d, - 0xfb1f, 0xfb28, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xfb1d, 0xfb28, 0xfb2a, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, @@ -6068,11 +10221,17 @@ static const OnigCodePoint CR_Lo[] = { 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0, 0xfdfb, + 0xfe00, 0xfe0f, + 0xfe20, 0xfe26, + 0xfe33, 0xfe34, + 0xfe4d, 0xfe4f, 0xfe70, 0xfe74, 0xfe76, 0xfefc, - 0xff66, 0xff6f, - 0xff71, 0xff9d, - 0xffa0, 0xffbe, + 0xff10, 0xff19, + 0xff21, 0xff3a, + 0xff3f, 0xff3f, + 0xff41, 0xff5a, + 0xff66, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, @@ -6084,2276 +10243,4839 @@ static const OnigCodePoint CR_Lo[] = { 0x1003f, 0x1004d, 0x10050, 0x1005d, 0x10080, 0x100fa, + 0x10140, 0x10174, + 0x101fd, 0x101fd, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x10300, 0x1031e, - 0x10330, 0x10340, - 0x10342, 0x10349, + 0x10330, 0x1034a, 0x10380, 0x1039d, 0x103a0, 0x103c3, 0x103c8, 0x103cf, - 0x10450, 0x1049d, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, 0x10800, 0x10805, 0x10808, 0x10808, 0x1080a, 0x10835, 0x10837, 0x10838, 0x1083c, 0x1083c, - 0x1083f, 0x1083f, + 0x1083f, 0x10855, 0x10900, 0x10915, 0x10920, 0x10939, - 0x10a00, 0x10a00, - 0x10a10, 0x10a13, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11080, 0x110ba, 0x12000, 0x1236e, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, 0x2f800, 0x2fa1d, -}; /* CR_Lo */ - -/* '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, -}; /* CR_Lt */ + 0xe0100, 0xe01ef, +}; /* CR_ID_Continue */ -/* 'Lu': General Category */ -static const OnigCodePoint CR_Lu[] = { - 591, +/* 'XID_Start': Derived Property */ +static const OnigCodePoint CR_XID_Start[] = { + 431, 0x0041, 0x005a, + 0x0061, 0x007a, + 0x00aa, 0x00aa, + 0x00b5, 0x00b5, + 0x00ba, 0x00ba, 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, + 0x00d8, 0x00f6, + 0x00f8, 0x02c1, + 0x02c6, 0x02d1, + 0x02e0, 0x02e4, + 0x02ec, 0x02ec, + 0x02ee, 0x02ee, + 0x0370, 0x0374, + 0x0376, 0x0377, + 0x037b, 0x037d, 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, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x048a, 0x0525, 0x0531, 0x0556, - 0x10a0, 0x10c5, - 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, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0621, 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, + 0x0904, 0x0939, + 0x093d, 0x093d, + 0x0950, 0x0950, + 0x0958, 0x0961, + 0x0971, 0x0972, + 0x0979, 0x097f, + 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, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c3d, + 0x0c58, 0x0c59, + 0x0c60, 0x0c61, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbd, 0x0cbd, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce1, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d3d, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f40, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f88, 0x0f8b, + 0x1000, 0x102a, + 0x103f, 0x103f, + 0x1050, 0x1055, + 0x105a, 0x105d, + 0x1061, 0x1061, + 0x1065, 0x1066, + 0x106e, 0x1070, + 0x1075, 0x1081, + 0x108e, 0x108e, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, 0x16f0, + 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, 0x191c, + 0x1950, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19c1, 0x19c7, + 0x1a00, 0x1a16, + 0x1a20, 0x1a54, + 0x1aa7, 0x1aa7, + 0x1b05, 0x1b33, + 0x1b45, 0x1b4b, + 0x1b83, 0x1ba0, + 0x1bae, 0x1baf, + 0x1c00, 0x1c23, + 0x1c4d, 0x1c4f, + 0x1c5a, 0x1c7d, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf1, + 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, 0x2094, + 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, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa61f, + 0xa62a, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa67f, 0xa697, + 0xa6a0, 0xa6ef, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 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, + 0xaa00, 0xaa28, + 0xaa40, 0xaa42, + 0xaa44, 0xaa4b, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaaaf, + 0xaab1, 0xaab1, + 0xaab5, 0xaab6, + 0xaab9, 0xaabd, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabe2, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0x1031e, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a00, + 0x10a10, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11083, 0x110af, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_XID_Start */ + +/* 'XID_Continue': Derived Property */ +static const OnigCodePoint CR_XID_Continue[] = { + 513, + 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, + 0x0386, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x0483, 0x0487, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0610, 0x061a, + 0x0621, 0x065e, + 0x0660, 0x0669, + 0x066e, 0x06d3, + 0x06d5, 0x06dc, + 0x06df, 0x06e8, + 0x06ea, 0x06fc, + 0x06ff, 0x06ff, + 0x0710, 0x074a, + 0x074d, 0x07b1, + 0x07c0, 0x07f5, + 0x07fa, 0x07fa, + 0x0800, 0x082d, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0963, + 0x0966, 0x096f, + 0x0971, 0x0972, + 0x0979, 0x097f, + 0x0981, 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, + 0x0c01, 0x0c03, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c82, 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, + 0x0d02, 0x0d03, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4d, + 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, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f18, 0x0f19, + 0x0f20, 0x0f29, + 0x0f35, 0x0f35, + 0x0f37, 0x0f37, + 0x0f39, 0x0f39, + 0x0f3e, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f84, + 0x0f86, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fc6, 0x0fc6, + 0x1000, 0x1049, + 0x1050, 0x109d, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, + 0x1369, 0x1371, + 0x1380, 0x138f, + 0x13a0, 0x13f4, + 0x1401, 0x166c, + 0x166f, 0x167f, + 0x1681, 0x169a, + 0x16a0, 0x16ea, + 0x16ee, 0x16f0, + 0x1700, 0x170c, + 0x170e, 0x1714, + 0x1720, 0x1734, + 0x1740, 0x1753, + 0x1760, 0x176c, + 0x176e, 0x1770, + 0x1772, 0x1773, + 0x1780, 0x17b3, + 0x17b6, 0x17d3, + 0x17d7, 0x17d7, + 0x17dc, 0x17dd, + 0x17e0, 0x17e9, + 0x180b, 0x180d, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18aa, + 0x18b0, 0x18f5, + 0x1900, 0x191c, + 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, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b59, + 0x1b6b, 0x1b73, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c37, + 0x1c40, 0x1c49, + 0x1c4d, 0x1c7d, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1cf2, + 0x1d00, 0x1de6, + 0x1dfd, 0x1f15, 0x1f18, 0x1f1d, - 0x1f28, 0x1f2f, - 0x1f38, 0x1f3f, + 0x1f20, 0x1f45, 0x1f48, 0x1f4d, + 0x1f50, 0x1f57, 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, 0x2c6f, - 0x2c72, 0x2c72, - 0x2c75, 0x2c75, - 0x2c80, 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, - 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, - 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, - 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, + 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, 0x2094, + 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, 0x2cf1, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, + 0x2d80, 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66f, + 0xa67c, 0xa67d, + 0xa67f, 0xa697, + 0xa6a0, 0xa6f1, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 0xa827, + 0xa840, 0xa873, + 0xa880, 0xa8c4, + 0xa8d0, 0xa8d9, + 0xa8e0, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa900, 0xa92d, + 0xa930, 0xa953, + 0xa960, 0xa97c, + 0xa980, 0xa9c0, + 0xa9cf, 0xa9d9, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabea, + 0xabec, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0xfe26, + 0xfe33, 0xfe34, + 0xfe4d, 0xfe4f, + 0xfe71, 0xfe71, + 0xfe73, 0xfe73, + 0xfe77, 0xfe77, + 0xfe79, 0xfe79, + 0xfe7b, 0xfe7b, + 0xfe7d, 0xfe7d, + 0xfe7f, 0xfefc, + 0xff10, 0xff19, 0xff21, 0xff3a, - 0x10400, 0x10427, - 0x1d400, 0x1d419, - 0x1d434, 0x1d44d, - 0x1d468, 0x1d481, - 0x1d49c, 0x1d49c, + 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, + 0x10300, 0x1031e, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11080, 0x110ba, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, + 0xe0100, 0xe01ef, +}; /* CR_XID_Continue */ + +/* 'Default_Ignorable_Code_Point': Derived Property */ +static const OnigCodePoint CR_Default_Ignorable_Code_Point[] = { + 15, + 0x00ad, 0x00ad, + 0x034f, 0x034f, + 0x115f, 0x1160, + 0x17b4, 0x17b5, + 0x180b, 0x180d, + 0x200b, 0x200f, + 0x202a, 0x202e, + 0x2060, 0x206f, + 0x3164, 0x3164, + 0xfe00, 0xfe0f, + 0xfeff, 0xfeff, + 0xffa0, 0xffa0, + 0xfff0, 0xfff8, + 0x1d173, 0x1d17a, + 0xe0000, 0xe0fff, +}; /* CR_Default_Ignorable_Code_Point */ + +/* 'Grapheme_Extend': Derived Property */ +static const OnigCodePoint CR_Grapheme_Extend[] = { + 206, + 0x0300, 0x036f, + 0x0483, 0x0489, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x0610, 0x061a, + 0x064b, 0x065e, + 0x0670, 0x0670, + 0x06d6, 0x06dc, + 0x06de, 0x06e4, + 0x06e7, 0x06e8, + 0x06ea, 0x06ed, + 0x0711, 0x0711, + 0x0730, 0x074a, + 0x07a6, 0x07b0, + 0x07eb, 0x07f3, + 0x0816, 0x0819, + 0x081b, 0x0823, + 0x0825, 0x0827, + 0x0829, 0x082d, + 0x0900, 0x0902, + 0x093c, 0x093c, + 0x0941, 0x0948, + 0x094d, 0x094d, + 0x0951, 0x0955, + 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, + 0x0c3e, 0x0c40, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c62, 0x0c63, + 0x0cbc, 0x0cbc, + 0x0cbf, 0x0cbf, + 0x0cc2, 0x0cc2, + 0x0cc6, 0x0cc6, + 0x0ccc, 0x0ccd, + 0x0cd5, 0x0cd6, + 0x0ce2, 0x0ce3, + 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, + 0x0f90, 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, + 0x135f, 0x135f, + 0x1712, 0x1714, + 0x1732, 0x1734, + 0x1752, 0x1753, + 0x1772, 0x1773, + 0x17b7, 0x17bd, + 0x17c6, 0x17c6, + 0x17c9, 0x17d3, + 0x17dd, 0x17dd, + 0x180b, 0x180d, + 0x18a9, 0x18a9, + 0x1920, 0x1922, + 0x1927, 0x1928, + 0x1932, 0x1932, + 0x1939, 0x193b, + 0x1a17, 0x1a18, + 0x1a56, 0x1a56, + 0x1a58, 0x1a5e, + 0x1a60, 0x1a60, + 0x1a62, 0x1a62, + 0x1a65, 0x1a6c, + 0x1a73, 0x1a7c, + 0x1a7f, 0x1a7f, + 0x1b00, 0x1b03, + 0x1b34, 0x1b34, + 0x1b36, 0x1b3a, + 0x1b3c, 0x1b3c, + 0x1b42, 0x1b42, + 0x1b6b, 0x1b73, + 0x1b80, 0x1b81, + 0x1ba2, 0x1ba5, + 0x1ba8, 0x1ba9, + 0x1c2c, 0x1c33, + 0x1c36, 0x1c37, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1ce0, + 0x1ce2, 0x1ce8, + 0x1ced, 0x1ced, + 0x1dc0, 0x1de6, + 0x1dfd, 0x1dff, + 0x200c, 0x200d, + 0x20d0, 0x20f0, + 0x2cef, 0x2cf1, + 0x2de0, 0x2dff, + 0x302a, 0x302f, + 0x3099, 0x309a, + 0xa66f, 0xa672, + 0xa67c, 0xa67d, + 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, + 0xaa29, 0xaa2e, + 0xaa31, 0xaa32, + 0xaa35, 0xaa36, + 0xaa43, 0xaa43, + 0xaa4c, 0xaa4c, + 0xaab0, 0xaab0, + 0xaab2, 0xaab4, + 0xaab7, 0xaab8, + 0xaabe, 0xaabf, + 0xaac1, 0xaac1, + 0xabe5, 0xabe5, + 0xabe8, 0xabe8, + 0xabed, 0xabed, + 0xfb1e, 0xfb1e, + 0xfe00, 0xfe0f, + 0xfe20, 0xfe26, + 0xff9e, 0xff9f, + 0x101fd, 0x101fd, + 0x10a01, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a0f, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x11080, 0x11081, + 0x110b3, 0x110b6, + 0x110b9, 0x110ba, + 0x1d165, 0x1d165, + 0x1d167, 0x1d169, + 0x1d16e, 0x1d172, + 0x1d17b, 0x1d182, + 0x1d185, 0x1d18b, + 0x1d1aa, 0x1d1ad, + 0x1d242, 0x1d244, + 0xe0100, 0xe01ef, +}; /* CR_Grapheme_Extend */ + +/* 'Grapheme_Base': Derived Property */ +static const OnigCodePoint CR_Grapheme_Base[] = { + 567, + 0x0020, 0x007e, + 0x00a0, 0x00ac, + 0x00ae, 0x02ff, + 0x0370, 0x0377, + 0x037a, 0x037e, + 0x0384, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x0482, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x055f, + 0x0561, 0x0587, + 0x0589, 0x058a, + 0x05be, 0x05be, + 0x05c0, 0x05c0, + 0x05c3, 0x05c3, + 0x05c6, 0x05c6, + 0x05d0, 0x05ea, + 0x05f0, 0x05f4, + 0x0606, 0x060f, + 0x061b, 0x061b, + 0x061e, 0x061f, + 0x0621, 0x064a, + 0x0660, 0x066f, + 0x0671, 0x06d5, + 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, + 0x0903, 0x0939, + 0x093d, 0x0940, + 0x0949, 0x094c, + 0x094e, 0x094e, + 0x0950, 0x0950, + 0x0958, 0x0961, + 0x0964, 0x0972, + 0x0979, 0x097f, + 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, 0x0aef, + 0x0af1, 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, 0x0b71, + 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, 0x0c33, + 0x0c35, 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, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d3d, + 0x0d3f, 0x0d40, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4c, + 0x0d60, 0x0d61, + 0x0d66, 0x0d75, + 0x0d79, 0x0d7f, + 0x0d82, 0x0d83, + 0x0d85, 0x0d96, + 0x0d9a, 0x0db1, + 0x0db3, 0x0dbb, + 0x0dbd, 0x0dbd, + 0x0dc0, 0x0dc6, + 0x0dd0, 0x0dd1, + 0x0dd8, 0x0dde, + 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, 0x0edd, + 0x0f00, 0x0f17, + 0x0f1a, 0x0f34, + 0x0f36, 0x0f36, + 0x0f38, 0x0f38, + 0x0f3a, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f7f, 0x0f7f, + 0x0f85, 0x0f85, + 0x0f88, 0x0f8b, + 0x0fbe, 0x0fc5, + 0x0fc7, 0x0fcc, + 0x0fce, 0x0fd8, + 0x1000, 0x102c, + 0x1031, 0x1031, + 0x1038, 0x1038, + 0x103b, 0x103c, + 0x103f, 0x1057, + 0x105a, 0x105d, + 0x1061, 0x1070, + 0x1075, 0x1081, + 0x1083, 0x1084, + 0x1087, 0x108c, + 0x108e, 0x109c, + 0x109e, 0x10c5, + 0x10d0, 0x10fc, + 0x1100, 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, 0x16f0, + 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, + 0x180e, 0x180e, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18a8, + 0x18aa, 0x18aa, + 0x18b0, 0x18f5, + 0x1900, 0x191c, + 0x1923, 0x1926, + 0x1929, 0x192b, + 0x1930, 0x1931, + 0x1933, 0x1938, + 0x1940, 0x1940, + 0x1944, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19b0, 0x19c9, + 0x19d0, 0x19da, + 0x19de, 0x1a16, + 0x1a19, 0x1a1b, + 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, 0x1bb9, + 0x1c00, 0x1c2b, + 0x1c34, 0x1c35, + 0x1c3b, 0x1c49, + 0x1c4d, 0x1c7f, + 0x1cd3, 0x1cd3, + 0x1ce1, 0x1ce1, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf2, + 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, 0x2094, + 0x20a0, 0x20b8, + 0x2100, 0x2189, + 0x2190, 0x23e8, + 0x2400, 0x2426, + 0x2440, 0x244a, + 0x2460, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, + 0x2701, 0x2704, + 0x2706, 0x2709, + 0x270c, 0x2727, + 0x2729, 0x274b, + 0x274d, 0x274d, + 0x274f, 0x2752, + 0x2756, 0x275e, + 0x2761, 0x2794, + 0x2798, 0x27af, + 0x27b1, 0x27be, + 0x27c0, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 0x2b4c, + 0x2b50, 0x2b59, + 0x2c00, 0x2c2e, + 0x2c30, 0x2c5e, + 0x2c60, 0x2cee, + 0x2cf9, 0x2d25, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, + 0x2d80, 0x2d96, + 0x2da0, 0x2da6, + 0x2da8, 0x2dae, + 0x2db0, 0x2db6, + 0x2db8, 0x2dbe, + 0x2dc0, 0x2dc6, + 0x2dc8, 0x2dce, + 0x2dd0, 0x2dd6, + 0x2dd8, 0x2dde, + 0x2e00, 0x2e31, + 0x2e80, 0x2e99, + 0x2e9b, 0x2ef3, + 0x2f00, 0x2fd5, + 0x2ff0, 0x2ffb, + 0x3000, 0x3029, + 0x3030, 0x303f, + 0x3041, 0x3096, + 0x309b, 0x30ff, + 0x3105, 0x312d, + 0x3131, 0x318e, + 0x3190, 0x31b7, + 0x31c0, 0x31e3, + 0x31f0, 0x321e, + 0x3220, 0x32fe, + 0x3300, 0x4db5, + 0x4dc0, 0x9fcb, + 0xa000, 0xa48c, + 0xa490, 0xa4c6, + 0xa4d0, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa673, 0xa673, + 0xa67e, 0xa697, + 0xa6a0, 0xa6ef, + 0xa6f2, 0xa6f7, + 0xa700, 0xa78c, + 0xa7fb, 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, 0xa9df, + 0xaa00, 0xaa28, + 0xaa2f, 0xaa30, + 0xaa33, 0xaa34, + 0xaa40, 0xaa42, + 0xaa44, 0xaa4b, + 0xaa4d, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa5c, 0xaa7b, + 0xaa80, 0xaaaf, + 0xaab1, 0xaab1, + 0xaab5, 0xaab6, + 0xaab9, 0xaabd, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadf, + 0xabc0, 0xabe4, + 0xabe6, 0xabe7, + 0xabe9, 0xabec, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 0xfa6d, + 0xfa70, 0xfad9, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xfb1d, 0xfb1d, + 0xfb1f, 0xfb36, + 0xfb38, 0xfb3c, + 0xfb3e, 0xfb3e, + 0xfb40, 0xfb41, + 0xfb43, 0xfb44, + 0xfb46, 0xfbb1, + 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, 0x1018a, + 0x10190, 0x1019b, + 0x101d0, 0x101fc, + 0x10280, 0x1029c, + 0x102a0, 0x102d0, + 0x10300, 0x1031e, + 0x10320, 0x10323, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x1039f, 0x103c3, + 0x103c8, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10857, 0x1085f, + 0x10900, 0x1091b, + 0x1091f, 0x10939, + 0x1093f, 0x1093f, + 0x10a00, 0x10a00, + 0x10a10, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a40, 0x10a47, + 0x10a50, 0x10a58, + 0x10a60, 0x10a7f, + 0x10b00, 0x10b35, + 0x10b39, 0x10b55, + 0x10b58, 0x10b72, + 0x10b78, 0x10b7f, + 0x10c00, 0x10c48, + 0x10e60, 0x10e7e, + 0x11082, 0x110b2, + 0x110b7, 0x110b8, + 0x110bb, 0x110bc, + 0x110be, 0x110c1, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x12470, 0x12473, + 0x13000, 0x1342e, + 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, + 0x1f000, 0x1f02b, + 0x1f030, 0x1f093, + 0x1f100, 0x1f10a, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Grapheme_Base */ + +/* 'Grapheme_Link': Derived Property */ +static const OnigCodePoint CR_Grapheme_Link[] = { + 26, + 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, 0x1baa, + 0xa806, 0xa806, + 0xa8c4, 0xa8c4, + 0xa953, 0xa953, + 0xa9c0, 0xa9c0, + 0xabed, 0xabed, + 0x10a3f, 0x10a3f, + 0x110b9, 0x110b9, +}; /* CR_Grapheme_Link */ + +/* 'Common': Script */ +static const OnigCodePoint CR_Common[] = { + 159, + 0x0000, 0x0040, + 0x005b, 0x0060, + 0x007b, 0x00a9, + 0x00ab, 0x00b9, + 0x00bb, 0x00bf, + 0x00d7, 0x00d7, + 0x00f7, 0x00f7, + 0x02b9, 0x02df, + 0x02e5, 0x02ff, + 0x0374, 0x0374, + 0x037e, 0x037e, + 0x0385, 0x0385, + 0x0387, 0x0387, + 0x0589, 0x0589, + 0x0600, 0x0603, + 0x060c, 0x060c, + 0x061b, 0x061b, + 0x061f, 0x061f, + 0x0640, 0x0640, + 0x0660, 0x0669, + 0x06dd, 0x06dd, + 0x0964, 0x0965, + 0x0970, 0x0970, + 0x0cf1, 0x0cf2, + 0x0e3f, 0x0e3f, + 0x0fd5, 0x0fd8, + 0x10fb, 0x10fb, + 0x16eb, 0x16ed, + 0x1735, 0x1736, + 0x1802, 0x1803, + 0x1805, 0x1805, + 0x1cd3, 0x1cd3, + 0x1ce1, 0x1ce1, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf2, + 0x2000, 0x200b, + 0x200e, 0x2064, + 0x206a, 0x2070, + 0x2074, 0x207e, + 0x2080, 0x208e, + 0x20a0, 0x20b8, + 0x2100, 0x2125, + 0x2127, 0x2129, + 0x212c, 0x2131, + 0x2133, 0x214d, + 0x214f, 0x215f, + 0x2189, 0x2189, + 0x2190, 0x23e8, + 0x2400, 0x2426, + 0x2440, 0x244a, + 0x2460, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, + 0x2701, 0x2704, + 0x2706, 0x2709, + 0x270c, 0x2727, + 0x2729, 0x274b, + 0x274d, 0x274d, + 0x274f, 0x2752, + 0x2756, 0x275e, + 0x2761, 0x2794, + 0x2798, 0x27af, + 0x27b1, 0x27be, + 0x27c0, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 0x27ff, + 0x2900, 0x2b4c, + 0x2b50, 0x2b59, + 0x2e00, 0x2e31, + 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, + 0xfd3e, 0xfd3f, + 0xfdfd, 0xfdfd, + 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, + 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, 0x1d4b5, - 0x1d4d0, 0x1d4e9, - 0x1d504, 0x1d505, + 0x1d4ae, 0x1d4b9, + 0x1d4bb, 0x1d4bb, + 0x1d4bd, 0x1d4c3, + 0x1d4c5, 0x1d505, 0x1d507, 0x1d50a, 0x1d50d, 0x1d514, 0x1d516, 0x1d51c, - 0x1d538, 0x1d539, + 0x1d51e, 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, -}; /* CR_Lu */ + 0x1d552, 0x1d6a5, + 0x1d6a8, 0x1d7cb, + 0x1d7ce, 0x1d7ff, + 0x1f000, 0x1f02b, + 0x1f030, 0x1f093, + 0x1f100, 0x1f10a, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, +}; /* CR_Common */ + +/* 'Latin': Script */ +static const OnigCodePoint CR_Latin[] = { + 28, + 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, 0x2094, + 0x212a, 0x212b, + 0x2132, 0x2132, + 0x214e, 0x214e, + 0x2160, 0x2188, + 0x2c60, 0x2c7f, + 0xa722, 0xa787, + 0xa78b, 0xa78c, + 0xa7fb, 0xa7ff, + 0xfb00, 0xfb06, + 0xff21, 0xff3a, + 0xff41, 0xff5a, +}; /* CR_Latin */ + +/* 'Greek': Script */ +static const OnigCodePoint CR_Greek[] = { + 33, + 0x0370, 0x0373, + 0x0375, 0x0377, + 0x037a, 0x037d, + 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, + 0x10140, 0x1018a, + 0x1d200, 0x1d245, +}; /* CR_Greek */ + +/* 'Cyrillic': Script */ +static const OnigCodePoint CR_Cyrillic[] = { + 8, + 0x0400, 0x0484, + 0x0487, 0x0525, + 0x1d2b, 0x1d2b, + 0x1d78, 0x1d78, + 0x2de0, 0x2dff, + 0xa640, 0xa65f, + 0xa662, 0xa673, + 0xa67c, 0xa697, +}; /* CR_Cyrillic */ + +/* 'Armenian': Script */ +static const OnigCodePoint CR_Armenian[] = { + 5, + 0x0531, 0x0556, + 0x0559, 0x055f, + 0x0561, 0x0587, + 0x058a, 0x058a, + 0xfb13, 0xfb17, +}; /* CR_Armenian */ + +/* '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, +}; /* CR_Hebrew */ + +/* 'Arabic': Script */ +static const OnigCodePoint CR_Arabic[] = { + 18, + 0x0606, 0x060b, + 0x060d, 0x061a, + 0x061e, 0x061e, + 0x0621, 0x063f, + 0x0641, 0x064a, + 0x0656, 0x065e, + 0x066a, 0x066f, + 0x0671, 0x06dc, + 0x06de, 0x06ff, + 0x0750, 0x077f, + 0xfb50, 0xfbb1, + 0xfbd3, 0xfd3d, + 0xfd50, 0xfd8f, + 0xfd92, 0xfdc7, + 0xfdf0, 0xfdfc, + 0xfe70, 0xfe74, + 0xfe76, 0xfefc, + 0x10e60, 0x10e7e, +}; /* CR_Arabic */ -/* 'M': Major Category */ -static const OnigCodePoint CR_M[] = { - 161, - 0x0300, 0x036f, - 0x0483, 0x0489, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x0610, 0x061a, - 0x064b, 0x065e, - 0x0670, 0x0670, - 0x06d6, 0x06dc, - 0x06de, 0x06e4, - 0x06e7, 0x06e8, - 0x06ea, 0x06ed, - 0x0711, 0x0711, - 0x0730, 0x074a, - 0x07a6, 0x07b0, - 0x07eb, 0x07f3, - 0x0901, 0x0903, - 0x093c, 0x093c, - 0x093e, 0x094d, - 0x0951, 0x0954, - 0x0962, 0x0963, +/* 'Syriac': Script */ +static const OnigCodePoint CR_Syriac[] = { + 3, + 0x0700, 0x070d, + 0x070f, 0x074a, + 0x074d, 0x074f, +}; /* CR_Syriac */ + +/* 'Thaana': Script */ +static const OnigCodePoint CR_Thaana[] = { + 1, + 0x0780, 0x07b1, +}; /* CR_Thaana */ + +/* 'Devanagari': Script */ +static const OnigCodePoint CR_Devanagari[] = { + 9, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0950, + 0x0953, 0x0955, + 0x0958, 0x0963, + 0x0966, 0x096f, + 0x0971, 0x0972, + 0x0979, 0x097f, + 0xa8e0, 0xa8fb, +}; /* CR_Devanagari */ + +/* 'Bengali': Script */ +static const OnigCodePoint CR_Bengali[] = { + 14, 0x0981, 0x0983, - 0x09bc, 0x09bc, - 0x09be, 0x09c4, + 0x0985, 0x098c, + 0x098f, 0x0990, + 0x0993, 0x09a8, + 0x09aa, 0x09b0, + 0x09b2, 0x09b2, + 0x09b6, 0x09b9, + 0x09bc, 0x09c4, 0x09c7, 0x09c8, - 0x09cb, 0x09cd, + 0x09cb, 0x09ce, 0x09d7, 0x09d7, - 0x09e2, 0x09e3, + 0x09dc, 0x09dd, + 0x09df, 0x09e3, + 0x09e6, 0x09fb, +}; /* CR_Bengali */ + +/* '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, - 0x0a70, 0x0a71, - 0x0a75, 0x0a75, + 0x0a59, 0x0a5c, + 0x0a5e, 0x0a5e, + 0x0a66, 0x0a75, +}; /* CR_Gurmukhi */ + +/* 'Gujarati': Script */ +static const OnigCodePoint CR_Gujarati[] = { + 14, 0x0a81, 0x0a83, - 0x0abc, 0x0abc, - 0x0abe, 0x0ac5, + 0x0a85, 0x0a8d, + 0x0a8f, 0x0a91, + 0x0a93, 0x0aa8, + 0x0aaa, 0x0ab0, + 0x0ab2, 0x0ab3, + 0x0ab5, 0x0ab9, + 0x0abc, 0x0ac5, 0x0ac7, 0x0ac9, 0x0acb, 0x0acd, - 0x0ae2, 0x0ae3, + 0x0ad0, 0x0ad0, + 0x0ae0, 0x0ae3, + 0x0ae6, 0x0aef, + 0x0af1, 0x0af1, +}; /* CR_Gujarati */ + +/* 'Oriya': Script */ +static const OnigCodePoint CR_Oriya[] = { + 14, 0x0b01, 0x0b03, - 0x0b3c, 0x0b3c, - 0x0b3e, 0x0b44, + 0x0b05, 0x0b0c, + 0x0b0f, 0x0b10, + 0x0b13, 0x0b28, + 0x0b2a, 0x0b30, + 0x0b32, 0x0b33, + 0x0b35, 0x0b39, + 0x0b3c, 0x0b44, 0x0b47, 0x0b48, 0x0b4b, 0x0b4d, 0x0b56, 0x0b57, - 0x0b62, 0x0b63, - 0x0b82, 0x0b82, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd7, 0x0bd7, - 0x0c01, 0x0c03, - 0x0c3e, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c62, 0x0c63, - 0x0c82, 0x0c83, - 0x0cbc, 0x0cbc, - 0x0cbe, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0ce2, 0x0ce3, - 0x0d02, 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, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x102b, 0x103e, - 0x1056, 0x1059, - 0x105e, 0x1060, - 0x1062, 0x1064, - 0x1067, 0x106d, - 0x1071, 0x1074, - 0x1082, 0x108d, - 0x108f, 0x108f, - 0x135f, 0x135f, - 0x1712, 0x1714, - 0x1732, 0x1734, - 0x1752, 0x1753, - 0x1772, 0x1773, - 0x17b6, 0x17d3, - 0x17dd, 0x17dd, - 0x180b, 0x180d, - 0x18a9, 0x18a9, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x19b0, 0x19c0, - 0x19c8, 0x19c9, - 0x1a17, 0x1a1b, - 0x1b00, 0x1b04, - 0x1b34, 0x1b44, - 0x1b6b, 0x1b73, - 0x1b80, 0x1b82, - 0x1ba1, 0x1baa, - 0x1c24, 0x1c37, - 0x1dc0, 0x1de6, - 0x1dfe, 0x1dff, - 0x20d0, 0x20f0, - 0x2de0, 0x2dff, - 0x302a, 0x302f, - 0x3099, 0x309a, - 0xa66f, 0xa672, - 0xa67c, 0xa67d, - 0xa802, 0xa802, - 0xa806, 0xa806, - 0xa80b, 0xa80b, - 0xa823, 0xa827, - 0xa880, 0xa881, - 0xa8b4, 0xa8c4, - 0xa926, 0xa92d, - 0xa947, 0xa953, - 0xaa29, 0xaa36, - 0xaa43, 0xaa43, - 0xaa4c, 0xaa4d, - 0xfb1e, 0xfb1e, - 0xfe00, 0xfe0f, - 0xfe20, 0xfe26, - 0x101fd, 0x101fd, - 0x10a01, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a0f, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, - 0x1d165, 0x1d169, - 0x1d16d, 0x1d172, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, - 0xe0100, 0xe01ef, -}; /* CR_M */ - -/* 'Mc': General Category */ -static const OnigCodePoint CR_Mc[] = { - 85, - 0x0903, 0x0903, - 0x093e, 0x0940, - 0x0949, 0x094c, - 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, + 0x0b5c, 0x0b5d, + 0x0b5f, 0x0b63, + 0x0b66, 0x0b71, +}; /* CR_Oriya */ + +/* '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, 0x0bcc, + 0x0bca, 0x0bcd, + 0x0bd0, 0x0bd0, 0x0bd7, 0x0bd7, + 0x0be6, 0x0bfa, +}; /* CR_Tamil */ + +/* 'Telugu': Script */ +static const OnigCodePoint CR_Telugu[] = { + 14, 0x0c01, 0x0c03, - 0x0c41, 0x0c44, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c78, 0x0c7f, +}; /* CR_Telugu */ + +/* 'Kannada': Script */ +static const OnigCodePoint CR_Kannada[] = { + 13, 0x0c82, 0x0c83, - 0x0cbe, 0x0cbe, - 0x0cc0, 0x0cc4, - 0x0cc7, 0x0cc8, - 0x0cca, 0x0ccb, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbc, 0x0cc4, + 0x0cc6, 0x0cc8, + 0x0cca, 0x0ccd, 0x0cd5, 0x0cd6, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce3, + 0x0ce6, 0x0cef, +}; /* CR_Kannada */ + +/* 'Malayalam': Script */ +static const OnigCodePoint CR_Malayalam[] = { + 12, 0x0d02, 0x0d03, - 0x0d3e, 0x0d40, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, 0x0d46, 0x0d48, - 0x0d4a, 0x0d4c, + 0x0d4a, 0x0d4d, 0x0d57, 0x0d57, + 0x0d60, 0x0d63, + 0x0d66, 0x0d75, + 0x0d79, 0x0d7f, +}; /* CR_Malayalam */ + +/* 'Sinhala': Script */ +static const OnigCodePoint CR_Sinhala[] = { + 11, 0x0d82, 0x0d83, - 0x0dcf, 0x0dd1, + 0x0d85, 0x0d96, + 0x0d9a, 0x0db1, + 0x0db3, 0x0dbb, + 0x0dbd, 0x0dbd, + 0x0dc0, 0x0dc6, + 0x0dca, 0x0dca, + 0x0dcf, 0x0dd4, + 0x0dd6, 0x0dd6, 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, - 0x17b6, 0x17b6, - 0x17be, 0x17c5, - 0x17c7, 0x17c8, - 0x1923, 0x1926, - 0x1929, 0x192b, - 0x1930, 0x1931, - 0x1933, 0x1938, - 0x19b0, 0x19c0, - 0x19c8, 0x19c9, - 0x1a19, 0x1a1b, - 0x1b04, 0x1b04, - 0x1b35, 0x1b35, - 0x1b3b, 0x1b3b, - 0x1b3d, 0x1b41, - 0x1b43, 0x1b44, - 0x1b82, 0x1b82, - 0x1ba1, 0x1ba1, - 0x1ba6, 0x1ba7, - 0x1baa, 0x1baa, - 0x1c24, 0x1c2b, - 0x1c34, 0x1c35, - 0xa823, 0xa824, - 0xa827, 0xa827, - 0xa880, 0xa881, - 0xa8b4, 0xa8c3, - 0xa952, 0xa953, - 0xaa2f, 0xaa30, - 0xaa33, 0xaa34, - 0xaa4d, 0xaa4d, - 0x1d165, 0x1d166, - 0x1d16d, 0x1d172, -}; /* CR_Mc */ + 0x0df2, 0x0df4, +}; /* CR_Sinhala */ + +/* 'Thai': Script */ +static const OnigCodePoint CR_Thai[] = { + 2, + 0x0e01, 0x0e3a, + 0x0e40, 0x0e5b, +}; /* CR_Thai */ + +/* '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, 0x0edd, +}; /* CR_Lao */ + +/* 'Tibetan': Script */ +static const OnigCodePoint CR_Tibetan[] = { + 7, + 0x0f00, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fbe, 0x0fcc, + 0x0fce, 0x0fd4, +}; /* CR_Tibetan */ + +/* 'Myanmar': Script */ +static const OnigCodePoint CR_Myanmar[] = { + 2, + 0x1000, 0x109f, + 0xaa60, 0xaa7b, +}; /* CR_Myanmar */ + +/* 'Georgian': Script */ +static const OnigCodePoint CR_Georgian[] = { + 4, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x2d00, 0x2d25, +}; /* CR_Georgian */ + +/* 'Hangul': Script */ +static const OnigCodePoint CR_Hangul[] = { + 13, + 0x1100, 0x11ff, + 0x3131, 0x318e, + 0x3200, 0x321e, + 0x3260, 0x327e, + 0xa960, 0xa97c, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xffa0, 0xffbe, + 0xffc2, 0xffc7, + 0xffca, 0xffcf, + 0xffd2, 0xffd7, + 0xffda, 0xffdc, +}; /* CR_Hangul */ + +/* 'Ethiopic': Script */ +static const OnigCodePoint CR_Ethiopic[] = { + 27, + 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, + 0x135f, 0x137c, + 0x1380, 0x1399, + 0x2d80, 0x2d96, + 0x2da0, 0x2da6, + 0x2da8, 0x2dae, + 0x2db0, 0x2db6, + 0x2db8, 0x2dbe, + 0x2dc0, 0x2dc6, + 0x2dc8, 0x2dce, + 0x2dd0, 0x2dd6, + 0x2dd8, 0x2dde, +}; /* CR_Ethiopic */ + +/* 'Cherokee': Script */ +static const OnigCodePoint CR_Cherokee[] = { + 1, + 0x13a0, 0x13f4, +}; /* CR_Cherokee */ + +/* 'Canadian_Aboriginal': Script */ +static const OnigCodePoint CR_Canadian_Aboriginal[] = { + 2, + 0x1400, 0x167f, + 0x18b0, 0x18f5, +}; /* CR_Canadian_Aboriginal */ + +/* 'Ogham': Script */ +static const OnigCodePoint CR_Ogham[] = { + 1, + 0x1680, 0x169c, +}; /* CR_Ogham */ -/* 'Me': General Category */ -static const OnigCodePoint CR_Me[] = { - 5, - 0x0488, 0x0489, - 0x06de, 0x06de, - 0x20dd, 0x20e0, - 0x20e2, 0x20e4, - 0xa670, 0xa672, -}; /* CR_Me */ +/* 'Runic': Script */ +static const OnigCodePoint CR_Runic[] = { + 2, + 0x16a0, 0x16ea, + 0x16ee, 0x16f0, +}; /* CR_Runic */ -/* 'Mn': General Category */ -static const OnigCodePoint CR_Mn[] = { - 160, +/* 'Khmer': Script */ +static const OnigCodePoint CR_Khmer[] = { + 4, + 0x1780, 0x17dd, + 0x17e0, 0x17e9, + 0x17f0, 0x17f9, + 0x19e0, 0x19ff, +}; /* CR_Khmer */ + +/* 'Mongolian': Script */ +static const OnigCodePoint CR_Mongolian[] = { + 6, + 0x1800, 0x1801, + 0x1804, 0x1804, + 0x1806, 0x180e, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18aa, +}; /* CR_Mongolian */ + +/* 'Hiragana': Script */ +static const OnigCodePoint CR_Hiragana[] = { + 3, + 0x3041, 0x3096, + 0x309d, 0x309f, + 0x1f200, 0x1f200, +}; /* CR_Hiragana */ + +/* 'Katakana': Script */ +static const OnigCodePoint CR_Katakana[] = { + 7, + 0x30a1, 0x30fa, + 0x30fd, 0x30ff, + 0x31f0, 0x31ff, + 0x32d0, 0x32fe, + 0x3300, 0x3357, + 0xff66, 0xff6f, + 0xff71, 0xff9d, +}; /* CR_Katakana */ + +/* 'Bopomofo': Script */ +static const OnigCodePoint CR_Bopomofo[] = { + 2, + 0x3105, 0x312d, + 0x31a0, 0x31b7, +}; /* CR_Bopomofo */ + +/* '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, 0x9fcb, + 0xf900, 0xfa2d, + 0xfa30, 0xfa6d, + 0xfa70, 0xfad9, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Han */ + +/* 'Yi': Script */ +static const OnigCodePoint CR_Yi[] = { + 2, + 0xa000, 0xa48c, + 0xa490, 0xa4c6, +}; /* CR_Yi */ + +/* 'Old_Italic': Script */ +static const OnigCodePoint CR_Old_Italic[] = { + 2, + 0x10300, 0x1031e, + 0x10320, 0x10323, +}; /* CR_Old_Italic */ + +/* 'Gothic': Script */ +static const OnigCodePoint CR_Gothic[] = { + 1, + 0x10330, 0x1034a, +}; /* CR_Gothic */ + +/* 'Deseret': Script */ +static const OnigCodePoint CR_Deseret[] = { + 1, + 0x10400, 0x1044f, +}; /* CR_Deseret */ + +/* 'Inherited': Script */ +static const OnigCodePoint CR_Inherited[] = { + 23, 0x0300, 0x036f, - 0x0483, 0x0487, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x0610, 0x061a, - 0x064b, 0x065e, + 0x0485, 0x0486, + 0x064b, 0x0655, 0x0670, 0x0670, - 0x06d6, 0x06dc, - 0x06df, 0x06e4, - 0x06e7, 0x06e8, - 0x06ea, 0x06ed, - 0x0711, 0x0711, - 0x0730, 0x074a, - 0x07a6, 0x07b0, - 0x07eb, 0x07f3, - 0x0901, 0x0902, - 0x093c, 0x093c, - 0x0941, 0x0948, - 0x094d, 0x094d, - 0x0951, 0x0954, - 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, - 0x0c3e, 0x0c40, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c62, 0x0c63, - 0x0cbc, 0x0cbc, - 0x0cbf, 0x0cbf, - 0x0cc6, 0x0cc6, - 0x0ccc, 0x0ccd, - 0x0ce2, 0x0ce3, - 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, - 0x0f90, 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, - 0x135f, 0x135f, - 0x1712, 0x1714, - 0x1732, 0x1734, - 0x1752, 0x1753, - 0x1772, 0x1773, - 0x17b7, 0x17bd, - 0x17c6, 0x17c6, - 0x17c9, 0x17d3, - 0x17dd, 0x17dd, - 0x180b, 0x180d, - 0x18a9, 0x18a9, - 0x1920, 0x1922, - 0x1927, 0x1928, - 0x1932, 0x1932, - 0x1939, 0x193b, - 0x1a17, 0x1a18, - 0x1b00, 0x1b03, - 0x1b34, 0x1b34, - 0x1b36, 0x1b3a, - 0x1b3c, 0x1b3c, - 0x1b42, 0x1b42, - 0x1b6b, 0x1b73, - 0x1b80, 0x1b81, - 0x1ba2, 0x1ba5, - 0x1ba8, 0x1ba9, - 0x1c2c, 0x1c33, - 0x1c36, 0x1c37, + 0x0951, 0x0952, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1ce0, + 0x1ce2, 0x1ce8, + 0x1ced, 0x1ced, 0x1dc0, 0x1de6, - 0x1dfe, 0x1dff, - 0x20d0, 0x20dc, - 0x20e1, 0x20e1, - 0x20e5, 0x20f0, - 0x2de0, 0x2dff, + 0x1dfd, 0x1dff, + 0x200c, 0x200d, + 0x20d0, 0x20f0, 0x302a, 0x302f, 0x3099, 0x309a, - 0xa66f, 0xa66f, - 0xa67c, 0xa67d, - 0xa802, 0xa802, - 0xa806, 0xa806, - 0xa80b, 0xa80b, - 0xa825, 0xa826, - 0xa8c4, 0xa8c4, - 0xa926, 0xa92d, - 0xa947, 0xa951, - 0xaa29, 0xaa2e, - 0xaa31, 0xaa32, - 0xaa35, 0xaa36, - 0xaa43, 0xaa43, - 0xaa4c, 0xaa4c, - 0xfb1e, 0xfb1e, 0xfe00, 0xfe0f, 0xfe20, 0xfe26, - 0x101fd, 0x101fd, - 0x10a01, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a0f, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, + 0x101fd, 0x101fd, 0x1d167, 0x1d169, 0x1d17b, 0x1d182, 0x1d185, 0x1d18b, 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, 0xe0100, 0xe01ef, -}; /* CR_Mn */ +}; /* CR_Inherited */ -/* 'N': Major Category */ -static const OnigCodePoint CR_N[] = { - 69, - 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, - 0x0be6, 0x0bf2, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7e, - 0x0ce6, 0x0cef, - 0x0d66, 0x0d75, - 0x0e50, 0x0e59, - 0x0ed0, 0x0ed9, - 0x0f20, 0x0f33, - 0x1040, 0x1049, - 0x1090, 0x1099, - 0x1369, 0x137c, - 0x16ee, 0x16f0, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1810, 0x1819, - 0x1946, 0x194f, - 0x19d0, 0x19d9, - 0x1b50, 0x1b59, - 0x1bb0, 0x1bb9, - 0x1c40, 0x1c49, - 0x1c50, 0x1c59, - 0x2070, 0x2070, - 0x2074, 0x2079, - 0x2080, 0x2089, - 0x2153, 0x2182, - 0x2185, 0x2188, - 0x2460, 0x249b, - 0x24ea, 0x24ff, - 0x2776, 0x2793, - 0x2cfd, 0x2cfd, - 0x3007, 0x3007, - 0x3021, 0x3029, - 0x3038, 0x303a, - 0x3192, 0x3195, - 0x3220, 0x3229, - 0x3251, 0x325f, - 0x3280, 0x3289, - 0x32b1, 0x32bf, - 0xa620, 0xa629, - 0xa8d0, 0xa8d9, - 0xa900, 0xa909, - 0xaa50, 0xaa59, - 0xff10, 0xff19, - 0x10107, 0x10133, - 0x10140, 0x10178, - 0x1018a, 0x1018a, - 0x10320, 0x10323, - 0x10341, 0x10341, - 0x1034a, 0x1034a, - 0x103d1, 0x103d5, - 0x104a0, 0x104a9, - 0x10916, 0x10919, - 0x10a40, 0x10a47, - 0x12400, 0x12462, - 0x1d360, 0x1d371, - 0x1d7ce, 0x1d7ff, -}; /* CR_N */ +/* 'Tagalog': Script */ +static const OnigCodePoint CR_Tagalog[] = { + 2, + 0x1700, 0x170c, + 0x170e, 0x1714, +}; /* CR_Tagalog */ -/* 'Nd': General Category */ -static const OnigCodePoint CR_Nd[] = { - 33, - 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, - 0x0e50, 0x0e59, - 0x0ed0, 0x0ed9, - 0x0f20, 0x0f29, - 0x1040, 0x1049, - 0x1090, 0x1099, - 0x17e0, 0x17e9, - 0x1810, 0x1819, - 0x1946, 0x194f, - 0x19d0, 0x19d9, - 0x1b50, 0x1b59, - 0x1bb0, 0x1bb9, - 0x1c40, 0x1c49, - 0x1c50, 0x1c59, - 0xa620, 0xa629, - 0xa8d0, 0xa8d9, - 0xa900, 0xa909, - 0xaa50, 0xaa59, - 0xff10, 0xff19, +/* 'Hanunoo': Script */ +static const OnigCodePoint CR_Hanunoo[] = { + 1, + 0x1720, 0x1734, +}; /* CR_Hanunoo */ + +/* 'Buhid': Script */ +static const OnigCodePoint CR_Buhid[] = { + 1, + 0x1740, 0x1753, +}; /* CR_Buhid */ + +/* 'Tagbanwa': Script */ +static const OnigCodePoint CR_Tagbanwa[] = { + 3, + 0x1760, 0x176c, + 0x176e, 0x1770, + 0x1772, 0x1773, +}; /* CR_Tagbanwa */ + +/* 'Limbu': Script */ +static const OnigCodePoint CR_Limbu[] = { + 5, + 0x1900, 0x191c, + 0x1920, 0x192b, + 0x1930, 0x193b, + 0x1940, 0x1940, + 0x1944, 0x194f, +}; /* CR_Limbu */ + +/* 'Tai_Le': Script */ +static const OnigCodePoint CR_Tai_Le[] = { + 2, + 0x1950, 0x196d, + 0x1970, 0x1974, +}; /* CR_Tai_Le */ + +/* 'Linear_B': Script */ +static const OnigCodePoint CR_Linear_B[] = { + 7, + 0x10000, 0x1000b, + 0x1000d, 0x10026, + 0x10028, 0x1003a, + 0x1003c, 0x1003d, + 0x1003f, 0x1004d, + 0x10050, 0x1005d, + 0x10080, 0x100fa, +}; /* CR_Linear_B */ + +/* 'Ugaritic': Script */ +static const OnigCodePoint CR_Ugaritic[] = { + 2, + 0x10380, 0x1039d, + 0x1039f, 0x1039f, +}; /* CR_Ugaritic */ + +/* 'Shavian': Script */ +static const OnigCodePoint CR_Shavian[] = { + 1, + 0x10450, 0x1047f, +}; /* CR_Shavian */ + +/* 'Osmanya': Script */ +static const OnigCodePoint CR_Osmanya[] = { + 2, + 0x10480, 0x1049d, 0x104a0, 0x104a9, - 0x1d7ce, 0x1d7ff, -}; /* CR_Nd */ +}; /* CR_Osmanya */ + +/* 'Cypriot': Script */ +static const OnigCodePoint CR_Cypriot[] = { + 6, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x1083f, +}; /* CR_Cypriot */ + +/* 'Braille': Script */ +static const OnigCodePoint CR_Braille[] = { + 1, + 0x2800, 0x28ff, +}; /* CR_Braille */ + +/* 'Buginese': Script */ +static const OnigCodePoint CR_Buginese[] = { + 2, + 0x1a00, 0x1a1b, + 0x1a1e, 0x1a1f, +}; /* CR_Buginese */ + +/* 'Coptic': Script */ +static const OnigCodePoint CR_Coptic[] = { + 3, + 0x03e2, 0x03ef, + 0x2c80, 0x2cf1, + 0x2cf9, 0x2cff, +}; /* CR_Coptic */ + +/* 'New_Tai_Lue': Script */ +static const OnigCodePoint CR_New_Tai_Lue[] = { + 4, + 0x1980, 0x19ab, + 0x19b0, 0x19c9, + 0x19d0, 0x19da, + 0x19de, 0x19df, +}; /* CR_New_Tai_Lue */ + +/* 'Glagolitic': Script */ +static const OnigCodePoint CR_Glagolitic[] = { + 2, + 0x2c00, 0x2c2e, + 0x2c30, 0x2c5e, +}; /* CR_Glagolitic */ + +/* 'Tifinagh': Script */ +static const OnigCodePoint CR_Tifinagh[] = { + 2, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, +}; /* CR_Tifinagh */ + +/* 'Syloti_Nagri': Script */ +static const OnigCodePoint CR_Syloti_Nagri[] = { + 1, + 0xa800, 0xa82b, +}; /* CR_Syloti_Nagri */ + +/* 'Old_Persian': Script */ +static const OnigCodePoint CR_Old_Persian[] = { + 2, + 0x103a0, 0x103c3, + 0x103c8, 0x103d5, +}; /* CR_Old_Persian */ + +/* 'Kharoshthi': Script */ +static const OnigCodePoint CR_Kharoshthi[] = { + 8, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a47, + 0x10a50, 0x10a58, +}; /* CR_Kharoshthi */ -/* 'Nl': General Category */ -static const OnigCodePoint CR_Nl[] = { - 11, - 0x16ee, 0x16f0, - 0x2160, 0x2182, - 0x2185, 0x2188, - 0x3007, 0x3007, - 0x3021, 0x3029, - 0x3038, 0x303a, - 0x10140, 0x10174, - 0x10341, 0x10341, - 0x1034a, 0x1034a, - 0x103d1, 0x103d5, +/* 'Balinese': Script */ +static const OnigCodePoint CR_Balinese[] = { + 2, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b7c, +}; /* CR_Balinese */ + +/* 'Cuneiform': Script */ +static const OnigCodePoint CR_Cuneiform[] = { + 3, + 0x12000, 0x1236e, 0x12400, 0x12462, -}; /* CR_Nl */ + 0x12470, 0x12473, +}; /* CR_Cuneiform */ -/* 'No': General Category */ -static const OnigCodePoint CR_No[] = { - 30, - 0x00b2, 0x00b3, - 0x00b9, 0x00b9, - 0x00bc, 0x00be, - 0x09f4, 0x09f9, - 0x0bf0, 0x0bf2, - 0x0c78, 0x0c7e, - 0x0d70, 0x0d75, - 0x0f2a, 0x0f33, - 0x1369, 0x137c, - 0x17f0, 0x17f9, - 0x2070, 0x2070, - 0x2074, 0x2079, - 0x2080, 0x2089, - 0x2153, 0x215f, - 0x2460, 0x249b, - 0x24ea, 0x24ff, - 0x2776, 0x2793, - 0x2cfd, 0x2cfd, - 0x3192, 0x3195, - 0x3220, 0x3229, - 0x3251, 0x325f, - 0x3280, 0x3289, - 0x32b1, 0x32bf, - 0x10107, 0x10133, - 0x10175, 0x10178, - 0x1018a, 0x1018a, - 0x10320, 0x10323, - 0x10916, 0x10919, - 0x10a40, 0x10a47, - 0x1d360, 0x1d371, -}; /* CR_No */ +/* 'Phoenician': Script */ +static const OnigCodePoint CR_Phoenician[] = { + 2, + 0x10900, 0x1091b, + 0x1091f, 0x1091f, +}; /* CR_Phoenician */ -/* 'P': Major Category */ -static const OnigCodePoint CR_P[] = { - 112, - 0x0021, 0x0023, - 0x0025, 0x002a, - 0x002c, 0x002f, - 0x003a, 0x003b, - 0x003f, 0x0040, - 0x005b, 0x005d, - 0x005f, 0x005f, - 0x007b, 0x007b, - 0x007d, 0x007d, - 0x00a1, 0x00a1, - 0x00ab, 0x00ab, - 0x00b7, 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, - 0x0964, 0x0965, - 0x0970, 0x0970, - 0x0df4, 0x0df4, - 0x0e4f, 0x0e4f, - 0x0e5a, 0x0e5b, - 0x0f04, 0x0f12, - 0x0f3a, 0x0f3d, - 0x0f85, 0x0f85, - 0x0fd0, 0x0fd4, - 0x104a, 0x104f, - 0x10fb, 0x10fb, - 0x1361, 0x1368, - 0x166d, 0x166e, - 0x169b, 0x169c, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x17d4, 0x17d6, - 0x17d8, 0x17da, - 0x1800, 0x180a, - 0x1944, 0x1945, - 0x19de, 0x19df, - 0x1a1e, 0x1a1f, - 0x1b5a, 0x1b60, - 0x1c3b, 0x1c3f, - 0x1c7e, 0x1c7f, - 0x2010, 0x2027, - 0x2030, 0x2043, - 0x2045, 0x2051, - 0x2053, 0x205e, - 0x207d, 0x207e, - 0x208d, 0x208e, - 0x2329, 0x232a, - 0x2768, 0x2775, - 0x27c5, 0x27c6, - 0x27e6, 0x27ef, - 0x2983, 0x2998, - 0x29d8, 0x29db, - 0x29fc, 0x29fd, - 0x2cf9, 0x2cfc, - 0x2cfe, 0x2cff, - 0x2e00, 0x2e2e, - 0x2e30, 0x2e30, - 0x3001, 0x3003, - 0x3008, 0x3011, - 0x3014, 0x301f, - 0x3030, 0x3030, - 0x303d, 0x303d, - 0x30a0, 0x30a0, - 0x30fb, 0x30fb, - 0xa60d, 0xa60f, - 0xa673, 0xa673, - 0xa67e, 0xa67e, - 0xa874, 0xa877, - 0xa8ce, 0xa8cf, - 0xa92e, 0xa92f, +/* 'Phags_Pa': Script */ +static const OnigCodePoint CR_Phags_Pa[] = { + 1, + 0xa840, 0xa877, +}; /* CR_Phags_Pa */ + +/* 'Nko': Script */ +static const OnigCodePoint CR_Nko[] = { + 1, + 0x07c0, 0x07fa, +}; /* CR_Nko */ + +/* 'Sundanese': Script */ +static const OnigCodePoint CR_Sundanese[] = { + 2, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, +}; /* CR_Sundanese */ + +/* 'Lepcha': Script */ +static const OnigCodePoint CR_Lepcha[] = { + 3, + 0x1c00, 0x1c37, + 0x1c3b, 0x1c49, + 0x1c4d, 0x1c4f, +}; /* CR_Lepcha */ + +/* 'Ol_Chiki': Script */ +static const OnigCodePoint CR_Ol_Chiki[] = { + 1, + 0x1c50, 0x1c7f, +}; /* CR_Ol_Chiki */ + +/* 'Vai': Script */ +static const OnigCodePoint CR_Vai[] = { + 1, + 0xa500, 0xa62b, +}; /* CR_Vai */ + +/* 'Saurashtra': Script */ +static const OnigCodePoint CR_Saurashtra[] = { + 2, + 0xa880, 0xa8c4, + 0xa8ce, 0xa8d9, +}; /* CR_Saurashtra */ + +/* 'Kayah_Li': Script */ +static const OnigCodePoint CR_Kayah_Li[] = { + 1, + 0xa900, 0xa92f, +}; /* CR_Kayah_Li */ + +/* 'Rejang': Script */ +static const OnigCodePoint CR_Rejang[] = { + 2, + 0xa930, 0xa953, 0xa95f, 0xa95f, - 0xaa5c, 0xaa5f, - 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, 0x10101, - 0x1039f, 0x1039f, - 0x103d0, 0x103d0, - 0x1091f, 0x1091f, +}; /* CR_Rejang */ + +/* 'Lycian': Script */ +static const OnigCodePoint CR_Lycian[] = { + 1, + 0x10280, 0x1029c, +}; /* CR_Lycian */ + +/* 'Carian': Script */ +static const OnigCodePoint CR_Carian[] = { + 1, + 0x102a0, 0x102d0, +}; /* CR_Carian */ + +/* 'Lydian': Script */ +static const OnigCodePoint CR_Lydian[] = { + 2, + 0x10920, 0x10939, 0x1093f, 0x1093f, - 0x10a50, 0x10a58, - 0x12470, 0x12473, -}; /* CR_P */ +}; /* CR_Lydian */ + +/* 'Cham': Script */ +static const OnigCodePoint CR_Cham[] = { + 4, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa5c, 0xaa5f, +}; /* CR_Cham */ -/* 'Pc': General Category */ -static const OnigCodePoint CR_Pc[] = { - 6, - 0x005f, 0x005f, - 0x203f, 0x2040, - 0x2054, 0x2054, - 0xfe33, 0xfe34, - 0xfe4d, 0xfe4f, - 0xff3f, 0xff3f, -}; /* CR_Pc */ +/* 'Tai_Tham': Script */ +static const OnigCodePoint CR_Tai_Tham[] = { + 5, + 0x1a20, 0x1a5e, + 0x1a60, 0x1a7c, + 0x1a7f, 0x1a89, + 0x1a90, 0x1a99, + 0x1aa0, 0x1aad, +}; /* CR_Tai_Tham */ -/* 'Pd': General Category */ -static const OnigCodePoint CR_Pd[] = { - 14, - 0x002d, 0x002d, - 0x058a, 0x058a, - 0x05be, 0x05be, - 0x1806, 0x1806, - 0x2010, 0x2015, - 0x2e17, 0x2e17, - 0x2e1a, 0x2e1a, - 0x301c, 0x301c, - 0x3030, 0x3030, - 0x30a0, 0x30a0, - 0xfe31, 0xfe32, - 0xfe58, 0xfe58, - 0xfe63, 0xfe63, - 0xff0d, 0xff0d, -}; /* CR_Pd */ +/* 'Tai_Viet': Script */ +static const OnigCodePoint CR_Tai_Viet[] = { + 2, + 0xaa80, 0xaac2, + 0xaadb, 0xaadf, +}; /* CR_Tai_Viet */ -/* 'Pe': General Category */ -static const OnigCodePoint CR_Pe[] = { - 70, - 0x0029, 0x0029, - 0x005d, 0x005d, - 0x007d, 0x007d, - 0x0f3b, 0x0f3b, - 0x0f3d, 0x0f3d, - 0x169c, 0x169c, - 0x2046, 0x2046, - 0x207e, 0x207e, - 0x208e, 0x208e, - 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, - 0xfd3f, 0xfd3f, - 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, -}; /* CR_Pe */ +/* 'Avestan': Script */ +static const OnigCodePoint CR_Avestan[] = { + 2, + 0x10b00, 0x10b35, + 0x10b39, 0x10b3f, +}; /* CR_Avestan */ -/* '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, -}; /* CR_Pf */ +/* 'Egyptian_Hieroglyphs': Script */ +static const OnigCodePoint CR_Egyptian_Hieroglyphs[] = { + 1, + 0x13000, 0x1342e, +}; /* CR_Egyptian_Hieroglyphs */ -/* '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, -}; /* CR_Pi */ +/* 'Samaritan': Script */ +static const OnigCodePoint CR_Samaritan[] = { + 2, + 0x0800, 0x082d, + 0x0830, 0x083e, +}; /* CR_Samaritan */ -/* 'Po': General Category */ -static const OnigCodePoint CR_Po[] = { - 108, - 0x0021, 0x0023, - 0x0025, 0x0027, - 0x002a, 0x002a, - 0x002c, 0x002c, - 0x002e, 0x002f, - 0x003a, 0x003b, - 0x003f, 0x0040, - 0x005c, 0x005c, - 0x00a1, 0x00a1, - 0x00b7, 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, - 0x0964, 0x0965, - 0x0970, 0x0970, - 0x0df4, 0x0df4, - 0x0e4f, 0x0e4f, - 0x0e5a, 0x0e5b, - 0x0f04, 0x0f12, - 0x0f85, 0x0f85, - 0x0fd0, 0x0fd4, - 0x104a, 0x104f, - 0x10fb, 0x10fb, - 0x1361, 0x1368, - 0x166d, 0x166e, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x17d4, 0x17d6, - 0x17d8, 0x17da, - 0x1800, 0x1805, - 0x1807, 0x180a, - 0x1944, 0x1945, - 0x19de, 0x19df, - 0x1a1e, 0x1a1f, - 0x1b5a, 0x1b60, - 0x1c3b, 0x1c3f, - 0x1c7e, 0x1c7f, - 0x2016, 0x2017, - 0x2020, 0x2027, - 0x2030, 0x2038, - 0x203b, 0x203e, - 0x2041, 0x2043, - 0x2047, 0x2051, - 0x2053, 0x2053, - 0x2055, 0x205e, - 0x2cf9, 0x2cfc, - 0x2cfe, 0x2cff, - 0x2e00, 0x2e01, - 0x2e06, 0x2e08, - 0x2e0b, 0x2e0b, - 0x2e0e, 0x2e16, - 0x2e18, 0x2e19, - 0x2e1b, 0x2e1b, - 0x2e1e, 0x2e1f, - 0x2e2a, 0x2e2e, - 0x2e30, 0x2e30, - 0x3001, 0x3003, - 0x303d, 0x303d, - 0x30fb, 0x30fb, - 0xa60d, 0xa60f, - 0xa673, 0xa673, - 0xa67e, 0xa67e, - 0xa874, 0xa877, - 0xa8ce, 0xa8cf, - 0xa92e, 0xa92f, - 0xa95f, 0xa95f, - 0xaa5c, 0xaa5f, - 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, 0x10101, - 0x1039f, 0x1039f, - 0x103d0, 0x103d0, - 0x1091f, 0x1091f, - 0x1093f, 0x1093f, - 0x10a50, 0x10a58, - 0x12470, 0x12473, -}; /* CR_Po */ +/* 'Lisu': Script */ +static const OnigCodePoint CR_Lisu[] = { + 1, + 0xa4d0, 0xa4ff, +}; /* CR_Lisu */ + +/* 'Bamum': Script */ +static const OnigCodePoint CR_Bamum[] = { + 1, + 0xa6a0, 0xa6f7, +}; /* CR_Bamum */ + +/* 'Javanese': Script */ +static const OnigCodePoint CR_Javanese[] = { + 3, + 0xa980, 0xa9cd, + 0xa9cf, 0xa9d9, + 0xa9de, 0xa9df, +}; /* CR_Javanese */ -/* 'Ps': General Category */ -static const OnigCodePoint CR_Ps[] = { - 72, - 0x0028, 0x0028, - 0x005b, 0x005b, - 0x007b, 0x007b, - 0x0f3a, 0x0f3a, - 0x0f3c, 0x0f3c, - 0x169b, 0x169b, - 0x201a, 0x201a, - 0x201e, 0x201e, - 0x2045, 0x2045, - 0x207d, 0x207d, - 0x208d, 0x208d, - 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, - 0x3008, 0x3008, - 0x300a, 0x300a, - 0x300c, 0x300c, - 0x300e, 0x300e, - 0x3010, 0x3010, - 0x3014, 0x3014, - 0x3016, 0x3016, - 0x3018, 0x3018, - 0x301a, 0x301a, - 0x301d, 0x301d, - 0xfd3e, 0xfd3e, - 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, -}; /* CR_Ps */ +/* 'Meetei_Mayek': Script */ +static const OnigCodePoint CR_Meetei_Mayek[] = { + 2, + 0xabc0, 0xabed, + 0xabf0, 0xabf9, +}; /* CR_Meetei_Mayek */ -/* 'S': Major Category */ -static const OnigCodePoint CR_S[] = { - 179, - 0x0024, 0x0024, - 0x002b, 0x002b, - 0x003c, 0x003e, - 0x005e, 0x005e, - 0x0060, 0x0060, - 0x007c, 0x007c, - 0x007e, 0x007e, - 0x00a2, 0x00a9, - 0x00ac, 0x00ac, - 0x00ae, 0x00b1, - 0x00b4, 0x00b4, - 0x00b6, 0x00b6, - 0x00b8, 0x00b8, - 0x00d7, 0x00d7, - 0x00f7, 0x00f7, - 0x02c2, 0x02c5, - 0x02d2, 0x02df, - 0x02e5, 0x02eb, - 0x02ed, 0x02ed, - 0x02ef, 0x02ff, - 0x0375, 0x0375, - 0x0384, 0x0385, - 0x03f6, 0x03f6, - 0x0482, 0x0482, - 0x0606, 0x0608, - 0x060b, 0x060b, - 0x060e, 0x060f, - 0x06e9, 0x06e9, - 0x06fd, 0x06fe, - 0x07f6, 0x07f6, - 0x09f2, 0x09f3, - 0x09fa, 0x09fa, - 0x0af1, 0x0af1, - 0x0b70, 0x0b70, - 0x0bf3, 0x0bfa, - 0x0c7f, 0x0c7f, - 0x0cf1, 0x0cf2, - 0x0d79, 0x0d79, - 0x0e3f, 0x0e3f, - 0x0f01, 0x0f03, - 0x0f13, 0x0f17, - 0x0f1a, 0x0f1f, - 0x0f34, 0x0f34, - 0x0f36, 0x0f36, - 0x0f38, 0x0f38, - 0x0fbe, 0x0fc5, - 0x0fc7, 0x0fcc, - 0x0fce, 0x0fcf, - 0x109e, 0x109f, - 0x1360, 0x1360, - 0x1390, 0x1399, - 0x17db, 0x17db, - 0x1940, 0x1940, - 0x19e0, 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, 0x20b5, - 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, 0x2328, - 0x232b, 0x23e7, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x249c, 0x24e9, - 0x2500, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2767, - 0x2794, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27c4, - 0x27c7, 0x27ca, - 0x27cc, 0x27cc, - 0x27d0, 0x27e5, - 0x27f0, 0x2982, - 0x2999, 0x29d7, - 0x29dc, 0x29fb, - 0x29fe, 0x2b4c, - 0x2b50, 0x2b54, - 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, 0x3243, - 0x3250, 0x3250, - 0x3260, 0x327f, - 0x328a, 0x32b0, - 0x32c0, 0x32fe, - 0x3300, 0x33ff, - 0x4dc0, 0x4dff, - 0xa490, 0xa4c6, - 0xa700, 0xa716, - 0xa720, 0xa721, - 0xa789, 0xa78a, - 0xa828, 0xa82b, - 0xfb29, 0xfb29, - 0xfdfc, 0xfdfd, - 0xfe62, 0xfe62, - 0xfe64, 0xfe66, - 0xfe69, 0xfe69, - 0xff04, 0xff04, - 0xff0b, 0xff0b, - 0xff1c, 0xff1e, +/* 'Imperial_Aramaic': Script */ +static const OnigCodePoint CR_Imperial_Aramaic[] = { + 2, + 0x10840, 0x10855, + 0x10857, 0x1085f, +}; /* CR_Imperial_Aramaic */ + +/* 'Old_South_Arabian': Script */ +static const OnigCodePoint CR_Old_South_Arabian[] = { + 1, + 0x10a60, 0x10a7f, +}; /* CR_Old_South_Arabian */ + +/* 'Inscriptional_Parthian': Script */ +static const OnigCodePoint CR_Inscriptional_Parthian[] = { + 2, + 0x10b40, 0x10b55, + 0x10b58, 0x10b5f, +}; /* CR_Inscriptional_Parthian */ + +/* 'Inscriptional_Pahlavi': Script */ +static const OnigCodePoint CR_Inscriptional_Pahlavi[] = { + 2, + 0x10b60, 0x10b72, + 0x10b78, 0x10b7f, +}; /* CR_Inscriptional_Pahlavi */ + +/* 'Old_Turkic': Script */ +static const OnigCodePoint CR_Old_Turkic[] = { + 1, + 0x10c00, 0x10c48, +}; /* CR_Old_Turkic */ + +/* 'Kaithi': Script */ +static const OnigCodePoint CR_Kaithi[] = { + 1, + 0x11080, 0x110c1, +}; /* CR_Kaithi */ + +/* 'White_Space': Binary Property */ +static const OnigCodePoint CR_White_Space[] = { + 11, + 0x0009, 0x000d, + 0x0020, 0x0020, + 0x0085, 0x0085, + 0x00a0, 0x00a0, + 0x1680, 0x1680, + 0x180e, 0x180e, + 0x2000, 0x200a, + 0x2028, 0x2029, + 0x202f, 0x202f, + 0x205f, 0x205f, + 0x3000, 0x3000, +}; /* CR_White_Space */ + +/* 'Bidi_Control': Binary Property */ +static const OnigCodePoint CR_Bidi_Control[] = { + 2, + 0x200e, 0x200f, + 0x202a, 0x202e, +}; /* CR_Bidi_Control */ + +/* 'Join_Control': Binary Property */ +static const OnigCodePoint CR_Join_Control[] = { + 1, + 0x200c, 0x200d, +}; /* CR_Join_Control */ + +/* 'Dash': Binary Property */ +static const OnigCodePoint CR_Dash[] = { + 19, + 0x002d, 0x002d, + 0x058a, 0x058a, + 0x05be, 0x05be, + 0x1400, 0x1400, + 0x1806, 0x1806, + 0x2010, 0x2015, + 0x2053, 0x2053, + 0x207b, 0x207b, + 0x208b, 0x208b, + 0x2212, 0x2212, + 0x2e17, 0x2e17, + 0x2e1a, 0x2e1a, + 0x301c, 0x301c, + 0x3030, 0x3030, + 0x30a0, 0x30a0, + 0xfe31, 0xfe32, + 0xfe58, 0xfe58, + 0xfe63, 0xfe63, + 0xff0d, 0xff0d, +}; /* CR_Dash */ + +/* '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, +}; /* CR_Hyphen */ + +/* 'Quotation_Mark': Binary Property */ +static const OnigCodePoint CR_Quotation_Mark[] = { + 12, + 0x0022, 0x0022, + 0x0027, 0x0027, + 0x00ab, 0x00ab, + 0x00bb, 0x00bb, + 0x2018, 0x201f, + 0x2039, 0x203a, + 0x300c, 0x300f, + 0x301d, 0x301f, + 0xfe41, 0xfe44, + 0xff02, 0xff02, + 0xff07, 0xff07, + 0xff62, 0xff63, +}; /* CR_Quotation_Mark */ + +/* 'Terminal_Punctuation': Binary Property */ +static const OnigCodePoint CR_Terminal_Punctuation[] = { + 65, + 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, + 0x0964, 0x0965, + 0x0e5a, 0x0e5b, + 0x0f08, 0x0f08, + 0x0f0d, 0x0f12, + 0x104a, 0x104b, + 0x1361, 0x1368, + 0x166d, 0x166e, + 0x16eb, 0x16ed, + 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, + 0x3001, 0x3002, + 0xa4fe, 0xa4ff, + 0xa60d, 0xa60f, + 0xa6f3, 0xa6f7, + 0xa876, 0xa877, + 0xa8ce, 0xa8cf, + 0xa92f, 0xa92f, + 0xa9c7, 0xa9c9, + 0xaa5d, 0xaa5f, + 0xaadf, 0xaadf, + 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, + 0x10b3a, 0x10b3f, + 0x110be, 0x110c1, + 0x12470, 0x12473, +}; /* CR_Terminal_Punctuation */ + +/* 'Other_Math': Binary Property */ +static const OnigCodePoint CR_Other_Math[] = { + 99, + 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, + 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, + 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, - 0xff40, 0xff40, - 0xff5c, 0xff5c, - 0xff5e, 0xff5e, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfffc, 0xfffd, - 0x10102, 0x10102, - 0x10137, 0x1013f, - 0x10179, 0x10189, - 0x10190, 0x1019b, - 0x101d0, 0x101fc, - 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, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, -}; /* CR_S */ + 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, +}; /* CR_Other_Math */ -/* 'Sc': General Category */ -static const OnigCodePoint CR_Sc[] = { - 14, - 0x0024, 0x0024, - 0x00a2, 0x00a5, - 0x060b, 0x060b, - 0x09f2, 0x09f3, - 0x0af1, 0x0af1, - 0x0bf9, 0x0bf9, - 0x0e3f, 0x0e3f, - 0x17db, 0x17db, - 0x20a0, 0x20b5, - 0xfdfc, 0xfdfc, - 0xfe69, 0xfe69, - 0xff04, 0xff04, - 0xffe0, 0xffe1, - 0xffe5, 0xffe6, -}; /* CR_Sc */ +/* 'Hex_Digit': Binary Property */ +static const OnigCodePoint CR_Hex_Digit[] = { + 6, + 0x0030, 0x0039, + 0x0041, 0x0046, + 0x0061, 0x0066, + 0xff10, 0xff19, + 0xff21, 0xff26, + 0xff41, 0xff46, +}; /* CR_Hex_Digit */ + +/* 'ASCII_Hex_Digit': Binary Property */ +static const OnigCodePoint CR_ASCII_Hex_Digit[] = { + 3, + 0x0030, 0x0039, + 0x0041, 0x0046, + 0x0061, 0x0066, +}; /* CR_ASCII_Hex_Digit */ + +/* 'Other_Alphabetic': Binary Property */ +static const OnigCodePoint CR_Other_Alphabetic[] = { + 141, + 0x0345, 0x0345, + 0x05b0, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x0610, 0x061a, + 0x064b, 0x0657, + 0x0659, 0x065e, + 0x0670, 0x0670, + 0x06d6, 0x06dc, + 0x06e1, 0x06e4, + 0x06e7, 0x06e8, + 0x06ed, 0x06ed, + 0x0711, 0x0711, + 0x0730, 0x073f, + 0x07a6, 0x07b0, + 0x0816, 0x0817, + 0x081b, 0x0823, + 0x0825, 0x0827, + 0x0829, 0x082c, + 0x0900, 0x0903, + 0x093e, 0x094c, + 0x094e, 0x094e, + 0x0955, 0x0955, + 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, + 0x0c01, 0x0c03, + 0x0c3e, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4c, + 0x0c55, 0x0c56, + 0x0c62, 0x0c63, + 0x0c82, 0x0c83, + 0x0cbe, 0x0cc4, + 0x0cc6, 0x0cc8, + 0x0cca, 0x0ccc, + 0x0cd5, 0x0cd6, + 0x0ce2, 0x0ce3, + 0x0d02, 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, + 0x0f90, 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, + 0x1c24, 0x1c35, + 0x1cf2, 0x1cf2, + 0x24b6, 0x24e9, + 0x2de0, 0x2dff, + 0xa823, 0xa827, + 0xa880, 0xa881, + 0xa8b4, 0xa8c3, + 0xa926, 0xa92a, + 0xa947, 0xa952, + 0xa980, 0xa983, + 0xa9b3, 0xa9bf, + 0xaa29, 0xaa36, + 0xaa43, 0xaa43, + 0xaa4c, 0xaa4d, + 0xaab0, 0xaab0, + 0xaab2, 0xaab4, + 0xaab7, 0xaab8, + 0xaabe, 0xaabe, + 0xabe3, 0xabea, + 0xfb1e, 0xfb1e, + 0x10a01, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a0f, + 0x11082, 0x11082, + 0x110b0, 0x110b8, +}; /* CR_Other_Alphabetic */ -/* 'Sk': General Category */ -static const OnigCodePoint CR_Sk[] = { - 26, +/* 'Ideographic': Binary Property */ +static const OnigCodePoint CR_Ideographic[] = { + 11, + 0x3006, 0x3007, + 0x3021, 0x3029, + 0x3038, 0x303a, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xf900, 0xfa2d, + 0xfa30, 0xfa6d, + 0xfa70, 0xfad9, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Ideographic */ + +/* 'Diacritic': Binary Property */ +static const OnigCodePoint CR_Diacritic[] = { + 117, 0x005e, 0x005e, 0x0060, 0x0060, 0x00a8, 0x00a8, 0x00af, 0x00af, 0x00b4, 0x00b4, - 0x00b8, 0x00b8, - 0x02c2, 0x02c5, - 0x02d2, 0x02df, - 0x02e5, 0x02eb, - 0x02ed, 0x02ed, - 0x02ef, 0x02ff, - 0x0375, 0x0375, + 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, + 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, + 0x1b34, 0x1b34, + 0x1b44, 0x1b44, + 0x1b6b, 0x1b73, + 0x1baa, 0x1baa, + 0x1c36, 0x1c37, + 0x1c78, 0x1c7d, + 0x1cd0, 0x1ce8, + 0x1ced, 0x1ced, + 0x1d2c, 0x1d6a, + 0x1dc4, 0x1dcf, + 0x1dfd, 0x1dff, 0x1fbd, 0x1fbd, 0x1fbf, 0x1fc1, 0x1fcd, 0x1fcf, 0x1fdd, 0x1fdf, 0x1fed, 0x1fef, 0x1ffd, 0x1ffe, - 0x309b, 0x309c, - 0xa700, 0xa716, - 0xa720, 0xa721, - 0xa789, 0xa78a, + 0x2cef, 0x2cf1, + 0x2e2f, 0x2e2f, + 0x302a, 0x302f, + 0x3099, 0x309c, + 0x30fc, 0x30fc, + 0xa66f, 0xa66f, + 0xa67c, 0xa67d, + 0xa67f, 0xa67f, + 0xa6f0, 0xa6f1, + 0xa717, 0xa721, + 0xa788, 0xa788, + 0xa8c4, 0xa8c4, + 0xa8e0, 0xa8f1, + 0xa92b, 0xa92e, + 0xa953, 0xa953, + 0xa9b3, 0xa9b3, + 0xa9c0, 0xa9c0, + 0xaa7b, 0xaa7b, + 0xaabf, 0xaac2, + 0xabec, 0xabed, + 0xfb1e, 0xfb1e, + 0xfe20, 0xfe26, 0xff3e, 0xff3e, 0xff40, 0xff40, + 0xff70, 0xff70, + 0xff9e, 0xff9f, 0xffe3, 0xffe3, -}; /* CR_Sk */ + 0x110b9, 0x110ba, + 0x1d167, 0x1d169, + 0x1d16d, 0x1d172, + 0x1d17b, 0x1d182, + 0x1d185, 0x1d18b, + 0x1d1aa, 0x1d1ad, +}; /* CR_Diacritic */ -/* 'Sm': General Category */ -static const OnigCodePoint CR_Sm[] = { - 65, - 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, - 0x2140, 0x2144, - 0x214b, 0x214b, - 0x2190, 0x2194, - 0x219a, 0x219b, - 0x21a0, 0x21a0, - 0x21a3, 0x21a3, - 0x21a6, 0x21a6, - 0x21ae, 0x21ae, - 0x21ce, 0x21cf, - 0x21d2, 0x21d2, - 0x21d4, 0x21d4, - 0x21f4, 0x22ff, - 0x2308, 0x230b, - 0x2320, 0x2321, - 0x237c, 0x237c, - 0x239b, 0x23b3, - 0x23dc, 0x23e1, - 0x25b7, 0x25b7, - 0x25c1, 0x25c1, - 0x25f8, 0x25ff, - 0x266f, 0x266f, - 0x27c0, 0x27c4, - 0x27c7, 0x27ca, - 0x27cc, 0x27cc, - 0x27d0, 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, -}; /* CR_Sm */ +/* 'Extender': Binary Property */ +static const OnigCodePoint CR_Extender[] = { + 20, + 0x00b7, 0x00b7, + 0x02d0, 0x02d1, + 0x0640, 0x0640, + 0x07fa, 0x07fa, + 0x0e46, 0x0e46, + 0x0ec6, 0x0ec6, + 0x1843, 0x1843, + 0x1aa7, 0x1aa7, + 0x1c36, 0x1c36, + 0x1c7b, 0x1c7b, + 0x3005, 0x3005, + 0x3031, 0x3035, + 0x309d, 0x309e, + 0x30fc, 0x30fe, + 0xa015, 0xa015, + 0xa60c, 0xa60c, + 0xa9cf, 0xa9cf, + 0xaa70, 0xaa70, + 0xaadd, 0xaadd, + 0xff70, 0xff70, +}; /* CR_Extender */ + +/* 'Other_Lowercase': Binary Property */ +static const OnigCodePoint CR_Other_Lowercase[] = { + 13, + 0x02b0, 0x02b8, + 0x02c0, 0x02c1, + 0x02e0, 0x02e4, + 0x0345, 0x0345, + 0x037a, 0x037a, + 0x1d2c, 0x1d61, + 0x1d78, 0x1d78, + 0x1d9b, 0x1dbf, + 0x2090, 0x2094, + 0x2170, 0x217f, + 0x24d0, 0x24e9, + 0x2c7d, 0x2c7d, + 0xa770, 0xa770, +}; /* CR_Other_Lowercase */ + +/* 'Other_Uppercase': Binary Property */ +static const OnigCodePoint CR_Other_Uppercase[] = { + 2, + 0x2160, 0x216f, + 0x24b6, 0x24cf, +}; /* CR_Other_Uppercase */ + +/* '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, +}; /* CR_Noncharacter_Code_Point */ + +/* 'Other_Grapheme_Extend': Binary Property */ +static const OnigCodePoint CR_Other_Grapheme_Extend[] = { + 16, + 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, + 0xff9e, 0xff9f, + 0x1d165, 0x1d165, + 0x1d16e, 0x1d172, +}; /* CR_Other_Grapheme_Extend */ + +/* 'IDS_Binary_Operator': Binary Property */ +static const OnigCodePoint CR_IDS_Binary_Operator[] = { + 2, + 0x2ff0, 0x2ff1, + 0x2ff4, 0x2ffb, +}; /* CR_IDS_Binary_Operator */ + +/* 'IDS_Trinary_Operator': Binary Property */ +static const OnigCodePoint CR_IDS_Trinary_Operator[] = { + 1, + 0x2ff2, 0x2ff3, +}; /* CR_IDS_Trinary_Operator */ + +/* 'Radical': Binary Property */ +static const OnigCodePoint CR_Radical[] = { + 3, + 0x2e80, 0x2e99, + 0x2e9b, 0x2ef3, + 0x2f00, 0x2fd5, +}; /* CR_Radical */ + +/* 'Unified_Ideograph': Binary Property */ +static const OnigCodePoint CR_Unified_Ideograph[] = { + 11, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xfa0e, 0xfa0f, + 0xfa11, 0xfa11, + 0xfa13, 0xfa14, + 0xfa1f, 0xfa1f, + 0xfa21, 0xfa21, + 0xfa23, 0xfa24, + 0xfa27, 0xfa29, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, +}; /* CR_Unified_Ideograph */ + +/* 'Other_Default_Ignorable_Code_Point': Binary Property */ +static const OnigCodePoint CR_Other_Default_Ignorable_Code_Point[] = { + 10, + 0x034f, 0x034f, + 0x115f, 0x1160, + 0x2065, 0x2069, + 0x3164, 0x3164, + 0xffa0, 0xffa0, + 0xfff0, 0xfff8, + 0xe0000, 0xe0000, + 0xe0002, 0xe001f, + 0xe0080, 0xe00ff, + 0xe01f0, 0xe0fff, +}; /* CR_Other_Default_Ignorable_Code_Point */ + +/* 'Deprecated': Binary Property */ +static const OnigCodePoint CR_Deprecated[] = { + 8, + 0x0149, 0x0149, + 0x0f77, 0x0f77, + 0x0f79, 0x0f79, + 0x17a3, 0x17a4, + 0x206a, 0x206f, + 0x2329, 0x232a, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, +}; /* CR_Deprecated */ + +/* '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, +}; /* CR_Soft_Dotted */ + +/* 'Logical_Order_Exception': Binary Property */ +static const OnigCodePoint CR_Logical_Order_Exception[] = { + 5, + 0x0e40, 0x0e44, + 0x0ec0, 0x0ec4, + 0xaab5, 0xaab6, + 0xaab9, 0xaab9, + 0xaabb, 0xaabc, +}; /* CR_Logical_Order_Exception */ + +/* 'Other_ID_Start': Binary Property */ +static const OnigCodePoint CR_Other_ID_Start[] = { + 3, + 0x2118, 0x2118, + 0x212e, 0x212e, + 0x309b, 0x309c, +}; /* CR_Other_ID_Start */ + +/* 'Other_ID_Continue': Binary Property */ +static const OnigCodePoint CR_Other_ID_Continue[] = { + 3, + 0x00b7, 0x00b7, + 0x0387, 0x0387, + 0x1369, 0x1371, +}; /* CR_Other_ID_Continue */ + +/* 'STerm': Binary Property */ +static const OnigCodePoint CR_STerm[] = { + 43, + 0x0021, 0x0021, + 0x002e, 0x002e, + 0x003f, 0x003f, + 0x055c, 0x055c, + 0x055e, 0x055e, + 0x0589, 0x0589, + 0x061f, 0x061f, + 0x06d4, 0x06d4, + 0x0700, 0x0702, + 0x07f9, 0x07f9, + 0x0964, 0x0965, + 0x104a, 0x104b, + 0x1362, 0x1362, + 0x1367, 0x1368, + 0x166e, 0x166e, + 0x1803, 0x1803, + 0x1809, 0x1809, + 0x1944, 0x1945, + 0x1b5a, 0x1b5b, + 0x1b5e, 0x1b5f, + 0x1c3b, 0x1c3c, + 0x1c7e, 0x1c7f, + 0x203c, 0x203d, + 0x2047, 0x2049, + 0x2e2e, 0x2e2e, + 0x3002, 0x3002, + 0xa4ff, 0xa4ff, + 0xa60e, 0xa60f, + 0xa6f3, 0xa6f3, + 0xa6f7, 0xa6f7, + 0xa876, 0xa877, + 0xa8ce, 0xa8cf, + 0xa92f, 0xa92f, + 0xa9c8, 0xa9c9, + 0xaa5d, 0xaa5f, + 0xabeb, 0xabeb, + 0xfe52, 0xfe52, + 0xfe56, 0xfe57, + 0xff01, 0xff01, + 0xff0e, 0xff0e, + 0xff1f, 0xff1f, + 0xff61, 0xff61, + 0x110be, 0x110c1, +}; /* CR_STerm */ + +/* 'Variation_Selector': Binary Property */ +static const OnigCodePoint CR_Variation_Selector[] = { + 3, + 0x180b, 0x180d, + 0xfe00, 0xfe0f, + 0xe0100, 0xe01ef, +}; /* CR_Variation_Selector */ + +/* 'Pattern_White_Space': Binary Property */ +static const OnigCodePoint CR_Pattern_White_Space[] = { + 5, + 0x0009, 0x000d, + 0x0020, 0x0020, + 0x0085, 0x0085, + 0x200e, 0x200f, + 0x2028, 0x2029, +}; /* CR_Pattern_White_Space */ -/* 'So': General Category */ -static const OnigCodePoint CR_So[] = { - 134, - 0x00a6, 0x00a7, +/* '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, 0x00b0, + 0x00b0, 0x00b1, 0x00b6, 0x00b6, - 0x0482, 0x0482, - 0x060e, 0x060f, - 0x06e9, 0x06e9, - 0x06fd, 0x06fe, - 0x07f6, 0x07f6, - 0x09fa, 0x09fa, - 0x0b70, 0x0b70, - 0x0bf3, 0x0bf8, - 0x0bfa, 0x0bfa, - 0x0c7f, 0x0c7f, + 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, +}; /* CR_Pattern_Syntax */ +#endif /* USE_UNICODE_PROPERTIES */ +#endif /* USE_UNICODE_PROPERTIES */ + +/* 'NEWLINE': [[:NEWLINE:]] */ +static const OnigCodePoint CR_NEWLINE[] = { + 1, + 0x000a, 0x000a, +}; /* CR_NEWLINE */ + +/* 'Alpha': [[:Alpha:]] */ +#define CR_Alpha CR_Alphabetic + +/* 'Blank': [[:Blank:]] */ +static const OnigCodePoint CR_Blank[] = { + 9, + 0x0009, 0x0009, + 0x0020, 0x0020, + 0x00a0, 0x00a0, + 0x1680, 0x1680, + 0x180e, 0x180e, + 0x2000, 0x200a, + 0x202f, 0x202f, + 0x205f, 0x205f, + 0x3000, 0x3000, +}; /* CR_Blank */ + +/* 'Cntrl': [[:Cntrl:]] */ +#define CR_Cntrl CR_Cc + +/* 'Digit': [[:Digit:]] */ +#define CR_Digit CR_Nd + +/* 'Graph': [[:Graph:]] */ +static const OnigCodePoint CR_Graph[] = { + 490, + 0x0021, 0x007e, + 0x00a1, 0x0377, + 0x037a, 0x037e, + 0x0384, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x055f, + 0x0561, 0x0587, + 0x0589, 0x058a, + 0x0591, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f4, + 0x0600, 0x0603, + 0x0606, 0x061b, + 0x061e, 0x061f, + 0x0621, 0x065e, + 0x0660, 0x070d, + 0x070f, 0x074a, + 0x074d, 0x07b1, + 0x07c0, 0x07fa, + 0x0800, 0x082d, + 0x0830, 0x083e, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0972, + 0x0979, 0x097f, + 0x0981, 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, 0x0aef, + 0x0af1, 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, 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, 0x0bfa, + 0x0c01, 0x0c03, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c78, 0x0c7f, + 0x0c82, 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, - 0x0d79, 0x0d79, - 0x0f01, 0x0f03, - 0x0f13, 0x0f17, - 0x0f1a, 0x0f1f, - 0x0f34, 0x0f34, - 0x0f36, 0x0f36, - 0x0f38, 0x0f38, - 0x0fbe, 0x0fc5, - 0x0fc7, 0x0fcc, - 0x0fce, 0x0fcf, - 0x109e, 0x109f, - 0x1360, 0x1360, - 0x1390, 0x1399, + 0x0d02, 0x0d03, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4d, + 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, + 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, 0x0edd, + 0x0f00, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fbe, 0x0fcc, + 0x0fce, 0x0fd8, + 0x1000, 0x10c5, + 0x10d0, 0x10fc, + 0x1100, 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, 0x137c, + 0x1380, 0x1399, + 0x13a0, 0x13f4, + 0x1400, 0x167f, + 0x1681, 0x169c, + 0x16a0, 0x16f0, + 0x1700, 0x170c, + 0x170e, 0x1714, + 0x1720, 0x1736, + 0x1740, 0x1753, + 0x1760, 0x176c, + 0x176e, 0x1770, + 0x1772, 0x1773, + 0x1780, 0x17dd, + 0x17e0, 0x17e9, + 0x17f0, 0x17f9, + 0x1800, 0x180d, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18aa, + 0x18b0, 0x18f5, + 0x1900, 0x191c, + 0x1920, 0x192b, + 0x1930, 0x193b, 0x1940, 0x1940, - 0x19e0, 0x19ff, - 0x1b61, 0x1b6a, - 0x1b74, 0x1b7c, - 0x2100, 0x2101, - 0x2103, 0x2106, - 0x2108, 0x2109, - 0x2114, 0x2114, - 0x2116, 0x2118, - 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, 0x23e7, + 0x1944, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19b0, 0x19c9, + 0x19d0, 0x19da, + 0x19de, 0x1a1b, + 0x1a1e, 0x1a5e, + 0x1a60, 0x1a7c, + 0x1a7f, 0x1a89, + 0x1a90, 0x1a99, + 0x1aa0, 0x1aad, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b7c, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c37, + 0x1c3b, 0x1c49, + 0x1c4d, 0x1c7f, + 0x1cd0, 0x1cf2, + 0x1d00, 0x1de6, + 0x1dfd, 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, + 0x206a, 0x2071, + 0x2074, 0x208e, + 0x2090, 0x2094, + 0x20a0, 0x20b8, + 0x20d0, 0x20f0, + 0x2100, 0x2189, + 0x2190, 0x23e8, 0x2400, 0x2426, 0x2440, 0x244a, - 0x249c, 0x24e9, - 0x2500, 0x25b6, - 0x25b8, 0x25c0, - 0x25c2, 0x25f7, - 0x2600, 0x266e, - 0x2670, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, + 0x2460, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, 0x2701, 0x2704, 0x2706, 0x2709, 0x270c, 0x2727, 0x2729, 0x274b, 0x274d, 0x274d, 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2767, - 0x2794, 0x2794, + 0x2756, 0x275e, + 0x2761, 0x2794, 0x2798, 0x27af, 0x27b1, 0x27be, - 0x2800, 0x28ff, - 0x2b00, 0x2b2f, - 0x2b45, 0x2b46, - 0x2b50, 0x2b54, - 0x2ce5, 0x2cea, + 0x27c0, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 0x2b4c, + 0x2b50, 0x2b59, + 0x2c00, 0x2c2e, + 0x2c30, 0x2c5e, + 0x2c60, 0x2cf1, + 0x2cf9, 0x2d25, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, + 0x2d80, 0x2d96, + 0x2da0, 0x2da6, + 0x2da8, 0x2dae, + 0x2db0, 0x2db6, + 0x2db8, 0x2dbe, + 0x2dc0, 0x2dc6, + 0x2dc8, 0x2dce, + 0x2dd0, 0x2dd6, + 0x2dd8, 0x2dde, + 0x2de0, 0x2e31, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, - 0x3004, 0x3004, - 0x3012, 0x3013, - 0x3020, 0x3020, - 0x3036, 0x3037, - 0x303e, 0x303f, - 0x3190, 0x3191, - 0x3196, 0x319f, + 0x3001, 0x303f, + 0x3041, 0x3096, + 0x3099, 0x30ff, + 0x3105, 0x312d, + 0x3131, 0x318e, + 0x3190, 0x31b7, 0x31c0, 0x31e3, - 0x3200, 0x321e, - 0x322a, 0x3243, - 0x3250, 0x3250, - 0x3260, 0x327f, - 0x328a, 0x32b0, - 0x32c0, 0x32fe, - 0x3300, 0x33ff, - 0x4dc0, 0x4dff, + 0x31f0, 0x321e, + 0x3220, 0x32fe, + 0x3300, 0x4db5, + 0x4dc0, 0x9fcb, + 0xa000, 0xa48c, 0xa490, 0xa4c6, - 0xa828, 0xa82b, - 0xfdfd, 0xfdfd, - 0xffe4, 0xffe4, - 0xffe8, 0xffe8, - 0xffed, 0xffee, - 0xfffc, 0xfffd, - 0x10102, 0x10102, - 0x10137, 0x1013f, - 0x10179, 0x10189, + 0xa4d0, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa673, + 0xa67c, 0xa697, + 0xa6a0, 0xa6f7, + 0xa700, 0xa78c, + 0xa7fb, 0xa82b, + 0xa830, 0xa839, + 0xa840, 0xa877, + 0xa880, 0xa8c4, + 0xa8ce, 0xa8d9, + 0xa8e0, 0xa8fb, + 0xa900, 0xa953, + 0xa95f, 0xa97c, + 0xa980, 0xa9cd, + 0xa9cf, 0xa9d9, + 0xa9de, 0xa9df, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa5c, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadf, + 0xabc0, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xe000, 0xfa2d, + 0xfa30, 0xfa6d, + 0xfa70, 0xfad9, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xfb1d, 0xfb36, + 0xfb38, 0xfb3c, + 0xfb3e, 0xfb3e, + 0xfb40, 0xfb41, + 0xfb43, 0xfb44, + 0xfb46, 0xfbb1, + 0xfbd3, 0xfd3f, + 0xfd50, 0xfd8f, + 0xfd92, 0xfdc7, + 0xfdf0, 0xfdfd, + 0xfe00, 0xfe19, + 0xfe20, 0xfe26, + 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, 0x1018a, 0x10190, 0x1019b, - 0x101d0, 0x101fc, + 0x101d0, 0x101fd, + 0x10280, 0x1029c, + 0x102a0, 0x102d0, + 0x10300, 0x1031e, + 0x10320, 0x10323, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x1039f, 0x103c3, + 0x103c8, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10857, 0x1085f, + 0x10900, 0x1091b, + 0x1091f, 0x10939, + 0x1093f, 0x1093f, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a47, + 0x10a50, 0x10a58, + 0x10a60, 0x10a7f, + 0x10b00, 0x10b35, + 0x10b39, 0x10b55, + 0x10b58, 0x10b72, + 0x10b78, 0x10b7f, + 0x10c00, 0x10c48, + 0x10e60, 0x10e7e, + 0x11080, 0x110c1, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x12470, 0x12473, + 0x13000, 0x1342e, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, - 0x1d129, 0x1d164, - 0x1d16a, 0x1d16c, - 0x1d183, 0x1d184, - 0x1d18c, 0x1d1a9, - 0x1d1ae, 0x1d1dd, - 0x1d200, 0x1d241, - 0x1d245, 0x1d245, + 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, 0x1f000, 0x1f02b, 0x1f030, 0x1f093, -}; /* CR_So */ - -/* 'Z': Major Category */ -static const OnigCodePoint CR_Z[] = { - 9, - 0x0020, 0x0020, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x180e, 0x180e, - 0x2000, 0x200a, - 0x2028, 0x2029, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000, -}; /* CR_Z */ - -/* 'Zl': General Category */ -static const OnigCodePoint CR_Zl[] = { - 1, - 0x2028, 0x2028, -}; /* CR_Zl */ - -/* 'Zp': General Category */ -static const OnigCodePoint CR_Zp[] = { - 1, - 0x2029, 0x2029, -}; /* CR_Zp */ + 0x1f100, 0x1f10a, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, + 0xe0100, 0xe01ef, + 0xf0000, 0xffffd, + 0x100000, 0x10fffd, +}; /* CR_Graph */ -/* 'Zs': General Category */ -static const OnigCodePoint CR_Zs[] = { - 8, - 0x0020, 0x0020, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x180e, 0x180e, - 0x2000, 0x200a, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000, -}; /* CR_Zs */ +/* 'Lower': [[:Lower:]] */ +#define CR_Lower CR_Lowercase -/* 'Common': Script */ -static const OnigCodePoint CR_Common[] = { - 137, - 0x0000, 0x0040, - 0x005b, 0x0060, - 0x007b, 0x00a9, - 0x00ab, 0x00b9, - 0x00bb, 0x00bf, - 0x00d7, 0x00d7, - 0x00f7, 0x00f7, - 0x02b9, 0x02df, - 0x02e5, 0x02ff, - 0x0374, 0x0374, - 0x037e, 0x037e, - 0x0385, 0x0385, - 0x0387, 0x0387, - 0x0589, 0x0589, +/* 'Print': [[:Print:]] */ +static const OnigCodePoint CR_Print[] = { + 487, + 0x0020, 0x007e, + 0x00a0, 0x0377, + 0x037a, 0x037e, + 0x0384, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x055f, + 0x0561, 0x0587, + 0x0589, 0x058a, + 0x0591, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f4, 0x0600, 0x0603, - 0x060c, 0x060c, - 0x061b, 0x061b, - 0x061f, 0x061f, - 0x0640, 0x0640, - 0x0660, 0x0669, - 0x06dd, 0x06dd, - 0x0964, 0x0965, - 0x0970, 0x0970, + 0x0606, 0x061b, + 0x061e, 0x061f, + 0x0621, 0x065e, + 0x0660, 0x070d, + 0x070f, 0x074a, + 0x074d, 0x07b1, + 0x07c0, 0x07fa, + 0x0800, 0x082d, + 0x0830, 0x083e, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0972, + 0x0979, 0x097f, + 0x0981, 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, 0x0aef, + 0x0af1, 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, 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, 0x0bfa, + 0x0c01, 0x0c03, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c78, 0x0c7f, + 0x0c82, 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, - 0x0e3f, 0x0e3f, - 0x10fb, 0x10fb, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x1802, 0x1803, - 0x1805, 0x1805, - 0x2000, 0x200b, - 0x200e, 0x2064, - 0x206a, 0x2070, - 0x2074, 0x207e, - 0x2080, 0x208e, - 0x20a0, 0x20b5, - 0x2100, 0x2125, - 0x2127, 0x2129, - 0x212c, 0x2131, - 0x2133, 0x214d, - 0x214f, 0x214f, - 0x2153, 0x215f, - 0x2190, 0x23e7, + 0x0d02, 0x0d03, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4d, + 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, + 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, 0x0edd, + 0x0f00, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fbe, 0x0fcc, + 0x0fce, 0x0fd8, + 0x1000, 0x10c5, + 0x10d0, 0x10fc, + 0x1100, 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, 0x137c, + 0x1380, 0x1399, + 0x13a0, 0x13f4, + 0x1400, 0x169c, + 0x16a0, 0x16f0, + 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, 0x191c, + 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, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b7c, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c37, + 0x1c3b, 0x1c49, + 0x1c4d, 0x1c7f, + 0x1cd0, 0x1cf2, + 0x1d00, 0x1de6, + 0x1dfd, 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, + 0x206a, 0x2071, + 0x2074, 0x208e, + 0x2090, 0x2094, + 0x20a0, 0x20b8, + 0x20d0, 0x20f0, + 0x2100, 0x2189, + 0x2190, 0x23e8, 0x2400, 0x2426, 0x2440, 0x244a, - 0x2460, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, + 0x2460, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, 0x2701, 0x2704, 0x2706, 0x2709, 0x270c, 0x2727, 0x2729, 0x274b, 0x274d, 0x274d, 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, + 0x2756, 0x275e, 0x2761, 0x2794, 0x2798, 0x27af, 0x27b1, 0x27be, 0x27c0, 0x27ca, 0x27cc, 0x27cc, - 0x27d0, 0x27ff, - 0x2900, 0x2b4c, - 0x2b50, 0x2b54, - 0x2e00, 0x2e30, + 0x27d0, 0x2b4c, + 0x2b50, 0x2b59, + 0x2c00, 0x2c2e, + 0x2c30, 0x2c5e, + 0x2c60, 0x2cf1, + 0x2cf9, 0x2d25, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, + 0x2d80, 0x2d96, + 0x2da0, 0x2da6, + 0x2da8, 0x2dae, + 0x2db0, 0x2db6, + 0x2db8, 0x2dbe, + 0x2dc0, 0x2dc6, + 0x2dc8, 0x2dce, + 0x2dd0, 0x2dd6, + 0x2dd8, 0x2dde, + 0x2de0, 0x2e31, + 0x2e80, 0x2e99, + 0x2e9b, 0x2ef3, + 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, - 0x3000, 0x3004, - 0x3006, 0x3006, - 0x3008, 0x3020, - 0x3030, 0x3037, - 0x303c, 0x303f, - 0x309b, 0x309c, - 0x30a0, 0x30a0, - 0x30fb, 0x30fc, - 0x3190, 0x319f, + 0x3000, 0x303f, + 0x3041, 0x3096, + 0x3099, 0x30ff, + 0x3105, 0x312d, + 0x3131, 0x318e, + 0x3190, 0x31b7, 0x31c0, 0x31e3, - 0x3220, 0x3243, - 0x3250, 0x325f, - 0x327f, 0x32cf, - 0x3358, 0x33ff, - 0x4dc0, 0x4dff, - 0xa700, 0xa721, - 0xa788, 0xa78a, - 0xfd3e, 0xfd3f, - 0xfdfd, 0xfdfd, - 0xfe10, 0xfe19, + 0x31f0, 0x321e, + 0x3220, 0x32fe, + 0x3300, 0x4db5, + 0x4dc0, 0x9fcb, + 0xa000, 0xa48c, + 0xa490, 0xa4c6, + 0xa4d0, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa673, + 0xa67c, 0xa697, + 0xa6a0, 0xa6f7, + 0xa700, 0xa78c, + 0xa7fb, 0xa82b, + 0xa830, 0xa839, + 0xa840, 0xa877, + 0xa880, 0xa8c4, + 0xa8ce, 0xa8d9, + 0xa8e0, 0xa8fb, + 0xa900, 0xa953, + 0xa95f, 0xa97c, + 0xa980, 0xa9cd, + 0xa9cf, 0xa9d9, + 0xa9de, 0xa9df, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa5c, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadf, + 0xabc0, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xe000, 0xfa2d, + 0xfa30, 0xfa6d, + 0xfa70, 0xfad9, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xfb1d, 0xfb36, + 0xfb38, 0xfb3c, + 0xfb3e, 0xfb3e, + 0xfb40, 0xfb41, + 0xfb43, 0xfb44, + 0xfb46, 0xfbb1, + 0xfbd3, 0xfd3f, + 0xfd50, 0xfd8f, + 0xfd92, 0xfdc7, + 0xfdf0, 0xfdfd, + 0xfe00, 0xfe19, + 0xfe20, 0xfe26, 0xfe30, 0xfe52, 0xfe54, 0xfe66, 0xfe68, 0xfe6b, + 0xfe70, 0xfe74, + 0xfe76, 0xfefc, 0xfeff, 0xfeff, - 0xff01, 0xff20, - 0xff3b, 0xff40, - 0xff5b, 0xff65, - 0xff70, 0xff70, - 0xff9e, 0xff9f, + 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, 0x1013f, + 0x10137, 0x1018a, 0x10190, 0x1019b, - 0x101d0, 0x101fc, + 0x101d0, 0x101fd, + 0x10280, 0x1029c, + 0x102a0, 0x102d0, + 0x10300, 0x1031e, + 0x10320, 0x10323, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x1039f, 0x103c3, + 0x103c8, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10857, 0x1085f, + 0x10900, 0x1091b, + 0x1091f, 0x10939, + 0x1093f, 0x1093f, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a47, + 0x10a50, 0x10a58, + 0x10a60, 0x10a7f, + 0x10b00, 0x10b35, + 0x10b39, 0x10b55, + 0x10b58, 0x10b72, + 0x10b78, 0x10b7f, + 0x10c00, 0x10c48, + 0x10e60, 0x10e7e, + 0x11080, 0x110c1, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x12470, 0x12473, + 0x13000, 0x1342e, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, - 0x1d129, 0x1d166, - 0x1d16a, 0x1d17a, - 0x1d183, 0x1d184, - 0x1d18c, 0x1d1a9, - 0x1d1ae, 0x1d1dd, + 0x1d129, 0x1d1dd, + 0x1d200, 0x1d245, 0x1d300, 0x1d356, 0x1d360, 0x1d371, 0x1d400, 0x1d454, @@ -8375,174 +15097,623 @@ static const OnigCodePoint CR_Common[] = { 0x1d546, 0x1d546, 0x1d54a, 0x1d550, 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d7cb, + 0x1d6a8, 0x1d7cb, + 0x1d7ce, 0x1d7ff, + 0x1f000, 0x1f02b, + 0x1f030, 0x1f093, + 0x1f100, 0x1f10a, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, + 0xe0100, 0xe01ef, + 0xf0000, 0xffffd, + 0x100000, 0x10fffd, +}; /* CR_Print */ + +/* 'Punct': [[:Punct:]] */ +#define CR_Punct CR_P + +/* 'Space': [[:Space:]] */ +#define CR_Space CR_White_Space + +/* 'Upper': [[:Upper:]] */ +#define CR_Upper CR_Uppercase + +/* 'XDigit': [[:XDigit:]] */ +#define CR_XDigit CR_ASCII_Hex_Digit + +/* 'Word': [[:Word:]] */ +static const OnigCodePoint CR_Word[] = { + 506, + 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, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x0483, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0610, 0x061a, + 0x0621, 0x065e, + 0x0660, 0x0669, + 0x066e, 0x06d3, + 0x06d5, 0x06dc, + 0x06de, 0x06e8, + 0x06ea, 0x06fc, + 0x06ff, 0x06ff, + 0x0710, 0x074a, + 0x074d, 0x07b1, + 0x07c0, 0x07f5, + 0x07fa, 0x07fa, + 0x0800, 0x082d, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0963, + 0x0966, 0x096f, + 0x0971, 0x0972, + 0x0979, 0x097f, + 0x0981, 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, + 0x0c01, 0x0c03, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c82, 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, + 0x0d02, 0x0d03, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4d, + 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, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f18, 0x0f19, + 0x0f20, 0x0f29, + 0x0f35, 0x0f35, + 0x0f37, 0x0f37, + 0x0f39, 0x0f39, + 0x0f3e, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f84, + 0x0f86, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fc6, 0x0fc6, + 0x1000, 0x1049, + 0x1050, 0x109d, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, 0x16f0, + 0x1700, 0x170c, + 0x170e, 0x1714, + 0x1720, 0x1734, + 0x1740, 0x1753, + 0x1760, 0x176c, + 0x176e, 0x1770, + 0x1772, 0x1773, + 0x1780, 0x17b3, + 0x17b6, 0x17d3, + 0x17d7, 0x17d7, + 0x17dc, 0x17dd, + 0x17e0, 0x17e9, + 0x180b, 0x180d, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18aa, + 0x18b0, 0x18f5, + 0x1900, 0x191c, + 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, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b59, + 0x1b6b, 0x1b73, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c37, + 0x1c40, 0x1c49, + 0x1c4d, 0x1c7d, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1cf2, + 0x1d00, 0x1de6, + 0x1dfd, 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, 0x2094, + 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, 0x2cf1, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 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, 0x302f, + 0x3031, 0x3035, + 0x3038, 0x303c, + 0x3041, 0x3096, + 0x3099, 0x309a, + 0x309d, 0x309f, + 0x30a1, 0x30fa, + 0x30fc, 0x30ff, + 0x3105, 0x312d, + 0x3131, 0x318e, + 0x31a0, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa672, + 0xa67c, 0xa67d, + 0xa67f, 0xa697, + 0xa6a0, 0xa6f1, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 0xa827, + 0xa840, 0xa873, + 0xa880, 0xa8c4, + 0xa8d0, 0xa8d9, + 0xa8e0, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa900, 0xa92d, + 0xa930, 0xa953, + 0xa960, 0xa97c, + 0xa980, 0xa9c0, + 0xa9cf, 0xa9d9, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabea, + 0xabec, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0xfe26, + 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, + 0x10300, 0x1031e, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11080, 0x110ba, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 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, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, -}; /* CR_Common */ + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, + 0xe0100, 0xe01ef, +}; /* CR_Word */ -/* 'Latin': Script */ -static const OnigCodePoint CR_Latin[] = { - 29, +/* 'Alnum': [[:Alnum:]] */ +static const OnigCodePoint CR_Alnum[] = { + 497, + 0x0030, 0x0039, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, + 0x00b5, 0x00b5, 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, 0x2094, - 0x212a, 0x212b, - 0x2132, 0x2132, - 0x214e, 0x214e, - 0x2160, 0x2188, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0xa722, 0xa787, - 0xa78b, 0xa78c, - 0xa7fb, 0xa7ff, - 0xfb00, 0xfb06, - 0xff21, 0xff3a, - 0xff41, 0xff5a, -}; /* CR_Latin */ - -/* 'Greek': Script */ -static const OnigCodePoint CR_Greek[] = { - 33, - 0x0370, 0x0373, - 0x0375, 0x0377, - 0x037a, 0x037d, - 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, - 0x10140, 0x1018a, - 0x1d200, 0x1d245, -}; /* CR_Greek */ - -/* 'Cyrillic': Script */ -static const OnigCodePoint CR_Cyrillic[] = { - 7, - 0x0400, 0x0523, - 0x1d2b, 0x1d2b, - 0x1d78, 0x1d78, - 0x2de0, 0x2dff, - 0xa640, 0xa65f, - 0xa662, 0xa673, - 0xa67c, 0xa697, -}; /* CR_Cyrillic */ - -/* 'Armenian': Script */ -static const OnigCodePoint CR_Armenian[] = { - 5, + 0x00d8, 0x00f6, + 0x00f8, 0x02c1, + 0x02c6, 0x02d1, + 0x02e0, 0x02e4, + 0x02ec, 0x02ec, + 0x02ee, 0x02ee, + 0x0345, 0x0345, + 0x0370, 0x0374, + 0x0376, 0x0377, + 0x037a, 0x037d, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x048a, 0x0525, 0x0531, 0x0556, - 0x0559, 0x055f, + 0x0559, 0x0559, 0x0561, 0x0587, - 0x058a, 0x058a, - 0xfb13, 0xfb17, -}; /* CR_Armenian */ - -/* 'Hebrew': Script */ -static const OnigCodePoint CR_Hebrew[] = { - 9, - 0x0591, 0x05c7, + 0x05b0, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfb4f, -}; /* CR_Hebrew */ - -/* 'Arabic': Script */ -static const OnigCodePoint CR_Arabic[] = { - 17, - 0x0606, 0x060b, - 0x060d, 0x061a, - 0x061e, 0x061e, - 0x0621, 0x063f, - 0x0641, 0x064a, - 0x0656, 0x065e, - 0x066a, 0x066f, - 0x0671, 0x06dc, - 0x06de, 0x06ff, - 0x0750, 0x077f, - 0xfb50, 0xfbb1, - 0xfbd3, 0xfd3d, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfc, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, -}; /* CR_Arabic */ - -/* 'Syriac': Script */ -static const OnigCodePoint CR_Syriac[] = { - 3, - 0x0700, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x074f, -}; /* CR_Syriac */ - -/* 'Thaana': Script */ -static const OnigCodePoint CR_Thaana[] = { - 1, - 0x0780, 0x07b1, -}; /* CR_Thaana */ - -/* 'Devanagari': Script */ -static const OnigCodePoint CR_Devanagari[] = { - 8, - 0x0901, 0x0939, - 0x093c, 0x094d, + 0x05f0, 0x05f2, + 0x0610, 0x061a, + 0x0621, 0x0657, + 0x0659, 0x065e, + 0x0660, 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, + 0x0900, 0x0939, + 0x093d, 0x094c, + 0x094e, 0x094e, 0x0950, 0x0950, - 0x0953, 0x0954, + 0x0955, 0x0955, 0x0958, 0x0963, 0x0966, 0x096f, 0x0971, 0x0972, - 0x097b, 0x097f, -}; /* CR_Devanagari */ - -/* 'Bengali': Script */ -static const OnigCodePoint CR_Bengali[] = { - 14, + 0x0979, 0x097f, 0x0981, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, @@ -8550,18 +15721,14 @@ static const OnigCodePoint CR_Bengali[] = { 0x09aa, 0x09b0, 0x09b2, 0x09b2, 0x09b6, 0x09b9, - 0x09bc, 0x09c4, + 0x09bd, 0x09c4, 0x09c7, 0x09c8, - 0x09cb, 0x09ce, + 0x09cb, 0x09cc, + 0x09ce, 0x09ce, 0x09d7, 0x09d7, 0x09dc, 0x09dd, 0x09df, 0x09e3, - 0x09e6, 0x09fa, -}; /* CR_Bengali */ - -/* 'Gurmukhi': Script */ -static const OnigCodePoint CR_Gurmukhi[] = { - 16, + 0x09e6, 0x09f1, 0x0a01, 0x0a03, 0x0a05, 0x0a0a, 0x0a0f, 0x0a10, @@ -8570,19 +15737,13 @@ static const OnigCodePoint CR_Gurmukhi[] = { 0x0a32, 0x0a33, 0x0a35, 0x0a36, 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, 0x0a3e, 0x0a42, 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, + 0x0a4b, 0x0a4c, 0x0a51, 0x0a51, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e, 0x0a66, 0x0a75, -}; /* CR_Gurmukhi */ - -/* 'Gujarati': Script */ -static const OnigCodePoint CR_Gujarati[] = { - 14, 0x0a81, 0x0a83, 0x0a85, 0x0a8d, 0x0a8f, 0x0a91, @@ -8590,18 +15751,12 @@ static const OnigCodePoint CR_Gujarati[] = { 0x0aaa, 0x0ab0, 0x0ab2, 0x0ab3, 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, + 0x0abd, 0x0ac5, 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, + 0x0acb, 0x0acc, 0x0ad0, 0x0ad0, 0x0ae0, 0x0ae3, 0x0ae6, 0x0aef, - 0x0af1, 0x0af1, -}; /* CR_Gujarati */ - -/* 'Oriya': Script */ -static const OnigCodePoint CR_Oriya[] = { - 14, 0x0b01, 0x0b03, 0x0b05, 0x0b0c, 0x0b0f, 0x0b10, @@ -8609,18 +15764,14 @@ static const OnigCodePoint CR_Oriya[] = { 0x0b2a, 0x0b30, 0x0b32, 0x0b33, 0x0b35, 0x0b39, - 0x0b3c, 0x0b44, + 0x0b3d, 0x0b44, 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, + 0x0b4b, 0x0b4c, 0x0b56, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b63, - 0x0b66, 0x0b71, -}; /* CR_Oriya */ - -/* 'Tamil': Script */ -static const OnigCodePoint CR_Tamil[] = { - 16, + 0x0b66, 0x0b6f, + 0x0b71, 0x0b71, 0x0b82, 0x0b83, 0x0b85, 0x0b8a, 0x0b8e, 0x0b90, @@ -8633,15 +15784,10 @@ static const OnigCodePoint CR_Tamil[] = { 0x0bae, 0x0bb9, 0x0bbe, 0x0bc2, 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, + 0x0bca, 0x0bcc, 0x0bd0, 0x0bd0, 0x0bd7, 0x0bd7, - 0x0be6, 0x0bfa, -}; /* CR_Tamil */ - -/* 'Telugu': Script */ -static const OnigCodePoint CR_Telugu[] = { - 14, + 0x0be6, 0x0bef, 0x0c01, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, @@ -8650,35 +15796,24 @@ static const OnigCodePoint CR_Telugu[] = { 0x0c35, 0x0c39, 0x0c3d, 0x0c44, 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, + 0x0c4a, 0x0c4c, 0x0c55, 0x0c56, 0x0c58, 0x0c59, 0x0c60, 0x0c63, 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, -}; /* CR_Telugu */ - -/* 'Kannada': Script */ -static const OnigCodePoint CR_Kannada[] = { - 13, 0x0c82, 0x0c83, 0x0c85, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, + 0x0cbd, 0x0cc4, 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, + 0x0cca, 0x0ccc, 0x0cd5, 0x0cd6, 0x0cde, 0x0cde, 0x0ce0, 0x0ce3, 0x0ce6, 0x0cef, -}; /* CR_Kannada */ - -/* 'Malayalam': Script */ -static const OnigCodePoint CR_Malayalam[] = { - 12, 0x0d02, 0x0d03, 0x0d05, 0x0d0c, 0x0d0e, 0x0d10, @@ -8686,39 +15821,25 @@ static const OnigCodePoint CR_Malayalam[] = { 0x0d2a, 0x0d39, 0x0d3d, 0x0d44, 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, + 0x0d4a, 0x0d4c, 0x0d57, 0x0d57, 0x0d60, 0x0d63, - 0x0d66, 0x0d75, - 0x0d79, 0x0d7f, -}; /* CR_Malayalam */ - -/* 'Sinhala': Script */ -static const OnigCodePoint CR_Sinhala[] = { - 11, + 0x0d66, 0x0d6f, + 0x0d7a, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, - 0x0df2, 0x0df4, -}; /* CR_Sinhala */ - -/* 'Thai': Script */ -static const OnigCodePoint CR_Thai[] = { - 2, + 0x0df2, 0x0df3, 0x0e01, 0x0e3a, - 0x0e40, 0x0e5b, -}; /* CR_Thai */ - -/* 'Lao': Script */ -static const OnigCodePoint CR_Lao[] = { - 18, + 0x0e40, 0x0e46, + 0x0e4d, 0x0e4d, + 0x0e50, 0x0e59, 0x0e81, 0x0e82, 0x0e84, 0x0e84, 0x0e87, 0x0e88, @@ -8734,77 +15855,139 @@ static const OnigCodePoint CR_Lao[] = { 0x0ebb, 0x0ebd, 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, + 0x0ecd, 0x0ecd, 0x0ed0, 0x0ed9, 0x0edc, 0x0edd, -}; /* CR_Lao */ - -/* 'Tibetan': Script */ -static const OnigCodePoint CR_Tibetan[] = { - 7, - 0x0f00, 0x0f47, + 0x0f00, 0x0f00, + 0x0f20, 0x0f29, + 0x0f40, 0x0f47, 0x0f49, 0x0f6c, - 0x0f71, 0x0f8b, + 0x0f71, 0x0f81, + 0x0f88, 0x0f8b, 0x0f90, 0x0f97, 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fd4, -}; /* CR_Tibetan */ - -/* 'Myanmar': Script */ -static const OnigCodePoint CR_Myanmar[] = { - 2, - 0x1000, 0x1099, - 0x109e, 0x109f, -}; /* CR_Myanmar */ - -/* 'Georgian': Script */ -static const OnigCodePoint CR_Georgian[] = { - 4, + 0x1000, 0x1036, + 0x1038, 0x1038, + 0x103b, 0x1049, + 0x1050, 0x1062, + 0x1065, 0x1068, + 0x106e, 0x1086, + 0x108e, 0x108e, + 0x1090, 0x1099, + 0x109c, 0x109d, 0x10a0, 0x10c5, 0x10d0, 0x10fa, 0x10fc, 0x10fc, + 0x1100, 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, 0x16f0, + 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, 0x191c, + 0x1920, 0x192b, + 0x1930, 0x1938, + 0x1946, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19b0, 0x19c9, + 0x19d0, 0x19da, + 0x1a00, 0x1a1b, + 0x1a20, 0x1a5e, + 0x1a61, 0x1a74, + 0x1a80, 0x1a89, + 0x1a90, 0x1a99, + 0x1aa7, 0x1aa7, + 0x1b00, 0x1b33, + 0x1b35, 0x1b43, + 0x1b45, 0x1b4b, + 0x1b50, 0x1b59, + 0x1b80, 0x1ba9, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c35, + 0x1c40, 0x1c49, + 0x1c4d, 0x1c7d, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf2, + 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, 0x2094, + 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, 0x2d00, 0x2d25, -}; /* CR_Georgian */ - -/* 'Hangul': Script */ -static const OnigCodePoint CR_Hangul[] = { - 12, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x3131, 0x318e, - 0x3200, 0x321e, - 0x3260, 0x327e, - 0xac00, 0xd7a3, - 0xffa0, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, -}; /* CR_Hangul */ - -/* 'Ethiopic': Script */ -static const OnigCodePoint CR_Ethiopic[] = { - 27, - 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, - 0x135f, 0x137c, - 0x1380, 0x1399, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, 0x2d80, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, @@ -8814,194 +15997,87 @@ static const OnigCodePoint CR_Ethiopic[] = { 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, -}; /* CR_Ethiopic */ - -/* 'Cherokee': Script */ -static const OnigCodePoint CR_Cherokee[] = { - 1, - 0x13a0, 0x13f4, -}; /* CR_Cherokee */ - -/* 'Canadian_Aboriginal': Script */ -static const OnigCodePoint CR_Canadian_Aboriginal[] = { - 1, - 0x1401, 0x1676, -}; /* CR_Canadian_Aboriginal */ - -/* 'Ogham': Script */ -static const OnigCodePoint CR_Ogham[] = { - 1, - 0x1680, 0x169c, -}; /* CR_Ogham */ - -/* 'Runic': Script */ -static const OnigCodePoint CR_Runic[] = { - 2, - 0x16a0, 0x16ea, - 0x16ee, 0x16f0, -}; /* CR_Runic */ - -/* 'Khmer': Script */ -static const OnigCodePoint CR_Khmer[] = { - 4, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x19e0, 0x19ff, -}; /* CR_Khmer */ - -/* 'Mongolian': Script */ -static const OnigCodePoint CR_Mongolian[] = { - 6, - 0x1800, 0x1801, - 0x1804, 0x1804, - 0x1806, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, -}; /* CR_Mongolian */ - -/* 'Hiragana': Script */ -static const OnigCodePoint CR_Hiragana[] = { - 2, + 0x2de0, 0x2dff, + 0x2e2f, 0x2e2f, + 0x3005, 0x3007, + 0x3021, 0x3029, + 0x3031, 0x3035, + 0x3038, 0x303c, 0x3041, 0x3096, 0x309d, 0x309f, -}; /* CR_Hiragana */ - -/* 'Katakana': Script */ -static const OnigCodePoint CR_Katakana[] = { - 7, 0x30a1, 0x30fa, - 0x30fd, 0x30ff, - 0x31f0, 0x31ff, - 0x32d0, 0x32fe, - 0x3300, 0x3357, - 0xff66, 0xff6f, - 0xff71, 0xff9d, -}; /* CR_Katakana */ - -/* 'Bopomofo': Script */ -static const OnigCodePoint CR_Bopomofo[] = { - 2, + 0x30fc, 0x30ff, 0x3105, 0x312d, + 0x3131, 0x318e, 0x31a0, 0x31b7, -}; /* CR_Bopomofo */ - -/* 'Han': Script */ -static const OnigCodePoint CR_Han[] = { - 14, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x3005, 0x3005, - 0x3007, 0x3007, - 0x3021, 0x3029, - 0x3038, 0x303b, + 0x31f0, 0x31ff, 0x3400, 0x4db5, - 0x4e00, 0x9fc3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0x20000, 0x2a6d6, - 0x2f800, 0x2fa1d, -}; /* CR_Han */ - -/* 'Yi': Script */ -static const OnigCodePoint CR_Yi[] = { - 2, + 0x4e00, 0x9fcb, 0xa000, 0xa48c, - 0xa490, 0xa4c6, -}; /* CR_Yi */ - -/* 'Old_Italic': Script */ -static const OnigCodePoint CR_Old_Italic[] = { - 2, - 0x10300, 0x1031e, - 0x10320, 0x10323, -}; /* CR_Old_Italic */ - -/* 'Gothic': Script */ -static const OnigCodePoint CR_Gothic[] = { - 1, - 0x10330, 0x1034a, -}; /* CR_Gothic */ - -/* 'Deseret': Script */ -static const OnigCodePoint CR_Deseret[] = { - 1, - 0x10400, 0x1044f, -}; /* CR_Deseret */ - -/* 'Inherited': Script */ -static const OnigCodePoint CR_Inherited[] = { - 18, - 0x0300, 0x036f, - 0x064b, 0x0655, - 0x0670, 0x0670, - 0x0951, 0x0952, - 0x1dc0, 0x1de6, - 0x1dfe, 0x1dff, - 0x200c, 0x200d, - 0x20d0, 0x20f0, - 0x302a, 0x302f, - 0x3099, 0x309a, - 0xfe00, 0xfe0f, - 0xfe20, 0xfe26, - 0x101fd, 0x101fd, - 0x1d167, 0x1d169, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0xe0100, 0xe01ef, -}; /* CR_Inherited */ - -/* 'Tagalog': Script */ -static const OnigCodePoint CR_Tagalog[] = { - 2, - 0x1700, 0x170c, - 0x170e, 0x1714, -}; /* CR_Tagalog */ - -/* 'Hanunoo': Script */ -static const OnigCodePoint CR_Hanunoo[] = { - 1, - 0x1720, 0x1734, -}; /* CR_Hanunoo */ - -/* 'Buhid': Script */ -static const OnigCodePoint CR_Buhid[] = { - 1, - 0x1740, 0x1753, -}; /* CR_Buhid */ - -/* 'Tagbanwa': Script */ -static const OnigCodePoint CR_Tagbanwa[] = { - 3, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, -}; /* CR_Tagbanwa */ - -/* 'Limbu': Script */ -static const OnigCodePoint CR_Limbu[] = { - 5, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x194f, -}; /* CR_Limbu */ - -/* 'Tai_Le': Script */ -static const OnigCodePoint CR_Tai_Le[] = { - 2, - 0x1950, 0x196d, - 0x1970, 0x1974, -}; /* CR_Tai_Le */ - -/* 'Linear_B': Script */ -static const OnigCodePoint CR_Linear_B[] = { - 7, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa67f, 0xa697, + 0xa6a0, 0xa6ef, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 0xa801, + 0xa803, 0xa805, + 0xa807, 0xa80a, + 0xa80c, 0xa827, + 0xa840, 0xa873, + 0xa880, 0xa8c3, + 0xa8d0, 0xa8d9, + 0xa8f2, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa900, 0xa92a, + 0xa930, 0xa952, + 0xa960, 0xa97c, + 0xa980, 0xa9bf, + 0xa9cf, 0xa9d9, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaabe, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabea, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, @@ -9009,220 +16085,80 @@ static const OnigCodePoint CR_Linear_B[] = { 0x1003f, 0x1004d, 0x10050, 0x1005d, 0x10080, 0x100fa, -}; /* CR_Linear_B */ - -/* 'Ugaritic': Script */ -static const OnigCodePoint CR_Ugaritic[] = { - 2, + 0x10140, 0x10174, + 0x10280, 0x1029c, + 0x102a0, 0x102d0, + 0x10300, 0x1031e, + 0x10330, 0x1034a, 0x10380, 0x1039d, - 0x1039f, 0x1039f, -}; /* CR_Ugaritic */ - -/* 'Shavian': Script */ -static const OnigCodePoint CR_Shavian[] = { - 1, - 0x10450, 0x1047f, -}; /* CR_Shavian */ - -/* 'Osmanya': Script */ -static const OnigCodePoint CR_Osmanya[] = { - 2, - 0x10480, 0x1049d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, 0x104a0, 0x104a9, -}; /* CR_Osmanya */ - -/* 'Cypriot': Script */ -static const OnigCodePoint CR_Cypriot[] = { - 6, 0x10800, 0x10805, 0x10808, 0x10808, 0x1080a, 0x10835, 0x10837, 0x10838, 0x1083c, 0x1083c, - 0x1083f, 0x1083f, -}; /* CR_Cypriot */ - -/* 'Braille': Script */ -static const OnigCodePoint CR_Braille[] = { - 1, - 0x2800, 0x28ff, -}; /* CR_Braille */ - -/* 'Buginese': Script */ -static const OnigCodePoint CR_Buginese[] = { - 2, - 0x1a00, 0x1a1b, - 0x1a1e, 0x1a1f, -}; /* CR_Buginese */ - -/* 'Coptic': Script */ -static const OnigCodePoint CR_Coptic[] = { - 3, - 0x03e2, 0x03ef, - 0x2c80, 0x2cea, - 0x2cf9, 0x2cff, -}; /* CR_Coptic */ - -/* 'New_Tai_Lue': Script */ -static const OnigCodePoint CR_New_Tai_Lue[] = { - 4, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x19de, 0x19df, -}; /* CR_New_Tai_Lue */ - -/* 'Glagolitic': Script */ -static const OnigCodePoint CR_Glagolitic[] = { - 2, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, -}; /* CR_Glagolitic */ - -/* 'Tifinagh': Script */ -static const OnigCodePoint CR_Tifinagh[] = { - 2, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, -}; /* CR_Tifinagh */ - -/* 'Syloti_Nagri': Script */ -static const OnigCodePoint CR_Syloti_Nagri[] = { - 1, - 0xa800, 0xa82b, -}; /* CR_Syloti_Nagri */ - -/* 'Old_Persian': Script */ -static const OnigCodePoint CR_Old_Persian[] = { - 2, - 0x103a0, 0x103c3, - 0x103c8, 0x103d5, -}; /* CR_Old_Persian */ - -/* 'Kharoshthi': Script */ -static const OnigCodePoint CR_Kharoshthi[] = { - 8, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, 0x10a00, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, -}; /* CR_Kharoshthi */ - -/* 'Balinese': Script */ -static const OnigCodePoint CR_Balinese[] = { - 2, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, -}; /* CR_Balinese */ - -/* 'Cuneiform': Script */ -static const OnigCodePoint CR_Cuneiform[] = { - 3, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11082, 0x110b8, 0x12000, 0x1236e, 0x12400, 0x12462, - 0x12470, 0x12473, -}; /* CR_Cuneiform */ - -/* 'Phoenician': Script */ -static const OnigCodePoint CR_Phoenician[] = { - 2, - 0x10900, 0x10919, - 0x1091f, 0x1091f, -}; /* CR_Phoenician */ - -/* 'Phags_Pa': Script */ -static const OnigCodePoint CR_Phags_Pa[] = { - 1, - 0xa840, 0xa877, -}; /* CR_Phags_Pa */ - -/* 'Nko': Script */ -static const OnigCodePoint CR_Nko[] = { - 1, - 0x07c0, 0x07fa, -}; /* CR_Nko */ - -/* 'Sundanese': Script */ -static const OnigCodePoint CR_Sundanese[] = { - 2, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, -}; /* CR_Sundanese */ - -/* 'Lepcha': Script */ -static const OnigCodePoint CR_Lepcha[] = { - 3, - 0x1c00, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c4f, -}; /* CR_Lepcha */ - -/* 'Ol_Chiki': Script */ -static const OnigCodePoint CR_Ol_Chiki[] = { - 1, - 0x1c50, 0x1c7f, -}; /* CR_Ol_Chiki */ - -/* 'Vai': Script */ -static const OnigCodePoint CR_Vai[] = { - 1, - 0xa500, 0xa62b, -}; /* CR_Vai */ - -/* 'Saurashtra': Script */ -static const OnigCodePoint CR_Saurashtra[] = { - 2, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, -}; /* CR_Saurashtra */ - -/* 'Kayah_Li': Script */ -static const OnigCodePoint CR_Kayah_Li[] = { - 1, - 0xa900, 0xa92f, -}; /* CR_Kayah_Li */ - -/* 'Rejang': Script */ -static const OnigCodePoint CR_Rejang[] = { - 2, - 0xa930, 0xa953, - 0xa95f, 0xa95f, -}; /* CR_Rejang */ - -/* 'Lycian': Script */ -static const OnigCodePoint CR_Lycian[] = { - 1, - 0x10280, 0x1029c, -}; /* CR_Lycian */ + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Alnum */ -/* 'Carian': Script */ -static const OnigCodePoint CR_Carian[] = { +/* 'ASCII': [[:ASCII:]] */ +static const OnigCodePoint CR_ASCII[] = { 1, - 0x102a0, 0x102d0, -}; /* CR_Carian */ - -/* 'Lydian': Script */ -static const OnigCodePoint CR_Lydian[] = { - 2, - 0x10920, 0x10939, - 0x1093f, 0x1093f, -}; /* CR_Lydian */ - -/* 'Cham': Script */ -static const OnigCodePoint CR_Cham[] = { - 4, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa5f, -}; /* CR_Cham */ -#endif /* USE_UNICODE_PROPERTIES */ -#endif /* USE_UNICODE_PROPERTIES */ - + 0x0000, 0x007f, +}; /* CR_ASCII */ static const OnigCodePoint* const CodeRanges[] = { CR_NEWLINE, @@ -9281,6 +16217,25 @@ static const OnigCodePoint* const CodeRanges[] = { 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, @@ -9358,6 +16313,53 @@ static const OnigCodePoint* const CodeRanges[] = { 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_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, #endif /* USE_UNICODE_PROPERTIES */ #endif /* USE_UNICODE_PROPERTIES */ }; @@ -9375,12 +16377,12 @@ static const struct uniname2ctype_struct *uniname2ctype_p(const char *, unsigned #define MAX_HASH_VALUE 21 /* maximum key range = 15, duplicates = 0 */ #else /* USE_UNICODE_PROPERTIES */ -#define TOTAL_KEYWORDS 131 +#define TOTAL_KEYWORDS 367 #define MIN_WORD_LENGTH 1 -#define MAX_WORD_LENGTH 18 -#define MIN_HASH_VALUE 2 -#define MAX_HASH_VALUE 266 -/* maximum key range = 265, duplicates = 0 */ +#define MAX_WORD_LENGTH 30 +#define MIN_HASH_VALUE 3 +#define MAX_HASH_VALUE 1751 +/* maximum key range = 1749, duplicates = 0 */ #endif /* USE_UNICODE_PROPERTIES */ #ifdef __GNUC__ @@ -9416,19 +16418,19 @@ uniname2ctype_hash (str, len) 2, 22, 1, 22, 10, 8, 4, 7, 22, 3, 4, 22, 22, 22, 22, 22, 22, 22 #else /* USE_UNICODE_PROPERTIES */ - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 9, 11, 29, - 82, 48, 86, 43, 3, 25, 92, 97, 4, 2, - 8, 45, 1, 79, 53, 12, 30, 98, 88, 62, - 22, 20, 61, 267, 267, 267, 267, 267, 267 + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 7, 419, 1, + 128, 38, 100, 186, 46, 11, 226, 463, 4, 317, + 6, 2, 265, 5, 18, 112, 30, 289, 164, 384, + 368, 579, 10, 1752, 1752, 1752, 1752, 1752 #endif /* USE_UNICODE_PROPERTIES */ }; #ifndef USE_UNICODE_PROPERTIES @@ -9439,16 +16441,35 @@ uniname2ctype_hash (str, 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: + case 4: + case 3: hval += asso_values[(unsigned char)str[2]]; /*FALLTHROUGH*/ case 2: - hval += asso_values[(unsigned char)str[1]+1]; + hval += asso_values[(unsigned char)str[1]]; /*FALLTHROUGH*/ case 1: hval += asso_values[(unsigned char)str[0]]; break; } - return hval; + return hval + asso_values[(unsigned char)str[len - 1]]; #endif /* USE_UNICODE_PROPERTIES */ } @@ -9471,137 +16492,373 @@ struct uniname2ctype_pool_t char uniname2ctype_pool_str20[sizeof("digit")]; char uniname2ctype_pool_str21[sizeof("blank")]; #else /* USE_UNICODE_PROPERTIES */ - char uniname2ctype_pool_str2[sizeof("p")]; - char uniname2ctype_pool_str3[sizeof("m")]; - char uniname2ctype_pool_str4[sizeof("po")]; - char uniname2ctype_pool_str5[sizeof("l")]; - char uniname2ctype_pool_str7[sizeof("lo")]; - char uniname2ctype_pool_str8[sizeof("ll")]; - char uniname2ctype_pool_str9[sizeof("n")]; - char uniname2ctype_pool_str11[sizeof("no")]; - char uniname2ctype_pool_str12[sizeof("nl")]; - char uniname2ctype_pool_str13[sizeof("s")]; - char uniname2ctype_pool_str14[sizeof("lm")]; - char uniname2ctype_pool_str15[sizeof("so")]; - char uniname2ctype_pool_str17[sizeof("alpha")]; - char uniname2ctype_pool_str18[sizeof("sk")]; - char uniname2ctype_pool_str20[sizeof("mongolian")]; - char uniname2ctype_pool_str21[sizeof("bopomofo")]; - char uniname2ctype_pool_str22[sizeof("sm")]; - char uniname2ctype_pool_str24[sizeof("alnum")]; - char uniname2ctype_pool_str25[sizeof("han")]; - char uniname2ctype_pool_str26[sizeof("malayalam")]; - char uniname2ctype_pool_str27[sizeof("blank")]; - char uniname2ctype_pool_str28[sizeof("hangul")]; - char uniname2ctype_pool_str29[sizeof("hanunoo")]; - char uniname2ctype_pool_str30[sizeof("c")]; - char uniname2ctype_pool_str31[sizeof("armenian")]; - char uniname2ctype_pool_str32[sizeof("co")]; - char uniname2ctype_pool_str33[sizeof("ps")]; - char uniname2ctype_pool_str34[sizeof("balinese")]; - char uniname2ctype_pool_str36[sizeof("arabic")]; - char uniname2ctype_pool_str37[sizeof("coptic")]; - char uniname2ctype_pool_str38[sizeof("common")]; - char uniname2ctype_pool_str39[sizeof("braille")]; - char uniname2ctype_pool_str42[sizeof("phagspa")]; - char uniname2ctype_pool_str43[sizeof("print")]; - char uniname2ctype_pool_str46[sizeof("pf")]; - char uniname2ctype_pool_str48[sizeof("tamil")]; - char uniname2ctype_pool_str49[sizeof("mn")]; - char uniname2ctype_pool_str50[sizeof("latin")]; - char uniname2ctype_pool_str51[sizeof("pd")]; - char uniname2ctype_pool_str53[sizeof("shavian")]; - char uniname2ctype_pool_str56[sizeof("ogham")]; - char uniname2ctype_pool_str58[sizeof("nd")]; - char uniname2ctype_pool_str59[sizeof("assigned")]; - char uniname2ctype_pool_str60[sizeof("nko")]; - char uniname2ctype_pool_str61[sizeof("cs")]; - char uniname2ctype_pool_str62[sizeof("z")]; - char uniname2ctype_pool_str63[sizeof("lao")]; - char uniname2ctype_pool_str64[sizeof("glagolitic")]; - char uniname2ctype_pool_str65[sizeof("zl")]; - char uniname2ctype_pool_str66[sizeof("canadianaboriginal")]; - char uniname2ctype_pool_str67[sizeof("cham")]; - char uniname2ctype_pool_str68[sizeof("thai")]; - char uniname2ctype_pool_str69[sizeof("graph")]; - char uniname2ctype_pool_str70[sizeof("thaana")]; - char uniname2ctype_pool_str71[sizeof("taile")]; - char uniname2ctype_pool_str72[sizeof("lower")]; - char uniname2ctype_pool_str73[sizeof("ascii")]; - char uniname2ctype_pool_str74[sizeof("cf")]; - char uniname2ctype_pool_str76[sizeof("cn")]; - char uniname2ctype_pool_str77[sizeof("any")]; - char uniname2ctype_pool_str79[sizeof("myanmar")]; - char uniname2ctype_pool_str80[sizeof("gothic")]; - char uniname2ctype_pool_str81[sizeof("phoenician")]; - char uniname2ctype_pool_str82[sizeof("inherited")]; - char uniname2ctype_pool_str83[sizeof("olchiki")]; - char uniname2ctype_pool_str84[sizeof("osmanya")]; - char uniname2ctype_pool_str85[sizeof("pc")]; - char uniname2ctype_pool_str86[sizeof("mc")]; - char uniname2ctype_pool_str87[sizeof("oriya")]; - char uniname2ctype_pool_str88[sizeof("sylotinagri")]; - char uniname2ctype_pool_str89[sizeof("pe")]; - char uniname2ctype_pool_str90[sizeof("me")]; - char uniname2ctype_pool_str91[sizeof("tagalog")]; - char uniname2ctype_pool_str92[sizeof("tagbanwa")]; - char uniname2ctype_pool_str93[sizeof("zs")]; - char uniname2ctype_pool_str94[sizeof("lu")]; - char uniname2ctype_pool_str95[sizeof("pi")]; - char uniname2ctype_pool_str96[sizeof("sc")]; - char uniname2ctype_pool_str97[sizeof("lepcha")]; - char uniname2ctype_pool_str98[sizeof("cypriot")]; - char uniname2ctype_pool_str99[sizeof("carian")]; - char uniname2ctype_pool_str100[sizeof("lycian")]; - char uniname2ctype_pool_str101[sizeof("xdigit")]; - char uniname2ctype_pool_str102[sizeof("punct")]; - char uniname2ctype_pool_str103[sizeof("limbu")]; - char uniname2ctype_pool_str104[sizeof("lt")]; - char uniname2ctype_pool_str105[sizeof("space")]; - char uniname2ctype_pool_str106[sizeof("hebrew")]; - char uniname2ctype_pool_str107[sizeof("buhid")]; - char uniname2ctype_pool_str108[sizeof("greek")]; - char uniname2ctype_pool_str109[sizeof("cntrl")]; - char uniname2ctype_pool_str110[sizeof("cherokee")]; - char uniname2ctype_pool_str111[sizeof("linearb")]; - char uniname2ctype_pool_str112[sizeof("bengali")]; - char uniname2ctype_pool_str113[sizeof("cc")]; - char uniname2ctype_pool_str114[sizeof("yi")]; - char uniname2ctype_pool_str117[sizeof("sundanese")]; - char uniname2ctype_pool_str118[sizeof("ugaritic")]; - char uniname2ctype_pool_str119[sizeof("sinhala")]; - char uniname2ctype_pool_str120[sizeof("word")]; - char uniname2ctype_pool_str123[sizeof("kannada")]; - char uniname2ctype_pool_str126[sizeof("telugu")]; - char uniname2ctype_pool_str127[sizeof("vai")]; - char uniname2ctype_pool_str129[sizeof("khmer")]; - char uniname2ctype_pool_str131[sizeof("saurashtra")]; - char uniname2ctype_pool_str132[sizeof("syriac")]; - char uniname2ctype_pool_str134[sizeof("cuneiform")]; - char uniname2ctype_pool_str135[sizeof("kayahli")]; - char uniname2ctype_pool_str138[sizeof("olditalic")]; - char uniname2ctype_pool_str139[sizeof("oldpersian")]; - char uniname2ctype_pool_str140[sizeof("tibetan")]; - char uniname2ctype_pool_str141[sizeof("kharoshthi")]; - char uniname2ctype_pool_str142[sizeof("zp")]; - char uniname2ctype_pool_str146[sizeof("katakana")]; - char uniname2ctype_pool_str150[sizeof("buginese")]; - char uniname2ctype_pool_str151[sizeof("cyrillic")]; - char uniname2ctype_pool_str153[sizeof("lydian")]; - char uniname2ctype_pool_str154[sizeof("runic")]; - char uniname2ctype_pool_str156[sizeof("hiragana")]; - char uniname2ctype_pool_str157[sizeof("ethiopic")]; - char uniname2ctype_pool_str163[sizeof("newline")]; - char uniname2ctype_pool_str165[sizeof("newtailue")]; - char uniname2ctype_pool_str182[sizeof("georgian")]; - char uniname2ctype_pool_str183[sizeof("upper")]; - char uniname2ctype_pool_str187[sizeof("deseret")]; - char uniname2ctype_pool_str192[sizeof("gurmukhi")]; - char uniname2ctype_pool_str216[sizeof("tifinagh")]; - char uniname2ctype_pool_str222[sizeof("digit")]; - char uniname2ctype_pool_str231[sizeof("gujarati")]; - char uniname2ctype_pool_str237[sizeof("rejang")]; - char uniname2ctype_pool_str266[sizeof("devanagari")]; + char uniname2ctype_pool_str3[sizeof("c")]; + char uniname2ctype_pool_str5[sizeof("cc")]; + char uniname2ctype_pool_str7[sizeof("co")]; + char uniname2ctype_pool_str9[sizeof("l")]; + char uniname2ctype_pool_str10[sizeof("lo")]; + char uniname2ctype_pool_str12[sizeof("no")]; + char uniname2ctype_pool_str13[sizeof("n")]; + char uniname2ctype_pool_str14[sizeof("ll")]; + char uniname2ctype_pool_str15[sizeof("cn")]; + char uniname2ctype_pool_str16[sizeof("nl")]; + char uniname2ctype_pool_str18[sizeof("lao")]; + char uniname2ctype_pool_str19[sizeof("laoo")]; + char uniname2ctype_pool_str20[sizeof("zl")]; + char uniname2ctype_pool_str21[sizeof("z")]; + char uniname2ctype_pool_str22[sizeof("control")]; + char uniname2ctype_pool_str24[sizeof("qaac")]; + char uniname2ctype_pool_str25[sizeof("ci")]; + char uniname2ctype_pool_str28[sizeof("lana")]; + char uniname2ctype_pool_str33[sizeof("oalpha")]; + char uniname2ctype_pool_str34[sizeof("qaai")]; + char uniname2ctype_pool_str40[sizeof("arabic")]; + char uniname2ctype_pool_str41[sizeof("cari")]; + char uniname2ctype_pool_str43[sizeof("oriya")]; + char uniname2ctype_pool_str44[sizeof("carian")]; + char uniname2ctype_pool_str46[sizeof("cntrl")]; + char uniname2ctype_pool_str49[sizeof("connectorpunctuation")]; + char uniname2ctype_pool_str50[sizeof("olower")]; + char uniname2ctype_pool_str51[sizeof("latn")]; + char uniname2ctype_pool_str52[sizeof("latin")]; + char uniname2ctype_pool_str56[sizeof("ital")]; + char uniname2ctype_pool_str65[sizeof("hano")]; + char uniname2ctype_pool_str66[sizeof("lt")]; + char uniname2ctype_pool_str68[sizeof("han")]; + char uniname2ctype_pool_str70[sizeof("hanunoo")]; + char uniname2ctype_pool_str71[sizeof("canadianaboriginal")]; + char uniname2ctype_pool_str73[sizeof("hangul")]; + char uniname2ctype_pool_str74[sizeof("hani")]; + char uniname2ctype_pool_str76[sizeof("nchar")]; + char uniname2ctype_pool_str77[sizeof("zinh")]; + char uniname2ctype_pool_str83[sizeof("tale")]; + char uniname2ctype_pool_str85[sizeof("loe")]; + char uniname2ctype_pool_str86[sizeof("hira")]; + char uniname2ctype_pool_str91[sizeof("taile")]; + char uniname2ctype_pool_str92[sizeof("lineseparator")]; + char uniname2ctype_pool_str94[sizeof("thaa")]; + char uniname2ctype_pool_str97[sizeof("hiragana")]; + char uniname2ctype_pool_str98[sizeof("thai")]; + char uniname2ctype_pool_str100[sizeof("initialpunctuation")]; + char uniname2ctype_pool_str101[sizeof("other")]; + char uniname2ctype_pool_str103[sizeof("thaana")]; + char uniname2ctype_pool_str107[sizeof("cher")]; + char uniname2ctype_pool_str111[sizeof("otherletter")]; + char uniname2ctype_pool_str113[sizeof("othernumber")]; + char uniname2ctype_pool_str114[sizeof("letter")]; + char uniname2ctype_pool_str116[sizeof("sc")]; + char uniname2ctype_pool_str118[sizeof("so")]; + char uniname2ctype_pool_str123[sizeof("taiviet")]; + char uniname2ctype_pool_str128[sizeof("noncharactercodepoint")]; + char uniname2ctype_pool_str129[sizeof("ethi")]; + char uniname2ctype_pool_str130[sizeof("cans")]; + char uniname2ctype_pool_str135[sizeof("titlecaseletter")]; + char uniname2ctype_pool_str136[sizeof("ascii")]; + char uniname2ctype_pool_str138[sizeof("letternumber")]; + char uniname2ctype_pool_str139[sizeof("otheralphabetic")]; + char uniname2ctype_pool_str141[sizeof("otherlowercase")]; + char uniname2ctype_pool_str144[sizeof("idc")]; + char uniname2ctype_pool_str146[sizeof("oidc")]; + char uniname2ctype_pool_str147[sizeof("sinhala")]; + char uniname2ctype_pool_str148[sizeof("terminalpunctuation")]; + char uniname2ctype_pool_str151[sizeof("olditalic")]; + char uniname2ctype_pool_str152[sizeof("di")]; + char uniname2ctype_pool_str153[sizeof("otheridcontinue")]; + char uniname2ctype_pool_str155[sizeof("odi")]; + char uniname2ctype_pool_str156[sizeof("dia")]; + char uniname2ctype_pool_str161[sizeof("otheridstart")]; + char uniname2ctype_pool_str162[sizeof("oldturkic")]; + char uniname2ctype_pool_str167[sizeof("diacritic")]; + char uniname2ctype_pool_str168[sizeof("oldpersian")]; + char uniname2ctype_pool_str171[sizeof("radical")]; + char uniname2ctype_pool_str179[sizeof("sinh")]; + char uniname2ctype_pool_str183[sizeof("ideo")]; + char uniname2ctype_pool_str185[sizeof("shavian")]; + char uniname2ctype_pool_str186[sizeof("format")]; + char uniname2ctype_pool_str192[sizeof("inscriptionalparthian")]; + char uniname2ctype_pool_str196[sizeof("vai")]; + char uniname2ctype_pool_str197[sizeof("vaii")]; + char uniname2ctype_pool_str202[sizeof("tifinagh")]; + char uniname2ctype_pool_str203[sizeof("cf")]; + char uniname2ctype_pool_str205[sizeof("othersymbol")]; + char uniname2ctype_pool_str207[sizeof("ideographic")]; + char uniname2ctype_pool_str211[sizeof("inherited")]; + char uniname2ctype_pool_str212[sizeof("glagolitic")]; + char uniname2ctype_pool_str218[sizeof("idcontinue")]; + char uniname2ctype_pool_str220[sizeof("asciihexdigit")]; + char uniname2ctype_pool_str224[sizeof("inscriptionalpahlavi")]; + char uniname2ctype_pool_str225[sizeof("s")]; + char uniname2ctype_pool_str226[sizeof("gothic")]; + char uniname2ctype_pool_str227[sizeof("cs")]; + char uniname2ctype_pool_str229[sizeof("avestan")]; + char uniname2ctype_pool_str235[sizeof("tavt")]; + char uniname2ctype_pool_str236[sizeof("zs")]; + char uniname2ctype_pool_str243[sizeof("decimalnumber")]; + char uniname2ctype_pool_str244[sizeof("tagbanwa")]; + char uniname2ctype_pool_str245[sizeof("joinc")]; + char uniname2ctype_pool_str248[sizeof("geor")]; + char uniname2ctype_pool_str249[sizeof("hang")]; + char uniname2ctype_pool_str251[sizeof("georgian")]; + char uniname2ctype_pool_str253[sizeof("cased")]; + char uniname2ctype_pool_str256[sizeof("joincontrol")]; + char uniname2ctype_pool_str257[sizeof("oids")]; + char uniname2ctype_pool_str260[sizeof("variationselector")]; + char uniname2ctype_pool_str262[sizeof("graph")]; + char uniname2ctype_pool_str263[sizeof("changeswhenlowercased")]; + char uniname2ctype_pool_str264[sizeof("nd")]; + char uniname2ctype_pool_str268[sizeof("goth")]; + char uniname2ctype_pool_str269[sizeof("pc")]; + char uniname2ctype_pool_str271[sizeof("po")]; + char uniname2ctype_pool_str272[sizeof("ogrext")]; + char uniname2ctype_pool_str276[sizeof("coptic")]; + char uniname2ctype_pool_str277[sizeof("grext")]; + char uniname2ctype_pool_str282[sizeof("logicalorderexception")]; + char uniname2ctype_pool_str285[sizeof("idst")]; + char uniname2ctype_pool_str288[sizeof("alpha")]; + char uniname2ctype_pool_str289[sizeof("pi")]; + char uniname2ctype_pool_str292[sizeof("dsrt")]; + char uniname2ctype_pool_str297[sizeof("dash")]; + char uniname2ctype_pool_str298[sizeof("otherdefaultignorablecodepoint")]; + char uniname2ctype_pool_str302[sizeof("copt")]; + char uniname2ctype_pool_str306[sizeof("idstart")]; + char uniname2ctype_pool_str307[sizeof("closepunctuation")]; + char uniname2ctype_pool_str309[sizeof("changeswhentitlecased")]; + char uniname2ctype_pool_str312[sizeof("lepc")]; + char uniname2ctype_pool_str317[sizeof("avst")]; + char uniname2ctype_pool_str318[sizeof("cprt")]; + char uniname2ctype_pool_str319[sizeof("runic")]; + char uniname2ctype_pool_str320[sizeof("patsyn")]; + char uniname2ctype_pool_str321[sizeof("mc")]; + char uniname2ctype_pool_str326[sizeof("tfng")]; + char uniname2ctype_pool_str327[sizeof("lepcha")]; + char uniname2ctype_pool_str328[sizeof("prti")]; + char uniname2ctype_pool_str329[sizeof("print")]; + char uniname2ctype_pool_str330[sizeof("phli")]; + char uniname2ctype_pool_str331[sizeof("mn")]; + char uniname2ctype_pool_str332[sizeof("idsbinaryoperator")]; + char uniname2ctype_pool_str334[sizeof("talu")]; + char uniname2ctype_pool_str335[sizeof("runr")]; + char uniname2ctype_pool_str337[sizeof("graphemebase")]; + char uniname2ctype_pool_str338[sizeof("common")]; + char uniname2ctype_pool_str339[sizeof("alnum")]; + char uniname2ctype_pool_str340[sizeof("phoenician")]; + char uniname2ctype_pool_str341[sizeof("deva")]; + char uniname2ctype_pool_str342[sizeof("changeswhencasefolded")]; + char uniname2ctype_pool_str343[sizeof("pe")]; + char uniname2ctype_pool_str344[sizeof("mongolian")]; + char uniname2ctype_pool_str352[sizeof("armn")]; + char uniname2ctype_pool_str353[sizeof("deseret")]; + char uniname2ctype_pool_str354[sizeof("softdotted")]; + char uniname2ctype_pool_str357[sizeof("armi")]; + char uniname2ctype_pool_str358[sizeof("devanagari")]; + char uniname2ctype_pool_str360[sizeof("digit")]; + char uniname2ctype_pool_str361[sizeof("caseignorable")]; + char uniname2ctype_pool_str362[sizeof("taml")]; + char uniname2ctype_pool_str363[sizeof("tamil")]; + char uniname2ctype_pool_str365[sizeof("telu")]; + char uniname2ctype_pool_str366[sizeof("ids")]; + char uniname2ctype_pool_str367[sizeof("armenian")]; + char uniname2ctype_pool_str370[sizeof("sd")]; + char uniname2ctype_pool_str372[sizeof("privateuse")]; + char uniname2ctype_pool_str373[sizeof("assigned")]; + char uniname2ctype_pool_str375[sizeof("cham")]; + char uniname2ctype_pool_str377[sizeof("omath")]; + char uniname2ctype_pool_str378[sizeof("otherpunctuation")]; + char uniname2ctype_pool_str379[sizeof("taitham")]; + char uniname2ctype_pool_str381[sizeof("defaultignorablecodepoint")]; + char uniname2ctype_pool_str387[sizeof("glag")]; + char uniname2ctype_pool_str388[sizeof("ethiopic")]; + char uniname2ctype_pool_str390[sizeof("vs")]; + char uniname2ctype_pool_str395[sizeof("me")]; + char uniname2ctype_pool_str396[sizeof("cwl")]; + char uniname2ctype_pool_str400[sizeof("mtei")]; + char uniname2ctype_pool_str404[sizeof("math")]; + char uniname2ctype_pool_str407[sizeof("term")]; + char uniname2ctype_pool_str408[sizeof("java")]; + char uniname2ctype_pool_str410[sizeof("tglg")]; + char uniname2ctype_pool_str413[sizeof("lower")]; + char uniname2ctype_pool_str414[sizeof("patternwhitespace")]; + char uniname2ctype_pool_str417[sizeof("finalpunctuation")]; + char uniname2ctype_pool_str418[sizeof("tagalog")]; + char uniname2ctype_pool_str419[sizeof("patws")]; + char uniname2ctype_pool_str420[sizeof("lisu")]; + char uniname2ctype_pool_str426[sizeof("otheruppercase")]; + char uniname2ctype_pool_str427[sizeof("space")]; + char uniname2ctype_pool_str429[sizeof("graphemeextend")]; + char uniname2ctype_pool_str430[sizeof("saur")]; + char uniname2ctype_pool_str435[sizeof("uideo")]; + char uniname2ctype_pool_str438[sizeof("lowercase")]; + char uniname2ctype_pool_str440[sizeof("rjng")]; + char uniname2ctype_pool_str442[sizeof("osma")]; + char uniname2ctype_pool_str444[sizeof("linb")]; + char uniname2ctype_pool_str445[sizeof("bali")]; + char uniname2ctype_pool_str448[sizeof("cwt")]; + char uniname2ctype_pool_str449[sizeof("separator")]; + char uniname2ctype_pool_str450[sizeof("othermath")]; + char uniname2ctype_pool_str451[sizeof("unassigned")]; + char uniname2ctype_pool_str454[sizeof("lowercaseletter")]; + char uniname2ctype_pool_str455[sizeof("arab")]; + char uniname2ctype_pool_str458[sizeof("samr")]; + char uniname2ctype_pool_str459[sizeof("brai")]; + char uniname2ctype_pool_str460[sizeof("sundanese")]; + char uniname2ctype_pool_str462[sizeof("samaritan")]; + char uniname2ctype_pool_str463[sizeof("ahex")]; + char uniname2ctype_pool_str465[sizeof("linearb")]; + char uniname2ctype_pool_str467[sizeof("pf")]; + char uniname2ctype_pool_str469[sizeof("ext")]; + char uniname2ctype_pool_str474[sizeof("olck")]; + char uniname2ctype_pool_str476[sizeof("nko")]; + char uniname2ctype_pool_str477[sizeof("nkoo")]; + char uniname2ctype_pool_str479[sizeof("newline")]; + char uniname2ctype_pool_str480[sizeof("tibetan")]; + char uniname2ctype_pool_str481[sizeof("javanese")]; + char uniname2ctype_pool_str485[sizeof("bengali")]; + char uniname2ctype_pool_str486[sizeof("newtailue")]; + char uniname2ctype_pool_str487[sizeof("kana")]; + char uniname2ctype_pool_str488[sizeof("olchiki")]; + char uniname2ctype_pool_str489[sizeof("kali")]; + char uniname2ctype_pool_str490[sizeof("cwcf")]; + char uniname2ctype_pool_str491[sizeof("ps")]; + char uniname2ctype_pool_str493[sizeof("braille")]; + char uniname2ctype_pool_str494[sizeof("tibt")]; + char uniname2ctype_pool_str502[sizeof("sterm")]; + char uniname2ctype_pool_str504[sizeof("ugar")]; + char uniname2ctype_pool_str505[sizeof("nonspacingmark")]; + char uniname2ctype_pool_str508[sizeof("phag")]; + char uniname2ctype_pool_str509[sizeof("kaithi")]; + char uniname2ctype_pool_str512[sizeof("xidc")]; + char uniname2ctype_pool_str514[sizeof("balinese")]; + char uniname2ctype_pool_str515[sizeof("mong")]; + char uniname2ctype_pool_str516[sizeof("ogam")]; + char uniname2ctype_pool_str520[sizeof("modifierletter")]; + char uniname2ctype_pool_str521[sizeof("ugaritic")]; + char uniname2ctype_pool_str522[sizeof("katakana")]; + char uniname2ctype_pool_str523[sizeof("pd")]; + char uniname2ctype_pool_str525[sizeof("hebr")]; + char uniname2ctype_pool_str531[sizeof("p")]; + char uniname2ctype_pool_str533[sizeof("orkh")]; + char uniname2ctype_pool_str536[sizeof("word")]; + char uniname2ctype_pool_str537[sizeof("saurashtra")]; + char uniname2ctype_pool_str538[sizeof("khar")]; + char uniname2ctype_pool_str539[sizeof("sund")]; + char uniname2ctype_pool_str542[sizeof("zp")]; + char uniname2ctype_pool_str548[sizeof("changeswhenuppercased")]; + char uniname2ctype_pool_str552[sizeof("xidstart")]; + char uniname2ctype_pool_str553[sizeof("shaw")]; + char uniname2ctype_pool_str554[sizeof("kthi")]; + char uniname2ctype_pool_str556[sizeof("ogham")]; + char uniname2ctype_pool_str558[sizeof("spaceseparator")]; + char uniname2ctype_pool_str559[sizeof("changeswhencasemapped")]; + char uniname2ctype_pool_str560[sizeof("sarb")]; + char uniname2ctype_pool_str562[sizeof("xidcontinue")]; + char uniname2ctype_pool_str564[sizeof("bidic")]; + char uniname2ctype_pool_str570[sizeof("deprecated")]; + char uniname2ctype_pool_str573[sizeof("xdigit")]; + char uniname2ctype_pool_str575[sizeof("bidicontrol")]; + char uniname2ctype_pool_str584[sizeof("lu")]; + char uniname2ctype_pool_str587[sizeof("dashpunctuation")]; + char uniname2ctype_pool_str590[sizeof("extender")]; + char uniname2ctype_pool_str593[sizeof("idstrinaryoperator")]; + char uniname2ctype_pool_str594[sizeof("cherokee")]; + char uniname2ctype_pool_str595[sizeof("punct")]; + char uniname2ctype_pool_str597[sizeof("phagspa")]; + char uniname2ctype_pool_str598[sizeof("oupper")]; + char uniname2ctype_pool_str599[sizeof("lyci")]; + char uniname2ctype_pool_str601[sizeof("whitespace")]; + char uniname2ctype_pool_str602[sizeof("lycian")]; + char uniname2ctype_pool_str603[sizeof("yi")]; + char uniname2ctype_pool_str606[sizeof("cyrl")]; + char uniname2ctype_pool_str608[sizeof("knda")]; + char uniname2ctype_pool_str610[sizeof("orya")]; + char uniname2ctype_pool_str611[sizeof("cyrillic")]; + char uniname2ctype_pool_str616[sizeof("yiii")]; + char uniname2ctype_pool_str618[sizeof("kannada")]; + char uniname2ctype_pool_str623[sizeof("xids")]; + char uniname2ctype_pool_str626[sizeof("limbu")]; + char uniname2ctype_pool_str635[sizeof("m")]; + char uniname2ctype_pool_str638[sizeof("unifiedideograph")]; + char uniname2ctype_pool_str639[sizeof("paragraphseparator")]; + char uniname2ctype_pool_str640[sizeof("lm")]; + char uniname2ctype_pool_str645[sizeof("openpunctuation")]; + char uniname2ctype_pool_str646[sizeof("tagb")]; + char uniname2ctype_pool_str649[sizeof("kharoshthi")]; + char uniname2ctype_pool_str651[sizeof("enclosingmark")]; + char uniname2ctype_pool_str652[sizeof("surrogate")]; + char uniname2ctype_pool_str653[sizeof("beng")]; + char uniname2ctype_pool_str654[sizeof("number")]; + char uniname2ctype_pool_str656[sizeof("telugu")]; + char uniname2ctype_pool_str660[sizeof("rejang")]; + char uniname2ctype_pool_str661[sizeof("malayalam")]; + char uniname2ctype_pool_str674[sizeof("idsb")]; + char uniname2ctype_pool_str676[sizeof("hexdigit")]; + char uniname2ctype_pool_str677[sizeof("xpeo")]; + char uniname2ctype_pool_str689[sizeof("phnx")]; + char uniname2ctype_pool_str692[sizeof("bopo")]; + char uniname2ctype_pool_str698[sizeof("bopomofo")]; + char uniname2ctype_pool_str699[sizeof("dep")]; + char uniname2ctype_pool_str701[sizeof("sylo")]; + char uniname2ctype_pool_str705[sizeof("grbase")]; + char uniname2ctype_pool_str706[sizeof("alphabetic")]; + char uniname2ctype_pool_str707[sizeof("cwcm")]; + char uniname2ctype_pool_str708[sizeof("patternsyntax")]; + char uniname2ctype_pool_str709[sizeof("grek")]; + char uniname2ctype_pool_str710[sizeof("greek")]; + char uniname2ctype_pool_str714[sizeof("syrc")]; + char uniname2ctype_pool_str717[sizeof("syriac")]; + char uniname2ctype_pool_str722[sizeof("cuneiform")]; + char uniname2ctype_pool_str723[sizeof("gujr")]; + char uniname2ctype_pool_str726[sizeof("lydi")]; + char uniname2ctype_pool_str727[sizeof("gujarati")]; + char uniname2ctype_pool_str728[sizeof("sylotinagri")]; + char uniname2ctype_pool_str729[sizeof("lydian")]; + char uniname2ctype_pool_str748[sizeof("sm")]; + char uniname2ctype_pool_str751[sizeof("currencysymbol")]; + char uniname2ctype_pool_str755[sizeof("limb")]; + char uniname2ctype_pool_str758[sizeof("othergraphemeextend")]; + char uniname2ctype_pool_str786[sizeof("guru")]; + char uniname2ctype_pool_str797[sizeof("qmark")]; + char uniname2ctype_pool_str809[sizeof("mark")]; + char uniname2ctype_pool_str820[sizeof("quotationmark")]; + char uniname2ctype_pool_str823[sizeof("hex")]; + char uniname2ctype_pool_str842[sizeof("upper")]; + char uniname2ctype_pool_str843[sizeof("wspace")]; + char uniname2ctype_pool_str848[sizeof("khmr")]; + char uniname2ctype_pool_str849[sizeof("khmer")]; + char uniname2ctype_pool_str863[sizeof("oldsoutharabian")]; + char uniname2ctype_pool_str864[sizeof("spacingmark")]; + char uniname2ctype_pool_str866[sizeof("punctuation")]; + char uniname2ctype_pool_str867[sizeof("uppercase")]; + char uniname2ctype_pool_str878[sizeof("meeteimayek")]; + char uniname2ctype_pool_str883[sizeof("uppercaseletter")]; + char uniname2ctype_pool_str884[sizeof("cypriot")]; + char uniname2ctype_pool_str886[sizeof("buhd")]; + char uniname2ctype_pool_str887[sizeof("buhid")]; + char uniname2ctype_pool_str895[sizeof("modifiersymbol")]; + char uniname2ctype_pool_str898[sizeof("blank")]; + char uniname2ctype_pool_str908[sizeof("hyphen")]; + char uniname2ctype_pool_str909[sizeof("bugi")]; + char uniname2ctype_pool_str935[sizeof("myanmar")]; + char uniname2ctype_pool_str937[sizeof("imperialaramaic")]; + char uniname2ctype_pool_str947[sizeof("mathsymbol")]; + char uniname2ctype_pool_str966[sizeof("cwu")]; + char uniname2ctype_pool_str975[sizeof("gurmukhi")]; + char uniname2ctype_pool_str978[sizeof("buginese")]; + char uniname2ctype_pool_str1022[sizeof("symbol")]; + char uniname2ctype_pool_str1024[sizeof("osmanya")]; + char uniname2ctype_pool_str1036[sizeof("bamu")]; + char uniname2ctype_pool_str1040[sizeof("sk")]; + char uniname2ctype_pool_str1065[sizeof("bamum")]; + char uniname2ctype_pool_str1071[sizeof("kayahli")]; + char uniname2ctype_pool_str1072[sizeof("egyp")]; + char uniname2ctype_pool_str1140[sizeof("grlink")]; + char uniname2ctype_pool_str1141[sizeof("xsux")]; + char uniname2ctype_pool_str1174[sizeof("any")]; + char uniname2ctype_pool_str1187[sizeof("graphemelink")]; + char uniname2ctype_pool_str1221[sizeof("mlym")]; + char uniname2ctype_pool_str1235[sizeof("mymr")]; + char uniname2ctype_pool_str1277[sizeof("hebrew")]; + char uniname2ctype_pool_str1542[sizeof("egyptianhieroglyphs")]; + char uniname2ctype_pool_str1751[sizeof("zyyy")]; #endif /* USE_UNICODE_PROPERTIES */ }; static const struct uniname2ctype_pool_t uniname2ctype_pool_contents = @@ -9610,160 +16867,392 @@ static const struct uniname2ctype_pool_t uniname2ctype_pool_contents = "print", "punct", #else /* USE_UNICODE_PROPERTIES */ - "p", - "m", - "po", + "c", + "cc", + "co", "l", "lo", - "ll", - "n", "no", + "n", + "ll", + "cn", "nl", - "s", - "lm", + "lao", + "laoo", + "zl", + "z", + "control", + "qaac", + "ci", + "lana", + "oalpha", + "qaai", + "arabic", + "cari", + "oriya", + "carian", + "cntrl", + "connectorpunctuation", + "olower", + "latn", + "latin", + "ital", + "hano", + "lt", + "han", + "hanunoo", + "canadianaboriginal", + "hangul", + "hani", + "nchar", + "zinh", + "tale", + "loe", + "hira", + "taile", + "lineseparator", + "thaa", + "hiragana", + "thai", + "initialpunctuation", + "other", + "thaana", + "cher", + "otherletter", + "othernumber", + "letter", + "sc", "so", + "taiviet", + "noncharactercodepoint", + "ethi", + "cans", + "titlecaseletter", + "ascii", + "letternumber", + "otheralphabetic", + "otherlowercase", + "idc", + "oidc", + "sinhala", + "terminalpunctuation", + "olditalic", + "di", + "otheridcontinue", + "odi", + "dia", + "otheridstart", + "oldturkic", + "diacritic", + "oldpersian", + "radical", + "sinh", + "ideo", + "shavian", + "format", + "inscriptionalparthian", + "vai", + "vaii", + "tifinagh", + "cf", + "othersymbol", + "ideographic", + "inherited", + "glagolitic", + "idcontinue", + "asciihexdigit", + "inscriptionalpahlavi", + "s", + "gothic", + "cs", + "avestan", + "tavt", + "zs", + "decimalnumber", + "tagbanwa", + "joinc", + "geor", + "hang", + "georgian", + "cased", + "joincontrol", + "oids", + "variationselector", + "graph", + "changeswhenlowercased", + "nd", + "goth", + "pc", + "po", + "ogrext", + "coptic", + "grext", + "logicalorderexception", + "idst", #endif /* USE_UNICODE_PROPERTIES */ "alpha", #ifdef USE_UNICODE_PROPERTIES - "sk", - "mongolian", - "bopomofo", - "sm", + "pi", + "dsrt", + "dash", + "otherdefaultignorablecodepoint", + "copt", + "idstart", + "closepunctuation", + "changeswhentitlecased", + "lepc", + "avst", + "cprt", + "runic", + "patsyn", + "mc", + "tfng", + "lepcha", + "prti", + "print", + "phli", + "mn", + "idsbinaryoperator", + "talu", + "runr", + "graphemebase", + "common", #endif /* USE_UNICODE_PROPERTIES */ "alnum", #ifndef USE_UNICODE_PROPERTIES "xdigit", "newline", "upper", -#else /* USE_UNICODE_PROPERTIES */ - "han", - "malayalam", - "blank", - "hangul", - "hanunoo", - "c", - "armenian", - "co", - "ps", - "balinese", - "arabic", - "coptic", - "common", - "braille", - "phagspa", - "print", - "pf", - "tamil", - "mn", - "latin", - "pd", - "shavian", - "ogham", - "nd", - "assigned", - "nko", - "cs", - "z", - "lao", - "glagolitic", - "zl", - "canadianaboriginal", - "cham", - "thai", - "graph", - "thaana", - "taile", - "lower", -#endif /* USE_UNICODE_PROPERTIES */ "ascii", -#ifndef USE_UNICODE_PROPERTIES "cntrl", #else /* USE_UNICODE_PROPERTIES */ - "cf", - "cn", - "any", - "myanmar", - "gothic", "phoenician", - "inherited", - "olchiki", - "osmanya", - "pc", - "mc", - "oriya", - "sylotinagri", + "deva", + "changeswhencasefolded", "pe", + "mongolian", + "armn", + "deseret", + "softdotted", + "armi", + "devanagari", + "digit", + "caseignorable", + "taml", + "tamil", + "telu", + "ids", + "armenian", + "sd", + "privateuse", + "assigned", + "cham", + "omath", + "otherpunctuation", + "taitham", + "defaultignorablecodepoint", + "glag", + "ethiopic", + "vs", "me", + "cwl", + "mtei", + "math", + "term", + "java", + "tglg", + "lower", + "patternwhitespace", + "finalpunctuation", "tagalog", - "tagbanwa", - "zs", - "lu", - "pi", - "sc", - "lepcha", - "cypriot", - "carian", - "lycian", - "xdigit", - "punct", - "limbu", - "lt", + "patws", + "lisu", + "otheruppercase", #endif /* USE_UNICODE_PROPERTIES */ "space", #ifdef USE_UNICODE_PROPERTIES - "hebrew", - "buhid", - "greek", - "cntrl", - "cherokee", + "graphemeextend", + "saur", + "uideo", + "lowercase", + "rjng", + "osma", + "linb", + "bali", + "cwt", + "separator", + "othermath", + "unassigned", + "lowercaseletter", + "arab", + "samr", + "brai", + "sundanese", + "samaritan", + "ahex", "linearb", + "pf", + "ext", + "olck", + "nko", + "nkoo", + "newline", + "tibetan", + "javanese", "bengali", - "cc", - "yi", - "sundanese", + "newtailue", + "kana", + "olchiki", + "kali", + "cwcf", + "ps", + "braille", + "tibt", + "sterm", + "ugar", + "nonspacingmark", + "phag", + "kaithi", + "xidc", + "balinese", + "mong", + "ogam", + "modifierletter", "ugaritic", - "sinhala", + "katakana", + "pd", + "hebr", + "p", + "orkh", #endif /* USE_UNICODE_PROPERTIES */ "word", #ifndef USE_UNICODE_PROPERTIES "lower", "graph", + "digit", + "blank" #else /* USE_UNICODE_PROPERTIES */ + "saurashtra", + "khar", + "sund", + "zp", + "changeswhenuppercased", + "xidstart", + "shaw", + "kthi", + "ogham", + "spaceseparator", + "changeswhencasemapped", + "sarb", + "xidcontinue", + "bidic", + "deprecated", + "xdigit", + "bidicontrol", + "lu", + "dashpunctuation", + "extender", + "idstrinaryoperator", + "cherokee", + "punct", + "phagspa", + "oupper", + "lyci", + "whitespace", + "lycian", + "yi", + "cyrl", + "knda", + "orya", + "cyrillic", + "yiii", "kannada", + "xids", + "limbu", + "m", + "unifiedideograph", + "paragraphseparator", + "lm", + "openpunctuation", + "tagb", + "kharoshthi", + "enclosingmark", + "surrogate", + "beng", + "number", "telugu", - "vai", - "khmer", - "saurashtra", + "rejang", + "malayalam", + "idsb", + "hexdigit", + "xpeo", + "phnx", + "bopo", + "bopomofo", + "dep", + "sylo", + "grbase", + "alphabetic", + "cwcm", + "patternsyntax", + "grek", + "greek", + "syrc", "syriac", "cuneiform", - "kayahli", - "olditalic", - "oldpersian", - "tibetan", - "kharoshthi", - "zp", - "katakana", - "buginese", - "cyrillic", + "gujr", + "lydi", + "gujarati", + "sylotinagri", "lydian", - "runic", - "hiragana", - "ethiopic", - "newline", - "newtailue", - "georgian", + "sm", + "currencysymbol", + "limb", + "othergraphemeextend", + "guru", + "qmark", + "mark", + "quotationmark", + "hex", "upper", - "deseret", + "wspace", + "khmr", + "khmer", + "oldsoutharabian", + "spacingmark", + "punctuation", + "uppercase", + "meeteimayek", + "uppercaseletter", + "cypriot", + "buhd", + "buhid", + "modifiersymbol", + "blank", + "hyphen", + "bugi", + "myanmar", + "imperialaramaic", + "mathsymbol", + "cwu", "gurmukhi", - "tifinagh", -#endif /* USE_UNICODE_PROPERTIES */ - "digit", -#ifndef USE_UNICODE_PROPERTIES - "blank" -#else /* USE_UNICODE_PROPERTIES */ - "gujarati", - "rejang", - "devanagari" + "buginese", + "symbol", + "osmanya", + "bamu", + "sk", + "bamum", + "kayahli", + "egyp", + "grlink", + "xsux", + "any", + "graphemelink", + "mlym", + "mymr", + "hebrew", + "egyptianhieroglyphs", + "zyyy" #endif /* USE_UNICODE_PROPERTIES */ }; #define uniname2ctype_pool ((const char *) &uniname2ctype_pool_contents) @@ -9781,197 +17270,690 @@ uniname2ctype_p (str, len) static const struct uniname2ctype_struct wordlist[] = { #ifdef USE_UNICODE_PROPERTIES + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3, 17}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str5, 18}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str7, 21}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str9, 23}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str10, 26}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str12, 36}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str13, 33}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str14, 24}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str15, 20}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str16, 35}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str18, 93}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str19, 93}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str20, 51}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str21, 50}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str22, 18}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str24, 127}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str25, 59}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str28, 150}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str33, 175}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str34, 113}, + {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str40, 79}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str41, 147}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str43, 86}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str44, 147}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str46, 3}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str49, 38}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str50, 179}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str51, 74}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str52, 74}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str56, 110}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str65, 115}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str66, 27}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str68, 108}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str70, 115}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str71, 100}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str73, 97}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str74, 108}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str76, 181}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str77, 113}, + {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str83, 119}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str85, 190}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str86, 105}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str91, 119}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str92, 51}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str94, 81}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str97, 105}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str98, 92}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str100, 42}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str101, 17}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str103, 81}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str107, 99}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str111, 26}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str113, 36}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str114, 23}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str116, 46}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str118, 49}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str123, 151}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str128, 181}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str129, 98}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str130, 100}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str135, 27}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str136, 14}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str138, 35}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str139, 175}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str141, 179}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str144, 66}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str146, 192}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str147, 91}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str148, 171}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str151, 110}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str152, 69}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str153, 192}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str155, 187}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str156, 177}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str161, 191}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str162, 163}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str167, 177}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str168, 132}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str171, 185}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str179, 91}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str183, 176}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str185, 122}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str186, 19}, + {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str192, 161}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str196, 142}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str197, 142}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str202, 130}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str203, 19}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str205, 49}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str207, 176}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str211, 113}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str212, 129}, + {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str218, 66}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str220, 174}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str224, 162}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str225, 45}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str226, 111}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str227, 22}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str229, 152}, + {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str235, 151}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str236, 53}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str243, 34}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str244, 117}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str245, 167}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str248, 96}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str249, 97}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str251, 96}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str253, 58}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2, 37}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3, 29}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str4, 43}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str5, 23}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str256, 167}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str257, 191}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str260, 194}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str262, 5}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str263, 60}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str264, 34}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str268, 111}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str269, 38}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str7, 26}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str8, 24}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str9, 33}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str271, 43}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str272, 182}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str276, 127}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str277, 70}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str282, 190}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str285, 184}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str288, 1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str289, 42}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str292, 112}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str297, 168}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str298, 187}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str302, 127}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str306, 65}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str307, 40}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str11, 36}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str12, 35}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str13, 45}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str14, 25}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str15, 49}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str309, 62}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str312, 140}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str317, 152}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str318, 124}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str319, 102}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str320, 196}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str321, 30}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str326, 130}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str327, 140}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str328, 161}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str329, 7}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str330, 162}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str331, 32}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str332, 183}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str17, 1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str18, 47}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str334, 128}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str335, 102}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str20, 85}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str21, 88}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str22, 48}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str337, 71}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str338, 73}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str339, 13}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str340, 136}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str341, 82}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str342, 63}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str343, 40}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str344, 104}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str352, 77}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str353, 112}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str354, 189}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str357, 159}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str358, 82}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str24, 13}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str25, 89}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str26, 71}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str27, 2}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str28, 78}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str29, 96}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str30, 17}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str31, 58}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str32, 21}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str33, 44}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str34, 115}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str360, 4}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str361, 59}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str362, 87}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str363, 87}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str36, 60}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str37, 108}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str38, 54}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str39, 106}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str365, 88}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str366, 65}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str367, 77}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str42, 118}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str43, 7}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str370, 189}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str372, 21}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str373, 16}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str375, 149}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str377, 172}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str378, 43}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str379, 150}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str381, 69}, + {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str387, 129}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str388, 98}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str390, 194}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str395, 31}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str396, 60}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str400, 158}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str404, 54}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str46, 41}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str407, 171}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str408, 157}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str48, 68}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str49, 32}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str50, 55}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str51, 39}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str410, 114}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str413, 6}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str414, 195}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str417, 41}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str418, 114}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str419, 195}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str420, 155}, + {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str426, 180}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str427, 9}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str53, 103}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str429, 70}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str430, 143}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str435, 186}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str56, 82}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str438, 56}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str58, 34}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str59, 16}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str60, 119}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str61, 22}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str62, 50}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str63, 74}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str64, 110}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str65, 51}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str66, 81}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str67, 130}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str68, 73}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str69, 5}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str70, 62}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str71, 100}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str72, 6}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str73, 14}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str74, 19}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str440, 145}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str76, 20}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str77, 15}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str442, 123}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str79, 76}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str80, 92}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str81, 117}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str82, 94}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str83, 122}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str84, 104}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str85, 38}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str86, 30}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str87, 67}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str88, 112}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str89, 40}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str90, 31}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str91, 95}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str92, 98}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str93, 53}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str94, 28}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str95, 42}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str96, 46}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str97, 121}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str98, 105}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str99, 128}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str100, 127}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str101, 11}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str102, 8}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str103, 99}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str104, 27}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str105, 9}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str106, 59}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str107, 97}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str108, 56}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str109, 3}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str110, 80}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str111, 101}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str112, 64}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str113, 18}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str114, 90}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str444, 120}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str445, 134}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str117, 120}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str118, 102}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str119, 72}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str120, 12}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str448, 62}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str449, 50}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str450, 172}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str451, 20}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str123, 70}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str454, 24}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str455, 79}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str126, 69}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str127, 123}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str458, 154}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str459, 125}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str460, 139}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str462, 154}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str463, 174}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str129, 84}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str465, 120}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str131, 124}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str132, 61}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str467, 41}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str134, 116}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str135, 125}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str469, 178}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str474, 141}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str476, 138}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str477, 138}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str479, 0}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str480, 94}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str481, 157}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str485, 83}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str486, 128}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str487, 106}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str488, 141}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str489, 144}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str490, 63}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str491, 44}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str493, 125}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str494, 94}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str502, 193}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str504, 121}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str505, 32}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str508, 137}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str509, 164}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str138, 91}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str139, 113}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str140, 75}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str141, 114}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str142, 52}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str512, 68}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str514, 134}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str515, 104}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str516, 101}, {-1}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str146, 87}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str520, 25}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str521, 121}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str522, 106}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str523, 39}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str525, 78}, + {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str531, 37}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str533, 163}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str536, 12}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str537, 143}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str538, 133}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str539, 139}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str542, 52}, + {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str548, 61}, {-1}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str150, 107}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str151, 57}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str552, 67}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str553, 122}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str554, 164}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str556, 101}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str558, 53}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str559, 64}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str560, 160}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str562, 68}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str564, 166}, + {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str570, 188}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str573, 11}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str575, 166}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str584, 28}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str587, 39}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str590, 178}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str593, 184}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str594, 99}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str595, 8}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str597, 137}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str598, 180}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str599, 146}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str601, 165}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str602, 146}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str603, 109}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str606, 76}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str608, 89}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str610, 86}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str611, 76}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str616, 109}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str618, 89}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str623, 67}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str626, 118}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str635, 29}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str638, 186}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str639, 52}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str640, 25}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str645, 44}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str646, 117}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str649, 133}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str651, 31}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str652, 22}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str653, 83}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str654, 33}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str153, 129}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str154, 83}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str656, 88}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str660, 145}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str661, 90}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str674, 183}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str156, 86}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str157, 79}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str676, 173}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str677, 132}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str689, 136}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str692, 107}, {-1}, {-1}, {-1}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str163, 0}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str698, 107}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str699, 188}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str701, 131}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str705, 71}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str706, 55}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str707, 64}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str708, 196}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str709, 75}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str710, 75}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str714, 80}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str717, 80}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str722, 135}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str723, 85}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str726, 148}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str727, 85}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str728, 131}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str729, 148}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str748, 48}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str751, 46}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str755, 118}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str758, 182}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str786, 84}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str797, 170}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str809, 29}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str820, 170}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str823, 173}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str842, 10}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str843, 165}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str848, 103}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str849, 103}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str863, 160}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str864, 30}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str165, 109}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str866, 37}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str867, 57}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str878, 158}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str883, 28}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str884, 124}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str886, 116}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str887, 116}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str895, 47}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str898, 2}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str908, 169}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str909, 126}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str935, 95}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str937, 159}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str947, 48}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str966, 61}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str975, 84}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str978, 126}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #endif /* USE_UNICODE_PROPERTIES */ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #ifndef USE_UNICODE_PROPERTIES - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str7, 7}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str8, 8}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str9, 1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str10, 13}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str11, 11}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str12, 0}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str13, 10}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str14, 14}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str15, 3}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str16, 9}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str17, 12}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str18, 6}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str19, 5}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str20, 4}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str21, 2} + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str7, 7}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str8, 8}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str9, 1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str10, 13}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str11, 11}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str12, 0}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str13, 10}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str14, 14}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str15, 3}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str16, 9}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str17, 12}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str18, 6}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str19, 5}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str20, 4}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str21, 2} #else /* USE_UNICODE_PROPERTIES */ - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str182, 77}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str183, 10}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1022, 45}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1024, 123}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1036, 156}, {-1}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str187, 93}, - {-1}, {-1}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str192, 65}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1040, 47}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1065, 156}, {-1}, {-1}, {-1}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str216, 111}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1071, 144}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1072, 153}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1140, 72}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1141, 135}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str222, 4}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str231, 66}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1174, 15}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1187, 72}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1221, 90}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1235, 95}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str237, 126}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1277, 78}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1542, 153}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str266, 63} + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1751, 73} #endif /* USE_UNICODE_PROPERTIES */ }; diff --git a/enc/unicode/name2ctype.h.blt b/enc/unicode/name2ctype.h.blt index 879cbcb5b2bbfc..2248b8f7cb1dbd 100644 --- a/enc/unicode/name2ctype.h.blt +++ b/enc/unicode/name2ctype.h.blt @@ -3,7 +3,7 @@ #ifndef USE_UNICODE_PROPERTIES /* Computed positions: -k'1,3' */ #else /* USE_UNICODE_PROPERTIES */ -/* Computed positions: -k'1-3' */ +/* Computed positions: -k'1-3,6,12,16,$' */ #endif /* USE_UNICODE_PROPERTIES */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -35,65 +35,45 @@ error "gperf generated tables don't work with this execution character set. Plea -/* 'NEWLINE': [[:NEWLINE:]] */ -static const OnigCodePoint CR_NEWLINE[] = { +#ifdef USE_UNICODE_PROPERTIES +#ifdef USE_UNICODE_PROPERTIES +/* 'Any': - */ +static const OnigCodePoint CR_Any[] = { 1, - 0x000a, 0x000a, -}; /* CR_NEWLINE */ + 0x0000, 0x10ffff, +}; /* CR_Any */ -/* 'Alpha': [[:Alpha:]] */ -static const OnigCodePoint CR_Alpha[] = { - 452, - 0x0041, 0x005a, - 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, - 0x0386, 0x0386, - 0x0388, 0x038a, +/* 'Assigned': - */ +static const OnigCodePoint CR_Assigned[] = { + 485, + 0x0000, 0x0377, + 0x037a, 0x037e, + 0x0384, 0x038a, 0x038c, 0x038c, 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x0483, 0x0523, + 0x03a3, 0x0525, 0x0531, 0x0556, - 0x0559, 0x0559, + 0x0559, 0x055f, 0x0561, 0x0587, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, + 0x0589, 0x058a, + 0x0591, 0x05c7, 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0610, 0x061a, + 0x05f0, 0x05f4, + 0x0600, 0x0603, + 0x0606, 0x061b, + 0x061e, 0x061f, 0x0621, 0x065e, - 0x066e, 0x06d3, - 0x06d5, 0x06dc, - 0x06de, 0x06e8, - 0x06ea, 0x06ef, - 0x06fa, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x074a, + 0x0660, 0x070d, + 0x070f, 0x074a, 0x074d, 0x07b1, - 0x07ca, 0x07f5, - 0x07fa, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0963, - 0x0971, 0x0972, - 0x097b, 0x097f, + 0x07c0, 0x07fa, + 0x0800, 0x082d, + 0x0830, 0x083e, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0972, + 0x0979, 0x097f, 0x0981, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, @@ -107,7 +87,7 @@ static const OnigCodePoint CR_Alpha[] = { 0x09d7, 0x09d7, 0x09dc, 0x09dd, 0x09df, 0x09e3, - 0x09f0, 0x09f1, + 0x09e6, 0x09fb, 0x0a01, 0x0a03, 0x0a05, 0x0a0a, 0x0a0f, 0x0a10, @@ -123,7 +103,7 @@ static const OnigCodePoint CR_Alpha[] = { 0x0a51, 0x0a51, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e, - 0x0a70, 0x0a75, + 0x0a66, 0x0a75, 0x0a81, 0x0a83, 0x0a85, 0x0a8d, 0x0a8f, 0x0a91, @@ -136,6 +116,8 @@ static const OnigCodePoint CR_Alpha[] = { 0x0acb, 0x0acd, 0x0ad0, 0x0ad0, 0x0ae0, 0x0ae3, + 0x0ae6, 0x0aef, + 0x0af1, 0x0af1, 0x0b01, 0x0b03, 0x0b05, 0x0b0c, 0x0b0f, 0x0b10, @@ -149,7 +131,7 @@ static const OnigCodePoint CR_Alpha[] = { 0x0b56, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b63, - 0x0b71, 0x0b71, + 0x0b66, 0x0b71, 0x0b82, 0x0b83, 0x0b85, 0x0b8a, 0x0b8e, 0x0b90, @@ -165,6 +147,7 @@ static const OnigCodePoint CR_Alpha[] = { 0x0bca, 0x0bcd, 0x0bd0, 0x0bd0, 0x0bd7, 0x0bd7, + 0x0be6, 0x0bfa, 0x0c01, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, @@ -177,6 +160,8 @@ static const OnigCodePoint CR_Alpha[] = { 0x0c55, 0x0c56, 0x0c58, 0x0c59, 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c78, 0x0c7f, 0x0c82, 0x0c83, 0x0c85, 0x0c8c, 0x0c8e, 0x0c90, @@ -189,6 +174,8 @@ static const OnigCodePoint CR_Alpha[] = { 0x0cd5, 0x0cd6, 0x0cde, 0x0cde, 0x0ce0, 0x0ce3, + 0x0ce6, 0x0cef, + 0x0cf1, 0x0cf2, 0x0d02, 0x0d03, 0x0d05, 0x0d0c, 0x0d0e, 0x0d10, @@ -199,7 +186,8 @@ static const OnigCodePoint CR_Alpha[] = { 0x0d4a, 0x0d4d, 0x0d57, 0x0d57, 0x0d60, 0x0d63, - 0x0d7a, 0x0d7f, + 0x0d66, 0x0d75, + 0x0d79, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, @@ -210,9 +198,9 @@ static const OnigCodePoint CR_Alpha[] = { 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, - 0x0df2, 0x0df3, + 0x0df2, 0x0df4, 0x0e01, 0x0e3a, - 0x0e40, 0x0e4e, + 0x0e3f, 0x0e5b, 0x0e81, 0x0e82, 0x0e84, 0x0e84, 0x0e87, 0x0e88, @@ -229,28 +217,18 @@ static const OnigCodePoint CR_Alpha[] = { 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, 0x0ec8, 0x0ecd, + 0x0ed0, 0x0ed9, 0x0edc, 0x0edd, - 0x0f00, 0x0f00, - 0x0f18, 0x0f19, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f3e, 0x0f47, + 0x0f00, 0x0f47, 0x0f49, 0x0f6c, - 0x0f71, 0x0f84, - 0x0f86, 0x0f8b, + 0x0f71, 0x0f8b, 0x0f90, 0x0f97, 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x1000, 0x103f, - 0x1050, 0x108f, - 0x10a0, 0x10c5, - 0x10d0, 0x10fa, - 0x10fc, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1200, 0x1248, + 0x0fbe, 0x0fcc, + 0x0fce, 0x0fd8, + 0x1000, 0x10c5, + 0x10d0, 0x10fc, + 0x1100, 0x1248, 0x124a, 0x124d, 0x1250, 0x1256, 0x1258, 0x1258, @@ -266,44 +244,51 @@ static const OnigCodePoint CR_Alpha[] = { 0x12d8, 0x1310, 0x1312, 0x1315, 0x1318, 0x135a, - 0x135f, 0x135f, - 0x1380, 0x138f, + 0x135f, 0x137c, + 0x1380, 0x1399, 0x13a0, 0x13f4, - 0x1401, 0x166c, - 0x166f, 0x1676, - 0x1681, 0x169a, - 0x16a0, 0x16ea, + 0x1400, 0x169c, + 0x16a0, 0x16f0, 0x1700, 0x170c, 0x170e, 0x1714, - 0x1720, 0x1734, + 0x1720, 0x1736, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17d3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dd, - 0x180b, 0x180d, + 0x1780, 0x17dd, + 0x17e0, 0x17e9, + 0x17f0, 0x17f9, + 0x1800, 0x180e, + 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18aa, + 0x18b0, 0x18f5, 0x1900, 0x191c, 0x1920, 0x192b, 0x1930, 0x193b, - 0x1950, 0x196d, + 0x1940, 0x1940, + 0x1944, 0x196d, 0x1970, 0x1974, - 0x1980, 0x19a9, + 0x1980, 0x19ab, 0x19b0, 0x19c9, - 0x1a00, 0x1a1b, + 0x19d0, 0x19da, + 0x19de, 0x1a1b, + 0x1a1e, 0x1a5e, + 0x1a60, 0x1a7c, + 0x1a7f, 0x1a89, + 0x1a90, 0x1a99, + 0x1aa0, 0x1aad, 0x1b00, 0x1b4b, - 0x1b6b, 0x1b73, + 0x1b50, 0x1b7c, 0x1b80, 0x1baa, - 0x1bae, 0x1baf, + 0x1bae, 0x1bb9, 0x1c00, 0x1c37, - 0x1c4d, 0x1c4f, - 0x1c5a, 0x1c7d, + 0x1c3b, 0x1c49, + 0x1c4d, 0x1c7f, + 0x1cd0, 0x1cf2, 0x1d00, 0x1de6, - 0x1dfe, 0x1f15, + 0x1dfd, 0x1f15, 0x1f18, 0x1f1d, 0x1f20, 0x1f45, 0x1f48, 0x1f4d, @@ -313,39 +298,44 @@ static const OnigCodePoint CR_Alpha[] = { 0x1f5d, 0x1f5d, 0x1f5f, 0x1f7d, 0x1f80, 0x1fb4, - 0x1fb6, 0x1fbc, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fcc, - 0x1fd0, 0x1fd3, + 0x1fb6, 0x1fc4, + 0x1fc6, 0x1fd3, 0x1fd6, 0x1fdb, - 0x1fe0, 0x1fec, + 0x1fdd, 0x1fef, 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffc, - 0x2071, 0x2071, - 0x207f, 0x207f, + 0x1ff6, 0x1ffe, + 0x2000, 0x2064, + 0x206a, 0x2071, + 0x2074, 0x208e, 0x2090, 0x2094, + 0x20a0, 0x20b8, 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, - 0x2183, 0x2184, + 0x2100, 0x2189, + 0x2190, 0x23e8, + 0x2400, 0x2426, + 0x2440, 0x244a, + 0x2460, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, + 0x2701, 0x2704, + 0x2706, 0x2709, + 0x270c, 0x2727, + 0x2729, 0x274b, + 0x274d, 0x274d, + 0x274f, 0x2752, + 0x2756, 0x275e, + 0x2761, 0x2794, + 0x2798, 0x27af, + 0x27b1, 0x27be, + 0x27c0, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 0x2b4c, + 0x2b50, 0x2b59, 0x2c00, 0x2c2e, 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2ce4, - 0x2d00, 0x2d25, + 0x2c60, 0x2cf1, + 0x2cf9, 0x2d25, 0x2d30, 0x2d65, 0x2d6f, 0x2d6f, 0x2d80, 0x2d96, @@ -357,72 +347,83 @@ static const OnigCodePoint CR_Alpha[] = { 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, - 0x2de0, 0x2dff, - 0x2e2f, 0x2e2f, - 0x3005, 0x3006, - 0x302a, 0x302f, - 0x3031, 0x3035, - 0x303b, 0x303c, + 0x2de0, 0x2e31, + 0x2e80, 0x2e99, + 0x2e9b, 0x2ef3, + 0x2f00, 0x2fd5, + 0x2ff0, 0x2ffb, + 0x3000, 0x303f, 0x3041, 0x3096, - 0x3099, 0x309a, - 0x309d, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, + 0x3099, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, - 0x31a0, 0x31b7, - 0x31f0, 0x31ff, - 0x3400, 0x3400, - 0x4db5, 0x4db5, - 0x4e00, 0x4e00, - 0x9fc3, 0x9fc3, + 0x3190, 0x31b7, + 0x31c0, 0x31e3, + 0x31f0, 0x321e, + 0x3220, 0x32fe, + 0x3300, 0x4db5, + 0x4dc0, 0x9fcb, 0xa000, 0xa48c, - 0xa500, 0xa60c, - 0xa610, 0xa61f, - 0xa62a, 0xa62b, + 0xa490, 0xa4c6, + 0xa4d0, 0xa62b, 0xa640, 0xa65f, - 0xa662, 0xa672, - 0xa67c, 0xa67d, - 0xa67f, 0xa697, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa78c, - 0xa7fb, 0xa827, - 0xa840, 0xa873, + 0xa662, 0xa673, + 0xa67c, 0xa697, + 0xa6a0, 0xa6f7, + 0xa700, 0xa78c, + 0xa7fb, 0xa82b, + 0xa830, 0xa839, + 0xa840, 0xa877, 0xa880, 0xa8c4, - 0xa90a, 0xa92d, - 0xa930, 0xa953, + 0xa8ce, 0xa8d9, + 0xa8e0, 0xa8fb, + 0xa900, 0xa953, + 0xa95f, 0xa97c, + 0xa980, 0xa9cd, + 0xa9cf, 0xa9d9, + 0xa9de, 0xa9df, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, + 0xaa50, 0xaa59, + 0xaa5c, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadf, + 0xabc0, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xd800, 0xfa2d, + 0xfa30, 0xfa6d, 0xfa70, 0xfad9, 0xfb00, 0xfb06, 0xfb13, 0xfb17, - 0xfb1d, 0xfb28, - 0xfb2a, 0xfb36, + 0xfb1d, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44, 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3d, + 0xfbd3, 0xfd3f, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfb, - 0xfe00, 0xfe0f, + 0xfdf0, 0xfdfd, + 0xfe00, 0xfe19, 0xfe20, 0xfe26, + 0xfe30, 0xfe52, + 0xfe54, 0xfe66, + 0xfe68, 0xfe6b, 0xfe70, 0xfe74, 0xfe76, 0xfefc, - 0xff21, 0xff3a, - 0xff41, 0xff5a, - 0xff66, 0xffbe, + 0xfeff, 0xfeff, + 0xff01, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, + 0xffe0, 0xffe6, + 0xffe8, 0xffee, + 0xfff9, 0xfffd, 0x10000, 0x1000b, 0x1000d, 0x10026, 0x10028, 0x1003a, @@ -430,38 +431,57 @@ static const OnigCodePoint CR_Alpha[] = { 0x1003f, 0x1004d, 0x10050, 0x1005d, 0x10080, 0x100fa, - 0x101fd, 0x101fd, + 0x10100, 0x10102, + 0x10107, 0x10133, + 0x10137, 0x1018a, + 0x10190, 0x1019b, + 0x101d0, 0x101fd, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x10300, 0x1031e, - 0x10330, 0x10340, - 0x10342, 0x10349, + 0x10320, 0x10323, + 0x10330, 0x1034a, 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x10400, 0x1049d, + 0x1039f, 0x103c3, + 0x103c8, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, 0x10800, 0x10805, 0x10808, 0x10808, 0x1080a, 0x10835, 0x10837, 0x10838, 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10915, - 0x10920, 0x10939, + 0x1083f, 0x10855, + 0x10857, 0x1085f, + 0x10900, 0x1091b, + 0x1091f, 0x10939, + 0x1093f, 0x1093f, 0x10a00, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, + 0x10a3f, 0x10a47, + 0x10a50, 0x10a58, + 0x10a60, 0x10a7f, + 0x10b00, 0x10b35, + 0x10b39, 0x10b55, + 0x10b58, 0x10b72, + 0x10b78, 0x10b7f, + 0x10c00, 0x10c48, + 0x10e60, 0x10e7e, + 0x11080, 0x110c1, 0x12000, 0x1236e, - 0x1d165, 0x1d169, - 0x1d16d, 0x1d172, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, + 0x12400, 0x12462, + 0x12470, 0x12473, + 0x13000, 0x1342e, + 0x1d000, 0x1d0f5, + 0x1d100, 0x1d126, + 0x1d129, 0x1d1dd, + 0x1d200, 0x1d245, + 0x1d300, 0x1d356, + 0x1d360, 0x1d371, 0x1d400, 0x1d454, 0x1d456, 0x1d49c, 0x1d49e, 0x1d49f, @@ -481,3829 +501,99 @@ static const OnigCodePoint CR_Alpha[] = { 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, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, + 0x1d6a8, 0x1d7cb, + 0x1d7ce, 0x1d7ff, + 0x1f000, 0x1f02b, + 0x1f030, 0x1f093, + 0x1f100, 0x1f10a, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, 0x2f800, 0x2fa1d, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, 0xe0100, 0xe01ef, -}; /* CR_Alpha */ + 0xf0000, 0xffffd, + 0x100000, 0x10fffd, +}; /* CR_Assigned */ -/* 'Blank': [[:Blank:]] */ -static const OnigCodePoint CR_Blank[] = { - 9, - 0x0009, 0x0009, - 0x0020, 0x0020, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x180e, 0x180e, - 0x2000, 0x200a, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000, -}; /* CR_Blank */ +/* 'C': Major Category */ +static const OnigCodePoint CR_C[] = { + 20, + 0x0000, 0x001f, + 0x007f, 0x009f, + 0x00ad, 0x00ad, + 0x0600, 0x0603, + 0x06dd, 0x06dd, + 0x070f, 0x070f, + 0x17b4, 0x17b5, + 0x200b, 0x200f, + 0x202a, 0x202e, + 0x2060, 0x2064, + 0x206a, 0x206f, + 0xd800, 0xf8ff, + 0xfeff, 0xfeff, + 0xfff9, 0xfffb, + 0x110bd, 0x110bd, + 0x1d173, 0x1d17a, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, + 0xf0000, 0xffffd, + 0x100000, 0x10ffff, +}; /* CR_C */ -/* 'Cntrl': [[:Cntrl:]] */ -static const OnigCodePoint CR_Cntrl[] = { +/* 'Cc': General Category */ +static const OnigCodePoint CR_Cc[] = { 2, 0x0000, 0x001f, 0x007f, 0x009f, -}; /* CR_Cntrl */ +}; /* CR_Cc */ -/* 'Digit': [[:Digit:]] */ -static const OnigCodePoint CR_Digit[] = { - 33, - 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, - 0x0e50, 0x0e59, - 0x0ed0, 0x0ed9, - 0x0f20, 0x0f29, - 0x1040, 0x1049, - 0x1090, 0x1099, - 0x17e0, 0x17e9, - 0x1810, 0x1819, - 0x1946, 0x194f, - 0x19d0, 0x19d9, - 0x1b50, 0x1b59, - 0x1bb0, 0x1bb9, - 0x1c40, 0x1c49, - 0x1c50, 0x1c59, - 0xa620, 0xa629, - 0xa8d0, 0xa8d9, - 0xa900, 0xa909, - 0xaa50, 0xaa59, - 0xff10, 0xff19, - 0x104a0, 0x104a9, - 0x1d7ce, 0x1d7ff, -}; /* CR_Digit */ - -/* 'Graph': [[:Graph:]] */ -static const OnigCodePoint CR_Graph[] = { - 449, - 0x0021, 0x007e, - 0x00a1, 0x00ac, - 0x00ae, 0x0377, - 0x037a, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x0523, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0606, 0x061b, - 0x061e, 0x061f, - 0x0621, 0x065e, - 0x0660, 0x06dc, - 0x06de, 0x070d, - 0x0710, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0972, - 0x097b, 0x097f, - 0x0981, 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, 0x09fa, - 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, - 0x0af1, 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, 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, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, - 0x0c82, 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, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 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, - 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, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fd4, - 0x1000, 0x1099, - 0x109e, 0x10c5, - 0x10d0, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x135f, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1401, 0x1676, - 0x1681, 0x169c, - 0x16a0, 0x16f0, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180d, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a1f, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, - 0x1c00, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c7f, - 0x1d00, 0x1de6, - 0x1dfe, 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, - 0x2010, 0x2027, - 0x2030, 0x205e, - 0x2070, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x2094, - 0x20a0, 0x20b5, - 0x20d0, 0x20f0, - 0x2100, 0x214f, - 0x2153, 0x2188, - 0x2190, 0x23e7, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27ca, - 0x27cc, 0x27cc, - 0x27d0, 0x2b4c, - 0x2b50, 0x2b54, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2cea, - 0x2cf9, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e30, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3001, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31b7, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x3243, - 0x3250, 0x32fe, - 0x3300, 0x3400, - 0x4db5, 0x4db5, - 0x4dc0, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa500, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa673, - 0xa67c, 0xa697, - 0xa700, 0xa78c, - 0xa7fb, 0xa82b, - 0xa840, 0xa877, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, - 0xa900, 0xa953, - 0xa95f, 0xa95f, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa5f, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe26, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xff01, 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, 0x1018a, - 0x10190, 0x1019b, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10919, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x12000, 0x1236e, - 0x12400, 0x12462, - 0x12470, 0x12473, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d172, - 0x1d17b, 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, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0100, 0xe01ef, -}; /* CR_Graph */ - -/* 'Lower': [[:Lower:]] */ -static const OnigCodePoint CR_Lower[] = { - 598, - 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, 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, - 0x0561, 0x0587, - 0x1d00, 0x1d2b, - 0x1d62, 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, - 0x2071, 0x2071, - 0x207f, 0x207f, - 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, 0x2c7c, - 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, - 0x2d00, 0x2d25, - 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, - 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, - 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, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xff41, 0xff5a, - 0x10428, 0x1044f, - 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, -}; /* CR_Lower */ - -/* 'Print': [[:Print:]] */ -static const OnigCodePoint CR_Print[] = { - 452, - 0x0009, 0x000d, - 0x0020, 0x007e, - 0x0085, 0x0085, - 0x00a0, 0x00ac, - 0x00ae, 0x0377, - 0x037a, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x0523, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0606, 0x061b, - 0x061e, 0x061f, - 0x0621, 0x065e, - 0x0660, 0x06dc, - 0x06de, 0x070d, - 0x0710, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0972, - 0x097b, 0x097f, - 0x0981, 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, 0x09fa, - 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, - 0x0af1, 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, 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, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, - 0x0c82, 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, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 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, - 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, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fd4, - 0x1000, 0x1099, - 0x109e, 0x10c5, - 0x10d0, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x135f, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1401, 0x1676, - 0x1680, 0x169c, - 0x16a0, 0x16f0, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a1f, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, - 0x1c00, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c7f, - 0x1d00, 0x1de6, - 0x1dfe, 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, 0x2029, - 0x202f, 0x205f, - 0x2070, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x2094, - 0x20a0, 0x20b5, - 0x20d0, 0x20f0, - 0x2100, 0x214f, - 0x2153, 0x2188, - 0x2190, 0x23e7, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27ca, - 0x27cc, 0x27cc, - 0x27d0, 0x2b4c, - 0x2b50, 0x2b54, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2cea, - 0x2cf9, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e30, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31b7, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x3243, - 0x3250, 0x32fe, - 0x3300, 0x3400, - 0x4db5, 0x4db5, - 0x4dc0, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa500, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa673, - 0xa67c, 0xa697, - 0xa700, 0xa78c, - 0xa7fb, 0xa82b, - 0xa840, 0xa877, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, - 0xa900, 0xa953, - 0xa95f, 0xa95f, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa5f, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe26, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xff01, 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, 0x1018a, - 0x10190, 0x1019b, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10919, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x12000, 0x1236e, - 0x12400, 0x12462, - 0x12470, 0x12473, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d172, - 0x1d17b, 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, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0100, 0xe01ef, -}; /* CR_Print */ - -/* 'Punct': [[:Punct:]] */ -static const OnigCodePoint CR_Punct[] = { - 112, - 0x0021, 0x0023, - 0x0025, 0x002a, - 0x002c, 0x002f, - 0x003a, 0x003b, - 0x003f, 0x0040, - 0x005b, 0x005d, - 0x005f, 0x005f, - 0x007b, 0x007b, - 0x007d, 0x007d, - 0x00a1, 0x00a1, - 0x00ab, 0x00ab, - 0x00b7, 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, - 0x0964, 0x0965, - 0x0970, 0x0970, - 0x0df4, 0x0df4, - 0x0e4f, 0x0e4f, - 0x0e5a, 0x0e5b, - 0x0f04, 0x0f12, - 0x0f3a, 0x0f3d, - 0x0f85, 0x0f85, - 0x0fd0, 0x0fd4, - 0x104a, 0x104f, - 0x10fb, 0x10fb, - 0x1361, 0x1368, - 0x166d, 0x166e, - 0x169b, 0x169c, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x17d4, 0x17d6, - 0x17d8, 0x17da, - 0x1800, 0x180a, - 0x1944, 0x1945, - 0x19de, 0x19df, - 0x1a1e, 0x1a1f, - 0x1b5a, 0x1b60, - 0x1c3b, 0x1c3f, - 0x1c7e, 0x1c7f, - 0x2010, 0x2027, - 0x2030, 0x2043, - 0x2045, 0x2051, - 0x2053, 0x205e, - 0x207d, 0x207e, - 0x208d, 0x208e, - 0x2329, 0x232a, - 0x2768, 0x2775, - 0x27c5, 0x27c6, - 0x27e6, 0x27ef, - 0x2983, 0x2998, - 0x29d8, 0x29db, - 0x29fc, 0x29fd, - 0x2cf9, 0x2cfc, - 0x2cfe, 0x2cff, - 0x2e00, 0x2e2e, - 0x2e30, 0x2e30, - 0x3001, 0x3003, - 0x3008, 0x3011, - 0x3014, 0x301f, - 0x3030, 0x3030, - 0x303d, 0x303d, - 0x30a0, 0x30a0, - 0x30fb, 0x30fb, - 0xa60d, 0xa60f, - 0xa673, 0xa673, - 0xa67e, 0xa67e, - 0xa874, 0xa877, - 0xa8ce, 0xa8cf, - 0xa92e, 0xa92f, - 0xa95f, 0xa95f, - 0xaa5c, 0xaa5f, - 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, 0x10101, - 0x1039f, 0x1039f, - 0x103d0, 0x103d0, - 0x1091f, 0x1091f, - 0x1093f, 0x1093f, - 0x10a50, 0x10a58, - 0x12470, 0x12473, -}; /* CR_Punct */ - -/* 'Space': [[:Space:]] */ -static const OnigCodePoint CR_Space[] = { - 11, - 0x0009, 0x000d, - 0x0020, 0x0020, - 0x0085, 0x0085, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x180e, 0x180e, - 0x2000, 0x200a, - 0x2028, 0x2029, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000, -}; /* CR_Space */ - -/* 'Upper': [[:Upper:]] */ -static const OnigCodePoint CR_Upper[] = { - 591, - 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, - 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, - 0x0531, 0x0556, - 0x10a0, 0x10c5, - 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, 0x2c6f, - 0x2c72, 0x2c72, - 0x2c75, 0x2c75, - 0x2c80, 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, - 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, - 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, - 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, - 0xff21, 0xff3a, - 0x10400, 0x10427, - 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, -}; /* CR_Upper */ - -/* 'XDigit': [[:XDigit:]] */ -static const OnigCodePoint CR_XDigit[] = { - 3, - 0x0030, 0x0039, - 0x0041, 0x0046, - 0x0061, 0x0066, -}; /* CR_XDigit */ - -/* 'Word': [[:Word:]] */ -static const OnigCodePoint CR_Word[] = { - 477, - 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, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x0483, 0x0523, - 0x0531, 0x0556, - 0x0559, 0x0559, - 0x0561, 0x0587, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0610, 0x061a, - 0x0621, 0x065e, - 0x0660, 0x0669, - 0x066e, 0x06d3, - 0x06d5, 0x06dc, - 0x06de, 0x06e8, - 0x06ea, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07f5, - 0x07fa, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0963, - 0x0966, 0x096f, - 0x0971, 0x0972, - 0x097b, 0x097f, - 0x0981, 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, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c82, 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, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 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, - 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, 0x0edd, - 0x0f00, 0x0f00, - 0x0f18, 0x0f19, - 0x0f20, 0x0f29, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f3e, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f84, - 0x0f86, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x1000, 0x1049, - 0x1050, 0x1099, - 0x10a0, 0x10c5, - 0x10d0, 0x10fa, - 0x10fc, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x135f, 0x135f, - 0x1380, 0x138f, - 0x13a0, 0x13f4, - 0x1401, 0x166c, - 0x166f, 0x1676, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1734, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17d3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dd, - 0x17e0, 0x17e9, - 0x180b, 0x180d, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1946, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x1a00, 0x1a1b, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b59, - 0x1b6b, 0x1b73, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, - 0x1c00, 0x1c37, - 0x1c40, 0x1c49, - 0x1c4d, 0x1c7d, - 0x1d00, 0x1de6, - 0x1dfe, 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, 0x2094, - 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, - 0x2183, 0x2184, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2ce4, - 0x2d00, 0x2d25, - 0x2d30, 0x2d65, - 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, 0x3006, - 0x302a, 0x302f, - 0x3031, 0x3035, - 0x303b, 0x303c, - 0x3041, 0x3096, - 0x3099, 0x309a, - 0x309d, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x31a0, 0x31b7, - 0x31f0, 0x31ff, - 0x3400, 0x3400, - 0x4db5, 0x4db5, - 0x4e00, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa500, 0xa60c, - 0xa610, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa672, - 0xa67c, 0xa67d, - 0xa67f, 0xa697, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa78c, - 0xa7fb, 0xa827, - 0xa840, 0xa873, - 0xa880, 0xa8c4, - 0xa8d0, 0xa8d9, - 0xa900, 0xa92d, - 0xa930, 0xa953, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 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, 0xfe26, - 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, - 0x101fd, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10330, 0x10340, - 0x10342, 0x10349, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10915, - 0x10920, 0x10939, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, - 0x12000, 0x1236e, - 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, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0100, 0xe01ef, -}; /* CR_Word */ - -/* 'Alnum': [[:Alnum:]] */ -static const OnigCodePoint CR_Alnum[] = { - 471, - 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, - 0x0300, 0x0374, - 0x0376, 0x0377, - 0x037a, 0x037d, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x0483, 0x0523, - 0x0531, 0x0556, - 0x0559, 0x0559, - 0x0561, 0x0587, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0610, 0x061a, - 0x0621, 0x065e, - 0x0660, 0x0669, - 0x066e, 0x06d3, - 0x06d5, 0x06dc, - 0x06de, 0x06e8, - 0x06ea, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07f5, - 0x07fa, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0963, - 0x0966, 0x096f, - 0x0971, 0x0972, - 0x097b, 0x097f, - 0x0981, 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, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c82, 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, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 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, - 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, 0x0edd, - 0x0f00, 0x0f00, - 0x0f18, 0x0f19, - 0x0f20, 0x0f29, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f3e, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f84, - 0x0f86, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x1000, 0x1049, - 0x1050, 0x1099, - 0x10a0, 0x10c5, - 0x10d0, 0x10fa, - 0x10fc, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x135f, 0x135f, - 0x1380, 0x138f, - 0x13a0, 0x13f4, - 0x1401, 0x166c, - 0x166f, 0x1676, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1734, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17d3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dd, - 0x17e0, 0x17e9, - 0x180b, 0x180d, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1946, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x1a00, 0x1a1b, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b59, - 0x1b6b, 0x1b73, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, - 0x1c00, 0x1c37, - 0x1c40, 0x1c49, - 0x1c4d, 0x1c7d, - 0x1d00, 0x1de6, - 0x1dfe, 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, 0x2094, - 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, - 0x2183, 0x2184, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2ce4, - 0x2d00, 0x2d25, - 0x2d30, 0x2d65, - 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, 0x3006, - 0x302a, 0x302f, - 0x3031, 0x3035, - 0x303b, 0x303c, - 0x3041, 0x3096, - 0x3099, 0x309a, - 0x309d, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x31a0, 0x31b7, - 0x31f0, 0x31ff, - 0x3400, 0x3400, - 0x4db5, 0x4db5, - 0x4e00, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa500, 0xa60c, - 0xa610, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa672, - 0xa67c, 0xa67d, - 0xa67f, 0xa697, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa78c, - 0xa7fb, 0xa827, - 0xa840, 0xa873, - 0xa880, 0xa8c4, - 0xa8d0, 0xa8d9, - 0xa900, 0xa92d, - 0xa930, 0xa953, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 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, 0xfe26, - 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, - 0x101fd, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10330, 0x10340, - 0x10342, 0x10349, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10915, - 0x10920, 0x10939, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, - 0x12000, 0x1236e, - 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, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0100, 0xe01ef, -}; /* CR_Alnum */ - -/* 'ASCII': [[:ASCII:]] */ -static const OnigCodePoint CR_ASCII[] = { - 1, - 0x0000, 0x007f, -}; /* CR_ASCII */ - -#ifdef USE_UNICODE_PROPERTIES -#ifdef USE_UNICODE_PROPERTIES -/* 'Any': - */ -static const OnigCodePoint CR_Any[] = { - 1, - 0x0000, 0x10ffff, -}; /* CR_Any */ - -/* 'Assigned': - */ -static const OnigCodePoint CR_Assigned[] = { - 454, - 0x0000, 0x0377, - 0x037a, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x0523, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0600, 0x0603, - 0x0606, 0x061b, - 0x061e, 0x061f, - 0x0621, 0x065e, - 0x0660, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0972, - 0x097b, 0x097f, - 0x0981, 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, 0x09fa, - 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, - 0x0af1, 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, 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, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, - 0x0c82, 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, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 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, - 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, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fd4, - 0x1000, 0x1099, - 0x109e, 0x10c5, - 0x10d0, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x135f, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1401, 0x1676, - 0x1680, 0x169c, - 0x16a0, 0x16f0, - 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, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a1f, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, - 0x1c00, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c7f, - 0x1d00, 0x1de6, - 0x1dfe, 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, - 0x206a, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x2094, - 0x20a0, 0x20b5, - 0x20d0, 0x20f0, - 0x2100, 0x214f, - 0x2153, 0x2188, - 0x2190, 0x23e7, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27ca, - 0x27cc, 0x27cc, - 0x27d0, 0x2b4c, - 0x2b50, 0x2b54, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2cea, - 0x2cf9, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e30, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31b7, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x3243, - 0x3250, 0x32fe, - 0x3300, 0x3400, - 0x4db5, 0x4db5, - 0x4dc0, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa500, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa673, - 0xa67c, 0xa697, - 0xa700, 0xa78c, - 0xa7fb, 0xa82b, - 0xa840, 0xa877, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, - 0xa900, 0xa953, - 0xa95f, 0xa95f, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa5f, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xd800, 0xd800, - 0xdb7f, 0xdb80, - 0xdbff, 0xdc00, - 0xdfff, 0xe000, - 0xf8ff, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe26, - 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, 0x1018a, - 0x10190, 0x1019b, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10919, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x12000, 0x1236e, - 0x12400, 0x12462, - 0x12470, 0x12473, - 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, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, - 0xf0000, 0xf0000, - 0xffffd, 0xffffd, - 0x100000, 0x100000, -}; /* CR_Assigned */ - -/* 'C': Major Category */ -static const OnigCodePoint CR_C[] = { - 25, - 0x0000, 0x001f, - 0x007f, 0x009f, - 0x00ad, 0x00ad, - 0x0600, 0x0603, - 0x06dd, 0x06dd, - 0x070f, 0x070f, - 0x17b4, 0x17b5, - 0x200b, 0x200f, - 0x202a, 0x202e, - 0x2060, 0x2064, - 0x206a, 0x206f, - 0xd800, 0xd800, - 0xdb7f, 0xdb80, - 0xdbff, 0xdc00, - 0xdfff, 0xe000, - 0xf8ff, 0xf8ff, - 0xfeff, 0xfeff, - 0xfff9, 0xfffb, - 0x1d173, 0x1d17a, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xf0000, 0xf0000, - 0xffffd, 0xffffd, - 0x100000, 0x100000, - 0x10fffd, 0x10ffff, -}; /* CR_C */ - -/* 'Cc': General Category */ -static const OnigCodePoint CR_Cc[] = { - 2, - 0x0000, 0x001f, - 0x007f, 0x009f, -}; /* CR_Cc */ - -/* 'Cf': General Category */ -static const OnigCodePoint CR_Cf[] = { - 14, - 0x00ad, 0x00ad, - 0x0600, 0x0603, - 0x06dd, 0x06dd, - 0x070f, 0x070f, - 0x17b4, 0x17b5, - 0x200b, 0x200f, - 0x202a, 0x202e, - 0x2060, 0x2064, - 0x206a, 0x206f, - 0xfeff, 0xfeff, - 0xfff9, 0xfffb, - 0x1d173, 0x1d17a, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, -}; /* CR_Cf */ +/* 'Cf': General Category */ +static const OnigCodePoint CR_Cf[] = { + 15, + 0x00ad, 0x00ad, + 0x0600, 0x0603, + 0x06dd, 0x06dd, + 0x070f, 0x070f, + 0x17b4, 0x17b5, + 0x200b, 0x200f, + 0x202a, 0x202e, + 0x2060, 0x2064, + 0x206a, 0x206f, + 0xfeff, 0xfeff, + 0xfff9, 0xfffb, + 0x110bd, 0x110bd, + 0x1d173, 0x1d17a, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, +}; /* CR_Cf */ /* 'Cn': General Category */ static const OnigCodePoint CR_Cn[] = { - 454, + 485, 0x0378, 0x0379, 0x037f, 0x0383, 0x038b, 0x038b, 0x038d, 0x038d, 0x03a2, 0x03a2, - 0x0524, 0x0530, + 0x0526, 0x0530, 0x0557, 0x0558, 0x0560, 0x0560, 0x0588, 0x0588, @@ -4318,11 +608,13 @@ static const OnigCodePoint CR_Cn[] = { 0x070e, 0x070e, 0x074b, 0x074c, 0x07b2, 0x07bf, - 0x07fb, 0x0900, + 0x07fb, 0x07ff, + 0x082e, 0x082f, + 0x083f, 0x08ff, 0x093a, 0x093b, - 0x094e, 0x094f, - 0x0955, 0x0957, - 0x0973, 0x097a, + 0x094f, 0x094f, + 0x0956, 0x0957, + 0x0973, 0x0978, 0x0980, 0x0980, 0x0984, 0x0984, 0x098d, 0x098e, @@ -4337,7 +629,7 @@ static const OnigCodePoint CR_Cn[] = { 0x09d8, 0x09db, 0x09de, 0x09de, 0x09e4, 0x09e5, - 0x09fb, 0x0a00, + 0x09fc, 0x0a00, 0x0a04, 0x0a04, 0x0a0b, 0x0a0e, 0x0a11, 0x0a12, @@ -4475,13 +767,9 @@ static const OnigCodePoint CR_Cn[] = { 0x0f98, 0x0f98, 0x0fbd, 0x0fbd, 0x0fcd, 0x0fcd, - 0x0fd5, 0x0fff, - 0x109a, 0x109d, + 0x0fd9, 0x0fff, 0x10c6, 0x10cf, 0x10fd, 0x10ff, - 0x115a, 0x115e, - 0x11a3, 0x11a7, - 0x11fa, 0x11ff, 0x1249, 0x1249, 0x124e, 0x124f, 0x1257, 0x1257, @@ -4500,8 +788,7 @@ static const OnigCodePoint CR_Cn[] = { 0x135b, 0x135e, 0x137d, 0x137f, 0x139a, 0x139f, - 0x13f5, 0x1400, - 0x1677, 0x167f, + 0x13f5, 0x13ff, 0x169d, 0x169f, 0x16f1, 0x16ff, 0x170d, 0x170d, @@ -4517,26 +804,32 @@ static const OnigCodePoint CR_Cn[] = { 0x180f, 0x180f, 0x181a, 0x181f, 0x1878, 0x187f, - 0x18ab, 0x18ff, + 0x18ab, 0x18af, + 0x18f6, 0x18ff, 0x191d, 0x191f, 0x192c, 0x192f, 0x193c, 0x193f, 0x1941, 0x1943, 0x196e, 0x196f, 0x1975, 0x197f, - 0x19aa, 0x19af, + 0x19ac, 0x19af, 0x19ca, 0x19cf, - 0x19da, 0x19dd, + 0x19db, 0x19dd, 0x1a1c, 0x1a1d, - 0x1a20, 0x1aff, + 0x1a5f, 0x1a5f, + 0x1a7d, 0x1a7e, + 0x1a8a, 0x1a8f, + 0x1a9a, 0x1a9f, + 0x1aae, 0x1aff, 0x1b4c, 0x1b4f, 0x1b7d, 0x1b7f, 0x1bab, 0x1bad, 0x1bba, 0x1bff, 0x1c38, 0x1c3a, 0x1c4a, 0x1c4c, - 0x1c80, 0x1cff, - 0x1de7, 0x1dfd, + 0x1c80, 0x1ccf, + 0x1cf3, 0x1cff, + 0x1de7, 0x1dfc, 0x1f16, 0x1f17, 0x1f1e, 0x1f1f, 0x1f46, 0x1f47, @@ -4557,23 +850,22 @@ static const OnigCodePoint CR_Cn[] = { 0x2072, 0x2073, 0x208f, 0x208f, 0x2095, 0x209f, - 0x20b6, 0x20cf, + 0x20b9, 0x20cf, 0x20f1, 0x20ff, - 0x2150, 0x2152, - 0x2189, 0x218f, - 0x23e8, 0x23ff, + 0x218a, 0x218f, + 0x23e9, 0x23ff, 0x2427, 0x243f, 0x244b, 0x245f, - 0x269e, 0x269f, - 0x26bd, 0x26bf, - 0x26c4, 0x2700, + 0x26ce, 0x26ce, + 0x26e2, 0x26e2, + 0x26e4, 0x26e7, + 0x2700, 0x2700, 0x2705, 0x2705, 0x270a, 0x270b, 0x2728, 0x2728, 0x274c, 0x274c, 0x274e, 0x274e, 0x2753, 0x2755, - 0x2757, 0x2757, 0x275f, 0x2760, 0x2795, 0x2797, 0x27b0, 0x27b0, @@ -4581,12 +873,10 @@ static const OnigCodePoint CR_Cn[] = { 0x27cb, 0x27cb, 0x27cd, 0x27cf, 0x2b4d, 0x2b4f, - 0x2b55, 0x2bff, + 0x2b5a, 0x2bff, 0x2c2f, 0x2c2f, 0x2c5f, 0x2c5f, - 0x2c70, 0x2c70, - 0x2c7e, 0x2c7f, - 0x2ceb, 0x2cf8, + 0x2cf2, 0x2cf8, 0x2d26, 0x2d2f, 0x2d66, 0x2d6e, 0x2d70, 0x2d7f, @@ -4599,7 +889,7 @@ static const OnigCodePoint CR_Cn[] = { 0x2dcf, 0x2dcf, 0x2dd7, 0x2dd7, 0x2ddf, 0x2ddf, - 0x2e31, 0x2e7f, + 0x2e32, 0x2e7f, 0x2e9a, 0x2e9a, 0x2ef4, 0x2eff, 0x2fd6, 0x2fef, @@ -4612,37 +902,41 @@ static const OnigCodePoint CR_Cn[] = { 0x31b8, 0x31bf, 0x31e4, 0x31ef, 0x321f, 0x321f, - 0x3244, 0x324f, 0x32ff, 0x32ff, - 0x3401, 0x4db4, 0x4db6, 0x4dbf, - 0x4e01, 0x9fc2, - 0x9fc4, 0x9fff, + 0x9fcc, 0x9fff, 0xa48d, 0xa48f, - 0xa4c7, 0xa4ff, + 0xa4c7, 0xa4cf, 0xa62c, 0xa63f, 0xa660, 0xa661, 0xa674, 0xa67b, - 0xa698, 0xa6ff, + 0xa698, 0xa69f, + 0xa6f8, 0xa6ff, 0xa78d, 0xa7fa, - 0xa82c, 0xa83f, + 0xa82c, 0xa82f, + 0xa83a, 0xa83f, 0xa878, 0xa87f, 0xa8c5, 0xa8cd, - 0xa8da, 0xa8ff, + 0xa8da, 0xa8df, + 0xa8fc, 0xa8ff, 0xa954, 0xa95e, - 0xa960, 0xa9ff, + 0xa97d, 0xa97f, + 0xa9ce, 0xa9ce, + 0xa9da, 0xa9dd, + 0xa9e0, 0xa9ff, 0xaa37, 0xaa3f, 0xaa4e, 0xaa4f, 0xaa5a, 0xaa5b, - 0xaa60, 0xabff, - 0xac01, 0xd7a2, - 0xd7a4, 0xd7ff, - 0xd801, 0xdb7e, - 0xdb81, 0xdbfe, - 0xdc01, 0xdffe, - 0xe001, 0xf8fe, + 0xaa7c, 0xaa7f, + 0xaac3, 0xaada, + 0xaae0, 0xabbf, + 0xabee, 0xabef, + 0xabfa, 0xabff, + 0xd7a4, 0xd7af, + 0xd7c7, 0xd7ca, + 0xd7fc, 0xd7ff, 0xfa2e, 0xfa2f, - 0xfa6b, 0xfa6f, + 0xfa6e, 0xfa6f, 0xfada, 0xfaff, 0xfb07, 0xfb12, 0xfb18, 0xfb1c, @@ -4699,8 +993,9 @@ static const OnigCodePoint CR_Cn[] = { 0x10836, 0x10836, 0x10839, 0x1083b, 0x1083d, 0x1083e, - 0x10840, 0x108ff, - 0x1091a, 0x1091e, + 0x10856, 0x10856, + 0x10860, 0x108ff, + 0x1091c, 0x1091e, 0x1093a, 0x1093e, 0x10940, 0x109ff, 0x10a04, 0x10a04, @@ -4710,10 +1005,19 @@ static const OnigCodePoint CR_Cn[] = { 0x10a34, 0x10a37, 0x10a3b, 0x10a3e, 0x10a48, 0x10a4f, - 0x10a59, 0x11fff, + 0x10a59, 0x10a5f, + 0x10a80, 0x10aff, + 0x10b36, 0x10b38, + 0x10b56, 0x10b57, + 0x10b73, 0x10b77, + 0x10b80, 0x10bff, + 0x10c49, 0x10e5f, + 0x10e7f, 0x1107f, + 0x110c2, 0x11fff, 0x1236f, 0x123ff, 0x12463, 0x1246f, - 0x12474, 0x1cfff, + 0x12474, 0x12fff, + 0x1342f, 0x1cfff, 0x1d0f6, 0x1d0ff, 0x1d127, 0x1d128, 0x1d1de, 0x1d1ff, @@ -4742,444 +1046,7093 @@ static const OnigCodePoint CR_Cn[] = { 0x1d7cc, 0x1d7cd, 0x1d800, 0x1efff, 0x1f02c, 0x1f02f, - 0x1f094, 0x1ffff, - 0x20001, 0x2a6d5, - 0x2a6d7, 0x2f7ff, + 0x1f094, 0x1f0ff, + 0x1f10b, 0x1f10f, + 0x1f12f, 0x1f130, + 0x1f132, 0x1f13c, + 0x1f13e, 0x1f13e, + 0x1f140, 0x1f141, + 0x1f143, 0x1f145, + 0x1f147, 0x1f149, + 0x1f14f, 0x1f156, + 0x1f158, 0x1f15e, + 0x1f160, 0x1f178, + 0x1f17a, 0x1f17a, + 0x1f17d, 0x1f17e, + 0x1f180, 0x1f189, + 0x1f18e, 0x1f18f, + 0x1f191, 0x1f1ff, + 0x1f201, 0x1f20f, + 0x1f232, 0x1f23f, + 0x1f249, 0x1ffff, + 0x2a6d7, 0x2a6ff, + 0x2b735, 0x2f7ff, 0x2fa1e, 0xe0000, 0xe0002, 0xe001f, 0xe0080, 0xe00ff, 0xe01f0, 0xeffff, - 0xf0001, 0xffffc, 0xffffe, 0xfffff, - 0x100001, 0x10ffff, + 0x10fffe, 0x10ffff, }; /* CR_Cn */ -/* 'Co': General Category */ -static const OnigCodePoint CR_Co[] = { - 6, - 0xe000, 0xe000, - 0xf8ff, 0xf8ff, - 0xf0000, 0xf0000, - 0xffffd, 0xffffd, - 0x100000, 0x100000, - 0x10fffd, 0x10fffd, -}; /* CR_Co */ +/* 'Co': General Category */ +static const OnigCodePoint CR_Co[] = { + 3, + 0xe000, 0xf8ff, + 0xf0000, 0xffffd, + 0x100000, 0x10fffd, +}; /* CR_Co */ + +/* 'Cs': General Category */ +static const OnigCodePoint CR_Cs[] = { + 1, + 0xd800, 0xdfff, +}; /* CR_Cs */ + +/* 'L': Major Category */ +static const OnigCodePoint CR_L[] = { + 422, + 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, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0621, 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, + 0x0904, 0x0939, + 0x093d, 0x093d, + 0x0950, 0x0950, + 0x0958, 0x0961, + 0x0971, 0x0972, + 0x0979, 0x097f, + 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, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c3d, + 0x0c58, 0x0c59, + 0x0c60, 0x0c61, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbd, 0x0cbd, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce1, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d3d, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f40, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f88, 0x0f8b, + 0x1000, 0x102a, + 0x103f, 0x103f, + 0x1050, 0x1055, + 0x105a, 0x105d, + 0x1061, 0x1061, + 0x1065, 0x1066, + 0x106e, 0x1070, + 0x1075, 0x1081, + 0x108e, 0x108e, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, + 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, 0x191c, + 0x1950, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19c1, 0x19c7, + 0x1a00, 0x1a16, + 0x1a20, 0x1a54, + 0x1aa7, 0x1aa7, + 0x1b05, 0x1b33, + 0x1b45, 0x1b4b, + 0x1b83, 0x1ba0, + 0x1bae, 0x1baf, + 0x1c00, 0x1c23, + 0x1c4d, 0x1c4f, + 0x1c5a, 0x1c7d, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf1, + 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, 0x2094, + 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, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa61f, + 0xa62a, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa67f, 0xa697, + 0xa6a0, 0xa6e5, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 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, + 0xaa00, 0xaa28, + 0xaa40, 0xaa42, + 0xaa44, 0xaa4b, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaaaf, + 0xaab1, 0xaab1, + 0xaab5, 0xaab6, + 0xaab9, 0xaabd, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabe2, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0x1031e, + 0x10330, 0x10340, + 0x10342, 0x10349, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x10400, 0x1049d, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a00, + 0x10a10, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11083, 0x110af, + 0x12000, 0x1236e, + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_L */ + +/* 'Ll': General Category */ +static const OnigCodePoint CR_Ll[] = { + 599, + 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, 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, + 0x0561, 0x0587, + 0x1d00, 0x1d2b, + 0x1d62, 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, 0x2c7c, + 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, + 0x2d00, 0x2d25, + 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, + 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, + 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, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xff41, 0xff5a, + 0x10428, 0x1044f, + 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, +}; /* CR_Ll */ + +/* 'Lm': General Category */ +static const OnigCodePoint CR_Lm[] = { + 49, + 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, 0x1d61, + 0x1d78, 0x1d78, + 0x1d9b, 0x1dbf, + 0x2071, 0x2071, + 0x207f, 0x207f, + 0x2090, 0x2094, + 0x2c7d, 0x2c7d, + 0x2d6f, 0x2d6f, + 0x2e2f, 0x2e2f, + 0x3005, 0x3005, + 0x3031, 0x3035, + 0x303b, 0x303b, + 0x309d, 0x309e, + 0x30fc, 0x30fe, + 0xa015, 0xa015, + 0xa4f8, 0xa4fd, + 0xa60c, 0xa60c, + 0xa67f, 0xa67f, + 0xa717, 0xa71f, + 0xa770, 0xa770, + 0xa788, 0xa788, + 0xa9cf, 0xa9cf, + 0xaa70, 0xaa70, + 0xaadd, 0xaadd, + 0xff70, 0xff70, + 0xff9e, 0xff9f, +}; /* CR_Lm */ + +/* 'Lo': General Category */ +static const OnigCodePoint CR_Lo[] = { + 311, + 0x01bb, 0x01bb, + 0x01c0, 0x01c3, + 0x0294, 0x0294, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0621, 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, + 0x0904, 0x0939, + 0x093d, 0x093d, + 0x0950, 0x0950, + 0x0958, 0x0961, + 0x0972, 0x0972, + 0x0979, 0x097f, + 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, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c3d, + 0x0c58, 0x0c59, + 0x0c60, 0x0c61, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbd, 0x0cbd, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce1, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d3d, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f40, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f88, 0x0f8b, + 0x1000, 0x102a, + 0x103f, 0x103f, + 0x1050, 0x1055, + 0x105a, 0x105d, + 0x1061, 0x1061, + 0x1065, 0x1066, + 0x106e, 0x1070, + 0x1075, 0x1081, + 0x108e, 0x108e, + 0x10d0, 0x10fa, + 0x1100, 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, + 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, 0x191c, + 0x1950, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19c1, 0x19c7, + 0x1a00, 0x1a16, + 0x1a20, 0x1a54, + 0x1b05, 0x1b33, + 0x1b45, 0x1b4b, + 0x1b83, 0x1ba0, + 0x1bae, 0x1baf, + 0x1c00, 0x1c23, + 0x1c4d, 0x1c4f, + 0x1c5a, 0x1c77, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf1, + 0x2135, 0x2138, + 0x2d30, 0x2d65, + 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa014, + 0xa016, 0xa48c, + 0xa4d0, 0xa4f7, + 0xa500, 0xa60b, + 0xa610, 0xa61f, + 0xa62a, 0xa62b, + 0xa66e, 0xa66e, + 0xa6a0, 0xa6e5, + 0xa7fb, 0xa801, + 0xa803, 0xa805, + 0xa807, 0xa80a, + 0xa80c, 0xa822, + 0xa840, 0xa873, + 0xa882, 0xa8b3, + 0xa8f2, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa90a, 0xa925, + 0xa930, 0xa946, + 0xa960, 0xa97c, + 0xa984, 0xa9b2, + 0xaa00, 0xaa28, + 0xaa40, 0xaa42, + 0xaa44, 0xaa4b, + 0xaa60, 0xaa6f, + 0xaa71, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaaaf, + 0xaab1, 0xaab1, + 0xaab5, 0xaab6, + 0xaab9, 0xaabd, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadc, + 0xabc0, 0xabe2, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0x1031e, + 0x10330, 0x10340, + 0x10342, 0x10349, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x10450, 0x1049d, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a00, + 0x10a10, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11083, 0x110af, + 0x12000, 0x1236e, + 0x13000, 0x1342e, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Lo */ + +/* '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, +}; /* CR_Lt */ + +/* 'Lu': General Category */ +static const OnigCodePoint CR_Lu[] = { + 594, + 0x0041, 0x005a, + 0x00c0, 0x00d6, + 0x00d8, 0x00de, + 0x0100, 0x0100, + 0x0102, 0x0102, + 0x0104, 0x0104, + 0x0106, 0x0106, + 0x0108, 0x0108, + 0x010a, 0x010a, + 0x010c, 0x010c, + 0x010e, 0x010e, + 0x0110, 0x0110, + 0x0112, 0x0112, + 0x0114, 0x0114, + 0x0116, 0x0116, + 0x0118, 0x0118, + 0x011a, 0x011a, + 0x011c, 0x011c, + 0x011e, 0x011e, + 0x0120, 0x0120, + 0x0122, 0x0122, + 0x0124, 0x0124, + 0x0126, 0x0126, + 0x0128, 0x0128, + 0x012a, 0x012a, + 0x012c, 0x012c, + 0x012e, 0x012e, + 0x0130, 0x0130, + 0x0132, 0x0132, + 0x0134, 0x0134, + 0x0136, 0x0136, + 0x0139, 0x0139, + 0x013b, 0x013b, + 0x013d, 0x013d, + 0x013f, 0x013f, + 0x0141, 0x0141, + 0x0143, 0x0143, + 0x0145, 0x0145, + 0x0147, 0x0147, + 0x014a, 0x014a, + 0x014c, 0x014c, + 0x014e, 0x014e, + 0x0150, 0x0150, + 0x0152, 0x0152, + 0x0154, 0x0154, + 0x0156, 0x0156, + 0x0158, 0x0158, + 0x015a, 0x015a, + 0x015c, 0x015c, + 0x015e, 0x015e, + 0x0160, 0x0160, + 0x0162, 0x0162, + 0x0164, 0x0164, + 0x0166, 0x0166, + 0x0168, 0x0168, + 0x016a, 0x016a, + 0x016c, 0x016c, + 0x016e, 0x016e, + 0x0170, 0x0170, + 0x0172, 0x0172, + 0x0174, 0x0174, + 0x0176, 0x0176, + 0x0178, 0x0179, + 0x017b, 0x017b, + 0x017d, 0x017d, + 0x0181, 0x0182, + 0x0184, 0x0184, + 0x0186, 0x0187, + 0x0189, 0x018b, + 0x018e, 0x0191, + 0x0193, 0x0194, + 0x0196, 0x0198, + 0x019c, 0x019d, + 0x019f, 0x01a0, + 0x01a2, 0x01a2, + 0x01a4, 0x01a4, + 0x01a6, 0x01a7, + 0x01a9, 0x01a9, + 0x01ac, 0x01ac, + 0x01ae, 0x01af, + 0x01b1, 0x01b3, + 0x01b5, 0x01b5, + 0x01b7, 0x01b8, + 0x01bc, 0x01bc, + 0x01c4, 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, + 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, + 0x0531, 0x0556, + 0x10a0, 0x10c5, + 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, + 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, + 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, + 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, + 0xff21, 0xff3a, + 0x10400, 0x10427, + 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, +}; /* CR_Lu */ + +/* 'M': Major Category */ +static const OnigCodePoint CR_M[] = { + 188, + 0x0300, 0x036f, + 0x0483, 0x0489, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x0610, 0x061a, + 0x064b, 0x065e, + 0x0670, 0x0670, + 0x06d6, 0x06dc, + 0x06de, 0x06e4, + 0x06e7, 0x06e8, + 0x06ea, 0x06ed, + 0x0711, 0x0711, + 0x0730, 0x074a, + 0x07a6, 0x07b0, + 0x07eb, 0x07f3, + 0x0816, 0x0819, + 0x081b, 0x0823, + 0x0825, 0x0827, + 0x0829, 0x082d, + 0x0900, 0x0903, + 0x093c, 0x093c, + 0x093e, 0x094e, + 0x0951, 0x0955, + 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, + 0x0c01, 0x0c03, + 0x0c3e, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c62, 0x0c63, + 0x0c82, 0x0c83, + 0x0cbc, 0x0cbc, + 0x0cbe, 0x0cc4, + 0x0cc6, 0x0cc8, + 0x0cca, 0x0ccd, + 0x0cd5, 0x0cd6, + 0x0ce2, 0x0ce3, + 0x0d02, 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, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fc6, 0x0fc6, + 0x102b, 0x103e, + 0x1056, 0x1059, + 0x105e, 0x1060, + 0x1062, 0x1064, + 0x1067, 0x106d, + 0x1071, 0x1074, + 0x1082, 0x108d, + 0x108f, 0x108f, + 0x109a, 0x109d, + 0x135f, 0x135f, + 0x1712, 0x1714, + 0x1732, 0x1734, + 0x1752, 0x1753, + 0x1772, 0x1773, + 0x17b6, 0x17d3, + 0x17dd, 0x17dd, + 0x180b, 0x180d, + 0x18a9, 0x18a9, + 0x1920, 0x192b, + 0x1930, 0x193b, + 0x19b0, 0x19c0, + 0x19c8, 0x19c9, + 0x1a17, 0x1a1b, + 0x1a55, 0x1a5e, + 0x1a60, 0x1a7c, + 0x1a7f, 0x1a7f, + 0x1b00, 0x1b04, + 0x1b34, 0x1b44, + 0x1b6b, 0x1b73, + 0x1b80, 0x1b82, + 0x1ba1, 0x1baa, + 0x1c24, 0x1c37, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1ce8, + 0x1ced, 0x1ced, + 0x1cf2, 0x1cf2, + 0x1dc0, 0x1de6, + 0x1dfd, 0x1dff, + 0x20d0, 0x20f0, + 0x2cef, 0x2cf1, + 0x2de0, 0x2dff, + 0x302a, 0x302f, + 0x3099, 0x309a, + 0xa66f, 0xa672, + 0xa67c, 0xa67d, + 0xa6f0, 0xa6f1, + 0xa802, 0xa802, + 0xa806, 0xa806, + 0xa80b, 0xa80b, + 0xa823, 0xa827, + 0xa880, 0xa881, + 0xa8b4, 0xa8c4, + 0xa8e0, 0xa8f1, + 0xa926, 0xa92d, + 0xa947, 0xa953, + 0xa980, 0xa983, + 0xa9b3, 0xa9c0, + 0xaa29, 0xaa36, + 0xaa43, 0xaa43, + 0xaa4c, 0xaa4d, + 0xaa7b, 0xaa7b, + 0xaab0, 0xaab0, + 0xaab2, 0xaab4, + 0xaab7, 0xaab8, + 0xaabe, 0xaabf, + 0xaac1, 0xaac1, + 0xabe3, 0xabea, + 0xabec, 0xabed, + 0xfb1e, 0xfb1e, + 0xfe00, 0xfe0f, + 0xfe20, 0xfe26, + 0x101fd, 0x101fd, + 0x10a01, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a0f, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x11080, 0x11082, + 0x110b0, 0x110ba, + 0x1d165, 0x1d169, + 0x1d16d, 0x1d172, + 0x1d17b, 0x1d182, + 0x1d185, 0x1d18b, + 0x1d1aa, 0x1d1ad, + 0x1d242, 0x1d244, + 0xe0100, 0xe01ef, +}; /* CR_M */ + +/* 'Mc': General Category */ +static const OnigCodePoint CR_Mc[] = { + 106, + 0x0903, 0x0903, + 0x093e, 0x0940, + 0x0949, 0x094c, + 0x094e, 0x094e, + 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, 0x1a1b, + 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, + 0x1c24, 0x1c2b, + 0x1c34, 0x1c35, + 0x1ce1, 0x1ce1, + 0x1cf2, 0x1cf2, + 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, + 0xabe3, 0xabe4, + 0xabe6, 0xabe7, + 0xabe9, 0xabea, + 0xabec, 0xabec, + 0x11082, 0x11082, + 0x110b0, 0x110b2, + 0x110b7, 0x110b8, + 0x1d165, 0x1d166, + 0x1d16d, 0x1d172, +}; /* CR_Mc */ + +/* 'Me': General Category */ +static const OnigCodePoint CR_Me[] = { + 5, + 0x0488, 0x0489, + 0x06de, 0x06de, + 0x20dd, 0x20e0, + 0x20e2, 0x20e4, + 0xa670, 0xa672, +}; /* CR_Me */ + +/* 'Mn': General Category */ +static const OnigCodePoint CR_Mn[] = { + 194, + 0x0300, 0x036f, + 0x0483, 0x0487, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x0610, 0x061a, + 0x064b, 0x065e, + 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, + 0x0900, 0x0902, + 0x093c, 0x093c, + 0x0941, 0x0948, + 0x094d, 0x094d, + 0x0951, 0x0955, + 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, + 0x0c3e, 0x0c40, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c62, 0x0c63, + 0x0cbc, 0x0cbc, + 0x0cbf, 0x0cbf, + 0x0cc6, 0x0cc6, + 0x0ccc, 0x0ccd, + 0x0ce2, 0x0ce3, + 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, + 0x0f90, 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, + 0x135f, 0x135f, + 0x1712, 0x1714, + 0x1732, 0x1734, + 0x1752, 0x1753, + 0x1772, 0x1773, + 0x17b7, 0x17bd, + 0x17c6, 0x17c6, + 0x17c9, 0x17d3, + 0x17dd, 0x17dd, + 0x180b, 0x180d, + 0x18a9, 0x18a9, + 0x1920, 0x1922, + 0x1927, 0x1928, + 0x1932, 0x1932, + 0x1939, 0x193b, + 0x1a17, 0x1a18, + 0x1a56, 0x1a56, + 0x1a58, 0x1a5e, + 0x1a60, 0x1a60, + 0x1a62, 0x1a62, + 0x1a65, 0x1a6c, + 0x1a73, 0x1a7c, + 0x1a7f, 0x1a7f, + 0x1b00, 0x1b03, + 0x1b34, 0x1b34, + 0x1b36, 0x1b3a, + 0x1b3c, 0x1b3c, + 0x1b42, 0x1b42, + 0x1b6b, 0x1b73, + 0x1b80, 0x1b81, + 0x1ba2, 0x1ba5, + 0x1ba8, 0x1ba9, + 0x1c2c, 0x1c33, + 0x1c36, 0x1c37, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1ce0, + 0x1ce2, 0x1ce8, + 0x1ced, 0x1ced, + 0x1dc0, 0x1de6, + 0x1dfd, 0x1dff, + 0x20d0, 0x20dc, + 0x20e1, 0x20e1, + 0x20e5, 0x20f0, + 0x2cef, 0x2cf1, + 0x2de0, 0x2dff, + 0x302a, 0x302f, + 0x3099, 0x309a, + 0xa66f, 0xa66f, + 0xa67c, 0xa67d, + 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, + 0xaa29, 0xaa2e, + 0xaa31, 0xaa32, + 0xaa35, 0xaa36, + 0xaa43, 0xaa43, + 0xaa4c, 0xaa4c, + 0xaab0, 0xaab0, + 0xaab2, 0xaab4, + 0xaab7, 0xaab8, + 0xaabe, 0xaabf, + 0xaac1, 0xaac1, + 0xabe5, 0xabe5, + 0xabe8, 0xabe8, + 0xabed, 0xabed, + 0xfb1e, 0xfb1e, + 0xfe00, 0xfe0f, + 0xfe20, 0xfe26, + 0x101fd, 0x101fd, + 0x10a01, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a0f, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x11080, 0x11081, + 0x110b3, 0x110b6, + 0x110b9, 0x110ba, + 0x1d167, 0x1d169, + 0x1d17b, 0x1d182, + 0x1d185, 0x1d18b, + 0x1d1aa, 0x1d1ad, + 0x1d242, 0x1d244, + 0xe0100, 0xe01ef, +}; /* CR_Mn */ + +/* 'N': Major Category */ +static const OnigCodePoint CR_N[] = { + 81, + 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, + 0x0be6, 0x0bf2, + 0x0c66, 0x0c6f, + 0x0c78, 0x0c7e, + 0x0ce6, 0x0cef, + 0x0d66, 0x0d75, + 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, + 0x3251, 0x325f, + 0x3280, 0x3289, + 0x32b1, 0x32bf, + 0xa620, 0xa629, + 0xa6e6, 0xa6ef, + 0xa830, 0xa835, + 0xa8d0, 0xa8d9, + 0xa900, 0xa909, + 0xa9d0, 0xa9d9, + 0xaa50, 0xaa59, + 0xabf0, 0xabf9, + 0xff10, 0xff19, + 0x10107, 0x10133, + 0x10140, 0x10178, + 0x1018a, 0x1018a, + 0x10320, 0x10323, + 0x10341, 0x10341, + 0x1034a, 0x1034a, + 0x103d1, 0x103d5, + 0x104a0, 0x104a9, + 0x10858, 0x1085f, + 0x10916, 0x1091b, + 0x10a40, 0x10a47, + 0x10a7d, 0x10a7e, + 0x10b58, 0x10b5f, + 0x10b78, 0x10b7f, + 0x10e60, 0x10e7e, + 0x12400, 0x12462, + 0x1d360, 0x1d371, + 0x1d7ce, 0x1d7ff, + 0x1f100, 0x1f10a, +}; /* CR_N */ + +/* 'Nd': General Category */ +static const OnigCodePoint CR_Nd[] = { + 37, + 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, + 0x0e50, 0x0e59, + 0x0ed0, 0x0ed9, + 0x0f20, 0x0f29, + 0x1040, 0x1049, + 0x1090, 0x1099, + 0x17e0, 0x17e9, + 0x1810, 0x1819, + 0x1946, 0x194f, + 0x19d0, 0x19da, + 0x1a80, 0x1a89, + 0x1a90, 0x1a99, + 0x1b50, 0x1b59, + 0x1bb0, 0x1bb9, + 0x1c40, 0x1c49, + 0x1c50, 0x1c59, + 0xa620, 0xa629, + 0xa8d0, 0xa8d9, + 0xa900, 0xa909, + 0xa9d0, 0xa9d9, + 0xaa50, 0xaa59, + 0xabf0, 0xabf9, + 0xff10, 0xff19, + 0x104a0, 0x104a9, + 0x1d7ce, 0x1d7ff, +}; /* CR_Nd */ + +/* '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, 0x12462, +}; /* CR_Nl */ + +/* 'No': General Category */ +static const OnigCodePoint CR_No[] = { + 38, + 0x00b2, 0x00b3, + 0x00b9, 0x00b9, + 0x00bc, 0x00be, + 0x09f4, 0x09f9, + 0x0bf0, 0x0bf2, + 0x0c78, 0x0c7e, + 0x0d70, 0x0d75, + 0x0f2a, 0x0f33, + 0x1369, 0x137c, + 0x17f0, 0x17f9, + 0x2070, 0x2070, + 0x2074, 0x2079, + 0x2080, 0x2089, + 0x2150, 0x215f, + 0x2189, 0x2189, + 0x2460, 0x249b, + 0x24ea, 0x24ff, + 0x2776, 0x2793, + 0x2cfd, 0x2cfd, + 0x3192, 0x3195, + 0x3220, 0x3229, + 0x3251, 0x325f, + 0x3280, 0x3289, + 0x32b1, 0x32bf, + 0xa830, 0xa835, + 0x10107, 0x10133, + 0x10175, 0x10178, + 0x1018a, 0x1018a, + 0x10320, 0x10323, + 0x10858, 0x1085f, + 0x10916, 0x1091b, + 0x10a40, 0x10a47, + 0x10a7d, 0x10a7e, + 0x10b58, 0x10b5f, + 0x10b78, 0x10b7f, + 0x10e60, 0x10e7e, + 0x1d360, 0x1d371, + 0x1f100, 0x1f10a, +}; /* CR_No */ + +/* 'P': Major Category */ +static const OnigCodePoint CR_P[] = { + 129, + 0x0021, 0x0023, + 0x0025, 0x002a, + 0x002c, 0x002f, + 0x003a, 0x003b, + 0x003f, 0x0040, + 0x005b, 0x005d, + 0x005f, 0x005f, + 0x007b, 0x007b, + 0x007d, 0x007d, + 0x00a1, 0x00a1, + 0x00ab, 0x00ab, + 0x00b7, 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, + 0x0964, 0x0965, + 0x0970, 0x0970, + 0x0df4, 0x0df4, + 0x0e4f, 0x0e4f, + 0x0e5a, 0x0e5b, + 0x0f04, 0x0f12, + 0x0f3a, 0x0f3d, + 0x0f85, 0x0f85, + 0x0fd0, 0x0fd4, + 0x104a, 0x104f, + 0x10fb, 0x10fb, + 0x1361, 0x1368, + 0x1400, 0x1400, + 0x166d, 0x166e, + 0x169b, 0x169c, + 0x16eb, 0x16ed, + 0x1735, 0x1736, + 0x17d4, 0x17d6, + 0x17d8, 0x17da, + 0x1800, 0x180a, + 0x1944, 0x1945, + 0x19de, 0x19df, + 0x1a1e, 0x1a1f, + 0x1aa0, 0x1aa6, + 0x1aa8, 0x1aad, + 0x1b5a, 0x1b60, + 0x1c3b, 0x1c3f, + 0x1c7e, 0x1c7f, + 0x1cd3, 0x1cd3, + 0x2010, 0x2027, + 0x2030, 0x2043, + 0x2045, 0x2051, + 0x2053, 0x205e, + 0x207d, 0x207e, + 0x208d, 0x208e, + 0x2329, 0x232a, + 0x2768, 0x2775, + 0x27c5, 0x27c6, + 0x27e6, 0x27ef, + 0x2983, 0x2998, + 0x29d8, 0x29db, + 0x29fc, 0x29fd, + 0x2cf9, 0x2cfc, + 0x2cfe, 0x2cff, + 0x2e00, 0x2e2e, + 0x2e30, 0x2e31, + 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, + 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, 0x10101, + 0x1039f, 0x1039f, + 0x103d0, 0x103d0, + 0x10857, 0x10857, + 0x1091f, 0x1091f, + 0x1093f, 0x1093f, + 0x10a50, 0x10a58, + 0x10a7f, 0x10a7f, + 0x10b39, 0x10b3f, + 0x110bb, 0x110bc, + 0x110be, 0x110c1, + 0x12470, 0x12473, +}; /* CR_P */ + +/* 'Pc': General Category */ +static const OnigCodePoint CR_Pc[] = { + 6, + 0x005f, 0x005f, + 0x203f, 0x2040, + 0x2054, 0x2054, + 0xfe33, 0xfe34, + 0xfe4d, 0xfe4f, + 0xff3f, 0xff3f, +}; /* CR_Pc */ + +/* 'Pd': General Category */ +static const OnigCodePoint CR_Pd[] = { + 15, + 0x002d, 0x002d, + 0x058a, 0x058a, + 0x05be, 0x05be, + 0x1400, 0x1400, + 0x1806, 0x1806, + 0x2010, 0x2015, + 0x2e17, 0x2e17, + 0x2e1a, 0x2e1a, + 0x301c, 0x301c, + 0x3030, 0x3030, + 0x30a0, 0x30a0, + 0xfe31, 0xfe32, + 0xfe58, 0xfe58, + 0xfe63, 0xfe63, + 0xff0d, 0xff0d, +}; /* CR_Pd */ + +/* 'Pe': General Category */ +static const OnigCodePoint CR_Pe[] = { + 70, + 0x0029, 0x0029, + 0x005d, 0x005d, + 0x007d, 0x007d, + 0x0f3b, 0x0f3b, + 0x0f3d, 0x0f3d, + 0x169c, 0x169c, + 0x2046, 0x2046, + 0x207e, 0x207e, + 0x208e, 0x208e, + 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, + 0xfd3f, 0xfd3f, + 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, +}; /* CR_Pe */ + +/* '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, +}; /* CR_Pf */ + +/* '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, +}; /* CR_Pi */ + +/* 'Po': General Category */ +static const OnigCodePoint CR_Po[] = { + 124, + 0x0021, 0x0023, + 0x0025, 0x0027, + 0x002a, 0x002a, + 0x002c, 0x002c, + 0x002e, 0x002f, + 0x003a, 0x003b, + 0x003f, 0x0040, + 0x005c, 0x005c, + 0x00a1, 0x00a1, + 0x00b7, 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, + 0x0964, 0x0965, + 0x0970, 0x0970, + 0x0df4, 0x0df4, + 0x0e4f, 0x0e4f, + 0x0e5a, 0x0e5b, + 0x0f04, 0x0f12, + 0x0f85, 0x0f85, + 0x0fd0, 0x0fd4, + 0x104a, 0x104f, + 0x10fb, 0x10fb, + 0x1361, 0x1368, + 0x166d, 0x166e, + 0x16eb, 0x16ed, + 0x1735, 0x1736, + 0x17d4, 0x17d6, + 0x17d8, 0x17da, + 0x1800, 0x1805, + 0x1807, 0x180a, + 0x1944, 0x1945, + 0x19de, 0x19df, + 0x1a1e, 0x1a1f, + 0x1aa0, 0x1aa6, + 0x1aa8, 0x1aad, + 0x1b5a, 0x1b60, + 0x1c3b, 0x1c3f, + 0x1c7e, 0x1c7f, + 0x1cd3, 0x1cd3, + 0x2016, 0x2017, + 0x2020, 0x2027, + 0x2030, 0x2038, + 0x203b, 0x203e, + 0x2041, 0x2043, + 0x2047, 0x2051, + 0x2053, 0x2053, + 0x2055, 0x205e, + 0x2cf9, 0x2cfc, + 0x2cfe, 0x2cff, + 0x2e00, 0x2e01, + 0x2e06, 0x2e08, + 0x2e0b, 0x2e0b, + 0x2e0e, 0x2e16, + 0x2e18, 0x2e19, + 0x2e1b, 0x2e1b, + 0x2e1e, 0x2e1f, + 0x2e2a, 0x2e2e, + 0x2e30, 0x2e31, + 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, + 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, 0x10101, + 0x1039f, 0x1039f, + 0x103d0, 0x103d0, + 0x10857, 0x10857, + 0x1091f, 0x1091f, + 0x1093f, 0x1093f, + 0x10a50, 0x10a58, + 0x10a7f, 0x10a7f, + 0x10b39, 0x10b3f, + 0x110bb, 0x110bc, + 0x110be, 0x110c1, + 0x12470, 0x12473, +}; /* CR_Po */ + +/* 'Ps': General Category */ +static const OnigCodePoint CR_Ps[] = { + 72, + 0x0028, 0x0028, + 0x005b, 0x005b, + 0x007b, 0x007b, + 0x0f3a, 0x0f3a, + 0x0f3c, 0x0f3c, + 0x169b, 0x169b, + 0x201a, 0x201a, + 0x201e, 0x201e, + 0x2045, 0x2045, + 0x207d, 0x207d, + 0x208d, 0x208d, + 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, + 0x3008, 0x3008, + 0x300a, 0x300a, + 0x300c, 0x300c, + 0x300e, 0x300e, + 0x3010, 0x3010, + 0x3014, 0x3014, + 0x3016, 0x3016, + 0x3018, 0x3018, + 0x301a, 0x301a, + 0x301d, 0x301d, + 0xfd3e, 0xfd3e, + 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, +}; /* CR_Ps */ + +/* 'S': Major Category */ +static const OnigCodePoint CR_S[] = { + 198, + 0x0024, 0x0024, + 0x002b, 0x002b, + 0x003c, 0x003e, + 0x005e, 0x005e, + 0x0060, 0x0060, + 0x007c, 0x007c, + 0x007e, 0x007e, + 0x00a2, 0x00a9, + 0x00ac, 0x00ac, + 0x00ae, 0x00b1, + 0x00b4, 0x00b4, + 0x00b6, 0x00b6, + 0x00b8, 0x00b8, + 0x00d7, 0x00d7, + 0x00f7, 0x00f7, + 0x02c2, 0x02c5, + 0x02d2, 0x02df, + 0x02e5, 0x02eb, + 0x02ed, 0x02ed, + 0x02ef, 0x02ff, + 0x0375, 0x0375, + 0x0384, 0x0385, + 0x03f6, 0x03f6, + 0x0482, 0x0482, + 0x0606, 0x0608, + 0x060b, 0x060b, + 0x060e, 0x060f, + 0x06e9, 0x06e9, + 0x06fd, 0x06fe, + 0x07f6, 0x07f6, + 0x09f2, 0x09f3, + 0x09fa, 0x09fb, + 0x0af1, 0x0af1, + 0x0b70, 0x0b70, + 0x0bf3, 0x0bfa, + 0x0c7f, 0x0c7f, + 0x0cf1, 0x0cf2, + 0x0d79, 0x0d79, + 0x0e3f, 0x0e3f, + 0x0f01, 0x0f03, + 0x0f13, 0x0f17, + 0x0f1a, 0x0f1f, + 0x0f34, 0x0f34, + 0x0f36, 0x0f36, + 0x0f38, 0x0f38, + 0x0fbe, 0x0fc5, + 0x0fc7, 0x0fcc, + 0x0fce, 0x0fcf, + 0x0fd5, 0x0fd8, + 0x109e, 0x109f, + 0x1360, 0x1360, + 0x1390, 0x1399, + 0x17db, 0x17db, + 0x1940, 0x1940, + 0x19e0, 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, 0x20b8, + 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, 0x2328, + 0x232b, 0x23e8, + 0x2400, 0x2426, + 0x2440, 0x244a, + 0x249c, 0x24e9, + 0x2500, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, + 0x2701, 0x2704, + 0x2706, 0x2709, + 0x270c, 0x2727, + 0x2729, 0x274b, + 0x274d, 0x274d, + 0x274f, 0x2752, + 0x2756, 0x275e, + 0x2761, 0x2767, + 0x2794, 0x2794, + 0x2798, 0x27af, + 0x27b1, 0x27be, + 0x27c0, 0x27c4, + 0x27c7, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 0x27e5, + 0x27f0, 0x2982, + 0x2999, 0x29d7, + 0x29dc, 0x29fb, + 0x29fe, 0x2b4c, + 0x2b50, 0x2b59, + 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, 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, + 0xfb29, 0xfb29, + 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, + 0x10102, 0x10102, + 0x10137, 0x1013f, + 0x10179, 0x10189, + 0x10190, 0x1019b, + 0x101d0, 0x101fc, + 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, + 0x1f000, 0x1f02b, + 0x1f030, 0x1f093, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, +}; /* CR_S */ + +/* 'Sc': General Category */ +static const OnigCodePoint CR_Sc[] = { + 16, + 0x0024, 0x0024, + 0x00a2, 0x00a5, + 0x060b, 0x060b, + 0x09f2, 0x09f3, + 0x09fb, 0x09fb, + 0x0af1, 0x0af1, + 0x0bf9, 0x0bf9, + 0x0e3f, 0x0e3f, + 0x17db, 0x17db, + 0x20a0, 0x20b8, + 0xa838, 0xa838, + 0xfdfc, 0xfdfc, + 0xfe69, 0xfe69, + 0xff04, 0xff04, + 0xffe0, 0xffe1, + 0xffe5, 0xffe6, +}; /* CR_Sc */ + +/* 'Sk': General Category */ +static const OnigCodePoint CR_Sk[] = { + 26, + 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, + 0xff3e, 0xff3e, + 0xff40, 0xff40, + 0xffe3, 0xffe3, +}; /* CR_Sk */ + +/* 'Sm': General Category */ +static const OnigCodePoint CR_Sm[] = { + 65, + 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, + 0x2140, 0x2144, + 0x214b, 0x214b, + 0x2190, 0x2194, + 0x219a, 0x219b, + 0x21a0, 0x21a0, + 0x21a3, 0x21a3, + 0x21a6, 0x21a6, + 0x21ae, 0x21ae, + 0x21ce, 0x21cf, + 0x21d2, 0x21d2, + 0x21d4, 0x21d4, + 0x21f4, 0x22ff, + 0x2308, 0x230b, + 0x2320, 0x2321, + 0x237c, 0x237c, + 0x239b, 0x23b3, + 0x23dc, 0x23e1, + 0x25b7, 0x25b7, + 0x25c1, 0x25c1, + 0x25f8, 0x25ff, + 0x266f, 0x266f, + 0x27c0, 0x27c4, + 0x27c7, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 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, +}; /* CR_Sm */ + +/* 'So': General Category */ +static const OnigCodePoint CR_So[] = { + 154, + 0x00a6, 0x00a7, + 0x00a9, 0x00a9, + 0x00ae, 0x00ae, + 0x00b0, 0x00b0, + 0x00b6, 0x00b6, + 0x0482, 0x0482, + 0x060e, 0x060f, + 0x06e9, 0x06e9, + 0x06fd, 0x06fe, + 0x07f6, 0x07f6, + 0x09fa, 0x09fa, + 0x0b70, 0x0b70, + 0x0bf3, 0x0bf8, + 0x0bfa, 0x0bfa, + 0x0c7f, 0x0c7f, + 0x0cf1, 0x0cf2, + 0x0d79, 0x0d79, + 0x0f01, 0x0f03, + 0x0f13, 0x0f17, + 0x0f1a, 0x0f1f, + 0x0f34, 0x0f34, + 0x0f36, 0x0f36, + 0x0f38, 0x0f38, + 0x0fbe, 0x0fc5, + 0x0fc7, 0x0fcc, + 0x0fce, 0x0fcf, + 0x0fd5, 0x0fd8, + 0x109e, 0x109f, + 0x1360, 0x1360, + 0x1390, 0x1399, + 0x1940, 0x1940, + 0x19e0, 0x19ff, + 0x1b61, 0x1b6a, + 0x1b74, 0x1b7c, + 0x2100, 0x2101, + 0x2103, 0x2106, + 0x2108, 0x2109, + 0x2114, 0x2114, + 0x2116, 0x2118, + 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, 0x23e8, + 0x2400, 0x2426, + 0x2440, 0x244a, + 0x249c, 0x24e9, + 0x2500, 0x25b6, + 0x25b8, 0x25c0, + 0x25c2, 0x25f7, + 0x2600, 0x266e, + 0x2670, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, + 0x2701, 0x2704, + 0x2706, 0x2709, + 0x270c, 0x2727, + 0x2729, 0x274b, + 0x274d, 0x274d, + 0x274f, 0x2752, + 0x2756, 0x275e, + 0x2761, 0x2767, + 0x2794, 0x2794, + 0x2798, 0x27af, + 0x27b1, 0x27be, + 0x2800, 0x28ff, + 0x2b00, 0x2b2f, + 0x2b45, 0x2b46, + 0x2b50, 0x2b59, + 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, 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, + 0x10102, 0x10102, + 0x10137, 0x1013f, + 0x10179, 0x10189, + 0x10190, 0x1019b, + 0x101d0, 0x101fc, + 0x1d000, 0x1d0f5, + 0x1d100, 0x1d126, + 0x1d129, 0x1d164, + 0x1d16a, 0x1d16c, + 0x1d183, 0x1d184, + 0x1d18c, 0x1d1a9, + 0x1d1ae, 0x1d1dd, + 0x1d200, 0x1d241, + 0x1d245, 0x1d245, + 0x1d300, 0x1d356, + 0x1f000, 0x1f02b, + 0x1f030, 0x1f093, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, +}; /* CR_So */ + +/* 'Z': Major Category */ +static const OnigCodePoint CR_Z[] = { + 9, + 0x0020, 0x0020, + 0x00a0, 0x00a0, + 0x1680, 0x1680, + 0x180e, 0x180e, + 0x2000, 0x200a, + 0x2028, 0x2029, + 0x202f, 0x202f, + 0x205f, 0x205f, + 0x3000, 0x3000, +}; /* CR_Z */ + +/* 'Zl': General Category */ +static const OnigCodePoint CR_Zl[] = { + 1, + 0x2028, 0x2028, +}; /* CR_Zl */ + +/* 'Zp': General Category */ +static const OnigCodePoint CR_Zp[] = { + 1, + 0x2029, 0x2029, +}; /* CR_Zp */ + +/* 'Zs': General Category */ +static const OnigCodePoint CR_Zs[] = { + 8, + 0x0020, 0x0020, + 0x00a0, 0x00a0, + 0x1680, 0x1680, + 0x180e, 0x180e, + 0x2000, 0x200a, + 0x202f, 0x202f, + 0x205f, 0x205f, + 0x3000, 0x3000, +}; /* CR_Zs */ + +/* 'Math': Derived Property */ +static const OnigCodePoint CR_Math[] = { + 105, + 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, + 0x210a, 0x2113, + 0x2115, 0x2115, + 0x2119, 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, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 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, +}; /* CR_Math */ + +/* 'Alphabetic': Derived Property */ +static const OnigCodePoint CR_Alphabetic[] = { + 474, + 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, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x05b0, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0610, 0x061a, + 0x0621, 0x0657, + 0x0659, 0x065e, + 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, + 0x0900, 0x0939, + 0x093d, 0x094c, + 0x094e, 0x094e, + 0x0950, 0x0950, + 0x0955, 0x0955, + 0x0958, 0x0963, + 0x0971, 0x0972, + 0x0979, 0x097f, + 0x0981, 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, + 0x0c01, 0x0c03, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4c, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c82, 0x0c83, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbd, 0x0cc4, + 0x0cc6, 0x0cc8, + 0x0cca, 0x0ccc, + 0x0cd5, 0x0cd6, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce3, + 0x0d02, 0x0d03, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4c, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f40, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f81, + 0x0f88, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x1000, 0x1036, + 0x1038, 0x1038, + 0x103b, 0x103f, + 0x1050, 0x1062, + 0x1065, 0x1068, + 0x106e, 0x1086, + 0x108e, 0x108e, + 0x109c, 0x109d, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, 0x16f0, + 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, 0x191c, + 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, + 0x1bae, 0x1baf, + 0x1c00, 0x1c35, + 0x1c4d, 0x1c4f, + 0x1c5a, 0x1c7d, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf2, + 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, 0x2094, + 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, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa61f, + 0xa62a, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa67f, 0xa697, + 0xa6a0, 0xa6ef, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 0xa801, + 0xa803, 0xa805, + 0xa807, 0xa80a, + 0xa80c, 0xa827, + 0xa840, 0xa873, + 0xa880, 0xa8c3, + 0xa8f2, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa90a, 0xa92a, + 0xa930, 0xa952, + 0xa960, 0xa97c, + 0xa980, 0xa9bf, + 0xa9cf, 0xa9cf, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaabe, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabea, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0x1031e, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11082, 0x110b8, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Alphabetic */ + +/* 'Lowercase': Derived Property */ +static const OnigCodePoint CR_Lowercase[] = { + 602, + 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, + 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, + 0x2090, 0x2094, + 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, + 0x2d00, 0x2d25, + 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, + 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, + 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, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xff41, 0xff5a, + 0x10428, 0x1044f, + 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, +}; /* CR_Lowercase */ + +/* 'Uppercase': Derived Property */ +static const OnigCodePoint CR_Uppercase[] = { + 596, + 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, + 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, + 0x0531, 0x0556, + 0x10a0, 0x10c5, + 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, + 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, + 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, + 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, + 0xff21, 0xff3a, + 0x10400, 0x10427, + 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, +}; /* CR_Uppercase */ + +/* 'Cased': Derived Property */ +static const OnigCodePoint CR_Cased[] = { + 110, + 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, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0561, 0x0587, + 0x10a0, 0x10c5, + 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, + 0x2090, 0x2094, + 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, + 0x2d00, 0x2d25, + 0xa640, 0xa65f, + 0xa662, 0xa66d, + 0xa680, 0xa697, + 0xa722, 0xa787, + 0xa78b, 0xa78c, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xff21, 0xff3a, + 0xff41, 0xff5a, + 0x10400, 0x1044f, + 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, +}; /* CR_Cased */ + +/* 'Case_Ignorable': Derived Property */ +static const OnigCodePoint CR_Case_Ignorable[] = { + 266, + 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, 0x0603, + 0x0610, 0x061a, + 0x0640, 0x0640, + 0x064b, 0x065e, + 0x0670, 0x0670, + 0x06d6, 0x06e8, + 0x06ea, 0x06ed, + 0x070f, 0x070f, + 0x0711, 0x0711, + 0x0730, 0x074a, + 0x07a6, 0x07b0, + 0x07eb, 0x07f5, + 0x07fa, 0x07fa, + 0x0816, 0x082d, + 0x0900, 0x0902, + 0x093c, 0x093c, + 0x0941, 0x0948, + 0x094d, 0x094d, + 0x0951, 0x0955, + 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, + 0x0c3e, 0x0c40, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c62, 0x0c63, + 0x0cbc, 0x0cbc, + 0x0cbf, 0x0cbf, + 0x0cc6, 0x0cc6, + 0x0ccc, 0x0ccd, + 0x0ce2, 0x0ce3, + 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, + 0x0f90, 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, + 0x135f, 0x135f, + 0x1712, 0x1714, + 0x1732, 0x1734, + 0x1752, 0x1753, + 0x1772, 0x1773, + 0x17b4, 0x17b5, + 0x17b7, 0x17bd, + 0x17c6, 0x17c6, + 0x17c9, 0x17d3, + 0x17d7, 0x17d7, + 0x17dd, 0x17dd, + 0x180b, 0x180d, + 0x1843, 0x1843, + 0x18a9, 0x18a9, + 0x1920, 0x1922, + 0x1927, 0x1928, + 0x1932, 0x1932, + 0x1939, 0x193b, + 0x1a17, 0x1a18, + 0x1a56, 0x1a56, + 0x1a58, 0x1a5e, + 0x1a60, 0x1a60, + 0x1a62, 0x1a62, + 0x1a65, 0x1a6c, + 0x1a73, 0x1a7c, + 0x1a7f, 0x1a7f, + 0x1aa7, 0x1aa7, + 0x1b00, 0x1b03, + 0x1b34, 0x1b34, + 0x1b36, 0x1b3a, + 0x1b3c, 0x1b3c, + 0x1b42, 0x1b42, + 0x1b6b, 0x1b73, + 0x1b80, 0x1b81, + 0x1ba2, 0x1ba5, + 0x1ba8, 0x1ba9, + 0x1c2c, 0x1c33, + 0x1c36, 0x1c37, + 0x1c78, 0x1c7d, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1ce0, + 0x1ce2, 0x1ce8, + 0x1ced, 0x1ced, + 0x1d2c, 0x1d61, + 0x1d78, 0x1d78, + 0x1d9b, 0x1de6, + 0x1dfd, 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, + 0x206a, 0x206f, + 0x2071, 0x2071, + 0x207f, 0x207f, + 0x2090, 0x2094, + 0x20d0, 0x20f0, + 0x2c7d, 0x2c7d, + 0x2cef, 0x2cf1, + 0x2d6f, 0x2d6f, + 0x2de0, 0x2dff, + 0x2e2f, 0x2e2f, + 0x3005, 0x3005, + 0x302a, 0x302f, + 0x3031, 0x3035, + 0x303b, 0x303b, + 0x3099, 0x309e, + 0x30fc, 0x30fe, + 0xa015, 0xa015, + 0xa4f8, 0xa4fd, + 0xa60c, 0xa60c, + 0xa66f, 0xa672, + 0xa67c, 0xa67d, + 0xa67f, 0xa67f, + 0xa6f0, 0xa6f1, + 0xa700, 0xa721, + 0xa770, 0xa770, + 0xa788, 0xa78a, + 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, + 0xaa29, 0xaa2e, + 0xaa31, 0xaa32, + 0xaa35, 0xaa36, + 0xaa43, 0xaa43, + 0xaa4c, 0xaa4c, + 0xaa70, 0xaa70, + 0xaab0, 0xaab0, + 0xaab2, 0xaab4, + 0xaab7, 0xaab8, + 0xaabe, 0xaabf, + 0xaac1, 0xaac1, + 0xaadd, 0xaadd, + 0xabe5, 0xabe5, + 0xabe8, 0xabe8, + 0xabed, 0xabed, + 0xfb1e, 0xfb1e, + 0xfe00, 0xfe0f, + 0xfe13, 0xfe13, + 0xfe20, 0xfe26, + 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, + 0x10a01, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a0f, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x11080, 0x11081, + 0x110b3, 0x110b6, + 0x110b9, 0x110ba, + 0x110bd, 0x110bd, + 0x1d167, 0x1d169, + 0x1d173, 0x1d182, + 0x1d185, 0x1d18b, + 0x1d1aa, 0x1d1ad, + 0x1d242, 0x1d244, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, + 0xe0100, 0xe01ef, +}; /* CR_Case_Ignorable */ -/* 'Cs': General Category */ -static const OnigCodePoint CR_Cs[] = { - 4, - 0xd800, 0xd800, - 0xdb7f, 0xdb80, - 0xdbff, 0xdc00, - 0xdfff, 0xdfff, -}; /* CR_Cs */ +/* 'Changes_When_Lowercased': Derived Property */ +static const OnigCodePoint CR_Changes_When_Lowercased[] = { + 557, + 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, + 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, + 0x0531, 0x0556, + 0x10a0, 0x10c5, + 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, + 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, + 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, + 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, + 0xff21, 0xff3a, + 0x10400, 0x10427, +}; /* CR_Changes_When_Lowercased */ -/* 'L': Major Category */ -static const OnigCodePoint CR_L[] = { - 394, - 0x0041, 0x005a, +/* 'Changes_When_Uppercased': Derived Property */ +static const OnigCodePoint CR_Changes_When_Uppercased[] = { + 573, 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, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x048a, 0x0523, - 0x0531, 0x0556, - 0x0559, 0x0559, + 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, 0x025b, + 0x0260, 0x0260, + 0x0263, 0x0263, + 0x0268, 0x0269, + 0x026b, 0x026b, + 0x026f, 0x026f, + 0x0271, 0x0272, + 0x0275, 0x0275, + 0x027d, 0x027d, + 0x0280, 0x0280, + 0x0283, 0x0283, + 0x0288, 0x028c, + 0x0292, 0x0292, + 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, 0x03f2, + 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, 0x0561, 0x0587, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0621, 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, - 0x0904, 0x0939, - 0x093d, 0x093d, - 0x0950, 0x0950, - 0x0958, 0x0961, - 0x0971, 0x0972, - 0x097b, 0x097f, - 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, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c3d, - 0x0c58, 0x0c59, - 0x0c60, 0x0c61, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbd, 0x0cbd, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d3d, - 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, 0x0edd, - 0x0f00, 0x0f00, - 0x0f40, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f88, 0x0f8b, - 0x1000, 0x102a, - 0x103f, 0x103f, - 0x1050, 0x1055, - 0x105a, 0x105d, - 0x1061, 0x1061, - 0x1065, 0x1066, - 0x106e, 0x1070, - 0x1075, 0x1081, - 0x108e, 0x108e, - 0x10a0, 0x10c5, - 0x10d0, 0x10fa, - 0x10fc, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x1380, 0x138f, - 0x13a0, 0x13f4, - 0x1401, 0x166c, - 0x166f, 0x1676, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x1700, 0x170c, - 0x170e, 0x1711, - 0x1720, 0x1731, - 0x1740, 0x1751, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1780, 0x17b3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dc, - 0x1820, 0x1877, - 0x1880, 0x18a8, - 0x18aa, 0x18aa, - 0x1900, 0x191c, - 0x1950, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19c1, 0x19c7, - 0x1a00, 0x1a16, - 0x1b05, 0x1b33, - 0x1b45, 0x1b4b, - 0x1b83, 0x1ba0, - 0x1bae, 0x1baf, - 0x1c00, 0x1c23, - 0x1c4d, 0x1c4f, - 0x1c5a, 0x1c7d, - 0x1d00, 0x1dbf, - 0x1e00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, + 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, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, + 0x1f60, 0x1f67, + 0x1f70, 0x1f7d, 0x1f80, 0x1fb4, - 0x1fb6, 0x1fbc, + 0x1fb6, 0x1fb7, + 0x1fbc, 0x1fbc, 0x1fbe, 0x1fbe, 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fcc, + 0x1fc6, 0x1fc7, + 0x1fcc, 0x1fcc, 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fe0, 0x1fec, + 0x1fd6, 0x1fd7, + 0x1fe0, 0x1fe7, 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffc, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x2094, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210a, 0x2113, - 0x2115, 0x2115, - 0x2119, 0x211d, - 0x2124, 0x2124, - 0x2126, 0x2126, - 0x2128, 0x2128, - 0x212a, 0x212d, - 0x212f, 0x2139, - 0x213c, 0x213f, - 0x2145, 0x2149, + 0x1ff6, 0x1ff7, + 0x1ffc, 0x1ffc, 0x214e, 0x214e, - 0x2183, 0x2184, - 0x2c00, 0x2c2e, + 0x2170, 0x217f, + 0x2184, 0x2184, + 0x24d0, 0x24e9, 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2ce4, + 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, 0x2d00, 0x2d25, - 0x2d30, 0x2d65, - 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, 0x31b7, - 0x31f0, 0x31ff, - 0x3400, 0x3400, - 0x4db5, 0x4db5, - 0x4e00, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa500, 0xa60c, - 0xa610, 0xa61f, - 0xa62a, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa66e, - 0xa67f, 0xa697, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa78c, - 0xa7fb, 0xa801, - 0xa803, 0xa805, - 0xa807, 0xa80a, - 0xa80c, 0xa822, - 0xa840, 0xa873, - 0xa882, 0xa8b3, - 0xa90a, 0xa925, - 0xa930, 0xa946, - 0xaa00, 0xaa28, - 0xaa40, 0xaa42, - 0xaa44, 0xaa4b, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, + 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, + 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, + 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, 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, 0x1031e, - 0x10330, 0x10340, - 0x10342, 0x10349, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x10400, 0x1049d, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10915, - 0x10920, 0x10939, - 0x10a00, 0x10a00, - 0x10a10, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x12000, 0x1236e, - 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, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, -}; /* CR_L */ + 0x10428, 0x1044f, +}; /* CR_Changes_When_Uppercased */ -/* 'Ll': General Category */ -static const OnigCodePoint CR_Ll[] = { - 598, +/* 'Changes_When_Titlecased': Derived Property */ +static const OnigCodePoint CR_Changes_When_Titlecased[] = { + 574, 0x0061, 0x007a, - 0x00aa, 0x00aa, 0x00b5, 0x00b5, - 0x00ba, 0x00ba, 0x00df, 0x00f6, 0x00f8, 0x00ff, 0x0101, 0x0101, @@ -5209,7 +8162,7 @@ static const OnigCodePoint CR_Ll[] = { 0x0131, 0x0131, 0x0133, 0x0133, 0x0135, 0x0135, - 0x0137, 0x0138, + 0x0137, 0x0137, 0x013a, 0x013a, 0x013c, 0x013c, 0x013e, 0x013e, @@ -5247,24 +8200,25 @@ static const OnigCodePoint CR_Ll[] = { 0x0183, 0x0183, 0x0185, 0x0185, 0x0188, 0x0188, - 0x018c, 0x018d, + 0x018c, 0x018c, 0x0192, 0x0192, 0x0195, 0x0195, - 0x0199, 0x019b, + 0x0199, 0x019a, 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, + 0x01b9, 0x01b9, + 0x01bd, 0x01bd, + 0x01bf, 0x01bf, + 0x01c4, 0x01c4, + 0x01c6, 0x01c7, + 0x01c9, 0x01ca, 0x01cc, 0x01cc, 0x01ce, 0x01ce, 0x01d0, 0x01d0, @@ -5282,7 +8236,7 @@ static const OnigCodePoint CR_Ll[] = { 0x01e9, 0x01e9, 0x01eb, 0x01eb, 0x01ed, 0x01ed, - 0x01ef, 0x01f0, + 0x01ef, 0x01f1, 0x01f3, 0x01f3, 0x01f5, 0x01f5, 0x01f9, 0x01f9, @@ -5305,7 +8259,6 @@ static const OnigCodePoint CR_Ll[] = { 0x021b, 0x021b, 0x021d, 0x021d, 0x021f, 0x021f, - 0x0221, 0x0221, 0x0223, 0x0223, 0x0225, 0x0225, 0x0227, 0x0227, @@ -5314,7 +8267,7 @@ static const OnigCodePoint CR_Ll[] = { 0x022d, 0x022d, 0x022f, 0x022f, 0x0231, 0x0231, - 0x0233, 0x0239, + 0x0233, 0x0233, 0x023c, 0x023c, 0x023f, 0x0240, 0x0242, 0x0242, @@ -5322,542 +8275,1615 @@ static const OnigCodePoint CR_Ll[] = { 0x0249, 0x0249, 0x024b, 0x024b, 0x024d, 0x024d, - 0x024f, 0x0293, - 0x0295, 0x02af, + 0x024f, 0x0254, + 0x0256, 0x0257, + 0x0259, 0x0259, + 0x025b, 0x025b, + 0x0260, 0x0260, + 0x0263, 0x0263, + 0x0268, 0x0269, + 0x026b, 0x026b, + 0x026f, 0x026f, + 0x0271, 0x0272, + 0x0275, 0x0275, + 0x027d, 0x027d, + 0x0280, 0x0280, + 0x0283, 0x0283, + 0x0288, 0x028c, + 0x0292, 0x0292, + 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, 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, + 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, 0x03f2, + 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, + 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, + 0x2d00, 0x2d25, + 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, + 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, + 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, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xff41, 0xff5a, + 0x10428, 0x1044f, +}; /* CR_Changes_When_Titlecased */ + +/* 'Changes_When_Casefolded': Derived Property */ +static const OnigCodePoint CR_Changes_When_Casefolded[] = { + 568, + 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, + 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, + 0x0531, 0x0556, + 0x0587, 0x0587, + 0x10a0, 0x10c5, + 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, + 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, + 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, + 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, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xff21, 0xff3a, + 0x10400, 0x10427, +}; /* CR_Changes_When_Casefolded */ + +/* 'Changes_When_Casemapped': Derived Property */ +static const OnigCodePoint CR_Changes_When_Casemapped[] = { + 97, + 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, 0x025b, + 0x0260, 0x0260, + 0x0263, 0x0263, + 0x0268, 0x0269, + 0x026b, 0x026b, + 0x026f, 0x026f, + 0x0271, 0x0272, + 0x0275, 0x0275, + 0x027d, 0x027d, + 0x0280, 0x0280, + 0x0283, 0x0283, + 0x0288, 0x028c, + 0x0292, 0x0292, + 0x0345, 0x0345, + 0x0370, 0x0373, + 0x0376, 0x0377, + 0x037b, 0x037d, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03d1, + 0x03d5, 0x03f2, + 0x03f4, 0x03f5, + 0x03f7, 0x03fb, + 0x03fd, 0x0481, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0561, 0x0587, + 0x10a0, 0x10c5, + 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, + 0x2d00, 0x2d25, + 0xa640, 0xa65f, + 0xa662, 0xa66d, + 0xa680, 0xa697, + 0xa722, 0xa72f, + 0xa732, 0xa76f, + 0xa779, 0xa787, + 0xa78b, 0xa78c, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xff21, 0xff3a, + 0xff41, 0xff5a, + 0x10400, 0x1044f, +}; /* CR_Changes_When_Casemapped */ + +/* 'ID_Start': Derived Property */ +static const OnigCodePoint CR_ID_Start[] = { + 424, + 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, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, 0x0561, 0x0587, - 0x1d00, 0x1d2b, - 0x1d62, 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, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0621, 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, + 0x0904, 0x0939, + 0x093d, 0x093d, + 0x0950, 0x0950, + 0x0958, 0x0961, + 0x0971, 0x0972, + 0x0979, 0x097f, + 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, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c3d, + 0x0c58, 0x0c59, + 0x0c60, 0x0c61, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbd, 0x0cbd, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce1, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d3d, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f40, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f88, 0x0f8b, + 0x1000, 0x102a, + 0x103f, 0x103f, + 0x1050, 0x1055, + 0x105a, 0x105d, + 0x1061, 0x1061, + 0x1065, 0x1066, + 0x106e, 0x1070, + 0x1075, 0x1081, + 0x108e, 0x108e, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, 0x16f0, + 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, 0x191c, + 0x1950, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19c1, 0x19c7, + 0x1a00, 0x1a16, + 0x1a20, 0x1a54, + 0x1aa7, 0x1aa7, + 0x1b05, 0x1b33, + 0x1b45, 0x1b4b, + 0x1b83, 0x1ba0, + 0x1bae, 0x1baf, + 0x1c00, 0x1c23, + 0x1c4d, 0x1c4f, + 0x1c5a, 0x1c7d, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf1, + 0x1d00, 0x1dbf, + 0x1e00, 0x1f15, + 0x1f18, 0x1f1d, + 0x1f20, 0x1f45, + 0x1f48, 0x1f4d, 0x1f50, 0x1f57, - 0x1f60, 0x1f67, - 0x1f70, 0x1f7d, - 0x1f80, 0x1f87, - 0x1f90, 0x1f97, - 0x1fa0, 0x1fa7, - 0x1fb0, 0x1fb4, - 0x1fb6, 0x1fb7, + 0x1f59, 0x1f59, + 0x1f5b, 0x1f5b, + 0x1f5d, 0x1f5d, + 0x1f5f, 0x1f7d, + 0x1f80, 0x1fb4, + 0x1fb6, 0x1fbc, 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fc7, - 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fd7, - 0x1fe0, 0x1fe7, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ff7, - 0x2071, 0x2071, - 0x207f, 0x207f, - 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, 0x2c7c, - 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, - 0x2d00, 0x2d25, - 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, - 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, - 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, + 0x1fc2, 0x1fc4, + 0x1fc6, 0x1fcc, + 0x1fd0, 0x1fd3, + 0x1fd6, 0x1fdb, + 0x1fe0, 0x1fec, + 0x1ff2, 0x1ff4, + 0x1ff6, 0x1ffc, + 0x2071, 0x2071, + 0x207f, 0x207f, + 0x2090, 0x2094, + 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, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa61f, + 0xa62a, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa67f, 0xa697, + 0xa6a0, 0xa6ef, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 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, + 0xaa00, 0xaa28, + 0xaa40, 0xaa42, + 0xaa44, 0xaa4b, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaaaf, + 0xaab1, 0xaab1, + 0xaab5, 0xaab6, + 0xaab9, 0xaabd, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabe2, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, - 0x10428, 0x1044f, - 0x1d41a, 0x1d433, - 0x1d44e, 0x1d454, - 0x1d456, 0x1d467, - 0x1d482, 0x1d49b, - 0x1d4b6, 0x1d4b9, + 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, 0x1031e, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a00, + 0x10a10, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11083, 0x110af, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 0x1d400, 0x1d454, + 0x1d456, 0x1d49c, + 0x1d49e, 0x1d49f, + 0x1d4a2, 0x1d4a2, + 0x1d4a5, 0x1d4a6, + 0x1d4a9, 0x1d4ac, + 0x1d4ae, 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, + 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, 0x1d6e1, + 0x1d6dc, 0x1d6fa, 0x1d6fc, 0x1d714, - 0x1d716, 0x1d71b, + 0x1d716, 0x1d734, 0x1d736, 0x1d74e, - 0x1d750, 0x1d755, + 0x1d750, 0x1d76e, 0x1d770, 0x1d788, - 0x1d78a, 0x1d78f, + 0x1d78a, 0x1d7a8, 0x1d7aa, 0x1d7c2, - 0x1d7c4, 0x1d7c9, - 0x1d7cb, 0x1d7cb, -}; /* CR_Ll */ + 0x1d7c4, 0x1d7cb, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_ID_Start */ -/* 'Lm': General Category */ -static const OnigCodePoint CR_Lm[] = { - 39, - 0x02b0, 0x02c1, +/* 'ID_Continue': Derived Property */ +static const OnigCodePoint CR_ID_Continue[] = { + 506, + 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, - 0x0374, 0x0374, - 0x037a, 0x037a, + 0x0300, 0x0374, + 0x0376, 0x0377, + 0x037a, 0x037d, + 0x0386, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x0483, 0x0487, + 0x048a, 0x0525, + 0x0531, 0x0556, 0x0559, 0x0559, - 0x0640, 0x0640, - 0x06e5, 0x06e6, - 0x07f4, 0x07f5, - 0x07fa, 0x07fa, - 0x0971, 0x0971, - 0x0e46, 0x0e46, - 0x0ec6, 0x0ec6, - 0x10fc, 0x10fc, - 0x17d7, 0x17d7, - 0x1843, 0x1843, - 0x1c78, 0x1c7d, - 0x1d2c, 0x1d61, - 0x1d78, 0x1d78, - 0x1d9b, 0x1dbf, - 0x2090, 0x2094, - 0x2c7d, 0x2c7d, - 0x2d6f, 0x2d6f, - 0x2e2f, 0x2e2f, - 0x3005, 0x3005, - 0x3031, 0x3035, - 0x303b, 0x303b, - 0x309d, 0x309e, - 0x30fc, 0x30fe, - 0xa015, 0xa015, - 0xa60c, 0xa60c, - 0xa67f, 0xa67f, - 0xa717, 0xa71f, - 0xa770, 0xa770, - 0xa788, 0xa788, - 0xff70, 0xff70, - 0xff9e, 0xff9f, -}; /* CR_Lm */ - -/* 'Lo': General Category */ -static const OnigCodePoint CR_Lo[] = { - 286, - 0x01bb, 0x01bb, - 0x01c0, 0x01c3, - 0x0294, 0x0294, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0621, 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, - 0x0904, 0x0939, - 0x093d, 0x093d, - 0x0950, 0x0950, - 0x0958, 0x0961, - 0x0972, 0x0972, - 0x097b, 0x097f, + 0x0561, 0x0587, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0610, 0x061a, + 0x0621, 0x065e, + 0x0660, 0x0669, + 0x066e, 0x06d3, + 0x06d5, 0x06dc, + 0x06df, 0x06e8, + 0x06ea, 0x06fc, + 0x06ff, 0x06ff, + 0x0710, 0x074a, + 0x074d, 0x07b1, + 0x07c0, 0x07f5, + 0x07fa, 0x07fa, + 0x0800, 0x082d, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0963, + 0x0966, 0x096f, + 0x0971, 0x0972, + 0x0979, 0x097f, + 0x0981, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, 0x0993, 0x09a8, 0x09aa, 0x09b0, 0x09b2, 0x09b2, 0x09b6, 0x09b9, - 0x09bd, 0x09bd, - 0x09ce, 0x09ce, + 0x09bc, 0x09c4, + 0x09c7, 0x09c8, + 0x09cb, 0x09ce, + 0x09d7, 0x09d7, 0x09dc, 0x09dd, - 0x09df, 0x09e1, - 0x09f0, 0x09f1, + 0x09df, 0x09e3, + 0x09e6, 0x09f1, + 0x0a01, 0x0a03, 0x0a05, 0x0a0a, 0x0a0f, 0x0a10, 0x0a13, 0x0a28, @@ -5865,29 +9891,43 @@ static const OnigCodePoint CR_Lo[] = { 0x0a32, 0x0a33, 0x0a35, 0x0a36, 0x0a38, 0x0a39, + 0x0a3c, 0x0a3c, + 0x0a3e, 0x0a42, + 0x0a47, 0x0a48, + 0x0a4b, 0x0a4d, + 0x0a51, 0x0a51, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e, - 0x0a72, 0x0a74, + 0x0a66, 0x0a75, + 0x0a81, 0x0a83, 0x0a85, 0x0a8d, 0x0a8f, 0x0a91, 0x0a93, 0x0aa8, 0x0aaa, 0x0ab0, 0x0ab2, 0x0ab3, 0x0ab5, 0x0ab9, - 0x0abd, 0x0abd, + 0x0abc, 0x0ac5, + 0x0ac7, 0x0ac9, + 0x0acb, 0x0acd, 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae1, + 0x0ae0, 0x0ae3, + 0x0ae6, 0x0aef, + 0x0b01, 0x0b03, 0x0b05, 0x0b0c, 0x0b0f, 0x0b10, 0x0b13, 0x0b28, 0x0b2a, 0x0b30, 0x0b32, 0x0b33, 0x0b35, 0x0b39, - 0x0b3d, 0x0b3d, + 0x0b3c, 0x0b44, + 0x0b47, 0x0b48, + 0x0b4b, 0x0b4d, + 0x0b56, 0x0b57, 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, + 0x0b5f, 0x0b63, + 0x0b66, 0x0b6f, 0x0b71, 0x0b71, - 0x0b83, 0x0b83, + 0x0b82, 0x0b83, 0x0b85, 0x0b8a, 0x0b8e, 0x0b90, 0x0b92, 0x0b95, @@ -5897,38 +9937,64 @@ static const OnigCodePoint CR_Lo[] = { 0x0ba3, 0x0ba4, 0x0ba8, 0x0baa, 0x0bae, 0x0bb9, + 0x0bbe, 0x0bc2, + 0x0bc6, 0x0bc8, + 0x0bca, 0x0bcd, 0x0bd0, 0x0bd0, + 0x0bd7, 0x0bd7, + 0x0be6, 0x0bef, + 0x0c01, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, 0x0c12, 0x0c28, 0x0c2a, 0x0c33, 0x0c35, 0x0c39, - 0x0c3d, 0x0c3d, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, 0x0c58, 0x0c59, - 0x0c60, 0x0c61, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c82, 0x0c83, 0x0c85, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, 0x0cb5, 0x0cb9, - 0x0cbd, 0x0cbd, + 0x0cbc, 0x0cc4, + 0x0cc6, 0x0cc8, + 0x0cca, 0x0ccd, + 0x0cd5, 0x0cd6, 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, + 0x0ce0, 0x0ce3, + 0x0ce6, 0x0cef, + 0x0d02, 0x0d03, 0x0d05, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d28, 0x0d2a, 0x0d39, - 0x0d3d, 0x0d3d, - 0x0d60, 0x0d61, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4d, + 0x0d57, 0x0d57, + 0x0d60, 0x0d63, + 0x0d66, 0x0d6f, 0x0d7a, 0x0d7f, + 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, - 0x0e01, 0x0e30, - 0x0e32, 0x0e33, - 0x0e40, 0x0e45, + 0x0dca, 0x0dca, + 0x0dcf, 0x0dd4, + 0x0dd6, 0x0dd6, + 0x0dd8, 0x0ddf, + 0x0df2, 0x0df3, + 0x0e01, 0x0e3a, + 0x0e40, 0x0e4e, + 0x0e50, 0x0e59, 0x0e81, 0x0e82, 0x0e84, 0x0e84, 0x0e87, 0x0e88, @@ -5940,29 +10006,32 @@ static const OnigCodePoint CR_Lo[] = { 0x0ea5, 0x0ea5, 0x0ea7, 0x0ea7, 0x0eaa, 0x0eab, - 0x0ead, 0x0eb0, - 0x0eb2, 0x0eb3, - 0x0ebd, 0x0ebd, + 0x0ead, 0x0eb9, + 0x0ebb, 0x0ebd, 0x0ec0, 0x0ec4, + 0x0ec6, 0x0ec6, + 0x0ec8, 0x0ecd, + 0x0ed0, 0x0ed9, 0x0edc, 0x0edd, 0x0f00, 0x0f00, - 0x0f40, 0x0f47, + 0x0f18, 0x0f19, + 0x0f20, 0x0f29, + 0x0f35, 0x0f35, + 0x0f37, 0x0f37, + 0x0f39, 0x0f39, + 0x0f3e, 0x0f47, 0x0f49, 0x0f6c, - 0x0f88, 0x0f8b, - 0x1000, 0x102a, - 0x103f, 0x103f, - 0x1050, 0x1055, - 0x105a, 0x105d, - 0x1061, 0x1061, - 0x1065, 0x1066, - 0x106e, 0x1070, - 0x1075, 0x1081, - 0x108e, 0x108e, + 0x0f71, 0x0f84, + 0x0f86, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fc6, 0x0fc6, + 0x1000, 0x1049, + 0x1050, 0x109d, + 0x10a0, 0x10c5, 0x10d0, 0x10fa, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1200, 0x1248, + 0x10fc, 0x10fc, + 0x1100, 0x1248, 0x124a, 0x124d, 0x1250, 0x1256, 0x1258, 0x1258, @@ -5978,39 +10047,104 @@ static const OnigCodePoint CR_Lo[] = { 0x12d8, 0x1310, 0x1312, 0x1315, 0x1318, 0x135a, + 0x135f, 0x135f, + 0x1369, 0x1371, 0x1380, 0x138f, 0x13a0, 0x13f4, 0x1401, 0x166c, - 0x166f, 0x1676, + 0x166f, 0x167f, 0x1681, 0x169a, 0x16a0, 0x16ea, + 0x16ee, 0x16f0, 0x1700, 0x170c, - 0x170e, 0x1711, - 0x1720, 0x1731, - 0x1740, 0x1751, + 0x170e, 0x1714, + 0x1720, 0x1734, + 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, + 0x1772, 0x1773, 0x1780, 0x17b3, - 0x17dc, 0x17dc, - 0x1820, 0x1842, - 0x1844, 0x1877, - 0x1880, 0x18a8, - 0x18aa, 0x18aa, + 0x17b6, 0x17d3, + 0x17d7, 0x17d7, + 0x17dc, 0x17dd, + 0x17e0, 0x17e9, + 0x180b, 0x180d, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18aa, + 0x18b0, 0x18f5, 0x1900, 0x191c, - 0x1950, 0x196d, + 0x1920, 0x192b, + 0x1930, 0x193b, + 0x1946, 0x196d, 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19c1, 0x19c7, - 0x1a00, 0x1a16, - 0x1b05, 0x1b33, - 0x1b45, 0x1b4b, - 0x1b83, 0x1ba0, - 0x1bae, 0x1baf, - 0x1c00, 0x1c23, - 0x1c4d, 0x1c4f, - 0x1c5a, 0x1c77, - 0x2135, 0x2138, + 0x1980, 0x19ab, + 0x19b0, 0x19c9, + 0x19d0, 0x19da, + 0x1a00, 0x1a1b, + 0x1a20, 0x1a5e, + 0x1a60, 0x1a7c, + 0x1a7f, 0x1a89, + 0x1a90, 0x1a99, + 0x1aa7, 0x1aa7, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b59, + 0x1b6b, 0x1b73, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c37, + 0x1c40, 0x1c49, + 0x1c4d, 0x1c7d, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1cf2, + 0x1d00, 0x1de6, + 0x1dfd, 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, 0x2094, + 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, 0x2cf1, + 0x2d00, 0x2d25, 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, 0x2d80, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, @@ -6020,44 +10154,63 @@ static const OnigCodePoint CR_Lo[] = { 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, - 0x3006, 0x3006, - 0x303c, 0x303c, + 0x2de0, 0x2dff, + 0x3005, 0x3007, + 0x3021, 0x302f, + 0x3031, 0x3035, + 0x3038, 0x303c, 0x3041, 0x3096, - 0x309f, 0x309f, + 0x3099, 0x309f, 0x30a1, 0x30fa, - 0x30ff, 0x30ff, + 0x30fc, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x31a0, 0x31b7, 0x31f0, 0x31ff, - 0x3400, 0x3400, - 0x4db5, 0x4db5, - 0x4e00, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa014, - 0xa016, 0xa48c, - 0xa500, 0xa60b, - 0xa610, 0xa61f, - 0xa62a, 0xa62b, - 0xa66e, 0xa66e, - 0xa7fb, 0xa801, - 0xa803, 0xa805, - 0xa807, 0xa80a, - 0xa80c, 0xa822, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66f, + 0xa67c, 0xa67d, + 0xa67f, 0xa697, + 0xa6a0, 0xa6f1, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 0xa827, 0xa840, 0xa873, - 0xa882, 0xa8b3, - 0xa90a, 0xa925, - 0xa930, 0xa946, - 0xaa00, 0xaa28, - 0xaa40, 0xaa42, - 0xaa44, 0xaa4b, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, + 0xa880, 0xa8c4, + 0xa8d0, 0xa8d9, + 0xa8e0, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa900, 0xa92d, + 0xa930, 0xa953, + 0xa960, 0xa97c, + 0xa980, 0xa9c0, + 0xa9cf, 0xa9d9, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabea, + 0xabec, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, + 0xfa30, 0xfa6d, 0xfa70, 0xfad9, - 0xfb1d, 0xfb1d, - 0xfb1f, 0xfb28, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xfb1d, 0xfb28, 0xfb2a, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, @@ -6068,11 +10221,17 @@ static const OnigCodePoint CR_Lo[] = { 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0, 0xfdfb, + 0xfe00, 0xfe0f, + 0xfe20, 0xfe26, + 0xfe33, 0xfe34, + 0xfe4d, 0xfe4f, 0xfe70, 0xfe74, 0xfe76, 0xfefc, - 0xff66, 0xff6f, - 0xff71, 0xff9d, - 0xffa0, 0xffbe, + 0xff10, 0xff19, + 0xff21, 0xff3a, + 0xff3f, 0xff3f, + 0xff41, 0xff5a, + 0xff66, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, @@ -6084,2276 +10243,4839 @@ static const OnigCodePoint CR_Lo[] = { 0x1003f, 0x1004d, 0x10050, 0x1005d, 0x10080, 0x100fa, + 0x10140, 0x10174, + 0x101fd, 0x101fd, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x10300, 0x1031e, - 0x10330, 0x10340, - 0x10342, 0x10349, + 0x10330, 0x1034a, 0x10380, 0x1039d, 0x103a0, 0x103c3, 0x103c8, 0x103cf, - 0x10450, 0x1049d, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, 0x10800, 0x10805, 0x10808, 0x10808, 0x1080a, 0x10835, 0x10837, 0x10838, 0x1083c, 0x1083c, - 0x1083f, 0x1083f, + 0x1083f, 0x10855, 0x10900, 0x10915, 0x10920, 0x10939, - 0x10a00, 0x10a00, - 0x10a10, 0x10a13, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11080, 0x110ba, 0x12000, 0x1236e, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, 0x2f800, 0x2fa1d, -}; /* CR_Lo */ - -/* '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, -}; /* CR_Lt */ + 0xe0100, 0xe01ef, +}; /* CR_ID_Continue */ -/* 'Lu': General Category */ -static const OnigCodePoint CR_Lu[] = { - 591, +/* 'XID_Start': Derived Property */ +static const OnigCodePoint CR_XID_Start[] = { + 431, 0x0041, 0x005a, + 0x0061, 0x007a, + 0x00aa, 0x00aa, + 0x00b5, 0x00b5, + 0x00ba, 0x00ba, 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, + 0x00d8, 0x00f6, + 0x00f8, 0x02c1, + 0x02c6, 0x02d1, + 0x02e0, 0x02e4, + 0x02ec, 0x02ec, + 0x02ee, 0x02ee, + 0x0370, 0x0374, + 0x0376, 0x0377, + 0x037b, 0x037d, 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, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x048a, 0x0525, 0x0531, 0x0556, - 0x10a0, 0x10c5, - 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, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0621, 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, + 0x0904, 0x0939, + 0x093d, 0x093d, + 0x0950, 0x0950, + 0x0958, 0x0961, + 0x0971, 0x0972, + 0x0979, 0x097f, + 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, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c3d, + 0x0c58, 0x0c59, + 0x0c60, 0x0c61, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbd, 0x0cbd, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce1, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d3d, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f40, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f88, 0x0f8b, + 0x1000, 0x102a, + 0x103f, 0x103f, + 0x1050, 0x1055, + 0x105a, 0x105d, + 0x1061, 0x1061, + 0x1065, 0x1066, + 0x106e, 0x1070, + 0x1075, 0x1081, + 0x108e, 0x108e, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, 0x16f0, + 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, 0x191c, + 0x1950, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19c1, 0x19c7, + 0x1a00, 0x1a16, + 0x1a20, 0x1a54, + 0x1aa7, 0x1aa7, + 0x1b05, 0x1b33, + 0x1b45, 0x1b4b, + 0x1b83, 0x1ba0, + 0x1bae, 0x1baf, + 0x1c00, 0x1c23, + 0x1c4d, 0x1c4f, + 0x1c5a, 0x1c7d, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf1, + 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, 0x2094, + 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, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa61f, + 0xa62a, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa67f, 0xa697, + 0xa6a0, 0xa6ef, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 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, + 0xaa00, 0xaa28, + 0xaa40, 0xaa42, + 0xaa44, 0xaa4b, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaaaf, + 0xaab1, 0xaab1, + 0xaab5, 0xaab6, + 0xaab9, 0xaabd, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabe2, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0x1031e, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a00, + 0x10a10, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11083, 0x110af, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_XID_Start */ + +/* 'XID_Continue': Derived Property */ +static const OnigCodePoint CR_XID_Continue[] = { + 513, + 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, + 0x0386, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x0483, 0x0487, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0610, 0x061a, + 0x0621, 0x065e, + 0x0660, 0x0669, + 0x066e, 0x06d3, + 0x06d5, 0x06dc, + 0x06df, 0x06e8, + 0x06ea, 0x06fc, + 0x06ff, 0x06ff, + 0x0710, 0x074a, + 0x074d, 0x07b1, + 0x07c0, 0x07f5, + 0x07fa, 0x07fa, + 0x0800, 0x082d, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0963, + 0x0966, 0x096f, + 0x0971, 0x0972, + 0x0979, 0x097f, + 0x0981, 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, + 0x0c01, 0x0c03, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c82, 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, + 0x0d02, 0x0d03, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4d, + 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, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f18, 0x0f19, + 0x0f20, 0x0f29, + 0x0f35, 0x0f35, + 0x0f37, 0x0f37, + 0x0f39, 0x0f39, + 0x0f3e, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f84, + 0x0f86, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fc6, 0x0fc6, + 0x1000, 0x1049, + 0x1050, 0x109d, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, + 0x1369, 0x1371, + 0x1380, 0x138f, + 0x13a0, 0x13f4, + 0x1401, 0x166c, + 0x166f, 0x167f, + 0x1681, 0x169a, + 0x16a0, 0x16ea, + 0x16ee, 0x16f0, + 0x1700, 0x170c, + 0x170e, 0x1714, + 0x1720, 0x1734, + 0x1740, 0x1753, + 0x1760, 0x176c, + 0x176e, 0x1770, + 0x1772, 0x1773, + 0x1780, 0x17b3, + 0x17b6, 0x17d3, + 0x17d7, 0x17d7, + 0x17dc, 0x17dd, + 0x17e0, 0x17e9, + 0x180b, 0x180d, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18aa, + 0x18b0, 0x18f5, + 0x1900, 0x191c, + 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, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b59, + 0x1b6b, 0x1b73, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c37, + 0x1c40, 0x1c49, + 0x1c4d, 0x1c7d, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1cf2, + 0x1d00, 0x1de6, + 0x1dfd, 0x1f15, 0x1f18, 0x1f1d, - 0x1f28, 0x1f2f, - 0x1f38, 0x1f3f, + 0x1f20, 0x1f45, 0x1f48, 0x1f4d, + 0x1f50, 0x1f57, 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, 0x2c6f, - 0x2c72, 0x2c72, - 0x2c75, 0x2c75, - 0x2c80, 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, - 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, - 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, - 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, + 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, 0x2094, + 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, 0x2cf1, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, + 0x2d80, 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66f, + 0xa67c, 0xa67d, + 0xa67f, 0xa697, + 0xa6a0, 0xa6f1, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 0xa827, + 0xa840, 0xa873, + 0xa880, 0xa8c4, + 0xa8d0, 0xa8d9, + 0xa8e0, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa900, 0xa92d, + 0xa930, 0xa953, + 0xa960, 0xa97c, + 0xa980, 0xa9c0, + 0xa9cf, 0xa9d9, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabea, + 0xabec, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0xfe26, + 0xfe33, 0xfe34, + 0xfe4d, 0xfe4f, + 0xfe71, 0xfe71, + 0xfe73, 0xfe73, + 0xfe77, 0xfe77, + 0xfe79, 0xfe79, + 0xfe7b, 0xfe7b, + 0xfe7d, 0xfe7d, + 0xfe7f, 0xfefc, + 0xff10, 0xff19, 0xff21, 0xff3a, - 0x10400, 0x10427, - 0x1d400, 0x1d419, - 0x1d434, 0x1d44d, - 0x1d468, 0x1d481, - 0x1d49c, 0x1d49c, + 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, + 0x10300, 0x1031e, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11080, 0x110ba, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, + 0xe0100, 0xe01ef, +}; /* CR_XID_Continue */ + +/* 'Default_Ignorable_Code_Point': Derived Property */ +static const OnigCodePoint CR_Default_Ignorable_Code_Point[] = { + 15, + 0x00ad, 0x00ad, + 0x034f, 0x034f, + 0x115f, 0x1160, + 0x17b4, 0x17b5, + 0x180b, 0x180d, + 0x200b, 0x200f, + 0x202a, 0x202e, + 0x2060, 0x206f, + 0x3164, 0x3164, + 0xfe00, 0xfe0f, + 0xfeff, 0xfeff, + 0xffa0, 0xffa0, + 0xfff0, 0xfff8, + 0x1d173, 0x1d17a, + 0xe0000, 0xe0fff, +}; /* CR_Default_Ignorable_Code_Point */ + +/* 'Grapheme_Extend': Derived Property */ +static const OnigCodePoint CR_Grapheme_Extend[] = { + 206, + 0x0300, 0x036f, + 0x0483, 0x0489, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x0610, 0x061a, + 0x064b, 0x065e, + 0x0670, 0x0670, + 0x06d6, 0x06dc, + 0x06de, 0x06e4, + 0x06e7, 0x06e8, + 0x06ea, 0x06ed, + 0x0711, 0x0711, + 0x0730, 0x074a, + 0x07a6, 0x07b0, + 0x07eb, 0x07f3, + 0x0816, 0x0819, + 0x081b, 0x0823, + 0x0825, 0x0827, + 0x0829, 0x082d, + 0x0900, 0x0902, + 0x093c, 0x093c, + 0x0941, 0x0948, + 0x094d, 0x094d, + 0x0951, 0x0955, + 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, + 0x0c3e, 0x0c40, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c62, 0x0c63, + 0x0cbc, 0x0cbc, + 0x0cbf, 0x0cbf, + 0x0cc2, 0x0cc2, + 0x0cc6, 0x0cc6, + 0x0ccc, 0x0ccd, + 0x0cd5, 0x0cd6, + 0x0ce2, 0x0ce3, + 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, + 0x0f90, 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, + 0x135f, 0x135f, + 0x1712, 0x1714, + 0x1732, 0x1734, + 0x1752, 0x1753, + 0x1772, 0x1773, + 0x17b7, 0x17bd, + 0x17c6, 0x17c6, + 0x17c9, 0x17d3, + 0x17dd, 0x17dd, + 0x180b, 0x180d, + 0x18a9, 0x18a9, + 0x1920, 0x1922, + 0x1927, 0x1928, + 0x1932, 0x1932, + 0x1939, 0x193b, + 0x1a17, 0x1a18, + 0x1a56, 0x1a56, + 0x1a58, 0x1a5e, + 0x1a60, 0x1a60, + 0x1a62, 0x1a62, + 0x1a65, 0x1a6c, + 0x1a73, 0x1a7c, + 0x1a7f, 0x1a7f, + 0x1b00, 0x1b03, + 0x1b34, 0x1b34, + 0x1b36, 0x1b3a, + 0x1b3c, 0x1b3c, + 0x1b42, 0x1b42, + 0x1b6b, 0x1b73, + 0x1b80, 0x1b81, + 0x1ba2, 0x1ba5, + 0x1ba8, 0x1ba9, + 0x1c2c, 0x1c33, + 0x1c36, 0x1c37, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1ce0, + 0x1ce2, 0x1ce8, + 0x1ced, 0x1ced, + 0x1dc0, 0x1de6, + 0x1dfd, 0x1dff, + 0x200c, 0x200d, + 0x20d0, 0x20f0, + 0x2cef, 0x2cf1, + 0x2de0, 0x2dff, + 0x302a, 0x302f, + 0x3099, 0x309a, + 0xa66f, 0xa672, + 0xa67c, 0xa67d, + 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, + 0xaa29, 0xaa2e, + 0xaa31, 0xaa32, + 0xaa35, 0xaa36, + 0xaa43, 0xaa43, + 0xaa4c, 0xaa4c, + 0xaab0, 0xaab0, + 0xaab2, 0xaab4, + 0xaab7, 0xaab8, + 0xaabe, 0xaabf, + 0xaac1, 0xaac1, + 0xabe5, 0xabe5, + 0xabe8, 0xabe8, + 0xabed, 0xabed, + 0xfb1e, 0xfb1e, + 0xfe00, 0xfe0f, + 0xfe20, 0xfe26, + 0xff9e, 0xff9f, + 0x101fd, 0x101fd, + 0x10a01, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a0f, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x11080, 0x11081, + 0x110b3, 0x110b6, + 0x110b9, 0x110ba, + 0x1d165, 0x1d165, + 0x1d167, 0x1d169, + 0x1d16e, 0x1d172, + 0x1d17b, 0x1d182, + 0x1d185, 0x1d18b, + 0x1d1aa, 0x1d1ad, + 0x1d242, 0x1d244, + 0xe0100, 0xe01ef, +}; /* CR_Grapheme_Extend */ + +/* 'Grapheme_Base': Derived Property */ +static const OnigCodePoint CR_Grapheme_Base[] = { + 567, + 0x0020, 0x007e, + 0x00a0, 0x00ac, + 0x00ae, 0x02ff, + 0x0370, 0x0377, + 0x037a, 0x037e, + 0x0384, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x0482, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x055f, + 0x0561, 0x0587, + 0x0589, 0x058a, + 0x05be, 0x05be, + 0x05c0, 0x05c0, + 0x05c3, 0x05c3, + 0x05c6, 0x05c6, + 0x05d0, 0x05ea, + 0x05f0, 0x05f4, + 0x0606, 0x060f, + 0x061b, 0x061b, + 0x061e, 0x061f, + 0x0621, 0x064a, + 0x0660, 0x066f, + 0x0671, 0x06d5, + 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, + 0x0903, 0x0939, + 0x093d, 0x0940, + 0x0949, 0x094c, + 0x094e, 0x094e, + 0x0950, 0x0950, + 0x0958, 0x0961, + 0x0964, 0x0972, + 0x0979, 0x097f, + 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, 0x0aef, + 0x0af1, 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, 0x0b71, + 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, 0x0c33, + 0x0c35, 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, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d3d, + 0x0d3f, 0x0d40, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4c, + 0x0d60, 0x0d61, + 0x0d66, 0x0d75, + 0x0d79, 0x0d7f, + 0x0d82, 0x0d83, + 0x0d85, 0x0d96, + 0x0d9a, 0x0db1, + 0x0db3, 0x0dbb, + 0x0dbd, 0x0dbd, + 0x0dc0, 0x0dc6, + 0x0dd0, 0x0dd1, + 0x0dd8, 0x0dde, + 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, 0x0edd, + 0x0f00, 0x0f17, + 0x0f1a, 0x0f34, + 0x0f36, 0x0f36, + 0x0f38, 0x0f38, + 0x0f3a, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f7f, 0x0f7f, + 0x0f85, 0x0f85, + 0x0f88, 0x0f8b, + 0x0fbe, 0x0fc5, + 0x0fc7, 0x0fcc, + 0x0fce, 0x0fd8, + 0x1000, 0x102c, + 0x1031, 0x1031, + 0x1038, 0x1038, + 0x103b, 0x103c, + 0x103f, 0x1057, + 0x105a, 0x105d, + 0x1061, 0x1070, + 0x1075, 0x1081, + 0x1083, 0x1084, + 0x1087, 0x108c, + 0x108e, 0x109c, + 0x109e, 0x10c5, + 0x10d0, 0x10fc, + 0x1100, 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, 0x16f0, + 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, + 0x180e, 0x180e, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18a8, + 0x18aa, 0x18aa, + 0x18b0, 0x18f5, + 0x1900, 0x191c, + 0x1923, 0x1926, + 0x1929, 0x192b, + 0x1930, 0x1931, + 0x1933, 0x1938, + 0x1940, 0x1940, + 0x1944, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19b0, 0x19c9, + 0x19d0, 0x19da, + 0x19de, 0x1a16, + 0x1a19, 0x1a1b, + 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, 0x1bb9, + 0x1c00, 0x1c2b, + 0x1c34, 0x1c35, + 0x1c3b, 0x1c49, + 0x1c4d, 0x1c7f, + 0x1cd3, 0x1cd3, + 0x1ce1, 0x1ce1, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf2, + 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, 0x2094, + 0x20a0, 0x20b8, + 0x2100, 0x2189, + 0x2190, 0x23e8, + 0x2400, 0x2426, + 0x2440, 0x244a, + 0x2460, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, + 0x2701, 0x2704, + 0x2706, 0x2709, + 0x270c, 0x2727, + 0x2729, 0x274b, + 0x274d, 0x274d, + 0x274f, 0x2752, + 0x2756, 0x275e, + 0x2761, 0x2794, + 0x2798, 0x27af, + 0x27b1, 0x27be, + 0x27c0, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 0x2b4c, + 0x2b50, 0x2b59, + 0x2c00, 0x2c2e, + 0x2c30, 0x2c5e, + 0x2c60, 0x2cee, + 0x2cf9, 0x2d25, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, + 0x2d80, 0x2d96, + 0x2da0, 0x2da6, + 0x2da8, 0x2dae, + 0x2db0, 0x2db6, + 0x2db8, 0x2dbe, + 0x2dc0, 0x2dc6, + 0x2dc8, 0x2dce, + 0x2dd0, 0x2dd6, + 0x2dd8, 0x2dde, + 0x2e00, 0x2e31, + 0x2e80, 0x2e99, + 0x2e9b, 0x2ef3, + 0x2f00, 0x2fd5, + 0x2ff0, 0x2ffb, + 0x3000, 0x3029, + 0x3030, 0x303f, + 0x3041, 0x3096, + 0x309b, 0x30ff, + 0x3105, 0x312d, + 0x3131, 0x318e, + 0x3190, 0x31b7, + 0x31c0, 0x31e3, + 0x31f0, 0x321e, + 0x3220, 0x32fe, + 0x3300, 0x4db5, + 0x4dc0, 0x9fcb, + 0xa000, 0xa48c, + 0xa490, 0xa4c6, + 0xa4d0, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa673, 0xa673, + 0xa67e, 0xa697, + 0xa6a0, 0xa6ef, + 0xa6f2, 0xa6f7, + 0xa700, 0xa78c, + 0xa7fb, 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, 0xa9df, + 0xaa00, 0xaa28, + 0xaa2f, 0xaa30, + 0xaa33, 0xaa34, + 0xaa40, 0xaa42, + 0xaa44, 0xaa4b, + 0xaa4d, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa5c, 0xaa7b, + 0xaa80, 0xaaaf, + 0xaab1, 0xaab1, + 0xaab5, 0xaab6, + 0xaab9, 0xaabd, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadf, + 0xabc0, 0xabe4, + 0xabe6, 0xabe7, + 0xabe9, 0xabec, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 0xfa6d, + 0xfa70, 0xfad9, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xfb1d, 0xfb1d, + 0xfb1f, 0xfb36, + 0xfb38, 0xfb3c, + 0xfb3e, 0xfb3e, + 0xfb40, 0xfb41, + 0xfb43, 0xfb44, + 0xfb46, 0xfbb1, + 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, 0x1018a, + 0x10190, 0x1019b, + 0x101d0, 0x101fc, + 0x10280, 0x1029c, + 0x102a0, 0x102d0, + 0x10300, 0x1031e, + 0x10320, 0x10323, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x1039f, 0x103c3, + 0x103c8, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10857, 0x1085f, + 0x10900, 0x1091b, + 0x1091f, 0x10939, + 0x1093f, 0x1093f, + 0x10a00, 0x10a00, + 0x10a10, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a40, 0x10a47, + 0x10a50, 0x10a58, + 0x10a60, 0x10a7f, + 0x10b00, 0x10b35, + 0x10b39, 0x10b55, + 0x10b58, 0x10b72, + 0x10b78, 0x10b7f, + 0x10c00, 0x10c48, + 0x10e60, 0x10e7e, + 0x11082, 0x110b2, + 0x110b7, 0x110b8, + 0x110bb, 0x110bc, + 0x110be, 0x110c1, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x12470, 0x12473, + 0x13000, 0x1342e, + 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, + 0x1f000, 0x1f02b, + 0x1f030, 0x1f093, + 0x1f100, 0x1f10a, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Grapheme_Base */ + +/* 'Grapheme_Link': Derived Property */ +static const OnigCodePoint CR_Grapheme_Link[] = { + 26, + 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, 0x1baa, + 0xa806, 0xa806, + 0xa8c4, 0xa8c4, + 0xa953, 0xa953, + 0xa9c0, 0xa9c0, + 0xabed, 0xabed, + 0x10a3f, 0x10a3f, + 0x110b9, 0x110b9, +}; /* CR_Grapheme_Link */ + +/* 'Common': Script */ +static const OnigCodePoint CR_Common[] = { + 159, + 0x0000, 0x0040, + 0x005b, 0x0060, + 0x007b, 0x00a9, + 0x00ab, 0x00b9, + 0x00bb, 0x00bf, + 0x00d7, 0x00d7, + 0x00f7, 0x00f7, + 0x02b9, 0x02df, + 0x02e5, 0x02ff, + 0x0374, 0x0374, + 0x037e, 0x037e, + 0x0385, 0x0385, + 0x0387, 0x0387, + 0x0589, 0x0589, + 0x0600, 0x0603, + 0x060c, 0x060c, + 0x061b, 0x061b, + 0x061f, 0x061f, + 0x0640, 0x0640, + 0x0660, 0x0669, + 0x06dd, 0x06dd, + 0x0964, 0x0965, + 0x0970, 0x0970, + 0x0cf1, 0x0cf2, + 0x0e3f, 0x0e3f, + 0x0fd5, 0x0fd8, + 0x10fb, 0x10fb, + 0x16eb, 0x16ed, + 0x1735, 0x1736, + 0x1802, 0x1803, + 0x1805, 0x1805, + 0x1cd3, 0x1cd3, + 0x1ce1, 0x1ce1, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf2, + 0x2000, 0x200b, + 0x200e, 0x2064, + 0x206a, 0x2070, + 0x2074, 0x207e, + 0x2080, 0x208e, + 0x20a0, 0x20b8, + 0x2100, 0x2125, + 0x2127, 0x2129, + 0x212c, 0x2131, + 0x2133, 0x214d, + 0x214f, 0x215f, + 0x2189, 0x2189, + 0x2190, 0x23e8, + 0x2400, 0x2426, + 0x2440, 0x244a, + 0x2460, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, + 0x2701, 0x2704, + 0x2706, 0x2709, + 0x270c, 0x2727, + 0x2729, 0x274b, + 0x274d, 0x274d, + 0x274f, 0x2752, + 0x2756, 0x275e, + 0x2761, 0x2794, + 0x2798, 0x27af, + 0x27b1, 0x27be, + 0x27c0, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 0x27ff, + 0x2900, 0x2b4c, + 0x2b50, 0x2b59, + 0x2e00, 0x2e31, + 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, + 0xfd3e, 0xfd3f, + 0xfdfd, 0xfdfd, + 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, + 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, 0x1d4b5, - 0x1d4d0, 0x1d4e9, - 0x1d504, 0x1d505, + 0x1d4ae, 0x1d4b9, + 0x1d4bb, 0x1d4bb, + 0x1d4bd, 0x1d4c3, + 0x1d4c5, 0x1d505, 0x1d507, 0x1d50a, 0x1d50d, 0x1d514, 0x1d516, 0x1d51c, - 0x1d538, 0x1d539, + 0x1d51e, 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, -}; /* CR_Lu */ + 0x1d552, 0x1d6a5, + 0x1d6a8, 0x1d7cb, + 0x1d7ce, 0x1d7ff, + 0x1f000, 0x1f02b, + 0x1f030, 0x1f093, + 0x1f100, 0x1f10a, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, +}; /* CR_Common */ + +/* 'Latin': Script */ +static const OnigCodePoint CR_Latin[] = { + 28, + 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, 0x2094, + 0x212a, 0x212b, + 0x2132, 0x2132, + 0x214e, 0x214e, + 0x2160, 0x2188, + 0x2c60, 0x2c7f, + 0xa722, 0xa787, + 0xa78b, 0xa78c, + 0xa7fb, 0xa7ff, + 0xfb00, 0xfb06, + 0xff21, 0xff3a, + 0xff41, 0xff5a, +}; /* CR_Latin */ + +/* 'Greek': Script */ +static const OnigCodePoint CR_Greek[] = { + 33, + 0x0370, 0x0373, + 0x0375, 0x0377, + 0x037a, 0x037d, + 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, + 0x10140, 0x1018a, + 0x1d200, 0x1d245, +}; /* CR_Greek */ + +/* 'Cyrillic': Script */ +static const OnigCodePoint CR_Cyrillic[] = { + 8, + 0x0400, 0x0484, + 0x0487, 0x0525, + 0x1d2b, 0x1d2b, + 0x1d78, 0x1d78, + 0x2de0, 0x2dff, + 0xa640, 0xa65f, + 0xa662, 0xa673, + 0xa67c, 0xa697, +}; /* CR_Cyrillic */ + +/* 'Armenian': Script */ +static const OnigCodePoint CR_Armenian[] = { + 5, + 0x0531, 0x0556, + 0x0559, 0x055f, + 0x0561, 0x0587, + 0x058a, 0x058a, + 0xfb13, 0xfb17, +}; /* CR_Armenian */ + +/* '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, +}; /* CR_Hebrew */ + +/* 'Arabic': Script */ +static const OnigCodePoint CR_Arabic[] = { + 18, + 0x0606, 0x060b, + 0x060d, 0x061a, + 0x061e, 0x061e, + 0x0621, 0x063f, + 0x0641, 0x064a, + 0x0656, 0x065e, + 0x066a, 0x066f, + 0x0671, 0x06dc, + 0x06de, 0x06ff, + 0x0750, 0x077f, + 0xfb50, 0xfbb1, + 0xfbd3, 0xfd3d, + 0xfd50, 0xfd8f, + 0xfd92, 0xfdc7, + 0xfdf0, 0xfdfc, + 0xfe70, 0xfe74, + 0xfe76, 0xfefc, + 0x10e60, 0x10e7e, +}; /* CR_Arabic */ -/* 'M': Major Category */ -static const OnigCodePoint CR_M[] = { - 161, - 0x0300, 0x036f, - 0x0483, 0x0489, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x0610, 0x061a, - 0x064b, 0x065e, - 0x0670, 0x0670, - 0x06d6, 0x06dc, - 0x06de, 0x06e4, - 0x06e7, 0x06e8, - 0x06ea, 0x06ed, - 0x0711, 0x0711, - 0x0730, 0x074a, - 0x07a6, 0x07b0, - 0x07eb, 0x07f3, - 0x0901, 0x0903, - 0x093c, 0x093c, - 0x093e, 0x094d, - 0x0951, 0x0954, - 0x0962, 0x0963, +/* 'Syriac': Script */ +static const OnigCodePoint CR_Syriac[] = { + 3, + 0x0700, 0x070d, + 0x070f, 0x074a, + 0x074d, 0x074f, +}; /* CR_Syriac */ + +/* 'Thaana': Script */ +static const OnigCodePoint CR_Thaana[] = { + 1, + 0x0780, 0x07b1, +}; /* CR_Thaana */ + +/* 'Devanagari': Script */ +static const OnigCodePoint CR_Devanagari[] = { + 9, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0950, + 0x0953, 0x0955, + 0x0958, 0x0963, + 0x0966, 0x096f, + 0x0971, 0x0972, + 0x0979, 0x097f, + 0xa8e0, 0xa8fb, +}; /* CR_Devanagari */ + +/* 'Bengali': Script */ +static const OnigCodePoint CR_Bengali[] = { + 14, 0x0981, 0x0983, - 0x09bc, 0x09bc, - 0x09be, 0x09c4, + 0x0985, 0x098c, + 0x098f, 0x0990, + 0x0993, 0x09a8, + 0x09aa, 0x09b0, + 0x09b2, 0x09b2, + 0x09b6, 0x09b9, + 0x09bc, 0x09c4, 0x09c7, 0x09c8, - 0x09cb, 0x09cd, + 0x09cb, 0x09ce, 0x09d7, 0x09d7, - 0x09e2, 0x09e3, + 0x09dc, 0x09dd, + 0x09df, 0x09e3, + 0x09e6, 0x09fb, +}; /* CR_Bengali */ + +/* '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, - 0x0a70, 0x0a71, - 0x0a75, 0x0a75, + 0x0a59, 0x0a5c, + 0x0a5e, 0x0a5e, + 0x0a66, 0x0a75, +}; /* CR_Gurmukhi */ + +/* 'Gujarati': Script */ +static const OnigCodePoint CR_Gujarati[] = { + 14, 0x0a81, 0x0a83, - 0x0abc, 0x0abc, - 0x0abe, 0x0ac5, + 0x0a85, 0x0a8d, + 0x0a8f, 0x0a91, + 0x0a93, 0x0aa8, + 0x0aaa, 0x0ab0, + 0x0ab2, 0x0ab3, + 0x0ab5, 0x0ab9, + 0x0abc, 0x0ac5, 0x0ac7, 0x0ac9, 0x0acb, 0x0acd, - 0x0ae2, 0x0ae3, + 0x0ad0, 0x0ad0, + 0x0ae0, 0x0ae3, + 0x0ae6, 0x0aef, + 0x0af1, 0x0af1, +}; /* CR_Gujarati */ + +/* 'Oriya': Script */ +static const OnigCodePoint CR_Oriya[] = { + 14, 0x0b01, 0x0b03, - 0x0b3c, 0x0b3c, - 0x0b3e, 0x0b44, + 0x0b05, 0x0b0c, + 0x0b0f, 0x0b10, + 0x0b13, 0x0b28, + 0x0b2a, 0x0b30, + 0x0b32, 0x0b33, + 0x0b35, 0x0b39, + 0x0b3c, 0x0b44, 0x0b47, 0x0b48, 0x0b4b, 0x0b4d, 0x0b56, 0x0b57, - 0x0b62, 0x0b63, - 0x0b82, 0x0b82, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd7, 0x0bd7, - 0x0c01, 0x0c03, - 0x0c3e, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c62, 0x0c63, - 0x0c82, 0x0c83, - 0x0cbc, 0x0cbc, - 0x0cbe, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0ce2, 0x0ce3, - 0x0d02, 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, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x102b, 0x103e, - 0x1056, 0x1059, - 0x105e, 0x1060, - 0x1062, 0x1064, - 0x1067, 0x106d, - 0x1071, 0x1074, - 0x1082, 0x108d, - 0x108f, 0x108f, - 0x135f, 0x135f, - 0x1712, 0x1714, - 0x1732, 0x1734, - 0x1752, 0x1753, - 0x1772, 0x1773, - 0x17b6, 0x17d3, - 0x17dd, 0x17dd, - 0x180b, 0x180d, - 0x18a9, 0x18a9, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x19b0, 0x19c0, - 0x19c8, 0x19c9, - 0x1a17, 0x1a1b, - 0x1b00, 0x1b04, - 0x1b34, 0x1b44, - 0x1b6b, 0x1b73, - 0x1b80, 0x1b82, - 0x1ba1, 0x1baa, - 0x1c24, 0x1c37, - 0x1dc0, 0x1de6, - 0x1dfe, 0x1dff, - 0x20d0, 0x20f0, - 0x2de0, 0x2dff, - 0x302a, 0x302f, - 0x3099, 0x309a, - 0xa66f, 0xa672, - 0xa67c, 0xa67d, - 0xa802, 0xa802, - 0xa806, 0xa806, - 0xa80b, 0xa80b, - 0xa823, 0xa827, - 0xa880, 0xa881, - 0xa8b4, 0xa8c4, - 0xa926, 0xa92d, - 0xa947, 0xa953, - 0xaa29, 0xaa36, - 0xaa43, 0xaa43, - 0xaa4c, 0xaa4d, - 0xfb1e, 0xfb1e, - 0xfe00, 0xfe0f, - 0xfe20, 0xfe26, - 0x101fd, 0x101fd, - 0x10a01, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a0f, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, - 0x1d165, 0x1d169, - 0x1d16d, 0x1d172, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, - 0xe0100, 0xe01ef, -}; /* CR_M */ - -/* 'Mc': General Category */ -static const OnigCodePoint CR_Mc[] = { - 85, - 0x0903, 0x0903, - 0x093e, 0x0940, - 0x0949, 0x094c, - 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, + 0x0b5c, 0x0b5d, + 0x0b5f, 0x0b63, + 0x0b66, 0x0b71, +}; /* CR_Oriya */ + +/* '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, 0x0bcc, + 0x0bca, 0x0bcd, + 0x0bd0, 0x0bd0, 0x0bd7, 0x0bd7, + 0x0be6, 0x0bfa, +}; /* CR_Tamil */ + +/* 'Telugu': Script */ +static const OnigCodePoint CR_Telugu[] = { + 14, 0x0c01, 0x0c03, - 0x0c41, 0x0c44, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c78, 0x0c7f, +}; /* CR_Telugu */ + +/* 'Kannada': Script */ +static const OnigCodePoint CR_Kannada[] = { + 13, 0x0c82, 0x0c83, - 0x0cbe, 0x0cbe, - 0x0cc0, 0x0cc4, - 0x0cc7, 0x0cc8, - 0x0cca, 0x0ccb, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbc, 0x0cc4, + 0x0cc6, 0x0cc8, + 0x0cca, 0x0ccd, 0x0cd5, 0x0cd6, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce3, + 0x0ce6, 0x0cef, +}; /* CR_Kannada */ + +/* 'Malayalam': Script */ +static const OnigCodePoint CR_Malayalam[] = { + 12, 0x0d02, 0x0d03, - 0x0d3e, 0x0d40, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, 0x0d46, 0x0d48, - 0x0d4a, 0x0d4c, + 0x0d4a, 0x0d4d, 0x0d57, 0x0d57, + 0x0d60, 0x0d63, + 0x0d66, 0x0d75, + 0x0d79, 0x0d7f, +}; /* CR_Malayalam */ + +/* 'Sinhala': Script */ +static const OnigCodePoint CR_Sinhala[] = { + 11, 0x0d82, 0x0d83, - 0x0dcf, 0x0dd1, + 0x0d85, 0x0d96, + 0x0d9a, 0x0db1, + 0x0db3, 0x0dbb, + 0x0dbd, 0x0dbd, + 0x0dc0, 0x0dc6, + 0x0dca, 0x0dca, + 0x0dcf, 0x0dd4, + 0x0dd6, 0x0dd6, 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, - 0x17b6, 0x17b6, - 0x17be, 0x17c5, - 0x17c7, 0x17c8, - 0x1923, 0x1926, - 0x1929, 0x192b, - 0x1930, 0x1931, - 0x1933, 0x1938, - 0x19b0, 0x19c0, - 0x19c8, 0x19c9, - 0x1a19, 0x1a1b, - 0x1b04, 0x1b04, - 0x1b35, 0x1b35, - 0x1b3b, 0x1b3b, - 0x1b3d, 0x1b41, - 0x1b43, 0x1b44, - 0x1b82, 0x1b82, - 0x1ba1, 0x1ba1, - 0x1ba6, 0x1ba7, - 0x1baa, 0x1baa, - 0x1c24, 0x1c2b, - 0x1c34, 0x1c35, - 0xa823, 0xa824, - 0xa827, 0xa827, - 0xa880, 0xa881, - 0xa8b4, 0xa8c3, - 0xa952, 0xa953, - 0xaa2f, 0xaa30, - 0xaa33, 0xaa34, - 0xaa4d, 0xaa4d, - 0x1d165, 0x1d166, - 0x1d16d, 0x1d172, -}; /* CR_Mc */ + 0x0df2, 0x0df4, +}; /* CR_Sinhala */ + +/* 'Thai': Script */ +static const OnigCodePoint CR_Thai[] = { + 2, + 0x0e01, 0x0e3a, + 0x0e40, 0x0e5b, +}; /* CR_Thai */ + +/* '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, 0x0edd, +}; /* CR_Lao */ + +/* 'Tibetan': Script */ +static const OnigCodePoint CR_Tibetan[] = { + 7, + 0x0f00, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fbe, 0x0fcc, + 0x0fce, 0x0fd4, +}; /* CR_Tibetan */ + +/* 'Myanmar': Script */ +static const OnigCodePoint CR_Myanmar[] = { + 2, + 0x1000, 0x109f, + 0xaa60, 0xaa7b, +}; /* CR_Myanmar */ + +/* 'Georgian': Script */ +static const OnigCodePoint CR_Georgian[] = { + 4, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x2d00, 0x2d25, +}; /* CR_Georgian */ + +/* 'Hangul': Script */ +static const OnigCodePoint CR_Hangul[] = { + 13, + 0x1100, 0x11ff, + 0x3131, 0x318e, + 0x3200, 0x321e, + 0x3260, 0x327e, + 0xa960, 0xa97c, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xffa0, 0xffbe, + 0xffc2, 0xffc7, + 0xffca, 0xffcf, + 0xffd2, 0xffd7, + 0xffda, 0xffdc, +}; /* CR_Hangul */ + +/* 'Ethiopic': Script */ +static const OnigCodePoint CR_Ethiopic[] = { + 27, + 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, + 0x135f, 0x137c, + 0x1380, 0x1399, + 0x2d80, 0x2d96, + 0x2da0, 0x2da6, + 0x2da8, 0x2dae, + 0x2db0, 0x2db6, + 0x2db8, 0x2dbe, + 0x2dc0, 0x2dc6, + 0x2dc8, 0x2dce, + 0x2dd0, 0x2dd6, + 0x2dd8, 0x2dde, +}; /* CR_Ethiopic */ + +/* 'Cherokee': Script */ +static const OnigCodePoint CR_Cherokee[] = { + 1, + 0x13a0, 0x13f4, +}; /* CR_Cherokee */ + +/* 'Canadian_Aboriginal': Script */ +static const OnigCodePoint CR_Canadian_Aboriginal[] = { + 2, + 0x1400, 0x167f, + 0x18b0, 0x18f5, +}; /* CR_Canadian_Aboriginal */ + +/* 'Ogham': Script */ +static const OnigCodePoint CR_Ogham[] = { + 1, + 0x1680, 0x169c, +}; /* CR_Ogham */ -/* 'Me': General Category */ -static const OnigCodePoint CR_Me[] = { - 5, - 0x0488, 0x0489, - 0x06de, 0x06de, - 0x20dd, 0x20e0, - 0x20e2, 0x20e4, - 0xa670, 0xa672, -}; /* CR_Me */ +/* 'Runic': Script */ +static const OnigCodePoint CR_Runic[] = { + 2, + 0x16a0, 0x16ea, + 0x16ee, 0x16f0, +}; /* CR_Runic */ -/* 'Mn': General Category */ -static const OnigCodePoint CR_Mn[] = { - 160, +/* 'Khmer': Script */ +static const OnigCodePoint CR_Khmer[] = { + 4, + 0x1780, 0x17dd, + 0x17e0, 0x17e9, + 0x17f0, 0x17f9, + 0x19e0, 0x19ff, +}; /* CR_Khmer */ + +/* 'Mongolian': Script */ +static const OnigCodePoint CR_Mongolian[] = { + 6, + 0x1800, 0x1801, + 0x1804, 0x1804, + 0x1806, 0x180e, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18aa, +}; /* CR_Mongolian */ + +/* 'Hiragana': Script */ +static const OnigCodePoint CR_Hiragana[] = { + 3, + 0x3041, 0x3096, + 0x309d, 0x309f, + 0x1f200, 0x1f200, +}; /* CR_Hiragana */ + +/* 'Katakana': Script */ +static const OnigCodePoint CR_Katakana[] = { + 7, + 0x30a1, 0x30fa, + 0x30fd, 0x30ff, + 0x31f0, 0x31ff, + 0x32d0, 0x32fe, + 0x3300, 0x3357, + 0xff66, 0xff6f, + 0xff71, 0xff9d, +}; /* CR_Katakana */ + +/* 'Bopomofo': Script */ +static const OnigCodePoint CR_Bopomofo[] = { + 2, + 0x3105, 0x312d, + 0x31a0, 0x31b7, +}; /* CR_Bopomofo */ + +/* '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, 0x9fcb, + 0xf900, 0xfa2d, + 0xfa30, 0xfa6d, + 0xfa70, 0xfad9, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Han */ + +/* 'Yi': Script */ +static const OnigCodePoint CR_Yi[] = { + 2, + 0xa000, 0xa48c, + 0xa490, 0xa4c6, +}; /* CR_Yi */ + +/* 'Old_Italic': Script */ +static const OnigCodePoint CR_Old_Italic[] = { + 2, + 0x10300, 0x1031e, + 0x10320, 0x10323, +}; /* CR_Old_Italic */ + +/* 'Gothic': Script */ +static const OnigCodePoint CR_Gothic[] = { + 1, + 0x10330, 0x1034a, +}; /* CR_Gothic */ + +/* 'Deseret': Script */ +static const OnigCodePoint CR_Deseret[] = { + 1, + 0x10400, 0x1044f, +}; /* CR_Deseret */ + +/* 'Inherited': Script */ +static const OnigCodePoint CR_Inherited[] = { + 23, 0x0300, 0x036f, - 0x0483, 0x0487, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x0610, 0x061a, - 0x064b, 0x065e, + 0x0485, 0x0486, + 0x064b, 0x0655, 0x0670, 0x0670, - 0x06d6, 0x06dc, - 0x06df, 0x06e4, - 0x06e7, 0x06e8, - 0x06ea, 0x06ed, - 0x0711, 0x0711, - 0x0730, 0x074a, - 0x07a6, 0x07b0, - 0x07eb, 0x07f3, - 0x0901, 0x0902, - 0x093c, 0x093c, - 0x0941, 0x0948, - 0x094d, 0x094d, - 0x0951, 0x0954, - 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, - 0x0c3e, 0x0c40, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c62, 0x0c63, - 0x0cbc, 0x0cbc, - 0x0cbf, 0x0cbf, - 0x0cc6, 0x0cc6, - 0x0ccc, 0x0ccd, - 0x0ce2, 0x0ce3, - 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, - 0x0f90, 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, - 0x135f, 0x135f, - 0x1712, 0x1714, - 0x1732, 0x1734, - 0x1752, 0x1753, - 0x1772, 0x1773, - 0x17b7, 0x17bd, - 0x17c6, 0x17c6, - 0x17c9, 0x17d3, - 0x17dd, 0x17dd, - 0x180b, 0x180d, - 0x18a9, 0x18a9, - 0x1920, 0x1922, - 0x1927, 0x1928, - 0x1932, 0x1932, - 0x1939, 0x193b, - 0x1a17, 0x1a18, - 0x1b00, 0x1b03, - 0x1b34, 0x1b34, - 0x1b36, 0x1b3a, - 0x1b3c, 0x1b3c, - 0x1b42, 0x1b42, - 0x1b6b, 0x1b73, - 0x1b80, 0x1b81, - 0x1ba2, 0x1ba5, - 0x1ba8, 0x1ba9, - 0x1c2c, 0x1c33, - 0x1c36, 0x1c37, + 0x0951, 0x0952, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1ce0, + 0x1ce2, 0x1ce8, + 0x1ced, 0x1ced, 0x1dc0, 0x1de6, - 0x1dfe, 0x1dff, - 0x20d0, 0x20dc, - 0x20e1, 0x20e1, - 0x20e5, 0x20f0, - 0x2de0, 0x2dff, + 0x1dfd, 0x1dff, + 0x200c, 0x200d, + 0x20d0, 0x20f0, 0x302a, 0x302f, 0x3099, 0x309a, - 0xa66f, 0xa66f, - 0xa67c, 0xa67d, - 0xa802, 0xa802, - 0xa806, 0xa806, - 0xa80b, 0xa80b, - 0xa825, 0xa826, - 0xa8c4, 0xa8c4, - 0xa926, 0xa92d, - 0xa947, 0xa951, - 0xaa29, 0xaa2e, - 0xaa31, 0xaa32, - 0xaa35, 0xaa36, - 0xaa43, 0xaa43, - 0xaa4c, 0xaa4c, - 0xfb1e, 0xfb1e, 0xfe00, 0xfe0f, 0xfe20, 0xfe26, - 0x101fd, 0x101fd, - 0x10a01, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a0f, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, + 0x101fd, 0x101fd, 0x1d167, 0x1d169, 0x1d17b, 0x1d182, 0x1d185, 0x1d18b, 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, 0xe0100, 0xe01ef, -}; /* CR_Mn */ +}; /* CR_Inherited */ -/* 'N': Major Category */ -static const OnigCodePoint CR_N[] = { - 69, - 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, - 0x0be6, 0x0bf2, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7e, - 0x0ce6, 0x0cef, - 0x0d66, 0x0d75, - 0x0e50, 0x0e59, - 0x0ed0, 0x0ed9, - 0x0f20, 0x0f33, - 0x1040, 0x1049, - 0x1090, 0x1099, - 0x1369, 0x137c, - 0x16ee, 0x16f0, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1810, 0x1819, - 0x1946, 0x194f, - 0x19d0, 0x19d9, - 0x1b50, 0x1b59, - 0x1bb0, 0x1bb9, - 0x1c40, 0x1c49, - 0x1c50, 0x1c59, - 0x2070, 0x2070, - 0x2074, 0x2079, - 0x2080, 0x2089, - 0x2153, 0x2182, - 0x2185, 0x2188, - 0x2460, 0x249b, - 0x24ea, 0x24ff, - 0x2776, 0x2793, - 0x2cfd, 0x2cfd, - 0x3007, 0x3007, - 0x3021, 0x3029, - 0x3038, 0x303a, - 0x3192, 0x3195, - 0x3220, 0x3229, - 0x3251, 0x325f, - 0x3280, 0x3289, - 0x32b1, 0x32bf, - 0xa620, 0xa629, - 0xa8d0, 0xa8d9, - 0xa900, 0xa909, - 0xaa50, 0xaa59, - 0xff10, 0xff19, - 0x10107, 0x10133, - 0x10140, 0x10178, - 0x1018a, 0x1018a, - 0x10320, 0x10323, - 0x10341, 0x10341, - 0x1034a, 0x1034a, - 0x103d1, 0x103d5, - 0x104a0, 0x104a9, - 0x10916, 0x10919, - 0x10a40, 0x10a47, - 0x12400, 0x12462, - 0x1d360, 0x1d371, - 0x1d7ce, 0x1d7ff, -}; /* CR_N */ +/* 'Tagalog': Script */ +static const OnigCodePoint CR_Tagalog[] = { + 2, + 0x1700, 0x170c, + 0x170e, 0x1714, +}; /* CR_Tagalog */ -/* 'Nd': General Category */ -static const OnigCodePoint CR_Nd[] = { - 33, - 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, - 0x0e50, 0x0e59, - 0x0ed0, 0x0ed9, - 0x0f20, 0x0f29, - 0x1040, 0x1049, - 0x1090, 0x1099, - 0x17e0, 0x17e9, - 0x1810, 0x1819, - 0x1946, 0x194f, - 0x19d0, 0x19d9, - 0x1b50, 0x1b59, - 0x1bb0, 0x1bb9, - 0x1c40, 0x1c49, - 0x1c50, 0x1c59, - 0xa620, 0xa629, - 0xa8d0, 0xa8d9, - 0xa900, 0xa909, - 0xaa50, 0xaa59, - 0xff10, 0xff19, +/* 'Hanunoo': Script */ +static const OnigCodePoint CR_Hanunoo[] = { + 1, + 0x1720, 0x1734, +}; /* CR_Hanunoo */ + +/* 'Buhid': Script */ +static const OnigCodePoint CR_Buhid[] = { + 1, + 0x1740, 0x1753, +}; /* CR_Buhid */ + +/* 'Tagbanwa': Script */ +static const OnigCodePoint CR_Tagbanwa[] = { + 3, + 0x1760, 0x176c, + 0x176e, 0x1770, + 0x1772, 0x1773, +}; /* CR_Tagbanwa */ + +/* 'Limbu': Script */ +static const OnigCodePoint CR_Limbu[] = { + 5, + 0x1900, 0x191c, + 0x1920, 0x192b, + 0x1930, 0x193b, + 0x1940, 0x1940, + 0x1944, 0x194f, +}; /* CR_Limbu */ + +/* 'Tai_Le': Script */ +static const OnigCodePoint CR_Tai_Le[] = { + 2, + 0x1950, 0x196d, + 0x1970, 0x1974, +}; /* CR_Tai_Le */ + +/* 'Linear_B': Script */ +static const OnigCodePoint CR_Linear_B[] = { + 7, + 0x10000, 0x1000b, + 0x1000d, 0x10026, + 0x10028, 0x1003a, + 0x1003c, 0x1003d, + 0x1003f, 0x1004d, + 0x10050, 0x1005d, + 0x10080, 0x100fa, +}; /* CR_Linear_B */ + +/* 'Ugaritic': Script */ +static const OnigCodePoint CR_Ugaritic[] = { + 2, + 0x10380, 0x1039d, + 0x1039f, 0x1039f, +}; /* CR_Ugaritic */ + +/* 'Shavian': Script */ +static const OnigCodePoint CR_Shavian[] = { + 1, + 0x10450, 0x1047f, +}; /* CR_Shavian */ + +/* 'Osmanya': Script */ +static const OnigCodePoint CR_Osmanya[] = { + 2, + 0x10480, 0x1049d, 0x104a0, 0x104a9, - 0x1d7ce, 0x1d7ff, -}; /* CR_Nd */ +}; /* CR_Osmanya */ + +/* 'Cypriot': Script */ +static const OnigCodePoint CR_Cypriot[] = { + 6, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x1083f, +}; /* CR_Cypriot */ + +/* 'Braille': Script */ +static const OnigCodePoint CR_Braille[] = { + 1, + 0x2800, 0x28ff, +}; /* CR_Braille */ + +/* 'Buginese': Script */ +static const OnigCodePoint CR_Buginese[] = { + 2, + 0x1a00, 0x1a1b, + 0x1a1e, 0x1a1f, +}; /* CR_Buginese */ + +/* 'Coptic': Script */ +static const OnigCodePoint CR_Coptic[] = { + 3, + 0x03e2, 0x03ef, + 0x2c80, 0x2cf1, + 0x2cf9, 0x2cff, +}; /* CR_Coptic */ + +/* 'New_Tai_Lue': Script */ +static const OnigCodePoint CR_New_Tai_Lue[] = { + 4, + 0x1980, 0x19ab, + 0x19b0, 0x19c9, + 0x19d0, 0x19da, + 0x19de, 0x19df, +}; /* CR_New_Tai_Lue */ + +/* 'Glagolitic': Script */ +static const OnigCodePoint CR_Glagolitic[] = { + 2, + 0x2c00, 0x2c2e, + 0x2c30, 0x2c5e, +}; /* CR_Glagolitic */ + +/* 'Tifinagh': Script */ +static const OnigCodePoint CR_Tifinagh[] = { + 2, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, +}; /* CR_Tifinagh */ + +/* 'Syloti_Nagri': Script */ +static const OnigCodePoint CR_Syloti_Nagri[] = { + 1, + 0xa800, 0xa82b, +}; /* CR_Syloti_Nagri */ + +/* 'Old_Persian': Script */ +static const OnigCodePoint CR_Old_Persian[] = { + 2, + 0x103a0, 0x103c3, + 0x103c8, 0x103d5, +}; /* CR_Old_Persian */ + +/* 'Kharoshthi': Script */ +static const OnigCodePoint CR_Kharoshthi[] = { + 8, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a47, + 0x10a50, 0x10a58, +}; /* CR_Kharoshthi */ -/* 'Nl': General Category */ -static const OnigCodePoint CR_Nl[] = { - 11, - 0x16ee, 0x16f0, - 0x2160, 0x2182, - 0x2185, 0x2188, - 0x3007, 0x3007, - 0x3021, 0x3029, - 0x3038, 0x303a, - 0x10140, 0x10174, - 0x10341, 0x10341, - 0x1034a, 0x1034a, - 0x103d1, 0x103d5, +/* 'Balinese': Script */ +static const OnigCodePoint CR_Balinese[] = { + 2, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b7c, +}; /* CR_Balinese */ + +/* 'Cuneiform': Script */ +static const OnigCodePoint CR_Cuneiform[] = { + 3, + 0x12000, 0x1236e, 0x12400, 0x12462, -}; /* CR_Nl */ + 0x12470, 0x12473, +}; /* CR_Cuneiform */ -/* 'No': General Category */ -static const OnigCodePoint CR_No[] = { - 30, - 0x00b2, 0x00b3, - 0x00b9, 0x00b9, - 0x00bc, 0x00be, - 0x09f4, 0x09f9, - 0x0bf0, 0x0bf2, - 0x0c78, 0x0c7e, - 0x0d70, 0x0d75, - 0x0f2a, 0x0f33, - 0x1369, 0x137c, - 0x17f0, 0x17f9, - 0x2070, 0x2070, - 0x2074, 0x2079, - 0x2080, 0x2089, - 0x2153, 0x215f, - 0x2460, 0x249b, - 0x24ea, 0x24ff, - 0x2776, 0x2793, - 0x2cfd, 0x2cfd, - 0x3192, 0x3195, - 0x3220, 0x3229, - 0x3251, 0x325f, - 0x3280, 0x3289, - 0x32b1, 0x32bf, - 0x10107, 0x10133, - 0x10175, 0x10178, - 0x1018a, 0x1018a, - 0x10320, 0x10323, - 0x10916, 0x10919, - 0x10a40, 0x10a47, - 0x1d360, 0x1d371, -}; /* CR_No */ +/* 'Phoenician': Script */ +static const OnigCodePoint CR_Phoenician[] = { + 2, + 0x10900, 0x1091b, + 0x1091f, 0x1091f, +}; /* CR_Phoenician */ -/* 'P': Major Category */ -static const OnigCodePoint CR_P[] = { - 112, - 0x0021, 0x0023, - 0x0025, 0x002a, - 0x002c, 0x002f, - 0x003a, 0x003b, - 0x003f, 0x0040, - 0x005b, 0x005d, - 0x005f, 0x005f, - 0x007b, 0x007b, - 0x007d, 0x007d, - 0x00a1, 0x00a1, - 0x00ab, 0x00ab, - 0x00b7, 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, - 0x0964, 0x0965, - 0x0970, 0x0970, - 0x0df4, 0x0df4, - 0x0e4f, 0x0e4f, - 0x0e5a, 0x0e5b, - 0x0f04, 0x0f12, - 0x0f3a, 0x0f3d, - 0x0f85, 0x0f85, - 0x0fd0, 0x0fd4, - 0x104a, 0x104f, - 0x10fb, 0x10fb, - 0x1361, 0x1368, - 0x166d, 0x166e, - 0x169b, 0x169c, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x17d4, 0x17d6, - 0x17d8, 0x17da, - 0x1800, 0x180a, - 0x1944, 0x1945, - 0x19de, 0x19df, - 0x1a1e, 0x1a1f, - 0x1b5a, 0x1b60, - 0x1c3b, 0x1c3f, - 0x1c7e, 0x1c7f, - 0x2010, 0x2027, - 0x2030, 0x2043, - 0x2045, 0x2051, - 0x2053, 0x205e, - 0x207d, 0x207e, - 0x208d, 0x208e, - 0x2329, 0x232a, - 0x2768, 0x2775, - 0x27c5, 0x27c6, - 0x27e6, 0x27ef, - 0x2983, 0x2998, - 0x29d8, 0x29db, - 0x29fc, 0x29fd, - 0x2cf9, 0x2cfc, - 0x2cfe, 0x2cff, - 0x2e00, 0x2e2e, - 0x2e30, 0x2e30, - 0x3001, 0x3003, - 0x3008, 0x3011, - 0x3014, 0x301f, - 0x3030, 0x3030, - 0x303d, 0x303d, - 0x30a0, 0x30a0, - 0x30fb, 0x30fb, - 0xa60d, 0xa60f, - 0xa673, 0xa673, - 0xa67e, 0xa67e, - 0xa874, 0xa877, - 0xa8ce, 0xa8cf, - 0xa92e, 0xa92f, +/* 'Phags_Pa': Script */ +static const OnigCodePoint CR_Phags_Pa[] = { + 1, + 0xa840, 0xa877, +}; /* CR_Phags_Pa */ + +/* 'Nko': Script */ +static const OnigCodePoint CR_Nko[] = { + 1, + 0x07c0, 0x07fa, +}; /* CR_Nko */ + +/* 'Sundanese': Script */ +static const OnigCodePoint CR_Sundanese[] = { + 2, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, +}; /* CR_Sundanese */ + +/* 'Lepcha': Script */ +static const OnigCodePoint CR_Lepcha[] = { + 3, + 0x1c00, 0x1c37, + 0x1c3b, 0x1c49, + 0x1c4d, 0x1c4f, +}; /* CR_Lepcha */ + +/* 'Ol_Chiki': Script */ +static const OnigCodePoint CR_Ol_Chiki[] = { + 1, + 0x1c50, 0x1c7f, +}; /* CR_Ol_Chiki */ + +/* 'Vai': Script */ +static const OnigCodePoint CR_Vai[] = { + 1, + 0xa500, 0xa62b, +}; /* CR_Vai */ + +/* 'Saurashtra': Script */ +static const OnigCodePoint CR_Saurashtra[] = { + 2, + 0xa880, 0xa8c4, + 0xa8ce, 0xa8d9, +}; /* CR_Saurashtra */ + +/* 'Kayah_Li': Script */ +static const OnigCodePoint CR_Kayah_Li[] = { + 1, + 0xa900, 0xa92f, +}; /* CR_Kayah_Li */ + +/* 'Rejang': Script */ +static const OnigCodePoint CR_Rejang[] = { + 2, + 0xa930, 0xa953, 0xa95f, 0xa95f, - 0xaa5c, 0xaa5f, - 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, 0x10101, - 0x1039f, 0x1039f, - 0x103d0, 0x103d0, - 0x1091f, 0x1091f, +}; /* CR_Rejang */ + +/* 'Lycian': Script */ +static const OnigCodePoint CR_Lycian[] = { + 1, + 0x10280, 0x1029c, +}; /* CR_Lycian */ + +/* 'Carian': Script */ +static const OnigCodePoint CR_Carian[] = { + 1, + 0x102a0, 0x102d0, +}; /* CR_Carian */ + +/* 'Lydian': Script */ +static const OnigCodePoint CR_Lydian[] = { + 2, + 0x10920, 0x10939, 0x1093f, 0x1093f, - 0x10a50, 0x10a58, - 0x12470, 0x12473, -}; /* CR_P */ +}; /* CR_Lydian */ + +/* 'Cham': Script */ +static const OnigCodePoint CR_Cham[] = { + 4, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa5c, 0xaa5f, +}; /* CR_Cham */ -/* 'Pc': General Category */ -static const OnigCodePoint CR_Pc[] = { - 6, - 0x005f, 0x005f, - 0x203f, 0x2040, - 0x2054, 0x2054, - 0xfe33, 0xfe34, - 0xfe4d, 0xfe4f, - 0xff3f, 0xff3f, -}; /* CR_Pc */ +/* 'Tai_Tham': Script */ +static const OnigCodePoint CR_Tai_Tham[] = { + 5, + 0x1a20, 0x1a5e, + 0x1a60, 0x1a7c, + 0x1a7f, 0x1a89, + 0x1a90, 0x1a99, + 0x1aa0, 0x1aad, +}; /* CR_Tai_Tham */ -/* 'Pd': General Category */ -static const OnigCodePoint CR_Pd[] = { - 14, - 0x002d, 0x002d, - 0x058a, 0x058a, - 0x05be, 0x05be, - 0x1806, 0x1806, - 0x2010, 0x2015, - 0x2e17, 0x2e17, - 0x2e1a, 0x2e1a, - 0x301c, 0x301c, - 0x3030, 0x3030, - 0x30a0, 0x30a0, - 0xfe31, 0xfe32, - 0xfe58, 0xfe58, - 0xfe63, 0xfe63, - 0xff0d, 0xff0d, -}; /* CR_Pd */ +/* 'Tai_Viet': Script */ +static const OnigCodePoint CR_Tai_Viet[] = { + 2, + 0xaa80, 0xaac2, + 0xaadb, 0xaadf, +}; /* CR_Tai_Viet */ -/* 'Pe': General Category */ -static const OnigCodePoint CR_Pe[] = { - 70, - 0x0029, 0x0029, - 0x005d, 0x005d, - 0x007d, 0x007d, - 0x0f3b, 0x0f3b, - 0x0f3d, 0x0f3d, - 0x169c, 0x169c, - 0x2046, 0x2046, - 0x207e, 0x207e, - 0x208e, 0x208e, - 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, - 0xfd3f, 0xfd3f, - 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, -}; /* CR_Pe */ +/* 'Avestan': Script */ +static const OnigCodePoint CR_Avestan[] = { + 2, + 0x10b00, 0x10b35, + 0x10b39, 0x10b3f, +}; /* CR_Avestan */ -/* '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, -}; /* CR_Pf */ +/* 'Egyptian_Hieroglyphs': Script */ +static const OnigCodePoint CR_Egyptian_Hieroglyphs[] = { + 1, + 0x13000, 0x1342e, +}; /* CR_Egyptian_Hieroglyphs */ -/* '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, -}; /* CR_Pi */ +/* 'Samaritan': Script */ +static const OnigCodePoint CR_Samaritan[] = { + 2, + 0x0800, 0x082d, + 0x0830, 0x083e, +}; /* CR_Samaritan */ -/* 'Po': General Category */ -static const OnigCodePoint CR_Po[] = { - 108, - 0x0021, 0x0023, - 0x0025, 0x0027, - 0x002a, 0x002a, - 0x002c, 0x002c, - 0x002e, 0x002f, - 0x003a, 0x003b, - 0x003f, 0x0040, - 0x005c, 0x005c, - 0x00a1, 0x00a1, - 0x00b7, 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, - 0x0964, 0x0965, - 0x0970, 0x0970, - 0x0df4, 0x0df4, - 0x0e4f, 0x0e4f, - 0x0e5a, 0x0e5b, - 0x0f04, 0x0f12, - 0x0f85, 0x0f85, - 0x0fd0, 0x0fd4, - 0x104a, 0x104f, - 0x10fb, 0x10fb, - 0x1361, 0x1368, - 0x166d, 0x166e, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x17d4, 0x17d6, - 0x17d8, 0x17da, - 0x1800, 0x1805, - 0x1807, 0x180a, - 0x1944, 0x1945, - 0x19de, 0x19df, - 0x1a1e, 0x1a1f, - 0x1b5a, 0x1b60, - 0x1c3b, 0x1c3f, - 0x1c7e, 0x1c7f, - 0x2016, 0x2017, - 0x2020, 0x2027, - 0x2030, 0x2038, - 0x203b, 0x203e, - 0x2041, 0x2043, - 0x2047, 0x2051, - 0x2053, 0x2053, - 0x2055, 0x205e, - 0x2cf9, 0x2cfc, - 0x2cfe, 0x2cff, - 0x2e00, 0x2e01, - 0x2e06, 0x2e08, - 0x2e0b, 0x2e0b, - 0x2e0e, 0x2e16, - 0x2e18, 0x2e19, - 0x2e1b, 0x2e1b, - 0x2e1e, 0x2e1f, - 0x2e2a, 0x2e2e, - 0x2e30, 0x2e30, - 0x3001, 0x3003, - 0x303d, 0x303d, - 0x30fb, 0x30fb, - 0xa60d, 0xa60f, - 0xa673, 0xa673, - 0xa67e, 0xa67e, - 0xa874, 0xa877, - 0xa8ce, 0xa8cf, - 0xa92e, 0xa92f, - 0xa95f, 0xa95f, - 0xaa5c, 0xaa5f, - 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, 0x10101, - 0x1039f, 0x1039f, - 0x103d0, 0x103d0, - 0x1091f, 0x1091f, - 0x1093f, 0x1093f, - 0x10a50, 0x10a58, - 0x12470, 0x12473, -}; /* CR_Po */ +/* 'Lisu': Script */ +static const OnigCodePoint CR_Lisu[] = { + 1, + 0xa4d0, 0xa4ff, +}; /* CR_Lisu */ + +/* 'Bamum': Script */ +static const OnigCodePoint CR_Bamum[] = { + 1, + 0xa6a0, 0xa6f7, +}; /* CR_Bamum */ + +/* 'Javanese': Script */ +static const OnigCodePoint CR_Javanese[] = { + 3, + 0xa980, 0xa9cd, + 0xa9cf, 0xa9d9, + 0xa9de, 0xa9df, +}; /* CR_Javanese */ -/* 'Ps': General Category */ -static const OnigCodePoint CR_Ps[] = { - 72, - 0x0028, 0x0028, - 0x005b, 0x005b, - 0x007b, 0x007b, - 0x0f3a, 0x0f3a, - 0x0f3c, 0x0f3c, - 0x169b, 0x169b, - 0x201a, 0x201a, - 0x201e, 0x201e, - 0x2045, 0x2045, - 0x207d, 0x207d, - 0x208d, 0x208d, - 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, - 0x3008, 0x3008, - 0x300a, 0x300a, - 0x300c, 0x300c, - 0x300e, 0x300e, - 0x3010, 0x3010, - 0x3014, 0x3014, - 0x3016, 0x3016, - 0x3018, 0x3018, - 0x301a, 0x301a, - 0x301d, 0x301d, - 0xfd3e, 0xfd3e, - 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, -}; /* CR_Ps */ +/* 'Meetei_Mayek': Script */ +static const OnigCodePoint CR_Meetei_Mayek[] = { + 2, + 0xabc0, 0xabed, + 0xabf0, 0xabf9, +}; /* CR_Meetei_Mayek */ -/* 'S': Major Category */ -static const OnigCodePoint CR_S[] = { - 179, - 0x0024, 0x0024, - 0x002b, 0x002b, - 0x003c, 0x003e, - 0x005e, 0x005e, - 0x0060, 0x0060, - 0x007c, 0x007c, - 0x007e, 0x007e, - 0x00a2, 0x00a9, - 0x00ac, 0x00ac, - 0x00ae, 0x00b1, - 0x00b4, 0x00b4, - 0x00b6, 0x00b6, - 0x00b8, 0x00b8, - 0x00d7, 0x00d7, - 0x00f7, 0x00f7, - 0x02c2, 0x02c5, - 0x02d2, 0x02df, - 0x02e5, 0x02eb, - 0x02ed, 0x02ed, - 0x02ef, 0x02ff, - 0x0375, 0x0375, - 0x0384, 0x0385, - 0x03f6, 0x03f6, - 0x0482, 0x0482, - 0x0606, 0x0608, - 0x060b, 0x060b, - 0x060e, 0x060f, - 0x06e9, 0x06e9, - 0x06fd, 0x06fe, - 0x07f6, 0x07f6, - 0x09f2, 0x09f3, - 0x09fa, 0x09fa, - 0x0af1, 0x0af1, - 0x0b70, 0x0b70, - 0x0bf3, 0x0bfa, - 0x0c7f, 0x0c7f, - 0x0cf1, 0x0cf2, - 0x0d79, 0x0d79, - 0x0e3f, 0x0e3f, - 0x0f01, 0x0f03, - 0x0f13, 0x0f17, - 0x0f1a, 0x0f1f, - 0x0f34, 0x0f34, - 0x0f36, 0x0f36, - 0x0f38, 0x0f38, - 0x0fbe, 0x0fc5, - 0x0fc7, 0x0fcc, - 0x0fce, 0x0fcf, - 0x109e, 0x109f, - 0x1360, 0x1360, - 0x1390, 0x1399, - 0x17db, 0x17db, - 0x1940, 0x1940, - 0x19e0, 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, 0x20b5, - 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, 0x2328, - 0x232b, 0x23e7, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x249c, 0x24e9, - 0x2500, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2767, - 0x2794, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27c4, - 0x27c7, 0x27ca, - 0x27cc, 0x27cc, - 0x27d0, 0x27e5, - 0x27f0, 0x2982, - 0x2999, 0x29d7, - 0x29dc, 0x29fb, - 0x29fe, 0x2b4c, - 0x2b50, 0x2b54, - 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, 0x3243, - 0x3250, 0x3250, - 0x3260, 0x327f, - 0x328a, 0x32b0, - 0x32c0, 0x32fe, - 0x3300, 0x33ff, - 0x4dc0, 0x4dff, - 0xa490, 0xa4c6, - 0xa700, 0xa716, - 0xa720, 0xa721, - 0xa789, 0xa78a, - 0xa828, 0xa82b, - 0xfb29, 0xfb29, - 0xfdfc, 0xfdfd, - 0xfe62, 0xfe62, - 0xfe64, 0xfe66, - 0xfe69, 0xfe69, - 0xff04, 0xff04, - 0xff0b, 0xff0b, - 0xff1c, 0xff1e, +/* 'Imperial_Aramaic': Script */ +static const OnigCodePoint CR_Imperial_Aramaic[] = { + 2, + 0x10840, 0x10855, + 0x10857, 0x1085f, +}; /* CR_Imperial_Aramaic */ + +/* 'Old_South_Arabian': Script */ +static const OnigCodePoint CR_Old_South_Arabian[] = { + 1, + 0x10a60, 0x10a7f, +}; /* CR_Old_South_Arabian */ + +/* 'Inscriptional_Parthian': Script */ +static const OnigCodePoint CR_Inscriptional_Parthian[] = { + 2, + 0x10b40, 0x10b55, + 0x10b58, 0x10b5f, +}; /* CR_Inscriptional_Parthian */ + +/* 'Inscriptional_Pahlavi': Script */ +static const OnigCodePoint CR_Inscriptional_Pahlavi[] = { + 2, + 0x10b60, 0x10b72, + 0x10b78, 0x10b7f, +}; /* CR_Inscriptional_Pahlavi */ + +/* 'Old_Turkic': Script */ +static const OnigCodePoint CR_Old_Turkic[] = { + 1, + 0x10c00, 0x10c48, +}; /* CR_Old_Turkic */ + +/* 'Kaithi': Script */ +static const OnigCodePoint CR_Kaithi[] = { + 1, + 0x11080, 0x110c1, +}; /* CR_Kaithi */ + +/* 'White_Space': Binary Property */ +static const OnigCodePoint CR_White_Space[] = { + 11, + 0x0009, 0x000d, + 0x0020, 0x0020, + 0x0085, 0x0085, + 0x00a0, 0x00a0, + 0x1680, 0x1680, + 0x180e, 0x180e, + 0x2000, 0x200a, + 0x2028, 0x2029, + 0x202f, 0x202f, + 0x205f, 0x205f, + 0x3000, 0x3000, +}; /* CR_White_Space */ + +/* 'Bidi_Control': Binary Property */ +static const OnigCodePoint CR_Bidi_Control[] = { + 2, + 0x200e, 0x200f, + 0x202a, 0x202e, +}; /* CR_Bidi_Control */ + +/* 'Join_Control': Binary Property */ +static const OnigCodePoint CR_Join_Control[] = { + 1, + 0x200c, 0x200d, +}; /* CR_Join_Control */ + +/* 'Dash': Binary Property */ +static const OnigCodePoint CR_Dash[] = { + 19, + 0x002d, 0x002d, + 0x058a, 0x058a, + 0x05be, 0x05be, + 0x1400, 0x1400, + 0x1806, 0x1806, + 0x2010, 0x2015, + 0x2053, 0x2053, + 0x207b, 0x207b, + 0x208b, 0x208b, + 0x2212, 0x2212, + 0x2e17, 0x2e17, + 0x2e1a, 0x2e1a, + 0x301c, 0x301c, + 0x3030, 0x3030, + 0x30a0, 0x30a0, + 0xfe31, 0xfe32, + 0xfe58, 0xfe58, + 0xfe63, 0xfe63, + 0xff0d, 0xff0d, +}; /* CR_Dash */ + +/* '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, +}; /* CR_Hyphen */ + +/* 'Quotation_Mark': Binary Property */ +static const OnigCodePoint CR_Quotation_Mark[] = { + 12, + 0x0022, 0x0022, + 0x0027, 0x0027, + 0x00ab, 0x00ab, + 0x00bb, 0x00bb, + 0x2018, 0x201f, + 0x2039, 0x203a, + 0x300c, 0x300f, + 0x301d, 0x301f, + 0xfe41, 0xfe44, + 0xff02, 0xff02, + 0xff07, 0xff07, + 0xff62, 0xff63, +}; /* CR_Quotation_Mark */ + +/* 'Terminal_Punctuation': Binary Property */ +static const OnigCodePoint CR_Terminal_Punctuation[] = { + 65, + 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, + 0x0964, 0x0965, + 0x0e5a, 0x0e5b, + 0x0f08, 0x0f08, + 0x0f0d, 0x0f12, + 0x104a, 0x104b, + 0x1361, 0x1368, + 0x166d, 0x166e, + 0x16eb, 0x16ed, + 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, + 0x3001, 0x3002, + 0xa4fe, 0xa4ff, + 0xa60d, 0xa60f, + 0xa6f3, 0xa6f7, + 0xa876, 0xa877, + 0xa8ce, 0xa8cf, + 0xa92f, 0xa92f, + 0xa9c7, 0xa9c9, + 0xaa5d, 0xaa5f, + 0xaadf, 0xaadf, + 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, + 0x10b3a, 0x10b3f, + 0x110be, 0x110c1, + 0x12470, 0x12473, +}; /* CR_Terminal_Punctuation */ + +/* 'Other_Math': Binary Property */ +static const OnigCodePoint CR_Other_Math[] = { + 99, + 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, + 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, + 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, - 0xff40, 0xff40, - 0xff5c, 0xff5c, - 0xff5e, 0xff5e, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfffc, 0xfffd, - 0x10102, 0x10102, - 0x10137, 0x1013f, - 0x10179, 0x10189, - 0x10190, 0x1019b, - 0x101d0, 0x101fc, - 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, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, -}; /* CR_S */ + 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, +}; /* CR_Other_Math */ -/* 'Sc': General Category */ -static const OnigCodePoint CR_Sc[] = { - 14, - 0x0024, 0x0024, - 0x00a2, 0x00a5, - 0x060b, 0x060b, - 0x09f2, 0x09f3, - 0x0af1, 0x0af1, - 0x0bf9, 0x0bf9, - 0x0e3f, 0x0e3f, - 0x17db, 0x17db, - 0x20a0, 0x20b5, - 0xfdfc, 0xfdfc, - 0xfe69, 0xfe69, - 0xff04, 0xff04, - 0xffe0, 0xffe1, - 0xffe5, 0xffe6, -}; /* CR_Sc */ +/* 'Hex_Digit': Binary Property */ +static const OnigCodePoint CR_Hex_Digit[] = { + 6, + 0x0030, 0x0039, + 0x0041, 0x0046, + 0x0061, 0x0066, + 0xff10, 0xff19, + 0xff21, 0xff26, + 0xff41, 0xff46, +}; /* CR_Hex_Digit */ + +/* 'ASCII_Hex_Digit': Binary Property */ +static const OnigCodePoint CR_ASCII_Hex_Digit[] = { + 3, + 0x0030, 0x0039, + 0x0041, 0x0046, + 0x0061, 0x0066, +}; /* CR_ASCII_Hex_Digit */ + +/* 'Other_Alphabetic': Binary Property */ +static const OnigCodePoint CR_Other_Alphabetic[] = { + 141, + 0x0345, 0x0345, + 0x05b0, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x0610, 0x061a, + 0x064b, 0x0657, + 0x0659, 0x065e, + 0x0670, 0x0670, + 0x06d6, 0x06dc, + 0x06e1, 0x06e4, + 0x06e7, 0x06e8, + 0x06ed, 0x06ed, + 0x0711, 0x0711, + 0x0730, 0x073f, + 0x07a6, 0x07b0, + 0x0816, 0x0817, + 0x081b, 0x0823, + 0x0825, 0x0827, + 0x0829, 0x082c, + 0x0900, 0x0903, + 0x093e, 0x094c, + 0x094e, 0x094e, + 0x0955, 0x0955, + 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, + 0x0c01, 0x0c03, + 0x0c3e, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4c, + 0x0c55, 0x0c56, + 0x0c62, 0x0c63, + 0x0c82, 0x0c83, + 0x0cbe, 0x0cc4, + 0x0cc6, 0x0cc8, + 0x0cca, 0x0ccc, + 0x0cd5, 0x0cd6, + 0x0ce2, 0x0ce3, + 0x0d02, 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, + 0x0f90, 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, + 0x1c24, 0x1c35, + 0x1cf2, 0x1cf2, + 0x24b6, 0x24e9, + 0x2de0, 0x2dff, + 0xa823, 0xa827, + 0xa880, 0xa881, + 0xa8b4, 0xa8c3, + 0xa926, 0xa92a, + 0xa947, 0xa952, + 0xa980, 0xa983, + 0xa9b3, 0xa9bf, + 0xaa29, 0xaa36, + 0xaa43, 0xaa43, + 0xaa4c, 0xaa4d, + 0xaab0, 0xaab0, + 0xaab2, 0xaab4, + 0xaab7, 0xaab8, + 0xaabe, 0xaabe, + 0xabe3, 0xabea, + 0xfb1e, 0xfb1e, + 0x10a01, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a0f, + 0x11082, 0x11082, + 0x110b0, 0x110b8, +}; /* CR_Other_Alphabetic */ -/* 'Sk': General Category */ -static const OnigCodePoint CR_Sk[] = { - 26, +/* 'Ideographic': Binary Property */ +static const OnigCodePoint CR_Ideographic[] = { + 11, + 0x3006, 0x3007, + 0x3021, 0x3029, + 0x3038, 0x303a, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xf900, 0xfa2d, + 0xfa30, 0xfa6d, + 0xfa70, 0xfad9, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Ideographic */ + +/* 'Diacritic': Binary Property */ +static const OnigCodePoint CR_Diacritic[] = { + 117, 0x005e, 0x005e, 0x0060, 0x0060, 0x00a8, 0x00a8, 0x00af, 0x00af, 0x00b4, 0x00b4, - 0x00b8, 0x00b8, - 0x02c2, 0x02c5, - 0x02d2, 0x02df, - 0x02e5, 0x02eb, - 0x02ed, 0x02ed, - 0x02ef, 0x02ff, - 0x0375, 0x0375, + 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, + 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, + 0x1b34, 0x1b34, + 0x1b44, 0x1b44, + 0x1b6b, 0x1b73, + 0x1baa, 0x1baa, + 0x1c36, 0x1c37, + 0x1c78, 0x1c7d, + 0x1cd0, 0x1ce8, + 0x1ced, 0x1ced, + 0x1d2c, 0x1d6a, + 0x1dc4, 0x1dcf, + 0x1dfd, 0x1dff, 0x1fbd, 0x1fbd, 0x1fbf, 0x1fc1, 0x1fcd, 0x1fcf, 0x1fdd, 0x1fdf, 0x1fed, 0x1fef, 0x1ffd, 0x1ffe, - 0x309b, 0x309c, - 0xa700, 0xa716, - 0xa720, 0xa721, - 0xa789, 0xa78a, + 0x2cef, 0x2cf1, + 0x2e2f, 0x2e2f, + 0x302a, 0x302f, + 0x3099, 0x309c, + 0x30fc, 0x30fc, + 0xa66f, 0xa66f, + 0xa67c, 0xa67d, + 0xa67f, 0xa67f, + 0xa6f0, 0xa6f1, + 0xa717, 0xa721, + 0xa788, 0xa788, + 0xa8c4, 0xa8c4, + 0xa8e0, 0xa8f1, + 0xa92b, 0xa92e, + 0xa953, 0xa953, + 0xa9b3, 0xa9b3, + 0xa9c0, 0xa9c0, + 0xaa7b, 0xaa7b, + 0xaabf, 0xaac2, + 0xabec, 0xabed, + 0xfb1e, 0xfb1e, + 0xfe20, 0xfe26, 0xff3e, 0xff3e, 0xff40, 0xff40, + 0xff70, 0xff70, + 0xff9e, 0xff9f, 0xffe3, 0xffe3, -}; /* CR_Sk */ + 0x110b9, 0x110ba, + 0x1d167, 0x1d169, + 0x1d16d, 0x1d172, + 0x1d17b, 0x1d182, + 0x1d185, 0x1d18b, + 0x1d1aa, 0x1d1ad, +}; /* CR_Diacritic */ -/* 'Sm': General Category */ -static const OnigCodePoint CR_Sm[] = { - 65, - 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, - 0x2140, 0x2144, - 0x214b, 0x214b, - 0x2190, 0x2194, - 0x219a, 0x219b, - 0x21a0, 0x21a0, - 0x21a3, 0x21a3, - 0x21a6, 0x21a6, - 0x21ae, 0x21ae, - 0x21ce, 0x21cf, - 0x21d2, 0x21d2, - 0x21d4, 0x21d4, - 0x21f4, 0x22ff, - 0x2308, 0x230b, - 0x2320, 0x2321, - 0x237c, 0x237c, - 0x239b, 0x23b3, - 0x23dc, 0x23e1, - 0x25b7, 0x25b7, - 0x25c1, 0x25c1, - 0x25f8, 0x25ff, - 0x266f, 0x266f, - 0x27c0, 0x27c4, - 0x27c7, 0x27ca, - 0x27cc, 0x27cc, - 0x27d0, 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, -}; /* CR_Sm */ +/* 'Extender': Binary Property */ +static const OnigCodePoint CR_Extender[] = { + 20, + 0x00b7, 0x00b7, + 0x02d0, 0x02d1, + 0x0640, 0x0640, + 0x07fa, 0x07fa, + 0x0e46, 0x0e46, + 0x0ec6, 0x0ec6, + 0x1843, 0x1843, + 0x1aa7, 0x1aa7, + 0x1c36, 0x1c36, + 0x1c7b, 0x1c7b, + 0x3005, 0x3005, + 0x3031, 0x3035, + 0x309d, 0x309e, + 0x30fc, 0x30fe, + 0xa015, 0xa015, + 0xa60c, 0xa60c, + 0xa9cf, 0xa9cf, + 0xaa70, 0xaa70, + 0xaadd, 0xaadd, + 0xff70, 0xff70, +}; /* CR_Extender */ + +/* 'Other_Lowercase': Binary Property */ +static const OnigCodePoint CR_Other_Lowercase[] = { + 13, + 0x02b0, 0x02b8, + 0x02c0, 0x02c1, + 0x02e0, 0x02e4, + 0x0345, 0x0345, + 0x037a, 0x037a, + 0x1d2c, 0x1d61, + 0x1d78, 0x1d78, + 0x1d9b, 0x1dbf, + 0x2090, 0x2094, + 0x2170, 0x217f, + 0x24d0, 0x24e9, + 0x2c7d, 0x2c7d, + 0xa770, 0xa770, +}; /* CR_Other_Lowercase */ + +/* 'Other_Uppercase': Binary Property */ +static const OnigCodePoint CR_Other_Uppercase[] = { + 2, + 0x2160, 0x216f, + 0x24b6, 0x24cf, +}; /* CR_Other_Uppercase */ + +/* '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, +}; /* CR_Noncharacter_Code_Point */ + +/* 'Other_Grapheme_Extend': Binary Property */ +static const OnigCodePoint CR_Other_Grapheme_Extend[] = { + 16, + 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, + 0xff9e, 0xff9f, + 0x1d165, 0x1d165, + 0x1d16e, 0x1d172, +}; /* CR_Other_Grapheme_Extend */ + +/* 'IDS_Binary_Operator': Binary Property */ +static const OnigCodePoint CR_IDS_Binary_Operator[] = { + 2, + 0x2ff0, 0x2ff1, + 0x2ff4, 0x2ffb, +}; /* CR_IDS_Binary_Operator */ + +/* 'IDS_Trinary_Operator': Binary Property */ +static const OnigCodePoint CR_IDS_Trinary_Operator[] = { + 1, + 0x2ff2, 0x2ff3, +}; /* CR_IDS_Trinary_Operator */ + +/* 'Radical': Binary Property */ +static const OnigCodePoint CR_Radical[] = { + 3, + 0x2e80, 0x2e99, + 0x2e9b, 0x2ef3, + 0x2f00, 0x2fd5, +}; /* CR_Radical */ + +/* 'Unified_Ideograph': Binary Property */ +static const OnigCodePoint CR_Unified_Ideograph[] = { + 11, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xfa0e, 0xfa0f, + 0xfa11, 0xfa11, + 0xfa13, 0xfa14, + 0xfa1f, 0xfa1f, + 0xfa21, 0xfa21, + 0xfa23, 0xfa24, + 0xfa27, 0xfa29, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, +}; /* CR_Unified_Ideograph */ + +/* 'Other_Default_Ignorable_Code_Point': Binary Property */ +static const OnigCodePoint CR_Other_Default_Ignorable_Code_Point[] = { + 10, + 0x034f, 0x034f, + 0x115f, 0x1160, + 0x2065, 0x2069, + 0x3164, 0x3164, + 0xffa0, 0xffa0, + 0xfff0, 0xfff8, + 0xe0000, 0xe0000, + 0xe0002, 0xe001f, + 0xe0080, 0xe00ff, + 0xe01f0, 0xe0fff, +}; /* CR_Other_Default_Ignorable_Code_Point */ + +/* 'Deprecated': Binary Property */ +static const OnigCodePoint CR_Deprecated[] = { + 8, + 0x0149, 0x0149, + 0x0f77, 0x0f77, + 0x0f79, 0x0f79, + 0x17a3, 0x17a4, + 0x206a, 0x206f, + 0x2329, 0x232a, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, +}; /* CR_Deprecated */ + +/* '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, +}; /* CR_Soft_Dotted */ + +/* 'Logical_Order_Exception': Binary Property */ +static const OnigCodePoint CR_Logical_Order_Exception[] = { + 5, + 0x0e40, 0x0e44, + 0x0ec0, 0x0ec4, + 0xaab5, 0xaab6, + 0xaab9, 0xaab9, + 0xaabb, 0xaabc, +}; /* CR_Logical_Order_Exception */ + +/* 'Other_ID_Start': Binary Property */ +static const OnigCodePoint CR_Other_ID_Start[] = { + 3, + 0x2118, 0x2118, + 0x212e, 0x212e, + 0x309b, 0x309c, +}; /* CR_Other_ID_Start */ + +/* 'Other_ID_Continue': Binary Property */ +static const OnigCodePoint CR_Other_ID_Continue[] = { + 3, + 0x00b7, 0x00b7, + 0x0387, 0x0387, + 0x1369, 0x1371, +}; /* CR_Other_ID_Continue */ + +/* 'STerm': Binary Property */ +static const OnigCodePoint CR_STerm[] = { + 43, + 0x0021, 0x0021, + 0x002e, 0x002e, + 0x003f, 0x003f, + 0x055c, 0x055c, + 0x055e, 0x055e, + 0x0589, 0x0589, + 0x061f, 0x061f, + 0x06d4, 0x06d4, + 0x0700, 0x0702, + 0x07f9, 0x07f9, + 0x0964, 0x0965, + 0x104a, 0x104b, + 0x1362, 0x1362, + 0x1367, 0x1368, + 0x166e, 0x166e, + 0x1803, 0x1803, + 0x1809, 0x1809, + 0x1944, 0x1945, + 0x1b5a, 0x1b5b, + 0x1b5e, 0x1b5f, + 0x1c3b, 0x1c3c, + 0x1c7e, 0x1c7f, + 0x203c, 0x203d, + 0x2047, 0x2049, + 0x2e2e, 0x2e2e, + 0x3002, 0x3002, + 0xa4ff, 0xa4ff, + 0xa60e, 0xa60f, + 0xa6f3, 0xa6f3, + 0xa6f7, 0xa6f7, + 0xa876, 0xa877, + 0xa8ce, 0xa8cf, + 0xa92f, 0xa92f, + 0xa9c8, 0xa9c9, + 0xaa5d, 0xaa5f, + 0xabeb, 0xabeb, + 0xfe52, 0xfe52, + 0xfe56, 0xfe57, + 0xff01, 0xff01, + 0xff0e, 0xff0e, + 0xff1f, 0xff1f, + 0xff61, 0xff61, + 0x110be, 0x110c1, +}; /* CR_STerm */ + +/* 'Variation_Selector': Binary Property */ +static const OnigCodePoint CR_Variation_Selector[] = { + 3, + 0x180b, 0x180d, + 0xfe00, 0xfe0f, + 0xe0100, 0xe01ef, +}; /* CR_Variation_Selector */ + +/* 'Pattern_White_Space': Binary Property */ +static const OnigCodePoint CR_Pattern_White_Space[] = { + 5, + 0x0009, 0x000d, + 0x0020, 0x0020, + 0x0085, 0x0085, + 0x200e, 0x200f, + 0x2028, 0x2029, +}; /* CR_Pattern_White_Space */ -/* 'So': General Category */ -static const OnigCodePoint CR_So[] = { - 134, - 0x00a6, 0x00a7, +/* '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, 0x00b0, + 0x00b0, 0x00b1, 0x00b6, 0x00b6, - 0x0482, 0x0482, - 0x060e, 0x060f, - 0x06e9, 0x06e9, - 0x06fd, 0x06fe, - 0x07f6, 0x07f6, - 0x09fa, 0x09fa, - 0x0b70, 0x0b70, - 0x0bf3, 0x0bf8, - 0x0bfa, 0x0bfa, - 0x0c7f, 0x0c7f, + 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, +}; /* CR_Pattern_Syntax */ +#endif /* USE_UNICODE_PROPERTIES */ +#endif /* USE_UNICODE_PROPERTIES */ + +/* 'NEWLINE': [[:NEWLINE:]] */ +static const OnigCodePoint CR_NEWLINE[] = { + 1, + 0x000a, 0x000a, +}; /* CR_NEWLINE */ + +/* 'Alpha': [[:Alpha:]] */ +#define CR_Alpha CR_Alphabetic + +/* 'Blank': [[:Blank:]] */ +static const OnigCodePoint CR_Blank[] = { + 9, + 0x0009, 0x0009, + 0x0020, 0x0020, + 0x00a0, 0x00a0, + 0x1680, 0x1680, + 0x180e, 0x180e, + 0x2000, 0x200a, + 0x202f, 0x202f, + 0x205f, 0x205f, + 0x3000, 0x3000, +}; /* CR_Blank */ + +/* 'Cntrl': [[:Cntrl:]] */ +#define CR_Cntrl CR_Cc + +/* 'Digit': [[:Digit:]] */ +#define CR_Digit CR_Nd + +/* 'Graph': [[:Graph:]] */ +static const OnigCodePoint CR_Graph[] = { + 490, + 0x0021, 0x007e, + 0x00a1, 0x0377, + 0x037a, 0x037e, + 0x0384, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x055f, + 0x0561, 0x0587, + 0x0589, 0x058a, + 0x0591, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f4, + 0x0600, 0x0603, + 0x0606, 0x061b, + 0x061e, 0x061f, + 0x0621, 0x065e, + 0x0660, 0x070d, + 0x070f, 0x074a, + 0x074d, 0x07b1, + 0x07c0, 0x07fa, + 0x0800, 0x082d, + 0x0830, 0x083e, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0972, + 0x0979, 0x097f, + 0x0981, 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, 0x0aef, + 0x0af1, 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, 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, 0x0bfa, + 0x0c01, 0x0c03, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c78, 0x0c7f, + 0x0c82, 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, - 0x0d79, 0x0d79, - 0x0f01, 0x0f03, - 0x0f13, 0x0f17, - 0x0f1a, 0x0f1f, - 0x0f34, 0x0f34, - 0x0f36, 0x0f36, - 0x0f38, 0x0f38, - 0x0fbe, 0x0fc5, - 0x0fc7, 0x0fcc, - 0x0fce, 0x0fcf, - 0x109e, 0x109f, - 0x1360, 0x1360, - 0x1390, 0x1399, + 0x0d02, 0x0d03, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4d, + 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, + 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, 0x0edd, + 0x0f00, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fbe, 0x0fcc, + 0x0fce, 0x0fd8, + 0x1000, 0x10c5, + 0x10d0, 0x10fc, + 0x1100, 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, 0x137c, + 0x1380, 0x1399, + 0x13a0, 0x13f4, + 0x1400, 0x167f, + 0x1681, 0x169c, + 0x16a0, 0x16f0, + 0x1700, 0x170c, + 0x170e, 0x1714, + 0x1720, 0x1736, + 0x1740, 0x1753, + 0x1760, 0x176c, + 0x176e, 0x1770, + 0x1772, 0x1773, + 0x1780, 0x17dd, + 0x17e0, 0x17e9, + 0x17f0, 0x17f9, + 0x1800, 0x180d, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18aa, + 0x18b0, 0x18f5, + 0x1900, 0x191c, + 0x1920, 0x192b, + 0x1930, 0x193b, 0x1940, 0x1940, - 0x19e0, 0x19ff, - 0x1b61, 0x1b6a, - 0x1b74, 0x1b7c, - 0x2100, 0x2101, - 0x2103, 0x2106, - 0x2108, 0x2109, - 0x2114, 0x2114, - 0x2116, 0x2118, - 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, 0x23e7, + 0x1944, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19b0, 0x19c9, + 0x19d0, 0x19da, + 0x19de, 0x1a1b, + 0x1a1e, 0x1a5e, + 0x1a60, 0x1a7c, + 0x1a7f, 0x1a89, + 0x1a90, 0x1a99, + 0x1aa0, 0x1aad, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b7c, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c37, + 0x1c3b, 0x1c49, + 0x1c4d, 0x1c7f, + 0x1cd0, 0x1cf2, + 0x1d00, 0x1de6, + 0x1dfd, 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, + 0x206a, 0x2071, + 0x2074, 0x208e, + 0x2090, 0x2094, + 0x20a0, 0x20b8, + 0x20d0, 0x20f0, + 0x2100, 0x2189, + 0x2190, 0x23e8, 0x2400, 0x2426, 0x2440, 0x244a, - 0x249c, 0x24e9, - 0x2500, 0x25b6, - 0x25b8, 0x25c0, - 0x25c2, 0x25f7, - 0x2600, 0x266e, - 0x2670, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, + 0x2460, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, 0x2701, 0x2704, 0x2706, 0x2709, 0x270c, 0x2727, 0x2729, 0x274b, 0x274d, 0x274d, 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2767, - 0x2794, 0x2794, + 0x2756, 0x275e, + 0x2761, 0x2794, 0x2798, 0x27af, 0x27b1, 0x27be, - 0x2800, 0x28ff, - 0x2b00, 0x2b2f, - 0x2b45, 0x2b46, - 0x2b50, 0x2b54, - 0x2ce5, 0x2cea, + 0x27c0, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 0x2b4c, + 0x2b50, 0x2b59, + 0x2c00, 0x2c2e, + 0x2c30, 0x2c5e, + 0x2c60, 0x2cf1, + 0x2cf9, 0x2d25, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, + 0x2d80, 0x2d96, + 0x2da0, 0x2da6, + 0x2da8, 0x2dae, + 0x2db0, 0x2db6, + 0x2db8, 0x2dbe, + 0x2dc0, 0x2dc6, + 0x2dc8, 0x2dce, + 0x2dd0, 0x2dd6, + 0x2dd8, 0x2dde, + 0x2de0, 0x2e31, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, - 0x3004, 0x3004, - 0x3012, 0x3013, - 0x3020, 0x3020, - 0x3036, 0x3037, - 0x303e, 0x303f, - 0x3190, 0x3191, - 0x3196, 0x319f, + 0x3001, 0x303f, + 0x3041, 0x3096, + 0x3099, 0x30ff, + 0x3105, 0x312d, + 0x3131, 0x318e, + 0x3190, 0x31b7, 0x31c0, 0x31e3, - 0x3200, 0x321e, - 0x322a, 0x3243, - 0x3250, 0x3250, - 0x3260, 0x327f, - 0x328a, 0x32b0, - 0x32c0, 0x32fe, - 0x3300, 0x33ff, - 0x4dc0, 0x4dff, + 0x31f0, 0x321e, + 0x3220, 0x32fe, + 0x3300, 0x4db5, + 0x4dc0, 0x9fcb, + 0xa000, 0xa48c, 0xa490, 0xa4c6, - 0xa828, 0xa82b, - 0xfdfd, 0xfdfd, - 0xffe4, 0xffe4, - 0xffe8, 0xffe8, - 0xffed, 0xffee, - 0xfffc, 0xfffd, - 0x10102, 0x10102, - 0x10137, 0x1013f, - 0x10179, 0x10189, + 0xa4d0, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa673, + 0xa67c, 0xa697, + 0xa6a0, 0xa6f7, + 0xa700, 0xa78c, + 0xa7fb, 0xa82b, + 0xa830, 0xa839, + 0xa840, 0xa877, + 0xa880, 0xa8c4, + 0xa8ce, 0xa8d9, + 0xa8e0, 0xa8fb, + 0xa900, 0xa953, + 0xa95f, 0xa97c, + 0xa980, 0xa9cd, + 0xa9cf, 0xa9d9, + 0xa9de, 0xa9df, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa5c, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadf, + 0xabc0, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xe000, 0xfa2d, + 0xfa30, 0xfa6d, + 0xfa70, 0xfad9, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xfb1d, 0xfb36, + 0xfb38, 0xfb3c, + 0xfb3e, 0xfb3e, + 0xfb40, 0xfb41, + 0xfb43, 0xfb44, + 0xfb46, 0xfbb1, + 0xfbd3, 0xfd3f, + 0xfd50, 0xfd8f, + 0xfd92, 0xfdc7, + 0xfdf0, 0xfdfd, + 0xfe00, 0xfe19, + 0xfe20, 0xfe26, + 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, 0x1018a, 0x10190, 0x1019b, - 0x101d0, 0x101fc, + 0x101d0, 0x101fd, + 0x10280, 0x1029c, + 0x102a0, 0x102d0, + 0x10300, 0x1031e, + 0x10320, 0x10323, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x1039f, 0x103c3, + 0x103c8, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10857, 0x1085f, + 0x10900, 0x1091b, + 0x1091f, 0x10939, + 0x1093f, 0x1093f, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a47, + 0x10a50, 0x10a58, + 0x10a60, 0x10a7f, + 0x10b00, 0x10b35, + 0x10b39, 0x10b55, + 0x10b58, 0x10b72, + 0x10b78, 0x10b7f, + 0x10c00, 0x10c48, + 0x10e60, 0x10e7e, + 0x11080, 0x110c1, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x12470, 0x12473, + 0x13000, 0x1342e, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, - 0x1d129, 0x1d164, - 0x1d16a, 0x1d16c, - 0x1d183, 0x1d184, - 0x1d18c, 0x1d1a9, - 0x1d1ae, 0x1d1dd, - 0x1d200, 0x1d241, - 0x1d245, 0x1d245, + 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, 0x1f000, 0x1f02b, 0x1f030, 0x1f093, -}; /* CR_So */ - -/* 'Z': Major Category */ -static const OnigCodePoint CR_Z[] = { - 9, - 0x0020, 0x0020, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x180e, 0x180e, - 0x2000, 0x200a, - 0x2028, 0x2029, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000, -}; /* CR_Z */ - -/* 'Zl': General Category */ -static const OnigCodePoint CR_Zl[] = { - 1, - 0x2028, 0x2028, -}; /* CR_Zl */ - -/* 'Zp': General Category */ -static const OnigCodePoint CR_Zp[] = { - 1, - 0x2029, 0x2029, -}; /* CR_Zp */ + 0x1f100, 0x1f10a, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, + 0xe0100, 0xe01ef, + 0xf0000, 0xffffd, + 0x100000, 0x10fffd, +}; /* CR_Graph */ -/* 'Zs': General Category */ -static const OnigCodePoint CR_Zs[] = { - 8, - 0x0020, 0x0020, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x180e, 0x180e, - 0x2000, 0x200a, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000, -}; /* CR_Zs */ +/* 'Lower': [[:Lower:]] */ +#define CR_Lower CR_Lowercase -/* 'Common': Script */ -static const OnigCodePoint CR_Common[] = { - 137, - 0x0000, 0x0040, - 0x005b, 0x0060, - 0x007b, 0x00a9, - 0x00ab, 0x00b9, - 0x00bb, 0x00bf, - 0x00d7, 0x00d7, - 0x00f7, 0x00f7, - 0x02b9, 0x02df, - 0x02e5, 0x02ff, - 0x0374, 0x0374, - 0x037e, 0x037e, - 0x0385, 0x0385, - 0x0387, 0x0387, - 0x0589, 0x0589, +/* 'Print': [[:Print:]] */ +static const OnigCodePoint CR_Print[] = { + 487, + 0x0020, 0x007e, + 0x00a0, 0x0377, + 0x037a, 0x037e, + 0x0384, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x055f, + 0x0561, 0x0587, + 0x0589, 0x058a, + 0x0591, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f4, 0x0600, 0x0603, - 0x060c, 0x060c, - 0x061b, 0x061b, - 0x061f, 0x061f, - 0x0640, 0x0640, - 0x0660, 0x0669, - 0x06dd, 0x06dd, - 0x0964, 0x0965, - 0x0970, 0x0970, + 0x0606, 0x061b, + 0x061e, 0x061f, + 0x0621, 0x065e, + 0x0660, 0x070d, + 0x070f, 0x074a, + 0x074d, 0x07b1, + 0x07c0, 0x07fa, + 0x0800, 0x082d, + 0x0830, 0x083e, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0972, + 0x0979, 0x097f, + 0x0981, 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, 0x0aef, + 0x0af1, 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, 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, 0x0bfa, + 0x0c01, 0x0c03, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c78, 0x0c7f, + 0x0c82, 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, - 0x0e3f, 0x0e3f, - 0x10fb, 0x10fb, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x1802, 0x1803, - 0x1805, 0x1805, - 0x2000, 0x200b, - 0x200e, 0x2064, - 0x206a, 0x2070, - 0x2074, 0x207e, - 0x2080, 0x208e, - 0x20a0, 0x20b5, - 0x2100, 0x2125, - 0x2127, 0x2129, - 0x212c, 0x2131, - 0x2133, 0x214d, - 0x214f, 0x214f, - 0x2153, 0x215f, - 0x2190, 0x23e7, + 0x0d02, 0x0d03, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4d, + 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, + 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, 0x0edd, + 0x0f00, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fbe, 0x0fcc, + 0x0fce, 0x0fd8, + 0x1000, 0x10c5, + 0x10d0, 0x10fc, + 0x1100, 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, 0x137c, + 0x1380, 0x1399, + 0x13a0, 0x13f4, + 0x1400, 0x169c, + 0x16a0, 0x16f0, + 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, 0x191c, + 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, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b7c, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c37, + 0x1c3b, 0x1c49, + 0x1c4d, 0x1c7f, + 0x1cd0, 0x1cf2, + 0x1d00, 0x1de6, + 0x1dfd, 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, + 0x206a, 0x2071, + 0x2074, 0x208e, + 0x2090, 0x2094, + 0x20a0, 0x20b8, + 0x20d0, 0x20f0, + 0x2100, 0x2189, + 0x2190, 0x23e8, 0x2400, 0x2426, 0x2440, 0x244a, - 0x2460, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, + 0x2460, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, 0x2701, 0x2704, 0x2706, 0x2709, 0x270c, 0x2727, 0x2729, 0x274b, 0x274d, 0x274d, 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, + 0x2756, 0x275e, 0x2761, 0x2794, 0x2798, 0x27af, 0x27b1, 0x27be, 0x27c0, 0x27ca, 0x27cc, 0x27cc, - 0x27d0, 0x27ff, - 0x2900, 0x2b4c, - 0x2b50, 0x2b54, - 0x2e00, 0x2e30, + 0x27d0, 0x2b4c, + 0x2b50, 0x2b59, + 0x2c00, 0x2c2e, + 0x2c30, 0x2c5e, + 0x2c60, 0x2cf1, + 0x2cf9, 0x2d25, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, + 0x2d80, 0x2d96, + 0x2da0, 0x2da6, + 0x2da8, 0x2dae, + 0x2db0, 0x2db6, + 0x2db8, 0x2dbe, + 0x2dc0, 0x2dc6, + 0x2dc8, 0x2dce, + 0x2dd0, 0x2dd6, + 0x2dd8, 0x2dde, + 0x2de0, 0x2e31, + 0x2e80, 0x2e99, + 0x2e9b, 0x2ef3, + 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, - 0x3000, 0x3004, - 0x3006, 0x3006, - 0x3008, 0x3020, - 0x3030, 0x3037, - 0x303c, 0x303f, - 0x309b, 0x309c, - 0x30a0, 0x30a0, - 0x30fb, 0x30fc, - 0x3190, 0x319f, + 0x3000, 0x303f, + 0x3041, 0x3096, + 0x3099, 0x30ff, + 0x3105, 0x312d, + 0x3131, 0x318e, + 0x3190, 0x31b7, 0x31c0, 0x31e3, - 0x3220, 0x3243, - 0x3250, 0x325f, - 0x327f, 0x32cf, - 0x3358, 0x33ff, - 0x4dc0, 0x4dff, - 0xa700, 0xa721, - 0xa788, 0xa78a, - 0xfd3e, 0xfd3f, - 0xfdfd, 0xfdfd, - 0xfe10, 0xfe19, + 0x31f0, 0x321e, + 0x3220, 0x32fe, + 0x3300, 0x4db5, + 0x4dc0, 0x9fcb, + 0xa000, 0xa48c, + 0xa490, 0xa4c6, + 0xa4d0, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa673, + 0xa67c, 0xa697, + 0xa6a0, 0xa6f7, + 0xa700, 0xa78c, + 0xa7fb, 0xa82b, + 0xa830, 0xa839, + 0xa840, 0xa877, + 0xa880, 0xa8c4, + 0xa8ce, 0xa8d9, + 0xa8e0, 0xa8fb, + 0xa900, 0xa953, + 0xa95f, 0xa97c, + 0xa980, 0xa9cd, + 0xa9cf, 0xa9d9, + 0xa9de, 0xa9df, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa5c, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadf, + 0xabc0, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xe000, 0xfa2d, + 0xfa30, 0xfa6d, + 0xfa70, 0xfad9, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xfb1d, 0xfb36, + 0xfb38, 0xfb3c, + 0xfb3e, 0xfb3e, + 0xfb40, 0xfb41, + 0xfb43, 0xfb44, + 0xfb46, 0xfbb1, + 0xfbd3, 0xfd3f, + 0xfd50, 0xfd8f, + 0xfd92, 0xfdc7, + 0xfdf0, 0xfdfd, + 0xfe00, 0xfe19, + 0xfe20, 0xfe26, 0xfe30, 0xfe52, 0xfe54, 0xfe66, 0xfe68, 0xfe6b, + 0xfe70, 0xfe74, + 0xfe76, 0xfefc, 0xfeff, 0xfeff, - 0xff01, 0xff20, - 0xff3b, 0xff40, - 0xff5b, 0xff65, - 0xff70, 0xff70, - 0xff9e, 0xff9f, + 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, 0x1013f, + 0x10137, 0x1018a, 0x10190, 0x1019b, - 0x101d0, 0x101fc, + 0x101d0, 0x101fd, + 0x10280, 0x1029c, + 0x102a0, 0x102d0, + 0x10300, 0x1031e, + 0x10320, 0x10323, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x1039f, 0x103c3, + 0x103c8, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10857, 0x1085f, + 0x10900, 0x1091b, + 0x1091f, 0x10939, + 0x1093f, 0x1093f, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a47, + 0x10a50, 0x10a58, + 0x10a60, 0x10a7f, + 0x10b00, 0x10b35, + 0x10b39, 0x10b55, + 0x10b58, 0x10b72, + 0x10b78, 0x10b7f, + 0x10c00, 0x10c48, + 0x10e60, 0x10e7e, + 0x11080, 0x110c1, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x12470, 0x12473, + 0x13000, 0x1342e, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, - 0x1d129, 0x1d166, - 0x1d16a, 0x1d17a, - 0x1d183, 0x1d184, - 0x1d18c, 0x1d1a9, - 0x1d1ae, 0x1d1dd, + 0x1d129, 0x1d1dd, + 0x1d200, 0x1d245, 0x1d300, 0x1d356, 0x1d360, 0x1d371, 0x1d400, 0x1d454, @@ -8375,174 +15097,623 @@ static const OnigCodePoint CR_Common[] = { 0x1d546, 0x1d546, 0x1d54a, 0x1d550, 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d7cb, + 0x1d6a8, 0x1d7cb, + 0x1d7ce, 0x1d7ff, + 0x1f000, 0x1f02b, + 0x1f030, 0x1f093, + 0x1f100, 0x1f10a, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, + 0xe0100, 0xe01ef, + 0xf0000, 0xffffd, + 0x100000, 0x10fffd, +}; /* CR_Print */ + +/* 'Punct': [[:Punct:]] */ +#define CR_Punct CR_P + +/* 'Space': [[:Space:]] */ +#define CR_Space CR_White_Space + +/* 'Upper': [[:Upper:]] */ +#define CR_Upper CR_Uppercase + +/* 'XDigit': [[:XDigit:]] */ +#define CR_XDigit CR_ASCII_Hex_Digit + +/* 'Word': [[:Word:]] */ +static const OnigCodePoint CR_Word[] = { + 506, + 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, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x0483, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0610, 0x061a, + 0x0621, 0x065e, + 0x0660, 0x0669, + 0x066e, 0x06d3, + 0x06d5, 0x06dc, + 0x06de, 0x06e8, + 0x06ea, 0x06fc, + 0x06ff, 0x06ff, + 0x0710, 0x074a, + 0x074d, 0x07b1, + 0x07c0, 0x07f5, + 0x07fa, 0x07fa, + 0x0800, 0x082d, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0963, + 0x0966, 0x096f, + 0x0971, 0x0972, + 0x0979, 0x097f, + 0x0981, 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, + 0x0c01, 0x0c03, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c82, 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, + 0x0d02, 0x0d03, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4d, + 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, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f18, 0x0f19, + 0x0f20, 0x0f29, + 0x0f35, 0x0f35, + 0x0f37, 0x0f37, + 0x0f39, 0x0f39, + 0x0f3e, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f84, + 0x0f86, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fc6, 0x0fc6, + 0x1000, 0x1049, + 0x1050, 0x109d, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, 0x16f0, + 0x1700, 0x170c, + 0x170e, 0x1714, + 0x1720, 0x1734, + 0x1740, 0x1753, + 0x1760, 0x176c, + 0x176e, 0x1770, + 0x1772, 0x1773, + 0x1780, 0x17b3, + 0x17b6, 0x17d3, + 0x17d7, 0x17d7, + 0x17dc, 0x17dd, + 0x17e0, 0x17e9, + 0x180b, 0x180d, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18aa, + 0x18b0, 0x18f5, + 0x1900, 0x191c, + 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, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b59, + 0x1b6b, 0x1b73, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c37, + 0x1c40, 0x1c49, + 0x1c4d, 0x1c7d, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1cf2, + 0x1d00, 0x1de6, + 0x1dfd, 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, 0x2094, + 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, 0x2cf1, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 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, 0x302f, + 0x3031, 0x3035, + 0x3038, 0x303c, + 0x3041, 0x3096, + 0x3099, 0x309a, + 0x309d, 0x309f, + 0x30a1, 0x30fa, + 0x30fc, 0x30ff, + 0x3105, 0x312d, + 0x3131, 0x318e, + 0x31a0, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa672, + 0xa67c, 0xa67d, + 0xa67f, 0xa697, + 0xa6a0, 0xa6f1, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 0xa827, + 0xa840, 0xa873, + 0xa880, 0xa8c4, + 0xa8d0, 0xa8d9, + 0xa8e0, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa900, 0xa92d, + 0xa930, 0xa953, + 0xa960, 0xa97c, + 0xa980, 0xa9c0, + 0xa9cf, 0xa9d9, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabea, + 0xabec, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0xfe26, + 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, + 0x10300, 0x1031e, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11080, 0x110ba, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 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, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, -}; /* CR_Common */ + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, + 0xe0100, 0xe01ef, +}; /* CR_Word */ -/* 'Latin': Script */ -static const OnigCodePoint CR_Latin[] = { - 29, +/* 'Alnum': [[:Alnum:]] */ +static const OnigCodePoint CR_Alnum[] = { + 497, + 0x0030, 0x0039, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, + 0x00b5, 0x00b5, 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, 0x2094, - 0x212a, 0x212b, - 0x2132, 0x2132, - 0x214e, 0x214e, - 0x2160, 0x2188, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0xa722, 0xa787, - 0xa78b, 0xa78c, - 0xa7fb, 0xa7ff, - 0xfb00, 0xfb06, - 0xff21, 0xff3a, - 0xff41, 0xff5a, -}; /* CR_Latin */ - -/* 'Greek': Script */ -static const OnigCodePoint CR_Greek[] = { - 33, - 0x0370, 0x0373, - 0x0375, 0x0377, - 0x037a, 0x037d, - 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, - 0x10140, 0x1018a, - 0x1d200, 0x1d245, -}; /* CR_Greek */ - -/* 'Cyrillic': Script */ -static const OnigCodePoint CR_Cyrillic[] = { - 7, - 0x0400, 0x0523, - 0x1d2b, 0x1d2b, - 0x1d78, 0x1d78, - 0x2de0, 0x2dff, - 0xa640, 0xa65f, - 0xa662, 0xa673, - 0xa67c, 0xa697, -}; /* CR_Cyrillic */ - -/* 'Armenian': Script */ -static const OnigCodePoint CR_Armenian[] = { - 5, + 0x00d8, 0x00f6, + 0x00f8, 0x02c1, + 0x02c6, 0x02d1, + 0x02e0, 0x02e4, + 0x02ec, 0x02ec, + 0x02ee, 0x02ee, + 0x0345, 0x0345, + 0x0370, 0x0374, + 0x0376, 0x0377, + 0x037a, 0x037d, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x048a, 0x0525, 0x0531, 0x0556, - 0x0559, 0x055f, + 0x0559, 0x0559, 0x0561, 0x0587, - 0x058a, 0x058a, - 0xfb13, 0xfb17, -}; /* CR_Armenian */ - -/* 'Hebrew': Script */ -static const OnigCodePoint CR_Hebrew[] = { - 9, - 0x0591, 0x05c7, + 0x05b0, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfb4f, -}; /* CR_Hebrew */ - -/* 'Arabic': Script */ -static const OnigCodePoint CR_Arabic[] = { - 17, - 0x0606, 0x060b, - 0x060d, 0x061a, - 0x061e, 0x061e, - 0x0621, 0x063f, - 0x0641, 0x064a, - 0x0656, 0x065e, - 0x066a, 0x066f, - 0x0671, 0x06dc, - 0x06de, 0x06ff, - 0x0750, 0x077f, - 0xfb50, 0xfbb1, - 0xfbd3, 0xfd3d, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfc, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, -}; /* CR_Arabic */ - -/* 'Syriac': Script */ -static const OnigCodePoint CR_Syriac[] = { - 3, - 0x0700, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x074f, -}; /* CR_Syriac */ - -/* 'Thaana': Script */ -static const OnigCodePoint CR_Thaana[] = { - 1, - 0x0780, 0x07b1, -}; /* CR_Thaana */ - -/* 'Devanagari': Script */ -static const OnigCodePoint CR_Devanagari[] = { - 8, - 0x0901, 0x0939, - 0x093c, 0x094d, + 0x05f0, 0x05f2, + 0x0610, 0x061a, + 0x0621, 0x0657, + 0x0659, 0x065e, + 0x0660, 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, + 0x0900, 0x0939, + 0x093d, 0x094c, + 0x094e, 0x094e, 0x0950, 0x0950, - 0x0953, 0x0954, + 0x0955, 0x0955, 0x0958, 0x0963, 0x0966, 0x096f, 0x0971, 0x0972, - 0x097b, 0x097f, -}; /* CR_Devanagari */ - -/* 'Bengali': Script */ -static const OnigCodePoint CR_Bengali[] = { - 14, + 0x0979, 0x097f, 0x0981, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, @@ -8550,18 +15721,14 @@ static const OnigCodePoint CR_Bengali[] = { 0x09aa, 0x09b0, 0x09b2, 0x09b2, 0x09b6, 0x09b9, - 0x09bc, 0x09c4, + 0x09bd, 0x09c4, 0x09c7, 0x09c8, - 0x09cb, 0x09ce, + 0x09cb, 0x09cc, + 0x09ce, 0x09ce, 0x09d7, 0x09d7, 0x09dc, 0x09dd, 0x09df, 0x09e3, - 0x09e6, 0x09fa, -}; /* CR_Bengali */ - -/* 'Gurmukhi': Script */ -static const OnigCodePoint CR_Gurmukhi[] = { - 16, + 0x09e6, 0x09f1, 0x0a01, 0x0a03, 0x0a05, 0x0a0a, 0x0a0f, 0x0a10, @@ -8570,19 +15737,13 @@ static const OnigCodePoint CR_Gurmukhi[] = { 0x0a32, 0x0a33, 0x0a35, 0x0a36, 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, 0x0a3e, 0x0a42, 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, + 0x0a4b, 0x0a4c, 0x0a51, 0x0a51, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e, 0x0a66, 0x0a75, -}; /* CR_Gurmukhi */ - -/* 'Gujarati': Script */ -static const OnigCodePoint CR_Gujarati[] = { - 14, 0x0a81, 0x0a83, 0x0a85, 0x0a8d, 0x0a8f, 0x0a91, @@ -8590,18 +15751,12 @@ static const OnigCodePoint CR_Gujarati[] = { 0x0aaa, 0x0ab0, 0x0ab2, 0x0ab3, 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, + 0x0abd, 0x0ac5, 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, + 0x0acb, 0x0acc, 0x0ad0, 0x0ad0, 0x0ae0, 0x0ae3, 0x0ae6, 0x0aef, - 0x0af1, 0x0af1, -}; /* CR_Gujarati */ - -/* 'Oriya': Script */ -static const OnigCodePoint CR_Oriya[] = { - 14, 0x0b01, 0x0b03, 0x0b05, 0x0b0c, 0x0b0f, 0x0b10, @@ -8609,18 +15764,14 @@ static const OnigCodePoint CR_Oriya[] = { 0x0b2a, 0x0b30, 0x0b32, 0x0b33, 0x0b35, 0x0b39, - 0x0b3c, 0x0b44, + 0x0b3d, 0x0b44, 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, + 0x0b4b, 0x0b4c, 0x0b56, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b63, - 0x0b66, 0x0b71, -}; /* CR_Oriya */ - -/* 'Tamil': Script */ -static const OnigCodePoint CR_Tamil[] = { - 16, + 0x0b66, 0x0b6f, + 0x0b71, 0x0b71, 0x0b82, 0x0b83, 0x0b85, 0x0b8a, 0x0b8e, 0x0b90, @@ -8633,15 +15784,10 @@ static const OnigCodePoint CR_Tamil[] = { 0x0bae, 0x0bb9, 0x0bbe, 0x0bc2, 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, + 0x0bca, 0x0bcc, 0x0bd0, 0x0bd0, 0x0bd7, 0x0bd7, - 0x0be6, 0x0bfa, -}; /* CR_Tamil */ - -/* 'Telugu': Script */ -static const OnigCodePoint CR_Telugu[] = { - 14, + 0x0be6, 0x0bef, 0x0c01, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, @@ -8650,35 +15796,24 @@ static const OnigCodePoint CR_Telugu[] = { 0x0c35, 0x0c39, 0x0c3d, 0x0c44, 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, + 0x0c4a, 0x0c4c, 0x0c55, 0x0c56, 0x0c58, 0x0c59, 0x0c60, 0x0c63, 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, -}; /* CR_Telugu */ - -/* 'Kannada': Script */ -static const OnigCodePoint CR_Kannada[] = { - 13, 0x0c82, 0x0c83, 0x0c85, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, + 0x0cbd, 0x0cc4, 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, + 0x0cca, 0x0ccc, 0x0cd5, 0x0cd6, 0x0cde, 0x0cde, 0x0ce0, 0x0ce3, 0x0ce6, 0x0cef, -}; /* CR_Kannada */ - -/* 'Malayalam': Script */ -static const OnigCodePoint CR_Malayalam[] = { - 12, 0x0d02, 0x0d03, 0x0d05, 0x0d0c, 0x0d0e, 0x0d10, @@ -8686,39 +15821,25 @@ static const OnigCodePoint CR_Malayalam[] = { 0x0d2a, 0x0d39, 0x0d3d, 0x0d44, 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, + 0x0d4a, 0x0d4c, 0x0d57, 0x0d57, 0x0d60, 0x0d63, - 0x0d66, 0x0d75, - 0x0d79, 0x0d7f, -}; /* CR_Malayalam */ - -/* 'Sinhala': Script */ -static const OnigCodePoint CR_Sinhala[] = { - 11, + 0x0d66, 0x0d6f, + 0x0d7a, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, - 0x0df2, 0x0df4, -}; /* CR_Sinhala */ - -/* 'Thai': Script */ -static const OnigCodePoint CR_Thai[] = { - 2, + 0x0df2, 0x0df3, 0x0e01, 0x0e3a, - 0x0e40, 0x0e5b, -}; /* CR_Thai */ - -/* 'Lao': Script */ -static const OnigCodePoint CR_Lao[] = { - 18, + 0x0e40, 0x0e46, + 0x0e4d, 0x0e4d, + 0x0e50, 0x0e59, 0x0e81, 0x0e82, 0x0e84, 0x0e84, 0x0e87, 0x0e88, @@ -8734,77 +15855,139 @@ static const OnigCodePoint CR_Lao[] = { 0x0ebb, 0x0ebd, 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, + 0x0ecd, 0x0ecd, 0x0ed0, 0x0ed9, 0x0edc, 0x0edd, -}; /* CR_Lao */ - -/* 'Tibetan': Script */ -static const OnigCodePoint CR_Tibetan[] = { - 7, - 0x0f00, 0x0f47, + 0x0f00, 0x0f00, + 0x0f20, 0x0f29, + 0x0f40, 0x0f47, 0x0f49, 0x0f6c, - 0x0f71, 0x0f8b, + 0x0f71, 0x0f81, + 0x0f88, 0x0f8b, 0x0f90, 0x0f97, 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fd4, -}; /* CR_Tibetan */ - -/* 'Myanmar': Script */ -static const OnigCodePoint CR_Myanmar[] = { - 2, - 0x1000, 0x1099, - 0x109e, 0x109f, -}; /* CR_Myanmar */ - -/* 'Georgian': Script */ -static const OnigCodePoint CR_Georgian[] = { - 4, + 0x1000, 0x1036, + 0x1038, 0x1038, + 0x103b, 0x1049, + 0x1050, 0x1062, + 0x1065, 0x1068, + 0x106e, 0x1086, + 0x108e, 0x108e, + 0x1090, 0x1099, + 0x109c, 0x109d, 0x10a0, 0x10c5, 0x10d0, 0x10fa, 0x10fc, 0x10fc, + 0x1100, 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, 0x16f0, + 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, 0x191c, + 0x1920, 0x192b, + 0x1930, 0x1938, + 0x1946, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19b0, 0x19c9, + 0x19d0, 0x19da, + 0x1a00, 0x1a1b, + 0x1a20, 0x1a5e, + 0x1a61, 0x1a74, + 0x1a80, 0x1a89, + 0x1a90, 0x1a99, + 0x1aa7, 0x1aa7, + 0x1b00, 0x1b33, + 0x1b35, 0x1b43, + 0x1b45, 0x1b4b, + 0x1b50, 0x1b59, + 0x1b80, 0x1ba9, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c35, + 0x1c40, 0x1c49, + 0x1c4d, 0x1c7d, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf2, + 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, 0x2094, + 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, 0x2d00, 0x2d25, -}; /* CR_Georgian */ - -/* 'Hangul': Script */ -static const OnigCodePoint CR_Hangul[] = { - 12, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x3131, 0x318e, - 0x3200, 0x321e, - 0x3260, 0x327e, - 0xac00, 0xd7a3, - 0xffa0, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, -}; /* CR_Hangul */ - -/* 'Ethiopic': Script */ -static const OnigCodePoint CR_Ethiopic[] = { - 27, - 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, - 0x135f, 0x137c, - 0x1380, 0x1399, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, 0x2d80, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, @@ -8814,194 +15997,87 @@ static const OnigCodePoint CR_Ethiopic[] = { 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, -}; /* CR_Ethiopic */ - -/* 'Cherokee': Script */ -static const OnigCodePoint CR_Cherokee[] = { - 1, - 0x13a0, 0x13f4, -}; /* CR_Cherokee */ - -/* 'Canadian_Aboriginal': Script */ -static const OnigCodePoint CR_Canadian_Aboriginal[] = { - 1, - 0x1401, 0x1676, -}; /* CR_Canadian_Aboriginal */ - -/* 'Ogham': Script */ -static const OnigCodePoint CR_Ogham[] = { - 1, - 0x1680, 0x169c, -}; /* CR_Ogham */ - -/* 'Runic': Script */ -static const OnigCodePoint CR_Runic[] = { - 2, - 0x16a0, 0x16ea, - 0x16ee, 0x16f0, -}; /* CR_Runic */ - -/* 'Khmer': Script */ -static const OnigCodePoint CR_Khmer[] = { - 4, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x19e0, 0x19ff, -}; /* CR_Khmer */ - -/* 'Mongolian': Script */ -static const OnigCodePoint CR_Mongolian[] = { - 6, - 0x1800, 0x1801, - 0x1804, 0x1804, - 0x1806, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, -}; /* CR_Mongolian */ - -/* 'Hiragana': Script */ -static const OnigCodePoint CR_Hiragana[] = { - 2, + 0x2de0, 0x2dff, + 0x2e2f, 0x2e2f, + 0x3005, 0x3007, + 0x3021, 0x3029, + 0x3031, 0x3035, + 0x3038, 0x303c, 0x3041, 0x3096, 0x309d, 0x309f, -}; /* CR_Hiragana */ - -/* 'Katakana': Script */ -static const OnigCodePoint CR_Katakana[] = { - 7, 0x30a1, 0x30fa, - 0x30fd, 0x30ff, - 0x31f0, 0x31ff, - 0x32d0, 0x32fe, - 0x3300, 0x3357, - 0xff66, 0xff6f, - 0xff71, 0xff9d, -}; /* CR_Katakana */ - -/* 'Bopomofo': Script */ -static const OnigCodePoint CR_Bopomofo[] = { - 2, + 0x30fc, 0x30ff, 0x3105, 0x312d, + 0x3131, 0x318e, 0x31a0, 0x31b7, -}; /* CR_Bopomofo */ - -/* 'Han': Script */ -static const OnigCodePoint CR_Han[] = { - 14, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x3005, 0x3005, - 0x3007, 0x3007, - 0x3021, 0x3029, - 0x3038, 0x303b, + 0x31f0, 0x31ff, 0x3400, 0x4db5, - 0x4e00, 0x9fc3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0x20000, 0x2a6d6, - 0x2f800, 0x2fa1d, -}; /* CR_Han */ - -/* 'Yi': Script */ -static const OnigCodePoint CR_Yi[] = { - 2, + 0x4e00, 0x9fcb, 0xa000, 0xa48c, - 0xa490, 0xa4c6, -}; /* CR_Yi */ - -/* 'Old_Italic': Script */ -static const OnigCodePoint CR_Old_Italic[] = { - 2, - 0x10300, 0x1031e, - 0x10320, 0x10323, -}; /* CR_Old_Italic */ - -/* 'Gothic': Script */ -static const OnigCodePoint CR_Gothic[] = { - 1, - 0x10330, 0x1034a, -}; /* CR_Gothic */ - -/* 'Deseret': Script */ -static const OnigCodePoint CR_Deseret[] = { - 1, - 0x10400, 0x1044f, -}; /* CR_Deseret */ - -/* 'Inherited': Script */ -static const OnigCodePoint CR_Inherited[] = { - 18, - 0x0300, 0x036f, - 0x064b, 0x0655, - 0x0670, 0x0670, - 0x0951, 0x0952, - 0x1dc0, 0x1de6, - 0x1dfe, 0x1dff, - 0x200c, 0x200d, - 0x20d0, 0x20f0, - 0x302a, 0x302f, - 0x3099, 0x309a, - 0xfe00, 0xfe0f, - 0xfe20, 0xfe26, - 0x101fd, 0x101fd, - 0x1d167, 0x1d169, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0xe0100, 0xe01ef, -}; /* CR_Inherited */ - -/* 'Tagalog': Script */ -static const OnigCodePoint CR_Tagalog[] = { - 2, - 0x1700, 0x170c, - 0x170e, 0x1714, -}; /* CR_Tagalog */ - -/* 'Hanunoo': Script */ -static const OnigCodePoint CR_Hanunoo[] = { - 1, - 0x1720, 0x1734, -}; /* CR_Hanunoo */ - -/* 'Buhid': Script */ -static const OnigCodePoint CR_Buhid[] = { - 1, - 0x1740, 0x1753, -}; /* CR_Buhid */ - -/* 'Tagbanwa': Script */ -static const OnigCodePoint CR_Tagbanwa[] = { - 3, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, -}; /* CR_Tagbanwa */ - -/* 'Limbu': Script */ -static const OnigCodePoint CR_Limbu[] = { - 5, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x194f, -}; /* CR_Limbu */ - -/* 'Tai_Le': Script */ -static const OnigCodePoint CR_Tai_Le[] = { - 2, - 0x1950, 0x196d, - 0x1970, 0x1974, -}; /* CR_Tai_Le */ - -/* 'Linear_B': Script */ -static const OnigCodePoint CR_Linear_B[] = { - 7, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa67f, 0xa697, + 0xa6a0, 0xa6ef, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 0xa801, + 0xa803, 0xa805, + 0xa807, 0xa80a, + 0xa80c, 0xa827, + 0xa840, 0xa873, + 0xa880, 0xa8c3, + 0xa8d0, 0xa8d9, + 0xa8f2, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa900, 0xa92a, + 0xa930, 0xa952, + 0xa960, 0xa97c, + 0xa980, 0xa9bf, + 0xa9cf, 0xa9d9, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaabe, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabea, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, @@ -9009,220 +16085,80 @@ static const OnigCodePoint CR_Linear_B[] = { 0x1003f, 0x1004d, 0x10050, 0x1005d, 0x10080, 0x100fa, -}; /* CR_Linear_B */ - -/* 'Ugaritic': Script */ -static const OnigCodePoint CR_Ugaritic[] = { - 2, + 0x10140, 0x10174, + 0x10280, 0x1029c, + 0x102a0, 0x102d0, + 0x10300, 0x1031e, + 0x10330, 0x1034a, 0x10380, 0x1039d, - 0x1039f, 0x1039f, -}; /* CR_Ugaritic */ - -/* 'Shavian': Script */ -static const OnigCodePoint CR_Shavian[] = { - 1, - 0x10450, 0x1047f, -}; /* CR_Shavian */ - -/* 'Osmanya': Script */ -static const OnigCodePoint CR_Osmanya[] = { - 2, - 0x10480, 0x1049d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, 0x104a0, 0x104a9, -}; /* CR_Osmanya */ - -/* 'Cypriot': Script */ -static const OnigCodePoint CR_Cypriot[] = { - 6, 0x10800, 0x10805, 0x10808, 0x10808, 0x1080a, 0x10835, 0x10837, 0x10838, 0x1083c, 0x1083c, - 0x1083f, 0x1083f, -}; /* CR_Cypriot */ - -/* 'Braille': Script */ -static const OnigCodePoint CR_Braille[] = { - 1, - 0x2800, 0x28ff, -}; /* CR_Braille */ - -/* 'Buginese': Script */ -static const OnigCodePoint CR_Buginese[] = { - 2, - 0x1a00, 0x1a1b, - 0x1a1e, 0x1a1f, -}; /* CR_Buginese */ - -/* 'Coptic': Script */ -static const OnigCodePoint CR_Coptic[] = { - 3, - 0x03e2, 0x03ef, - 0x2c80, 0x2cea, - 0x2cf9, 0x2cff, -}; /* CR_Coptic */ - -/* 'New_Tai_Lue': Script */ -static const OnigCodePoint CR_New_Tai_Lue[] = { - 4, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x19de, 0x19df, -}; /* CR_New_Tai_Lue */ - -/* 'Glagolitic': Script */ -static const OnigCodePoint CR_Glagolitic[] = { - 2, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, -}; /* CR_Glagolitic */ - -/* 'Tifinagh': Script */ -static const OnigCodePoint CR_Tifinagh[] = { - 2, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, -}; /* CR_Tifinagh */ - -/* 'Syloti_Nagri': Script */ -static const OnigCodePoint CR_Syloti_Nagri[] = { - 1, - 0xa800, 0xa82b, -}; /* CR_Syloti_Nagri */ - -/* 'Old_Persian': Script */ -static const OnigCodePoint CR_Old_Persian[] = { - 2, - 0x103a0, 0x103c3, - 0x103c8, 0x103d5, -}; /* CR_Old_Persian */ - -/* 'Kharoshthi': Script */ -static const OnigCodePoint CR_Kharoshthi[] = { - 8, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, 0x10a00, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, -}; /* CR_Kharoshthi */ - -/* 'Balinese': Script */ -static const OnigCodePoint CR_Balinese[] = { - 2, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, -}; /* CR_Balinese */ - -/* 'Cuneiform': Script */ -static const OnigCodePoint CR_Cuneiform[] = { - 3, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11082, 0x110b8, 0x12000, 0x1236e, 0x12400, 0x12462, - 0x12470, 0x12473, -}; /* CR_Cuneiform */ - -/* 'Phoenician': Script */ -static const OnigCodePoint CR_Phoenician[] = { - 2, - 0x10900, 0x10919, - 0x1091f, 0x1091f, -}; /* CR_Phoenician */ - -/* 'Phags_Pa': Script */ -static const OnigCodePoint CR_Phags_Pa[] = { - 1, - 0xa840, 0xa877, -}; /* CR_Phags_Pa */ - -/* 'Nko': Script */ -static const OnigCodePoint CR_Nko[] = { - 1, - 0x07c0, 0x07fa, -}; /* CR_Nko */ - -/* 'Sundanese': Script */ -static const OnigCodePoint CR_Sundanese[] = { - 2, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, -}; /* CR_Sundanese */ - -/* 'Lepcha': Script */ -static const OnigCodePoint CR_Lepcha[] = { - 3, - 0x1c00, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c4f, -}; /* CR_Lepcha */ - -/* 'Ol_Chiki': Script */ -static const OnigCodePoint CR_Ol_Chiki[] = { - 1, - 0x1c50, 0x1c7f, -}; /* CR_Ol_Chiki */ - -/* 'Vai': Script */ -static const OnigCodePoint CR_Vai[] = { - 1, - 0xa500, 0xa62b, -}; /* CR_Vai */ - -/* 'Saurashtra': Script */ -static const OnigCodePoint CR_Saurashtra[] = { - 2, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, -}; /* CR_Saurashtra */ - -/* 'Kayah_Li': Script */ -static const OnigCodePoint CR_Kayah_Li[] = { - 1, - 0xa900, 0xa92f, -}; /* CR_Kayah_Li */ - -/* 'Rejang': Script */ -static const OnigCodePoint CR_Rejang[] = { - 2, - 0xa930, 0xa953, - 0xa95f, 0xa95f, -}; /* CR_Rejang */ - -/* 'Lycian': Script */ -static const OnigCodePoint CR_Lycian[] = { - 1, - 0x10280, 0x1029c, -}; /* CR_Lycian */ + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Alnum */ -/* 'Carian': Script */ -static const OnigCodePoint CR_Carian[] = { +/* 'ASCII': [[:ASCII:]] */ +static const OnigCodePoint CR_ASCII[] = { 1, - 0x102a0, 0x102d0, -}; /* CR_Carian */ - -/* 'Lydian': Script */ -static const OnigCodePoint CR_Lydian[] = { - 2, - 0x10920, 0x10939, - 0x1093f, 0x1093f, -}; /* CR_Lydian */ - -/* 'Cham': Script */ -static const OnigCodePoint CR_Cham[] = { - 4, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa5f, -}; /* CR_Cham */ -#endif /* USE_UNICODE_PROPERTIES */ -#endif /* USE_UNICODE_PROPERTIES */ - + 0x0000, 0x007f, +}; /* CR_ASCII */ static const OnigCodePoint* const CodeRanges[] = { CR_NEWLINE, @@ -9281,6 +16217,25 @@ static const OnigCodePoint* const CodeRanges[] = { 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, @@ -9358,6 +16313,53 @@ static const OnigCodePoint* const CodeRanges[] = { 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_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, #endif /* USE_UNICODE_PROPERTIES */ #endif /* USE_UNICODE_PROPERTIES */ }; @@ -9375,12 +16377,12 @@ static const struct uniname2ctype_struct *uniname2ctype_p(const char *, unsigned #define MAX_HASH_VALUE 21 /* maximum key range = 15, duplicates = 0 */ #else /* USE_UNICODE_PROPERTIES */ -#define TOTAL_KEYWORDS 131 +#define TOTAL_KEYWORDS 367 #define MIN_WORD_LENGTH 1 -#define MAX_WORD_LENGTH 18 -#define MIN_HASH_VALUE 2 -#define MAX_HASH_VALUE 266 -/* maximum key range = 265, duplicates = 0 */ +#define MAX_WORD_LENGTH 30 +#define MIN_HASH_VALUE 3 +#define MAX_HASH_VALUE 1751 +/* maximum key range = 1749, duplicates = 0 */ #endif /* USE_UNICODE_PROPERTIES */ #ifdef __GNUC__ @@ -9416,19 +16418,19 @@ uniname2ctype_hash (str, len) 2, 22, 1, 22, 10, 8, 4, 7, 22, 3, 4, 22, 22, 22, 22, 22, 22, 22 #else /* USE_UNICODE_PROPERTIES */ - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 9, 11, 29, - 82, 48, 86, 43, 3, 25, 92, 97, 4, 2, - 8, 45, 1, 79, 53, 12, 30, 98, 88, 62, - 22, 20, 61, 267, 267, 267, 267, 267, 267 + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 7, 419, 1, + 128, 38, 100, 186, 46, 11, 226, 463, 4, 317, + 6, 2, 265, 5, 18, 112, 30, 289, 164, 384, + 368, 579, 10, 1752, 1752, 1752, 1752, 1752 #endif /* USE_UNICODE_PROPERTIES */ }; #ifndef USE_UNICODE_PROPERTIES @@ -9439,16 +16441,35 @@ uniname2ctype_hash (str, 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: + case 4: + case 3: hval += asso_values[(unsigned char)str[2]]; /*FALLTHROUGH*/ case 2: - hval += asso_values[(unsigned char)str[1]+1]; + hval += asso_values[(unsigned char)str[1]]; /*FALLTHROUGH*/ case 1: hval += asso_values[(unsigned char)str[0]]; break; } - return hval; + return hval + asso_values[(unsigned char)str[len - 1]]; #endif /* USE_UNICODE_PROPERTIES */ } @@ -9471,137 +16492,373 @@ struct uniname2ctype_pool_t char uniname2ctype_pool_str20[sizeof("digit")]; char uniname2ctype_pool_str21[sizeof("blank")]; #else /* USE_UNICODE_PROPERTIES */ - char uniname2ctype_pool_str2[sizeof("p")]; - char uniname2ctype_pool_str3[sizeof("m")]; - char uniname2ctype_pool_str4[sizeof("po")]; - char uniname2ctype_pool_str5[sizeof("l")]; - char uniname2ctype_pool_str7[sizeof("lo")]; - char uniname2ctype_pool_str8[sizeof("ll")]; - char uniname2ctype_pool_str9[sizeof("n")]; - char uniname2ctype_pool_str11[sizeof("no")]; - char uniname2ctype_pool_str12[sizeof("nl")]; - char uniname2ctype_pool_str13[sizeof("s")]; - char uniname2ctype_pool_str14[sizeof("lm")]; - char uniname2ctype_pool_str15[sizeof("so")]; - char uniname2ctype_pool_str17[sizeof("alpha")]; - char uniname2ctype_pool_str18[sizeof("sk")]; - char uniname2ctype_pool_str20[sizeof("mongolian")]; - char uniname2ctype_pool_str21[sizeof("bopomofo")]; - char uniname2ctype_pool_str22[sizeof("sm")]; - char uniname2ctype_pool_str24[sizeof("alnum")]; - char uniname2ctype_pool_str25[sizeof("han")]; - char uniname2ctype_pool_str26[sizeof("malayalam")]; - char uniname2ctype_pool_str27[sizeof("blank")]; - char uniname2ctype_pool_str28[sizeof("hangul")]; - char uniname2ctype_pool_str29[sizeof("hanunoo")]; - char uniname2ctype_pool_str30[sizeof("c")]; - char uniname2ctype_pool_str31[sizeof("armenian")]; - char uniname2ctype_pool_str32[sizeof("co")]; - char uniname2ctype_pool_str33[sizeof("ps")]; - char uniname2ctype_pool_str34[sizeof("balinese")]; - char uniname2ctype_pool_str36[sizeof("arabic")]; - char uniname2ctype_pool_str37[sizeof("coptic")]; - char uniname2ctype_pool_str38[sizeof("common")]; - char uniname2ctype_pool_str39[sizeof("braille")]; - char uniname2ctype_pool_str42[sizeof("phagspa")]; - char uniname2ctype_pool_str43[sizeof("print")]; - char uniname2ctype_pool_str46[sizeof("pf")]; - char uniname2ctype_pool_str48[sizeof("tamil")]; - char uniname2ctype_pool_str49[sizeof("mn")]; - char uniname2ctype_pool_str50[sizeof("latin")]; - char uniname2ctype_pool_str51[sizeof("pd")]; - char uniname2ctype_pool_str53[sizeof("shavian")]; - char uniname2ctype_pool_str56[sizeof("ogham")]; - char uniname2ctype_pool_str58[sizeof("nd")]; - char uniname2ctype_pool_str59[sizeof("assigned")]; - char uniname2ctype_pool_str60[sizeof("nko")]; - char uniname2ctype_pool_str61[sizeof("cs")]; - char uniname2ctype_pool_str62[sizeof("z")]; - char uniname2ctype_pool_str63[sizeof("lao")]; - char uniname2ctype_pool_str64[sizeof("glagolitic")]; - char uniname2ctype_pool_str65[sizeof("zl")]; - char uniname2ctype_pool_str66[sizeof("canadianaboriginal")]; - char uniname2ctype_pool_str67[sizeof("cham")]; - char uniname2ctype_pool_str68[sizeof("thai")]; - char uniname2ctype_pool_str69[sizeof("graph")]; - char uniname2ctype_pool_str70[sizeof("thaana")]; - char uniname2ctype_pool_str71[sizeof("taile")]; - char uniname2ctype_pool_str72[sizeof("lower")]; - char uniname2ctype_pool_str73[sizeof("ascii")]; - char uniname2ctype_pool_str74[sizeof("cf")]; - char uniname2ctype_pool_str76[sizeof("cn")]; - char uniname2ctype_pool_str77[sizeof("any")]; - char uniname2ctype_pool_str79[sizeof("myanmar")]; - char uniname2ctype_pool_str80[sizeof("gothic")]; - char uniname2ctype_pool_str81[sizeof("phoenician")]; - char uniname2ctype_pool_str82[sizeof("inherited")]; - char uniname2ctype_pool_str83[sizeof("olchiki")]; - char uniname2ctype_pool_str84[sizeof("osmanya")]; - char uniname2ctype_pool_str85[sizeof("pc")]; - char uniname2ctype_pool_str86[sizeof("mc")]; - char uniname2ctype_pool_str87[sizeof("oriya")]; - char uniname2ctype_pool_str88[sizeof("sylotinagri")]; - char uniname2ctype_pool_str89[sizeof("pe")]; - char uniname2ctype_pool_str90[sizeof("me")]; - char uniname2ctype_pool_str91[sizeof("tagalog")]; - char uniname2ctype_pool_str92[sizeof("tagbanwa")]; - char uniname2ctype_pool_str93[sizeof("zs")]; - char uniname2ctype_pool_str94[sizeof("lu")]; - char uniname2ctype_pool_str95[sizeof("pi")]; - char uniname2ctype_pool_str96[sizeof("sc")]; - char uniname2ctype_pool_str97[sizeof("lepcha")]; - char uniname2ctype_pool_str98[sizeof("cypriot")]; - char uniname2ctype_pool_str99[sizeof("carian")]; - char uniname2ctype_pool_str100[sizeof("lycian")]; - char uniname2ctype_pool_str101[sizeof("xdigit")]; - char uniname2ctype_pool_str102[sizeof("punct")]; - char uniname2ctype_pool_str103[sizeof("limbu")]; - char uniname2ctype_pool_str104[sizeof("lt")]; - char uniname2ctype_pool_str105[sizeof("space")]; - char uniname2ctype_pool_str106[sizeof("hebrew")]; - char uniname2ctype_pool_str107[sizeof("buhid")]; - char uniname2ctype_pool_str108[sizeof("greek")]; - char uniname2ctype_pool_str109[sizeof("cntrl")]; - char uniname2ctype_pool_str110[sizeof("cherokee")]; - char uniname2ctype_pool_str111[sizeof("linearb")]; - char uniname2ctype_pool_str112[sizeof("bengali")]; - char uniname2ctype_pool_str113[sizeof("cc")]; - char uniname2ctype_pool_str114[sizeof("yi")]; - char uniname2ctype_pool_str117[sizeof("sundanese")]; - char uniname2ctype_pool_str118[sizeof("ugaritic")]; - char uniname2ctype_pool_str119[sizeof("sinhala")]; - char uniname2ctype_pool_str120[sizeof("word")]; - char uniname2ctype_pool_str123[sizeof("kannada")]; - char uniname2ctype_pool_str126[sizeof("telugu")]; - char uniname2ctype_pool_str127[sizeof("vai")]; - char uniname2ctype_pool_str129[sizeof("khmer")]; - char uniname2ctype_pool_str131[sizeof("saurashtra")]; - char uniname2ctype_pool_str132[sizeof("syriac")]; - char uniname2ctype_pool_str134[sizeof("cuneiform")]; - char uniname2ctype_pool_str135[sizeof("kayahli")]; - char uniname2ctype_pool_str138[sizeof("olditalic")]; - char uniname2ctype_pool_str139[sizeof("oldpersian")]; - char uniname2ctype_pool_str140[sizeof("tibetan")]; - char uniname2ctype_pool_str141[sizeof("kharoshthi")]; - char uniname2ctype_pool_str142[sizeof("zp")]; - char uniname2ctype_pool_str146[sizeof("katakana")]; - char uniname2ctype_pool_str150[sizeof("buginese")]; - char uniname2ctype_pool_str151[sizeof("cyrillic")]; - char uniname2ctype_pool_str153[sizeof("lydian")]; - char uniname2ctype_pool_str154[sizeof("runic")]; - char uniname2ctype_pool_str156[sizeof("hiragana")]; - char uniname2ctype_pool_str157[sizeof("ethiopic")]; - char uniname2ctype_pool_str163[sizeof("newline")]; - char uniname2ctype_pool_str165[sizeof("newtailue")]; - char uniname2ctype_pool_str182[sizeof("georgian")]; - char uniname2ctype_pool_str183[sizeof("upper")]; - char uniname2ctype_pool_str187[sizeof("deseret")]; - char uniname2ctype_pool_str192[sizeof("gurmukhi")]; - char uniname2ctype_pool_str216[sizeof("tifinagh")]; - char uniname2ctype_pool_str222[sizeof("digit")]; - char uniname2ctype_pool_str231[sizeof("gujarati")]; - char uniname2ctype_pool_str237[sizeof("rejang")]; - char uniname2ctype_pool_str266[sizeof("devanagari")]; + char uniname2ctype_pool_str3[sizeof("c")]; + char uniname2ctype_pool_str5[sizeof("cc")]; + char uniname2ctype_pool_str7[sizeof("co")]; + char uniname2ctype_pool_str9[sizeof("l")]; + char uniname2ctype_pool_str10[sizeof("lo")]; + char uniname2ctype_pool_str12[sizeof("no")]; + char uniname2ctype_pool_str13[sizeof("n")]; + char uniname2ctype_pool_str14[sizeof("ll")]; + char uniname2ctype_pool_str15[sizeof("cn")]; + char uniname2ctype_pool_str16[sizeof("nl")]; + char uniname2ctype_pool_str18[sizeof("lao")]; + char uniname2ctype_pool_str19[sizeof("laoo")]; + char uniname2ctype_pool_str20[sizeof("zl")]; + char uniname2ctype_pool_str21[sizeof("z")]; + char uniname2ctype_pool_str22[sizeof("control")]; + char uniname2ctype_pool_str24[sizeof("qaac")]; + char uniname2ctype_pool_str25[sizeof("ci")]; + char uniname2ctype_pool_str28[sizeof("lana")]; + char uniname2ctype_pool_str33[sizeof("oalpha")]; + char uniname2ctype_pool_str34[sizeof("qaai")]; + char uniname2ctype_pool_str40[sizeof("arabic")]; + char uniname2ctype_pool_str41[sizeof("cari")]; + char uniname2ctype_pool_str43[sizeof("oriya")]; + char uniname2ctype_pool_str44[sizeof("carian")]; + char uniname2ctype_pool_str46[sizeof("cntrl")]; + char uniname2ctype_pool_str49[sizeof("connectorpunctuation")]; + char uniname2ctype_pool_str50[sizeof("olower")]; + char uniname2ctype_pool_str51[sizeof("latn")]; + char uniname2ctype_pool_str52[sizeof("latin")]; + char uniname2ctype_pool_str56[sizeof("ital")]; + char uniname2ctype_pool_str65[sizeof("hano")]; + char uniname2ctype_pool_str66[sizeof("lt")]; + char uniname2ctype_pool_str68[sizeof("han")]; + char uniname2ctype_pool_str70[sizeof("hanunoo")]; + char uniname2ctype_pool_str71[sizeof("canadianaboriginal")]; + char uniname2ctype_pool_str73[sizeof("hangul")]; + char uniname2ctype_pool_str74[sizeof("hani")]; + char uniname2ctype_pool_str76[sizeof("nchar")]; + char uniname2ctype_pool_str77[sizeof("zinh")]; + char uniname2ctype_pool_str83[sizeof("tale")]; + char uniname2ctype_pool_str85[sizeof("loe")]; + char uniname2ctype_pool_str86[sizeof("hira")]; + char uniname2ctype_pool_str91[sizeof("taile")]; + char uniname2ctype_pool_str92[sizeof("lineseparator")]; + char uniname2ctype_pool_str94[sizeof("thaa")]; + char uniname2ctype_pool_str97[sizeof("hiragana")]; + char uniname2ctype_pool_str98[sizeof("thai")]; + char uniname2ctype_pool_str100[sizeof("initialpunctuation")]; + char uniname2ctype_pool_str101[sizeof("other")]; + char uniname2ctype_pool_str103[sizeof("thaana")]; + char uniname2ctype_pool_str107[sizeof("cher")]; + char uniname2ctype_pool_str111[sizeof("otherletter")]; + char uniname2ctype_pool_str113[sizeof("othernumber")]; + char uniname2ctype_pool_str114[sizeof("letter")]; + char uniname2ctype_pool_str116[sizeof("sc")]; + char uniname2ctype_pool_str118[sizeof("so")]; + char uniname2ctype_pool_str123[sizeof("taiviet")]; + char uniname2ctype_pool_str128[sizeof("noncharactercodepoint")]; + char uniname2ctype_pool_str129[sizeof("ethi")]; + char uniname2ctype_pool_str130[sizeof("cans")]; + char uniname2ctype_pool_str135[sizeof("titlecaseletter")]; + char uniname2ctype_pool_str136[sizeof("ascii")]; + char uniname2ctype_pool_str138[sizeof("letternumber")]; + char uniname2ctype_pool_str139[sizeof("otheralphabetic")]; + char uniname2ctype_pool_str141[sizeof("otherlowercase")]; + char uniname2ctype_pool_str144[sizeof("idc")]; + char uniname2ctype_pool_str146[sizeof("oidc")]; + char uniname2ctype_pool_str147[sizeof("sinhala")]; + char uniname2ctype_pool_str148[sizeof("terminalpunctuation")]; + char uniname2ctype_pool_str151[sizeof("olditalic")]; + char uniname2ctype_pool_str152[sizeof("di")]; + char uniname2ctype_pool_str153[sizeof("otheridcontinue")]; + char uniname2ctype_pool_str155[sizeof("odi")]; + char uniname2ctype_pool_str156[sizeof("dia")]; + char uniname2ctype_pool_str161[sizeof("otheridstart")]; + char uniname2ctype_pool_str162[sizeof("oldturkic")]; + char uniname2ctype_pool_str167[sizeof("diacritic")]; + char uniname2ctype_pool_str168[sizeof("oldpersian")]; + char uniname2ctype_pool_str171[sizeof("radical")]; + char uniname2ctype_pool_str179[sizeof("sinh")]; + char uniname2ctype_pool_str183[sizeof("ideo")]; + char uniname2ctype_pool_str185[sizeof("shavian")]; + char uniname2ctype_pool_str186[sizeof("format")]; + char uniname2ctype_pool_str192[sizeof("inscriptionalparthian")]; + char uniname2ctype_pool_str196[sizeof("vai")]; + char uniname2ctype_pool_str197[sizeof("vaii")]; + char uniname2ctype_pool_str202[sizeof("tifinagh")]; + char uniname2ctype_pool_str203[sizeof("cf")]; + char uniname2ctype_pool_str205[sizeof("othersymbol")]; + char uniname2ctype_pool_str207[sizeof("ideographic")]; + char uniname2ctype_pool_str211[sizeof("inherited")]; + char uniname2ctype_pool_str212[sizeof("glagolitic")]; + char uniname2ctype_pool_str218[sizeof("idcontinue")]; + char uniname2ctype_pool_str220[sizeof("asciihexdigit")]; + char uniname2ctype_pool_str224[sizeof("inscriptionalpahlavi")]; + char uniname2ctype_pool_str225[sizeof("s")]; + char uniname2ctype_pool_str226[sizeof("gothic")]; + char uniname2ctype_pool_str227[sizeof("cs")]; + char uniname2ctype_pool_str229[sizeof("avestan")]; + char uniname2ctype_pool_str235[sizeof("tavt")]; + char uniname2ctype_pool_str236[sizeof("zs")]; + char uniname2ctype_pool_str243[sizeof("decimalnumber")]; + char uniname2ctype_pool_str244[sizeof("tagbanwa")]; + char uniname2ctype_pool_str245[sizeof("joinc")]; + char uniname2ctype_pool_str248[sizeof("geor")]; + char uniname2ctype_pool_str249[sizeof("hang")]; + char uniname2ctype_pool_str251[sizeof("georgian")]; + char uniname2ctype_pool_str253[sizeof("cased")]; + char uniname2ctype_pool_str256[sizeof("joincontrol")]; + char uniname2ctype_pool_str257[sizeof("oids")]; + char uniname2ctype_pool_str260[sizeof("variationselector")]; + char uniname2ctype_pool_str262[sizeof("graph")]; + char uniname2ctype_pool_str263[sizeof("changeswhenlowercased")]; + char uniname2ctype_pool_str264[sizeof("nd")]; + char uniname2ctype_pool_str268[sizeof("goth")]; + char uniname2ctype_pool_str269[sizeof("pc")]; + char uniname2ctype_pool_str271[sizeof("po")]; + char uniname2ctype_pool_str272[sizeof("ogrext")]; + char uniname2ctype_pool_str276[sizeof("coptic")]; + char uniname2ctype_pool_str277[sizeof("grext")]; + char uniname2ctype_pool_str282[sizeof("logicalorderexception")]; + char uniname2ctype_pool_str285[sizeof("idst")]; + char uniname2ctype_pool_str288[sizeof("alpha")]; + char uniname2ctype_pool_str289[sizeof("pi")]; + char uniname2ctype_pool_str292[sizeof("dsrt")]; + char uniname2ctype_pool_str297[sizeof("dash")]; + char uniname2ctype_pool_str298[sizeof("otherdefaultignorablecodepoint")]; + char uniname2ctype_pool_str302[sizeof("copt")]; + char uniname2ctype_pool_str306[sizeof("idstart")]; + char uniname2ctype_pool_str307[sizeof("closepunctuation")]; + char uniname2ctype_pool_str309[sizeof("changeswhentitlecased")]; + char uniname2ctype_pool_str312[sizeof("lepc")]; + char uniname2ctype_pool_str317[sizeof("avst")]; + char uniname2ctype_pool_str318[sizeof("cprt")]; + char uniname2ctype_pool_str319[sizeof("runic")]; + char uniname2ctype_pool_str320[sizeof("patsyn")]; + char uniname2ctype_pool_str321[sizeof("mc")]; + char uniname2ctype_pool_str326[sizeof("tfng")]; + char uniname2ctype_pool_str327[sizeof("lepcha")]; + char uniname2ctype_pool_str328[sizeof("prti")]; + char uniname2ctype_pool_str329[sizeof("print")]; + char uniname2ctype_pool_str330[sizeof("phli")]; + char uniname2ctype_pool_str331[sizeof("mn")]; + char uniname2ctype_pool_str332[sizeof("idsbinaryoperator")]; + char uniname2ctype_pool_str334[sizeof("talu")]; + char uniname2ctype_pool_str335[sizeof("runr")]; + char uniname2ctype_pool_str337[sizeof("graphemebase")]; + char uniname2ctype_pool_str338[sizeof("common")]; + char uniname2ctype_pool_str339[sizeof("alnum")]; + char uniname2ctype_pool_str340[sizeof("phoenician")]; + char uniname2ctype_pool_str341[sizeof("deva")]; + char uniname2ctype_pool_str342[sizeof("changeswhencasefolded")]; + char uniname2ctype_pool_str343[sizeof("pe")]; + char uniname2ctype_pool_str344[sizeof("mongolian")]; + char uniname2ctype_pool_str352[sizeof("armn")]; + char uniname2ctype_pool_str353[sizeof("deseret")]; + char uniname2ctype_pool_str354[sizeof("softdotted")]; + char uniname2ctype_pool_str357[sizeof("armi")]; + char uniname2ctype_pool_str358[sizeof("devanagari")]; + char uniname2ctype_pool_str360[sizeof("digit")]; + char uniname2ctype_pool_str361[sizeof("caseignorable")]; + char uniname2ctype_pool_str362[sizeof("taml")]; + char uniname2ctype_pool_str363[sizeof("tamil")]; + char uniname2ctype_pool_str365[sizeof("telu")]; + char uniname2ctype_pool_str366[sizeof("ids")]; + char uniname2ctype_pool_str367[sizeof("armenian")]; + char uniname2ctype_pool_str370[sizeof("sd")]; + char uniname2ctype_pool_str372[sizeof("privateuse")]; + char uniname2ctype_pool_str373[sizeof("assigned")]; + char uniname2ctype_pool_str375[sizeof("cham")]; + char uniname2ctype_pool_str377[sizeof("omath")]; + char uniname2ctype_pool_str378[sizeof("otherpunctuation")]; + char uniname2ctype_pool_str379[sizeof("taitham")]; + char uniname2ctype_pool_str381[sizeof("defaultignorablecodepoint")]; + char uniname2ctype_pool_str387[sizeof("glag")]; + char uniname2ctype_pool_str388[sizeof("ethiopic")]; + char uniname2ctype_pool_str390[sizeof("vs")]; + char uniname2ctype_pool_str395[sizeof("me")]; + char uniname2ctype_pool_str396[sizeof("cwl")]; + char uniname2ctype_pool_str400[sizeof("mtei")]; + char uniname2ctype_pool_str404[sizeof("math")]; + char uniname2ctype_pool_str407[sizeof("term")]; + char uniname2ctype_pool_str408[sizeof("java")]; + char uniname2ctype_pool_str410[sizeof("tglg")]; + char uniname2ctype_pool_str413[sizeof("lower")]; + char uniname2ctype_pool_str414[sizeof("patternwhitespace")]; + char uniname2ctype_pool_str417[sizeof("finalpunctuation")]; + char uniname2ctype_pool_str418[sizeof("tagalog")]; + char uniname2ctype_pool_str419[sizeof("patws")]; + char uniname2ctype_pool_str420[sizeof("lisu")]; + char uniname2ctype_pool_str426[sizeof("otheruppercase")]; + char uniname2ctype_pool_str427[sizeof("space")]; + char uniname2ctype_pool_str429[sizeof("graphemeextend")]; + char uniname2ctype_pool_str430[sizeof("saur")]; + char uniname2ctype_pool_str435[sizeof("uideo")]; + char uniname2ctype_pool_str438[sizeof("lowercase")]; + char uniname2ctype_pool_str440[sizeof("rjng")]; + char uniname2ctype_pool_str442[sizeof("osma")]; + char uniname2ctype_pool_str444[sizeof("linb")]; + char uniname2ctype_pool_str445[sizeof("bali")]; + char uniname2ctype_pool_str448[sizeof("cwt")]; + char uniname2ctype_pool_str449[sizeof("separator")]; + char uniname2ctype_pool_str450[sizeof("othermath")]; + char uniname2ctype_pool_str451[sizeof("unassigned")]; + char uniname2ctype_pool_str454[sizeof("lowercaseletter")]; + char uniname2ctype_pool_str455[sizeof("arab")]; + char uniname2ctype_pool_str458[sizeof("samr")]; + char uniname2ctype_pool_str459[sizeof("brai")]; + char uniname2ctype_pool_str460[sizeof("sundanese")]; + char uniname2ctype_pool_str462[sizeof("samaritan")]; + char uniname2ctype_pool_str463[sizeof("ahex")]; + char uniname2ctype_pool_str465[sizeof("linearb")]; + char uniname2ctype_pool_str467[sizeof("pf")]; + char uniname2ctype_pool_str469[sizeof("ext")]; + char uniname2ctype_pool_str474[sizeof("olck")]; + char uniname2ctype_pool_str476[sizeof("nko")]; + char uniname2ctype_pool_str477[sizeof("nkoo")]; + char uniname2ctype_pool_str479[sizeof("newline")]; + char uniname2ctype_pool_str480[sizeof("tibetan")]; + char uniname2ctype_pool_str481[sizeof("javanese")]; + char uniname2ctype_pool_str485[sizeof("bengali")]; + char uniname2ctype_pool_str486[sizeof("newtailue")]; + char uniname2ctype_pool_str487[sizeof("kana")]; + char uniname2ctype_pool_str488[sizeof("olchiki")]; + char uniname2ctype_pool_str489[sizeof("kali")]; + char uniname2ctype_pool_str490[sizeof("cwcf")]; + char uniname2ctype_pool_str491[sizeof("ps")]; + char uniname2ctype_pool_str493[sizeof("braille")]; + char uniname2ctype_pool_str494[sizeof("tibt")]; + char uniname2ctype_pool_str502[sizeof("sterm")]; + char uniname2ctype_pool_str504[sizeof("ugar")]; + char uniname2ctype_pool_str505[sizeof("nonspacingmark")]; + char uniname2ctype_pool_str508[sizeof("phag")]; + char uniname2ctype_pool_str509[sizeof("kaithi")]; + char uniname2ctype_pool_str512[sizeof("xidc")]; + char uniname2ctype_pool_str514[sizeof("balinese")]; + char uniname2ctype_pool_str515[sizeof("mong")]; + char uniname2ctype_pool_str516[sizeof("ogam")]; + char uniname2ctype_pool_str520[sizeof("modifierletter")]; + char uniname2ctype_pool_str521[sizeof("ugaritic")]; + char uniname2ctype_pool_str522[sizeof("katakana")]; + char uniname2ctype_pool_str523[sizeof("pd")]; + char uniname2ctype_pool_str525[sizeof("hebr")]; + char uniname2ctype_pool_str531[sizeof("p")]; + char uniname2ctype_pool_str533[sizeof("orkh")]; + char uniname2ctype_pool_str536[sizeof("word")]; + char uniname2ctype_pool_str537[sizeof("saurashtra")]; + char uniname2ctype_pool_str538[sizeof("khar")]; + char uniname2ctype_pool_str539[sizeof("sund")]; + char uniname2ctype_pool_str542[sizeof("zp")]; + char uniname2ctype_pool_str548[sizeof("changeswhenuppercased")]; + char uniname2ctype_pool_str552[sizeof("xidstart")]; + char uniname2ctype_pool_str553[sizeof("shaw")]; + char uniname2ctype_pool_str554[sizeof("kthi")]; + char uniname2ctype_pool_str556[sizeof("ogham")]; + char uniname2ctype_pool_str558[sizeof("spaceseparator")]; + char uniname2ctype_pool_str559[sizeof("changeswhencasemapped")]; + char uniname2ctype_pool_str560[sizeof("sarb")]; + char uniname2ctype_pool_str562[sizeof("xidcontinue")]; + char uniname2ctype_pool_str564[sizeof("bidic")]; + char uniname2ctype_pool_str570[sizeof("deprecated")]; + char uniname2ctype_pool_str573[sizeof("xdigit")]; + char uniname2ctype_pool_str575[sizeof("bidicontrol")]; + char uniname2ctype_pool_str584[sizeof("lu")]; + char uniname2ctype_pool_str587[sizeof("dashpunctuation")]; + char uniname2ctype_pool_str590[sizeof("extender")]; + char uniname2ctype_pool_str593[sizeof("idstrinaryoperator")]; + char uniname2ctype_pool_str594[sizeof("cherokee")]; + char uniname2ctype_pool_str595[sizeof("punct")]; + char uniname2ctype_pool_str597[sizeof("phagspa")]; + char uniname2ctype_pool_str598[sizeof("oupper")]; + char uniname2ctype_pool_str599[sizeof("lyci")]; + char uniname2ctype_pool_str601[sizeof("whitespace")]; + char uniname2ctype_pool_str602[sizeof("lycian")]; + char uniname2ctype_pool_str603[sizeof("yi")]; + char uniname2ctype_pool_str606[sizeof("cyrl")]; + char uniname2ctype_pool_str608[sizeof("knda")]; + char uniname2ctype_pool_str610[sizeof("orya")]; + char uniname2ctype_pool_str611[sizeof("cyrillic")]; + char uniname2ctype_pool_str616[sizeof("yiii")]; + char uniname2ctype_pool_str618[sizeof("kannada")]; + char uniname2ctype_pool_str623[sizeof("xids")]; + char uniname2ctype_pool_str626[sizeof("limbu")]; + char uniname2ctype_pool_str635[sizeof("m")]; + char uniname2ctype_pool_str638[sizeof("unifiedideograph")]; + char uniname2ctype_pool_str639[sizeof("paragraphseparator")]; + char uniname2ctype_pool_str640[sizeof("lm")]; + char uniname2ctype_pool_str645[sizeof("openpunctuation")]; + char uniname2ctype_pool_str646[sizeof("tagb")]; + char uniname2ctype_pool_str649[sizeof("kharoshthi")]; + char uniname2ctype_pool_str651[sizeof("enclosingmark")]; + char uniname2ctype_pool_str652[sizeof("surrogate")]; + char uniname2ctype_pool_str653[sizeof("beng")]; + char uniname2ctype_pool_str654[sizeof("number")]; + char uniname2ctype_pool_str656[sizeof("telugu")]; + char uniname2ctype_pool_str660[sizeof("rejang")]; + char uniname2ctype_pool_str661[sizeof("malayalam")]; + char uniname2ctype_pool_str674[sizeof("idsb")]; + char uniname2ctype_pool_str676[sizeof("hexdigit")]; + char uniname2ctype_pool_str677[sizeof("xpeo")]; + char uniname2ctype_pool_str689[sizeof("phnx")]; + char uniname2ctype_pool_str692[sizeof("bopo")]; + char uniname2ctype_pool_str698[sizeof("bopomofo")]; + char uniname2ctype_pool_str699[sizeof("dep")]; + char uniname2ctype_pool_str701[sizeof("sylo")]; + char uniname2ctype_pool_str705[sizeof("grbase")]; + char uniname2ctype_pool_str706[sizeof("alphabetic")]; + char uniname2ctype_pool_str707[sizeof("cwcm")]; + char uniname2ctype_pool_str708[sizeof("patternsyntax")]; + char uniname2ctype_pool_str709[sizeof("grek")]; + char uniname2ctype_pool_str710[sizeof("greek")]; + char uniname2ctype_pool_str714[sizeof("syrc")]; + char uniname2ctype_pool_str717[sizeof("syriac")]; + char uniname2ctype_pool_str722[sizeof("cuneiform")]; + char uniname2ctype_pool_str723[sizeof("gujr")]; + char uniname2ctype_pool_str726[sizeof("lydi")]; + char uniname2ctype_pool_str727[sizeof("gujarati")]; + char uniname2ctype_pool_str728[sizeof("sylotinagri")]; + char uniname2ctype_pool_str729[sizeof("lydian")]; + char uniname2ctype_pool_str748[sizeof("sm")]; + char uniname2ctype_pool_str751[sizeof("currencysymbol")]; + char uniname2ctype_pool_str755[sizeof("limb")]; + char uniname2ctype_pool_str758[sizeof("othergraphemeextend")]; + char uniname2ctype_pool_str786[sizeof("guru")]; + char uniname2ctype_pool_str797[sizeof("qmark")]; + char uniname2ctype_pool_str809[sizeof("mark")]; + char uniname2ctype_pool_str820[sizeof("quotationmark")]; + char uniname2ctype_pool_str823[sizeof("hex")]; + char uniname2ctype_pool_str842[sizeof("upper")]; + char uniname2ctype_pool_str843[sizeof("wspace")]; + char uniname2ctype_pool_str848[sizeof("khmr")]; + char uniname2ctype_pool_str849[sizeof("khmer")]; + char uniname2ctype_pool_str863[sizeof("oldsoutharabian")]; + char uniname2ctype_pool_str864[sizeof("spacingmark")]; + char uniname2ctype_pool_str866[sizeof("punctuation")]; + char uniname2ctype_pool_str867[sizeof("uppercase")]; + char uniname2ctype_pool_str878[sizeof("meeteimayek")]; + char uniname2ctype_pool_str883[sizeof("uppercaseletter")]; + char uniname2ctype_pool_str884[sizeof("cypriot")]; + char uniname2ctype_pool_str886[sizeof("buhd")]; + char uniname2ctype_pool_str887[sizeof("buhid")]; + char uniname2ctype_pool_str895[sizeof("modifiersymbol")]; + char uniname2ctype_pool_str898[sizeof("blank")]; + char uniname2ctype_pool_str908[sizeof("hyphen")]; + char uniname2ctype_pool_str909[sizeof("bugi")]; + char uniname2ctype_pool_str935[sizeof("myanmar")]; + char uniname2ctype_pool_str937[sizeof("imperialaramaic")]; + char uniname2ctype_pool_str947[sizeof("mathsymbol")]; + char uniname2ctype_pool_str966[sizeof("cwu")]; + char uniname2ctype_pool_str975[sizeof("gurmukhi")]; + char uniname2ctype_pool_str978[sizeof("buginese")]; + char uniname2ctype_pool_str1022[sizeof("symbol")]; + char uniname2ctype_pool_str1024[sizeof("osmanya")]; + char uniname2ctype_pool_str1036[sizeof("bamu")]; + char uniname2ctype_pool_str1040[sizeof("sk")]; + char uniname2ctype_pool_str1065[sizeof("bamum")]; + char uniname2ctype_pool_str1071[sizeof("kayahli")]; + char uniname2ctype_pool_str1072[sizeof("egyp")]; + char uniname2ctype_pool_str1140[sizeof("grlink")]; + char uniname2ctype_pool_str1141[sizeof("xsux")]; + char uniname2ctype_pool_str1174[sizeof("any")]; + char uniname2ctype_pool_str1187[sizeof("graphemelink")]; + char uniname2ctype_pool_str1221[sizeof("mlym")]; + char uniname2ctype_pool_str1235[sizeof("mymr")]; + char uniname2ctype_pool_str1277[sizeof("hebrew")]; + char uniname2ctype_pool_str1542[sizeof("egyptianhieroglyphs")]; + char uniname2ctype_pool_str1751[sizeof("zyyy")]; #endif /* USE_UNICODE_PROPERTIES */ }; static const struct uniname2ctype_pool_t uniname2ctype_pool_contents = @@ -9610,160 +16867,392 @@ static const struct uniname2ctype_pool_t uniname2ctype_pool_contents = "print", "punct", #else /* USE_UNICODE_PROPERTIES */ - "p", - "m", - "po", + "c", + "cc", + "co", "l", "lo", - "ll", - "n", "no", + "n", + "ll", + "cn", "nl", - "s", - "lm", + "lao", + "laoo", + "zl", + "z", + "control", + "qaac", + "ci", + "lana", + "oalpha", + "qaai", + "arabic", + "cari", + "oriya", + "carian", + "cntrl", + "connectorpunctuation", + "olower", + "latn", + "latin", + "ital", + "hano", + "lt", + "han", + "hanunoo", + "canadianaboriginal", + "hangul", + "hani", + "nchar", + "zinh", + "tale", + "loe", + "hira", + "taile", + "lineseparator", + "thaa", + "hiragana", + "thai", + "initialpunctuation", + "other", + "thaana", + "cher", + "otherletter", + "othernumber", + "letter", + "sc", "so", + "taiviet", + "noncharactercodepoint", + "ethi", + "cans", + "titlecaseletter", + "ascii", + "letternumber", + "otheralphabetic", + "otherlowercase", + "idc", + "oidc", + "sinhala", + "terminalpunctuation", + "olditalic", + "di", + "otheridcontinue", + "odi", + "dia", + "otheridstart", + "oldturkic", + "diacritic", + "oldpersian", + "radical", + "sinh", + "ideo", + "shavian", + "format", + "inscriptionalparthian", + "vai", + "vaii", + "tifinagh", + "cf", + "othersymbol", + "ideographic", + "inherited", + "glagolitic", + "idcontinue", + "asciihexdigit", + "inscriptionalpahlavi", + "s", + "gothic", + "cs", + "avestan", + "tavt", + "zs", + "decimalnumber", + "tagbanwa", + "joinc", + "geor", + "hang", + "georgian", + "cased", + "joincontrol", + "oids", + "variationselector", + "graph", + "changeswhenlowercased", + "nd", + "goth", + "pc", + "po", + "ogrext", + "coptic", + "grext", + "logicalorderexception", + "idst", #endif /* USE_UNICODE_PROPERTIES */ "alpha", #ifdef USE_UNICODE_PROPERTIES - "sk", - "mongolian", - "bopomofo", - "sm", + "pi", + "dsrt", + "dash", + "otherdefaultignorablecodepoint", + "copt", + "idstart", + "closepunctuation", + "changeswhentitlecased", + "lepc", + "avst", + "cprt", + "runic", + "patsyn", + "mc", + "tfng", + "lepcha", + "prti", + "print", + "phli", + "mn", + "idsbinaryoperator", + "talu", + "runr", + "graphemebase", + "common", #endif /* USE_UNICODE_PROPERTIES */ "alnum", #ifndef USE_UNICODE_PROPERTIES "xdigit", "newline", "upper", -#else /* USE_UNICODE_PROPERTIES */ - "han", - "malayalam", - "blank", - "hangul", - "hanunoo", - "c", - "armenian", - "co", - "ps", - "balinese", - "arabic", - "coptic", - "common", - "braille", - "phagspa", - "print", - "pf", - "tamil", - "mn", - "latin", - "pd", - "shavian", - "ogham", - "nd", - "assigned", - "nko", - "cs", - "z", - "lao", - "glagolitic", - "zl", - "canadianaboriginal", - "cham", - "thai", - "graph", - "thaana", - "taile", - "lower", -#endif /* USE_UNICODE_PROPERTIES */ "ascii", -#ifndef USE_UNICODE_PROPERTIES "cntrl", #else /* USE_UNICODE_PROPERTIES */ - "cf", - "cn", - "any", - "myanmar", - "gothic", "phoenician", - "inherited", - "olchiki", - "osmanya", - "pc", - "mc", - "oriya", - "sylotinagri", + "deva", + "changeswhencasefolded", "pe", + "mongolian", + "armn", + "deseret", + "softdotted", + "armi", + "devanagari", + "digit", + "caseignorable", + "taml", + "tamil", + "telu", + "ids", + "armenian", + "sd", + "privateuse", + "assigned", + "cham", + "omath", + "otherpunctuation", + "taitham", + "defaultignorablecodepoint", + "glag", + "ethiopic", + "vs", "me", + "cwl", + "mtei", + "math", + "term", + "java", + "tglg", + "lower", + "patternwhitespace", + "finalpunctuation", "tagalog", - "tagbanwa", - "zs", - "lu", - "pi", - "sc", - "lepcha", - "cypriot", - "carian", - "lycian", - "xdigit", - "punct", - "limbu", - "lt", + "patws", + "lisu", + "otheruppercase", #endif /* USE_UNICODE_PROPERTIES */ "space", #ifdef USE_UNICODE_PROPERTIES - "hebrew", - "buhid", - "greek", - "cntrl", - "cherokee", + "graphemeextend", + "saur", + "uideo", + "lowercase", + "rjng", + "osma", + "linb", + "bali", + "cwt", + "separator", + "othermath", + "unassigned", + "lowercaseletter", + "arab", + "samr", + "brai", + "sundanese", + "samaritan", + "ahex", "linearb", + "pf", + "ext", + "olck", + "nko", + "nkoo", + "newline", + "tibetan", + "javanese", "bengali", - "cc", - "yi", - "sundanese", + "newtailue", + "kana", + "olchiki", + "kali", + "cwcf", + "ps", + "braille", + "tibt", + "sterm", + "ugar", + "nonspacingmark", + "phag", + "kaithi", + "xidc", + "balinese", + "mong", + "ogam", + "modifierletter", "ugaritic", - "sinhala", + "katakana", + "pd", + "hebr", + "p", + "orkh", #endif /* USE_UNICODE_PROPERTIES */ "word", #ifndef USE_UNICODE_PROPERTIES "lower", "graph", + "digit", + "blank" #else /* USE_UNICODE_PROPERTIES */ + "saurashtra", + "khar", + "sund", + "zp", + "changeswhenuppercased", + "xidstart", + "shaw", + "kthi", + "ogham", + "spaceseparator", + "changeswhencasemapped", + "sarb", + "xidcontinue", + "bidic", + "deprecated", + "xdigit", + "bidicontrol", + "lu", + "dashpunctuation", + "extender", + "idstrinaryoperator", + "cherokee", + "punct", + "phagspa", + "oupper", + "lyci", + "whitespace", + "lycian", + "yi", + "cyrl", + "knda", + "orya", + "cyrillic", + "yiii", "kannada", + "xids", + "limbu", + "m", + "unifiedideograph", + "paragraphseparator", + "lm", + "openpunctuation", + "tagb", + "kharoshthi", + "enclosingmark", + "surrogate", + "beng", + "number", "telugu", - "vai", - "khmer", - "saurashtra", + "rejang", + "malayalam", + "idsb", + "hexdigit", + "xpeo", + "phnx", + "bopo", + "bopomofo", + "dep", + "sylo", + "grbase", + "alphabetic", + "cwcm", + "patternsyntax", + "grek", + "greek", + "syrc", "syriac", "cuneiform", - "kayahli", - "olditalic", - "oldpersian", - "tibetan", - "kharoshthi", - "zp", - "katakana", - "buginese", - "cyrillic", + "gujr", + "lydi", + "gujarati", + "sylotinagri", "lydian", - "runic", - "hiragana", - "ethiopic", - "newline", - "newtailue", - "georgian", + "sm", + "currencysymbol", + "limb", + "othergraphemeextend", + "guru", + "qmark", + "mark", + "quotationmark", + "hex", "upper", - "deseret", + "wspace", + "khmr", + "khmer", + "oldsoutharabian", + "spacingmark", + "punctuation", + "uppercase", + "meeteimayek", + "uppercaseletter", + "cypriot", + "buhd", + "buhid", + "modifiersymbol", + "blank", + "hyphen", + "bugi", + "myanmar", + "imperialaramaic", + "mathsymbol", + "cwu", "gurmukhi", - "tifinagh", -#endif /* USE_UNICODE_PROPERTIES */ - "digit", -#ifndef USE_UNICODE_PROPERTIES - "blank" -#else /* USE_UNICODE_PROPERTIES */ - "gujarati", - "rejang", - "devanagari" + "buginese", + "symbol", + "osmanya", + "bamu", + "sk", + "bamum", + "kayahli", + "egyp", + "grlink", + "xsux", + "any", + "graphemelink", + "mlym", + "mymr", + "hebrew", + "egyptianhieroglyphs", + "zyyy" #endif /* USE_UNICODE_PROPERTIES */ }; #define uniname2ctype_pool ((const char *) &uniname2ctype_pool_contents) @@ -9781,197 +17270,690 @@ uniname2ctype_p (str, len) static const struct uniname2ctype_struct wordlist[] = { #ifdef USE_UNICODE_PROPERTIES + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3, 17}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str5, 18}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str7, 21}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str9, 23}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str10, 26}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str12, 36}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str13, 33}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str14, 24}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str15, 20}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str16, 35}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str18, 93}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str19, 93}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str20, 51}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str21, 50}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str22, 18}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str24, 127}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str25, 59}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str28, 150}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str33, 175}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str34, 113}, + {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str40, 79}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str41, 147}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str43, 86}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str44, 147}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str46, 3}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str49, 38}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str50, 179}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str51, 74}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str52, 74}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str56, 110}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str65, 115}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str66, 27}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str68, 108}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str70, 115}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str71, 100}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str73, 97}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str74, 108}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str76, 181}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str77, 113}, + {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str83, 119}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str85, 190}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str86, 105}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str91, 119}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str92, 51}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str94, 81}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str97, 105}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str98, 92}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str100, 42}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str101, 17}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str103, 81}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str107, 99}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str111, 26}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str113, 36}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str114, 23}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str116, 46}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str118, 49}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str123, 151}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str128, 181}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str129, 98}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str130, 100}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str135, 27}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str136, 14}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str138, 35}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str139, 175}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str141, 179}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str144, 66}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str146, 192}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str147, 91}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str148, 171}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str151, 110}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str152, 69}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str153, 192}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str155, 187}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str156, 177}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str161, 191}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str162, 163}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str167, 177}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str168, 132}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str171, 185}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str179, 91}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str183, 176}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str185, 122}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str186, 19}, + {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str192, 161}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str196, 142}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str197, 142}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str202, 130}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str203, 19}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str205, 49}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str207, 176}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str211, 113}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str212, 129}, + {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str218, 66}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str220, 174}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str224, 162}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str225, 45}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str226, 111}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str227, 22}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str229, 152}, + {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str235, 151}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str236, 53}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str243, 34}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str244, 117}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str245, 167}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str248, 96}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str249, 97}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str251, 96}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str253, 58}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2, 37}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3, 29}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str4, 43}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str5, 23}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str256, 167}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str257, 191}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str260, 194}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str262, 5}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str263, 60}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str264, 34}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str268, 111}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str269, 38}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str7, 26}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str8, 24}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str9, 33}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str271, 43}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str272, 182}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str276, 127}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str277, 70}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str282, 190}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str285, 184}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str288, 1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str289, 42}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str292, 112}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str297, 168}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str298, 187}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str302, 127}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str306, 65}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str307, 40}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str11, 36}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str12, 35}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str13, 45}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str14, 25}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str15, 49}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str309, 62}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str312, 140}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str317, 152}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str318, 124}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str319, 102}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str320, 196}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str321, 30}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str326, 130}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str327, 140}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str328, 161}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str329, 7}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str330, 162}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str331, 32}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str332, 183}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str17, 1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str18, 47}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str334, 128}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str335, 102}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str20, 85}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str21, 88}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str22, 48}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str337, 71}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str338, 73}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str339, 13}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str340, 136}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str341, 82}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str342, 63}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str343, 40}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str344, 104}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str352, 77}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str353, 112}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str354, 189}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str357, 159}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str358, 82}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str24, 13}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str25, 89}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str26, 71}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str27, 2}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str28, 78}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str29, 96}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str30, 17}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str31, 58}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str32, 21}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str33, 44}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str34, 115}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str360, 4}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str361, 59}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str362, 87}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str363, 87}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str36, 60}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str37, 108}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str38, 54}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str39, 106}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str365, 88}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str366, 65}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str367, 77}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str42, 118}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str43, 7}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str370, 189}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str372, 21}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str373, 16}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str375, 149}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str377, 172}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str378, 43}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str379, 150}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str381, 69}, + {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str387, 129}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str388, 98}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str390, 194}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str395, 31}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str396, 60}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str400, 158}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str404, 54}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str46, 41}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str407, 171}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str408, 157}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str48, 68}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str49, 32}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str50, 55}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str51, 39}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str410, 114}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str413, 6}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str414, 195}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str417, 41}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str418, 114}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str419, 195}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str420, 155}, + {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str426, 180}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str427, 9}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str53, 103}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str429, 70}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str430, 143}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str435, 186}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str56, 82}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str438, 56}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str58, 34}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str59, 16}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str60, 119}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str61, 22}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str62, 50}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str63, 74}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str64, 110}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str65, 51}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str66, 81}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str67, 130}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str68, 73}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str69, 5}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str70, 62}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str71, 100}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str72, 6}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str73, 14}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str74, 19}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str440, 145}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str76, 20}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str77, 15}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str442, 123}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str79, 76}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str80, 92}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str81, 117}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str82, 94}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str83, 122}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str84, 104}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str85, 38}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str86, 30}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str87, 67}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str88, 112}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str89, 40}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str90, 31}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str91, 95}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str92, 98}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str93, 53}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str94, 28}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str95, 42}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str96, 46}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str97, 121}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str98, 105}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str99, 128}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str100, 127}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str101, 11}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str102, 8}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str103, 99}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str104, 27}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str105, 9}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str106, 59}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str107, 97}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str108, 56}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str109, 3}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str110, 80}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str111, 101}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str112, 64}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str113, 18}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str114, 90}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str444, 120}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str445, 134}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str117, 120}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str118, 102}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str119, 72}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str120, 12}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str448, 62}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str449, 50}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str450, 172}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str451, 20}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str123, 70}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str454, 24}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str455, 79}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str126, 69}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str127, 123}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str458, 154}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str459, 125}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str460, 139}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str462, 154}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str463, 174}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str129, 84}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str465, 120}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str131, 124}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str132, 61}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str467, 41}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str134, 116}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str135, 125}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str469, 178}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str474, 141}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str476, 138}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str477, 138}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str479, 0}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str480, 94}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str481, 157}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str485, 83}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str486, 128}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str487, 106}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str488, 141}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str489, 144}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str490, 63}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str491, 44}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str493, 125}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str494, 94}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str502, 193}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str504, 121}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str505, 32}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str508, 137}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str509, 164}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str138, 91}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str139, 113}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str140, 75}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str141, 114}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str142, 52}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str512, 68}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str514, 134}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str515, 104}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str516, 101}, {-1}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str146, 87}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str520, 25}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str521, 121}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str522, 106}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str523, 39}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str525, 78}, + {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str531, 37}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str533, 163}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str536, 12}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str537, 143}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str538, 133}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str539, 139}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str542, 52}, + {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str548, 61}, {-1}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str150, 107}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str151, 57}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str552, 67}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str553, 122}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str554, 164}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str556, 101}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str558, 53}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str559, 64}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str560, 160}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str562, 68}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str564, 166}, + {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str570, 188}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str573, 11}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str575, 166}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str584, 28}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str587, 39}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str590, 178}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str593, 184}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str594, 99}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str595, 8}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str597, 137}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str598, 180}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str599, 146}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str601, 165}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str602, 146}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str603, 109}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str606, 76}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str608, 89}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str610, 86}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str611, 76}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str616, 109}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str618, 89}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str623, 67}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str626, 118}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str635, 29}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str638, 186}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str639, 52}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str640, 25}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str645, 44}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str646, 117}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str649, 133}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str651, 31}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str652, 22}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str653, 83}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str654, 33}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str153, 129}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str154, 83}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str656, 88}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str660, 145}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str661, 90}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str674, 183}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str156, 86}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str157, 79}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str676, 173}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str677, 132}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str689, 136}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str692, 107}, {-1}, {-1}, {-1}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str163, 0}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str698, 107}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str699, 188}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str701, 131}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str705, 71}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str706, 55}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str707, 64}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str708, 196}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str709, 75}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str710, 75}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str714, 80}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str717, 80}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str722, 135}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str723, 85}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str726, 148}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str727, 85}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str728, 131}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str729, 148}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str748, 48}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str751, 46}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str755, 118}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str758, 182}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str786, 84}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str797, 170}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str809, 29}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str820, 170}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str823, 173}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str842, 10}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str843, 165}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str848, 103}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str849, 103}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str863, 160}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str864, 30}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str165, 109}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str866, 37}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str867, 57}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str878, 158}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str883, 28}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str884, 124}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str886, 116}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str887, 116}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str895, 47}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str898, 2}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str908, 169}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str909, 126}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str935, 95}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str937, 159}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str947, 48}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str966, 61}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str975, 84}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str978, 126}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #endif /* USE_UNICODE_PROPERTIES */ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #ifndef USE_UNICODE_PROPERTIES - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str7, 7}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str8, 8}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str9, 1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str10, 13}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str11, 11}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str12, 0}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str13, 10}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str14, 14}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str15, 3}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str16, 9}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str17, 12}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str18, 6}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str19, 5}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str20, 4}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str21, 2} + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str7, 7}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str8, 8}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str9, 1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str10, 13}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str11, 11}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str12, 0}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str13, 10}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str14, 14}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str15, 3}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str16, 9}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str17, 12}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str18, 6}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str19, 5}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str20, 4}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str21, 2} #else /* USE_UNICODE_PROPERTIES */ - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str182, 77}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str183, 10}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1022, 45}, + {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1024, 123}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1036, 156}, {-1}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str187, 93}, - {-1}, {-1}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str192, 65}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1040, 47}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1065, 156}, {-1}, {-1}, {-1}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str216, 111}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1071, 144}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1072, 153}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1140, 72}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1141, 135}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str222, 4}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str231, 66}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1174, 15}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1187, 72}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1221, 90}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1235, 95}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str237, 126}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1277, 78}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1542, 153}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str266, 63} + {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1751, 73} #endif /* USE_UNICODE_PROPERTIES */ }; diff --git a/enc/unicode/name2ctype.kwd b/enc/unicode/name2ctype.kwd index cfa48fac6e48e7..ff136177cac960 100644 --- a/enc/unicode/name2ctype.kwd +++ b/enc/unicode/name2ctype.kwd @@ -1,64 +1,43 @@ %{ -/* 'NEWLINE': [[:NEWLINE:]] */ -static const OnigCodePoint CR_NEWLINE[] = { +#ifdef USE_UNICODE_PROPERTIES +/* 'Any': - */ +static const OnigCodePoint CR_Any[] = { 1, - 0x000a, 0x000a, -}; /* CR_NEWLINE */ + 0x0000, 0x10ffff, +}; /* CR_Any */ -/* 'Alpha': [[:Alpha:]] */ -static const OnigCodePoint CR_Alpha[] = { - 452, - 0x0041, 0x005a, - 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, - 0x0386, 0x0386, - 0x0388, 0x038a, +/* 'Assigned': - */ +static const OnigCodePoint CR_Assigned[] = { + 485, + 0x0000, 0x0377, + 0x037a, 0x037e, + 0x0384, 0x038a, 0x038c, 0x038c, 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x0483, 0x0523, + 0x03a3, 0x0525, 0x0531, 0x0556, - 0x0559, 0x0559, + 0x0559, 0x055f, 0x0561, 0x0587, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, + 0x0589, 0x058a, + 0x0591, 0x05c7, 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0610, 0x061a, + 0x05f0, 0x05f4, + 0x0600, 0x0603, + 0x0606, 0x061b, + 0x061e, 0x061f, 0x0621, 0x065e, - 0x066e, 0x06d3, - 0x06d5, 0x06dc, - 0x06de, 0x06e8, - 0x06ea, 0x06ef, - 0x06fa, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x074a, + 0x0660, 0x070d, + 0x070f, 0x074a, 0x074d, 0x07b1, - 0x07ca, 0x07f5, - 0x07fa, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0963, - 0x0971, 0x0972, - 0x097b, 0x097f, + 0x07c0, 0x07fa, + 0x0800, 0x082d, + 0x0830, 0x083e, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0972, + 0x0979, 0x097f, 0x0981, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, @@ -72,7 +51,7 @@ static const OnigCodePoint CR_Alpha[] = { 0x09d7, 0x09d7, 0x09dc, 0x09dd, 0x09df, 0x09e3, - 0x09f0, 0x09f1, + 0x09e6, 0x09fb, 0x0a01, 0x0a03, 0x0a05, 0x0a0a, 0x0a0f, 0x0a10, @@ -88,7 +67,7 @@ static const OnigCodePoint CR_Alpha[] = { 0x0a51, 0x0a51, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e, - 0x0a70, 0x0a75, + 0x0a66, 0x0a75, 0x0a81, 0x0a83, 0x0a85, 0x0a8d, 0x0a8f, 0x0a91, @@ -101,6 +80,8 @@ static const OnigCodePoint CR_Alpha[] = { 0x0acb, 0x0acd, 0x0ad0, 0x0ad0, 0x0ae0, 0x0ae3, + 0x0ae6, 0x0aef, + 0x0af1, 0x0af1, 0x0b01, 0x0b03, 0x0b05, 0x0b0c, 0x0b0f, 0x0b10, @@ -114,7 +95,7 @@ static const OnigCodePoint CR_Alpha[] = { 0x0b56, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b63, - 0x0b71, 0x0b71, + 0x0b66, 0x0b71, 0x0b82, 0x0b83, 0x0b85, 0x0b8a, 0x0b8e, 0x0b90, @@ -130,6 +111,7 @@ static const OnigCodePoint CR_Alpha[] = { 0x0bca, 0x0bcd, 0x0bd0, 0x0bd0, 0x0bd7, 0x0bd7, + 0x0be6, 0x0bfa, 0x0c01, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, @@ -142,6 +124,8 @@ static const OnigCodePoint CR_Alpha[] = { 0x0c55, 0x0c56, 0x0c58, 0x0c59, 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c78, 0x0c7f, 0x0c82, 0x0c83, 0x0c85, 0x0c8c, 0x0c8e, 0x0c90, @@ -154,6 +138,8 @@ static const OnigCodePoint CR_Alpha[] = { 0x0cd5, 0x0cd6, 0x0cde, 0x0cde, 0x0ce0, 0x0ce3, + 0x0ce6, 0x0cef, + 0x0cf1, 0x0cf2, 0x0d02, 0x0d03, 0x0d05, 0x0d0c, 0x0d0e, 0x0d10, @@ -164,7 +150,8 @@ static const OnigCodePoint CR_Alpha[] = { 0x0d4a, 0x0d4d, 0x0d57, 0x0d57, 0x0d60, 0x0d63, - 0x0d7a, 0x0d7f, + 0x0d66, 0x0d75, + 0x0d79, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, @@ -175,9 +162,9 @@ static const OnigCodePoint CR_Alpha[] = { 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, - 0x0df2, 0x0df3, + 0x0df2, 0x0df4, 0x0e01, 0x0e3a, - 0x0e40, 0x0e4e, + 0x0e3f, 0x0e5b, 0x0e81, 0x0e82, 0x0e84, 0x0e84, 0x0e87, 0x0e88, @@ -194,28 +181,18 @@ static const OnigCodePoint CR_Alpha[] = { 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, 0x0ec8, 0x0ecd, + 0x0ed0, 0x0ed9, 0x0edc, 0x0edd, - 0x0f00, 0x0f00, - 0x0f18, 0x0f19, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f3e, 0x0f47, + 0x0f00, 0x0f47, 0x0f49, 0x0f6c, - 0x0f71, 0x0f84, - 0x0f86, 0x0f8b, + 0x0f71, 0x0f8b, 0x0f90, 0x0f97, 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x1000, 0x103f, - 0x1050, 0x108f, - 0x10a0, 0x10c5, - 0x10d0, 0x10fa, - 0x10fc, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1200, 0x1248, + 0x0fbe, 0x0fcc, + 0x0fce, 0x0fd8, + 0x1000, 0x10c5, + 0x10d0, 0x10fc, + 0x1100, 0x1248, 0x124a, 0x124d, 0x1250, 0x1256, 0x1258, 0x1258, @@ -231,44 +208,51 @@ static const OnigCodePoint CR_Alpha[] = { 0x12d8, 0x1310, 0x1312, 0x1315, 0x1318, 0x135a, - 0x135f, 0x135f, - 0x1380, 0x138f, + 0x135f, 0x137c, + 0x1380, 0x1399, 0x13a0, 0x13f4, - 0x1401, 0x166c, - 0x166f, 0x1676, - 0x1681, 0x169a, - 0x16a0, 0x16ea, + 0x1400, 0x169c, + 0x16a0, 0x16f0, 0x1700, 0x170c, 0x170e, 0x1714, - 0x1720, 0x1734, + 0x1720, 0x1736, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17d3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dd, - 0x180b, 0x180d, + 0x1780, 0x17dd, + 0x17e0, 0x17e9, + 0x17f0, 0x17f9, + 0x1800, 0x180e, + 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18aa, + 0x18b0, 0x18f5, 0x1900, 0x191c, 0x1920, 0x192b, 0x1930, 0x193b, - 0x1950, 0x196d, + 0x1940, 0x1940, + 0x1944, 0x196d, 0x1970, 0x1974, - 0x1980, 0x19a9, + 0x1980, 0x19ab, 0x19b0, 0x19c9, - 0x1a00, 0x1a1b, + 0x19d0, 0x19da, + 0x19de, 0x1a1b, + 0x1a1e, 0x1a5e, + 0x1a60, 0x1a7c, + 0x1a7f, 0x1a89, + 0x1a90, 0x1a99, + 0x1aa0, 0x1aad, 0x1b00, 0x1b4b, - 0x1b6b, 0x1b73, + 0x1b50, 0x1b7c, 0x1b80, 0x1baa, - 0x1bae, 0x1baf, + 0x1bae, 0x1bb9, 0x1c00, 0x1c37, - 0x1c4d, 0x1c4f, - 0x1c5a, 0x1c7d, + 0x1c3b, 0x1c49, + 0x1c4d, 0x1c7f, + 0x1cd0, 0x1cf2, 0x1d00, 0x1de6, - 0x1dfe, 0x1f15, + 0x1dfd, 0x1f15, 0x1f18, 0x1f1d, 0x1f20, 0x1f45, 0x1f48, 0x1f4d, @@ -278,39 +262,44 @@ static const OnigCodePoint CR_Alpha[] = { 0x1f5d, 0x1f5d, 0x1f5f, 0x1f7d, 0x1f80, 0x1fb4, - 0x1fb6, 0x1fbc, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fcc, - 0x1fd0, 0x1fd3, + 0x1fb6, 0x1fc4, + 0x1fc6, 0x1fd3, 0x1fd6, 0x1fdb, - 0x1fe0, 0x1fec, + 0x1fdd, 0x1fef, 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffc, - 0x2071, 0x2071, - 0x207f, 0x207f, + 0x1ff6, 0x1ffe, + 0x2000, 0x2064, + 0x206a, 0x2071, + 0x2074, 0x208e, 0x2090, 0x2094, + 0x20a0, 0x20b8, 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, - 0x2183, 0x2184, + 0x2100, 0x2189, + 0x2190, 0x23e8, + 0x2400, 0x2426, + 0x2440, 0x244a, + 0x2460, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, + 0x2701, 0x2704, + 0x2706, 0x2709, + 0x270c, 0x2727, + 0x2729, 0x274b, + 0x274d, 0x274d, + 0x274f, 0x2752, + 0x2756, 0x275e, + 0x2761, 0x2794, + 0x2798, 0x27af, + 0x27b1, 0x27be, + 0x27c0, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 0x2b4c, + 0x2b50, 0x2b59, 0x2c00, 0x2c2e, 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2ce4, - 0x2d00, 0x2d25, + 0x2c60, 0x2cf1, + 0x2cf9, 0x2d25, 0x2d30, 0x2d65, 0x2d6f, 0x2d6f, 0x2d80, 0x2d96, @@ -322,72 +311,83 @@ static const OnigCodePoint CR_Alpha[] = { 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, - 0x2de0, 0x2dff, - 0x2e2f, 0x2e2f, - 0x3005, 0x3006, - 0x302a, 0x302f, - 0x3031, 0x3035, - 0x303b, 0x303c, + 0x2de0, 0x2e31, + 0x2e80, 0x2e99, + 0x2e9b, 0x2ef3, + 0x2f00, 0x2fd5, + 0x2ff0, 0x2ffb, + 0x3000, 0x303f, 0x3041, 0x3096, - 0x3099, 0x309a, - 0x309d, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, + 0x3099, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, - 0x31a0, 0x31b7, - 0x31f0, 0x31ff, - 0x3400, 0x3400, - 0x4db5, 0x4db5, - 0x4e00, 0x4e00, - 0x9fc3, 0x9fc3, + 0x3190, 0x31b7, + 0x31c0, 0x31e3, + 0x31f0, 0x321e, + 0x3220, 0x32fe, + 0x3300, 0x4db5, + 0x4dc0, 0x9fcb, 0xa000, 0xa48c, - 0xa500, 0xa60c, - 0xa610, 0xa61f, - 0xa62a, 0xa62b, + 0xa490, 0xa4c6, + 0xa4d0, 0xa62b, 0xa640, 0xa65f, - 0xa662, 0xa672, - 0xa67c, 0xa67d, - 0xa67f, 0xa697, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa78c, - 0xa7fb, 0xa827, - 0xa840, 0xa873, + 0xa662, 0xa673, + 0xa67c, 0xa697, + 0xa6a0, 0xa6f7, + 0xa700, 0xa78c, + 0xa7fb, 0xa82b, + 0xa830, 0xa839, + 0xa840, 0xa877, 0xa880, 0xa8c4, - 0xa90a, 0xa92d, - 0xa930, 0xa953, + 0xa8ce, 0xa8d9, + 0xa8e0, 0xa8fb, + 0xa900, 0xa953, + 0xa95f, 0xa97c, + 0xa980, 0xa9cd, + 0xa9cf, 0xa9d9, + 0xa9de, 0xa9df, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, + 0xaa50, 0xaa59, + 0xaa5c, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadf, + 0xabc0, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xd800, 0xfa2d, + 0xfa30, 0xfa6d, 0xfa70, 0xfad9, 0xfb00, 0xfb06, 0xfb13, 0xfb17, - 0xfb1d, 0xfb28, - 0xfb2a, 0xfb36, + 0xfb1d, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44, 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3d, + 0xfbd3, 0xfd3f, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfb, - 0xfe00, 0xfe0f, + 0xfdf0, 0xfdfd, + 0xfe00, 0xfe19, 0xfe20, 0xfe26, + 0xfe30, 0xfe52, + 0xfe54, 0xfe66, + 0xfe68, 0xfe6b, 0xfe70, 0xfe74, 0xfe76, 0xfefc, - 0xff21, 0xff3a, - 0xff41, 0xff5a, - 0xff66, 0xffbe, + 0xfeff, 0xfeff, + 0xff01, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, + 0xffe0, 0xffe6, + 0xffe8, 0xffee, + 0xfff9, 0xfffd, 0x10000, 0x1000b, 0x1000d, 0x10026, 0x10028, 0x1003a, @@ -395,38 +395,57 @@ static const OnigCodePoint CR_Alpha[] = { 0x1003f, 0x1004d, 0x10050, 0x1005d, 0x10080, 0x100fa, - 0x101fd, 0x101fd, + 0x10100, 0x10102, + 0x10107, 0x10133, + 0x10137, 0x1018a, + 0x10190, 0x1019b, + 0x101d0, 0x101fd, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x10300, 0x1031e, - 0x10330, 0x10340, - 0x10342, 0x10349, + 0x10320, 0x10323, + 0x10330, 0x1034a, 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, + 0x1039f, 0x103c3, + 0x103c8, 0x103d5, 0x10400, 0x1049d, + 0x104a0, 0x104a9, 0x10800, 0x10805, 0x10808, 0x10808, 0x1080a, 0x10835, 0x10837, 0x10838, 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10915, - 0x10920, 0x10939, + 0x1083f, 0x10855, + 0x10857, 0x1085f, + 0x10900, 0x1091b, + 0x1091f, 0x10939, + 0x1093f, 0x1093f, 0x10a00, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, + 0x10a3f, 0x10a47, + 0x10a50, 0x10a58, + 0x10a60, 0x10a7f, + 0x10b00, 0x10b35, + 0x10b39, 0x10b55, + 0x10b58, 0x10b72, + 0x10b78, 0x10b7f, + 0x10c00, 0x10c48, + 0x10e60, 0x10e7e, + 0x11080, 0x110c1, 0x12000, 0x1236e, - 0x1d165, 0x1d169, - 0x1d16d, 0x1d172, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, + 0x12400, 0x12462, + 0x12470, 0x12473, + 0x13000, 0x1342e, + 0x1d000, 0x1d0f5, + 0x1d100, 0x1d126, + 0x1d129, 0x1d1dd, + 0x1d200, 0x1d245, + 0x1d300, 0x1d356, + 0x1d360, 0x1d371, 0x1d400, 0x1d454, 0x1d456, 0x1d49c, 0x1d49e, 0x1d49f, @@ -446,3828 +465,99 @@ static const OnigCodePoint CR_Alpha[] = { 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, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, + 0x1d6a8, 0x1d7cb, + 0x1d7ce, 0x1d7ff, + 0x1f000, 0x1f02b, + 0x1f030, 0x1f093, + 0x1f100, 0x1f10a, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, 0x2f800, 0x2fa1d, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, 0xe0100, 0xe01ef, -}; /* CR_Alpha */ + 0xf0000, 0xffffd, + 0x100000, 0x10fffd, +}; /* CR_Assigned */ -/* 'Blank': [[:Blank:]] */ -static const OnigCodePoint CR_Blank[] = { - 9, - 0x0009, 0x0009, - 0x0020, 0x0020, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x180e, 0x180e, - 0x2000, 0x200a, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000, -}; /* CR_Blank */ +/* 'C': Major Category */ +static const OnigCodePoint CR_C[] = { + 20, + 0x0000, 0x001f, + 0x007f, 0x009f, + 0x00ad, 0x00ad, + 0x0600, 0x0603, + 0x06dd, 0x06dd, + 0x070f, 0x070f, + 0x17b4, 0x17b5, + 0x200b, 0x200f, + 0x202a, 0x202e, + 0x2060, 0x2064, + 0x206a, 0x206f, + 0xd800, 0xf8ff, + 0xfeff, 0xfeff, + 0xfff9, 0xfffb, + 0x110bd, 0x110bd, + 0x1d173, 0x1d17a, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, + 0xf0000, 0xffffd, + 0x100000, 0x10ffff, +}; /* CR_C */ -/* 'Cntrl': [[:Cntrl:]] */ -static const OnigCodePoint CR_Cntrl[] = { +/* 'Cc': General Category */ +static const OnigCodePoint CR_Cc[] = { 2, 0x0000, 0x001f, 0x007f, 0x009f, -}; /* CR_Cntrl */ +}; /* CR_Cc */ -/* 'Digit': [[:Digit:]] */ -static const OnigCodePoint CR_Digit[] = { - 33, - 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, - 0x0e50, 0x0e59, - 0x0ed0, 0x0ed9, - 0x0f20, 0x0f29, - 0x1040, 0x1049, - 0x1090, 0x1099, - 0x17e0, 0x17e9, - 0x1810, 0x1819, - 0x1946, 0x194f, - 0x19d0, 0x19d9, - 0x1b50, 0x1b59, - 0x1bb0, 0x1bb9, - 0x1c40, 0x1c49, - 0x1c50, 0x1c59, - 0xa620, 0xa629, - 0xa8d0, 0xa8d9, - 0xa900, 0xa909, - 0xaa50, 0xaa59, - 0xff10, 0xff19, - 0x104a0, 0x104a9, - 0x1d7ce, 0x1d7ff, -}; /* CR_Digit */ - -/* 'Graph': [[:Graph:]] */ -static const OnigCodePoint CR_Graph[] = { - 449, - 0x0021, 0x007e, - 0x00a1, 0x00ac, - 0x00ae, 0x0377, - 0x037a, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x0523, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0606, 0x061b, - 0x061e, 0x061f, - 0x0621, 0x065e, - 0x0660, 0x06dc, - 0x06de, 0x070d, - 0x0710, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0972, - 0x097b, 0x097f, - 0x0981, 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, 0x09fa, - 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, - 0x0af1, 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, 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, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, - 0x0c82, 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, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 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, - 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, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fd4, - 0x1000, 0x1099, - 0x109e, 0x10c5, - 0x10d0, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x135f, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1401, 0x1676, - 0x1681, 0x169c, - 0x16a0, 0x16f0, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180d, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a1f, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, - 0x1c00, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c7f, - 0x1d00, 0x1de6, - 0x1dfe, 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, - 0x2010, 0x2027, - 0x2030, 0x205e, - 0x2070, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x2094, - 0x20a0, 0x20b5, - 0x20d0, 0x20f0, - 0x2100, 0x214f, - 0x2153, 0x2188, - 0x2190, 0x23e7, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27ca, - 0x27cc, 0x27cc, - 0x27d0, 0x2b4c, - 0x2b50, 0x2b54, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2cea, - 0x2cf9, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e30, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3001, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31b7, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x3243, - 0x3250, 0x32fe, - 0x3300, 0x3400, - 0x4db5, 0x4db5, - 0x4dc0, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa500, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa673, - 0xa67c, 0xa697, - 0xa700, 0xa78c, - 0xa7fb, 0xa82b, - 0xa840, 0xa877, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, - 0xa900, 0xa953, - 0xa95f, 0xa95f, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa5f, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe26, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xff01, 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, 0x1018a, - 0x10190, 0x1019b, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10919, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x12000, 0x1236e, - 0x12400, 0x12462, - 0x12470, 0x12473, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d172, - 0x1d17b, 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, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0100, 0xe01ef, -}; /* CR_Graph */ - -/* 'Lower': [[:Lower:]] */ -static const OnigCodePoint CR_Lower[] = { - 598, - 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, 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, - 0x0561, 0x0587, - 0x1d00, 0x1d2b, - 0x1d62, 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, - 0x2071, 0x2071, - 0x207f, 0x207f, - 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, 0x2c7c, - 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, - 0x2d00, 0x2d25, - 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, - 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, - 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, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xff41, 0xff5a, - 0x10428, 0x1044f, - 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, -}; /* CR_Lower */ - -/* 'Print': [[:Print:]] */ -static const OnigCodePoint CR_Print[] = { - 452, - 0x0009, 0x000d, - 0x0020, 0x007e, - 0x0085, 0x0085, - 0x00a0, 0x00ac, - 0x00ae, 0x0377, - 0x037a, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x0523, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0606, 0x061b, - 0x061e, 0x061f, - 0x0621, 0x065e, - 0x0660, 0x06dc, - 0x06de, 0x070d, - 0x0710, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0972, - 0x097b, 0x097f, - 0x0981, 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, 0x09fa, - 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, - 0x0af1, 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, 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, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, - 0x0c82, 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, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 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, - 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, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fd4, - 0x1000, 0x1099, - 0x109e, 0x10c5, - 0x10d0, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x135f, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1401, 0x1676, - 0x1680, 0x169c, - 0x16a0, 0x16f0, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a1f, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, - 0x1c00, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c7f, - 0x1d00, 0x1de6, - 0x1dfe, 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, 0x2029, - 0x202f, 0x205f, - 0x2070, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x2094, - 0x20a0, 0x20b5, - 0x20d0, 0x20f0, - 0x2100, 0x214f, - 0x2153, 0x2188, - 0x2190, 0x23e7, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27ca, - 0x27cc, 0x27cc, - 0x27d0, 0x2b4c, - 0x2b50, 0x2b54, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2cea, - 0x2cf9, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e30, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31b7, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x3243, - 0x3250, 0x32fe, - 0x3300, 0x3400, - 0x4db5, 0x4db5, - 0x4dc0, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa500, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa673, - 0xa67c, 0xa697, - 0xa700, 0xa78c, - 0xa7fb, 0xa82b, - 0xa840, 0xa877, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, - 0xa900, 0xa953, - 0xa95f, 0xa95f, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa5f, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe26, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xff01, 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, 0x1018a, - 0x10190, 0x1019b, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10919, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x12000, 0x1236e, - 0x12400, 0x12462, - 0x12470, 0x12473, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d172, - 0x1d17b, 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, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0100, 0xe01ef, -}; /* CR_Print */ - -/* 'Punct': [[:Punct:]] */ -static const OnigCodePoint CR_Punct[] = { - 112, - 0x0021, 0x0023, - 0x0025, 0x002a, - 0x002c, 0x002f, - 0x003a, 0x003b, - 0x003f, 0x0040, - 0x005b, 0x005d, - 0x005f, 0x005f, - 0x007b, 0x007b, - 0x007d, 0x007d, - 0x00a1, 0x00a1, - 0x00ab, 0x00ab, - 0x00b7, 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, - 0x0964, 0x0965, - 0x0970, 0x0970, - 0x0df4, 0x0df4, - 0x0e4f, 0x0e4f, - 0x0e5a, 0x0e5b, - 0x0f04, 0x0f12, - 0x0f3a, 0x0f3d, - 0x0f85, 0x0f85, - 0x0fd0, 0x0fd4, - 0x104a, 0x104f, - 0x10fb, 0x10fb, - 0x1361, 0x1368, - 0x166d, 0x166e, - 0x169b, 0x169c, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x17d4, 0x17d6, - 0x17d8, 0x17da, - 0x1800, 0x180a, - 0x1944, 0x1945, - 0x19de, 0x19df, - 0x1a1e, 0x1a1f, - 0x1b5a, 0x1b60, - 0x1c3b, 0x1c3f, - 0x1c7e, 0x1c7f, - 0x2010, 0x2027, - 0x2030, 0x2043, - 0x2045, 0x2051, - 0x2053, 0x205e, - 0x207d, 0x207e, - 0x208d, 0x208e, - 0x2329, 0x232a, - 0x2768, 0x2775, - 0x27c5, 0x27c6, - 0x27e6, 0x27ef, - 0x2983, 0x2998, - 0x29d8, 0x29db, - 0x29fc, 0x29fd, - 0x2cf9, 0x2cfc, - 0x2cfe, 0x2cff, - 0x2e00, 0x2e2e, - 0x2e30, 0x2e30, - 0x3001, 0x3003, - 0x3008, 0x3011, - 0x3014, 0x301f, - 0x3030, 0x3030, - 0x303d, 0x303d, - 0x30a0, 0x30a0, - 0x30fb, 0x30fb, - 0xa60d, 0xa60f, - 0xa673, 0xa673, - 0xa67e, 0xa67e, - 0xa874, 0xa877, - 0xa8ce, 0xa8cf, - 0xa92e, 0xa92f, - 0xa95f, 0xa95f, - 0xaa5c, 0xaa5f, - 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, 0x10101, - 0x1039f, 0x1039f, - 0x103d0, 0x103d0, - 0x1091f, 0x1091f, - 0x1093f, 0x1093f, - 0x10a50, 0x10a58, - 0x12470, 0x12473, -}; /* CR_Punct */ - -/* 'Space': [[:Space:]] */ -static const OnigCodePoint CR_Space[] = { - 11, - 0x0009, 0x000d, - 0x0020, 0x0020, - 0x0085, 0x0085, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x180e, 0x180e, - 0x2000, 0x200a, - 0x2028, 0x2029, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000, -}; /* CR_Space */ - -/* 'Upper': [[:Upper:]] */ -static const OnigCodePoint CR_Upper[] = { - 591, - 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, - 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, - 0x0531, 0x0556, - 0x10a0, 0x10c5, - 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, 0x2c6f, - 0x2c72, 0x2c72, - 0x2c75, 0x2c75, - 0x2c80, 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, - 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, - 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, - 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, - 0xff21, 0xff3a, - 0x10400, 0x10427, - 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, -}; /* CR_Upper */ - -/* 'XDigit': [[:XDigit:]] */ -static const OnigCodePoint CR_XDigit[] = { - 3, - 0x0030, 0x0039, - 0x0041, 0x0046, - 0x0061, 0x0066, -}; /* CR_XDigit */ - -/* 'Word': [[:Word:]] */ -static const OnigCodePoint CR_Word[] = { - 477, - 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, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x0483, 0x0523, - 0x0531, 0x0556, - 0x0559, 0x0559, - 0x0561, 0x0587, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0610, 0x061a, - 0x0621, 0x065e, - 0x0660, 0x0669, - 0x066e, 0x06d3, - 0x06d5, 0x06dc, - 0x06de, 0x06e8, - 0x06ea, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07f5, - 0x07fa, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0963, - 0x0966, 0x096f, - 0x0971, 0x0972, - 0x097b, 0x097f, - 0x0981, 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, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c82, 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, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 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, - 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, 0x0edd, - 0x0f00, 0x0f00, - 0x0f18, 0x0f19, - 0x0f20, 0x0f29, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f3e, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f84, - 0x0f86, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x1000, 0x1049, - 0x1050, 0x1099, - 0x10a0, 0x10c5, - 0x10d0, 0x10fa, - 0x10fc, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x135f, 0x135f, - 0x1380, 0x138f, - 0x13a0, 0x13f4, - 0x1401, 0x166c, - 0x166f, 0x1676, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1734, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17d3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dd, - 0x17e0, 0x17e9, - 0x180b, 0x180d, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1946, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x1a00, 0x1a1b, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b59, - 0x1b6b, 0x1b73, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, - 0x1c00, 0x1c37, - 0x1c40, 0x1c49, - 0x1c4d, 0x1c7d, - 0x1d00, 0x1de6, - 0x1dfe, 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, 0x2094, - 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, - 0x2183, 0x2184, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2ce4, - 0x2d00, 0x2d25, - 0x2d30, 0x2d65, - 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, 0x3006, - 0x302a, 0x302f, - 0x3031, 0x3035, - 0x303b, 0x303c, - 0x3041, 0x3096, - 0x3099, 0x309a, - 0x309d, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x31a0, 0x31b7, - 0x31f0, 0x31ff, - 0x3400, 0x3400, - 0x4db5, 0x4db5, - 0x4e00, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa500, 0xa60c, - 0xa610, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa672, - 0xa67c, 0xa67d, - 0xa67f, 0xa697, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa78c, - 0xa7fb, 0xa827, - 0xa840, 0xa873, - 0xa880, 0xa8c4, - 0xa8d0, 0xa8d9, - 0xa900, 0xa92d, - 0xa930, 0xa953, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 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, 0xfe26, - 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, - 0x101fd, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10330, 0x10340, - 0x10342, 0x10349, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10915, - 0x10920, 0x10939, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, - 0x12000, 0x1236e, - 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, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0100, 0xe01ef, -}; /* CR_Word */ - -/* 'Alnum': [[:Alnum:]] */ -static const OnigCodePoint CR_Alnum[] = { - 471, - 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, - 0x0300, 0x0374, - 0x0376, 0x0377, - 0x037a, 0x037d, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x0483, 0x0523, - 0x0531, 0x0556, - 0x0559, 0x0559, - 0x0561, 0x0587, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0610, 0x061a, - 0x0621, 0x065e, - 0x0660, 0x0669, - 0x066e, 0x06d3, - 0x06d5, 0x06dc, - 0x06de, 0x06e8, - 0x06ea, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07f5, - 0x07fa, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0963, - 0x0966, 0x096f, - 0x0971, 0x0972, - 0x097b, 0x097f, - 0x0981, 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, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c82, 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, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 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, - 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, 0x0edd, - 0x0f00, 0x0f00, - 0x0f18, 0x0f19, - 0x0f20, 0x0f29, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f3e, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f84, - 0x0f86, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x1000, 0x1049, - 0x1050, 0x1099, - 0x10a0, 0x10c5, - 0x10d0, 0x10fa, - 0x10fc, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x135f, 0x135f, - 0x1380, 0x138f, - 0x13a0, 0x13f4, - 0x1401, 0x166c, - 0x166f, 0x1676, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1734, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17d3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dd, - 0x17e0, 0x17e9, - 0x180b, 0x180d, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1946, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x1a00, 0x1a1b, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b59, - 0x1b6b, 0x1b73, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, - 0x1c00, 0x1c37, - 0x1c40, 0x1c49, - 0x1c4d, 0x1c7d, - 0x1d00, 0x1de6, - 0x1dfe, 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, 0x2094, - 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, - 0x2183, 0x2184, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2ce4, - 0x2d00, 0x2d25, - 0x2d30, 0x2d65, - 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, 0x3006, - 0x302a, 0x302f, - 0x3031, 0x3035, - 0x303b, 0x303c, - 0x3041, 0x3096, - 0x3099, 0x309a, - 0x309d, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x31a0, 0x31b7, - 0x31f0, 0x31ff, - 0x3400, 0x3400, - 0x4db5, 0x4db5, - 0x4e00, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa500, 0xa60c, - 0xa610, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa672, - 0xa67c, 0xa67d, - 0xa67f, 0xa697, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa78c, - 0xa7fb, 0xa827, - 0xa840, 0xa873, - 0xa880, 0xa8c4, - 0xa8d0, 0xa8d9, - 0xa900, 0xa92d, - 0xa930, 0xa953, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 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, 0xfe26, - 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, - 0x101fd, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10330, 0x10340, - 0x10342, 0x10349, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10915, - 0x10920, 0x10939, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, - 0x12000, 0x1236e, - 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, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0100, 0xe01ef, -}; /* CR_Alnum */ - -/* 'ASCII': [[:ASCII:]] */ -static const OnigCodePoint CR_ASCII[] = { - 1, - 0x0000, 0x007f, -}; /* CR_ASCII */ - -#ifdef USE_UNICODE_PROPERTIES -/* 'Any': - */ -static const OnigCodePoint CR_Any[] = { - 1, - 0x0000, 0x10ffff, -}; /* CR_Any */ - -/* 'Assigned': - */ -static const OnigCodePoint CR_Assigned[] = { - 454, - 0x0000, 0x0377, - 0x037a, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x0523, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0600, 0x0603, - 0x0606, 0x061b, - 0x061e, 0x061f, - 0x0621, 0x065e, - 0x0660, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0972, - 0x097b, 0x097f, - 0x0981, 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, 0x09fa, - 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, - 0x0af1, 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, 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, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, - 0x0c82, 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, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 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, - 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, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fd4, - 0x1000, 0x1099, - 0x109e, 0x10c5, - 0x10d0, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x135f, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1401, 0x1676, - 0x1680, 0x169c, - 0x16a0, 0x16f0, - 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, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a1f, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, - 0x1c00, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c7f, - 0x1d00, 0x1de6, - 0x1dfe, 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, - 0x206a, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x2094, - 0x20a0, 0x20b5, - 0x20d0, 0x20f0, - 0x2100, 0x214f, - 0x2153, 0x2188, - 0x2190, 0x23e7, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27ca, - 0x27cc, 0x27cc, - 0x27d0, 0x2b4c, - 0x2b50, 0x2b54, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2cea, - 0x2cf9, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e30, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31b7, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x3243, - 0x3250, 0x32fe, - 0x3300, 0x3400, - 0x4db5, 0x4db5, - 0x4dc0, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa500, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa673, - 0xa67c, 0xa697, - 0xa700, 0xa78c, - 0xa7fb, 0xa82b, - 0xa840, 0xa877, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, - 0xa900, 0xa953, - 0xa95f, 0xa95f, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa5f, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xd800, 0xd800, - 0xdb7f, 0xdb80, - 0xdbff, 0xdc00, - 0xdfff, 0xe000, - 0xf8ff, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe26, - 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, 0x1018a, - 0x10190, 0x1019b, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10919, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x12000, 0x1236e, - 0x12400, 0x12462, - 0x12470, 0x12473, - 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, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, - 0xf0000, 0xf0000, - 0xffffd, 0xffffd, - 0x100000, 0x100000, -}; /* CR_Assigned */ - -/* 'C': Major Category */ -static const OnigCodePoint CR_C[] = { - 25, - 0x0000, 0x001f, - 0x007f, 0x009f, - 0x00ad, 0x00ad, - 0x0600, 0x0603, - 0x06dd, 0x06dd, - 0x070f, 0x070f, - 0x17b4, 0x17b5, - 0x200b, 0x200f, - 0x202a, 0x202e, - 0x2060, 0x2064, - 0x206a, 0x206f, - 0xd800, 0xd800, - 0xdb7f, 0xdb80, - 0xdbff, 0xdc00, - 0xdfff, 0xe000, - 0xf8ff, 0xf8ff, - 0xfeff, 0xfeff, - 0xfff9, 0xfffb, - 0x1d173, 0x1d17a, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xf0000, 0xf0000, - 0xffffd, 0xffffd, - 0x100000, 0x100000, - 0x10fffd, 0x10ffff, -}; /* CR_C */ - -/* 'Cc': General Category */ -static const OnigCodePoint CR_Cc[] = { - 2, - 0x0000, 0x001f, - 0x007f, 0x009f, -}; /* CR_Cc */ - -/* 'Cf': General Category */ -static const OnigCodePoint CR_Cf[] = { - 14, - 0x00ad, 0x00ad, - 0x0600, 0x0603, - 0x06dd, 0x06dd, - 0x070f, 0x070f, - 0x17b4, 0x17b5, - 0x200b, 0x200f, - 0x202a, 0x202e, - 0x2060, 0x2064, - 0x206a, 0x206f, - 0xfeff, 0xfeff, - 0xfff9, 0xfffb, - 0x1d173, 0x1d17a, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, -}; /* CR_Cf */ +/* 'Cf': General Category */ +static const OnigCodePoint CR_Cf[] = { + 15, + 0x00ad, 0x00ad, + 0x0600, 0x0603, + 0x06dd, 0x06dd, + 0x070f, 0x070f, + 0x17b4, 0x17b5, + 0x200b, 0x200f, + 0x202a, 0x202e, + 0x2060, 0x2064, + 0x206a, 0x206f, + 0xfeff, 0xfeff, + 0xfff9, 0xfffb, + 0x110bd, 0x110bd, + 0x1d173, 0x1d17a, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, +}; /* CR_Cf */ /* 'Cn': General Category */ static const OnigCodePoint CR_Cn[] = { - 454, + 485, 0x0378, 0x0379, 0x037f, 0x0383, 0x038b, 0x038b, 0x038d, 0x038d, 0x03a2, 0x03a2, - 0x0524, 0x0530, + 0x0526, 0x0530, 0x0557, 0x0558, 0x0560, 0x0560, 0x0588, 0x0588, @@ -4282,11 +572,13 @@ static const OnigCodePoint CR_Cn[] = { 0x070e, 0x070e, 0x074b, 0x074c, 0x07b2, 0x07bf, - 0x07fb, 0x0900, + 0x07fb, 0x07ff, + 0x082e, 0x082f, + 0x083f, 0x08ff, 0x093a, 0x093b, - 0x094e, 0x094f, - 0x0955, 0x0957, - 0x0973, 0x097a, + 0x094f, 0x094f, + 0x0956, 0x0957, + 0x0973, 0x0978, 0x0980, 0x0980, 0x0984, 0x0984, 0x098d, 0x098e, @@ -4301,7 +593,7 @@ static const OnigCodePoint CR_Cn[] = { 0x09d8, 0x09db, 0x09de, 0x09de, 0x09e4, 0x09e5, - 0x09fb, 0x0a00, + 0x09fc, 0x0a00, 0x0a04, 0x0a04, 0x0a0b, 0x0a0e, 0x0a11, 0x0a12, @@ -4439,13 +731,9 @@ static const OnigCodePoint CR_Cn[] = { 0x0f98, 0x0f98, 0x0fbd, 0x0fbd, 0x0fcd, 0x0fcd, - 0x0fd5, 0x0fff, - 0x109a, 0x109d, + 0x0fd9, 0x0fff, 0x10c6, 0x10cf, 0x10fd, 0x10ff, - 0x115a, 0x115e, - 0x11a3, 0x11a7, - 0x11fa, 0x11ff, 0x1249, 0x1249, 0x124e, 0x124f, 0x1257, 0x1257, @@ -4464,8 +752,7 @@ static const OnigCodePoint CR_Cn[] = { 0x135b, 0x135e, 0x137d, 0x137f, 0x139a, 0x139f, - 0x13f5, 0x1400, - 0x1677, 0x167f, + 0x13f5, 0x13ff, 0x169d, 0x169f, 0x16f1, 0x16ff, 0x170d, 0x170d, @@ -4481,26 +768,32 @@ static const OnigCodePoint CR_Cn[] = { 0x180f, 0x180f, 0x181a, 0x181f, 0x1878, 0x187f, - 0x18ab, 0x18ff, + 0x18ab, 0x18af, + 0x18f6, 0x18ff, 0x191d, 0x191f, 0x192c, 0x192f, 0x193c, 0x193f, 0x1941, 0x1943, 0x196e, 0x196f, 0x1975, 0x197f, - 0x19aa, 0x19af, + 0x19ac, 0x19af, 0x19ca, 0x19cf, - 0x19da, 0x19dd, + 0x19db, 0x19dd, 0x1a1c, 0x1a1d, - 0x1a20, 0x1aff, + 0x1a5f, 0x1a5f, + 0x1a7d, 0x1a7e, + 0x1a8a, 0x1a8f, + 0x1a9a, 0x1a9f, + 0x1aae, 0x1aff, 0x1b4c, 0x1b4f, 0x1b7d, 0x1b7f, 0x1bab, 0x1bad, 0x1bba, 0x1bff, 0x1c38, 0x1c3a, 0x1c4a, 0x1c4c, - 0x1c80, 0x1cff, - 0x1de7, 0x1dfd, + 0x1c80, 0x1ccf, + 0x1cf3, 0x1cff, + 0x1de7, 0x1dfc, 0x1f16, 0x1f17, 0x1f1e, 0x1f1f, 0x1f46, 0x1f47, @@ -4521,23 +814,22 @@ static const OnigCodePoint CR_Cn[] = { 0x2072, 0x2073, 0x208f, 0x208f, 0x2095, 0x209f, - 0x20b6, 0x20cf, + 0x20b9, 0x20cf, 0x20f1, 0x20ff, - 0x2150, 0x2152, - 0x2189, 0x218f, - 0x23e8, 0x23ff, + 0x218a, 0x218f, + 0x23e9, 0x23ff, 0x2427, 0x243f, 0x244b, 0x245f, - 0x269e, 0x269f, - 0x26bd, 0x26bf, - 0x26c4, 0x2700, + 0x26ce, 0x26ce, + 0x26e2, 0x26e2, + 0x26e4, 0x26e7, + 0x2700, 0x2700, 0x2705, 0x2705, 0x270a, 0x270b, 0x2728, 0x2728, 0x274c, 0x274c, 0x274e, 0x274e, 0x2753, 0x2755, - 0x2757, 0x2757, 0x275f, 0x2760, 0x2795, 0x2797, 0x27b0, 0x27b0, @@ -4545,12 +837,10 @@ static const OnigCodePoint CR_Cn[] = { 0x27cb, 0x27cb, 0x27cd, 0x27cf, 0x2b4d, 0x2b4f, - 0x2b55, 0x2bff, + 0x2b5a, 0x2bff, 0x2c2f, 0x2c2f, 0x2c5f, 0x2c5f, - 0x2c70, 0x2c70, - 0x2c7e, 0x2c7f, - 0x2ceb, 0x2cf8, + 0x2cf2, 0x2cf8, 0x2d26, 0x2d2f, 0x2d66, 0x2d6e, 0x2d70, 0x2d7f, @@ -4563,7 +853,7 @@ static const OnigCodePoint CR_Cn[] = { 0x2dcf, 0x2dcf, 0x2dd7, 0x2dd7, 0x2ddf, 0x2ddf, - 0x2e31, 0x2e7f, + 0x2e32, 0x2e7f, 0x2e9a, 0x2e9a, 0x2ef4, 0x2eff, 0x2fd6, 0x2fef, @@ -4576,37 +866,41 @@ static const OnigCodePoint CR_Cn[] = { 0x31b8, 0x31bf, 0x31e4, 0x31ef, 0x321f, 0x321f, - 0x3244, 0x324f, 0x32ff, 0x32ff, - 0x3401, 0x4db4, 0x4db6, 0x4dbf, - 0x4e01, 0x9fc2, - 0x9fc4, 0x9fff, + 0x9fcc, 0x9fff, 0xa48d, 0xa48f, - 0xa4c7, 0xa4ff, + 0xa4c7, 0xa4cf, 0xa62c, 0xa63f, 0xa660, 0xa661, 0xa674, 0xa67b, - 0xa698, 0xa6ff, + 0xa698, 0xa69f, + 0xa6f8, 0xa6ff, 0xa78d, 0xa7fa, - 0xa82c, 0xa83f, + 0xa82c, 0xa82f, + 0xa83a, 0xa83f, 0xa878, 0xa87f, 0xa8c5, 0xa8cd, - 0xa8da, 0xa8ff, + 0xa8da, 0xa8df, + 0xa8fc, 0xa8ff, 0xa954, 0xa95e, - 0xa960, 0xa9ff, + 0xa97d, 0xa97f, + 0xa9ce, 0xa9ce, + 0xa9da, 0xa9dd, + 0xa9e0, 0xa9ff, 0xaa37, 0xaa3f, 0xaa4e, 0xaa4f, 0xaa5a, 0xaa5b, - 0xaa60, 0xabff, - 0xac01, 0xd7a2, - 0xd7a4, 0xd7ff, - 0xd801, 0xdb7e, - 0xdb81, 0xdbfe, - 0xdc01, 0xdffe, - 0xe001, 0xf8fe, + 0xaa7c, 0xaa7f, + 0xaac3, 0xaada, + 0xaae0, 0xabbf, + 0xabee, 0xabef, + 0xabfa, 0xabff, + 0xd7a4, 0xd7af, + 0xd7c7, 0xd7ca, + 0xd7fc, 0xd7ff, 0xfa2e, 0xfa2f, - 0xfa6b, 0xfa6f, + 0xfa6e, 0xfa6f, 0xfada, 0xfaff, 0xfb07, 0xfb12, 0xfb18, 0xfb1c, @@ -4663,8 +957,9 @@ static const OnigCodePoint CR_Cn[] = { 0x10836, 0x10836, 0x10839, 0x1083b, 0x1083d, 0x1083e, - 0x10840, 0x108ff, - 0x1091a, 0x1091e, + 0x10856, 0x10856, + 0x10860, 0x108ff, + 0x1091c, 0x1091e, 0x1093a, 0x1093e, 0x10940, 0x109ff, 0x10a04, 0x10a04, @@ -4674,10 +969,19 @@ static const OnigCodePoint CR_Cn[] = { 0x10a34, 0x10a37, 0x10a3b, 0x10a3e, 0x10a48, 0x10a4f, - 0x10a59, 0x11fff, + 0x10a59, 0x10a5f, + 0x10a80, 0x10aff, + 0x10b36, 0x10b38, + 0x10b56, 0x10b57, + 0x10b73, 0x10b77, + 0x10b80, 0x10bff, + 0x10c49, 0x10e5f, + 0x10e7f, 0x1107f, + 0x110c2, 0x11fff, 0x1236f, 0x123ff, 0x12463, 0x1246f, - 0x12474, 0x1cfff, + 0x12474, 0x12fff, + 0x1342f, 0x1cfff, 0x1d0f6, 0x1d0ff, 0x1d127, 0x1d128, 0x1d1de, 0x1d1ff, @@ -4706,41 +1010,5565 @@ static const OnigCodePoint CR_Cn[] = { 0x1d7cc, 0x1d7cd, 0x1d800, 0x1efff, 0x1f02c, 0x1f02f, - 0x1f094, 0x1ffff, - 0x20001, 0x2a6d5, - 0x2a6d7, 0x2f7ff, + 0x1f094, 0x1f0ff, + 0x1f10b, 0x1f10f, + 0x1f12f, 0x1f130, + 0x1f132, 0x1f13c, + 0x1f13e, 0x1f13e, + 0x1f140, 0x1f141, + 0x1f143, 0x1f145, + 0x1f147, 0x1f149, + 0x1f14f, 0x1f156, + 0x1f158, 0x1f15e, + 0x1f160, 0x1f178, + 0x1f17a, 0x1f17a, + 0x1f17d, 0x1f17e, + 0x1f180, 0x1f189, + 0x1f18e, 0x1f18f, + 0x1f191, 0x1f1ff, + 0x1f201, 0x1f20f, + 0x1f232, 0x1f23f, + 0x1f249, 0x1ffff, + 0x2a6d7, 0x2a6ff, + 0x2b735, 0x2f7ff, 0x2fa1e, 0xe0000, 0xe0002, 0xe001f, 0xe0080, 0xe00ff, 0xe01f0, 0xeffff, - 0xf0001, 0xffffc, 0xffffe, 0xfffff, - 0x100001, 0x10ffff, + 0x10fffe, 0x10ffff, }; /* CR_Cn */ -/* 'Co': General Category */ -static const OnigCodePoint CR_Co[] = { - 6, - 0xe000, 0xe000, - 0xf8ff, 0xf8ff, - 0xf0000, 0xf0000, - 0xffffd, 0xffffd, - 0x100000, 0x100000, - 0x10fffd, 0x10fffd, -}; /* CR_Co */ +/* 'Co': General Category */ +static const OnigCodePoint CR_Co[] = { + 3, + 0xe000, 0xf8ff, + 0xf0000, 0xffffd, + 0x100000, 0x10fffd, +}; /* CR_Co */ + +/* 'Cs': General Category */ +static const OnigCodePoint CR_Cs[] = { + 1, + 0xd800, 0xdfff, +}; /* CR_Cs */ + +/* 'L': Major Category */ +static const OnigCodePoint CR_L[] = { + 422, + 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, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0621, 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, + 0x0904, 0x0939, + 0x093d, 0x093d, + 0x0950, 0x0950, + 0x0958, 0x0961, + 0x0971, 0x0972, + 0x0979, 0x097f, + 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, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c3d, + 0x0c58, 0x0c59, + 0x0c60, 0x0c61, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbd, 0x0cbd, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce1, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d3d, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f40, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f88, 0x0f8b, + 0x1000, 0x102a, + 0x103f, 0x103f, + 0x1050, 0x1055, + 0x105a, 0x105d, + 0x1061, 0x1061, + 0x1065, 0x1066, + 0x106e, 0x1070, + 0x1075, 0x1081, + 0x108e, 0x108e, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, + 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, 0x191c, + 0x1950, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19c1, 0x19c7, + 0x1a00, 0x1a16, + 0x1a20, 0x1a54, + 0x1aa7, 0x1aa7, + 0x1b05, 0x1b33, + 0x1b45, 0x1b4b, + 0x1b83, 0x1ba0, + 0x1bae, 0x1baf, + 0x1c00, 0x1c23, + 0x1c4d, 0x1c4f, + 0x1c5a, 0x1c7d, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf1, + 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, 0x2094, + 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, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa61f, + 0xa62a, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa67f, 0xa697, + 0xa6a0, 0xa6e5, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 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, + 0xaa00, 0xaa28, + 0xaa40, 0xaa42, + 0xaa44, 0xaa4b, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaaaf, + 0xaab1, 0xaab1, + 0xaab5, 0xaab6, + 0xaab9, 0xaabd, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabe2, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0x1031e, + 0x10330, 0x10340, + 0x10342, 0x10349, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x10400, 0x1049d, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a00, + 0x10a10, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11083, 0x110af, + 0x12000, 0x1236e, + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_L */ + +/* 'Ll': General Category */ +static const OnigCodePoint CR_Ll[] = { + 599, + 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, 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, + 0x0561, 0x0587, + 0x1d00, 0x1d2b, + 0x1d62, 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, 0x2c7c, + 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, + 0x2d00, 0x2d25, + 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, + 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, + 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, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xff41, 0xff5a, + 0x10428, 0x1044f, + 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, +}; /* CR_Ll */ + +/* 'Lm': General Category */ +static const OnigCodePoint CR_Lm[] = { + 49, + 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, 0x1d61, + 0x1d78, 0x1d78, + 0x1d9b, 0x1dbf, + 0x2071, 0x2071, + 0x207f, 0x207f, + 0x2090, 0x2094, + 0x2c7d, 0x2c7d, + 0x2d6f, 0x2d6f, + 0x2e2f, 0x2e2f, + 0x3005, 0x3005, + 0x3031, 0x3035, + 0x303b, 0x303b, + 0x309d, 0x309e, + 0x30fc, 0x30fe, + 0xa015, 0xa015, + 0xa4f8, 0xa4fd, + 0xa60c, 0xa60c, + 0xa67f, 0xa67f, + 0xa717, 0xa71f, + 0xa770, 0xa770, + 0xa788, 0xa788, + 0xa9cf, 0xa9cf, + 0xaa70, 0xaa70, + 0xaadd, 0xaadd, + 0xff70, 0xff70, + 0xff9e, 0xff9f, +}; /* CR_Lm */ + +/* 'Lo': General Category */ +static const OnigCodePoint CR_Lo[] = { + 311, + 0x01bb, 0x01bb, + 0x01c0, 0x01c3, + 0x0294, 0x0294, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0621, 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, + 0x0904, 0x0939, + 0x093d, 0x093d, + 0x0950, 0x0950, + 0x0958, 0x0961, + 0x0972, 0x0972, + 0x0979, 0x097f, + 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, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c3d, + 0x0c58, 0x0c59, + 0x0c60, 0x0c61, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbd, 0x0cbd, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce1, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d3d, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f40, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f88, 0x0f8b, + 0x1000, 0x102a, + 0x103f, 0x103f, + 0x1050, 0x1055, + 0x105a, 0x105d, + 0x1061, 0x1061, + 0x1065, 0x1066, + 0x106e, 0x1070, + 0x1075, 0x1081, + 0x108e, 0x108e, + 0x10d0, 0x10fa, + 0x1100, 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, + 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, 0x191c, + 0x1950, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19c1, 0x19c7, + 0x1a00, 0x1a16, + 0x1a20, 0x1a54, + 0x1b05, 0x1b33, + 0x1b45, 0x1b4b, + 0x1b83, 0x1ba0, + 0x1bae, 0x1baf, + 0x1c00, 0x1c23, + 0x1c4d, 0x1c4f, + 0x1c5a, 0x1c77, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf1, + 0x2135, 0x2138, + 0x2d30, 0x2d65, + 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa014, + 0xa016, 0xa48c, + 0xa4d0, 0xa4f7, + 0xa500, 0xa60b, + 0xa610, 0xa61f, + 0xa62a, 0xa62b, + 0xa66e, 0xa66e, + 0xa6a0, 0xa6e5, + 0xa7fb, 0xa801, + 0xa803, 0xa805, + 0xa807, 0xa80a, + 0xa80c, 0xa822, + 0xa840, 0xa873, + 0xa882, 0xa8b3, + 0xa8f2, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa90a, 0xa925, + 0xa930, 0xa946, + 0xa960, 0xa97c, + 0xa984, 0xa9b2, + 0xaa00, 0xaa28, + 0xaa40, 0xaa42, + 0xaa44, 0xaa4b, + 0xaa60, 0xaa6f, + 0xaa71, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaaaf, + 0xaab1, 0xaab1, + 0xaab5, 0xaab6, + 0xaab9, 0xaabd, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadc, + 0xabc0, 0xabe2, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0x1031e, + 0x10330, 0x10340, + 0x10342, 0x10349, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x10450, 0x1049d, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a00, + 0x10a10, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11083, 0x110af, + 0x12000, 0x1236e, + 0x13000, 0x1342e, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Lo */ + +/* '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, +}; /* CR_Lt */ + +/* 'Lu': General Category */ +static const OnigCodePoint CR_Lu[] = { + 594, + 0x0041, 0x005a, + 0x00c0, 0x00d6, + 0x00d8, 0x00de, + 0x0100, 0x0100, + 0x0102, 0x0102, + 0x0104, 0x0104, + 0x0106, 0x0106, + 0x0108, 0x0108, + 0x010a, 0x010a, + 0x010c, 0x010c, + 0x010e, 0x010e, + 0x0110, 0x0110, + 0x0112, 0x0112, + 0x0114, 0x0114, + 0x0116, 0x0116, + 0x0118, 0x0118, + 0x011a, 0x011a, + 0x011c, 0x011c, + 0x011e, 0x011e, + 0x0120, 0x0120, + 0x0122, 0x0122, + 0x0124, 0x0124, + 0x0126, 0x0126, + 0x0128, 0x0128, + 0x012a, 0x012a, + 0x012c, 0x012c, + 0x012e, 0x012e, + 0x0130, 0x0130, + 0x0132, 0x0132, + 0x0134, 0x0134, + 0x0136, 0x0136, + 0x0139, 0x0139, + 0x013b, 0x013b, + 0x013d, 0x013d, + 0x013f, 0x013f, + 0x0141, 0x0141, + 0x0143, 0x0143, + 0x0145, 0x0145, + 0x0147, 0x0147, + 0x014a, 0x014a, + 0x014c, 0x014c, + 0x014e, 0x014e, + 0x0150, 0x0150, + 0x0152, 0x0152, + 0x0154, 0x0154, + 0x0156, 0x0156, + 0x0158, 0x0158, + 0x015a, 0x015a, + 0x015c, 0x015c, + 0x015e, 0x015e, + 0x0160, 0x0160, + 0x0162, 0x0162, + 0x0164, 0x0164, + 0x0166, 0x0166, + 0x0168, 0x0168, + 0x016a, 0x016a, + 0x016c, 0x016c, + 0x016e, 0x016e, + 0x0170, 0x0170, + 0x0172, 0x0172, + 0x0174, 0x0174, + 0x0176, 0x0176, + 0x0178, 0x0179, + 0x017b, 0x017b, + 0x017d, 0x017d, + 0x0181, 0x0182, + 0x0184, 0x0184, + 0x0186, 0x0187, + 0x0189, 0x018b, + 0x018e, 0x0191, + 0x0193, 0x0194, + 0x0196, 0x0198, + 0x019c, 0x019d, + 0x019f, 0x01a0, + 0x01a2, 0x01a2, + 0x01a4, 0x01a4, + 0x01a6, 0x01a7, + 0x01a9, 0x01a9, + 0x01ac, 0x01ac, + 0x01ae, 0x01af, + 0x01b1, 0x01b3, + 0x01b5, 0x01b5, + 0x01b7, 0x01b8, + 0x01bc, 0x01bc, + 0x01c4, 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, + 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, + 0x0531, 0x0556, + 0x10a0, 0x10c5, + 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, + 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, + 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, + 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, + 0xff21, 0xff3a, + 0x10400, 0x10427, + 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, +}; /* CR_Lu */ + +/* 'M': Major Category */ +static const OnigCodePoint CR_M[] = { + 188, + 0x0300, 0x036f, + 0x0483, 0x0489, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x0610, 0x061a, + 0x064b, 0x065e, + 0x0670, 0x0670, + 0x06d6, 0x06dc, + 0x06de, 0x06e4, + 0x06e7, 0x06e8, + 0x06ea, 0x06ed, + 0x0711, 0x0711, + 0x0730, 0x074a, + 0x07a6, 0x07b0, + 0x07eb, 0x07f3, + 0x0816, 0x0819, + 0x081b, 0x0823, + 0x0825, 0x0827, + 0x0829, 0x082d, + 0x0900, 0x0903, + 0x093c, 0x093c, + 0x093e, 0x094e, + 0x0951, 0x0955, + 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, + 0x0c01, 0x0c03, + 0x0c3e, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c62, 0x0c63, + 0x0c82, 0x0c83, + 0x0cbc, 0x0cbc, + 0x0cbe, 0x0cc4, + 0x0cc6, 0x0cc8, + 0x0cca, 0x0ccd, + 0x0cd5, 0x0cd6, + 0x0ce2, 0x0ce3, + 0x0d02, 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, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fc6, 0x0fc6, + 0x102b, 0x103e, + 0x1056, 0x1059, + 0x105e, 0x1060, + 0x1062, 0x1064, + 0x1067, 0x106d, + 0x1071, 0x1074, + 0x1082, 0x108d, + 0x108f, 0x108f, + 0x109a, 0x109d, + 0x135f, 0x135f, + 0x1712, 0x1714, + 0x1732, 0x1734, + 0x1752, 0x1753, + 0x1772, 0x1773, + 0x17b6, 0x17d3, + 0x17dd, 0x17dd, + 0x180b, 0x180d, + 0x18a9, 0x18a9, + 0x1920, 0x192b, + 0x1930, 0x193b, + 0x19b0, 0x19c0, + 0x19c8, 0x19c9, + 0x1a17, 0x1a1b, + 0x1a55, 0x1a5e, + 0x1a60, 0x1a7c, + 0x1a7f, 0x1a7f, + 0x1b00, 0x1b04, + 0x1b34, 0x1b44, + 0x1b6b, 0x1b73, + 0x1b80, 0x1b82, + 0x1ba1, 0x1baa, + 0x1c24, 0x1c37, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1ce8, + 0x1ced, 0x1ced, + 0x1cf2, 0x1cf2, + 0x1dc0, 0x1de6, + 0x1dfd, 0x1dff, + 0x20d0, 0x20f0, + 0x2cef, 0x2cf1, + 0x2de0, 0x2dff, + 0x302a, 0x302f, + 0x3099, 0x309a, + 0xa66f, 0xa672, + 0xa67c, 0xa67d, + 0xa6f0, 0xa6f1, + 0xa802, 0xa802, + 0xa806, 0xa806, + 0xa80b, 0xa80b, + 0xa823, 0xa827, + 0xa880, 0xa881, + 0xa8b4, 0xa8c4, + 0xa8e0, 0xa8f1, + 0xa926, 0xa92d, + 0xa947, 0xa953, + 0xa980, 0xa983, + 0xa9b3, 0xa9c0, + 0xaa29, 0xaa36, + 0xaa43, 0xaa43, + 0xaa4c, 0xaa4d, + 0xaa7b, 0xaa7b, + 0xaab0, 0xaab0, + 0xaab2, 0xaab4, + 0xaab7, 0xaab8, + 0xaabe, 0xaabf, + 0xaac1, 0xaac1, + 0xabe3, 0xabea, + 0xabec, 0xabed, + 0xfb1e, 0xfb1e, + 0xfe00, 0xfe0f, + 0xfe20, 0xfe26, + 0x101fd, 0x101fd, + 0x10a01, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a0f, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x11080, 0x11082, + 0x110b0, 0x110ba, + 0x1d165, 0x1d169, + 0x1d16d, 0x1d172, + 0x1d17b, 0x1d182, + 0x1d185, 0x1d18b, + 0x1d1aa, 0x1d1ad, + 0x1d242, 0x1d244, + 0xe0100, 0xe01ef, +}; /* CR_M */ + +/* 'Mc': General Category */ +static const OnigCodePoint CR_Mc[] = { + 106, + 0x0903, 0x0903, + 0x093e, 0x0940, + 0x0949, 0x094c, + 0x094e, 0x094e, + 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, 0x1a1b, + 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, + 0x1c24, 0x1c2b, + 0x1c34, 0x1c35, + 0x1ce1, 0x1ce1, + 0x1cf2, 0x1cf2, + 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, + 0xabe3, 0xabe4, + 0xabe6, 0xabe7, + 0xabe9, 0xabea, + 0xabec, 0xabec, + 0x11082, 0x11082, + 0x110b0, 0x110b2, + 0x110b7, 0x110b8, + 0x1d165, 0x1d166, + 0x1d16d, 0x1d172, +}; /* CR_Mc */ + +/* 'Me': General Category */ +static const OnigCodePoint CR_Me[] = { + 5, + 0x0488, 0x0489, + 0x06de, 0x06de, + 0x20dd, 0x20e0, + 0x20e2, 0x20e4, + 0xa670, 0xa672, +}; /* CR_Me */ + +/* 'Mn': General Category */ +static const OnigCodePoint CR_Mn[] = { + 194, + 0x0300, 0x036f, + 0x0483, 0x0487, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x0610, 0x061a, + 0x064b, 0x065e, + 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, + 0x0900, 0x0902, + 0x093c, 0x093c, + 0x0941, 0x0948, + 0x094d, 0x094d, + 0x0951, 0x0955, + 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, + 0x0c3e, 0x0c40, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c62, 0x0c63, + 0x0cbc, 0x0cbc, + 0x0cbf, 0x0cbf, + 0x0cc6, 0x0cc6, + 0x0ccc, 0x0ccd, + 0x0ce2, 0x0ce3, + 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, + 0x0f90, 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, + 0x135f, 0x135f, + 0x1712, 0x1714, + 0x1732, 0x1734, + 0x1752, 0x1753, + 0x1772, 0x1773, + 0x17b7, 0x17bd, + 0x17c6, 0x17c6, + 0x17c9, 0x17d3, + 0x17dd, 0x17dd, + 0x180b, 0x180d, + 0x18a9, 0x18a9, + 0x1920, 0x1922, + 0x1927, 0x1928, + 0x1932, 0x1932, + 0x1939, 0x193b, + 0x1a17, 0x1a18, + 0x1a56, 0x1a56, + 0x1a58, 0x1a5e, + 0x1a60, 0x1a60, + 0x1a62, 0x1a62, + 0x1a65, 0x1a6c, + 0x1a73, 0x1a7c, + 0x1a7f, 0x1a7f, + 0x1b00, 0x1b03, + 0x1b34, 0x1b34, + 0x1b36, 0x1b3a, + 0x1b3c, 0x1b3c, + 0x1b42, 0x1b42, + 0x1b6b, 0x1b73, + 0x1b80, 0x1b81, + 0x1ba2, 0x1ba5, + 0x1ba8, 0x1ba9, + 0x1c2c, 0x1c33, + 0x1c36, 0x1c37, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1ce0, + 0x1ce2, 0x1ce8, + 0x1ced, 0x1ced, + 0x1dc0, 0x1de6, + 0x1dfd, 0x1dff, + 0x20d0, 0x20dc, + 0x20e1, 0x20e1, + 0x20e5, 0x20f0, + 0x2cef, 0x2cf1, + 0x2de0, 0x2dff, + 0x302a, 0x302f, + 0x3099, 0x309a, + 0xa66f, 0xa66f, + 0xa67c, 0xa67d, + 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, + 0xaa29, 0xaa2e, + 0xaa31, 0xaa32, + 0xaa35, 0xaa36, + 0xaa43, 0xaa43, + 0xaa4c, 0xaa4c, + 0xaab0, 0xaab0, + 0xaab2, 0xaab4, + 0xaab7, 0xaab8, + 0xaabe, 0xaabf, + 0xaac1, 0xaac1, + 0xabe5, 0xabe5, + 0xabe8, 0xabe8, + 0xabed, 0xabed, + 0xfb1e, 0xfb1e, + 0xfe00, 0xfe0f, + 0xfe20, 0xfe26, + 0x101fd, 0x101fd, + 0x10a01, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a0f, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x11080, 0x11081, + 0x110b3, 0x110b6, + 0x110b9, 0x110ba, + 0x1d167, 0x1d169, + 0x1d17b, 0x1d182, + 0x1d185, 0x1d18b, + 0x1d1aa, 0x1d1ad, + 0x1d242, 0x1d244, + 0xe0100, 0xe01ef, +}; /* CR_Mn */ + +/* 'N': Major Category */ +static const OnigCodePoint CR_N[] = { + 81, + 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, + 0x0be6, 0x0bf2, + 0x0c66, 0x0c6f, + 0x0c78, 0x0c7e, + 0x0ce6, 0x0cef, + 0x0d66, 0x0d75, + 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, + 0x3251, 0x325f, + 0x3280, 0x3289, + 0x32b1, 0x32bf, + 0xa620, 0xa629, + 0xa6e6, 0xa6ef, + 0xa830, 0xa835, + 0xa8d0, 0xa8d9, + 0xa900, 0xa909, + 0xa9d0, 0xa9d9, + 0xaa50, 0xaa59, + 0xabf0, 0xabf9, + 0xff10, 0xff19, + 0x10107, 0x10133, + 0x10140, 0x10178, + 0x1018a, 0x1018a, + 0x10320, 0x10323, + 0x10341, 0x10341, + 0x1034a, 0x1034a, + 0x103d1, 0x103d5, + 0x104a0, 0x104a9, + 0x10858, 0x1085f, + 0x10916, 0x1091b, + 0x10a40, 0x10a47, + 0x10a7d, 0x10a7e, + 0x10b58, 0x10b5f, + 0x10b78, 0x10b7f, + 0x10e60, 0x10e7e, + 0x12400, 0x12462, + 0x1d360, 0x1d371, + 0x1d7ce, 0x1d7ff, + 0x1f100, 0x1f10a, +}; /* CR_N */ + +/* 'Nd': General Category */ +static const OnigCodePoint CR_Nd[] = { + 37, + 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, + 0x0e50, 0x0e59, + 0x0ed0, 0x0ed9, + 0x0f20, 0x0f29, + 0x1040, 0x1049, + 0x1090, 0x1099, + 0x17e0, 0x17e9, + 0x1810, 0x1819, + 0x1946, 0x194f, + 0x19d0, 0x19da, + 0x1a80, 0x1a89, + 0x1a90, 0x1a99, + 0x1b50, 0x1b59, + 0x1bb0, 0x1bb9, + 0x1c40, 0x1c49, + 0x1c50, 0x1c59, + 0xa620, 0xa629, + 0xa8d0, 0xa8d9, + 0xa900, 0xa909, + 0xa9d0, 0xa9d9, + 0xaa50, 0xaa59, + 0xabf0, 0xabf9, + 0xff10, 0xff19, + 0x104a0, 0x104a9, + 0x1d7ce, 0x1d7ff, +}; /* CR_Nd */ + +/* '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, 0x12462, +}; /* CR_Nl */ + +/* 'No': General Category */ +static const OnigCodePoint CR_No[] = { + 38, + 0x00b2, 0x00b3, + 0x00b9, 0x00b9, + 0x00bc, 0x00be, + 0x09f4, 0x09f9, + 0x0bf0, 0x0bf2, + 0x0c78, 0x0c7e, + 0x0d70, 0x0d75, + 0x0f2a, 0x0f33, + 0x1369, 0x137c, + 0x17f0, 0x17f9, + 0x2070, 0x2070, + 0x2074, 0x2079, + 0x2080, 0x2089, + 0x2150, 0x215f, + 0x2189, 0x2189, + 0x2460, 0x249b, + 0x24ea, 0x24ff, + 0x2776, 0x2793, + 0x2cfd, 0x2cfd, + 0x3192, 0x3195, + 0x3220, 0x3229, + 0x3251, 0x325f, + 0x3280, 0x3289, + 0x32b1, 0x32bf, + 0xa830, 0xa835, + 0x10107, 0x10133, + 0x10175, 0x10178, + 0x1018a, 0x1018a, + 0x10320, 0x10323, + 0x10858, 0x1085f, + 0x10916, 0x1091b, + 0x10a40, 0x10a47, + 0x10a7d, 0x10a7e, + 0x10b58, 0x10b5f, + 0x10b78, 0x10b7f, + 0x10e60, 0x10e7e, + 0x1d360, 0x1d371, + 0x1f100, 0x1f10a, +}; /* CR_No */ + +/* 'P': Major Category */ +static const OnigCodePoint CR_P[] = { + 129, + 0x0021, 0x0023, + 0x0025, 0x002a, + 0x002c, 0x002f, + 0x003a, 0x003b, + 0x003f, 0x0040, + 0x005b, 0x005d, + 0x005f, 0x005f, + 0x007b, 0x007b, + 0x007d, 0x007d, + 0x00a1, 0x00a1, + 0x00ab, 0x00ab, + 0x00b7, 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, + 0x0964, 0x0965, + 0x0970, 0x0970, + 0x0df4, 0x0df4, + 0x0e4f, 0x0e4f, + 0x0e5a, 0x0e5b, + 0x0f04, 0x0f12, + 0x0f3a, 0x0f3d, + 0x0f85, 0x0f85, + 0x0fd0, 0x0fd4, + 0x104a, 0x104f, + 0x10fb, 0x10fb, + 0x1361, 0x1368, + 0x1400, 0x1400, + 0x166d, 0x166e, + 0x169b, 0x169c, + 0x16eb, 0x16ed, + 0x1735, 0x1736, + 0x17d4, 0x17d6, + 0x17d8, 0x17da, + 0x1800, 0x180a, + 0x1944, 0x1945, + 0x19de, 0x19df, + 0x1a1e, 0x1a1f, + 0x1aa0, 0x1aa6, + 0x1aa8, 0x1aad, + 0x1b5a, 0x1b60, + 0x1c3b, 0x1c3f, + 0x1c7e, 0x1c7f, + 0x1cd3, 0x1cd3, + 0x2010, 0x2027, + 0x2030, 0x2043, + 0x2045, 0x2051, + 0x2053, 0x205e, + 0x207d, 0x207e, + 0x208d, 0x208e, + 0x2329, 0x232a, + 0x2768, 0x2775, + 0x27c5, 0x27c6, + 0x27e6, 0x27ef, + 0x2983, 0x2998, + 0x29d8, 0x29db, + 0x29fc, 0x29fd, + 0x2cf9, 0x2cfc, + 0x2cfe, 0x2cff, + 0x2e00, 0x2e2e, + 0x2e30, 0x2e31, + 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, + 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, 0x10101, + 0x1039f, 0x1039f, + 0x103d0, 0x103d0, + 0x10857, 0x10857, + 0x1091f, 0x1091f, + 0x1093f, 0x1093f, + 0x10a50, 0x10a58, + 0x10a7f, 0x10a7f, + 0x10b39, 0x10b3f, + 0x110bb, 0x110bc, + 0x110be, 0x110c1, + 0x12470, 0x12473, +}; /* CR_P */ + +/* 'Pc': General Category */ +static const OnigCodePoint CR_Pc[] = { + 6, + 0x005f, 0x005f, + 0x203f, 0x2040, + 0x2054, 0x2054, + 0xfe33, 0xfe34, + 0xfe4d, 0xfe4f, + 0xff3f, 0xff3f, +}; /* CR_Pc */ + +/* 'Pd': General Category */ +static const OnigCodePoint CR_Pd[] = { + 15, + 0x002d, 0x002d, + 0x058a, 0x058a, + 0x05be, 0x05be, + 0x1400, 0x1400, + 0x1806, 0x1806, + 0x2010, 0x2015, + 0x2e17, 0x2e17, + 0x2e1a, 0x2e1a, + 0x301c, 0x301c, + 0x3030, 0x3030, + 0x30a0, 0x30a0, + 0xfe31, 0xfe32, + 0xfe58, 0xfe58, + 0xfe63, 0xfe63, + 0xff0d, 0xff0d, +}; /* CR_Pd */ + +/* 'Pe': General Category */ +static const OnigCodePoint CR_Pe[] = { + 70, + 0x0029, 0x0029, + 0x005d, 0x005d, + 0x007d, 0x007d, + 0x0f3b, 0x0f3b, + 0x0f3d, 0x0f3d, + 0x169c, 0x169c, + 0x2046, 0x2046, + 0x207e, 0x207e, + 0x208e, 0x208e, + 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, + 0xfd3f, 0xfd3f, + 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, +}; /* CR_Pe */ + +/* '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, +}; /* CR_Pf */ + +/* '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, +}; /* CR_Pi */ + +/* 'Po': General Category */ +static const OnigCodePoint CR_Po[] = { + 124, + 0x0021, 0x0023, + 0x0025, 0x0027, + 0x002a, 0x002a, + 0x002c, 0x002c, + 0x002e, 0x002f, + 0x003a, 0x003b, + 0x003f, 0x0040, + 0x005c, 0x005c, + 0x00a1, 0x00a1, + 0x00b7, 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, + 0x0964, 0x0965, + 0x0970, 0x0970, + 0x0df4, 0x0df4, + 0x0e4f, 0x0e4f, + 0x0e5a, 0x0e5b, + 0x0f04, 0x0f12, + 0x0f85, 0x0f85, + 0x0fd0, 0x0fd4, + 0x104a, 0x104f, + 0x10fb, 0x10fb, + 0x1361, 0x1368, + 0x166d, 0x166e, + 0x16eb, 0x16ed, + 0x1735, 0x1736, + 0x17d4, 0x17d6, + 0x17d8, 0x17da, + 0x1800, 0x1805, + 0x1807, 0x180a, + 0x1944, 0x1945, + 0x19de, 0x19df, + 0x1a1e, 0x1a1f, + 0x1aa0, 0x1aa6, + 0x1aa8, 0x1aad, + 0x1b5a, 0x1b60, + 0x1c3b, 0x1c3f, + 0x1c7e, 0x1c7f, + 0x1cd3, 0x1cd3, + 0x2016, 0x2017, + 0x2020, 0x2027, + 0x2030, 0x2038, + 0x203b, 0x203e, + 0x2041, 0x2043, + 0x2047, 0x2051, + 0x2053, 0x2053, + 0x2055, 0x205e, + 0x2cf9, 0x2cfc, + 0x2cfe, 0x2cff, + 0x2e00, 0x2e01, + 0x2e06, 0x2e08, + 0x2e0b, 0x2e0b, + 0x2e0e, 0x2e16, + 0x2e18, 0x2e19, + 0x2e1b, 0x2e1b, + 0x2e1e, 0x2e1f, + 0x2e2a, 0x2e2e, + 0x2e30, 0x2e31, + 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, + 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, 0x10101, + 0x1039f, 0x1039f, + 0x103d0, 0x103d0, + 0x10857, 0x10857, + 0x1091f, 0x1091f, + 0x1093f, 0x1093f, + 0x10a50, 0x10a58, + 0x10a7f, 0x10a7f, + 0x10b39, 0x10b3f, + 0x110bb, 0x110bc, + 0x110be, 0x110c1, + 0x12470, 0x12473, +}; /* CR_Po */ + +/* 'Ps': General Category */ +static const OnigCodePoint CR_Ps[] = { + 72, + 0x0028, 0x0028, + 0x005b, 0x005b, + 0x007b, 0x007b, + 0x0f3a, 0x0f3a, + 0x0f3c, 0x0f3c, + 0x169b, 0x169b, + 0x201a, 0x201a, + 0x201e, 0x201e, + 0x2045, 0x2045, + 0x207d, 0x207d, + 0x208d, 0x208d, + 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, + 0x3008, 0x3008, + 0x300a, 0x300a, + 0x300c, 0x300c, + 0x300e, 0x300e, + 0x3010, 0x3010, + 0x3014, 0x3014, + 0x3016, 0x3016, + 0x3018, 0x3018, + 0x301a, 0x301a, + 0x301d, 0x301d, + 0xfd3e, 0xfd3e, + 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, +}; /* CR_Ps */ + +/* 'S': Major Category */ +static const OnigCodePoint CR_S[] = { + 198, + 0x0024, 0x0024, + 0x002b, 0x002b, + 0x003c, 0x003e, + 0x005e, 0x005e, + 0x0060, 0x0060, + 0x007c, 0x007c, + 0x007e, 0x007e, + 0x00a2, 0x00a9, + 0x00ac, 0x00ac, + 0x00ae, 0x00b1, + 0x00b4, 0x00b4, + 0x00b6, 0x00b6, + 0x00b8, 0x00b8, + 0x00d7, 0x00d7, + 0x00f7, 0x00f7, + 0x02c2, 0x02c5, + 0x02d2, 0x02df, + 0x02e5, 0x02eb, + 0x02ed, 0x02ed, + 0x02ef, 0x02ff, + 0x0375, 0x0375, + 0x0384, 0x0385, + 0x03f6, 0x03f6, + 0x0482, 0x0482, + 0x0606, 0x0608, + 0x060b, 0x060b, + 0x060e, 0x060f, + 0x06e9, 0x06e9, + 0x06fd, 0x06fe, + 0x07f6, 0x07f6, + 0x09f2, 0x09f3, + 0x09fa, 0x09fb, + 0x0af1, 0x0af1, + 0x0b70, 0x0b70, + 0x0bf3, 0x0bfa, + 0x0c7f, 0x0c7f, + 0x0cf1, 0x0cf2, + 0x0d79, 0x0d79, + 0x0e3f, 0x0e3f, + 0x0f01, 0x0f03, + 0x0f13, 0x0f17, + 0x0f1a, 0x0f1f, + 0x0f34, 0x0f34, + 0x0f36, 0x0f36, + 0x0f38, 0x0f38, + 0x0fbe, 0x0fc5, + 0x0fc7, 0x0fcc, + 0x0fce, 0x0fcf, + 0x0fd5, 0x0fd8, + 0x109e, 0x109f, + 0x1360, 0x1360, + 0x1390, 0x1399, + 0x17db, 0x17db, + 0x1940, 0x1940, + 0x19e0, 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, 0x20b8, + 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, 0x2328, + 0x232b, 0x23e8, + 0x2400, 0x2426, + 0x2440, 0x244a, + 0x249c, 0x24e9, + 0x2500, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, + 0x2701, 0x2704, + 0x2706, 0x2709, + 0x270c, 0x2727, + 0x2729, 0x274b, + 0x274d, 0x274d, + 0x274f, 0x2752, + 0x2756, 0x275e, + 0x2761, 0x2767, + 0x2794, 0x2794, + 0x2798, 0x27af, + 0x27b1, 0x27be, + 0x27c0, 0x27c4, + 0x27c7, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 0x27e5, + 0x27f0, 0x2982, + 0x2999, 0x29d7, + 0x29dc, 0x29fb, + 0x29fe, 0x2b4c, + 0x2b50, 0x2b59, + 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, 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, + 0xfb29, 0xfb29, + 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, + 0x10102, 0x10102, + 0x10137, 0x1013f, + 0x10179, 0x10189, + 0x10190, 0x1019b, + 0x101d0, 0x101fc, + 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, + 0x1f000, 0x1f02b, + 0x1f030, 0x1f093, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, +}; /* CR_S */ + +/* 'Sc': General Category */ +static const OnigCodePoint CR_Sc[] = { + 16, + 0x0024, 0x0024, + 0x00a2, 0x00a5, + 0x060b, 0x060b, + 0x09f2, 0x09f3, + 0x09fb, 0x09fb, + 0x0af1, 0x0af1, + 0x0bf9, 0x0bf9, + 0x0e3f, 0x0e3f, + 0x17db, 0x17db, + 0x20a0, 0x20b8, + 0xa838, 0xa838, + 0xfdfc, 0xfdfc, + 0xfe69, 0xfe69, + 0xff04, 0xff04, + 0xffe0, 0xffe1, + 0xffe5, 0xffe6, +}; /* CR_Sc */ + +/* 'Sk': General Category */ +static const OnigCodePoint CR_Sk[] = { + 26, + 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, + 0xff3e, 0xff3e, + 0xff40, 0xff40, + 0xffe3, 0xffe3, +}; /* CR_Sk */ + +/* 'Sm': General Category */ +static const OnigCodePoint CR_Sm[] = { + 65, + 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, + 0x2140, 0x2144, + 0x214b, 0x214b, + 0x2190, 0x2194, + 0x219a, 0x219b, + 0x21a0, 0x21a0, + 0x21a3, 0x21a3, + 0x21a6, 0x21a6, + 0x21ae, 0x21ae, + 0x21ce, 0x21cf, + 0x21d2, 0x21d2, + 0x21d4, 0x21d4, + 0x21f4, 0x22ff, + 0x2308, 0x230b, + 0x2320, 0x2321, + 0x237c, 0x237c, + 0x239b, 0x23b3, + 0x23dc, 0x23e1, + 0x25b7, 0x25b7, + 0x25c1, 0x25c1, + 0x25f8, 0x25ff, + 0x266f, 0x266f, + 0x27c0, 0x27c4, + 0x27c7, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 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, +}; /* CR_Sm */ + +/* 'So': General Category */ +static const OnigCodePoint CR_So[] = { + 154, + 0x00a6, 0x00a7, + 0x00a9, 0x00a9, + 0x00ae, 0x00ae, + 0x00b0, 0x00b0, + 0x00b6, 0x00b6, + 0x0482, 0x0482, + 0x060e, 0x060f, + 0x06e9, 0x06e9, + 0x06fd, 0x06fe, + 0x07f6, 0x07f6, + 0x09fa, 0x09fa, + 0x0b70, 0x0b70, + 0x0bf3, 0x0bf8, + 0x0bfa, 0x0bfa, + 0x0c7f, 0x0c7f, + 0x0cf1, 0x0cf2, + 0x0d79, 0x0d79, + 0x0f01, 0x0f03, + 0x0f13, 0x0f17, + 0x0f1a, 0x0f1f, + 0x0f34, 0x0f34, + 0x0f36, 0x0f36, + 0x0f38, 0x0f38, + 0x0fbe, 0x0fc5, + 0x0fc7, 0x0fcc, + 0x0fce, 0x0fcf, + 0x0fd5, 0x0fd8, + 0x109e, 0x109f, + 0x1360, 0x1360, + 0x1390, 0x1399, + 0x1940, 0x1940, + 0x19e0, 0x19ff, + 0x1b61, 0x1b6a, + 0x1b74, 0x1b7c, + 0x2100, 0x2101, + 0x2103, 0x2106, + 0x2108, 0x2109, + 0x2114, 0x2114, + 0x2116, 0x2118, + 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, 0x23e8, + 0x2400, 0x2426, + 0x2440, 0x244a, + 0x249c, 0x24e9, + 0x2500, 0x25b6, + 0x25b8, 0x25c0, + 0x25c2, 0x25f7, + 0x2600, 0x266e, + 0x2670, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, + 0x2701, 0x2704, + 0x2706, 0x2709, + 0x270c, 0x2727, + 0x2729, 0x274b, + 0x274d, 0x274d, + 0x274f, 0x2752, + 0x2756, 0x275e, + 0x2761, 0x2767, + 0x2794, 0x2794, + 0x2798, 0x27af, + 0x27b1, 0x27be, + 0x2800, 0x28ff, + 0x2b00, 0x2b2f, + 0x2b45, 0x2b46, + 0x2b50, 0x2b59, + 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, 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, + 0x10102, 0x10102, + 0x10137, 0x1013f, + 0x10179, 0x10189, + 0x10190, 0x1019b, + 0x101d0, 0x101fc, + 0x1d000, 0x1d0f5, + 0x1d100, 0x1d126, + 0x1d129, 0x1d164, + 0x1d16a, 0x1d16c, + 0x1d183, 0x1d184, + 0x1d18c, 0x1d1a9, + 0x1d1ae, 0x1d1dd, + 0x1d200, 0x1d241, + 0x1d245, 0x1d245, + 0x1d300, 0x1d356, + 0x1f000, 0x1f02b, + 0x1f030, 0x1f093, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, +}; /* CR_So */ + +/* 'Z': Major Category */ +static const OnigCodePoint CR_Z[] = { + 9, + 0x0020, 0x0020, + 0x00a0, 0x00a0, + 0x1680, 0x1680, + 0x180e, 0x180e, + 0x2000, 0x200a, + 0x2028, 0x2029, + 0x202f, 0x202f, + 0x205f, 0x205f, + 0x3000, 0x3000, +}; /* CR_Z */ + +/* 'Zl': General Category */ +static const OnigCodePoint CR_Zl[] = { + 1, + 0x2028, 0x2028, +}; /* CR_Zl */ + +/* 'Zp': General Category */ +static const OnigCodePoint CR_Zp[] = { + 1, + 0x2029, 0x2029, +}; /* CR_Zp */ + +/* 'Zs': General Category */ +static const OnigCodePoint CR_Zs[] = { + 8, + 0x0020, 0x0020, + 0x00a0, 0x00a0, + 0x1680, 0x1680, + 0x180e, 0x180e, + 0x2000, 0x200a, + 0x202f, 0x202f, + 0x205f, 0x205f, + 0x3000, 0x3000, +}; /* CR_Zs */ + +/* 'Math': Derived Property */ +static const OnigCodePoint CR_Math[] = { + 105, + 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, + 0x210a, 0x2113, + 0x2115, 0x2115, + 0x2119, 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, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 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, +}; /* CR_Math */ + +/* 'Alphabetic': Derived Property */ +static const OnigCodePoint CR_Alphabetic[] = { + 474, + 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, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x05b0, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0610, 0x061a, + 0x0621, 0x0657, + 0x0659, 0x065e, + 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, + 0x0900, 0x0939, + 0x093d, 0x094c, + 0x094e, 0x094e, + 0x0950, 0x0950, + 0x0955, 0x0955, + 0x0958, 0x0963, + 0x0971, 0x0972, + 0x0979, 0x097f, + 0x0981, 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, + 0x0c01, 0x0c03, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4c, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c82, 0x0c83, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbd, 0x0cc4, + 0x0cc6, 0x0cc8, + 0x0cca, 0x0ccc, + 0x0cd5, 0x0cd6, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce3, + 0x0d02, 0x0d03, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4c, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f40, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f81, + 0x0f88, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x1000, 0x1036, + 0x1038, 0x1038, + 0x103b, 0x103f, + 0x1050, 0x1062, + 0x1065, 0x1068, + 0x106e, 0x1086, + 0x108e, 0x108e, + 0x109c, 0x109d, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, 0x16f0, + 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, 0x191c, + 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, + 0x1bae, 0x1baf, + 0x1c00, 0x1c35, + 0x1c4d, 0x1c4f, + 0x1c5a, 0x1c7d, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf2, + 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, 0x2094, + 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, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa61f, + 0xa62a, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa67f, 0xa697, + 0xa6a0, 0xa6ef, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 0xa801, + 0xa803, 0xa805, + 0xa807, 0xa80a, + 0xa80c, 0xa827, + 0xa840, 0xa873, + 0xa880, 0xa8c3, + 0xa8f2, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa90a, 0xa92a, + 0xa930, 0xa952, + 0xa960, 0xa97c, + 0xa980, 0xa9bf, + 0xa9cf, 0xa9cf, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaabe, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabea, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0x1031e, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11082, 0x110b8, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Alphabetic */ + +/* 'Lowercase': Derived Property */ +static const OnigCodePoint CR_Lowercase[] = { + 602, + 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, + 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, + 0x2090, 0x2094, + 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, + 0x2d00, 0x2d25, + 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, + 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, + 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, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xff41, 0xff5a, + 0x10428, 0x1044f, + 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, +}; /* CR_Lowercase */ -/* 'Cs': General Category */ -static const OnigCodePoint CR_Cs[] = { - 4, - 0xd800, 0xd800, - 0xdb7f, 0xdb80, - 0xdbff, 0xdc00, - 0xdfff, 0xdfff, -}; /* CR_Cs */ +/* 'Uppercase': Derived Property */ +static const OnigCodePoint CR_Uppercase[] = { + 596, + 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, + 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, + 0x0531, 0x0556, + 0x10a0, 0x10c5, + 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, + 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, + 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, + 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, + 0xff21, 0xff3a, + 0x10400, 0x10427, + 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, +}; /* CR_Uppercase */ -/* 'L': Major Category */ -static const OnigCodePoint CR_L[] = { - 394, +/* 'Cased': Derived Property */ +static const OnigCodePoint CR_Cased[] = { + 110, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, @@ -4748,12 +6576,14 @@ static const OnigCodePoint CR_L[] = { 0x00ba, 0x00ba, 0x00c0, 0x00d6, 0x00d8, 0x00f6, - 0x00f8, 0x02c1, - 0x02c6, 0x02d1, + 0x00f8, 0x01ba, + 0x01bc, 0x01bf, + 0x01c4, 0x0293, + 0x0295, 0x02b8, + 0x02c0, 0x02c1, 0x02e0, 0x02e4, - 0x02ec, 0x02ec, - 0x02ee, 0x02ee, - 0x0370, 0x0374, + 0x0345, 0x0345, + 0x0370, 0x0373, 0x0376, 0x0377, 0x037a, 0x037d, 0x0386, 0x0386, @@ -4762,388 +6592,1511 @@ static const OnigCodePoint CR_L[] = { 0x038e, 0x03a1, 0x03a3, 0x03f5, 0x03f7, 0x0481, - 0x048a, 0x0523, + 0x048a, 0x0525, 0x0531, 0x0556, - 0x0559, 0x0559, 0x0561, 0x0587, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0621, 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, - 0x0904, 0x0939, - 0x093d, 0x093d, - 0x0950, 0x0950, - 0x0958, 0x0961, - 0x0971, 0x0972, - 0x097b, 0x097f, - 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, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c3d, - 0x0c58, 0x0c59, - 0x0c60, 0x0c61, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbd, 0x0cbd, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d3d, - 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, + 0x10a0, 0x10c5, + 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, + 0x2090, 0x2094, + 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, + 0x2d00, 0x2d25, + 0xa640, 0xa65f, + 0xa662, 0xa66d, + 0xa680, 0xa697, + 0xa722, 0xa787, + 0xa78b, 0xa78c, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xff21, 0xff3a, + 0xff41, 0xff5a, + 0x10400, 0x1044f, + 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, +}; /* CR_Cased */ + +/* 'Case_Ignorable': Derived Property */ +static const OnigCodePoint CR_Case_Ignorable[] = { + 266, + 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, 0x0603, + 0x0610, 0x061a, + 0x0640, 0x0640, + 0x064b, 0x065e, + 0x0670, 0x0670, + 0x06d6, 0x06e8, + 0x06ea, 0x06ed, + 0x070f, 0x070f, + 0x0711, 0x0711, + 0x0730, 0x074a, + 0x07a6, 0x07b0, + 0x07eb, 0x07f5, + 0x07fa, 0x07fa, + 0x0816, 0x082d, + 0x0900, 0x0902, + 0x093c, 0x093c, + 0x0941, 0x0948, + 0x094d, 0x094d, + 0x0951, 0x0955, + 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, + 0x0c3e, 0x0c40, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c62, 0x0c63, + 0x0cbc, 0x0cbc, + 0x0cbf, 0x0cbf, + 0x0cc6, 0x0cc6, + 0x0ccc, 0x0ccd, + 0x0ce2, 0x0ce3, + 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, - 0x0edc, 0x0edd, - 0x0f00, 0x0f00, - 0x0f40, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f88, 0x0f8b, - 0x1000, 0x102a, - 0x103f, 0x103f, - 0x1050, 0x1055, - 0x105a, 0x105d, - 0x1061, 0x1061, - 0x1065, 0x1066, - 0x106e, 0x1070, - 0x1075, 0x1081, - 0x108e, 0x108e, - 0x10a0, 0x10c5, - 0x10d0, 0x10fa, + 0x0ec8, 0x0ecd, + 0x0f18, 0x0f19, + 0x0f35, 0x0f35, + 0x0f37, 0x0f37, + 0x0f39, 0x0f39, + 0x0f71, 0x0f7e, + 0x0f80, 0x0f84, + 0x0f86, 0x0f87, + 0x0f90, 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, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x1380, 0x138f, - 0x13a0, 0x13f4, - 0x1401, 0x166c, - 0x166f, 0x1676, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x1700, 0x170c, - 0x170e, 0x1711, - 0x1720, 0x1731, - 0x1740, 0x1751, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1780, 0x17b3, + 0x135f, 0x135f, + 0x1712, 0x1714, + 0x1732, 0x1734, + 0x1752, 0x1753, + 0x1772, 0x1773, + 0x17b4, 0x17b5, + 0x17b7, 0x17bd, + 0x17c6, 0x17c6, + 0x17c9, 0x17d3, 0x17d7, 0x17d7, - 0x17dc, 0x17dc, - 0x1820, 0x1877, - 0x1880, 0x18a8, - 0x18aa, 0x18aa, - 0x1900, 0x191c, - 0x1950, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19c1, 0x19c7, - 0x1a00, 0x1a16, - 0x1b05, 0x1b33, - 0x1b45, 0x1b4b, - 0x1b83, 0x1ba0, - 0x1bae, 0x1baf, - 0x1c00, 0x1c23, - 0x1c4d, 0x1c4f, - 0x1c5a, 0x1c7d, - 0x1d00, 0x1dbf, - 0x1e00, 0x1f15, + 0x17dd, 0x17dd, + 0x180b, 0x180d, + 0x1843, 0x1843, + 0x18a9, 0x18a9, + 0x1920, 0x1922, + 0x1927, 0x1928, + 0x1932, 0x1932, + 0x1939, 0x193b, + 0x1a17, 0x1a18, + 0x1a56, 0x1a56, + 0x1a58, 0x1a5e, + 0x1a60, 0x1a60, + 0x1a62, 0x1a62, + 0x1a65, 0x1a6c, + 0x1a73, 0x1a7c, + 0x1a7f, 0x1a7f, + 0x1aa7, 0x1aa7, + 0x1b00, 0x1b03, + 0x1b34, 0x1b34, + 0x1b36, 0x1b3a, + 0x1b3c, 0x1b3c, + 0x1b42, 0x1b42, + 0x1b6b, 0x1b73, + 0x1b80, 0x1b81, + 0x1ba2, 0x1ba5, + 0x1ba8, 0x1ba9, + 0x1c2c, 0x1c33, + 0x1c36, 0x1c37, + 0x1c78, 0x1c7d, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1ce0, + 0x1ce2, 0x1ce8, + 0x1ced, 0x1ced, + 0x1d2c, 0x1d61, + 0x1d78, 0x1d78, + 0x1d9b, 0x1de6, + 0x1dfd, 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, + 0x206a, 0x206f, + 0x2071, 0x2071, + 0x207f, 0x207f, + 0x2090, 0x2094, + 0x20d0, 0x20f0, + 0x2c7d, 0x2c7d, + 0x2cef, 0x2cf1, + 0x2d6f, 0x2d6f, + 0x2de0, 0x2dff, + 0x2e2f, 0x2e2f, + 0x3005, 0x3005, + 0x302a, 0x302f, + 0x3031, 0x3035, + 0x303b, 0x303b, + 0x3099, 0x309e, + 0x30fc, 0x30fe, + 0xa015, 0xa015, + 0xa4f8, 0xa4fd, + 0xa60c, 0xa60c, + 0xa66f, 0xa672, + 0xa67c, 0xa67d, + 0xa67f, 0xa67f, + 0xa6f0, 0xa6f1, + 0xa700, 0xa721, + 0xa770, 0xa770, + 0xa788, 0xa78a, + 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, + 0xaa29, 0xaa2e, + 0xaa31, 0xaa32, + 0xaa35, 0xaa36, + 0xaa43, 0xaa43, + 0xaa4c, 0xaa4c, + 0xaa70, 0xaa70, + 0xaab0, 0xaab0, + 0xaab2, 0xaab4, + 0xaab7, 0xaab8, + 0xaabe, 0xaabf, + 0xaac1, 0xaac1, + 0xaadd, 0xaadd, + 0xabe5, 0xabe5, + 0xabe8, 0xabe8, + 0xabed, 0xabed, + 0xfb1e, 0xfb1e, + 0xfe00, 0xfe0f, + 0xfe13, 0xfe13, + 0xfe20, 0xfe26, + 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, + 0x10a01, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a0f, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x11080, 0x11081, + 0x110b3, 0x110b6, + 0x110b9, 0x110ba, + 0x110bd, 0x110bd, + 0x1d167, 0x1d169, + 0x1d173, 0x1d182, + 0x1d185, 0x1d18b, + 0x1d1aa, 0x1d1ad, + 0x1d242, 0x1d244, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, + 0xe0100, 0xe01ef, +}; /* CR_Case_Ignorable */ + +/* 'Changes_When_Lowercased': Derived Property */ +static const OnigCodePoint CR_Changes_When_Lowercased[] = { + 557, + 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, + 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, + 0x0531, 0x0556, + 0x10a0, 0x10c5, + 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, - 0x1f20, 0x1f45, + 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, + 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, + 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, + 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, + 0xff21, 0xff3a, + 0x10400, 0x10427, +}; /* CR_Changes_When_Lowercased */ + +/* 'Changes_When_Uppercased': Derived Property */ +static const OnigCodePoint CR_Changes_When_Uppercased[] = { + 573, + 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, 0x025b, + 0x0260, 0x0260, + 0x0263, 0x0263, + 0x0268, 0x0269, + 0x026b, 0x026b, + 0x026f, 0x026f, + 0x0271, 0x0272, + 0x0275, 0x0275, + 0x027d, 0x027d, + 0x0280, 0x0280, + 0x0283, 0x0283, + 0x0288, 0x028c, + 0x0292, 0x0292, + 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, 0x03f2, + 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, + 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, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, + 0x1f60, 0x1f67, + 0x1f70, 0x1f7d, 0x1f80, 0x1fb4, - 0x1fb6, 0x1fbc, + 0x1fb6, 0x1fb7, + 0x1fbc, 0x1fbc, 0x1fbe, 0x1fbe, 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fcc, + 0x1fc6, 0x1fc7, + 0x1fcc, 0x1fcc, 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fe0, 0x1fec, + 0x1fd6, 0x1fd7, + 0x1fe0, 0x1fe7, 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffc, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x2094, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210a, 0x2113, - 0x2115, 0x2115, - 0x2119, 0x211d, - 0x2124, 0x2124, - 0x2126, 0x2126, - 0x2128, 0x2128, - 0x212a, 0x212d, - 0x212f, 0x2139, - 0x213c, 0x213f, - 0x2145, 0x2149, + 0x1ff6, 0x1ff7, + 0x1ffc, 0x1ffc, 0x214e, 0x214e, - 0x2183, 0x2184, - 0x2c00, 0x2c2e, + 0x2170, 0x217f, + 0x2184, 0x2184, + 0x24d0, 0x24e9, 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2ce4, - 0x2d00, 0x2d25, - 0x2d30, 0x2d65, - 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, 0x31b7, - 0x31f0, 0x31ff, - 0x3400, 0x3400, - 0x4db5, 0x4db5, - 0x4e00, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa500, 0xa60c, - 0xa610, 0xa61f, - 0xa62a, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa66e, - 0xa67f, 0xa697, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa78c, - 0xa7fb, 0xa801, - 0xa803, 0xa805, - 0xa807, 0xa80a, - 0xa80c, 0xa822, - 0xa840, 0xa873, - 0xa882, 0xa8b3, - 0xa90a, 0xa925, - 0xa930, 0xa946, - 0xaa00, 0xaa28, - 0xaa40, 0xaa42, - 0xaa44, 0xaa4b, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, + 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, + 0x2d00, 0x2d25, + 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, + 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, + 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, 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, 0x1031e, - 0x10330, 0x10340, - 0x10342, 0x10349, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x10400, 0x1049d, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10915, - 0x10920, 0x10939, - 0x10a00, 0x10a00, - 0x10a10, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x12000, 0x1236e, - 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, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, -}; /* CR_L */ + 0x10428, 0x1044f, +}; /* CR_Changes_When_Uppercased */ -/* 'Ll': General Category */ -static const OnigCodePoint CR_Ll[] = { - 598, +/* 'Changes_When_Titlecased': Derived Property */ +static const OnigCodePoint CR_Changes_When_Titlecased[] = { + 574, 0x0061, 0x007a, - 0x00aa, 0x00aa, 0x00b5, 0x00b5, - 0x00ba, 0x00ba, 0x00df, 0x00f6, 0x00f8, 0x00ff, 0x0101, 0x0101, @@ -5173,7 +8126,7 @@ static const OnigCodePoint CR_Ll[] = { 0x0131, 0x0131, 0x0133, 0x0133, 0x0135, 0x0135, - 0x0137, 0x0138, + 0x0137, 0x0137, 0x013a, 0x013a, 0x013c, 0x013c, 0x013e, 0x013e, @@ -5211,24 +8164,25 @@ static const OnigCodePoint CR_Ll[] = { 0x0183, 0x0183, 0x0185, 0x0185, 0x0188, 0x0188, - 0x018c, 0x018d, + 0x018c, 0x018c, 0x0192, 0x0192, 0x0195, 0x0195, - 0x0199, 0x019b, + 0x0199, 0x019a, 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, + 0x01b9, 0x01b9, + 0x01bd, 0x01bd, + 0x01bf, 0x01bf, + 0x01c4, 0x01c4, + 0x01c6, 0x01c7, + 0x01c9, 0x01ca, 0x01cc, 0x01cc, 0x01ce, 0x01ce, 0x01d0, 0x01d0, @@ -5246,7 +8200,7 @@ static const OnigCodePoint CR_Ll[] = { 0x01e9, 0x01e9, 0x01eb, 0x01eb, 0x01ed, 0x01ed, - 0x01ef, 0x01f0, + 0x01ef, 0x01f1, 0x01f3, 0x01f3, 0x01f5, 0x01f5, 0x01f9, 0x01f9, @@ -5269,7 +8223,6 @@ static const OnigCodePoint CR_Ll[] = { 0x021b, 0x021b, 0x021d, 0x021d, 0x021f, 0x021f, - 0x0221, 0x0221, 0x0223, 0x0223, 0x0225, 0x0225, 0x0227, 0x0227, @@ -5278,7 +8231,7 @@ static const OnigCodePoint CR_Ll[] = { 0x022d, 0x022d, 0x022f, 0x022f, 0x0231, 0x0231, - 0x0233, 0x0239, + 0x0233, 0x0233, 0x023c, 0x023c, 0x023f, 0x0240, 0x0242, 0x0242, @@ -5286,8 +8239,23 @@ static const OnigCodePoint CR_Ll[] = { 0x0249, 0x0249, 0x024b, 0x024b, 0x024d, 0x024d, - 0x024f, 0x0293, - 0x0295, 0x02af, + 0x024f, 0x0254, + 0x0256, 0x0257, + 0x0259, 0x0259, + 0x025b, 0x025b, + 0x0260, 0x0260, + 0x0263, 0x0263, + 0x0268, 0x0269, + 0x026b, 0x026b, + 0x026f, 0x026f, + 0x0271, 0x0272, + 0x0275, 0x0275, + 0x027d, 0x027d, + 0x0280, 0x0280, + 0x0283, 0x0283, + 0x0288, 0x028c, + 0x0292, 0x0292, + 0x0345, 0x0345, 0x0371, 0x0371, 0x0373, 0x0373, 0x0377, 0x0377, @@ -5307,10 +8275,10 @@ static const OnigCodePoint CR_Ll[] = { 0x03e9, 0x03e9, 0x03eb, 0x03eb, 0x03ed, 0x03ed, - 0x03ef, 0x03f3, + 0x03ef, 0x03f2, 0x03f5, 0x03f5, 0x03f8, 0x03f8, - 0x03fb, 0x03fc, + 0x03fb, 0x03fb, 0x0430, 0x045f, 0x0461, 0x0461, 0x0463, 0x0463, @@ -5405,10 +8373,10 @@ static const OnigCodePoint CR_Ll[] = { 0x051f, 0x051f, 0x0521, 0x0521, 0x0523, 0x0523, + 0x0525, 0x0525, 0x0561, 0x0587, - 0x1d00, 0x1d2b, - 0x1d62, 0x1d77, - 0x1d79, 0x1d9a, + 0x1d79, 0x1d79, + 0x1d7d, 0x1d7d, 0x1e01, 0x1e01, 0x1e03, 0x1e03, 0x1e05, 0x1e05, @@ -5483,8 +8451,7 @@ static const OnigCodePoint CR_Ll[] = { 0x1e8f, 0x1e8f, 0x1e91, 0x1e91, 0x1e93, 0x1e93, - 0x1e95, 0x1e9d, - 0x1e9f, 0x1e9f, + 0x1e95, 0x1e9b, 0x1ea1, 0x1ea1, 0x1ea3, 0x1ea3, 0x1ea5, 0x1ea5, @@ -5553,27 +8520,18 @@ static const OnigCodePoint CR_Ll[] = { 0x1fe0, 0x1fe7, 0x1ff2, 0x1ff4, 0x1ff6, 0x1ff7, - 0x2071, 0x2071, - 0x207f, 0x207f, - 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, 0x2c7c, + 0x2c73, 0x2c73, + 0x2c76, 0x2c76, 0x2c81, 0x2c81, 0x2c83, 0x2c83, 0x2c85, 0x2c85, @@ -5623,7 +8581,9 @@ static const OnigCodePoint CR_Ll[] = { 0x2cdd, 0x2cdd, 0x2cdf, 0x2cdf, 0x2ce1, 0x2ce1, - 0x2ce3, 0x2ce4, + 0x2ce3, 0x2ce3, + 0x2cec, 0x2cec, + 0x2cee, 0x2cee, 0x2d00, 0x2d25, 0xa641, 0xa641, 0xa643, 0xa643, @@ -5665,7 +8625,7 @@ static const OnigCodePoint CR_Ll[] = { 0xa729, 0xa729, 0xa72b, 0xa72b, 0xa72d, 0xa72d, - 0xa72f, 0xa731, + 0xa72f, 0xa72f, 0xa733, 0xa733, 0xa735, 0xa735, 0xa737, 0xa737, @@ -5697,7 +8657,6 @@ static const OnigCodePoint CR_Ll[] = { 0xa76b, 0xa76b, 0xa76d, 0xa76d, 0xa76f, 0xa76f, - 0xa771, 0xa778, 0xa77a, 0xa77a, 0xa77c, 0xa77c, 0xa77f, 0xa77f, @@ -5709,119 +8668,1186 @@ static const OnigCodePoint CR_Ll[] = { 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xff41, 0xff5a, - 0x10428, 0x1044f, - 0x1d41a, 0x1d433, - 0x1d44e, 0x1d454, - 0x1d456, 0x1d467, - 0x1d482, 0x1d49b, - 0x1d4b6, 0x1d4b9, + 0x10428, 0x1044f, +}; /* CR_Changes_When_Titlecased */ + +/* 'Changes_When_Casefolded': Derived Property */ +static const OnigCodePoint CR_Changes_When_Casefolded[] = { + 568, + 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, + 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, + 0x0531, 0x0556, + 0x0587, 0x0587, + 0x10a0, 0x10c5, + 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, + 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, + 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, + 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, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xff21, 0xff3a, + 0x10400, 0x10427, +}; /* CR_Changes_When_Casefolded */ + +/* 'Changes_When_Casemapped': Derived Property */ +static const OnigCodePoint CR_Changes_When_Casemapped[] = { + 97, + 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, 0x025b, + 0x0260, 0x0260, + 0x0263, 0x0263, + 0x0268, 0x0269, + 0x026b, 0x026b, + 0x026f, 0x026f, + 0x0271, 0x0272, + 0x0275, 0x0275, + 0x027d, 0x027d, + 0x0280, 0x0280, + 0x0283, 0x0283, + 0x0288, 0x028c, + 0x0292, 0x0292, + 0x0345, 0x0345, + 0x0370, 0x0373, + 0x0376, 0x0377, + 0x037b, 0x037d, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03d1, + 0x03d5, 0x03f2, + 0x03f4, 0x03f5, + 0x03f7, 0x03fb, + 0x03fd, 0x0481, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0561, 0x0587, + 0x10a0, 0x10c5, + 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, + 0x2d00, 0x2d25, + 0xa640, 0xa65f, + 0xa662, 0xa66d, + 0xa680, 0xa697, + 0xa722, 0xa72f, + 0xa732, 0xa76f, + 0xa779, 0xa787, + 0xa78b, 0xa78c, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xff21, 0xff3a, + 0xff41, 0xff5a, + 0x10400, 0x1044f, +}; /* CR_Changes_When_Casemapped */ + +/* 'ID_Start': Derived Property */ +static const OnigCodePoint CR_ID_Start[] = { + 424, + 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, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0621, 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, + 0x0904, 0x0939, + 0x093d, 0x093d, + 0x0950, 0x0950, + 0x0958, 0x0961, + 0x0971, 0x0972, + 0x0979, 0x097f, + 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, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c3d, + 0x0c58, 0x0c59, + 0x0c60, 0x0c61, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbd, 0x0cbd, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce1, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d3d, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f40, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f88, 0x0f8b, + 0x1000, 0x102a, + 0x103f, 0x103f, + 0x1050, 0x1055, + 0x105a, 0x105d, + 0x1061, 0x1061, + 0x1065, 0x1066, + 0x106e, 0x1070, + 0x1075, 0x1081, + 0x108e, 0x108e, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, 0x16f0, + 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, 0x191c, + 0x1950, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19c1, 0x19c7, + 0x1a00, 0x1a16, + 0x1a20, 0x1a54, + 0x1aa7, 0x1aa7, + 0x1b05, 0x1b33, + 0x1b45, 0x1b4b, + 0x1b83, 0x1ba0, + 0x1bae, 0x1baf, + 0x1c00, 0x1c23, + 0x1c4d, 0x1c4f, + 0x1c5a, 0x1c7d, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf1, + 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, 0x2094, + 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, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa61f, + 0xa62a, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa67f, 0xa697, + 0xa6a0, 0xa6ef, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 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, + 0xaa00, 0xaa28, + 0xaa40, 0xaa42, + 0xaa44, 0xaa4b, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaaaf, + 0xaab1, 0xaab1, + 0xaab5, 0xaab6, + 0xaab9, 0xaabd, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabe2, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0x1031e, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a00, + 0x10a10, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11083, 0x110af, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 0x1d400, 0x1d454, + 0x1d456, 0x1d49c, + 0x1d49e, 0x1d49f, + 0x1d4a2, 0x1d4a2, + 0x1d4a5, 0x1d4a6, + 0x1d4a9, 0x1d4ac, + 0x1d4ae, 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, + 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, 0x1d6e1, + 0x1d6dc, 0x1d6fa, 0x1d6fc, 0x1d714, - 0x1d716, 0x1d71b, + 0x1d716, 0x1d734, 0x1d736, 0x1d74e, - 0x1d750, 0x1d755, + 0x1d750, 0x1d76e, 0x1d770, 0x1d788, - 0x1d78a, 0x1d78f, + 0x1d78a, 0x1d7a8, 0x1d7aa, 0x1d7c2, - 0x1d7c4, 0x1d7c9, - 0x1d7cb, 0x1d7cb, -}; /* CR_Ll */ - -/* 'Lm': General Category */ -static const OnigCodePoint CR_Lm[] = { - 39, - 0x02b0, 0x02c1, - 0x02c6, 0x02d1, - 0x02e0, 0x02e4, - 0x02ec, 0x02ec, - 0x02ee, 0x02ee, - 0x0374, 0x0374, - 0x037a, 0x037a, - 0x0559, 0x0559, - 0x0640, 0x0640, - 0x06e5, 0x06e6, - 0x07f4, 0x07f5, - 0x07fa, 0x07fa, - 0x0971, 0x0971, - 0x0e46, 0x0e46, - 0x0ec6, 0x0ec6, - 0x10fc, 0x10fc, - 0x17d7, 0x17d7, - 0x1843, 0x1843, - 0x1c78, 0x1c7d, - 0x1d2c, 0x1d61, - 0x1d78, 0x1d78, - 0x1d9b, 0x1dbf, - 0x2090, 0x2094, - 0x2c7d, 0x2c7d, - 0x2d6f, 0x2d6f, - 0x2e2f, 0x2e2f, - 0x3005, 0x3005, - 0x3031, 0x3035, - 0x303b, 0x303b, - 0x309d, 0x309e, - 0x30fc, 0x30fe, - 0xa015, 0xa015, - 0xa60c, 0xa60c, - 0xa67f, 0xa67f, - 0xa717, 0xa71f, - 0xa770, 0xa770, - 0xa788, 0xa788, - 0xff70, 0xff70, - 0xff9e, 0xff9f, -}; /* CR_Lm */ + 0x1d7c4, 0x1d7cb, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_ID_Start */ -/* 'Lo': General Category */ -static const OnigCodePoint CR_Lo[] = { - 286, - 0x01bb, 0x01bb, - 0x01c0, 0x01c3, - 0x0294, 0x0294, +/* 'ID_Continue': Derived Property */ +static const OnigCodePoint CR_ID_Continue[] = { + 506, + 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, + 0x0386, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x0483, 0x0487, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, 0x05d0, 0x05ea, 0x05f0, 0x05f2, - 0x0621, 0x063f, - 0x0641, 0x064a, - 0x066e, 0x066f, - 0x0671, 0x06d3, - 0x06d5, 0x06d5, - 0x06ee, 0x06ef, - 0x06fa, 0x06fc, + 0x0610, 0x061a, + 0x0621, 0x065e, + 0x0660, 0x0669, + 0x066e, 0x06d3, + 0x06d5, 0x06dc, + 0x06df, 0x06e8, + 0x06ea, 0x06fc, 0x06ff, 0x06ff, - 0x0710, 0x0710, - 0x0712, 0x072f, - 0x074d, 0x07a5, - 0x07b1, 0x07b1, - 0x07ca, 0x07ea, - 0x0904, 0x0939, - 0x093d, 0x093d, - 0x0950, 0x0950, - 0x0958, 0x0961, - 0x0972, 0x0972, - 0x097b, 0x097f, + 0x0710, 0x074a, + 0x074d, 0x07b1, + 0x07c0, 0x07f5, + 0x07fa, 0x07fa, + 0x0800, 0x082d, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0963, + 0x0966, 0x096f, + 0x0971, 0x0972, + 0x0979, 0x097f, + 0x0981, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, 0x0993, 0x09a8, 0x09aa, 0x09b0, 0x09b2, 0x09b2, 0x09b6, 0x09b9, - 0x09bd, 0x09bd, - 0x09ce, 0x09ce, + 0x09bc, 0x09c4, + 0x09c7, 0x09c8, + 0x09cb, 0x09ce, + 0x09d7, 0x09d7, 0x09dc, 0x09dd, - 0x09df, 0x09e1, - 0x09f0, 0x09f1, + 0x09df, 0x09e3, + 0x09e6, 0x09f1, + 0x0a01, 0x0a03, 0x0a05, 0x0a0a, 0x0a0f, 0x0a10, 0x0a13, 0x0a28, @@ -5829,29 +9855,43 @@ static const OnigCodePoint CR_Lo[] = { 0x0a32, 0x0a33, 0x0a35, 0x0a36, 0x0a38, 0x0a39, + 0x0a3c, 0x0a3c, + 0x0a3e, 0x0a42, + 0x0a47, 0x0a48, + 0x0a4b, 0x0a4d, + 0x0a51, 0x0a51, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e, - 0x0a72, 0x0a74, + 0x0a66, 0x0a75, + 0x0a81, 0x0a83, 0x0a85, 0x0a8d, 0x0a8f, 0x0a91, 0x0a93, 0x0aa8, 0x0aaa, 0x0ab0, 0x0ab2, 0x0ab3, 0x0ab5, 0x0ab9, - 0x0abd, 0x0abd, + 0x0abc, 0x0ac5, + 0x0ac7, 0x0ac9, + 0x0acb, 0x0acd, 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae1, + 0x0ae0, 0x0ae3, + 0x0ae6, 0x0aef, + 0x0b01, 0x0b03, 0x0b05, 0x0b0c, 0x0b0f, 0x0b10, 0x0b13, 0x0b28, 0x0b2a, 0x0b30, 0x0b32, 0x0b33, 0x0b35, 0x0b39, - 0x0b3d, 0x0b3d, + 0x0b3c, 0x0b44, + 0x0b47, 0x0b48, + 0x0b4b, 0x0b4d, + 0x0b56, 0x0b57, 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, + 0x0b5f, 0x0b63, + 0x0b66, 0x0b6f, 0x0b71, 0x0b71, - 0x0b83, 0x0b83, + 0x0b82, 0x0b83, 0x0b85, 0x0b8a, 0x0b8e, 0x0b90, 0x0b92, 0x0b95, @@ -5861,38 +9901,64 @@ static const OnigCodePoint CR_Lo[] = { 0x0ba3, 0x0ba4, 0x0ba8, 0x0baa, 0x0bae, 0x0bb9, + 0x0bbe, 0x0bc2, + 0x0bc6, 0x0bc8, + 0x0bca, 0x0bcd, 0x0bd0, 0x0bd0, + 0x0bd7, 0x0bd7, + 0x0be6, 0x0bef, + 0x0c01, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, 0x0c12, 0x0c28, 0x0c2a, 0x0c33, 0x0c35, 0x0c39, - 0x0c3d, 0x0c3d, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, 0x0c58, 0x0c59, - 0x0c60, 0x0c61, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c82, 0x0c83, 0x0c85, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, 0x0cb5, 0x0cb9, - 0x0cbd, 0x0cbd, + 0x0cbc, 0x0cc4, + 0x0cc6, 0x0cc8, + 0x0cca, 0x0ccd, + 0x0cd5, 0x0cd6, 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, + 0x0ce0, 0x0ce3, + 0x0ce6, 0x0cef, + 0x0d02, 0x0d03, 0x0d05, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d28, 0x0d2a, 0x0d39, - 0x0d3d, 0x0d3d, - 0x0d60, 0x0d61, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4d, + 0x0d57, 0x0d57, + 0x0d60, 0x0d63, + 0x0d66, 0x0d6f, 0x0d7a, 0x0d7f, + 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, - 0x0e01, 0x0e30, - 0x0e32, 0x0e33, - 0x0e40, 0x0e45, + 0x0dca, 0x0dca, + 0x0dcf, 0x0dd4, + 0x0dd6, 0x0dd6, + 0x0dd8, 0x0ddf, + 0x0df2, 0x0df3, + 0x0e01, 0x0e3a, + 0x0e40, 0x0e4e, + 0x0e50, 0x0e59, 0x0e81, 0x0e82, 0x0e84, 0x0e84, 0x0e87, 0x0e88, @@ -5904,29 +9970,32 @@ static const OnigCodePoint CR_Lo[] = { 0x0ea5, 0x0ea5, 0x0ea7, 0x0ea7, 0x0eaa, 0x0eab, - 0x0ead, 0x0eb0, - 0x0eb2, 0x0eb3, - 0x0ebd, 0x0ebd, + 0x0ead, 0x0eb9, + 0x0ebb, 0x0ebd, 0x0ec0, 0x0ec4, + 0x0ec6, 0x0ec6, + 0x0ec8, 0x0ecd, + 0x0ed0, 0x0ed9, 0x0edc, 0x0edd, 0x0f00, 0x0f00, - 0x0f40, 0x0f47, + 0x0f18, 0x0f19, + 0x0f20, 0x0f29, + 0x0f35, 0x0f35, + 0x0f37, 0x0f37, + 0x0f39, 0x0f39, + 0x0f3e, 0x0f47, 0x0f49, 0x0f6c, - 0x0f88, 0x0f8b, - 0x1000, 0x102a, - 0x103f, 0x103f, - 0x1050, 0x1055, - 0x105a, 0x105d, - 0x1061, 0x1061, - 0x1065, 0x1066, - 0x106e, 0x1070, - 0x1075, 0x1081, - 0x108e, 0x108e, + 0x0f71, 0x0f84, + 0x0f86, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fc6, 0x0fc6, + 0x1000, 0x1049, + 0x1050, 0x109d, + 0x10a0, 0x10c5, 0x10d0, 0x10fa, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1200, 0x1248, + 0x10fc, 0x10fc, + 0x1100, 0x1248, 0x124a, 0x124d, 0x1250, 0x1256, 0x1258, 0x1258, @@ -5942,39 +10011,104 @@ static const OnigCodePoint CR_Lo[] = { 0x12d8, 0x1310, 0x1312, 0x1315, 0x1318, 0x135a, + 0x135f, 0x135f, + 0x1369, 0x1371, 0x1380, 0x138f, 0x13a0, 0x13f4, 0x1401, 0x166c, - 0x166f, 0x1676, + 0x166f, 0x167f, 0x1681, 0x169a, 0x16a0, 0x16ea, + 0x16ee, 0x16f0, 0x1700, 0x170c, - 0x170e, 0x1711, - 0x1720, 0x1731, - 0x1740, 0x1751, + 0x170e, 0x1714, + 0x1720, 0x1734, + 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, + 0x1772, 0x1773, 0x1780, 0x17b3, - 0x17dc, 0x17dc, - 0x1820, 0x1842, - 0x1844, 0x1877, - 0x1880, 0x18a8, - 0x18aa, 0x18aa, + 0x17b6, 0x17d3, + 0x17d7, 0x17d7, + 0x17dc, 0x17dd, + 0x17e0, 0x17e9, + 0x180b, 0x180d, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18aa, + 0x18b0, 0x18f5, 0x1900, 0x191c, - 0x1950, 0x196d, + 0x1920, 0x192b, + 0x1930, 0x193b, + 0x1946, 0x196d, 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19c1, 0x19c7, - 0x1a00, 0x1a16, - 0x1b05, 0x1b33, - 0x1b45, 0x1b4b, - 0x1b83, 0x1ba0, - 0x1bae, 0x1baf, - 0x1c00, 0x1c23, - 0x1c4d, 0x1c4f, - 0x1c5a, 0x1c77, - 0x2135, 0x2138, + 0x1980, 0x19ab, + 0x19b0, 0x19c9, + 0x19d0, 0x19da, + 0x1a00, 0x1a1b, + 0x1a20, 0x1a5e, + 0x1a60, 0x1a7c, + 0x1a7f, 0x1a89, + 0x1a90, 0x1a99, + 0x1aa7, 0x1aa7, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b59, + 0x1b6b, 0x1b73, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c37, + 0x1c40, 0x1c49, + 0x1c4d, 0x1c7d, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1cf2, + 0x1d00, 0x1de6, + 0x1dfd, 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, 0x2094, + 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, 0x2cf1, + 0x2d00, 0x2d25, 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, 0x2d80, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, @@ -5984,44 +10118,63 @@ static const OnigCodePoint CR_Lo[] = { 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, - 0x3006, 0x3006, - 0x303c, 0x303c, + 0x2de0, 0x2dff, + 0x3005, 0x3007, + 0x3021, 0x302f, + 0x3031, 0x3035, + 0x3038, 0x303c, 0x3041, 0x3096, - 0x309f, 0x309f, + 0x3099, 0x309f, 0x30a1, 0x30fa, - 0x30ff, 0x30ff, + 0x30fc, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x31a0, 0x31b7, 0x31f0, 0x31ff, - 0x3400, 0x3400, - 0x4db5, 0x4db5, - 0x4e00, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa014, - 0xa016, 0xa48c, - 0xa500, 0xa60b, - 0xa610, 0xa61f, - 0xa62a, 0xa62b, - 0xa66e, 0xa66e, - 0xa7fb, 0xa801, - 0xa803, 0xa805, - 0xa807, 0xa80a, - 0xa80c, 0xa822, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66f, + 0xa67c, 0xa67d, + 0xa67f, 0xa697, + 0xa6a0, 0xa6f1, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 0xa827, 0xa840, 0xa873, - 0xa882, 0xa8b3, - 0xa90a, 0xa925, - 0xa930, 0xa946, - 0xaa00, 0xaa28, - 0xaa40, 0xaa42, - 0xaa44, 0xaa4b, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, + 0xa880, 0xa8c4, + 0xa8d0, 0xa8d9, + 0xa8e0, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa900, 0xa92d, + 0xa930, 0xa953, + 0xa960, 0xa97c, + 0xa980, 0xa9c0, + 0xa9cf, 0xa9d9, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabea, + 0xabec, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, + 0xfa30, 0xfa6d, 0xfa70, 0xfad9, - 0xfb1d, 0xfb1d, - 0xfb1f, 0xfb28, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xfb1d, 0xfb28, 0xfb2a, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, @@ -6032,11 +10185,17 @@ static const OnigCodePoint CR_Lo[] = { 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0, 0xfdfb, + 0xfe00, 0xfe0f, + 0xfe20, 0xfe26, + 0xfe33, 0xfe34, + 0xfe4d, 0xfe4f, 0xfe70, 0xfe74, 0xfe76, 0xfefc, - 0xff66, 0xff6f, - 0xff71, 0xff9d, - 0xffa0, 0xffbe, + 0xff10, 0xff19, + 0xff21, 0xff3a, + 0xff3f, 0xff3f, + 0xff41, 0xff5a, + 0xff66, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, @@ -6048,2276 +10207,4838 @@ static const OnigCodePoint CR_Lo[] = { 0x1003f, 0x1004d, 0x10050, 0x1005d, 0x10080, 0x100fa, + 0x10140, 0x10174, + 0x101fd, 0x101fd, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x10300, 0x1031e, - 0x10330, 0x10340, - 0x10342, 0x10349, + 0x10330, 0x1034a, 0x10380, 0x1039d, 0x103a0, 0x103c3, 0x103c8, 0x103cf, - 0x10450, 0x1049d, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, 0x10800, 0x10805, 0x10808, 0x10808, 0x1080a, 0x10835, 0x10837, 0x10838, 0x1083c, 0x1083c, - 0x1083f, 0x1083f, + 0x1083f, 0x10855, 0x10900, 0x10915, 0x10920, 0x10939, - 0x10a00, 0x10a00, - 0x10a10, 0x10a13, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11080, 0x110ba, 0x12000, 0x1236e, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, -}; /* CR_Lo */ - -/* '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, -}; /* CR_Lt */ - -/* 'Lu': General Category */ -static const OnigCodePoint CR_Lu[] = { - 591, - 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, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, + 0xe0100, 0xe01ef, +}; /* CR_ID_Continue */ + +/* 'XID_Start': Derived Property */ +static const OnigCodePoint CR_XID_Start[] = { + 431, + 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, 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, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x048a, 0x0525, 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0621, 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, + 0x0904, 0x0939, + 0x093d, 0x093d, + 0x0950, 0x0950, + 0x0958, 0x0961, + 0x0971, 0x0972, + 0x0979, 0x097f, + 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, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c3d, + 0x0c58, 0x0c59, + 0x0c60, 0x0c61, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbd, 0x0cbd, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce1, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d3d, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f40, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f88, 0x0f8b, + 0x1000, 0x102a, + 0x103f, 0x103f, + 0x1050, 0x1055, + 0x105a, 0x105d, + 0x1061, 0x1061, + 0x1065, 0x1066, + 0x106e, 0x1070, + 0x1075, 0x1081, + 0x108e, 0x108e, 0x10a0, 0x10c5, - 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, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, 0x16f0, + 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, 0x191c, + 0x1950, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19c1, 0x19c7, + 0x1a00, 0x1a16, + 0x1a20, 0x1a54, + 0x1aa7, 0x1aa7, + 0x1b05, 0x1b33, + 0x1b45, 0x1b4b, + 0x1b83, 0x1ba0, + 0x1bae, 0x1baf, + 0x1c00, 0x1c23, + 0x1c4d, 0x1c4f, + 0x1c5a, 0x1c7d, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf1, + 0x1d00, 0x1dbf, + 0x1e00, 0x1f15, 0x1f18, 0x1f1d, - 0x1f28, 0x1f2f, - 0x1f38, 0x1f3f, + 0x1f20, 0x1f45, 0x1f48, 0x1f4d, + 0x1f50, 0x1f57, 0x1f59, 0x1f59, 0x1f5b, 0x1f5b, 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f5f, - 0x1f68, 0x1f6f, - 0x1fb8, 0x1fbb, - 0x1fc8, 0x1fcb, - 0x1fd8, 0x1fdb, - 0x1fe8, 0x1fec, - 0x1ff8, 0x1ffb, + 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, 0x2094, 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, + 0x210a, 0x2113, + 0x2115, 0x2115, + 0x2118, 0x211d, + 0x2124, 0x2124, + 0x2126, 0x2126, + 0x2128, 0x2128, + 0x212a, 0x2139, + 0x213c, 0x213f, + 0x2145, 0x2149, + 0x214e, 0x214e, + 0x2160, 0x2188, 0x2c00, 0x2c2e, - 0x2c60, 0x2c60, - 0x2c62, 0x2c64, - 0x2c67, 0x2c67, - 0x2c69, 0x2c69, - 0x2c6b, 0x2c6b, - 0x2c6d, 0x2c6f, - 0x2c72, 0x2c72, - 0x2c75, 0x2c75, - 0x2c80, 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, - 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, - 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, - 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, + 0x2c30, 0x2c5e, + 0x2c60, 0x2ce4, + 0x2ceb, 0x2cee, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa61f, + 0xa62a, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa67f, 0xa697, + 0xa6a0, 0xa6ef, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 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, + 0xaa00, 0xaa28, + 0xaa40, 0xaa42, + 0xaa44, 0xaa4b, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaaaf, + 0xaab1, 0xaab1, + 0xaab5, 0xaab6, + 0xaab9, 0xaabd, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabe2, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0x1031e, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a00, + 0x10a10, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11083, 0x110af, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_XID_Start */ + +/* 'XID_Continue': Derived Property */ +static const OnigCodePoint CR_XID_Continue[] = { + 513, + 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, + 0x0386, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x0483, 0x0487, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0610, 0x061a, + 0x0621, 0x065e, + 0x0660, 0x0669, + 0x066e, 0x06d3, + 0x06d5, 0x06dc, + 0x06df, 0x06e8, + 0x06ea, 0x06fc, + 0x06ff, 0x06ff, + 0x0710, 0x074a, + 0x074d, 0x07b1, + 0x07c0, 0x07f5, + 0x07fa, 0x07fa, + 0x0800, 0x082d, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0963, + 0x0966, 0x096f, + 0x0971, 0x0972, + 0x0979, 0x097f, + 0x0981, 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, + 0x0c01, 0x0c03, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c82, 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, + 0x0d02, 0x0d03, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4d, + 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, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f18, 0x0f19, + 0x0f20, 0x0f29, + 0x0f35, 0x0f35, + 0x0f37, 0x0f37, + 0x0f39, 0x0f39, + 0x0f3e, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f84, + 0x0f86, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fc6, 0x0fc6, + 0x1000, 0x1049, + 0x1050, 0x109d, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, + 0x1369, 0x1371, + 0x1380, 0x138f, + 0x13a0, 0x13f4, + 0x1401, 0x166c, + 0x166f, 0x167f, + 0x1681, 0x169a, + 0x16a0, 0x16ea, + 0x16ee, 0x16f0, + 0x1700, 0x170c, + 0x170e, 0x1714, + 0x1720, 0x1734, + 0x1740, 0x1753, + 0x1760, 0x176c, + 0x176e, 0x1770, + 0x1772, 0x1773, + 0x1780, 0x17b3, + 0x17b6, 0x17d3, + 0x17d7, 0x17d7, + 0x17dc, 0x17dd, + 0x17e0, 0x17e9, + 0x180b, 0x180d, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18aa, + 0x18b0, 0x18f5, + 0x1900, 0x191c, + 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, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b59, + 0x1b6b, 0x1b73, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c37, + 0x1c40, 0x1c49, + 0x1c4d, 0x1c7d, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1cf2, + 0x1d00, 0x1de6, + 0x1dfd, 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, 0x2094, + 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, 0x2cf1, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, + 0x2d80, 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66f, + 0xa67c, 0xa67d, + 0xa67f, 0xa697, + 0xa6a0, 0xa6f1, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 0xa827, + 0xa840, 0xa873, + 0xa880, 0xa8c4, + 0xa8d0, 0xa8d9, + 0xa8e0, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa900, 0xa92d, + 0xa930, 0xa953, + 0xa960, 0xa97c, + 0xa980, 0xa9c0, + 0xa9cf, 0xa9d9, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabea, + 0xabec, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0xfe26, + 0xfe33, 0xfe34, + 0xfe4d, 0xfe4f, + 0xfe71, 0xfe71, + 0xfe73, 0xfe73, + 0xfe77, 0xfe77, + 0xfe79, 0xfe79, + 0xfe7b, 0xfe7b, + 0xfe7d, 0xfe7d, + 0xfe7f, 0xfefc, + 0xff10, 0xff19, 0xff21, 0xff3a, - 0x10400, 0x10427, - 0x1d400, 0x1d419, - 0x1d434, 0x1d44d, - 0x1d468, 0x1d481, - 0x1d49c, 0x1d49c, + 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, + 0x10300, 0x1031e, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11080, 0x110ba, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, + 0xe0100, 0xe01ef, +}; /* CR_XID_Continue */ + +/* 'Default_Ignorable_Code_Point': Derived Property */ +static const OnigCodePoint CR_Default_Ignorable_Code_Point[] = { + 15, + 0x00ad, 0x00ad, + 0x034f, 0x034f, + 0x115f, 0x1160, + 0x17b4, 0x17b5, + 0x180b, 0x180d, + 0x200b, 0x200f, + 0x202a, 0x202e, + 0x2060, 0x206f, + 0x3164, 0x3164, + 0xfe00, 0xfe0f, + 0xfeff, 0xfeff, + 0xffa0, 0xffa0, + 0xfff0, 0xfff8, + 0x1d173, 0x1d17a, + 0xe0000, 0xe0fff, +}; /* CR_Default_Ignorable_Code_Point */ + +/* 'Grapheme_Extend': Derived Property */ +static const OnigCodePoint CR_Grapheme_Extend[] = { + 206, + 0x0300, 0x036f, + 0x0483, 0x0489, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x0610, 0x061a, + 0x064b, 0x065e, + 0x0670, 0x0670, + 0x06d6, 0x06dc, + 0x06de, 0x06e4, + 0x06e7, 0x06e8, + 0x06ea, 0x06ed, + 0x0711, 0x0711, + 0x0730, 0x074a, + 0x07a6, 0x07b0, + 0x07eb, 0x07f3, + 0x0816, 0x0819, + 0x081b, 0x0823, + 0x0825, 0x0827, + 0x0829, 0x082d, + 0x0900, 0x0902, + 0x093c, 0x093c, + 0x0941, 0x0948, + 0x094d, 0x094d, + 0x0951, 0x0955, + 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, + 0x0c3e, 0x0c40, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c62, 0x0c63, + 0x0cbc, 0x0cbc, + 0x0cbf, 0x0cbf, + 0x0cc2, 0x0cc2, + 0x0cc6, 0x0cc6, + 0x0ccc, 0x0ccd, + 0x0cd5, 0x0cd6, + 0x0ce2, 0x0ce3, + 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, + 0x0f90, 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, + 0x135f, 0x135f, + 0x1712, 0x1714, + 0x1732, 0x1734, + 0x1752, 0x1753, + 0x1772, 0x1773, + 0x17b7, 0x17bd, + 0x17c6, 0x17c6, + 0x17c9, 0x17d3, + 0x17dd, 0x17dd, + 0x180b, 0x180d, + 0x18a9, 0x18a9, + 0x1920, 0x1922, + 0x1927, 0x1928, + 0x1932, 0x1932, + 0x1939, 0x193b, + 0x1a17, 0x1a18, + 0x1a56, 0x1a56, + 0x1a58, 0x1a5e, + 0x1a60, 0x1a60, + 0x1a62, 0x1a62, + 0x1a65, 0x1a6c, + 0x1a73, 0x1a7c, + 0x1a7f, 0x1a7f, + 0x1b00, 0x1b03, + 0x1b34, 0x1b34, + 0x1b36, 0x1b3a, + 0x1b3c, 0x1b3c, + 0x1b42, 0x1b42, + 0x1b6b, 0x1b73, + 0x1b80, 0x1b81, + 0x1ba2, 0x1ba5, + 0x1ba8, 0x1ba9, + 0x1c2c, 0x1c33, + 0x1c36, 0x1c37, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1ce0, + 0x1ce2, 0x1ce8, + 0x1ced, 0x1ced, + 0x1dc0, 0x1de6, + 0x1dfd, 0x1dff, + 0x200c, 0x200d, + 0x20d0, 0x20f0, + 0x2cef, 0x2cf1, + 0x2de0, 0x2dff, + 0x302a, 0x302f, + 0x3099, 0x309a, + 0xa66f, 0xa672, + 0xa67c, 0xa67d, + 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, + 0xaa29, 0xaa2e, + 0xaa31, 0xaa32, + 0xaa35, 0xaa36, + 0xaa43, 0xaa43, + 0xaa4c, 0xaa4c, + 0xaab0, 0xaab0, + 0xaab2, 0xaab4, + 0xaab7, 0xaab8, + 0xaabe, 0xaabf, + 0xaac1, 0xaac1, + 0xabe5, 0xabe5, + 0xabe8, 0xabe8, + 0xabed, 0xabed, + 0xfb1e, 0xfb1e, + 0xfe00, 0xfe0f, + 0xfe20, 0xfe26, + 0xff9e, 0xff9f, + 0x101fd, 0x101fd, + 0x10a01, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a0f, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x11080, 0x11081, + 0x110b3, 0x110b6, + 0x110b9, 0x110ba, + 0x1d165, 0x1d165, + 0x1d167, 0x1d169, + 0x1d16e, 0x1d172, + 0x1d17b, 0x1d182, + 0x1d185, 0x1d18b, + 0x1d1aa, 0x1d1ad, + 0x1d242, 0x1d244, + 0xe0100, 0xe01ef, +}; /* CR_Grapheme_Extend */ + +/* 'Grapheme_Base': Derived Property */ +static const OnigCodePoint CR_Grapheme_Base[] = { + 567, + 0x0020, 0x007e, + 0x00a0, 0x00ac, + 0x00ae, 0x02ff, + 0x0370, 0x0377, + 0x037a, 0x037e, + 0x0384, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x0482, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x055f, + 0x0561, 0x0587, + 0x0589, 0x058a, + 0x05be, 0x05be, + 0x05c0, 0x05c0, + 0x05c3, 0x05c3, + 0x05c6, 0x05c6, + 0x05d0, 0x05ea, + 0x05f0, 0x05f4, + 0x0606, 0x060f, + 0x061b, 0x061b, + 0x061e, 0x061f, + 0x0621, 0x064a, + 0x0660, 0x066f, + 0x0671, 0x06d5, + 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, + 0x0903, 0x0939, + 0x093d, 0x0940, + 0x0949, 0x094c, + 0x094e, 0x094e, + 0x0950, 0x0950, + 0x0958, 0x0961, + 0x0964, 0x0972, + 0x0979, 0x097f, + 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, 0x0aef, + 0x0af1, 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, 0x0b71, + 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, 0x0c33, + 0x0c35, 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, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d3d, + 0x0d3f, 0x0d40, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4c, + 0x0d60, 0x0d61, + 0x0d66, 0x0d75, + 0x0d79, 0x0d7f, + 0x0d82, 0x0d83, + 0x0d85, 0x0d96, + 0x0d9a, 0x0db1, + 0x0db3, 0x0dbb, + 0x0dbd, 0x0dbd, + 0x0dc0, 0x0dc6, + 0x0dd0, 0x0dd1, + 0x0dd8, 0x0dde, + 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, 0x0edd, + 0x0f00, 0x0f17, + 0x0f1a, 0x0f34, + 0x0f36, 0x0f36, + 0x0f38, 0x0f38, + 0x0f3a, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f7f, 0x0f7f, + 0x0f85, 0x0f85, + 0x0f88, 0x0f8b, + 0x0fbe, 0x0fc5, + 0x0fc7, 0x0fcc, + 0x0fce, 0x0fd8, + 0x1000, 0x102c, + 0x1031, 0x1031, + 0x1038, 0x1038, + 0x103b, 0x103c, + 0x103f, 0x1057, + 0x105a, 0x105d, + 0x1061, 0x1070, + 0x1075, 0x1081, + 0x1083, 0x1084, + 0x1087, 0x108c, + 0x108e, 0x109c, + 0x109e, 0x10c5, + 0x10d0, 0x10fc, + 0x1100, 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, 0x16f0, + 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, + 0x180e, 0x180e, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18a8, + 0x18aa, 0x18aa, + 0x18b0, 0x18f5, + 0x1900, 0x191c, + 0x1923, 0x1926, + 0x1929, 0x192b, + 0x1930, 0x1931, + 0x1933, 0x1938, + 0x1940, 0x1940, + 0x1944, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19b0, 0x19c9, + 0x19d0, 0x19da, + 0x19de, 0x1a16, + 0x1a19, 0x1a1b, + 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, 0x1bb9, + 0x1c00, 0x1c2b, + 0x1c34, 0x1c35, + 0x1c3b, 0x1c49, + 0x1c4d, 0x1c7f, + 0x1cd3, 0x1cd3, + 0x1ce1, 0x1ce1, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf2, + 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, 0x2094, + 0x20a0, 0x20b8, + 0x2100, 0x2189, + 0x2190, 0x23e8, + 0x2400, 0x2426, + 0x2440, 0x244a, + 0x2460, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, + 0x2701, 0x2704, + 0x2706, 0x2709, + 0x270c, 0x2727, + 0x2729, 0x274b, + 0x274d, 0x274d, + 0x274f, 0x2752, + 0x2756, 0x275e, + 0x2761, 0x2794, + 0x2798, 0x27af, + 0x27b1, 0x27be, + 0x27c0, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 0x2b4c, + 0x2b50, 0x2b59, + 0x2c00, 0x2c2e, + 0x2c30, 0x2c5e, + 0x2c60, 0x2cee, + 0x2cf9, 0x2d25, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, + 0x2d80, 0x2d96, + 0x2da0, 0x2da6, + 0x2da8, 0x2dae, + 0x2db0, 0x2db6, + 0x2db8, 0x2dbe, + 0x2dc0, 0x2dc6, + 0x2dc8, 0x2dce, + 0x2dd0, 0x2dd6, + 0x2dd8, 0x2dde, + 0x2e00, 0x2e31, + 0x2e80, 0x2e99, + 0x2e9b, 0x2ef3, + 0x2f00, 0x2fd5, + 0x2ff0, 0x2ffb, + 0x3000, 0x3029, + 0x3030, 0x303f, + 0x3041, 0x3096, + 0x309b, 0x30ff, + 0x3105, 0x312d, + 0x3131, 0x318e, + 0x3190, 0x31b7, + 0x31c0, 0x31e3, + 0x31f0, 0x321e, + 0x3220, 0x32fe, + 0x3300, 0x4db5, + 0x4dc0, 0x9fcb, + 0xa000, 0xa48c, + 0xa490, 0xa4c6, + 0xa4d0, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa673, 0xa673, + 0xa67e, 0xa697, + 0xa6a0, 0xa6ef, + 0xa6f2, 0xa6f7, + 0xa700, 0xa78c, + 0xa7fb, 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, 0xa9df, + 0xaa00, 0xaa28, + 0xaa2f, 0xaa30, + 0xaa33, 0xaa34, + 0xaa40, 0xaa42, + 0xaa44, 0xaa4b, + 0xaa4d, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa5c, 0xaa7b, + 0xaa80, 0xaaaf, + 0xaab1, 0xaab1, + 0xaab5, 0xaab6, + 0xaab9, 0xaabd, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadf, + 0xabc0, 0xabe4, + 0xabe6, 0xabe7, + 0xabe9, 0xabec, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 0xfa6d, + 0xfa70, 0xfad9, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xfb1d, 0xfb1d, + 0xfb1f, 0xfb36, + 0xfb38, 0xfb3c, + 0xfb3e, 0xfb3e, + 0xfb40, 0xfb41, + 0xfb43, 0xfb44, + 0xfb46, 0xfbb1, + 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, 0x1018a, + 0x10190, 0x1019b, + 0x101d0, 0x101fc, + 0x10280, 0x1029c, + 0x102a0, 0x102d0, + 0x10300, 0x1031e, + 0x10320, 0x10323, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x1039f, 0x103c3, + 0x103c8, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10857, 0x1085f, + 0x10900, 0x1091b, + 0x1091f, 0x10939, + 0x1093f, 0x1093f, + 0x10a00, 0x10a00, + 0x10a10, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a40, 0x10a47, + 0x10a50, 0x10a58, + 0x10a60, 0x10a7f, + 0x10b00, 0x10b35, + 0x10b39, 0x10b55, + 0x10b58, 0x10b72, + 0x10b78, 0x10b7f, + 0x10c00, 0x10c48, + 0x10e60, 0x10e7e, + 0x11082, 0x110b2, + 0x110b7, 0x110b8, + 0x110bb, 0x110bc, + 0x110be, 0x110c1, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x12470, 0x12473, + 0x13000, 0x1342e, + 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, 0x1d4b5, - 0x1d4d0, 0x1d4e9, - 0x1d504, 0x1d505, + 0x1d4ae, 0x1d4b9, + 0x1d4bb, 0x1d4bb, + 0x1d4bd, 0x1d4c3, + 0x1d4c5, 0x1d505, 0x1d507, 0x1d50a, 0x1d50d, 0x1d514, 0x1d516, 0x1d51c, - 0x1d538, 0x1d539, + 0x1d51e, 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, -}; /* CR_Lu */ + 0x1d552, 0x1d6a5, + 0x1d6a8, 0x1d7cb, + 0x1d7ce, 0x1d7ff, + 0x1f000, 0x1f02b, + 0x1f030, 0x1f093, + 0x1f100, 0x1f10a, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Grapheme_Base */ + +/* 'Grapheme_Link': Derived Property */ +static const OnigCodePoint CR_Grapheme_Link[] = { + 26, + 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, 0x1baa, + 0xa806, 0xa806, + 0xa8c4, 0xa8c4, + 0xa953, 0xa953, + 0xa9c0, 0xa9c0, + 0xabed, 0xabed, + 0x10a3f, 0x10a3f, + 0x110b9, 0x110b9, +}; /* CR_Grapheme_Link */ + +/* 'Common': Script */ +static const OnigCodePoint CR_Common[] = { + 159, + 0x0000, 0x0040, + 0x005b, 0x0060, + 0x007b, 0x00a9, + 0x00ab, 0x00b9, + 0x00bb, 0x00bf, + 0x00d7, 0x00d7, + 0x00f7, 0x00f7, + 0x02b9, 0x02df, + 0x02e5, 0x02ff, + 0x0374, 0x0374, + 0x037e, 0x037e, + 0x0385, 0x0385, + 0x0387, 0x0387, + 0x0589, 0x0589, + 0x0600, 0x0603, + 0x060c, 0x060c, + 0x061b, 0x061b, + 0x061f, 0x061f, + 0x0640, 0x0640, + 0x0660, 0x0669, + 0x06dd, 0x06dd, + 0x0964, 0x0965, + 0x0970, 0x0970, + 0x0cf1, 0x0cf2, + 0x0e3f, 0x0e3f, + 0x0fd5, 0x0fd8, + 0x10fb, 0x10fb, + 0x16eb, 0x16ed, + 0x1735, 0x1736, + 0x1802, 0x1803, + 0x1805, 0x1805, + 0x1cd3, 0x1cd3, + 0x1ce1, 0x1ce1, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf2, + 0x2000, 0x200b, + 0x200e, 0x2064, + 0x206a, 0x2070, + 0x2074, 0x207e, + 0x2080, 0x208e, + 0x20a0, 0x20b8, + 0x2100, 0x2125, + 0x2127, 0x2129, + 0x212c, 0x2131, + 0x2133, 0x214d, + 0x214f, 0x215f, + 0x2189, 0x2189, + 0x2190, 0x23e8, + 0x2400, 0x2426, + 0x2440, 0x244a, + 0x2460, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, + 0x2701, 0x2704, + 0x2706, 0x2709, + 0x270c, 0x2727, + 0x2729, 0x274b, + 0x274d, 0x274d, + 0x274f, 0x2752, + 0x2756, 0x275e, + 0x2761, 0x2794, + 0x2798, 0x27af, + 0x27b1, 0x27be, + 0x27c0, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 0x27ff, + 0x2900, 0x2b4c, + 0x2b50, 0x2b59, + 0x2e00, 0x2e31, + 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, + 0xfd3e, 0xfd3f, + 0xfdfd, 0xfdfd, + 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, + 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, + 0x1f100, 0x1f10a, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, +}; /* CR_Common */ + +/* 'Latin': Script */ +static const OnigCodePoint CR_Latin[] = { + 28, + 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, 0x2094, + 0x212a, 0x212b, + 0x2132, 0x2132, + 0x214e, 0x214e, + 0x2160, 0x2188, + 0x2c60, 0x2c7f, + 0xa722, 0xa787, + 0xa78b, 0xa78c, + 0xa7fb, 0xa7ff, + 0xfb00, 0xfb06, + 0xff21, 0xff3a, + 0xff41, 0xff5a, +}; /* CR_Latin */ + +/* 'Greek': Script */ +static const OnigCodePoint CR_Greek[] = { + 33, + 0x0370, 0x0373, + 0x0375, 0x0377, + 0x037a, 0x037d, + 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, + 0x10140, 0x1018a, + 0x1d200, 0x1d245, +}; /* CR_Greek */ + +/* 'Cyrillic': Script */ +static const OnigCodePoint CR_Cyrillic[] = { + 8, + 0x0400, 0x0484, + 0x0487, 0x0525, + 0x1d2b, 0x1d2b, + 0x1d78, 0x1d78, + 0x2de0, 0x2dff, + 0xa640, 0xa65f, + 0xa662, 0xa673, + 0xa67c, 0xa697, +}; /* CR_Cyrillic */ -/* 'M': Major Category */ -static const OnigCodePoint CR_M[] = { - 161, - 0x0300, 0x036f, - 0x0483, 0x0489, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x0610, 0x061a, - 0x064b, 0x065e, - 0x0670, 0x0670, - 0x06d6, 0x06dc, - 0x06de, 0x06e4, - 0x06e7, 0x06e8, - 0x06ea, 0x06ed, - 0x0711, 0x0711, - 0x0730, 0x074a, - 0x07a6, 0x07b0, - 0x07eb, 0x07f3, - 0x0901, 0x0903, - 0x093c, 0x093c, - 0x093e, 0x094d, - 0x0951, 0x0954, - 0x0962, 0x0963, +/* 'Armenian': Script */ +static const OnigCodePoint CR_Armenian[] = { + 5, + 0x0531, 0x0556, + 0x0559, 0x055f, + 0x0561, 0x0587, + 0x058a, 0x058a, + 0xfb13, 0xfb17, +}; /* CR_Armenian */ + +/* '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, +}; /* CR_Hebrew */ + +/* 'Arabic': Script */ +static const OnigCodePoint CR_Arabic[] = { + 18, + 0x0606, 0x060b, + 0x060d, 0x061a, + 0x061e, 0x061e, + 0x0621, 0x063f, + 0x0641, 0x064a, + 0x0656, 0x065e, + 0x066a, 0x066f, + 0x0671, 0x06dc, + 0x06de, 0x06ff, + 0x0750, 0x077f, + 0xfb50, 0xfbb1, + 0xfbd3, 0xfd3d, + 0xfd50, 0xfd8f, + 0xfd92, 0xfdc7, + 0xfdf0, 0xfdfc, + 0xfe70, 0xfe74, + 0xfe76, 0xfefc, + 0x10e60, 0x10e7e, +}; /* CR_Arabic */ + +/* 'Syriac': Script */ +static const OnigCodePoint CR_Syriac[] = { + 3, + 0x0700, 0x070d, + 0x070f, 0x074a, + 0x074d, 0x074f, +}; /* CR_Syriac */ + +/* 'Thaana': Script */ +static const OnigCodePoint CR_Thaana[] = { + 1, + 0x0780, 0x07b1, +}; /* CR_Thaana */ + +/* 'Devanagari': Script */ +static const OnigCodePoint CR_Devanagari[] = { + 9, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0950, + 0x0953, 0x0955, + 0x0958, 0x0963, + 0x0966, 0x096f, + 0x0971, 0x0972, + 0x0979, 0x097f, + 0xa8e0, 0xa8fb, +}; /* CR_Devanagari */ + +/* 'Bengali': Script */ +static const OnigCodePoint CR_Bengali[] = { + 14, 0x0981, 0x0983, - 0x09bc, 0x09bc, - 0x09be, 0x09c4, + 0x0985, 0x098c, + 0x098f, 0x0990, + 0x0993, 0x09a8, + 0x09aa, 0x09b0, + 0x09b2, 0x09b2, + 0x09b6, 0x09b9, + 0x09bc, 0x09c4, 0x09c7, 0x09c8, - 0x09cb, 0x09cd, + 0x09cb, 0x09ce, 0x09d7, 0x09d7, - 0x09e2, 0x09e3, + 0x09dc, 0x09dd, + 0x09df, 0x09e3, + 0x09e6, 0x09fb, +}; /* CR_Bengali */ + +/* '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, - 0x0a70, 0x0a71, - 0x0a75, 0x0a75, + 0x0a59, 0x0a5c, + 0x0a5e, 0x0a5e, + 0x0a66, 0x0a75, +}; /* CR_Gurmukhi */ + +/* 'Gujarati': Script */ +static const OnigCodePoint CR_Gujarati[] = { + 14, 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, - 0x0c01, 0x0c03, - 0x0c3e, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c62, 0x0c63, - 0x0c82, 0x0c83, - 0x0cbc, 0x0cbc, - 0x0cbe, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0ce2, 0x0ce3, - 0x0d02, 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, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x102b, 0x103e, - 0x1056, 0x1059, - 0x105e, 0x1060, - 0x1062, 0x1064, - 0x1067, 0x106d, - 0x1071, 0x1074, - 0x1082, 0x108d, - 0x108f, 0x108f, - 0x135f, 0x135f, - 0x1712, 0x1714, - 0x1732, 0x1734, - 0x1752, 0x1753, - 0x1772, 0x1773, - 0x17b6, 0x17d3, - 0x17dd, 0x17dd, - 0x180b, 0x180d, - 0x18a9, 0x18a9, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x19b0, 0x19c0, - 0x19c8, 0x19c9, - 0x1a17, 0x1a1b, - 0x1b00, 0x1b04, - 0x1b34, 0x1b44, - 0x1b6b, 0x1b73, - 0x1b80, 0x1b82, - 0x1ba1, 0x1baa, - 0x1c24, 0x1c37, - 0x1dc0, 0x1de6, - 0x1dfe, 0x1dff, - 0x20d0, 0x20f0, - 0x2de0, 0x2dff, - 0x302a, 0x302f, - 0x3099, 0x309a, - 0xa66f, 0xa672, - 0xa67c, 0xa67d, - 0xa802, 0xa802, - 0xa806, 0xa806, - 0xa80b, 0xa80b, - 0xa823, 0xa827, - 0xa880, 0xa881, - 0xa8b4, 0xa8c4, - 0xa926, 0xa92d, - 0xa947, 0xa953, - 0xaa29, 0xaa36, - 0xaa43, 0xaa43, - 0xaa4c, 0xaa4d, - 0xfb1e, 0xfb1e, - 0xfe00, 0xfe0f, - 0xfe20, 0xfe26, - 0x101fd, 0x101fd, - 0x10a01, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a0f, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, - 0x1d165, 0x1d169, - 0x1d16d, 0x1d172, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, - 0xe0100, 0xe01ef, -}; /* CR_M */ + 0x0a85, 0x0a8d, + 0x0a8f, 0x0a91, + 0x0a93, 0x0aa8, + 0x0aaa, 0x0ab0, + 0x0ab2, 0x0ab3, + 0x0ab5, 0x0ab9, + 0x0abc, 0x0ac5, + 0x0ac7, 0x0ac9, + 0x0acb, 0x0acd, + 0x0ad0, 0x0ad0, + 0x0ae0, 0x0ae3, + 0x0ae6, 0x0aef, + 0x0af1, 0x0af1, +}; /* CR_Gujarati */ -/* 'Mc': General Category */ -static const OnigCodePoint CR_Mc[] = { - 85, - 0x0903, 0x0903, - 0x093e, 0x0940, - 0x0949, 0x094c, - 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, +/* '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, 0x0b4c, - 0x0b57, 0x0b57, - 0x0bbe, 0x0bbf, - 0x0bc1, 0x0bc2, + 0x0b4b, 0x0b4d, + 0x0b56, 0x0b57, + 0x0b5c, 0x0b5d, + 0x0b5f, 0x0b63, + 0x0b66, 0x0b71, +}; /* CR_Oriya */ + +/* '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, 0x0bcc, + 0x0bca, 0x0bcd, + 0x0bd0, 0x0bd0, 0x0bd7, 0x0bd7, + 0x0be6, 0x0bfa, +}; /* CR_Tamil */ + +/* 'Telugu': Script */ +static const OnigCodePoint CR_Telugu[] = { + 14, 0x0c01, 0x0c03, - 0x0c41, 0x0c44, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c78, 0x0c7f, +}; /* CR_Telugu */ + +/* 'Kannada': Script */ +static const OnigCodePoint CR_Kannada[] = { + 13, 0x0c82, 0x0c83, - 0x0cbe, 0x0cbe, - 0x0cc0, 0x0cc4, - 0x0cc7, 0x0cc8, - 0x0cca, 0x0ccb, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbc, 0x0cc4, + 0x0cc6, 0x0cc8, + 0x0cca, 0x0ccd, 0x0cd5, 0x0cd6, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce3, + 0x0ce6, 0x0cef, +}; /* CR_Kannada */ + +/* 'Malayalam': Script */ +static const OnigCodePoint CR_Malayalam[] = { + 12, 0x0d02, 0x0d03, - 0x0d3e, 0x0d40, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, 0x0d46, 0x0d48, - 0x0d4a, 0x0d4c, + 0x0d4a, 0x0d4d, 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, - 0x17b6, 0x17b6, - 0x17be, 0x17c5, - 0x17c7, 0x17c8, - 0x1923, 0x1926, - 0x1929, 0x192b, - 0x1930, 0x1931, - 0x1933, 0x1938, - 0x19b0, 0x19c0, - 0x19c8, 0x19c9, - 0x1a19, 0x1a1b, - 0x1b04, 0x1b04, - 0x1b35, 0x1b35, - 0x1b3b, 0x1b3b, - 0x1b3d, 0x1b41, - 0x1b43, 0x1b44, - 0x1b82, 0x1b82, - 0x1ba1, 0x1ba1, - 0x1ba6, 0x1ba7, - 0x1baa, 0x1baa, - 0x1c24, 0x1c2b, - 0x1c34, 0x1c35, - 0xa823, 0xa824, - 0xa827, 0xa827, - 0xa880, 0xa881, - 0xa8b4, 0xa8c3, - 0xa952, 0xa953, - 0xaa2f, 0xaa30, - 0xaa33, 0xaa34, - 0xaa4d, 0xaa4d, - 0x1d165, 0x1d166, - 0x1d16d, 0x1d172, -}; /* CR_Mc */ - -/* 'Me': General Category */ -static const OnigCodePoint CR_Me[] = { - 5, - 0x0488, 0x0489, - 0x06de, 0x06de, - 0x20dd, 0x20e0, - 0x20e2, 0x20e4, - 0xa670, 0xa672, -}; /* CR_Me */ + 0x0d60, 0x0d63, + 0x0d66, 0x0d75, + 0x0d79, 0x0d7f, +}; /* CR_Malayalam */ -/* 'Mn': General Category */ -static const OnigCodePoint CR_Mn[] = { - 160, - 0x0300, 0x036f, - 0x0483, 0x0487, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x0610, 0x061a, - 0x064b, 0x065e, - 0x0670, 0x0670, - 0x06d6, 0x06dc, - 0x06df, 0x06e4, - 0x06e7, 0x06e8, - 0x06ea, 0x06ed, - 0x0711, 0x0711, - 0x0730, 0x074a, - 0x07a6, 0x07b0, - 0x07eb, 0x07f3, - 0x0901, 0x0902, - 0x093c, 0x093c, - 0x0941, 0x0948, - 0x094d, 0x094d, - 0x0951, 0x0954, - 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, - 0x0c3e, 0x0c40, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c62, 0x0c63, - 0x0cbc, 0x0cbc, - 0x0cbf, 0x0cbf, - 0x0cc6, 0x0cc6, - 0x0ccc, 0x0ccd, - 0x0ce2, 0x0ce3, - 0x0d41, 0x0d44, - 0x0d4d, 0x0d4d, - 0x0d62, 0x0d63, +/* 'Sinhala': Script */ +static const OnigCodePoint CR_Sinhala[] = { + 11, + 0x0d82, 0x0d83, + 0x0d85, 0x0d96, + 0x0d9a, 0x0db1, + 0x0db3, 0x0dbb, + 0x0dbd, 0x0dbd, + 0x0dc0, 0x0dc6, 0x0dca, 0x0dca, - 0x0dd2, 0x0dd4, + 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, - 0x0e31, 0x0e31, - 0x0e34, 0x0e3a, - 0x0e47, 0x0e4e, - 0x0eb1, 0x0eb1, - 0x0eb4, 0x0eb9, - 0x0ebb, 0x0ebc, + 0x0dd8, 0x0ddf, + 0x0df2, 0x0df4, +}; /* CR_Sinhala */ + +/* 'Thai': Script */ +static const OnigCodePoint CR_Thai[] = { + 2, + 0x0e01, 0x0e3a, + 0x0e40, 0x0e5b, +}; /* CR_Thai */ + +/* '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, - 0x0f18, 0x0f19, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f71, 0x0f7e, - 0x0f80, 0x0f84, - 0x0f86, 0x0f87, + 0x0ed0, 0x0ed9, + 0x0edc, 0x0edd, +}; /* CR_Lao */ + +/* 'Tibetan': Script */ +static const OnigCodePoint CR_Tibetan[] = { + 7, + 0x0f00, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f8b, 0x0f90, 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, - 0x135f, 0x135f, - 0x1712, 0x1714, - 0x1732, 0x1734, - 0x1752, 0x1753, - 0x1772, 0x1773, - 0x17b7, 0x17bd, - 0x17c6, 0x17c6, - 0x17c9, 0x17d3, - 0x17dd, 0x17dd, - 0x180b, 0x180d, - 0x18a9, 0x18a9, - 0x1920, 0x1922, - 0x1927, 0x1928, - 0x1932, 0x1932, - 0x1939, 0x193b, - 0x1a17, 0x1a18, - 0x1b00, 0x1b03, - 0x1b34, 0x1b34, - 0x1b36, 0x1b3a, - 0x1b3c, 0x1b3c, - 0x1b42, 0x1b42, - 0x1b6b, 0x1b73, - 0x1b80, 0x1b81, - 0x1ba2, 0x1ba5, - 0x1ba8, 0x1ba9, - 0x1c2c, 0x1c33, - 0x1c36, 0x1c37, + 0x0fbe, 0x0fcc, + 0x0fce, 0x0fd4, +}; /* CR_Tibetan */ + +/* 'Myanmar': Script */ +static const OnigCodePoint CR_Myanmar[] = { + 2, + 0x1000, 0x109f, + 0xaa60, 0xaa7b, +}; /* CR_Myanmar */ + +/* 'Georgian': Script */ +static const OnigCodePoint CR_Georgian[] = { + 4, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x2d00, 0x2d25, +}; /* CR_Georgian */ + +/* 'Hangul': Script */ +static const OnigCodePoint CR_Hangul[] = { + 13, + 0x1100, 0x11ff, + 0x3131, 0x318e, + 0x3200, 0x321e, + 0x3260, 0x327e, + 0xa960, 0xa97c, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xffa0, 0xffbe, + 0xffc2, 0xffc7, + 0xffca, 0xffcf, + 0xffd2, 0xffd7, + 0xffda, 0xffdc, +}; /* CR_Hangul */ + +/* 'Ethiopic': Script */ +static const OnigCodePoint CR_Ethiopic[] = { + 27, + 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, + 0x135f, 0x137c, + 0x1380, 0x1399, + 0x2d80, 0x2d96, + 0x2da0, 0x2da6, + 0x2da8, 0x2dae, + 0x2db0, 0x2db6, + 0x2db8, 0x2dbe, + 0x2dc0, 0x2dc6, + 0x2dc8, 0x2dce, + 0x2dd0, 0x2dd6, + 0x2dd8, 0x2dde, +}; /* CR_Ethiopic */ + +/* 'Cherokee': Script */ +static const OnigCodePoint CR_Cherokee[] = { + 1, + 0x13a0, 0x13f4, +}; /* CR_Cherokee */ + +/* 'Canadian_Aboriginal': Script */ +static const OnigCodePoint CR_Canadian_Aboriginal[] = { + 2, + 0x1400, 0x167f, + 0x18b0, 0x18f5, +}; /* CR_Canadian_Aboriginal */ + +/* 'Ogham': Script */ +static const OnigCodePoint CR_Ogham[] = { + 1, + 0x1680, 0x169c, +}; /* CR_Ogham */ + +/* 'Runic': Script */ +static const OnigCodePoint CR_Runic[] = { + 2, + 0x16a0, 0x16ea, + 0x16ee, 0x16f0, +}; /* CR_Runic */ + +/* 'Khmer': Script */ +static const OnigCodePoint CR_Khmer[] = { + 4, + 0x1780, 0x17dd, + 0x17e0, 0x17e9, + 0x17f0, 0x17f9, + 0x19e0, 0x19ff, +}; /* CR_Khmer */ + +/* 'Mongolian': Script */ +static const OnigCodePoint CR_Mongolian[] = { + 6, + 0x1800, 0x1801, + 0x1804, 0x1804, + 0x1806, 0x180e, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18aa, +}; /* CR_Mongolian */ + +/* 'Hiragana': Script */ +static const OnigCodePoint CR_Hiragana[] = { + 3, + 0x3041, 0x3096, + 0x309d, 0x309f, + 0x1f200, 0x1f200, +}; /* CR_Hiragana */ + +/* 'Katakana': Script */ +static const OnigCodePoint CR_Katakana[] = { + 7, + 0x30a1, 0x30fa, + 0x30fd, 0x30ff, + 0x31f0, 0x31ff, + 0x32d0, 0x32fe, + 0x3300, 0x3357, + 0xff66, 0xff6f, + 0xff71, 0xff9d, +}; /* CR_Katakana */ + +/* 'Bopomofo': Script */ +static const OnigCodePoint CR_Bopomofo[] = { + 2, + 0x3105, 0x312d, + 0x31a0, 0x31b7, +}; /* CR_Bopomofo */ + +/* '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, 0x9fcb, + 0xf900, 0xfa2d, + 0xfa30, 0xfa6d, + 0xfa70, 0xfad9, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Han */ + +/* 'Yi': Script */ +static const OnigCodePoint CR_Yi[] = { + 2, + 0xa000, 0xa48c, + 0xa490, 0xa4c6, +}; /* CR_Yi */ + +/* 'Old_Italic': Script */ +static const OnigCodePoint CR_Old_Italic[] = { + 2, + 0x10300, 0x1031e, + 0x10320, 0x10323, +}; /* CR_Old_Italic */ + +/* 'Gothic': Script */ +static const OnigCodePoint CR_Gothic[] = { + 1, + 0x10330, 0x1034a, +}; /* CR_Gothic */ + +/* 'Deseret': Script */ +static const OnigCodePoint CR_Deseret[] = { + 1, + 0x10400, 0x1044f, +}; /* CR_Deseret */ + +/* 'Inherited': Script */ +static const OnigCodePoint CR_Inherited[] = { + 23, + 0x0300, 0x036f, + 0x0485, 0x0486, + 0x064b, 0x0655, + 0x0670, 0x0670, + 0x0951, 0x0952, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1ce0, + 0x1ce2, 0x1ce8, + 0x1ced, 0x1ced, 0x1dc0, 0x1de6, - 0x1dfe, 0x1dff, - 0x20d0, 0x20dc, - 0x20e1, 0x20e1, - 0x20e5, 0x20f0, - 0x2de0, 0x2dff, + 0x1dfd, 0x1dff, + 0x200c, 0x200d, + 0x20d0, 0x20f0, 0x302a, 0x302f, 0x3099, 0x309a, - 0xa66f, 0xa66f, - 0xa67c, 0xa67d, - 0xa802, 0xa802, - 0xa806, 0xa806, - 0xa80b, 0xa80b, - 0xa825, 0xa826, - 0xa8c4, 0xa8c4, - 0xa926, 0xa92d, - 0xa947, 0xa951, - 0xaa29, 0xaa2e, - 0xaa31, 0xaa32, - 0xaa35, 0xaa36, - 0xaa43, 0xaa43, - 0xaa4c, 0xaa4c, - 0xfb1e, 0xfb1e, 0xfe00, 0xfe0f, 0xfe20, 0xfe26, 0x101fd, 0x101fd, - 0x10a01, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a0f, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, 0x1d167, 0x1d169, 0x1d17b, 0x1d182, 0x1d185, 0x1d18b, 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, 0xe0100, 0xe01ef, -}; /* CR_Mn */ +}; /* CR_Inherited */ -/* 'N': Major Category */ -static const OnigCodePoint CR_N[] = { - 69, - 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, - 0x0be6, 0x0bf2, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7e, - 0x0ce6, 0x0cef, - 0x0d66, 0x0d75, - 0x0e50, 0x0e59, - 0x0ed0, 0x0ed9, - 0x0f20, 0x0f33, - 0x1040, 0x1049, - 0x1090, 0x1099, - 0x1369, 0x137c, - 0x16ee, 0x16f0, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1810, 0x1819, - 0x1946, 0x194f, - 0x19d0, 0x19d9, - 0x1b50, 0x1b59, - 0x1bb0, 0x1bb9, - 0x1c40, 0x1c49, - 0x1c50, 0x1c59, - 0x2070, 0x2070, - 0x2074, 0x2079, - 0x2080, 0x2089, - 0x2153, 0x2182, - 0x2185, 0x2188, - 0x2460, 0x249b, - 0x24ea, 0x24ff, - 0x2776, 0x2793, - 0x2cfd, 0x2cfd, - 0x3007, 0x3007, - 0x3021, 0x3029, - 0x3038, 0x303a, - 0x3192, 0x3195, - 0x3220, 0x3229, - 0x3251, 0x325f, - 0x3280, 0x3289, - 0x32b1, 0x32bf, - 0xa620, 0xa629, - 0xa8d0, 0xa8d9, - 0xa900, 0xa909, - 0xaa50, 0xaa59, - 0xff10, 0xff19, - 0x10107, 0x10133, - 0x10140, 0x10178, - 0x1018a, 0x1018a, - 0x10320, 0x10323, - 0x10341, 0x10341, - 0x1034a, 0x1034a, - 0x103d1, 0x103d5, - 0x104a0, 0x104a9, - 0x10916, 0x10919, - 0x10a40, 0x10a47, - 0x12400, 0x12462, - 0x1d360, 0x1d371, - 0x1d7ce, 0x1d7ff, -}; /* CR_N */ +/* 'Tagalog': Script */ +static const OnigCodePoint CR_Tagalog[] = { + 2, + 0x1700, 0x170c, + 0x170e, 0x1714, +}; /* CR_Tagalog */ -/* 'Nd': General Category */ -static const OnigCodePoint CR_Nd[] = { - 33, - 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, - 0x0e50, 0x0e59, - 0x0ed0, 0x0ed9, - 0x0f20, 0x0f29, - 0x1040, 0x1049, - 0x1090, 0x1099, - 0x17e0, 0x17e9, - 0x1810, 0x1819, - 0x1946, 0x194f, - 0x19d0, 0x19d9, - 0x1b50, 0x1b59, - 0x1bb0, 0x1bb9, - 0x1c40, 0x1c49, - 0x1c50, 0x1c59, - 0xa620, 0xa629, - 0xa8d0, 0xa8d9, - 0xa900, 0xa909, - 0xaa50, 0xaa59, - 0xff10, 0xff19, +/* 'Hanunoo': Script */ +static const OnigCodePoint CR_Hanunoo[] = { + 1, + 0x1720, 0x1734, +}; /* CR_Hanunoo */ + +/* 'Buhid': Script */ +static const OnigCodePoint CR_Buhid[] = { + 1, + 0x1740, 0x1753, +}; /* CR_Buhid */ + +/* 'Tagbanwa': Script */ +static const OnigCodePoint CR_Tagbanwa[] = { + 3, + 0x1760, 0x176c, + 0x176e, 0x1770, + 0x1772, 0x1773, +}; /* CR_Tagbanwa */ + +/* 'Limbu': Script */ +static const OnigCodePoint CR_Limbu[] = { + 5, + 0x1900, 0x191c, + 0x1920, 0x192b, + 0x1930, 0x193b, + 0x1940, 0x1940, + 0x1944, 0x194f, +}; /* CR_Limbu */ + +/* 'Tai_Le': Script */ +static const OnigCodePoint CR_Tai_Le[] = { + 2, + 0x1950, 0x196d, + 0x1970, 0x1974, +}; /* CR_Tai_Le */ + +/* 'Linear_B': Script */ +static const OnigCodePoint CR_Linear_B[] = { + 7, + 0x10000, 0x1000b, + 0x1000d, 0x10026, + 0x10028, 0x1003a, + 0x1003c, 0x1003d, + 0x1003f, 0x1004d, + 0x10050, 0x1005d, + 0x10080, 0x100fa, +}; /* CR_Linear_B */ + +/* 'Ugaritic': Script */ +static const OnigCodePoint CR_Ugaritic[] = { + 2, + 0x10380, 0x1039d, + 0x1039f, 0x1039f, +}; /* CR_Ugaritic */ + +/* 'Shavian': Script */ +static const OnigCodePoint CR_Shavian[] = { + 1, + 0x10450, 0x1047f, +}; /* CR_Shavian */ + +/* 'Osmanya': Script */ +static const OnigCodePoint CR_Osmanya[] = { + 2, + 0x10480, 0x1049d, 0x104a0, 0x104a9, - 0x1d7ce, 0x1d7ff, -}; /* CR_Nd */ +}; /* CR_Osmanya */ -/* 'Nl': General Category */ -static const OnigCodePoint CR_Nl[] = { - 11, - 0x16ee, 0x16f0, - 0x2160, 0x2182, - 0x2185, 0x2188, - 0x3007, 0x3007, - 0x3021, 0x3029, - 0x3038, 0x303a, - 0x10140, 0x10174, - 0x10341, 0x10341, - 0x1034a, 0x1034a, - 0x103d1, 0x103d5, - 0x12400, 0x12462, -}; /* CR_Nl */ +/* 'Cypriot': Script */ +static const OnigCodePoint CR_Cypriot[] = { + 6, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x1083f, +}; /* CR_Cypriot */ + +/* 'Braille': Script */ +static const OnigCodePoint CR_Braille[] = { + 1, + 0x2800, 0x28ff, +}; /* CR_Braille */ -/* 'No': General Category */ -static const OnigCodePoint CR_No[] = { - 30, - 0x00b2, 0x00b3, - 0x00b9, 0x00b9, - 0x00bc, 0x00be, - 0x09f4, 0x09f9, - 0x0bf0, 0x0bf2, - 0x0c78, 0x0c7e, - 0x0d70, 0x0d75, - 0x0f2a, 0x0f33, - 0x1369, 0x137c, - 0x17f0, 0x17f9, - 0x2070, 0x2070, - 0x2074, 0x2079, - 0x2080, 0x2089, - 0x2153, 0x215f, - 0x2460, 0x249b, - 0x24ea, 0x24ff, - 0x2776, 0x2793, - 0x2cfd, 0x2cfd, - 0x3192, 0x3195, - 0x3220, 0x3229, - 0x3251, 0x325f, - 0x3280, 0x3289, - 0x32b1, 0x32bf, - 0x10107, 0x10133, - 0x10175, 0x10178, - 0x1018a, 0x1018a, - 0x10320, 0x10323, - 0x10916, 0x10919, - 0x10a40, 0x10a47, - 0x1d360, 0x1d371, -}; /* CR_No */ +/* 'Buginese': Script */ +static const OnigCodePoint CR_Buginese[] = { + 2, + 0x1a00, 0x1a1b, + 0x1a1e, 0x1a1f, +}; /* CR_Buginese */ -/* 'P': Major Category */ -static const OnigCodePoint CR_P[] = { - 112, - 0x0021, 0x0023, - 0x0025, 0x002a, - 0x002c, 0x002f, - 0x003a, 0x003b, - 0x003f, 0x0040, - 0x005b, 0x005d, - 0x005f, 0x005f, - 0x007b, 0x007b, - 0x007d, 0x007d, - 0x00a1, 0x00a1, - 0x00ab, 0x00ab, - 0x00b7, 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, - 0x0964, 0x0965, - 0x0970, 0x0970, - 0x0df4, 0x0df4, - 0x0e4f, 0x0e4f, - 0x0e5a, 0x0e5b, - 0x0f04, 0x0f12, - 0x0f3a, 0x0f3d, - 0x0f85, 0x0f85, - 0x0fd0, 0x0fd4, - 0x104a, 0x104f, - 0x10fb, 0x10fb, - 0x1361, 0x1368, - 0x166d, 0x166e, - 0x169b, 0x169c, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x17d4, 0x17d6, - 0x17d8, 0x17da, - 0x1800, 0x180a, - 0x1944, 0x1945, +/* 'Coptic': Script */ +static const OnigCodePoint CR_Coptic[] = { + 3, + 0x03e2, 0x03ef, + 0x2c80, 0x2cf1, + 0x2cf9, 0x2cff, +}; /* CR_Coptic */ + +/* 'New_Tai_Lue': Script */ +static const OnigCodePoint CR_New_Tai_Lue[] = { + 4, + 0x1980, 0x19ab, + 0x19b0, 0x19c9, + 0x19d0, 0x19da, 0x19de, 0x19df, - 0x1a1e, 0x1a1f, - 0x1b5a, 0x1b60, - 0x1c3b, 0x1c3f, - 0x1c7e, 0x1c7f, - 0x2010, 0x2027, - 0x2030, 0x2043, - 0x2045, 0x2051, - 0x2053, 0x205e, - 0x207d, 0x207e, - 0x208d, 0x208e, - 0x2329, 0x232a, - 0x2768, 0x2775, - 0x27c5, 0x27c6, - 0x27e6, 0x27ef, - 0x2983, 0x2998, - 0x29d8, 0x29db, - 0x29fc, 0x29fd, - 0x2cf9, 0x2cfc, - 0x2cfe, 0x2cff, - 0x2e00, 0x2e2e, - 0x2e30, 0x2e30, - 0x3001, 0x3003, - 0x3008, 0x3011, - 0x3014, 0x301f, - 0x3030, 0x3030, - 0x303d, 0x303d, - 0x30a0, 0x30a0, - 0x30fb, 0x30fb, - 0xa60d, 0xa60f, - 0xa673, 0xa673, - 0xa67e, 0xa67e, - 0xa874, 0xa877, - 0xa8ce, 0xa8cf, - 0xa92e, 0xa92f, - 0xa95f, 0xa95f, - 0xaa5c, 0xaa5f, - 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, 0x10101, - 0x1039f, 0x1039f, - 0x103d0, 0x103d0, - 0x1091f, 0x1091f, - 0x1093f, 0x1093f, +}; /* CR_New_Tai_Lue */ + +/* 'Glagolitic': Script */ +static const OnigCodePoint CR_Glagolitic[] = { + 2, + 0x2c00, 0x2c2e, + 0x2c30, 0x2c5e, +}; /* CR_Glagolitic */ + +/* 'Tifinagh': Script */ +static const OnigCodePoint CR_Tifinagh[] = { + 2, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, +}; /* CR_Tifinagh */ + +/* 'Syloti_Nagri': Script */ +static const OnigCodePoint CR_Syloti_Nagri[] = { + 1, + 0xa800, 0xa82b, +}; /* CR_Syloti_Nagri */ + +/* 'Old_Persian': Script */ +static const OnigCodePoint CR_Old_Persian[] = { + 2, + 0x103a0, 0x103c3, + 0x103c8, 0x103d5, +}; /* CR_Old_Persian */ + +/* 'Kharoshthi': Script */ +static const OnigCodePoint CR_Kharoshthi[] = { + 8, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a47, 0x10a50, 0x10a58, +}; /* CR_Kharoshthi */ + +/* 'Balinese': Script */ +static const OnigCodePoint CR_Balinese[] = { + 2, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b7c, +}; /* CR_Balinese */ + +/* 'Cuneiform': Script */ +static const OnigCodePoint CR_Cuneiform[] = { + 3, + 0x12000, 0x1236e, + 0x12400, 0x12462, 0x12470, 0x12473, -}; /* CR_P */ +}; /* CR_Cuneiform */ -/* 'Pc': General Category */ -static const OnigCodePoint CR_Pc[] = { - 6, - 0x005f, 0x005f, - 0x203f, 0x2040, - 0x2054, 0x2054, - 0xfe33, 0xfe34, - 0xfe4d, 0xfe4f, - 0xff3f, 0xff3f, -}; /* CR_Pc */ +/* 'Phoenician': Script */ +static const OnigCodePoint CR_Phoenician[] = { + 2, + 0x10900, 0x1091b, + 0x1091f, 0x1091f, +}; /* CR_Phoenician */ + +/* 'Phags_Pa': Script */ +static const OnigCodePoint CR_Phags_Pa[] = { + 1, + 0xa840, 0xa877, +}; /* CR_Phags_Pa */ + +/* 'Nko': Script */ +static const OnigCodePoint CR_Nko[] = { + 1, + 0x07c0, 0x07fa, +}; /* CR_Nko */ + +/* 'Sundanese': Script */ +static const OnigCodePoint CR_Sundanese[] = { + 2, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, +}; /* CR_Sundanese */ + +/* 'Lepcha': Script */ +static const OnigCodePoint CR_Lepcha[] = { + 3, + 0x1c00, 0x1c37, + 0x1c3b, 0x1c49, + 0x1c4d, 0x1c4f, +}; /* CR_Lepcha */ -/* 'Pd': General Category */ -static const OnigCodePoint CR_Pd[] = { - 14, - 0x002d, 0x002d, - 0x058a, 0x058a, - 0x05be, 0x05be, - 0x1806, 0x1806, - 0x2010, 0x2015, - 0x2e17, 0x2e17, - 0x2e1a, 0x2e1a, - 0x301c, 0x301c, - 0x3030, 0x3030, - 0x30a0, 0x30a0, - 0xfe31, 0xfe32, - 0xfe58, 0xfe58, - 0xfe63, 0xfe63, - 0xff0d, 0xff0d, -}; /* CR_Pd */ +/* 'Ol_Chiki': Script */ +static const OnigCodePoint CR_Ol_Chiki[] = { + 1, + 0x1c50, 0x1c7f, +}; /* CR_Ol_Chiki */ -/* 'Pe': General Category */ -static const OnigCodePoint CR_Pe[] = { - 70, - 0x0029, 0x0029, - 0x005d, 0x005d, - 0x007d, 0x007d, - 0x0f3b, 0x0f3b, - 0x0f3d, 0x0f3d, - 0x169c, 0x169c, - 0x2046, 0x2046, - 0x207e, 0x207e, - 0x208e, 0x208e, - 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, - 0xfd3f, 0xfd3f, - 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, -}; /* CR_Pe */ +/* 'Vai': Script */ +static const OnigCodePoint CR_Vai[] = { + 1, + 0xa500, 0xa62b, +}; /* CR_Vai */ -/* '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, -}; /* CR_Pf */ +/* 'Saurashtra': Script */ +static const OnigCodePoint CR_Saurashtra[] = { + 2, + 0xa880, 0xa8c4, + 0xa8ce, 0xa8d9, +}; /* CR_Saurashtra */ -/* '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, -}; /* CR_Pi */ +/* 'Kayah_Li': Script */ +static const OnigCodePoint CR_Kayah_Li[] = { + 1, + 0xa900, 0xa92f, +}; /* CR_Kayah_Li */ -/* 'Po': General Category */ -static const OnigCodePoint CR_Po[] = { - 108, - 0x0021, 0x0023, - 0x0025, 0x0027, - 0x002a, 0x002a, - 0x002c, 0x002c, - 0x002e, 0x002f, - 0x003a, 0x003b, - 0x003f, 0x0040, - 0x005c, 0x005c, - 0x00a1, 0x00a1, - 0x00b7, 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, - 0x0964, 0x0965, - 0x0970, 0x0970, - 0x0df4, 0x0df4, - 0x0e4f, 0x0e4f, - 0x0e5a, 0x0e5b, - 0x0f04, 0x0f12, - 0x0f85, 0x0f85, - 0x0fd0, 0x0fd4, - 0x104a, 0x104f, - 0x10fb, 0x10fb, - 0x1361, 0x1368, - 0x166d, 0x166e, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x17d4, 0x17d6, - 0x17d8, 0x17da, - 0x1800, 0x1805, - 0x1807, 0x180a, - 0x1944, 0x1945, - 0x19de, 0x19df, - 0x1a1e, 0x1a1f, - 0x1b5a, 0x1b60, - 0x1c3b, 0x1c3f, - 0x1c7e, 0x1c7f, - 0x2016, 0x2017, - 0x2020, 0x2027, - 0x2030, 0x2038, - 0x203b, 0x203e, - 0x2041, 0x2043, - 0x2047, 0x2051, - 0x2053, 0x2053, - 0x2055, 0x205e, - 0x2cf9, 0x2cfc, - 0x2cfe, 0x2cff, - 0x2e00, 0x2e01, - 0x2e06, 0x2e08, - 0x2e0b, 0x2e0b, - 0x2e0e, 0x2e16, - 0x2e18, 0x2e19, - 0x2e1b, 0x2e1b, - 0x2e1e, 0x2e1f, - 0x2e2a, 0x2e2e, - 0x2e30, 0x2e30, - 0x3001, 0x3003, - 0x303d, 0x303d, - 0x30fb, 0x30fb, - 0xa60d, 0xa60f, - 0xa673, 0xa673, - 0xa67e, 0xa67e, - 0xa874, 0xa877, - 0xa8ce, 0xa8cf, - 0xa92e, 0xa92f, +/* 'Rejang': Script */ +static const OnigCodePoint CR_Rejang[] = { + 2, + 0xa930, 0xa953, 0xa95f, 0xa95f, - 0xaa5c, 0xaa5f, - 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, 0x10101, - 0x1039f, 0x1039f, - 0x103d0, 0x103d0, - 0x1091f, 0x1091f, +}; /* CR_Rejang */ + +/* 'Lycian': Script */ +static const OnigCodePoint CR_Lycian[] = { + 1, + 0x10280, 0x1029c, +}; /* CR_Lycian */ + +/* 'Carian': Script */ +static const OnigCodePoint CR_Carian[] = { + 1, + 0x102a0, 0x102d0, +}; /* CR_Carian */ + +/* 'Lydian': Script */ +static const OnigCodePoint CR_Lydian[] = { + 2, + 0x10920, 0x10939, 0x1093f, 0x1093f, - 0x10a50, 0x10a58, - 0x12470, 0x12473, -}; /* CR_Po */ +}; /* CR_Lydian */ -/* 'Ps': General Category */ -static const OnigCodePoint CR_Ps[] = { - 72, - 0x0028, 0x0028, - 0x005b, 0x005b, - 0x007b, 0x007b, - 0x0f3a, 0x0f3a, - 0x0f3c, 0x0f3c, - 0x169b, 0x169b, - 0x201a, 0x201a, - 0x201e, 0x201e, - 0x2045, 0x2045, - 0x207d, 0x207d, - 0x208d, 0x208d, - 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, - 0x3008, 0x3008, - 0x300a, 0x300a, - 0x300c, 0x300c, - 0x300e, 0x300e, - 0x3010, 0x3010, - 0x3014, 0x3014, - 0x3016, 0x3016, - 0x3018, 0x3018, - 0x301a, 0x301a, - 0x301d, 0x301d, - 0xfd3e, 0xfd3e, - 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, -}; /* CR_Ps */ +/* 'Cham': Script */ +static const OnigCodePoint CR_Cham[] = { + 4, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa5c, 0xaa5f, +}; /* CR_Cham */ -/* 'S': Major Category */ -static const OnigCodePoint CR_S[] = { - 179, - 0x0024, 0x0024, - 0x002b, 0x002b, - 0x003c, 0x003e, - 0x005e, 0x005e, - 0x0060, 0x0060, - 0x007c, 0x007c, - 0x007e, 0x007e, - 0x00a2, 0x00a9, - 0x00ac, 0x00ac, - 0x00ae, 0x00b1, - 0x00b4, 0x00b4, - 0x00b6, 0x00b6, - 0x00b8, 0x00b8, - 0x00d7, 0x00d7, - 0x00f7, 0x00f7, - 0x02c2, 0x02c5, - 0x02d2, 0x02df, - 0x02e5, 0x02eb, - 0x02ed, 0x02ed, - 0x02ef, 0x02ff, - 0x0375, 0x0375, - 0x0384, 0x0385, - 0x03f6, 0x03f6, - 0x0482, 0x0482, - 0x0606, 0x0608, - 0x060b, 0x060b, - 0x060e, 0x060f, - 0x06e9, 0x06e9, - 0x06fd, 0x06fe, - 0x07f6, 0x07f6, - 0x09f2, 0x09f3, - 0x09fa, 0x09fa, - 0x0af1, 0x0af1, - 0x0b70, 0x0b70, - 0x0bf3, 0x0bfa, - 0x0c7f, 0x0c7f, - 0x0cf1, 0x0cf2, - 0x0d79, 0x0d79, - 0x0e3f, 0x0e3f, - 0x0f01, 0x0f03, - 0x0f13, 0x0f17, - 0x0f1a, 0x0f1f, - 0x0f34, 0x0f34, - 0x0f36, 0x0f36, - 0x0f38, 0x0f38, - 0x0fbe, 0x0fc5, - 0x0fc7, 0x0fcc, - 0x0fce, 0x0fcf, - 0x109e, 0x109f, - 0x1360, 0x1360, - 0x1390, 0x1399, - 0x17db, 0x17db, - 0x1940, 0x1940, - 0x19e0, 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, 0x20b5, - 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, 0x2328, - 0x232b, 0x23e7, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x249c, 0x24e9, - 0x2500, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2767, - 0x2794, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27c4, - 0x27c7, 0x27ca, - 0x27cc, 0x27cc, - 0x27d0, 0x27e5, - 0x27f0, 0x2982, - 0x2999, 0x29d7, - 0x29dc, 0x29fb, - 0x29fe, 0x2b4c, - 0x2b50, 0x2b54, - 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, 0x3243, - 0x3250, 0x3250, - 0x3260, 0x327f, - 0x328a, 0x32b0, - 0x32c0, 0x32fe, - 0x3300, 0x33ff, - 0x4dc0, 0x4dff, - 0xa490, 0xa4c6, - 0xa700, 0xa716, - 0xa720, 0xa721, - 0xa789, 0xa78a, - 0xa828, 0xa82b, - 0xfb29, 0xfb29, - 0xfdfc, 0xfdfd, - 0xfe62, 0xfe62, - 0xfe64, 0xfe66, - 0xfe69, 0xfe69, - 0xff04, 0xff04, - 0xff0b, 0xff0b, - 0xff1c, 0xff1e, +/* 'Tai_Tham': Script */ +static const OnigCodePoint CR_Tai_Tham[] = { + 5, + 0x1a20, 0x1a5e, + 0x1a60, 0x1a7c, + 0x1a7f, 0x1a89, + 0x1a90, 0x1a99, + 0x1aa0, 0x1aad, +}; /* CR_Tai_Tham */ + +/* 'Tai_Viet': Script */ +static const OnigCodePoint CR_Tai_Viet[] = { + 2, + 0xaa80, 0xaac2, + 0xaadb, 0xaadf, +}; /* CR_Tai_Viet */ + +/* 'Avestan': Script */ +static const OnigCodePoint CR_Avestan[] = { + 2, + 0x10b00, 0x10b35, + 0x10b39, 0x10b3f, +}; /* CR_Avestan */ + +/* 'Egyptian_Hieroglyphs': Script */ +static const OnigCodePoint CR_Egyptian_Hieroglyphs[] = { + 1, + 0x13000, 0x1342e, +}; /* CR_Egyptian_Hieroglyphs */ + +/* 'Samaritan': Script */ +static const OnigCodePoint CR_Samaritan[] = { + 2, + 0x0800, 0x082d, + 0x0830, 0x083e, +}; /* CR_Samaritan */ + +/* 'Lisu': Script */ +static const OnigCodePoint CR_Lisu[] = { + 1, + 0xa4d0, 0xa4ff, +}; /* CR_Lisu */ + +/* 'Bamum': Script */ +static const OnigCodePoint CR_Bamum[] = { + 1, + 0xa6a0, 0xa6f7, +}; /* CR_Bamum */ + +/* 'Javanese': Script */ +static const OnigCodePoint CR_Javanese[] = { + 3, + 0xa980, 0xa9cd, + 0xa9cf, 0xa9d9, + 0xa9de, 0xa9df, +}; /* CR_Javanese */ + +/* 'Meetei_Mayek': Script */ +static const OnigCodePoint CR_Meetei_Mayek[] = { + 2, + 0xabc0, 0xabed, + 0xabf0, 0xabf9, +}; /* CR_Meetei_Mayek */ + +/* 'Imperial_Aramaic': Script */ +static const OnigCodePoint CR_Imperial_Aramaic[] = { + 2, + 0x10840, 0x10855, + 0x10857, 0x1085f, +}; /* CR_Imperial_Aramaic */ + +/* 'Old_South_Arabian': Script */ +static const OnigCodePoint CR_Old_South_Arabian[] = { + 1, + 0x10a60, 0x10a7f, +}; /* CR_Old_South_Arabian */ + +/* 'Inscriptional_Parthian': Script */ +static const OnigCodePoint CR_Inscriptional_Parthian[] = { + 2, + 0x10b40, 0x10b55, + 0x10b58, 0x10b5f, +}; /* CR_Inscriptional_Parthian */ + +/* 'Inscriptional_Pahlavi': Script */ +static const OnigCodePoint CR_Inscriptional_Pahlavi[] = { + 2, + 0x10b60, 0x10b72, + 0x10b78, 0x10b7f, +}; /* CR_Inscriptional_Pahlavi */ + +/* 'Old_Turkic': Script */ +static const OnigCodePoint CR_Old_Turkic[] = { + 1, + 0x10c00, 0x10c48, +}; /* CR_Old_Turkic */ + +/* 'Kaithi': Script */ +static const OnigCodePoint CR_Kaithi[] = { + 1, + 0x11080, 0x110c1, +}; /* CR_Kaithi */ + +/* 'White_Space': Binary Property */ +static const OnigCodePoint CR_White_Space[] = { + 11, + 0x0009, 0x000d, + 0x0020, 0x0020, + 0x0085, 0x0085, + 0x00a0, 0x00a0, + 0x1680, 0x1680, + 0x180e, 0x180e, + 0x2000, 0x200a, + 0x2028, 0x2029, + 0x202f, 0x202f, + 0x205f, 0x205f, + 0x3000, 0x3000, +}; /* CR_White_Space */ + +/* 'Bidi_Control': Binary Property */ +static const OnigCodePoint CR_Bidi_Control[] = { + 2, + 0x200e, 0x200f, + 0x202a, 0x202e, +}; /* CR_Bidi_Control */ + +/* 'Join_Control': Binary Property */ +static const OnigCodePoint CR_Join_Control[] = { + 1, + 0x200c, 0x200d, +}; /* CR_Join_Control */ + +/* 'Dash': Binary Property */ +static const OnigCodePoint CR_Dash[] = { + 19, + 0x002d, 0x002d, + 0x058a, 0x058a, + 0x05be, 0x05be, + 0x1400, 0x1400, + 0x1806, 0x1806, + 0x2010, 0x2015, + 0x2053, 0x2053, + 0x207b, 0x207b, + 0x208b, 0x208b, + 0x2212, 0x2212, + 0x2e17, 0x2e17, + 0x2e1a, 0x2e1a, + 0x301c, 0x301c, + 0x3030, 0x3030, + 0x30a0, 0x30a0, + 0xfe31, 0xfe32, + 0xfe58, 0xfe58, + 0xfe63, 0xfe63, + 0xff0d, 0xff0d, +}; /* CR_Dash */ + +/* '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, +}; /* CR_Hyphen */ + +/* 'Quotation_Mark': Binary Property */ +static const OnigCodePoint CR_Quotation_Mark[] = { + 12, + 0x0022, 0x0022, + 0x0027, 0x0027, + 0x00ab, 0x00ab, + 0x00bb, 0x00bb, + 0x2018, 0x201f, + 0x2039, 0x203a, + 0x300c, 0x300f, + 0x301d, 0x301f, + 0xfe41, 0xfe44, + 0xff02, 0xff02, + 0xff07, 0xff07, + 0xff62, 0xff63, +}; /* CR_Quotation_Mark */ + +/* 'Terminal_Punctuation': Binary Property */ +static const OnigCodePoint CR_Terminal_Punctuation[] = { + 65, + 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, + 0x0964, 0x0965, + 0x0e5a, 0x0e5b, + 0x0f08, 0x0f08, + 0x0f0d, 0x0f12, + 0x104a, 0x104b, + 0x1361, 0x1368, + 0x166d, 0x166e, + 0x16eb, 0x16ed, + 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, + 0x3001, 0x3002, + 0xa4fe, 0xa4ff, + 0xa60d, 0xa60f, + 0xa6f3, 0xa6f7, + 0xa876, 0xa877, + 0xa8ce, 0xa8cf, + 0xa92f, 0xa92f, + 0xa9c7, 0xa9c9, + 0xaa5d, 0xaa5f, + 0xaadf, 0xaadf, + 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, + 0x10b3a, 0x10b3f, + 0x110be, 0x110c1, + 0x12470, 0x12473, +}; /* CR_Terminal_Punctuation */ + +/* 'Other_Math': Binary Property */ +static const OnigCodePoint CR_Other_Math[] = { + 99, + 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, + 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, + 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, - 0xff40, 0xff40, - 0xff5c, 0xff5c, - 0xff5e, 0xff5e, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfffc, 0xfffd, - 0x10102, 0x10102, - 0x10137, 0x1013f, - 0x10179, 0x10189, - 0x10190, 0x1019b, - 0x101d0, 0x101fc, - 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, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, -}; /* CR_S */ + 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, +}; /* CR_Other_Math */ + +/* 'Hex_Digit': Binary Property */ +static const OnigCodePoint CR_Hex_Digit[] = { + 6, + 0x0030, 0x0039, + 0x0041, 0x0046, + 0x0061, 0x0066, + 0xff10, 0xff19, + 0xff21, 0xff26, + 0xff41, 0xff46, +}; /* CR_Hex_Digit */ + +/* 'ASCII_Hex_Digit': Binary Property */ +static const OnigCodePoint CR_ASCII_Hex_Digit[] = { + 3, + 0x0030, 0x0039, + 0x0041, 0x0046, + 0x0061, 0x0066, +}; /* CR_ASCII_Hex_Digit */ + +/* 'Other_Alphabetic': Binary Property */ +static const OnigCodePoint CR_Other_Alphabetic[] = { + 141, + 0x0345, 0x0345, + 0x05b0, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x0610, 0x061a, + 0x064b, 0x0657, + 0x0659, 0x065e, + 0x0670, 0x0670, + 0x06d6, 0x06dc, + 0x06e1, 0x06e4, + 0x06e7, 0x06e8, + 0x06ed, 0x06ed, + 0x0711, 0x0711, + 0x0730, 0x073f, + 0x07a6, 0x07b0, + 0x0816, 0x0817, + 0x081b, 0x0823, + 0x0825, 0x0827, + 0x0829, 0x082c, + 0x0900, 0x0903, + 0x093e, 0x094c, + 0x094e, 0x094e, + 0x0955, 0x0955, + 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, + 0x0c01, 0x0c03, + 0x0c3e, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4c, + 0x0c55, 0x0c56, + 0x0c62, 0x0c63, + 0x0c82, 0x0c83, + 0x0cbe, 0x0cc4, + 0x0cc6, 0x0cc8, + 0x0cca, 0x0ccc, + 0x0cd5, 0x0cd6, + 0x0ce2, 0x0ce3, + 0x0d02, 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, + 0x0f90, 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, + 0x1c24, 0x1c35, + 0x1cf2, 0x1cf2, + 0x24b6, 0x24e9, + 0x2de0, 0x2dff, + 0xa823, 0xa827, + 0xa880, 0xa881, + 0xa8b4, 0xa8c3, + 0xa926, 0xa92a, + 0xa947, 0xa952, + 0xa980, 0xa983, + 0xa9b3, 0xa9bf, + 0xaa29, 0xaa36, + 0xaa43, 0xaa43, + 0xaa4c, 0xaa4d, + 0xaab0, 0xaab0, + 0xaab2, 0xaab4, + 0xaab7, 0xaab8, + 0xaabe, 0xaabe, + 0xabe3, 0xabea, + 0xfb1e, 0xfb1e, + 0x10a01, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a0f, + 0x11082, 0x11082, + 0x110b0, 0x110b8, +}; /* CR_Other_Alphabetic */ -/* 'Sc': General Category */ -static const OnigCodePoint CR_Sc[] = { - 14, - 0x0024, 0x0024, - 0x00a2, 0x00a5, - 0x060b, 0x060b, - 0x09f2, 0x09f3, - 0x0af1, 0x0af1, - 0x0bf9, 0x0bf9, - 0x0e3f, 0x0e3f, - 0x17db, 0x17db, - 0x20a0, 0x20b5, - 0xfdfc, 0xfdfc, - 0xfe69, 0xfe69, - 0xff04, 0xff04, - 0xffe0, 0xffe1, - 0xffe5, 0xffe6, -}; /* CR_Sc */ +/* 'Ideographic': Binary Property */ +static const OnigCodePoint CR_Ideographic[] = { + 11, + 0x3006, 0x3007, + 0x3021, 0x3029, + 0x3038, 0x303a, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xf900, 0xfa2d, + 0xfa30, 0xfa6d, + 0xfa70, 0xfad9, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Ideographic */ -/* 'Sk': General Category */ -static const OnigCodePoint CR_Sk[] = { - 26, +/* 'Diacritic': Binary Property */ +static const OnigCodePoint CR_Diacritic[] = { + 117, 0x005e, 0x005e, 0x0060, 0x0060, 0x00a8, 0x00a8, 0x00af, 0x00af, 0x00b4, 0x00b4, - 0x00b8, 0x00b8, - 0x02c2, 0x02c5, - 0x02d2, 0x02df, - 0x02e5, 0x02eb, - 0x02ed, 0x02ed, - 0x02ef, 0x02ff, - 0x0375, 0x0375, + 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, + 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, + 0x1b34, 0x1b34, + 0x1b44, 0x1b44, + 0x1b6b, 0x1b73, + 0x1baa, 0x1baa, + 0x1c36, 0x1c37, + 0x1c78, 0x1c7d, + 0x1cd0, 0x1ce8, + 0x1ced, 0x1ced, + 0x1d2c, 0x1d6a, + 0x1dc4, 0x1dcf, + 0x1dfd, 0x1dff, 0x1fbd, 0x1fbd, 0x1fbf, 0x1fc1, 0x1fcd, 0x1fcf, 0x1fdd, 0x1fdf, 0x1fed, 0x1fef, 0x1ffd, 0x1ffe, - 0x309b, 0x309c, - 0xa700, 0xa716, - 0xa720, 0xa721, - 0xa789, 0xa78a, + 0x2cef, 0x2cf1, + 0x2e2f, 0x2e2f, + 0x302a, 0x302f, + 0x3099, 0x309c, + 0x30fc, 0x30fc, + 0xa66f, 0xa66f, + 0xa67c, 0xa67d, + 0xa67f, 0xa67f, + 0xa6f0, 0xa6f1, + 0xa717, 0xa721, + 0xa788, 0xa788, + 0xa8c4, 0xa8c4, + 0xa8e0, 0xa8f1, + 0xa92b, 0xa92e, + 0xa953, 0xa953, + 0xa9b3, 0xa9b3, + 0xa9c0, 0xa9c0, + 0xaa7b, 0xaa7b, + 0xaabf, 0xaac2, + 0xabec, 0xabed, + 0xfb1e, 0xfb1e, + 0xfe20, 0xfe26, 0xff3e, 0xff3e, 0xff40, 0xff40, + 0xff70, 0xff70, + 0xff9e, 0xff9f, 0xffe3, 0xffe3, -}; /* CR_Sk */ + 0x110b9, 0x110ba, + 0x1d167, 0x1d169, + 0x1d16d, 0x1d172, + 0x1d17b, 0x1d182, + 0x1d185, 0x1d18b, + 0x1d1aa, 0x1d1ad, +}; /* CR_Diacritic */ -/* 'Sm': General Category */ -static const OnigCodePoint CR_Sm[] = { - 65, - 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, - 0x2140, 0x2144, - 0x214b, 0x214b, - 0x2190, 0x2194, - 0x219a, 0x219b, - 0x21a0, 0x21a0, - 0x21a3, 0x21a3, - 0x21a6, 0x21a6, - 0x21ae, 0x21ae, - 0x21ce, 0x21cf, - 0x21d2, 0x21d2, - 0x21d4, 0x21d4, - 0x21f4, 0x22ff, - 0x2308, 0x230b, - 0x2320, 0x2321, - 0x237c, 0x237c, - 0x239b, 0x23b3, - 0x23dc, 0x23e1, - 0x25b7, 0x25b7, - 0x25c1, 0x25c1, - 0x25f8, 0x25ff, - 0x266f, 0x266f, - 0x27c0, 0x27c4, - 0x27c7, 0x27ca, - 0x27cc, 0x27cc, - 0x27d0, 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, -}; /* CR_Sm */ +/* 'Extender': Binary Property */ +static const OnigCodePoint CR_Extender[] = { + 20, + 0x00b7, 0x00b7, + 0x02d0, 0x02d1, + 0x0640, 0x0640, + 0x07fa, 0x07fa, + 0x0e46, 0x0e46, + 0x0ec6, 0x0ec6, + 0x1843, 0x1843, + 0x1aa7, 0x1aa7, + 0x1c36, 0x1c36, + 0x1c7b, 0x1c7b, + 0x3005, 0x3005, + 0x3031, 0x3035, + 0x309d, 0x309e, + 0x30fc, 0x30fe, + 0xa015, 0xa015, + 0xa60c, 0xa60c, + 0xa9cf, 0xa9cf, + 0xaa70, 0xaa70, + 0xaadd, 0xaadd, + 0xff70, 0xff70, +}; /* CR_Extender */ + +/* 'Other_Lowercase': Binary Property */ +static const OnigCodePoint CR_Other_Lowercase[] = { + 13, + 0x02b0, 0x02b8, + 0x02c0, 0x02c1, + 0x02e0, 0x02e4, + 0x0345, 0x0345, + 0x037a, 0x037a, + 0x1d2c, 0x1d61, + 0x1d78, 0x1d78, + 0x1d9b, 0x1dbf, + 0x2090, 0x2094, + 0x2170, 0x217f, + 0x24d0, 0x24e9, + 0x2c7d, 0x2c7d, + 0xa770, 0xa770, +}; /* CR_Other_Lowercase */ + +/* 'Other_Uppercase': Binary Property */ +static const OnigCodePoint CR_Other_Uppercase[] = { + 2, + 0x2160, 0x216f, + 0x24b6, 0x24cf, +}; /* CR_Other_Uppercase */ + +/* '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, +}; /* CR_Noncharacter_Code_Point */ + +/* 'Other_Grapheme_Extend': Binary Property */ +static const OnigCodePoint CR_Other_Grapheme_Extend[] = { + 16, + 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, + 0xff9e, 0xff9f, + 0x1d165, 0x1d165, + 0x1d16e, 0x1d172, +}; /* CR_Other_Grapheme_Extend */ + +/* 'IDS_Binary_Operator': Binary Property */ +static const OnigCodePoint CR_IDS_Binary_Operator[] = { + 2, + 0x2ff0, 0x2ff1, + 0x2ff4, 0x2ffb, +}; /* CR_IDS_Binary_Operator */ + +/* 'IDS_Trinary_Operator': Binary Property */ +static const OnigCodePoint CR_IDS_Trinary_Operator[] = { + 1, + 0x2ff2, 0x2ff3, +}; /* CR_IDS_Trinary_Operator */ + +/* 'Radical': Binary Property */ +static const OnigCodePoint CR_Radical[] = { + 3, + 0x2e80, 0x2e99, + 0x2e9b, 0x2ef3, + 0x2f00, 0x2fd5, +}; /* CR_Radical */ + +/* 'Unified_Ideograph': Binary Property */ +static const OnigCodePoint CR_Unified_Ideograph[] = { + 11, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xfa0e, 0xfa0f, + 0xfa11, 0xfa11, + 0xfa13, 0xfa14, + 0xfa1f, 0xfa1f, + 0xfa21, 0xfa21, + 0xfa23, 0xfa24, + 0xfa27, 0xfa29, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, +}; /* CR_Unified_Ideograph */ + +/* 'Other_Default_Ignorable_Code_Point': Binary Property */ +static const OnigCodePoint CR_Other_Default_Ignorable_Code_Point[] = { + 10, + 0x034f, 0x034f, + 0x115f, 0x1160, + 0x2065, 0x2069, + 0x3164, 0x3164, + 0xffa0, 0xffa0, + 0xfff0, 0xfff8, + 0xe0000, 0xe0000, + 0xe0002, 0xe001f, + 0xe0080, 0xe00ff, + 0xe01f0, 0xe0fff, +}; /* CR_Other_Default_Ignorable_Code_Point */ -/* 'So': General Category */ -static const OnigCodePoint CR_So[] = { - 134, - 0x00a6, 0x00a7, +/* 'Deprecated': Binary Property */ +static const OnigCodePoint CR_Deprecated[] = { + 8, + 0x0149, 0x0149, + 0x0f77, 0x0f77, + 0x0f79, 0x0f79, + 0x17a3, 0x17a4, + 0x206a, 0x206f, + 0x2329, 0x232a, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, +}; /* CR_Deprecated */ + +/* '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, +}; /* CR_Soft_Dotted */ + +/* 'Logical_Order_Exception': Binary Property */ +static const OnigCodePoint CR_Logical_Order_Exception[] = { + 5, + 0x0e40, 0x0e44, + 0x0ec0, 0x0ec4, + 0xaab5, 0xaab6, + 0xaab9, 0xaab9, + 0xaabb, 0xaabc, +}; /* CR_Logical_Order_Exception */ + +/* 'Other_ID_Start': Binary Property */ +static const OnigCodePoint CR_Other_ID_Start[] = { + 3, + 0x2118, 0x2118, + 0x212e, 0x212e, + 0x309b, 0x309c, +}; /* CR_Other_ID_Start */ + +/* 'Other_ID_Continue': Binary Property */ +static const OnigCodePoint CR_Other_ID_Continue[] = { + 3, + 0x00b7, 0x00b7, + 0x0387, 0x0387, + 0x1369, 0x1371, +}; /* CR_Other_ID_Continue */ + +/* 'STerm': Binary Property */ +static const OnigCodePoint CR_STerm[] = { + 43, + 0x0021, 0x0021, + 0x002e, 0x002e, + 0x003f, 0x003f, + 0x055c, 0x055c, + 0x055e, 0x055e, + 0x0589, 0x0589, + 0x061f, 0x061f, + 0x06d4, 0x06d4, + 0x0700, 0x0702, + 0x07f9, 0x07f9, + 0x0964, 0x0965, + 0x104a, 0x104b, + 0x1362, 0x1362, + 0x1367, 0x1368, + 0x166e, 0x166e, + 0x1803, 0x1803, + 0x1809, 0x1809, + 0x1944, 0x1945, + 0x1b5a, 0x1b5b, + 0x1b5e, 0x1b5f, + 0x1c3b, 0x1c3c, + 0x1c7e, 0x1c7f, + 0x203c, 0x203d, + 0x2047, 0x2049, + 0x2e2e, 0x2e2e, + 0x3002, 0x3002, + 0xa4ff, 0xa4ff, + 0xa60e, 0xa60f, + 0xa6f3, 0xa6f3, + 0xa6f7, 0xa6f7, + 0xa876, 0xa877, + 0xa8ce, 0xa8cf, + 0xa92f, 0xa92f, + 0xa9c8, 0xa9c9, + 0xaa5d, 0xaa5f, + 0xabeb, 0xabeb, + 0xfe52, 0xfe52, + 0xfe56, 0xfe57, + 0xff01, 0xff01, + 0xff0e, 0xff0e, + 0xff1f, 0xff1f, + 0xff61, 0xff61, + 0x110be, 0x110c1, +}; /* CR_STerm */ + +/* 'Variation_Selector': Binary Property */ +static const OnigCodePoint CR_Variation_Selector[] = { + 3, + 0x180b, 0x180d, + 0xfe00, 0xfe0f, + 0xe0100, 0xe01ef, +}; /* CR_Variation_Selector */ + +/* 'Pattern_White_Space': Binary Property */ +static const OnigCodePoint CR_Pattern_White_Space[] = { + 5, + 0x0009, 0x000d, + 0x0020, 0x0020, + 0x0085, 0x0085, + 0x200e, 0x200f, + 0x2028, 0x2029, +}; /* CR_Pattern_White_Space */ + +/* '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, 0x00b0, + 0x00b0, 0x00b1, 0x00b6, 0x00b6, - 0x0482, 0x0482, - 0x060e, 0x060f, - 0x06e9, 0x06e9, - 0x06fd, 0x06fe, - 0x07f6, 0x07f6, - 0x09fa, 0x09fa, - 0x0b70, 0x0b70, - 0x0bf3, 0x0bf8, - 0x0bfa, 0x0bfa, - 0x0c7f, 0x0c7f, + 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, +}; /* CR_Pattern_Syntax */ +#endif /* USE_UNICODE_PROPERTIES */ + +/* 'NEWLINE': [[:NEWLINE:]] */ +static const OnigCodePoint CR_NEWLINE[] = { + 1, + 0x000a, 0x000a, +}; /* CR_NEWLINE */ + +/* 'Alpha': [[:Alpha:]] */ +#define CR_Alpha CR_Alphabetic + +/* 'Blank': [[:Blank:]] */ +static const OnigCodePoint CR_Blank[] = { + 9, + 0x0009, 0x0009, + 0x0020, 0x0020, + 0x00a0, 0x00a0, + 0x1680, 0x1680, + 0x180e, 0x180e, + 0x2000, 0x200a, + 0x202f, 0x202f, + 0x205f, 0x205f, + 0x3000, 0x3000, +}; /* CR_Blank */ + +/* 'Cntrl': [[:Cntrl:]] */ +#define CR_Cntrl CR_Cc + +/* 'Digit': [[:Digit:]] */ +#define CR_Digit CR_Nd + +/* 'Graph': [[:Graph:]] */ +static const OnigCodePoint CR_Graph[] = { + 490, + 0x0021, 0x007e, + 0x00a1, 0x0377, + 0x037a, 0x037e, + 0x0384, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x055f, + 0x0561, 0x0587, + 0x0589, 0x058a, + 0x0591, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f4, + 0x0600, 0x0603, + 0x0606, 0x061b, + 0x061e, 0x061f, + 0x0621, 0x065e, + 0x0660, 0x070d, + 0x070f, 0x074a, + 0x074d, 0x07b1, + 0x07c0, 0x07fa, + 0x0800, 0x082d, + 0x0830, 0x083e, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0972, + 0x0979, 0x097f, + 0x0981, 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, 0x0aef, + 0x0af1, 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, 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, 0x0bfa, + 0x0c01, 0x0c03, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c78, 0x0c7f, + 0x0c82, 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, - 0x0d79, 0x0d79, - 0x0f01, 0x0f03, - 0x0f13, 0x0f17, - 0x0f1a, 0x0f1f, - 0x0f34, 0x0f34, - 0x0f36, 0x0f36, - 0x0f38, 0x0f38, - 0x0fbe, 0x0fc5, - 0x0fc7, 0x0fcc, - 0x0fce, 0x0fcf, - 0x109e, 0x109f, - 0x1360, 0x1360, - 0x1390, 0x1399, + 0x0d02, 0x0d03, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4d, + 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, + 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, 0x0edd, + 0x0f00, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fbe, 0x0fcc, + 0x0fce, 0x0fd8, + 0x1000, 0x10c5, + 0x10d0, 0x10fc, + 0x1100, 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, 0x137c, + 0x1380, 0x1399, + 0x13a0, 0x13f4, + 0x1400, 0x167f, + 0x1681, 0x169c, + 0x16a0, 0x16f0, + 0x1700, 0x170c, + 0x170e, 0x1714, + 0x1720, 0x1736, + 0x1740, 0x1753, + 0x1760, 0x176c, + 0x176e, 0x1770, + 0x1772, 0x1773, + 0x1780, 0x17dd, + 0x17e0, 0x17e9, + 0x17f0, 0x17f9, + 0x1800, 0x180d, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18aa, + 0x18b0, 0x18f5, + 0x1900, 0x191c, + 0x1920, 0x192b, + 0x1930, 0x193b, 0x1940, 0x1940, - 0x19e0, 0x19ff, - 0x1b61, 0x1b6a, - 0x1b74, 0x1b7c, - 0x2100, 0x2101, - 0x2103, 0x2106, - 0x2108, 0x2109, - 0x2114, 0x2114, - 0x2116, 0x2118, - 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, 0x23e7, + 0x1944, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19b0, 0x19c9, + 0x19d0, 0x19da, + 0x19de, 0x1a1b, + 0x1a1e, 0x1a5e, + 0x1a60, 0x1a7c, + 0x1a7f, 0x1a89, + 0x1a90, 0x1a99, + 0x1aa0, 0x1aad, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b7c, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c37, + 0x1c3b, 0x1c49, + 0x1c4d, 0x1c7f, + 0x1cd0, 0x1cf2, + 0x1d00, 0x1de6, + 0x1dfd, 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, + 0x206a, 0x2071, + 0x2074, 0x208e, + 0x2090, 0x2094, + 0x20a0, 0x20b8, + 0x20d0, 0x20f0, + 0x2100, 0x2189, + 0x2190, 0x23e8, 0x2400, 0x2426, 0x2440, 0x244a, - 0x249c, 0x24e9, - 0x2500, 0x25b6, - 0x25b8, 0x25c0, - 0x25c2, 0x25f7, - 0x2600, 0x266e, - 0x2670, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, + 0x2460, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, 0x2701, 0x2704, 0x2706, 0x2709, 0x270c, 0x2727, 0x2729, 0x274b, 0x274d, 0x274d, 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2767, - 0x2794, 0x2794, + 0x2756, 0x275e, + 0x2761, 0x2794, 0x2798, 0x27af, 0x27b1, 0x27be, - 0x2800, 0x28ff, - 0x2b00, 0x2b2f, - 0x2b45, 0x2b46, - 0x2b50, 0x2b54, - 0x2ce5, 0x2cea, + 0x27c0, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 0x2b4c, + 0x2b50, 0x2b59, + 0x2c00, 0x2c2e, + 0x2c30, 0x2c5e, + 0x2c60, 0x2cf1, + 0x2cf9, 0x2d25, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, + 0x2d80, 0x2d96, + 0x2da0, 0x2da6, + 0x2da8, 0x2dae, + 0x2db0, 0x2db6, + 0x2db8, 0x2dbe, + 0x2dc0, 0x2dc6, + 0x2dc8, 0x2dce, + 0x2dd0, 0x2dd6, + 0x2dd8, 0x2dde, + 0x2de0, 0x2e31, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, - 0x3004, 0x3004, - 0x3012, 0x3013, - 0x3020, 0x3020, - 0x3036, 0x3037, - 0x303e, 0x303f, - 0x3190, 0x3191, - 0x3196, 0x319f, + 0x3001, 0x303f, + 0x3041, 0x3096, + 0x3099, 0x30ff, + 0x3105, 0x312d, + 0x3131, 0x318e, + 0x3190, 0x31b7, 0x31c0, 0x31e3, - 0x3200, 0x321e, - 0x322a, 0x3243, - 0x3250, 0x3250, - 0x3260, 0x327f, - 0x328a, 0x32b0, - 0x32c0, 0x32fe, - 0x3300, 0x33ff, - 0x4dc0, 0x4dff, + 0x31f0, 0x321e, + 0x3220, 0x32fe, + 0x3300, 0x4db5, + 0x4dc0, 0x9fcb, + 0xa000, 0xa48c, 0xa490, 0xa4c6, - 0xa828, 0xa82b, - 0xfdfd, 0xfdfd, - 0xffe4, 0xffe4, - 0xffe8, 0xffe8, - 0xffed, 0xffee, - 0xfffc, 0xfffd, - 0x10102, 0x10102, - 0x10137, 0x1013f, - 0x10179, 0x10189, + 0xa4d0, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa673, + 0xa67c, 0xa697, + 0xa6a0, 0xa6f7, + 0xa700, 0xa78c, + 0xa7fb, 0xa82b, + 0xa830, 0xa839, + 0xa840, 0xa877, + 0xa880, 0xa8c4, + 0xa8ce, 0xa8d9, + 0xa8e0, 0xa8fb, + 0xa900, 0xa953, + 0xa95f, 0xa97c, + 0xa980, 0xa9cd, + 0xa9cf, 0xa9d9, + 0xa9de, 0xa9df, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa5c, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadf, + 0xabc0, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xe000, 0xfa2d, + 0xfa30, 0xfa6d, + 0xfa70, 0xfad9, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xfb1d, 0xfb36, + 0xfb38, 0xfb3c, + 0xfb3e, 0xfb3e, + 0xfb40, 0xfb41, + 0xfb43, 0xfb44, + 0xfb46, 0xfbb1, + 0xfbd3, 0xfd3f, + 0xfd50, 0xfd8f, + 0xfd92, 0xfdc7, + 0xfdf0, 0xfdfd, + 0xfe00, 0xfe19, + 0xfe20, 0xfe26, + 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, 0x1018a, 0x10190, 0x1019b, - 0x101d0, 0x101fc, + 0x101d0, 0x101fd, + 0x10280, 0x1029c, + 0x102a0, 0x102d0, + 0x10300, 0x1031e, + 0x10320, 0x10323, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x1039f, 0x103c3, + 0x103c8, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10857, 0x1085f, + 0x10900, 0x1091b, + 0x1091f, 0x10939, + 0x1093f, 0x1093f, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a47, + 0x10a50, 0x10a58, + 0x10a60, 0x10a7f, + 0x10b00, 0x10b35, + 0x10b39, 0x10b55, + 0x10b58, 0x10b72, + 0x10b78, 0x10b7f, + 0x10c00, 0x10c48, + 0x10e60, 0x10e7e, + 0x11080, 0x110c1, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x12470, 0x12473, + 0x13000, 0x1342e, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, - 0x1d129, 0x1d164, - 0x1d16a, 0x1d16c, - 0x1d183, 0x1d184, - 0x1d18c, 0x1d1a9, - 0x1d1ae, 0x1d1dd, - 0x1d200, 0x1d241, - 0x1d245, 0x1d245, + 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, 0x1f000, 0x1f02b, 0x1f030, 0x1f093, -}; /* CR_So */ - -/* 'Z': Major Category */ -static const OnigCodePoint CR_Z[] = { - 9, - 0x0020, 0x0020, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x180e, 0x180e, - 0x2000, 0x200a, - 0x2028, 0x2029, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000, -}; /* CR_Z */ - -/* 'Zl': General Category */ -static const OnigCodePoint CR_Zl[] = { - 1, - 0x2028, 0x2028, -}; /* CR_Zl */ - -/* 'Zp': General Category */ -static const OnigCodePoint CR_Zp[] = { - 1, - 0x2029, 0x2029, -}; /* CR_Zp */ + 0x1f100, 0x1f10a, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, + 0xe0100, 0xe01ef, + 0xf0000, 0xffffd, + 0x100000, 0x10fffd, +}; /* CR_Graph */ -/* 'Zs': General Category */ -static const OnigCodePoint CR_Zs[] = { - 8, - 0x0020, 0x0020, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x180e, 0x180e, - 0x2000, 0x200a, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000, -}; /* CR_Zs */ +/* 'Lower': [[:Lower:]] */ +#define CR_Lower CR_Lowercase -/* 'Common': Script */ -static const OnigCodePoint CR_Common[] = { - 137, - 0x0000, 0x0040, - 0x005b, 0x0060, - 0x007b, 0x00a9, - 0x00ab, 0x00b9, - 0x00bb, 0x00bf, - 0x00d7, 0x00d7, - 0x00f7, 0x00f7, - 0x02b9, 0x02df, - 0x02e5, 0x02ff, - 0x0374, 0x0374, - 0x037e, 0x037e, - 0x0385, 0x0385, - 0x0387, 0x0387, - 0x0589, 0x0589, +/* 'Print': [[:Print:]] */ +static const OnigCodePoint CR_Print[] = { + 487, + 0x0020, 0x007e, + 0x00a0, 0x0377, + 0x037a, 0x037e, + 0x0384, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x055f, + 0x0561, 0x0587, + 0x0589, 0x058a, + 0x0591, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f4, 0x0600, 0x0603, - 0x060c, 0x060c, - 0x061b, 0x061b, - 0x061f, 0x061f, - 0x0640, 0x0640, - 0x0660, 0x0669, - 0x06dd, 0x06dd, - 0x0964, 0x0965, - 0x0970, 0x0970, + 0x0606, 0x061b, + 0x061e, 0x061f, + 0x0621, 0x065e, + 0x0660, 0x070d, + 0x070f, 0x074a, + 0x074d, 0x07b1, + 0x07c0, 0x07fa, + 0x0800, 0x082d, + 0x0830, 0x083e, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0972, + 0x0979, 0x097f, + 0x0981, 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, 0x0aef, + 0x0af1, 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, 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, 0x0bfa, + 0x0c01, 0x0c03, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c78, 0x0c7f, + 0x0c82, 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, - 0x0e3f, 0x0e3f, - 0x10fb, 0x10fb, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x1802, 0x1803, - 0x1805, 0x1805, - 0x2000, 0x200b, - 0x200e, 0x2064, - 0x206a, 0x2070, - 0x2074, 0x207e, - 0x2080, 0x208e, - 0x20a0, 0x20b5, - 0x2100, 0x2125, - 0x2127, 0x2129, - 0x212c, 0x2131, - 0x2133, 0x214d, - 0x214f, 0x214f, - 0x2153, 0x215f, - 0x2190, 0x23e7, + 0x0d02, 0x0d03, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4d, + 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, + 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, 0x0edd, + 0x0f00, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fbe, 0x0fcc, + 0x0fce, 0x0fd8, + 0x1000, 0x10c5, + 0x10d0, 0x10fc, + 0x1100, 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, 0x137c, + 0x1380, 0x1399, + 0x13a0, 0x13f4, + 0x1400, 0x169c, + 0x16a0, 0x16f0, + 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, 0x191c, + 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, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b7c, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c37, + 0x1c3b, 0x1c49, + 0x1c4d, 0x1c7f, + 0x1cd0, 0x1cf2, + 0x1d00, 0x1de6, + 0x1dfd, 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, + 0x206a, 0x2071, + 0x2074, 0x208e, + 0x2090, 0x2094, + 0x20a0, 0x20b8, + 0x20d0, 0x20f0, + 0x2100, 0x2189, + 0x2190, 0x23e8, 0x2400, 0x2426, 0x2440, 0x244a, - 0x2460, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, + 0x2460, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, 0x2701, 0x2704, 0x2706, 0x2709, 0x270c, 0x2727, 0x2729, 0x274b, 0x274d, 0x274d, 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, + 0x2756, 0x275e, 0x2761, 0x2794, 0x2798, 0x27af, 0x27b1, 0x27be, 0x27c0, 0x27ca, 0x27cc, 0x27cc, - 0x27d0, 0x27ff, - 0x2900, 0x2b4c, - 0x2b50, 0x2b54, - 0x2e00, 0x2e30, + 0x27d0, 0x2b4c, + 0x2b50, 0x2b59, + 0x2c00, 0x2c2e, + 0x2c30, 0x2c5e, + 0x2c60, 0x2cf1, + 0x2cf9, 0x2d25, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, + 0x2d80, 0x2d96, + 0x2da0, 0x2da6, + 0x2da8, 0x2dae, + 0x2db0, 0x2db6, + 0x2db8, 0x2dbe, + 0x2dc0, 0x2dc6, + 0x2dc8, 0x2dce, + 0x2dd0, 0x2dd6, + 0x2dd8, 0x2dde, + 0x2de0, 0x2e31, + 0x2e80, 0x2e99, + 0x2e9b, 0x2ef3, + 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, - 0x3000, 0x3004, - 0x3006, 0x3006, - 0x3008, 0x3020, - 0x3030, 0x3037, - 0x303c, 0x303f, - 0x309b, 0x309c, - 0x30a0, 0x30a0, - 0x30fb, 0x30fc, - 0x3190, 0x319f, + 0x3000, 0x303f, + 0x3041, 0x3096, + 0x3099, 0x30ff, + 0x3105, 0x312d, + 0x3131, 0x318e, + 0x3190, 0x31b7, 0x31c0, 0x31e3, - 0x3220, 0x3243, - 0x3250, 0x325f, - 0x327f, 0x32cf, - 0x3358, 0x33ff, - 0x4dc0, 0x4dff, - 0xa700, 0xa721, - 0xa788, 0xa78a, - 0xfd3e, 0xfd3f, - 0xfdfd, 0xfdfd, - 0xfe10, 0xfe19, + 0x31f0, 0x321e, + 0x3220, 0x32fe, + 0x3300, 0x4db5, + 0x4dc0, 0x9fcb, + 0xa000, 0xa48c, + 0xa490, 0xa4c6, + 0xa4d0, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa673, + 0xa67c, 0xa697, + 0xa6a0, 0xa6f7, + 0xa700, 0xa78c, + 0xa7fb, 0xa82b, + 0xa830, 0xa839, + 0xa840, 0xa877, + 0xa880, 0xa8c4, + 0xa8ce, 0xa8d9, + 0xa8e0, 0xa8fb, + 0xa900, 0xa953, + 0xa95f, 0xa97c, + 0xa980, 0xa9cd, + 0xa9cf, 0xa9d9, + 0xa9de, 0xa9df, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa5c, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadf, + 0xabc0, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xe000, 0xfa2d, + 0xfa30, 0xfa6d, + 0xfa70, 0xfad9, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xfb1d, 0xfb36, + 0xfb38, 0xfb3c, + 0xfb3e, 0xfb3e, + 0xfb40, 0xfb41, + 0xfb43, 0xfb44, + 0xfb46, 0xfbb1, + 0xfbd3, 0xfd3f, + 0xfd50, 0xfd8f, + 0xfd92, 0xfdc7, + 0xfdf0, 0xfdfd, + 0xfe00, 0xfe19, + 0xfe20, 0xfe26, 0xfe30, 0xfe52, 0xfe54, 0xfe66, 0xfe68, 0xfe6b, + 0xfe70, 0xfe74, + 0xfe76, 0xfefc, 0xfeff, 0xfeff, - 0xff01, 0xff20, - 0xff3b, 0xff40, - 0xff5b, 0xff65, - 0xff70, 0xff70, - 0xff9e, 0xff9f, + 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, 0x1013f, + 0x10137, 0x1018a, 0x10190, 0x1019b, - 0x101d0, 0x101fc, + 0x101d0, 0x101fd, + 0x10280, 0x1029c, + 0x102a0, 0x102d0, + 0x10300, 0x1031e, + 0x10320, 0x10323, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x1039f, 0x103c3, + 0x103c8, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10857, 0x1085f, + 0x10900, 0x1091b, + 0x1091f, 0x10939, + 0x1093f, 0x1093f, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a47, + 0x10a50, 0x10a58, + 0x10a60, 0x10a7f, + 0x10b00, 0x10b35, + 0x10b39, 0x10b55, + 0x10b58, 0x10b72, + 0x10b78, 0x10b7f, + 0x10c00, 0x10c48, + 0x10e60, 0x10e7e, + 0x11080, 0x110c1, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x12470, 0x12473, + 0x13000, 0x1342e, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, - 0x1d129, 0x1d166, - 0x1d16a, 0x1d17a, - 0x1d183, 0x1d184, - 0x1d18c, 0x1d1a9, - 0x1d1ae, 0x1d1dd, + 0x1d129, 0x1d1dd, + 0x1d200, 0x1d245, 0x1d300, 0x1d356, 0x1d360, 0x1d371, 0x1d400, 0x1d454, @@ -8343,62 +15064,332 @@ static const OnigCodePoint CR_Common[] = { 0x1d7ce, 0x1d7ff, 0x1f000, 0x1f02b, 0x1f030, 0x1f093, + 0x1f100, 0x1f10a, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, 0xe0001, 0xe0001, 0xe0020, 0xe007f, -}; /* CR_Common */ + 0xe0100, 0xe01ef, + 0xf0000, 0xffffd, + 0x100000, 0x10fffd, +}; /* CR_Print */ + +/* 'Punct': [[:Punct:]] */ +#define CR_Punct CR_P + +/* 'Space': [[:Space:]] */ +#define CR_Space CR_White_Space -/* 'Latin': Script */ -static const OnigCodePoint CR_Latin[] = { - 29, +/* 'Upper': [[:Upper:]] */ +#define CR_Upper CR_Uppercase + +/* 'XDigit': [[:XDigit:]] */ +#define CR_XDigit CR_ASCII_Hex_Digit + +/* 'Word': [[:Word:]] */ +static const OnigCodePoint CR_Word[] = { + 506, + 0x0030, 0x0039, 0x0041, 0x005a, + 0x005f, 0x005f, 0x0061, 0x007a, 0x00aa, 0x00aa, + 0x00b5, 0x00b5, 0x00ba, 0x00ba, 0x00c0, 0x00d6, 0x00d8, 0x00f6, - 0x00f8, 0x02b8, + 0x00f8, 0x02c1, + 0x02c6, 0x02d1, 0x02e0, 0x02e4, - 0x1d00, 0x1d25, - 0x1d2c, 0x1d5c, - 0x1d62, 0x1d65, - 0x1d6b, 0x1d77, - 0x1d79, 0x1dbe, - 0x1e00, 0x1eff, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x2094, - 0x212a, 0x212b, - 0x2132, 0x2132, - 0x214e, 0x214e, - 0x2160, 0x2188, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0xa722, 0xa787, - 0xa78b, 0xa78c, - 0xa7fb, 0xa7ff, - 0xfb00, 0xfb06, - 0xff21, 0xff3a, - 0xff41, 0xff5a, -}; /* CR_Latin */ - -/* 'Greek': Script */ -static const OnigCodePoint CR_Greek[] = { - 33, - 0x0370, 0x0373, - 0x0375, 0x0377, + 0x02ec, 0x02ec, + 0x02ee, 0x02ee, + 0x0300, 0x0374, + 0x0376, 0x0377, 0x037a, 0x037d, - 0x0384, 0x0384, 0x0386, 0x0386, 0x0388, 0x038a, 0x038c, 0x038c, 0x038e, 0x03a1, - 0x03a3, 0x03e1, - 0x03f0, 0x03ff, - 0x1d26, 0x1d2a, - 0x1d5d, 0x1d61, - 0x1d66, 0x1d6a, - 0x1dbf, 0x1dbf, - 0x1f00, 0x1f15, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x0483, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0610, 0x061a, + 0x0621, 0x065e, + 0x0660, 0x0669, + 0x066e, 0x06d3, + 0x06d5, 0x06dc, + 0x06de, 0x06e8, + 0x06ea, 0x06fc, + 0x06ff, 0x06ff, + 0x0710, 0x074a, + 0x074d, 0x07b1, + 0x07c0, 0x07f5, + 0x07fa, 0x07fa, + 0x0800, 0x082d, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0963, + 0x0966, 0x096f, + 0x0971, 0x0972, + 0x0979, 0x097f, + 0x0981, 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, + 0x0c01, 0x0c03, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c82, 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, + 0x0d02, 0x0d03, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4d, + 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, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f18, 0x0f19, + 0x0f20, 0x0f29, + 0x0f35, 0x0f35, + 0x0f37, 0x0f37, + 0x0f39, 0x0f39, + 0x0f3e, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f84, + 0x0f86, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fc6, 0x0fc6, + 0x1000, 0x1049, + 0x1050, 0x109d, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, 0x16f0, + 0x1700, 0x170c, + 0x170e, 0x1714, + 0x1720, 0x1734, + 0x1740, 0x1753, + 0x1760, 0x176c, + 0x176e, 0x1770, + 0x1772, 0x1773, + 0x1780, 0x17b3, + 0x17b6, 0x17d3, + 0x17d7, 0x17d7, + 0x17dc, 0x17dd, + 0x17e0, 0x17e9, + 0x180b, 0x180d, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18aa, + 0x18b0, 0x18f5, + 0x1900, 0x191c, + 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, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b59, + 0x1b6b, 0x1b73, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c37, + 0x1c40, 0x1c49, + 0x1c4d, 0x1c7d, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1cf2, + 0x1d00, 0x1de6, + 0x1dfd, 0x1f15, 0x1f18, 0x1f1d, 0x1f20, 0x1f45, 0x1f48, 0x1f4d, @@ -8408,105 +15399,284 @@ static const OnigCodePoint CR_Greek[] = { 0x1f5d, 0x1f5d, 0x1f5f, 0x1f7d, 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, + 0x1fb6, 0x1fbc, + 0x1fbe, 0x1fbe, + 0x1fc2, 0x1fc4, + 0x1fc6, 0x1fcc, + 0x1fd0, 0x1fd3, 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, + 0x1fe0, 0x1fec, 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, + 0x1ff6, 0x1ffc, + 0x203f, 0x2040, + 0x2054, 0x2054, + 0x2071, 0x2071, + 0x207f, 0x207f, + 0x2090, 0x2094, + 0x20d0, 0x20f0, + 0x2102, 0x2102, + 0x2107, 0x2107, + 0x210a, 0x2113, + 0x2115, 0x2115, + 0x2119, 0x211d, + 0x2124, 0x2124, 0x2126, 0x2126, - 0x10140, 0x1018a, - 0x1d200, 0x1d245, -}; /* CR_Greek */ - -/* 'Cyrillic': Script */ -static const OnigCodePoint CR_Cyrillic[] = { - 7, - 0x0400, 0x0523, - 0x1d2b, 0x1d2b, - 0x1d78, 0x1d78, + 0x2128, 0x2128, + 0x212a, 0x212d, + 0x212f, 0x2139, + 0x213c, 0x213f, + 0x2145, 0x2149, + 0x214e, 0x214e, + 0x2160, 0x2188, + 0x24b6, 0x24e9, + 0x2c00, 0x2c2e, + 0x2c30, 0x2c5e, + 0x2c60, 0x2ce4, + 0x2ceb, 0x2cf1, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 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, 0x302f, + 0x3031, 0x3035, + 0x3038, 0x303c, + 0x3041, 0x3096, + 0x3099, 0x309a, + 0x309d, 0x309f, + 0x30a1, 0x30fa, + 0x30fc, 0x30ff, + 0x3105, 0x312d, + 0x3131, 0x318e, + 0x31a0, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa62b, 0xa640, 0xa65f, - 0xa662, 0xa673, - 0xa67c, 0xa697, -}; /* CR_Cyrillic */ - -/* 'Armenian': Script */ -static const OnigCodePoint CR_Armenian[] = { - 5, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x058a, 0x058a, + 0xa662, 0xa672, + 0xa67c, 0xa67d, + 0xa67f, 0xa697, + 0xa6a0, 0xa6f1, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 0xa827, + 0xa840, 0xa873, + 0xa880, 0xa8c4, + 0xa8d0, 0xa8d9, + 0xa8e0, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa900, 0xa92d, + 0xa930, 0xa953, + 0xa960, 0xa97c, + 0xa980, 0xa9c0, + 0xa9cf, 0xa9d9, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabea, + 0xabec, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 0xfa6d, + 0xfa70, 0xfad9, + 0xfb00, 0xfb06, 0xfb13, 0xfb17, -}; /* CR_Armenian */ - -/* 'Hebrew': Script */ -static const OnigCodePoint CR_Hebrew[] = { - 9, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0xfb1d, 0xfb36, + 0xfb1d, 0xfb28, + 0xfb2a, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44, - 0xfb46, 0xfb4f, -}; /* CR_Hebrew */ - -/* 'Arabic': Script */ -static const OnigCodePoint CR_Arabic[] = { - 17, - 0x0606, 0x060b, - 0x060d, 0x061a, - 0x061e, 0x061e, - 0x0621, 0x063f, - 0x0641, 0x064a, - 0x0656, 0x065e, - 0x066a, 0x066f, - 0x0671, 0x06dc, - 0x06de, 0x06ff, - 0x0750, 0x077f, - 0xfb50, 0xfbb1, + 0xfb46, 0xfbb1, 0xfbd3, 0xfd3d, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfc, + 0xfdf0, 0xfdfb, + 0xfe00, 0xfe0f, + 0xfe20, 0xfe26, + 0xfe33, 0xfe34, + 0xfe4d, 0xfe4f, 0xfe70, 0xfe74, 0xfe76, 0xfefc, -}; /* CR_Arabic */ - -/* 'Syriac': Script */ -static const OnigCodePoint CR_Syriac[] = { - 3, - 0x0700, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x074f, -}; /* CR_Syriac */ - -/* 'Thaana': Script */ -static const OnigCodePoint CR_Thaana[] = { - 1, - 0x0780, 0x07b1, -}; /* CR_Thaana */ + 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, + 0x10300, 0x1031e, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11080, 0x110ba, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, + 0xe0100, 0xe01ef, +}; /* CR_Word */ -/* 'Devanagari': Script */ -static const OnigCodePoint CR_Devanagari[] = { - 8, - 0x0901, 0x0939, - 0x093c, 0x094d, +/* 'Alnum': [[:Alnum:]] */ +static const OnigCodePoint CR_Alnum[] = { + 497, + 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, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x05b0, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0610, 0x061a, + 0x0621, 0x0657, + 0x0659, 0x065e, + 0x0660, 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, + 0x0900, 0x0939, + 0x093d, 0x094c, + 0x094e, 0x094e, 0x0950, 0x0950, - 0x0953, 0x0954, + 0x0955, 0x0955, 0x0958, 0x0963, 0x0966, 0x096f, 0x0971, 0x0972, - 0x097b, 0x097f, -}; /* CR_Devanagari */ - -/* 'Bengali': Script */ -static const OnigCodePoint CR_Bengali[] = { - 14, + 0x0979, 0x097f, 0x0981, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, @@ -8514,18 +15684,14 @@ static const OnigCodePoint CR_Bengali[] = { 0x09aa, 0x09b0, 0x09b2, 0x09b2, 0x09b6, 0x09b9, - 0x09bc, 0x09c4, + 0x09bd, 0x09c4, 0x09c7, 0x09c8, - 0x09cb, 0x09ce, + 0x09cb, 0x09cc, + 0x09ce, 0x09ce, 0x09d7, 0x09d7, 0x09dc, 0x09dd, 0x09df, 0x09e3, - 0x09e6, 0x09fa, -}; /* CR_Bengali */ - -/* 'Gurmukhi': Script */ -static const OnigCodePoint CR_Gurmukhi[] = { - 16, + 0x09e6, 0x09f1, 0x0a01, 0x0a03, 0x0a05, 0x0a0a, 0x0a0f, 0x0a10, @@ -8534,19 +15700,13 @@ static const OnigCodePoint CR_Gurmukhi[] = { 0x0a32, 0x0a33, 0x0a35, 0x0a36, 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, 0x0a3e, 0x0a42, 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, + 0x0a4b, 0x0a4c, 0x0a51, 0x0a51, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e, 0x0a66, 0x0a75, -}; /* CR_Gurmukhi */ - -/* 'Gujarati': Script */ -static const OnigCodePoint CR_Gujarati[] = { - 14, 0x0a81, 0x0a83, 0x0a85, 0x0a8d, 0x0a8f, 0x0a91, @@ -8554,18 +15714,12 @@ static const OnigCodePoint CR_Gujarati[] = { 0x0aaa, 0x0ab0, 0x0ab2, 0x0ab3, 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, + 0x0abd, 0x0ac5, 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, + 0x0acb, 0x0acc, 0x0ad0, 0x0ad0, 0x0ae0, 0x0ae3, 0x0ae6, 0x0aef, - 0x0af1, 0x0af1, -}; /* CR_Gujarati */ - -/* 'Oriya': Script */ -static const OnigCodePoint CR_Oriya[] = { - 14, 0x0b01, 0x0b03, 0x0b05, 0x0b0c, 0x0b0f, 0x0b10, @@ -8573,18 +15727,14 @@ static const OnigCodePoint CR_Oriya[] = { 0x0b2a, 0x0b30, 0x0b32, 0x0b33, 0x0b35, 0x0b39, - 0x0b3c, 0x0b44, + 0x0b3d, 0x0b44, 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, + 0x0b4b, 0x0b4c, 0x0b56, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b63, - 0x0b66, 0x0b71, -}; /* CR_Oriya */ - -/* 'Tamil': Script */ -static const OnigCodePoint CR_Tamil[] = { - 16, + 0x0b66, 0x0b6f, + 0x0b71, 0x0b71, 0x0b82, 0x0b83, 0x0b85, 0x0b8a, 0x0b8e, 0x0b90, @@ -8597,15 +15747,10 @@ static const OnigCodePoint CR_Tamil[] = { 0x0bae, 0x0bb9, 0x0bbe, 0x0bc2, 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, + 0x0bca, 0x0bcc, 0x0bd0, 0x0bd0, 0x0bd7, 0x0bd7, - 0x0be6, 0x0bfa, -}; /* CR_Tamil */ - -/* 'Telugu': Script */ -static const OnigCodePoint CR_Telugu[] = { - 14, + 0x0be6, 0x0bef, 0x0c01, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, @@ -8614,35 +15759,24 @@ static const OnigCodePoint CR_Telugu[] = { 0x0c35, 0x0c39, 0x0c3d, 0x0c44, 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, + 0x0c4a, 0x0c4c, 0x0c55, 0x0c56, 0x0c58, 0x0c59, 0x0c60, 0x0c63, 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, -}; /* CR_Telugu */ - -/* 'Kannada': Script */ -static const OnigCodePoint CR_Kannada[] = { - 13, 0x0c82, 0x0c83, 0x0c85, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, + 0x0cbd, 0x0cc4, 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, + 0x0cca, 0x0ccc, 0x0cd5, 0x0cd6, 0x0cde, 0x0cde, 0x0ce0, 0x0ce3, 0x0ce6, 0x0cef, -}; /* CR_Kannada */ - -/* 'Malayalam': Script */ -static const OnigCodePoint CR_Malayalam[] = { - 12, 0x0d02, 0x0d03, 0x0d05, 0x0d0c, 0x0d0e, 0x0d10, @@ -8650,39 +15784,25 @@ static const OnigCodePoint CR_Malayalam[] = { 0x0d2a, 0x0d39, 0x0d3d, 0x0d44, 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, + 0x0d4a, 0x0d4c, 0x0d57, 0x0d57, 0x0d60, 0x0d63, - 0x0d66, 0x0d75, - 0x0d79, 0x0d7f, -}; /* CR_Malayalam */ - -/* 'Sinhala': Script */ -static const OnigCodePoint CR_Sinhala[] = { - 11, + 0x0d66, 0x0d6f, + 0x0d7a, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, - 0x0df2, 0x0df4, -}; /* CR_Sinhala */ - -/* 'Thai': Script */ -static const OnigCodePoint CR_Thai[] = { - 2, + 0x0df2, 0x0df3, 0x0e01, 0x0e3a, - 0x0e40, 0x0e5b, -}; /* CR_Thai */ - -/* 'Lao': Script */ -static const OnigCodePoint CR_Lao[] = { - 18, + 0x0e40, 0x0e46, + 0x0e4d, 0x0e4d, + 0x0e50, 0x0e59, 0x0e81, 0x0e82, 0x0e84, 0x0e84, 0x0e87, 0x0e88, @@ -8698,77 +15818,139 @@ static const OnigCodePoint CR_Lao[] = { 0x0ebb, 0x0ebd, 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, + 0x0ecd, 0x0ecd, 0x0ed0, 0x0ed9, 0x0edc, 0x0edd, -}; /* CR_Lao */ - -/* 'Tibetan': Script */ -static const OnigCodePoint CR_Tibetan[] = { - 7, - 0x0f00, 0x0f47, + 0x0f00, 0x0f00, + 0x0f20, 0x0f29, + 0x0f40, 0x0f47, 0x0f49, 0x0f6c, - 0x0f71, 0x0f8b, + 0x0f71, 0x0f81, + 0x0f88, 0x0f8b, 0x0f90, 0x0f97, 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fd4, -}; /* CR_Tibetan */ - -/* 'Myanmar': Script */ -static const OnigCodePoint CR_Myanmar[] = { - 2, - 0x1000, 0x1099, - 0x109e, 0x109f, -}; /* CR_Myanmar */ - -/* 'Georgian': Script */ -static const OnigCodePoint CR_Georgian[] = { - 4, + 0x1000, 0x1036, + 0x1038, 0x1038, + 0x103b, 0x1049, + 0x1050, 0x1062, + 0x1065, 0x1068, + 0x106e, 0x1086, + 0x108e, 0x108e, + 0x1090, 0x1099, + 0x109c, 0x109d, 0x10a0, 0x10c5, 0x10d0, 0x10fa, 0x10fc, 0x10fc, + 0x1100, 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, 0x16f0, + 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, 0x191c, + 0x1920, 0x192b, + 0x1930, 0x1938, + 0x1946, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19b0, 0x19c9, + 0x19d0, 0x19da, + 0x1a00, 0x1a1b, + 0x1a20, 0x1a5e, + 0x1a61, 0x1a74, + 0x1a80, 0x1a89, + 0x1a90, 0x1a99, + 0x1aa7, 0x1aa7, + 0x1b00, 0x1b33, + 0x1b35, 0x1b43, + 0x1b45, 0x1b4b, + 0x1b50, 0x1b59, + 0x1b80, 0x1ba9, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c35, + 0x1c40, 0x1c49, + 0x1c4d, 0x1c7d, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf2, + 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, 0x2094, + 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, 0x2d00, 0x2d25, -}; /* CR_Georgian */ - -/* 'Hangul': Script */ -static const OnigCodePoint CR_Hangul[] = { - 12, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x3131, 0x318e, - 0x3200, 0x321e, - 0x3260, 0x327e, - 0xac00, 0xd7a3, - 0xffa0, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, -}; /* CR_Hangul */ - -/* 'Ethiopic': Script */ -static const OnigCodePoint CR_Ethiopic[] = { - 27, - 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, - 0x135f, 0x137c, - 0x1380, 0x1399, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, 0x2d80, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, @@ -8778,194 +15960,87 @@ static const OnigCodePoint CR_Ethiopic[] = { 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, -}; /* CR_Ethiopic */ - -/* 'Cherokee': Script */ -static const OnigCodePoint CR_Cherokee[] = { - 1, - 0x13a0, 0x13f4, -}; /* CR_Cherokee */ - -/* 'Canadian_Aboriginal': Script */ -static const OnigCodePoint CR_Canadian_Aboriginal[] = { - 1, - 0x1401, 0x1676, -}; /* CR_Canadian_Aboriginal */ - -/* 'Ogham': Script */ -static const OnigCodePoint CR_Ogham[] = { - 1, - 0x1680, 0x169c, -}; /* CR_Ogham */ - -/* 'Runic': Script */ -static const OnigCodePoint CR_Runic[] = { - 2, - 0x16a0, 0x16ea, - 0x16ee, 0x16f0, -}; /* CR_Runic */ - -/* 'Khmer': Script */ -static const OnigCodePoint CR_Khmer[] = { - 4, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x19e0, 0x19ff, -}; /* CR_Khmer */ - -/* 'Mongolian': Script */ -static const OnigCodePoint CR_Mongolian[] = { - 6, - 0x1800, 0x1801, - 0x1804, 0x1804, - 0x1806, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, -}; /* CR_Mongolian */ - -/* 'Hiragana': Script */ -static const OnigCodePoint CR_Hiragana[] = { - 2, + 0x2de0, 0x2dff, + 0x2e2f, 0x2e2f, + 0x3005, 0x3007, + 0x3021, 0x3029, + 0x3031, 0x3035, + 0x3038, 0x303c, 0x3041, 0x3096, 0x309d, 0x309f, -}; /* CR_Hiragana */ - -/* 'Katakana': Script */ -static const OnigCodePoint CR_Katakana[] = { - 7, 0x30a1, 0x30fa, - 0x30fd, 0x30ff, - 0x31f0, 0x31ff, - 0x32d0, 0x32fe, - 0x3300, 0x3357, - 0xff66, 0xff6f, - 0xff71, 0xff9d, -}; /* CR_Katakana */ - -/* 'Bopomofo': Script */ -static const OnigCodePoint CR_Bopomofo[] = { - 2, + 0x30fc, 0x30ff, 0x3105, 0x312d, + 0x3131, 0x318e, 0x31a0, 0x31b7, -}; /* CR_Bopomofo */ - -/* 'Han': Script */ -static const OnigCodePoint CR_Han[] = { - 14, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x3005, 0x3005, - 0x3007, 0x3007, - 0x3021, 0x3029, - 0x3038, 0x303b, + 0x31f0, 0x31ff, 0x3400, 0x4db5, - 0x4e00, 0x9fc3, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa67f, 0xa697, + 0xa6a0, 0xa6ef, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 0xa801, + 0xa803, 0xa805, + 0xa807, 0xa80a, + 0xa80c, 0xa827, + 0xa840, 0xa873, + 0xa880, 0xa8c3, + 0xa8d0, 0xa8d9, + 0xa8f2, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa900, 0xa92a, + 0xa930, 0xa952, + 0xa960, 0xa97c, + 0xa980, 0xa9bf, + 0xa9cf, 0xa9d9, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaabe, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabea, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, + 0xfa30, 0xfa6d, 0xfa70, 0xfad9, - 0x20000, 0x2a6d6, - 0x2f800, 0x2fa1d, -}; /* CR_Han */ - -/* 'Yi': Script */ -static const OnigCodePoint CR_Yi[] = { - 2, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, -}; /* CR_Yi */ - -/* 'Old_Italic': Script */ -static const OnigCodePoint CR_Old_Italic[] = { - 2, - 0x10300, 0x1031e, - 0x10320, 0x10323, -}; /* CR_Old_Italic */ - -/* 'Gothic': Script */ -static const OnigCodePoint CR_Gothic[] = { - 1, - 0x10330, 0x1034a, -}; /* CR_Gothic */ - -/* 'Deseret': Script */ -static const OnigCodePoint CR_Deseret[] = { - 1, - 0x10400, 0x1044f, -}; /* CR_Deseret */ - -/* 'Inherited': Script */ -static const OnigCodePoint CR_Inherited[] = { - 18, - 0x0300, 0x036f, - 0x064b, 0x0655, - 0x0670, 0x0670, - 0x0951, 0x0952, - 0x1dc0, 0x1de6, - 0x1dfe, 0x1dff, - 0x200c, 0x200d, - 0x20d0, 0x20f0, - 0x302a, 0x302f, - 0x3099, 0x309a, - 0xfe00, 0xfe0f, - 0xfe20, 0xfe26, - 0x101fd, 0x101fd, - 0x1d167, 0x1d169, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0xe0100, 0xe01ef, -}; /* CR_Inherited */ - -/* 'Tagalog': Script */ -static const OnigCodePoint CR_Tagalog[] = { - 2, - 0x1700, 0x170c, - 0x170e, 0x1714, -}; /* CR_Tagalog */ - -/* 'Hanunoo': Script */ -static const OnigCodePoint CR_Hanunoo[] = { - 1, - 0x1720, 0x1734, -}; /* CR_Hanunoo */ - -/* 'Buhid': Script */ -static const OnigCodePoint CR_Buhid[] = { - 1, - 0x1740, 0x1753, -}; /* CR_Buhid */ - -/* 'Tagbanwa': Script */ -static const OnigCodePoint CR_Tagbanwa[] = { - 3, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, -}; /* CR_Tagbanwa */ - -/* 'Limbu': Script */ -static const OnigCodePoint CR_Limbu[] = { - 5, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x194f, -}; /* CR_Limbu */ - -/* 'Tai_Le': Script */ -static const OnigCodePoint CR_Tai_Le[] = { - 2, - 0x1950, 0x196d, - 0x1970, 0x1974, -}; /* CR_Tai_Le */ - -/* 'Linear_B': Script */ -static const OnigCodePoint CR_Linear_B[] = { - 7, + 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, @@ -8973,219 +16048,80 @@ static const OnigCodePoint CR_Linear_B[] = { 0x1003f, 0x1004d, 0x10050, 0x1005d, 0x10080, 0x100fa, -}; /* CR_Linear_B */ - -/* 'Ugaritic': Script */ -static const OnigCodePoint CR_Ugaritic[] = { - 2, + 0x10140, 0x10174, + 0x10280, 0x1029c, + 0x102a0, 0x102d0, + 0x10300, 0x1031e, + 0x10330, 0x1034a, 0x10380, 0x1039d, - 0x1039f, 0x1039f, -}; /* CR_Ugaritic */ - -/* 'Shavian': Script */ -static const OnigCodePoint CR_Shavian[] = { - 1, - 0x10450, 0x1047f, -}; /* CR_Shavian */ - -/* 'Osmanya': Script */ -static const OnigCodePoint CR_Osmanya[] = { - 2, - 0x10480, 0x1049d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, 0x104a0, 0x104a9, -}; /* CR_Osmanya */ - -/* 'Cypriot': Script */ -static const OnigCodePoint CR_Cypriot[] = { - 6, 0x10800, 0x10805, 0x10808, 0x10808, 0x1080a, 0x10835, 0x10837, 0x10838, 0x1083c, 0x1083c, - 0x1083f, 0x1083f, -}; /* CR_Cypriot */ - -/* 'Braille': Script */ -static const OnigCodePoint CR_Braille[] = { - 1, - 0x2800, 0x28ff, -}; /* CR_Braille */ - -/* 'Buginese': Script */ -static const OnigCodePoint CR_Buginese[] = { - 2, - 0x1a00, 0x1a1b, - 0x1a1e, 0x1a1f, -}; /* CR_Buginese */ - -/* 'Coptic': Script */ -static const OnigCodePoint CR_Coptic[] = { - 3, - 0x03e2, 0x03ef, - 0x2c80, 0x2cea, - 0x2cf9, 0x2cff, -}; /* CR_Coptic */ - -/* 'New_Tai_Lue': Script */ -static const OnigCodePoint CR_New_Tai_Lue[] = { - 4, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x19de, 0x19df, -}; /* CR_New_Tai_Lue */ - -/* 'Glagolitic': Script */ -static const OnigCodePoint CR_Glagolitic[] = { - 2, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, -}; /* CR_Glagolitic */ - -/* 'Tifinagh': Script */ -static const OnigCodePoint CR_Tifinagh[] = { - 2, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, -}; /* CR_Tifinagh */ - -/* 'Syloti_Nagri': Script */ -static const OnigCodePoint CR_Syloti_Nagri[] = { - 1, - 0xa800, 0xa82b, -}; /* CR_Syloti_Nagri */ - -/* 'Old_Persian': Script */ -static const OnigCodePoint CR_Old_Persian[] = { - 2, - 0x103a0, 0x103c3, - 0x103c8, 0x103d5, -}; /* CR_Old_Persian */ - -/* 'Kharoshthi': Script */ -static const OnigCodePoint CR_Kharoshthi[] = { - 8, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, 0x10a00, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, -}; /* CR_Kharoshthi */ - -/* 'Balinese': Script */ -static const OnigCodePoint CR_Balinese[] = { - 2, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, -}; /* CR_Balinese */ - -/* 'Cuneiform': Script */ -static const OnigCodePoint CR_Cuneiform[] = { - 3, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11082, 0x110b8, 0x12000, 0x1236e, 0x12400, 0x12462, - 0x12470, 0x12473, -}; /* CR_Cuneiform */ - -/* 'Phoenician': Script */ -static const OnigCodePoint CR_Phoenician[] = { - 2, - 0x10900, 0x10919, - 0x1091f, 0x1091f, -}; /* CR_Phoenician */ - -/* 'Phags_Pa': Script */ -static const OnigCodePoint CR_Phags_Pa[] = { - 1, - 0xa840, 0xa877, -}; /* CR_Phags_Pa */ - -/* 'Nko': Script */ -static const OnigCodePoint CR_Nko[] = { - 1, - 0x07c0, 0x07fa, -}; /* CR_Nko */ - -/* 'Sundanese': Script */ -static const OnigCodePoint CR_Sundanese[] = { - 2, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, -}; /* CR_Sundanese */ - -/* 'Lepcha': Script */ -static const OnigCodePoint CR_Lepcha[] = { - 3, - 0x1c00, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c4f, -}; /* CR_Lepcha */ - -/* 'Ol_Chiki': Script */ -static const OnigCodePoint CR_Ol_Chiki[] = { - 1, - 0x1c50, 0x1c7f, -}; /* CR_Ol_Chiki */ - -/* 'Vai': Script */ -static const OnigCodePoint CR_Vai[] = { - 1, - 0xa500, 0xa62b, -}; /* CR_Vai */ - -/* 'Saurashtra': Script */ -static const OnigCodePoint CR_Saurashtra[] = { - 2, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, -}; /* CR_Saurashtra */ - -/* 'Kayah_Li': Script */ -static const OnigCodePoint CR_Kayah_Li[] = { - 1, - 0xa900, 0xa92f, -}; /* CR_Kayah_Li */ - -/* 'Rejang': Script */ -static const OnigCodePoint CR_Rejang[] = { - 2, - 0xa930, 0xa953, - 0xa95f, 0xa95f, -}; /* CR_Rejang */ - -/* 'Lycian': Script */ -static const OnigCodePoint CR_Lycian[] = { - 1, - 0x10280, 0x1029c, -}; /* CR_Lycian */ + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Alnum */ -/* 'Carian': Script */ -static const OnigCodePoint CR_Carian[] = { +/* 'ASCII': [[:ASCII:]] */ +static const OnigCodePoint CR_ASCII[] = { 1, - 0x102a0, 0x102d0, -}; /* CR_Carian */ - -/* 'Lydian': Script */ -static const OnigCodePoint CR_Lydian[] = { - 2, - 0x10920, 0x10939, - 0x1093f, 0x1093f, -}; /* CR_Lydian */ - -/* 'Cham': Script */ -static const OnigCodePoint CR_Cham[] = { - 4, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa5f, -}; /* CR_Cham */ -#endif /* USE_UNICODE_PROPERTIES */ - + 0x0000, 0x007f, +}; /* CR_ASCII */ static const OnigCodePoint* const CodeRanges[] = { CR_NEWLINE, @@ -9243,6 +16179,25 @@ static const OnigCodePoint* const CodeRanges[] = { 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, @@ -9320,6 +16275,53 @@ static const OnigCodePoint* const CodeRanges[] = { 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_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, #endif /* USE_UNICODE_PROPERTIES */ }; struct uniname2ctype_struct { @@ -9330,138 +16332,374 @@ static const struct uniname2ctype_struct *uniname2ctype_p(const char *, unsigned %} struct uniname2ctype_struct; %% -newline, 0 -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 +newline, 0 +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 #ifdef USE_UNICODE_PROPERTIES -any, 15 -assigned, 16 -c, 17 -cc, 18 -cf, 19 -cn, 20 -co, 21 -cs, 22 -l, 23 -ll, 24 -lm, 25 -lo, 26 -lt, 27 -lu, 28 -m, 29 -mc, 30 -me, 31 -mn, 32 -n, 33 -nd, 34 -nl, 35 -no, 36 -p, 37 -pc, 38 -pd, 39 -pe, 40 -pf, 41 -pi, 42 -po, 43 -ps, 44 -s, 45 -sc, 46 -sk, 47 -sm, 48 -so, 49 -z, 50 -zl, 51 -zp, 52 -zs, 53 -common, 54 -latin, 55 -greek, 56 -cyrillic, 57 -armenian, 58 -hebrew, 59 -arabic, 60 -syriac, 61 -thaana, 62 -devanagari, 63 -bengali, 64 -gurmukhi, 65 -gujarati, 66 -oriya, 67 -tamil, 68 -telugu, 69 -kannada, 70 -malayalam, 71 -sinhala, 72 -thai, 73 -lao, 74 -tibetan, 75 -myanmar, 76 -georgian, 77 -hangul, 78 -ethiopic, 79 -cherokee, 80 -canadianaboriginal, 81 -ogham, 82 -runic, 83 -khmer, 84 -mongolian, 85 -hiragana, 86 -katakana, 87 -bopomofo, 88 -han, 89 -yi, 90 -olditalic, 91 -gothic, 92 -deseret, 93 -inherited, 94 -tagalog, 95 -hanunoo, 96 -buhid, 97 -tagbanwa, 98 -limbu, 99 -taile, 100 -linearb, 101 -ugaritic, 102 -shavian, 103 -osmanya, 104 -cypriot, 105 -braille, 106 -buginese, 107 -coptic, 108 -newtailue, 109 -glagolitic, 110 -tifinagh, 111 -sylotinagri, 112 -oldpersian, 113 -kharoshthi, 114 -balinese, 115 -cuneiform, 116 -phoenician, 117 -phagspa, 118 -nko, 119 -sundanese, 120 -lepcha, 121 -olchiki, 122 -vai, 123 -saurashtra, 124 -kayahli, 125 -rejang, 126 -lycian, 127 -carian, 128 -lydian, 129 -cham, 130 +any, 15 +assigned, 16 +c, 17 +cc, 18 +cf, 19 +cn, 20 +co, 21 +cs, 22 +l, 23 +ll, 24 +lm, 25 +lo, 26 +lt, 27 +lu, 28 +m, 29 +mc, 30 +me, 31 +mn, 32 +n, 33 +nd, 34 +nl, 35 +no, 36 +p, 37 +pc, 38 +pd, 39 +pe, 40 +pf, 41 +pi, 42 +po, 43 +ps, 44 +s, 45 +sc, 46 +sk, 47 +sm, 48 +so, 49 +z, 50 +zl, 51 +zp, 52 +zs, 53 +math, 54 +alphabetic, 55 +lowercase, 56 +uppercase, 57 +cased, 58 +caseignorable, 59 +changeswhenlowercased, 60 +changeswhenuppercased, 61 +changeswhentitlecased, 62 +changeswhencasefolded, 63 +changeswhencasemapped, 64 +idstart, 65 +idcontinue, 66 +xidstart, 67 +xidcontinue, 68 +defaultignorablecodepoint, 69 +graphemeextend, 70 +graphemebase, 71 +graphemelink, 72 +common, 73 +latin, 74 +greek, 75 +cyrillic, 76 +armenian, 77 +hebrew, 78 +arabic, 79 +syriac, 80 +thaana, 81 +devanagari, 82 +bengali, 83 +gurmukhi, 84 +gujarati, 85 +oriya, 86 +tamil, 87 +telugu, 88 +kannada, 89 +malayalam, 90 +sinhala, 91 +thai, 92 +lao, 93 +tibetan, 94 +myanmar, 95 +georgian, 96 +hangul, 97 +ethiopic, 98 +cherokee, 99 +canadianaboriginal, 100 +ogham, 101 +runic, 102 +khmer, 103 +mongolian, 104 +hiragana, 105 +katakana, 106 +bopomofo, 107 +han, 108 +yi, 109 +olditalic, 110 +gothic, 111 +deseret, 112 +inherited, 113 +tagalog, 114 +hanunoo, 115 +buhid, 116 +tagbanwa, 117 +limbu, 118 +taile, 119 +linearb, 120 +ugaritic, 121 +shavian, 122 +osmanya, 123 +cypriot, 124 +braille, 125 +buginese, 126 +coptic, 127 +newtailue, 128 +glagolitic, 129 +tifinagh, 130 +sylotinagri, 131 +oldpersian, 132 +kharoshthi, 133 +balinese, 134 +cuneiform, 135 +phoenician, 136 +phagspa, 137 +nko, 138 +sundanese, 139 +lepcha, 140 +olchiki, 141 +vai, 142 +saurashtra, 143 +kayahli, 144 +rejang, 145 +lycian, 146 +carian, 147 +lydian, 148 +cham, 149 +taitham, 150 +taiviet, 151 +avestan, 152 +egyptianhieroglyphs, 153 +samaritan, 154 +lisu, 155 +bamum, 156 +javanese, 157 +meeteimayek, 158 +imperialaramaic, 159 +oldsoutharabian, 160 +inscriptionalparthian, 161 +inscriptionalpahlavi, 162 +oldturkic, 163 +kaithi, 164 +whitespace, 165 +bidicontrol, 166 +joincontrol, 167 +dash, 168 +hyphen, 169 +quotationmark, 170 +terminalpunctuation, 171 +othermath, 172 +hexdigit, 173 +asciihexdigit, 174 +otheralphabetic, 175 +ideographic, 176 +diacritic, 177 +extender, 178 +otherlowercase, 179 +otheruppercase, 180 +noncharactercodepoint, 181 +othergraphemeextend, 182 +idsbinaryoperator, 183 +idstrinaryoperator, 184 +radical, 185 +unifiedideograph, 186 +otherdefaultignorablecodepoint, 187 +deprecated, 188 +softdotted, 189 +logicalorderexception, 190 +otheridstart, 191 +otheridcontinue, 192 +sterm, 193 +variationselector, 194 +patternwhitespace, 195 +patternsyntax, 196 +ahex, 174 +bidic, 166 +ci, 59 +cwcf, 63 +cwcm, 64 +cwl, 60 +cwt, 62 +cwu, 61 +dep, 188 +di, 69 +dia, 177 +ext, 178 +grbase, 71 +grext, 70 +grlink, 72 +hex, 173 +idc, 66 +ideo, 176 +ids, 65 +idsb, 183 +idst, 184 +joinc, 167 +loe, 190 +nchar, 181 +oalpha, 175 +odi, 187 +ogrext, 182 +oidc, 192 +oids, 191 +olower, 179 +omath, 172 +oupper, 180 +patsyn, 196 +patws, 195 +qmark, 170 +sd, 189 +term, 171 +uideo, 186 +vs, 194 +wspace, 165 +xidc, 68 +xids, 67 +other, 17 +control, 18 +format, 19 +unassigned, 20 +privateuse, 21 +surrogate, 22 +letter, 23 +lowercaseletter, 24 +modifierletter, 25 +otherletter, 26 +titlecaseletter, 27 +uppercaseletter, 28 +mark, 29 +spacingmark, 30 +enclosingmark, 31 +nonspacingmark, 32 +number, 33 +decimalnumber, 34 +letternumber, 35 +othernumber, 36 +punctuation, 37 +connectorpunctuation, 38 +dashpunctuation, 39 +closepunctuation, 40 +finalpunctuation, 41 +initialpunctuation, 42 +otherpunctuation, 43 +openpunctuation, 44 +symbol, 45 +currencysymbol, 46 +modifiersymbol, 47 +mathsymbol, 48 +othersymbol, 49 +separator, 50 +lineseparator, 51 +paragraphseparator, 52 +spaceseparator, 53 +arab, 79 +armi, 159 +armn, 77 +avst, 152 +bali, 134 +bamu, 156 +beng, 83 +bopo, 107 +brai, 125 +bugi, 126 +buhd, 116 +cans, 100 +cari, 147 +cher, 99 +copt, 127 +qaac, 127 +cprt, 124 +cyrl, 76 +deva, 82 +dsrt, 112 +egyp, 153 +ethi, 98 +geor, 96 +glag, 129 +goth, 111 +grek, 75 +gujr, 85 +guru, 84 +hang, 97 +hani, 108 +hano, 115 +hebr, 78 +hira, 105 +ital, 110 +java, 157 +kali, 144 +kana, 106 +khar, 133 +khmr, 103 +knda, 89 +kthi, 164 +lana, 150 +laoo, 93 +latn, 74 +lepc, 140 +limb, 118 +linb, 120 +lyci, 146 +lydi, 148 +mlym, 90 +mong, 104 +mtei, 158 +mymr, 95 +nkoo, 138 +ogam, 101 +olck, 141 +orkh, 163 +orya, 86 +osma, 123 +phag, 137 +phli, 162 +phnx, 136 +prti, 161 +rjng, 145 +runr, 102 +samr, 154 +sarb, 160 +saur, 143 +shaw, 122 +sinh, 91 +sund, 139 +sylo, 131 +syrc, 80 +tagb, 117 +tale, 119 +talu, 128 +taml, 87 +tavt, 151 +telu, 88 +tfng, 130 +tglg, 114 +thaa, 81 +tibt, 94 +ugar, 121 +vaii, 142 +xpeo, 132 +xsux, 135 +yiii, 109 +zinh, 113 +qaai, 113 +zyyy, 73 #endif /* USE_UNICODE_PROPERTIES */ %% static int diff --git a/enc/unicode/name2ctype.src b/enc/unicode/name2ctype.src index cfa48fac6e48e7..ff136177cac960 100644 --- a/enc/unicode/name2ctype.src +++ b/enc/unicode/name2ctype.src @@ -1,64 +1,43 @@ %{ -/* 'NEWLINE': [[:NEWLINE:]] */ -static const OnigCodePoint CR_NEWLINE[] = { +#ifdef USE_UNICODE_PROPERTIES +/* 'Any': - */ +static const OnigCodePoint CR_Any[] = { 1, - 0x000a, 0x000a, -}; /* CR_NEWLINE */ + 0x0000, 0x10ffff, +}; /* CR_Any */ -/* 'Alpha': [[:Alpha:]] */ -static const OnigCodePoint CR_Alpha[] = { - 452, - 0x0041, 0x005a, - 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, - 0x0386, 0x0386, - 0x0388, 0x038a, +/* 'Assigned': - */ +static const OnigCodePoint CR_Assigned[] = { + 485, + 0x0000, 0x0377, + 0x037a, 0x037e, + 0x0384, 0x038a, 0x038c, 0x038c, 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x0483, 0x0523, + 0x03a3, 0x0525, 0x0531, 0x0556, - 0x0559, 0x0559, + 0x0559, 0x055f, 0x0561, 0x0587, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, + 0x0589, 0x058a, + 0x0591, 0x05c7, 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0610, 0x061a, + 0x05f0, 0x05f4, + 0x0600, 0x0603, + 0x0606, 0x061b, + 0x061e, 0x061f, 0x0621, 0x065e, - 0x066e, 0x06d3, - 0x06d5, 0x06dc, - 0x06de, 0x06e8, - 0x06ea, 0x06ef, - 0x06fa, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x074a, + 0x0660, 0x070d, + 0x070f, 0x074a, 0x074d, 0x07b1, - 0x07ca, 0x07f5, - 0x07fa, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0963, - 0x0971, 0x0972, - 0x097b, 0x097f, + 0x07c0, 0x07fa, + 0x0800, 0x082d, + 0x0830, 0x083e, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0972, + 0x0979, 0x097f, 0x0981, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, @@ -72,7 +51,7 @@ static const OnigCodePoint CR_Alpha[] = { 0x09d7, 0x09d7, 0x09dc, 0x09dd, 0x09df, 0x09e3, - 0x09f0, 0x09f1, + 0x09e6, 0x09fb, 0x0a01, 0x0a03, 0x0a05, 0x0a0a, 0x0a0f, 0x0a10, @@ -88,7 +67,7 @@ static const OnigCodePoint CR_Alpha[] = { 0x0a51, 0x0a51, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e, - 0x0a70, 0x0a75, + 0x0a66, 0x0a75, 0x0a81, 0x0a83, 0x0a85, 0x0a8d, 0x0a8f, 0x0a91, @@ -101,6 +80,8 @@ static const OnigCodePoint CR_Alpha[] = { 0x0acb, 0x0acd, 0x0ad0, 0x0ad0, 0x0ae0, 0x0ae3, + 0x0ae6, 0x0aef, + 0x0af1, 0x0af1, 0x0b01, 0x0b03, 0x0b05, 0x0b0c, 0x0b0f, 0x0b10, @@ -114,7 +95,7 @@ static const OnigCodePoint CR_Alpha[] = { 0x0b56, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b63, - 0x0b71, 0x0b71, + 0x0b66, 0x0b71, 0x0b82, 0x0b83, 0x0b85, 0x0b8a, 0x0b8e, 0x0b90, @@ -130,6 +111,7 @@ static const OnigCodePoint CR_Alpha[] = { 0x0bca, 0x0bcd, 0x0bd0, 0x0bd0, 0x0bd7, 0x0bd7, + 0x0be6, 0x0bfa, 0x0c01, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, @@ -142,6 +124,8 @@ static const OnigCodePoint CR_Alpha[] = { 0x0c55, 0x0c56, 0x0c58, 0x0c59, 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c78, 0x0c7f, 0x0c82, 0x0c83, 0x0c85, 0x0c8c, 0x0c8e, 0x0c90, @@ -154,6 +138,8 @@ static const OnigCodePoint CR_Alpha[] = { 0x0cd5, 0x0cd6, 0x0cde, 0x0cde, 0x0ce0, 0x0ce3, + 0x0ce6, 0x0cef, + 0x0cf1, 0x0cf2, 0x0d02, 0x0d03, 0x0d05, 0x0d0c, 0x0d0e, 0x0d10, @@ -164,7 +150,8 @@ static const OnigCodePoint CR_Alpha[] = { 0x0d4a, 0x0d4d, 0x0d57, 0x0d57, 0x0d60, 0x0d63, - 0x0d7a, 0x0d7f, + 0x0d66, 0x0d75, + 0x0d79, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, @@ -175,9 +162,9 @@ static const OnigCodePoint CR_Alpha[] = { 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, - 0x0df2, 0x0df3, + 0x0df2, 0x0df4, 0x0e01, 0x0e3a, - 0x0e40, 0x0e4e, + 0x0e3f, 0x0e5b, 0x0e81, 0x0e82, 0x0e84, 0x0e84, 0x0e87, 0x0e88, @@ -194,28 +181,18 @@ static const OnigCodePoint CR_Alpha[] = { 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, 0x0ec8, 0x0ecd, + 0x0ed0, 0x0ed9, 0x0edc, 0x0edd, - 0x0f00, 0x0f00, - 0x0f18, 0x0f19, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f3e, 0x0f47, + 0x0f00, 0x0f47, 0x0f49, 0x0f6c, - 0x0f71, 0x0f84, - 0x0f86, 0x0f8b, + 0x0f71, 0x0f8b, 0x0f90, 0x0f97, 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x1000, 0x103f, - 0x1050, 0x108f, - 0x10a0, 0x10c5, - 0x10d0, 0x10fa, - 0x10fc, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1200, 0x1248, + 0x0fbe, 0x0fcc, + 0x0fce, 0x0fd8, + 0x1000, 0x10c5, + 0x10d0, 0x10fc, + 0x1100, 0x1248, 0x124a, 0x124d, 0x1250, 0x1256, 0x1258, 0x1258, @@ -231,44 +208,51 @@ static const OnigCodePoint CR_Alpha[] = { 0x12d8, 0x1310, 0x1312, 0x1315, 0x1318, 0x135a, - 0x135f, 0x135f, - 0x1380, 0x138f, + 0x135f, 0x137c, + 0x1380, 0x1399, 0x13a0, 0x13f4, - 0x1401, 0x166c, - 0x166f, 0x1676, - 0x1681, 0x169a, - 0x16a0, 0x16ea, + 0x1400, 0x169c, + 0x16a0, 0x16f0, 0x1700, 0x170c, 0x170e, 0x1714, - 0x1720, 0x1734, + 0x1720, 0x1736, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17d3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dd, - 0x180b, 0x180d, + 0x1780, 0x17dd, + 0x17e0, 0x17e9, + 0x17f0, 0x17f9, + 0x1800, 0x180e, + 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18aa, + 0x18b0, 0x18f5, 0x1900, 0x191c, 0x1920, 0x192b, 0x1930, 0x193b, - 0x1950, 0x196d, + 0x1940, 0x1940, + 0x1944, 0x196d, 0x1970, 0x1974, - 0x1980, 0x19a9, + 0x1980, 0x19ab, 0x19b0, 0x19c9, - 0x1a00, 0x1a1b, + 0x19d0, 0x19da, + 0x19de, 0x1a1b, + 0x1a1e, 0x1a5e, + 0x1a60, 0x1a7c, + 0x1a7f, 0x1a89, + 0x1a90, 0x1a99, + 0x1aa0, 0x1aad, 0x1b00, 0x1b4b, - 0x1b6b, 0x1b73, + 0x1b50, 0x1b7c, 0x1b80, 0x1baa, - 0x1bae, 0x1baf, + 0x1bae, 0x1bb9, 0x1c00, 0x1c37, - 0x1c4d, 0x1c4f, - 0x1c5a, 0x1c7d, + 0x1c3b, 0x1c49, + 0x1c4d, 0x1c7f, + 0x1cd0, 0x1cf2, 0x1d00, 0x1de6, - 0x1dfe, 0x1f15, + 0x1dfd, 0x1f15, 0x1f18, 0x1f1d, 0x1f20, 0x1f45, 0x1f48, 0x1f4d, @@ -278,39 +262,44 @@ static const OnigCodePoint CR_Alpha[] = { 0x1f5d, 0x1f5d, 0x1f5f, 0x1f7d, 0x1f80, 0x1fb4, - 0x1fb6, 0x1fbc, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fcc, - 0x1fd0, 0x1fd3, + 0x1fb6, 0x1fc4, + 0x1fc6, 0x1fd3, 0x1fd6, 0x1fdb, - 0x1fe0, 0x1fec, + 0x1fdd, 0x1fef, 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffc, - 0x2071, 0x2071, - 0x207f, 0x207f, + 0x1ff6, 0x1ffe, + 0x2000, 0x2064, + 0x206a, 0x2071, + 0x2074, 0x208e, 0x2090, 0x2094, + 0x20a0, 0x20b8, 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, - 0x2183, 0x2184, + 0x2100, 0x2189, + 0x2190, 0x23e8, + 0x2400, 0x2426, + 0x2440, 0x244a, + 0x2460, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, + 0x2701, 0x2704, + 0x2706, 0x2709, + 0x270c, 0x2727, + 0x2729, 0x274b, + 0x274d, 0x274d, + 0x274f, 0x2752, + 0x2756, 0x275e, + 0x2761, 0x2794, + 0x2798, 0x27af, + 0x27b1, 0x27be, + 0x27c0, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 0x2b4c, + 0x2b50, 0x2b59, 0x2c00, 0x2c2e, 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2ce4, - 0x2d00, 0x2d25, + 0x2c60, 0x2cf1, + 0x2cf9, 0x2d25, 0x2d30, 0x2d65, 0x2d6f, 0x2d6f, 0x2d80, 0x2d96, @@ -322,72 +311,83 @@ static const OnigCodePoint CR_Alpha[] = { 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, - 0x2de0, 0x2dff, - 0x2e2f, 0x2e2f, - 0x3005, 0x3006, - 0x302a, 0x302f, - 0x3031, 0x3035, - 0x303b, 0x303c, + 0x2de0, 0x2e31, + 0x2e80, 0x2e99, + 0x2e9b, 0x2ef3, + 0x2f00, 0x2fd5, + 0x2ff0, 0x2ffb, + 0x3000, 0x303f, 0x3041, 0x3096, - 0x3099, 0x309a, - 0x309d, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, + 0x3099, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, - 0x31a0, 0x31b7, - 0x31f0, 0x31ff, - 0x3400, 0x3400, - 0x4db5, 0x4db5, - 0x4e00, 0x4e00, - 0x9fc3, 0x9fc3, + 0x3190, 0x31b7, + 0x31c0, 0x31e3, + 0x31f0, 0x321e, + 0x3220, 0x32fe, + 0x3300, 0x4db5, + 0x4dc0, 0x9fcb, 0xa000, 0xa48c, - 0xa500, 0xa60c, - 0xa610, 0xa61f, - 0xa62a, 0xa62b, + 0xa490, 0xa4c6, + 0xa4d0, 0xa62b, 0xa640, 0xa65f, - 0xa662, 0xa672, - 0xa67c, 0xa67d, - 0xa67f, 0xa697, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa78c, - 0xa7fb, 0xa827, - 0xa840, 0xa873, + 0xa662, 0xa673, + 0xa67c, 0xa697, + 0xa6a0, 0xa6f7, + 0xa700, 0xa78c, + 0xa7fb, 0xa82b, + 0xa830, 0xa839, + 0xa840, 0xa877, 0xa880, 0xa8c4, - 0xa90a, 0xa92d, - 0xa930, 0xa953, + 0xa8ce, 0xa8d9, + 0xa8e0, 0xa8fb, + 0xa900, 0xa953, + 0xa95f, 0xa97c, + 0xa980, 0xa9cd, + 0xa9cf, 0xa9d9, + 0xa9de, 0xa9df, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, + 0xaa50, 0xaa59, + 0xaa5c, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadf, + 0xabc0, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xd800, 0xfa2d, + 0xfa30, 0xfa6d, 0xfa70, 0xfad9, 0xfb00, 0xfb06, 0xfb13, 0xfb17, - 0xfb1d, 0xfb28, - 0xfb2a, 0xfb36, + 0xfb1d, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44, 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3d, + 0xfbd3, 0xfd3f, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfb, - 0xfe00, 0xfe0f, + 0xfdf0, 0xfdfd, + 0xfe00, 0xfe19, 0xfe20, 0xfe26, + 0xfe30, 0xfe52, + 0xfe54, 0xfe66, + 0xfe68, 0xfe6b, 0xfe70, 0xfe74, 0xfe76, 0xfefc, - 0xff21, 0xff3a, - 0xff41, 0xff5a, - 0xff66, 0xffbe, + 0xfeff, 0xfeff, + 0xff01, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, + 0xffe0, 0xffe6, + 0xffe8, 0xffee, + 0xfff9, 0xfffd, 0x10000, 0x1000b, 0x1000d, 0x10026, 0x10028, 0x1003a, @@ -395,38 +395,57 @@ static const OnigCodePoint CR_Alpha[] = { 0x1003f, 0x1004d, 0x10050, 0x1005d, 0x10080, 0x100fa, - 0x101fd, 0x101fd, + 0x10100, 0x10102, + 0x10107, 0x10133, + 0x10137, 0x1018a, + 0x10190, 0x1019b, + 0x101d0, 0x101fd, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x10300, 0x1031e, - 0x10330, 0x10340, - 0x10342, 0x10349, + 0x10320, 0x10323, + 0x10330, 0x1034a, 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, + 0x1039f, 0x103c3, + 0x103c8, 0x103d5, 0x10400, 0x1049d, + 0x104a0, 0x104a9, 0x10800, 0x10805, 0x10808, 0x10808, 0x1080a, 0x10835, 0x10837, 0x10838, 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10915, - 0x10920, 0x10939, + 0x1083f, 0x10855, + 0x10857, 0x1085f, + 0x10900, 0x1091b, + 0x1091f, 0x10939, + 0x1093f, 0x1093f, 0x10a00, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, + 0x10a3f, 0x10a47, + 0x10a50, 0x10a58, + 0x10a60, 0x10a7f, + 0x10b00, 0x10b35, + 0x10b39, 0x10b55, + 0x10b58, 0x10b72, + 0x10b78, 0x10b7f, + 0x10c00, 0x10c48, + 0x10e60, 0x10e7e, + 0x11080, 0x110c1, 0x12000, 0x1236e, - 0x1d165, 0x1d169, - 0x1d16d, 0x1d172, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, + 0x12400, 0x12462, + 0x12470, 0x12473, + 0x13000, 0x1342e, + 0x1d000, 0x1d0f5, + 0x1d100, 0x1d126, + 0x1d129, 0x1d1dd, + 0x1d200, 0x1d245, + 0x1d300, 0x1d356, + 0x1d360, 0x1d371, 0x1d400, 0x1d454, 0x1d456, 0x1d49c, 0x1d49e, 0x1d49f, @@ -446,3828 +465,99 @@ static const OnigCodePoint CR_Alpha[] = { 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, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, + 0x1d6a8, 0x1d7cb, + 0x1d7ce, 0x1d7ff, + 0x1f000, 0x1f02b, + 0x1f030, 0x1f093, + 0x1f100, 0x1f10a, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, 0x2f800, 0x2fa1d, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, 0xe0100, 0xe01ef, -}; /* CR_Alpha */ + 0xf0000, 0xffffd, + 0x100000, 0x10fffd, +}; /* CR_Assigned */ -/* 'Blank': [[:Blank:]] */ -static const OnigCodePoint CR_Blank[] = { - 9, - 0x0009, 0x0009, - 0x0020, 0x0020, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x180e, 0x180e, - 0x2000, 0x200a, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000, -}; /* CR_Blank */ +/* 'C': Major Category */ +static const OnigCodePoint CR_C[] = { + 20, + 0x0000, 0x001f, + 0x007f, 0x009f, + 0x00ad, 0x00ad, + 0x0600, 0x0603, + 0x06dd, 0x06dd, + 0x070f, 0x070f, + 0x17b4, 0x17b5, + 0x200b, 0x200f, + 0x202a, 0x202e, + 0x2060, 0x2064, + 0x206a, 0x206f, + 0xd800, 0xf8ff, + 0xfeff, 0xfeff, + 0xfff9, 0xfffb, + 0x110bd, 0x110bd, + 0x1d173, 0x1d17a, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, + 0xf0000, 0xffffd, + 0x100000, 0x10ffff, +}; /* CR_C */ -/* 'Cntrl': [[:Cntrl:]] */ -static const OnigCodePoint CR_Cntrl[] = { +/* 'Cc': General Category */ +static const OnigCodePoint CR_Cc[] = { 2, 0x0000, 0x001f, 0x007f, 0x009f, -}; /* CR_Cntrl */ +}; /* CR_Cc */ -/* 'Digit': [[:Digit:]] */ -static const OnigCodePoint CR_Digit[] = { - 33, - 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, - 0x0e50, 0x0e59, - 0x0ed0, 0x0ed9, - 0x0f20, 0x0f29, - 0x1040, 0x1049, - 0x1090, 0x1099, - 0x17e0, 0x17e9, - 0x1810, 0x1819, - 0x1946, 0x194f, - 0x19d0, 0x19d9, - 0x1b50, 0x1b59, - 0x1bb0, 0x1bb9, - 0x1c40, 0x1c49, - 0x1c50, 0x1c59, - 0xa620, 0xa629, - 0xa8d0, 0xa8d9, - 0xa900, 0xa909, - 0xaa50, 0xaa59, - 0xff10, 0xff19, - 0x104a0, 0x104a9, - 0x1d7ce, 0x1d7ff, -}; /* CR_Digit */ - -/* 'Graph': [[:Graph:]] */ -static const OnigCodePoint CR_Graph[] = { - 449, - 0x0021, 0x007e, - 0x00a1, 0x00ac, - 0x00ae, 0x0377, - 0x037a, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x0523, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0606, 0x061b, - 0x061e, 0x061f, - 0x0621, 0x065e, - 0x0660, 0x06dc, - 0x06de, 0x070d, - 0x0710, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0972, - 0x097b, 0x097f, - 0x0981, 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, 0x09fa, - 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, - 0x0af1, 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, 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, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, - 0x0c82, 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, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 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, - 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, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fd4, - 0x1000, 0x1099, - 0x109e, 0x10c5, - 0x10d0, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x135f, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1401, 0x1676, - 0x1681, 0x169c, - 0x16a0, 0x16f0, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180d, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a1f, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, - 0x1c00, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c7f, - 0x1d00, 0x1de6, - 0x1dfe, 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, - 0x2010, 0x2027, - 0x2030, 0x205e, - 0x2070, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x2094, - 0x20a0, 0x20b5, - 0x20d0, 0x20f0, - 0x2100, 0x214f, - 0x2153, 0x2188, - 0x2190, 0x23e7, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27ca, - 0x27cc, 0x27cc, - 0x27d0, 0x2b4c, - 0x2b50, 0x2b54, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2cea, - 0x2cf9, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e30, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3001, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31b7, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x3243, - 0x3250, 0x32fe, - 0x3300, 0x3400, - 0x4db5, 0x4db5, - 0x4dc0, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa500, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa673, - 0xa67c, 0xa697, - 0xa700, 0xa78c, - 0xa7fb, 0xa82b, - 0xa840, 0xa877, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, - 0xa900, 0xa953, - 0xa95f, 0xa95f, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa5f, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe26, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xff01, 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, 0x1018a, - 0x10190, 0x1019b, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10919, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x12000, 0x1236e, - 0x12400, 0x12462, - 0x12470, 0x12473, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d172, - 0x1d17b, 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, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0100, 0xe01ef, -}; /* CR_Graph */ - -/* 'Lower': [[:Lower:]] */ -static const OnigCodePoint CR_Lower[] = { - 598, - 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, 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, - 0x0561, 0x0587, - 0x1d00, 0x1d2b, - 0x1d62, 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, - 0x2071, 0x2071, - 0x207f, 0x207f, - 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, 0x2c7c, - 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, - 0x2d00, 0x2d25, - 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, - 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, - 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, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xff41, 0xff5a, - 0x10428, 0x1044f, - 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, -}; /* CR_Lower */ - -/* 'Print': [[:Print:]] */ -static const OnigCodePoint CR_Print[] = { - 452, - 0x0009, 0x000d, - 0x0020, 0x007e, - 0x0085, 0x0085, - 0x00a0, 0x00ac, - 0x00ae, 0x0377, - 0x037a, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x0523, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0606, 0x061b, - 0x061e, 0x061f, - 0x0621, 0x065e, - 0x0660, 0x06dc, - 0x06de, 0x070d, - 0x0710, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0972, - 0x097b, 0x097f, - 0x0981, 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, 0x09fa, - 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, - 0x0af1, 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, 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, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, - 0x0c82, 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, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 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, - 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, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fd4, - 0x1000, 0x1099, - 0x109e, 0x10c5, - 0x10d0, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x135f, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1401, 0x1676, - 0x1680, 0x169c, - 0x16a0, 0x16f0, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a1f, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, - 0x1c00, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c7f, - 0x1d00, 0x1de6, - 0x1dfe, 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, 0x2029, - 0x202f, 0x205f, - 0x2070, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x2094, - 0x20a0, 0x20b5, - 0x20d0, 0x20f0, - 0x2100, 0x214f, - 0x2153, 0x2188, - 0x2190, 0x23e7, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27ca, - 0x27cc, 0x27cc, - 0x27d0, 0x2b4c, - 0x2b50, 0x2b54, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2cea, - 0x2cf9, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e30, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31b7, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x3243, - 0x3250, 0x32fe, - 0x3300, 0x3400, - 0x4db5, 0x4db5, - 0x4dc0, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa500, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa673, - 0xa67c, 0xa697, - 0xa700, 0xa78c, - 0xa7fb, 0xa82b, - 0xa840, 0xa877, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, - 0xa900, 0xa953, - 0xa95f, 0xa95f, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa5f, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe26, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xff01, 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, 0x1018a, - 0x10190, 0x1019b, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10919, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x12000, 0x1236e, - 0x12400, 0x12462, - 0x12470, 0x12473, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d129, 0x1d172, - 0x1d17b, 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, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0100, 0xe01ef, -}; /* CR_Print */ - -/* 'Punct': [[:Punct:]] */ -static const OnigCodePoint CR_Punct[] = { - 112, - 0x0021, 0x0023, - 0x0025, 0x002a, - 0x002c, 0x002f, - 0x003a, 0x003b, - 0x003f, 0x0040, - 0x005b, 0x005d, - 0x005f, 0x005f, - 0x007b, 0x007b, - 0x007d, 0x007d, - 0x00a1, 0x00a1, - 0x00ab, 0x00ab, - 0x00b7, 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, - 0x0964, 0x0965, - 0x0970, 0x0970, - 0x0df4, 0x0df4, - 0x0e4f, 0x0e4f, - 0x0e5a, 0x0e5b, - 0x0f04, 0x0f12, - 0x0f3a, 0x0f3d, - 0x0f85, 0x0f85, - 0x0fd0, 0x0fd4, - 0x104a, 0x104f, - 0x10fb, 0x10fb, - 0x1361, 0x1368, - 0x166d, 0x166e, - 0x169b, 0x169c, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x17d4, 0x17d6, - 0x17d8, 0x17da, - 0x1800, 0x180a, - 0x1944, 0x1945, - 0x19de, 0x19df, - 0x1a1e, 0x1a1f, - 0x1b5a, 0x1b60, - 0x1c3b, 0x1c3f, - 0x1c7e, 0x1c7f, - 0x2010, 0x2027, - 0x2030, 0x2043, - 0x2045, 0x2051, - 0x2053, 0x205e, - 0x207d, 0x207e, - 0x208d, 0x208e, - 0x2329, 0x232a, - 0x2768, 0x2775, - 0x27c5, 0x27c6, - 0x27e6, 0x27ef, - 0x2983, 0x2998, - 0x29d8, 0x29db, - 0x29fc, 0x29fd, - 0x2cf9, 0x2cfc, - 0x2cfe, 0x2cff, - 0x2e00, 0x2e2e, - 0x2e30, 0x2e30, - 0x3001, 0x3003, - 0x3008, 0x3011, - 0x3014, 0x301f, - 0x3030, 0x3030, - 0x303d, 0x303d, - 0x30a0, 0x30a0, - 0x30fb, 0x30fb, - 0xa60d, 0xa60f, - 0xa673, 0xa673, - 0xa67e, 0xa67e, - 0xa874, 0xa877, - 0xa8ce, 0xa8cf, - 0xa92e, 0xa92f, - 0xa95f, 0xa95f, - 0xaa5c, 0xaa5f, - 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, 0x10101, - 0x1039f, 0x1039f, - 0x103d0, 0x103d0, - 0x1091f, 0x1091f, - 0x1093f, 0x1093f, - 0x10a50, 0x10a58, - 0x12470, 0x12473, -}; /* CR_Punct */ - -/* 'Space': [[:Space:]] */ -static const OnigCodePoint CR_Space[] = { - 11, - 0x0009, 0x000d, - 0x0020, 0x0020, - 0x0085, 0x0085, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x180e, 0x180e, - 0x2000, 0x200a, - 0x2028, 0x2029, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000, -}; /* CR_Space */ - -/* 'Upper': [[:Upper:]] */ -static const OnigCodePoint CR_Upper[] = { - 591, - 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, - 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, - 0x0531, 0x0556, - 0x10a0, 0x10c5, - 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, 0x2c6f, - 0x2c72, 0x2c72, - 0x2c75, 0x2c75, - 0x2c80, 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, - 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, - 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, - 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, - 0xff21, 0xff3a, - 0x10400, 0x10427, - 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, -}; /* CR_Upper */ - -/* 'XDigit': [[:XDigit:]] */ -static const OnigCodePoint CR_XDigit[] = { - 3, - 0x0030, 0x0039, - 0x0041, 0x0046, - 0x0061, 0x0066, -}; /* CR_XDigit */ - -/* 'Word': [[:Word:]] */ -static const OnigCodePoint CR_Word[] = { - 477, - 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, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x0483, 0x0523, - 0x0531, 0x0556, - 0x0559, 0x0559, - 0x0561, 0x0587, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0610, 0x061a, - 0x0621, 0x065e, - 0x0660, 0x0669, - 0x066e, 0x06d3, - 0x06d5, 0x06dc, - 0x06de, 0x06e8, - 0x06ea, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07f5, - 0x07fa, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0963, - 0x0966, 0x096f, - 0x0971, 0x0972, - 0x097b, 0x097f, - 0x0981, 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, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c82, 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, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 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, - 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, 0x0edd, - 0x0f00, 0x0f00, - 0x0f18, 0x0f19, - 0x0f20, 0x0f29, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f3e, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f84, - 0x0f86, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x1000, 0x1049, - 0x1050, 0x1099, - 0x10a0, 0x10c5, - 0x10d0, 0x10fa, - 0x10fc, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x135f, 0x135f, - 0x1380, 0x138f, - 0x13a0, 0x13f4, - 0x1401, 0x166c, - 0x166f, 0x1676, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1734, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17d3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dd, - 0x17e0, 0x17e9, - 0x180b, 0x180d, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1946, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x1a00, 0x1a1b, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b59, - 0x1b6b, 0x1b73, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, - 0x1c00, 0x1c37, - 0x1c40, 0x1c49, - 0x1c4d, 0x1c7d, - 0x1d00, 0x1de6, - 0x1dfe, 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, 0x2094, - 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, - 0x2183, 0x2184, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2ce4, - 0x2d00, 0x2d25, - 0x2d30, 0x2d65, - 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, 0x3006, - 0x302a, 0x302f, - 0x3031, 0x3035, - 0x303b, 0x303c, - 0x3041, 0x3096, - 0x3099, 0x309a, - 0x309d, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x31a0, 0x31b7, - 0x31f0, 0x31ff, - 0x3400, 0x3400, - 0x4db5, 0x4db5, - 0x4e00, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa500, 0xa60c, - 0xa610, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa672, - 0xa67c, 0xa67d, - 0xa67f, 0xa697, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa78c, - 0xa7fb, 0xa827, - 0xa840, 0xa873, - 0xa880, 0xa8c4, - 0xa8d0, 0xa8d9, - 0xa900, 0xa92d, - 0xa930, 0xa953, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 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, 0xfe26, - 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, - 0x101fd, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10330, 0x10340, - 0x10342, 0x10349, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10915, - 0x10920, 0x10939, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, - 0x12000, 0x1236e, - 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, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0100, 0xe01ef, -}; /* CR_Word */ - -/* 'Alnum': [[:Alnum:]] */ -static const OnigCodePoint CR_Alnum[] = { - 471, - 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, - 0x0300, 0x0374, - 0x0376, 0x0377, - 0x037a, 0x037d, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03f5, - 0x03f7, 0x0481, - 0x0483, 0x0523, - 0x0531, 0x0556, - 0x0559, 0x0559, - 0x0561, 0x0587, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0610, 0x061a, - 0x0621, 0x065e, - 0x0660, 0x0669, - 0x066e, 0x06d3, - 0x06d5, 0x06dc, - 0x06de, 0x06e8, - 0x06ea, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07f5, - 0x07fa, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0963, - 0x0966, 0x096f, - 0x0971, 0x0972, - 0x097b, 0x097f, - 0x0981, 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, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c82, 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, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 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, - 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, 0x0edd, - 0x0f00, 0x0f00, - 0x0f18, 0x0f19, - 0x0f20, 0x0f29, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f3e, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f84, - 0x0f86, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x1000, 0x1049, - 0x1050, 0x1099, - 0x10a0, 0x10c5, - 0x10d0, 0x10fa, - 0x10fc, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x135f, 0x135f, - 0x1380, 0x138f, - 0x13a0, 0x13f4, - 0x1401, 0x166c, - 0x166f, 0x1676, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1734, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17d3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dd, - 0x17e0, 0x17e9, - 0x180b, 0x180d, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1946, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x1a00, 0x1a1b, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b59, - 0x1b6b, 0x1b73, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, - 0x1c00, 0x1c37, - 0x1c40, 0x1c49, - 0x1c4d, 0x1c7d, - 0x1d00, 0x1de6, - 0x1dfe, 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, 0x2094, - 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, - 0x2183, 0x2184, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2ce4, - 0x2d00, 0x2d25, - 0x2d30, 0x2d65, - 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, 0x3006, - 0x302a, 0x302f, - 0x3031, 0x3035, - 0x303b, 0x303c, - 0x3041, 0x3096, - 0x3099, 0x309a, - 0x309d, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x31a0, 0x31b7, - 0x31f0, 0x31ff, - 0x3400, 0x3400, - 0x4db5, 0x4db5, - 0x4e00, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa500, 0xa60c, - 0xa610, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa672, - 0xa67c, 0xa67d, - 0xa67f, 0xa697, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa78c, - 0xa7fb, 0xa827, - 0xa840, 0xa873, - 0xa880, 0xa8c4, - 0xa8d0, 0xa8d9, - 0xa900, 0xa92d, - 0xa930, 0xa953, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 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, 0xfe26, - 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, - 0x101fd, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10330, 0x10340, - 0x10342, 0x10349, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10915, - 0x10920, 0x10939, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, - 0x12000, 0x1236e, - 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, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0100, 0xe01ef, -}; /* CR_Alnum */ - -/* 'ASCII': [[:ASCII:]] */ -static const OnigCodePoint CR_ASCII[] = { - 1, - 0x0000, 0x007f, -}; /* CR_ASCII */ - -#ifdef USE_UNICODE_PROPERTIES -/* 'Any': - */ -static const OnigCodePoint CR_Any[] = { - 1, - 0x0000, 0x10ffff, -}; /* CR_Any */ - -/* 'Assigned': - */ -static const OnigCodePoint CR_Assigned[] = { - 454, - 0x0000, 0x0377, - 0x037a, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x0523, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0600, 0x0603, - 0x0606, 0x061b, - 0x061e, 0x061f, - 0x0621, 0x065e, - 0x0660, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x07b1, - 0x07c0, 0x07fa, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0972, - 0x097b, 0x097f, - 0x0981, 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, 0x09fa, - 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, - 0x0af1, 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, 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, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c58, 0x0c59, - 0x0c60, 0x0c63, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, - 0x0c82, 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, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d44, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 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, - 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, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fd4, - 0x1000, 0x1099, - 0x109e, 0x10c5, - 0x10d0, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x135f, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1401, 0x1676, - 0x1680, 0x169c, - 0x16a0, 0x16f0, - 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, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a1f, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, - 0x1c00, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c7f, - 0x1d00, 0x1de6, - 0x1dfe, 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, - 0x206a, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x2094, - 0x20a0, 0x20b5, - 0x20d0, 0x20f0, - 0x2100, 0x214f, - 0x2153, 0x2188, - 0x2190, 0x23e7, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27ca, - 0x27cc, 0x27cc, - 0x27d0, 0x2b4c, - 0x2b50, 0x2b54, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2cea, - 0x2cf9, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2de0, 0x2e30, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312d, - 0x3131, 0x318e, - 0x3190, 0x31b7, - 0x31c0, 0x31e3, - 0x31f0, 0x321e, - 0x3220, 0x3243, - 0x3250, 0x32fe, - 0x3300, 0x3400, - 0x4db5, 0x4db5, - 0x4dc0, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa500, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa673, - 0xa67c, 0xa697, - 0xa700, 0xa78c, - 0xa7fb, 0xa82b, - 0xa840, 0xa877, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, - 0xa900, 0xa953, - 0xa95f, 0xa95f, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa5f, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xd800, 0xd800, - 0xdb7f, 0xdb80, - 0xdbff, 0xdc00, - 0xdfff, 0xe000, - 0xf8ff, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe26, - 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, 0x1018a, - 0x10190, 0x1019b, - 0x101d0, 0x101fd, - 0x10280, 0x1029c, - 0x102a0, 0x102d0, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10919, - 0x1091f, 0x10939, - 0x1093f, 0x1093f, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x12000, 0x1236e, - 0x12400, 0x12462, - 0x12470, 0x12473, - 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, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, - 0xf0000, 0xf0000, - 0xffffd, 0xffffd, - 0x100000, 0x100000, -}; /* CR_Assigned */ - -/* 'C': Major Category */ -static const OnigCodePoint CR_C[] = { - 25, - 0x0000, 0x001f, - 0x007f, 0x009f, - 0x00ad, 0x00ad, - 0x0600, 0x0603, - 0x06dd, 0x06dd, - 0x070f, 0x070f, - 0x17b4, 0x17b5, - 0x200b, 0x200f, - 0x202a, 0x202e, - 0x2060, 0x2064, - 0x206a, 0x206f, - 0xd800, 0xd800, - 0xdb7f, 0xdb80, - 0xdbff, 0xdc00, - 0xdfff, 0xe000, - 0xf8ff, 0xf8ff, - 0xfeff, 0xfeff, - 0xfff9, 0xfffb, - 0x1d173, 0x1d17a, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xf0000, 0xf0000, - 0xffffd, 0xffffd, - 0x100000, 0x100000, - 0x10fffd, 0x10ffff, -}; /* CR_C */ - -/* 'Cc': General Category */ -static const OnigCodePoint CR_Cc[] = { - 2, - 0x0000, 0x001f, - 0x007f, 0x009f, -}; /* CR_Cc */ - -/* 'Cf': General Category */ -static const OnigCodePoint CR_Cf[] = { - 14, - 0x00ad, 0x00ad, - 0x0600, 0x0603, - 0x06dd, 0x06dd, - 0x070f, 0x070f, - 0x17b4, 0x17b5, - 0x200b, 0x200f, - 0x202a, 0x202e, - 0x2060, 0x2064, - 0x206a, 0x206f, - 0xfeff, 0xfeff, - 0xfff9, 0xfffb, - 0x1d173, 0x1d17a, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, -}; /* CR_Cf */ +/* 'Cf': General Category */ +static const OnigCodePoint CR_Cf[] = { + 15, + 0x00ad, 0x00ad, + 0x0600, 0x0603, + 0x06dd, 0x06dd, + 0x070f, 0x070f, + 0x17b4, 0x17b5, + 0x200b, 0x200f, + 0x202a, 0x202e, + 0x2060, 0x2064, + 0x206a, 0x206f, + 0xfeff, 0xfeff, + 0xfff9, 0xfffb, + 0x110bd, 0x110bd, + 0x1d173, 0x1d17a, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, +}; /* CR_Cf */ /* 'Cn': General Category */ static const OnigCodePoint CR_Cn[] = { - 454, + 485, 0x0378, 0x0379, 0x037f, 0x0383, 0x038b, 0x038b, 0x038d, 0x038d, 0x03a2, 0x03a2, - 0x0524, 0x0530, + 0x0526, 0x0530, 0x0557, 0x0558, 0x0560, 0x0560, 0x0588, 0x0588, @@ -4282,11 +572,13 @@ static const OnigCodePoint CR_Cn[] = { 0x070e, 0x070e, 0x074b, 0x074c, 0x07b2, 0x07bf, - 0x07fb, 0x0900, + 0x07fb, 0x07ff, + 0x082e, 0x082f, + 0x083f, 0x08ff, 0x093a, 0x093b, - 0x094e, 0x094f, - 0x0955, 0x0957, - 0x0973, 0x097a, + 0x094f, 0x094f, + 0x0956, 0x0957, + 0x0973, 0x0978, 0x0980, 0x0980, 0x0984, 0x0984, 0x098d, 0x098e, @@ -4301,7 +593,7 @@ static const OnigCodePoint CR_Cn[] = { 0x09d8, 0x09db, 0x09de, 0x09de, 0x09e4, 0x09e5, - 0x09fb, 0x0a00, + 0x09fc, 0x0a00, 0x0a04, 0x0a04, 0x0a0b, 0x0a0e, 0x0a11, 0x0a12, @@ -4439,13 +731,9 @@ static const OnigCodePoint CR_Cn[] = { 0x0f98, 0x0f98, 0x0fbd, 0x0fbd, 0x0fcd, 0x0fcd, - 0x0fd5, 0x0fff, - 0x109a, 0x109d, + 0x0fd9, 0x0fff, 0x10c6, 0x10cf, 0x10fd, 0x10ff, - 0x115a, 0x115e, - 0x11a3, 0x11a7, - 0x11fa, 0x11ff, 0x1249, 0x1249, 0x124e, 0x124f, 0x1257, 0x1257, @@ -4464,8 +752,7 @@ static const OnigCodePoint CR_Cn[] = { 0x135b, 0x135e, 0x137d, 0x137f, 0x139a, 0x139f, - 0x13f5, 0x1400, - 0x1677, 0x167f, + 0x13f5, 0x13ff, 0x169d, 0x169f, 0x16f1, 0x16ff, 0x170d, 0x170d, @@ -4481,26 +768,32 @@ static const OnigCodePoint CR_Cn[] = { 0x180f, 0x180f, 0x181a, 0x181f, 0x1878, 0x187f, - 0x18ab, 0x18ff, + 0x18ab, 0x18af, + 0x18f6, 0x18ff, 0x191d, 0x191f, 0x192c, 0x192f, 0x193c, 0x193f, 0x1941, 0x1943, 0x196e, 0x196f, 0x1975, 0x197f, - 0x19aa, 0x19af, + 0x19ac, 0x19af, 0x19ca, 0x19cf, - 0x19da, 0x19dd, + 0x19db, 0x19dd, 0x1a1c, 0x1a1d, - 0x1a20, 0x1aff, + 0x1a5f, 0x1a5f, + 0x1a7d, 0x1a7e, + 0x1a8a, 0x1a8f, + 0x1a9a, 0x1a9f, + 0x1aae, 0x1aff, 0x1b4c, 0x1b4f, 0x1b7d, 0x1b7f, 0x1bab, 0x1bad, 0x1bba, 0x1bff, 0x1c38, 0x1c3a, 0x1c4a, 0x1c4c, - 0x1c80, 0x1cff, - 0x1de7, 0x1dfd, + 0x1c80, 0x1ccf, + 0x1cf3, 0x1cff, + 0x1de7, 0x1dfc, 0x1f16, 0x1f17, 0x1f1e, 0x1f1f, 0x1f46, 0x1f47, @@ -4521,23 +814,22 @@ static const OnigCodePoint CR_Cn[] = { 0x2072, 0x2073, 0x208f, 0x208f, 0x2095, 0x209f, - 0x20b6, 0x20cf, + 0x20b9, 0x20cf, 0x20f1, 0x20ff, - 0x2150, 0x2152, - 0x2189, 0x218f, - 0x23e8, 0x23ff, + 0x218a, 0x218f, + 0x23e9, 0x23ff, 0x2427, 0x243f, 0x244b, 0x245f, - 0x269e, 0x269f, - 0x26bd, 0x26bf, - 0x26c4, 0x2700, + 0x26ce, 0x26ce, + 0x26e2, 0x26e2, + 0x26e4, 0x26e7, + 0x2700, 0x2700, 0x2705, 0x2705, 0x270a, 0x270b, 0x2728, 0x2728, 0x274c, 0x274c, 0x274e, 0x274e, 0x2753, 0x2755, - 0x2757, 0x2757, 0x275f, 0x2760, 0x2795, 0x2797, 0x27b0, 0x27b0, @@ -4545,12 +837,10 @@ static const OnigCodePoint CR_Cn[] = { 0x27cb, 0x27cb, 0x27cd, 0x27cf, 0x2b4d, 0x2b4f, - 0x2b55, 0x2bff, + 0x2b5a, 0x2bff, 0x2c2f, 0x2c2f, 0x2c5f, 0x2c5f, - 0x2c70, 0x2c70, - 0x2c7e, 0x2c7f, - 0x2ceb, 0x2cf8, + 0x2cf2, 0x2cf8, 0x2d26, 0x2d2f, 0x2d66, 0x2d6e, 0x2d70, 0x2d7f, @@ -4563,7 +853,7 @@ static const OnigCodePoint CR_Cn[] = { 0x2dcf, 0x2dcf, 0x2dd7, 0x2dd7, 0x2ddf, 0x2ddf, - 0x2e31, 0x2e7f, + 0x2e32, 0x2e7f, 0x2e9a, 0x2e9a, 0x2ef4, 0x2eff, 0x2fd6, 0x2fef, @@ -4576,37 +866,41 @@ static const OnigCodePoint CR_Cn[] = { 0x31b8, 0x31bf, 0x31e4, 0x31ef, 0x321f, 0x321f, - 0x3244, 0x324f, 0x32ff, 0x32ff, - 0x3401, 0x4db4, 0x4db6, 0x4dbf, - 0x4e01, 0x9fc2, - 0x9fc4, 0x9fff, + 0x9fcc, 0x9fff, 0xa48d, 0xa48f, - 0xa4c7, 0xa4ff, + 0xa4c7, 0xa4cf, 0xa62c, 0xa63f, 0xa660, 0xa661, 0xa674, 0xa67b, - 0xa698, 0xa6ff, + 0xa698, 0xa69f, + 0xa6f8, 0xa6ff, 0xa78d, 0xa7fa, - 0xa82c, 0xa83f, + 0xa82c, 0xa82f, + 0xa83a, 0xa83f, 0xa878, 0xa87f, 0xa8c5, 0xa8cd, - 0xa8da, 0xa8ff, + 0xa8da, 0xa8df, + 0xa8fc, 0xa8ff, 0xa954, 0xa95e, - 0xa960, 0xa9ff, + 0xa97d, 0xa97f, + 0xa9ce, 0xa9ce, + 0xa9da, 0xa9dd, + 0xa9e0, 0xa9ff, 0xaa37, 0xaa3f, 0xaa4e, 0xaa4f, 0xaa5a, 0xaa5b, - 0xaa60, 0xabff, - 0xac01, 0xd7a2, - 0xd7a4, 0xd7ff, - 0xd801, 0xdb7e, - 0xdb81, 0xdbfe, - 0xdc01, 0xdffe, - 0xe001, 0xf8fe, + 0xaa7c, 0xaa7f, + 0xaac3, 0xaada, + 0xaae0, 0xabbf, + 0xabee, 0xabef, + 0xabfa, 0xabff, + 0xd7a4, 0xd7af, + 0xd7c7, 0xd7ca, + 0xd7fc, 0xd7ff, 0xfa2e, 0xfa2f, - 0xfa6b, 0xfa6f, + 0xfa6e, 0xfa6f, 0xfada, 0xfaff, 0xfb07, 0xfb12, 0xfb18, 0xfb1c, @@ -4663,8 +957,9 @@ static const OnigCodePoint CR_Cn[] = { 0x10836, 0x10836, 0x10839, 0x1083b, 0x1083d, 0x1083e, - 0x10840, 0x108ff, - 0x1091a, 0x1091e, + 0x10856, 0x10856, + 0x10860, 0x108ff, + 0x1091c, 0x1091e, 0x1093a, 0x1093e, 0x10940, 0x109ff, 0x10a04, 0x10a04, @@ -4674,10 +969,19 @@ static const OnigCodePoint CR_Cn[] = { 0x10a34, 0x10a37, 0x10a3b, 0x10a3e, 0x10a48, 0x10a4f, - 0x10a59, 0x11fff, + 0x10a59, 0x10a5f, + 0x10a80, 0x10aff, + 0x10b36, 0x10b38, + 0x10b56, 0x10b57, + 0x10b73, 0x10b77, + 0x10b80, 0x10bff, + 0x10c49, 0x10e5f, + 0x10e7f, 0x1107f, + 0x110c2, 0x11fff, 0x1236f, 0x123ff, 0x12463, 0x1246f, - 0x12474, 0x1cfff, + 0x12474, 0x12fff, + 0x1342f, 0x1cfff, 0x1d0f6, 0x1d0ff, 0x1d127, 0x1d128, 0x1d1de, 0x1d1ff, @@ -4706,41 +1010,5565 @@ static const OnigCodePoint CR_Cn[] = { 0x1d7cc, 0x1d7cd, 0x1d800, 0x1efff, 0x1f02c, 0x1f02f, - 0x1f094, 0x1ffff, - 0x20001, 0x2a6d5, - 0x2a6d7, 0x2f7ff, + 0x1f094, 0x1f0ff, + 0x1f10b, 0x1f10f, + 0x1f12f, 0x1f130, + 0x1f132, 0x1f13c, + 0x1f13e, 0x1f13e, + 0x1f140, 0x1f141, + 0x1f143, 0x1f145, + 0x1f147, 0x1f149, + 0x1f14f, 0x1f156, + 0x1f158, 0x1f15e, + 0x1f160, 0x1f178, + 0x1f17a, 0x1f17a, + 0x1f17d, 0x1f17e, + 0x1f180, 0x1f189, + 0x1f18e, 0x1f18f, + 0x1f191, 0x1f1ff, + 0x1f201, 0x1f20f, + 0x1f232, 0x1f23f, + 0x1f249, 0x1ffff, + 0x2a6d7, 0x2a6ff, + 0x2b735, 0x2f7ff, 0x2fa1e, 0xe0000, 0xe0002, 0xe001f, 0xe0080, 0xe00ff, 0xe01f0, 0xeffff, - 0xf0001, 0xffffc, 0xffffe, 0xfffff, - 0x100001, 0x10ffff, + 0x10fffe, 0x10ffff, }; /* CR_Cn */ -/* 'Co': General Category */ -static const OnigCodePoint CR_Co[] = { - 6, - 0xe000, 0xe000, - 0xf8ff, 0xf8ff, - 0xf0000, 0xf0000, - 0xffffd, 0xffffd, - 0x100000, 0x100000, - 0x10fffd, 0x10fffd, -}; /* CR_Co */ +/* 'Co': General Category */ +static const OnigCodePoint CR_Co[] = { + 3, + 0xe000, 0xf8ff, + 0xf0000, 0xffffd, + 0x100000, 0x10fffd, +}; /* CR_Co */ + +/* 'Cs': General Category */ +static const OnigCodePoint CR_Cs[] = { + 1, + 0xd800, 0xdfff, +}; /* CR_Cs */ + +/* 'L': Major Category */ +static const OnigCodePoint CR_L[] = { + 422, + 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, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0621, 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, + 0x0904, 0x0939, + 0x093d, 0x093d, + 0x0950, 0x0950, + 0x0958, 0x0961, + 0x0971, 0x0972, + 0x0979, 0x097f, + 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, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c3d, + 0x0c58, 0x0c59, + 0x0c60, 0x0c61, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbd, 0x0cbd, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce1, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d3d, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f40, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f88, 0x0f8b, + 0x1000, 0x102a, + 0x103f, 0x103f, + 0x1050, 0x1055, + 0x105a, 0x105d, + 0x1061, 0x1061, + 0x1065, 0x1066, + 0x106e, 0x1070, + 0x1075, 0x1081, + 0x108e, 0x108e, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, + 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, 0x191c, + 0x1950, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19c1, 0x19c7, + 0x1a00, 0x1a16, + 0x1a20, 0x1a54, + 0x1aa7, 0x1aa7, + 0x1b05, 0x1b33, + 0x1b45, 0x1b4b, + 0x1b83, 0x1ba0, + 0x1bae, 0x1baf, + 0x1c00, 0x1c23, + 0x1c4d, 0x1c4f, + 0x1c5a, 0x1c7d, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf1, + 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, 0x2094, + 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, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa61f, + 0xa62a, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa67f, 0xa697, + 0xa6a0, 0xa6e5, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 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, + 0xaa00, 0xaa28, + 0xaa40, 0xaa42, + 0xaa44, 0xaa4b, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaaaf, + 0xaab1, 0xaab1, + 0xaab5, 0xaab6, + 0xaab9, 0xaabd, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabe2, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0x1031e, + 0x10330, 0x10340, + 0x10342, 0x10349, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x10400, 0x1049d, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a00, + 0x10a10, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11083, 0x110af, + 0x12000, 0x1236e, + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_L */ + +/* 'Ll': General Category */ +static const OnigCodePoint CR_Ll[] = { + 599, + 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, 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, + 0x0561, 0x0587, + 0x1d00, 0x1d2b, + 0x1d62, 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, 0x2c7c, + 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, + 0x2d00, 0x2d25, + 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, + 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, + 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, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xff41, 0xff5a, + 0x10428, 0x1044f, + 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, +}; /* CR_Ll */ + +/* 'Lm': General Category */ +static const OnigCodePoint CR_Lm[] = { + 49, + 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, 0x1d61, + 0x1d78, 0x1d78, + 0x1d9b, 0x1dbf, + 0x2071, 0x2071, + 0x207f, 0x207f, + 0x2090, 0x2094, + 0x2c7d, 0x2c7d, + 0x2d6f, 0x2d6f, + 0x2e2f, 0x2e2f, + 0x3005, 0x3005, + 0x3031, 0x3035, + 0x303b, 0x303b, + 0x309d, 0x309e, + 0x30fc, 0x30fe, + 0xa015, 0xa015, + 0xa4f8, 0xa4fd, + 0xa60c, 0xa60c, + 0xa67f, 0xa67f, + 0xa717, 0xa71f, + 0xa770, 0xa770, + 0xa788, 0xa788, + 0xa9cf, 0xa9cf, + 0xaa70, 0xaa70, + 0xaadd, 0xaadd, + 0xff70, 0xff70, + 0xff9e, 0xff9f, +}; /* CR_Lm */ + +/* 'Lo': General Category */ +static const OnigCodePoint CR_Lo[] = { + 311, + 0x01bb, 0x01bb, + 0x01c0, 0x01c3, + 0x0294, 0x0294, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0621, 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, + 0x0904, 0x0939, + 0x093d, 0x093d, + 0x0950, 0x0950, + 0x0958, 0x0961, + 0x0972, 0x0972, + 0x0979, 0x097f, + 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, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c3d, + 0x0c58, 0x0c59, + 0x0c60, 0x0c61, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbd, 0x0cbd, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce1, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d3d, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f40, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f88, 0x0f8b, + 0x1000, 0x102a, + 0x103f, 0x103f, + 0x1050, 0x1055, + 0x105a, 0x105d, + 0x1061, 0x1061, + 0x1065, 0x1066, + 0x106e, 0x1070, + 0x1075, 0x1081, + 0x108e, 0x108e, + 0x10d0, 0x10fa, + 0x1100, 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, + 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, 0x191c, + 0x1950, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19c1, 0x19c7, + 0x1a00, 0x1a16, + 0x1a20, 0x1a54, + 0x1b05, 0x1b33, + 0x1b45, 0x1b4b, + 0x1b83, 0x1ba0, + 0x1bae, 0x1baf, + 0x1c00, 0x1c23, + 0x1c4d, 0x1c4f, + 0x1c5a, 0x1c77, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf1, + 0x2135, 0x2138, + 0x2d30, 0x2d65, + 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa014, + 0xa016, 0xa48c, + 0xa4d0, 0xa4f7, + 0xa500, 0xa60b, + 0xa610, 0xa61f, + 0xa62a, 0xa62b, + 0xa66e, 0xa66e, + 0xa6a0, 0xa6e5, + 0xa7fb, 0xa801, + 0xa803, 0xa805, + 0xa807, 0xa80a, + 0xa80c, 0xa822, + 0xa840, 0xa873, + 0xa882, 0xa8b3, + 0xa8f2, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa90a, 0xa925, + 0xa930, 0xa946, + 0xa960, 0xa97c, + 0xa984, 0xa9b2, + 0xaa00, 0xaa28, + 0xaa40, 0xaa42, + 0xaa44, 0xaa4b, + 0xaa60, 0xaa6f, + 0xaa71, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaaaf, + 0xaab1, 0xaab1, + 0xaab5, 0xaab6, + 0xaab9, 0xaabd, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadc, + 0xabc0, 0xabe2, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0x1031e, + 0x10330, 0x10340, + 0x10342, 0x10349, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x10450, 0x1049d, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a00, + 0x10a10, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11083, 0x110af, + 0x12000, 0x1236e, + 0x13000, 0x1342e, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Lo */ + +/* '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, +}; /* CR_Lt */ + +/* 'Lu': General Category */ +static const OnigCodePoint CR_Lu[] = { + 594, + 0x0041, 0x005a, + 0x00c0, 0x00d6, + 0x00d8, 0x00de, + 0x0100, 0x0100, + 0x0102, 0x0102, + 0x0104, 0x0104, + 0x0106, 0x0106, + 0x0108, 0x0108, + 0x010a, 0x010a, + 0x010c, 0x010c, + 0x010e, 0x010e, + 0x0110, 0x0110, + 0x0112, 0x0112, + 0x0114, 0x0114, + 0x0116, 0x0116, + 0x0118, 0x0118, + 0x011a, 0x011a, + 0x011c, 0x011c, + 0x011e, 0x011e, + 0x0120, 0x0120, + 0x0122, 0x0122, + 0x0124, 0x0124, + 0x0126, 0x0126, + 0x0128, 0x0128, + 0x012a, 0x012a, + 0x012c, 0x012c, + 0x012e, 0x012e, + 0x0130, 0x0130, + 0x0132, 0x0132, + 0x0134, 0x0134, + 0x0136, 0x0136, + 0x0139, 0x0139, + 0x013b, 0x013b, + 0x013d, 0x013d, + 0x013f, 0x013f, + 0x0141, 0x0141, + 0x0143, 0x0143, + 0x0145, 0x0145, + 0x0147, 0x0147, + 0x014a, 0x014a, + 0x014c, 0x014c, + 0x014e, 0x014e, + 0x0150, 0x0150, + 0x0152, 0x0152, + 0x0154, 0x0154, + 0x0156, 0x0156, + 0x0158, 0x0158, + 0x015a, 0x015a, + 0x015c, 0x015c, + 0x015e, 0x015e, + 0x0160, 0x0160, + 0x0162, 0x0162, + 0x0164, 0x0164, + 0x0166, 0x0166, + 0x0168, 0x0168, + 0x016a, 0x016a, + 0x016c, 0x016c, + 0x016e, 0x016e, + 0x0170, 0x0170, + 0x0172, 0x0172, + 0x0174, 0x0174, + 0x0176, 0x0176, + 0x0178, 0x0179, + 0x017b, 0x017b, + 0x017d, 0x017d, + 0x0181, 0x0182, + 0x0184, 0x0184, + 0x0186, 0x0187, + 0x0189, 0x018b, + 0x018e, 0x0191, + 0x0193, 0x0194, + 0x0196, 0x0198, + 0x019c, 0x019d, + 0x019f, 0x01a0, + 0x01a2, 0x01a2, + 0x01a4, 0x01a4, + 0x01a6, 0x01a7, + 0x01a9, 0x01a9, + 0x01ac, 0x01ac, + 0x01ae, 0x01af, + 0x01b1, 0x01b3, + 0x01b5, 0x01b5, + 0x01b7, 0x01b8, + 0x01bc, 0x01bc, + 0x01c4, 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, + 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, + 0x0531, 0x0556, + 0x10a0, 0x10c5, + 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, + 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, + 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, + 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, + 0xff21, 0xff3a, + 0x10400, 0x10427, + 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, +}; /* CR_Lu */ + +/* 'M': Major Category */ +static const OnigCodePoint CR_M[] = { + 188, + 0x0300, 0x036f, + 0x0483, 0x0489, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x0610, 0x061a, + 0x064b, 0x065e, + 0x0670, 0x0670, + 0x06d6, 0x06dc, + 0x06de, 0x06e4, + 0x06e7, 0x06e8, + 0x06ea, 0x06ed, + 0x0711, 0x0711, + 0x0730, 0x074a, + 0x07a6, 0x07b0, + 0x07eb, 0x07f3, + 0x0816, 0x0819, + 0x081b, 0x0823, + 0x0825, 0x0827, + 0x0829, 0x082d, + 0x0900, 0x0903, + 0x093c, 0x093c, + 0x093e, 0x094e, + 0x0951, 0x0955, + 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, + 0x0c01, 0x0c03, + 0x0c3e, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c62, 0x0c63, + 0x0c82, 0x0c83, + 0x0cbc, 0x0cbc, + 0x0cbe, 0x0cc4, + 0x0cc6, 0x0cc8, + 0x0cca, 0x0ccd, + 0x0cd5, 0x0cd6, + 0x0ce2, 0x0ce3, + 0x0d02, 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, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fc6, 0x0fc6, + 0x102b, 0x103e, + 0x1056, 0x1059, + 0x105e, 0x1060, + 0x1062, 0x1064, + 0x1067, 0x106d, + 0x1071, 0x1074, + 0x1082, 0x108d, + 0x108f, 0x108f, + 0x109a, 0x109d, + 0x135f, 0x135f, + 0x1712, 0x1714, + 0x1732, 0x1734, + 0x1752, 0x1753, + 0x1772, 0x1773, + 0x17b6, 0x17d3, + 0x17dd, 0x17dd, + 0x180b, 0x180d, + 0x18a9, 0x18a9, + 0x1920, 0x192b, + 0x1930, 0x193b, + 0x19b0, 0x19c0, + 0x19c8, 0x19c9, + 0x1a17, 0x1a1b, + 0x1a55, 0x1a5e, + 0x1a60, 0x1a7c, + 0x1a7f, 0x1a7f, + 0x1b00, 0x1b04, + 0x1b34, 0x1b44, + 0x1b6b, 0x1b73, + 0x1b80, 0x1b82, + 0x1ba1, 0x1baa, + 0x1c24, 0x1c37, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1ce8, + 0x1ced, 0x1ced, + 0x1cf2, 0x1cf2, + 0x1dc0, 0x1de6, + 0x1dfd, 0x1dff, + 0x20d0, 0x20f0, + 0x2cef, 0x2cf1, + 0x2de0, 0x2dff, + 0x302a, 0x302f, + 0x3099, 0x309a, + 0xa66f, 0xa672, + 0xa67c, 0xa67d, + 0xa6f0, 0xa6f1, + 0xa802, 0xa802, + 0xa806, 0xa806, + 0xa80b, 0xa80b, + 0xa823, 0xa827, + 0xa880, 0xa881, + 0xa8b4, 0xa8c4, + 0xa8e0, 0xa8f1, + 0xa926, 0xa92d, + 0xa947, 0xa953, + 0xa980, 0xa983, + 0xa9b3, 0xa9c0, + 0xaa29, 0xaa36, + 0xaa43, 0xaa43, + 0xaa4c, 0xaa4d, + 0xaa7b, 0xaa7b, + 0xaab0, 0xaab0, + 0xaab2, 0xaab4, + 0xaab7, 0xaab8, + 0xaabe, 0xaabf, + 0xaac1, 0xaac1, + 0xabe3, 0xabea, + 0xabec, 0xabed, + 0xfb1e, 0xfb1e, + 0xfe00, 0xfe0f, + 0xfe20, 0xfe26, + 0x101fd, 0x101fd, + 0x10a01, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a0f, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x11080, 0x11082, + 0x110b0, 0x110ba, + 0x1d165, 0x1d169, + 0x1d16d, 0x1d172, + 0x1d17b, 0x1d182, + 0x1d185, 0x1d18b, + 0x1d1aa, 0x1d1ad, + 0x1d242, 0x1d244, + 0xe0100, 0xe01ef, +}; /* CR_M */ + +/* 'Mc': General Category */ +static const OnigCodePoint CR_Mc[] = { + 106, + 0x0903, 0x0903, + 0x093e, 0x0940, + 0x0949, 0x094c, + 0x094e, 0x094e, + 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, 0x1a1b, + 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, + 0x1c24, 0x1c2b, + 0x1c34, 0x1c35, + 0x1ce1, 0x1ce1, + 0x1cf2, 0x1cf2, + 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, + 0xabe3, 0xabe4, + 0xabe6, 0xabe7, + 0xabe9, 0xabea, + 0xabec, 0xabec, + 0x11082, 0x11082, + 0x110b0, 0x110b2, + 0x110b7, 0x110b8, + 0x1d165, 0x1d166, + 0x1d16d, 0x1d172, +}; /* CR_Mc */ + +/* 'Me': General Category */ +static const OnigCodePoint CR_Me[] = { + 5, + 0x0488, 0x0489, + 0x06de, 0x06de, + 0x20dd, 0x20e0, + 0x20e2, 0x20e4, + 0xa670, 0xa672, +}; /* CR_Me */ + +/* 'Mn': General Category */ +static const OnigCodePoint CR_Mn[] = { + 194, + 0x0300, 0x036f, + 0x0483, 0x0487, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x0610, 0x061a, + 0x064b, 0x065e, + 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, + 0x0900, 0x0902, + 0x093c, 0x093c, + 0x0941, 0x0948, + 0x094d, 0x094d, + 0x0951, 0x0955, + 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, + 0x0c3e, 0x0c40, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c62, 0x0c63, + 0x0cbc, 0x0cbc, + 0x0cbf, 0x0cbf, + 0x0cc6, 0x0cc6, + 0x0ccc, 0x0ccd, + 0x0ce2, 0x0ce3, + 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, + 0x0f90, 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, + 0x135f, 0x135f, + 0x1712, 0x1714, + 0x1732, 0x1734, + 0x1752, 0x1753, + 0x1772, 0x1773, + 0x17b7, 0x17bd, + 0x17c6, 0x17c6, + 0x17c9, 0x17d3, + 0x17dd, 0x17dd, + 0x180b, 0x180d, + 0x18a9, 0x18a9, + 0x1920, 0x1922, + 0x1927, 0x1928, + 0x1932, 0x1932, + 0x1939, 0x193b, + 0x1a17, 0x1a18, + 0x1a56, 0x1a56, + 0x1a58, 0x1a5e, + 0x1a60, 0x1a60, + 0x1a62, 0x1a62, + 0x1a65, 0x1a6c, + 0x1a73, 0x1a7c, + 0x1a7f, 0x1a7f, + 0x1b00, 0x1b03, + 0x1b34, 0x1b34, + 0x1b36, 0x1b3a, + 0x1b3c, 0x1b3c, + 0x1b42, 0x1b42, + 0x1b6b, 0x1b73, + 0x1b80, 0x1b81, + 0x1ba2, 0x1ba5, + 0x1ba8, 0x1ba9, + 0x1c2c, 0x1c33, + 0x1c36, 0x1c37, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1ce0, + 0x1ce2, 0x1ce8, + 0x1ced, 0x1ced, + 0x1dc0, 0x1de6, + 0x1dfd, 0x1dff, + 0x20d0, 0x20dc, + 0x20e1, 0x20e1, + 0x20e5, 0x20f0, + 0x2cef, 0x2cf1, + 0x2de0, 0x2dff, + 0x302a, 0x302f, + 0x3099, 0x309a, + 0xa66f, 0xa66f, + 0xa67c, 0xa67d, + 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, + 0xaa29, 0xaa2e, + 0xaa31, 0xaa32, + 0xaa35, 0xaa36, + 0xaa43, 0xaa43, + 0xaa4c, 0xaa4c, + 0xaab0, 0xaab0, + 0xaab2, 0xaab4, + 0xaab7, 0xaab8, + 0xaabe, 0xaabf, + 0xaac1, 0xaac1, + 0xabe5, 0xabe5, + 0xabe8, 0xabe8, + 0xabed, 0xabed, + 0xfb1e, 0xfb1e, + 0xfe00, 0xfe0f, + 0xfe20, 0xfe26, + 0x101fd, 0x101fd, + 0x10a01, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a0f, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x11080, 0x11081, + 0x110b3, 0x110b6, + 0x110b9, 0x110ba, + 0x1d167, 0x1d169, + 0x1d17b, 0x1d182, + 0x1d185, 0x1d18b, + 0x1d1aa, 0x1d1ad, + 0x1d242, 0x1d244, + 0xe0100, 0xe01ef, +}; /* CR_Mn */ + +/* 'N': Major Category */ +static const OnigCodePoint CR_N[] = { + 81, + 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, + 0x0be6, 0x0bf2, + 0x0c66, 0x0c6f, + 0x0c78, 0x0c7e, + 0x0ce6, 0x0cef, + 0x0d66, 0x0d75, + 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, + 0x3251, 0x325f, + 0x3280, 0x3289, + 0x32b1, 0x32bf, + 0xa620, 0xa629, + 0xa6e6, 0xa6ef, + 0xa830, 0xa835, + 0xa8d0, 0xa8d9, + 0xa900, 0xa909, + 0xa9d0, 0xa9d9, + 0xaa50, 0xaa59, + 0xabf0, 0xabf9, + 0xff10, 0xff19, + 0x10107, 0x10133, + 0x10140, 0x10178, + 0x1018a, 0x1018a, + 0x10320, 0x10323, + 0x10341, 0x10341, + 0x1034a, 0x1034a, + 0x103d1, 0x103d5, + 0x104a0, 0x104a9, + 0x10858, 0x1085f, + 0x10916, 0x1091b, + 0x10a40, 0x10a47, + 0x10a7d, 0x10a7e, + 0x10b58, 0x10b5f, + 0x10b78, 0x10b7f, + 0x10e60, 0x10e7e, + 0x12400, 0x12462, + 0x1d360, 0x1d371, + 0x1d7ce, 0x1d7ff, + 0x1f100, 0x1f10a, +}; /* CR_N */ + +/* 'Nd': General Category */ +static const OnigCodePoint CR_Nd[] = { + 37, + 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, + 0x0e50, 0x0e59, + 0x0ed0, 0x0ed9, + 0x0f20, 0x0f29, + 0x1040, 0x1049, + 0x1090, 0x1099, + 0x17e0, 0x17e9, + 0x1810, 0x1819, + 0x1946, 0x194f, + 0x19d0, 0x19da, + 0x1a80, 0x1a89, + 0x1a90, 0x1a99, + 0x1b50, 0x1b59, + 0x1bb0, 0x1bb9, + 0x1c40, 0x1c49, + 0x1c50, 0x1c59, + 0xa620, 0xa629, + 0xa8d0, 0xa8d9, + 0xa900, 0xa909, + 0xa9d0, 0xa9d9, + 0xaa50, 0xaa59, + 0xabf0, 0xabf9, + 0xff10, 0xff19, + 0x104a0, 0x104a9, + 0x1d7ce, 0x1d7ff, +}; /* CR_Nd */ + +/* '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, 0x12462, +}; /* CR_Nl */ + +/* 'No': General Category */ +static const OnigCodePoint CR_No[] = { + 38, + 0x00b2, 0x00b3, + 0x00b9, 0x00b9, + 0x00bc, 0x00be, + 0x09f4, 0x09f9, + 0x0bf0, 0x0bf2, + 0x0c78, 0x0c7e, + 0x0d70, 0x0d75, + 0x0f2a, 0x0f33, + 0x1369, 0x137c, + 0x17f0, 0x17f9, + 0x2070, 0x2070, + 0x2074, 0x2079, + 0x2080, 0x2089, + 0x2150, 0x215f, + 0x2189, 0x2189, + 0x2460, 0x249b, + 0x24ea, 0x24ff, + 0x2776, 0x2793, + 0x2cfd, 0x2cfd, + 0x3192, 0x3195, + 0x3220, 0x3229, + 0x3251, 0x325f, + 0x3280, 0x3289, + 0x32b1, 0x32bf, + 0xa830, 0xa835, + 0x10107, 0x10133, + 0x10175, 0x10178, + 0x1018a, 0x1018a, + 0x10320, 0x10323, + 0x10858, 0x1085f, + 0x10916, 0x1091b, + 0x10a40, 0x10a47, + 0x10a7d, 0x10a7e, + 0x10b58, 0x10b5f, + 0x10b78, 0x10b7f, + 0x10e60, 0x10e7e, + 0x1d360, 0x1d371, + 0x1f100, 0x1f10a, +}; /* CR_No */ + +/* 'P': Major Category */ +static const OnigCodePoint CR_P[] = { + 129, + 0x0021, 0x0023, + 0x0025, 0x002a, + 0x002c, 0x002f, + 0x003a, 0x003b, + 0x003f, 0x0040, + 0x005b, 0x005d, + 0x005f, 0x005f, + 0x007b, 0x007b, + 0x007d, 0x007d, + 0x00a1, 0x00a1, + 0x00ab, 0x00ab, + 0x00b7, 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, + 0x0964, 0x0965, + 0x0970, 0x0970, + 0x0df4, 0x0df4, + 0x0e4f, 0x0e4f, + 0x0e5a, 0x0e5b, + 0x0f04, 0x0f12, + 0x0f3a, 0x0f3d, + 0x0f85, 0x0f85, + 0x0fd0, 0x0fd4, + 0x104a, 0x104f, + 0x10fb, 0x10fb, + 0x1361, 0x1368, + 0x1400, 0x1400, + 0x166d, 0x166e, + 0x169b, 0x169c, + 0x16eb, 0x16ed, + 0x1735, 0x1736, + 0x17d4, 0x17d6, + 0x17d8, 0x17da, + 0x1800, 0x180a, + 0x1944, 0x1945, + 0x19de, 0x19df, + 0x1a1e, 0x1a1f, + 0x1aa0, 0x1aa6, + 0x1aa8, 0x1aad, + 0x1b5a, 0x1b60, + 0x1c3b, 0x1c3f, + 0x1c7e, 0x1c7f, + 0x1cd3, 0x1cd3, + 0x2010, 0x2027, + 0x2030, 0x2043, + 0x2045, 0x2051, + 0x2053, 0x205e, + 0x207d, 0x207e, + 0x208d, 0x208e, + 0x2329, 0x232a, + 0x2768, 0x2775, + 0x27c5, 0x27c6, + 0x27e6, 0x27ef, + 0x2983, 0x2998, + 0x29d8, 0x29db, + 0x29fc, 0x29fd, + 0x2cf9, 0x2cfc, + 0x2cfe, 0x2cff, + 0x2e00, 0x2e2e, + 0x2e30, 0x2e31, + 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, + 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, 0x10101, + 0x1039f, 0x1039f, + 0x103d0, 0x103d0, + 0x10857, 0x10857, + 0x1091f, 0x1091f, + 0x1093f, 0x1093f, + 0x10a50, 0x10a58, + 0x10a7f, 0x10a7f, + 0x10b39, 0x10b3f, + 0x110bb, 0x110bc, + 0x110be, 0x110c1, + 0x12470, 0x12473, +}; /* CR_P */ + +/* 'Pc': General Category */ +static const OnigCodePoint CR_Pc[] = { + 6, + 0x005f, 0x005f, + 0x203f, 0x2040, + 0x2054, 0x2054, + 0xfe33, 0xfe34, + 0xfe4d, 0xfe4f, + 0xff3f, 0xff3f, +}; /* CR_Pc */ + +/* 'Pd': General Category */ +static const OnigCodePoint CR_Pd[] = { + 15, + 0x002d, 0x002d, + 0x058a, 0x058a, + 0x05be, 0x05be, + 0x1400, 0x1400, + 0x1806, 0x1806, + 0x2010, 0x2015, + 0x2e17, 0x2e17, + 0x2e1a, 0x2e1a, + 0x301c, 0x301c, + 0x3030, 0x3030, + 0x30a0, 0x30a0, + 0xfe31, 0xfe32, + 0xfe58, 0xfe58, + 0xfe63, 0xfe63, + 0xff0d, 0xff0d, +}; /* CR_Pd */ + +/* 'Pe': General Category */ +static const OnigCodePoint CR_Pe[] = { + 70, + 0x0029, 0x0029, + 0x005d, 0x005d, + 0x007d, 0x007d, + 0x0f3b, 0x0f3b, + 0x0f3d, 0x0f3d, + 0x169c, 0x169c, + 0x2046, 0x2046, + 0x207e, 0x207e, + 0x208e, 0x208e, + 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, + 0xfd3f, 0xfd3f, + 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, +}; /* CR_Pe */ + +/* '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, +}; /* CR_Pf */ + +/* '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, +}; /* CR_Pi */ + +/* 'Po': General Category */ +static const OnigCodePoint CR_Po[] = { + 124, + 0x0021, 0x0023, + 0x0025, 0x0027, + 0x002a, 0x002a, + 0x002c, 0x002c, + 0x002e, 0x002f, + 0x003a, 0x003b, + 0x003f, 0x0040, + 0x005c, 0x005c, + 0x00a1, 0x00a1, + 0x00b7, 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, + 0x0964, 0x0965, + 0x0970, 0x0970, + 0x0df4, 0x0df4, + 0x0e4f, 0x0e4f, + 0x0e5a, 0x0e5b, + 0x0f04, 0x0f12, + 0x0f85, 0x0f85, + 0x0fd0, 0x0fd4, + 0x104a, 0x104f, + 0x10fb, 0x10fb, + 0x1361, 0x1368, + 0x166d, 0x166e, + 0x16eb, 0x16ed, + 0x1735, 0x1736, + 0x17d4, 0x17d6, + 0x17d8, 0x17da, + 0x1800, 0x1805, + 0x1807, 0x180a, + 0x1944, 0x1945, + 0x19de, 0x19df, + 0x1a1e, 0x1a1f, + 0x1aa0, 0x1aa6, + 0x1aa8, 0x1aad, + 0x1b5a, 0x1b60, + 0x1c3b, 0x1c3f, + 0x1c7e, 0x1c7f, + 0x1cd3, 0x1cd3, + 0x2016, 0x2017, + 0x2020, 0x2027, + 0x2030, 0x2038, + 0x203b, 0x203e, + 0x2041, 0x2043, + 0x2047, 0x2051, + 0x2053, 0x2053, + 0x2055, 0x205e, + 0x2cf9, 0x2cfc, + 0x2cfe, 0x2cff, + 0x2e00, 0x2e01, + 0x2e06, 0x2e08, + 0x2e0b, 0x2e0b, + 0x2e0e, 0x2e16, + 0x2e18, 0x2e19, + 0x2e1b, 0x2e1b, + 0x2e1e, 0x2e1f, + 0x2e2a, 0x2e2e, + 0x2e30, 0x2e31, + 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, + 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, 0x10101, + 0x1039f, 0x1039f, + 0x103d0, 0x103d0, + 0x10857, 0x10857, + 0x1091f, 0x1091f, + 0x1093f, 0x1093f, + 0x10a50, 0x10a58, + 0x10a7f, 0x10a7f, + 0x10b39, 0x10b3f, + 0x110bb, 0x110bc, + 0x110be, 0x110c1, + 0x12470, 0x12473, +}; /* CR_Po */ + +/* 'Ps': General Category */ +static const OnigCodePoint CR_Ps[] = { + 72, + 0x0028, 0x0028, + 0x005b, 0x005b, + 0x007b, 0x007b, + 0x0f3a, 0x0f3a, + 0x0f3c, 0x0f3c, + 0x169b, 0x169b, + 0x201a, 0x201a, + 0x201e, 0x201e, + 0x2045, 0x2045, + 0x207d, 0x207d, + 0x208d, 0x208d, + 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, + 0x3008, 0x3008, + 0x300a, 0x300a, + 0x300c, 0x300c, + 0x300e, 0x300e, + 0x3010, 0x3010, + 0x3014, 0x3014, + 0x3016, 0x3016, + 0x3018, 0x3018, + 0x301a, 0x301a, + 0x301d, 0x301d, + 0xfd3e, 0xfd3e, + 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, +}; /* CR_Ps */ + +/* 'S': Major Category */ +static const OnigCodePoint CR_S[] = { + 198, + 0x0024, 0x0024, + 0x002b, 0x002b, + 0x003c, 0x003e, + 0x005e, 0x005e, + 0x0060, 0x0060, + 0x007c, 0x007c, + 0x007e, 0x007e, + 0x00a2, 0x00a9, + 0x00ac, 0x00ac, + 0x00ae, 0x00b1, + 0x00b4, 0x00b4, + 0x00b6, 0x00b6, + 0x00b8, 0x00b8, + 0x00d7, 0x00d7, + 0x00f7, 0x00f7, + 0x02c2, 0x02c5, + 0x02d2, 0x02df, + 0x02e5, 0x02eb, + 0x02ed, 0x02ed, + 0x02ef, 0x02ff, + 0x0375, 0x0375, + 0x0384, 0x0385, + 0x03f6, 0x03f6, + 0x0482, 0x0482, + 0x0606, 0x0608, + 0x060b, 0x060b, + 0x060e, 0x060f, + 0x06e9, 0x06e9, + 0x06fd, 0x06fe, + 0x07f6, 0x07f6, + 0x09f2, 0x09f3, + 0x09fa, 0x09fb, + 0x0af1, 0x0af1, + 0x0b70, 0x0b70, + 0x0bf3, 0x0bfa, + 0x0c7f, 0x0c7f, + 0x0cf1, 0x0cf2, + 0x0d79, 0x0d79, + 0x0e3f, 0x0e3f, + 0x0f01, 0x0f03, + 0x0f13, 0x0f17, + 0x0f1a, 0x0f1f, + 0x0f34, 0x0f34, + 0x0f36, 0x0f36, + 0x0f38, 0x0f38, + 0x0fbe, 0x0fc5, + 0x0fc7, 0x0fcc, + 0x0fce, 0x0fcf, + 0x0fd5, 0x0fd8, + 0x109e, 0x109f, + 0x1360, 0x1360, + 0x1390, 0x1399, + 0x17db, 0x17db, + 0x1940, 0x1940, + 0x19e0, 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, 0x20b8, + 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, 0x2328, + 0x232b, 0x23e8, + 0x2400, 0x2426, + 0x2440, 0x244a, + 0x249c, 0x24e9, + 0x2500, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, + 0x2701, 0x2704, + 0x2706, 0x2709, + 0x270c, 0x2727, + 0x2729, 0x274b, + 0x274d, 0x274d, + 0x274f, 0x2752, + 0x2756, 0x275e, + 0x2761, 0x2767, + 0x2794, 0x2794, + 0x2798, 0x27af, + 0x27b1, 0x27be, + 0x27c0, 0x27c4, + 0x27c7, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 0x27e5, + 0x27f0, 0x2982, + 0x2999, 0x29d7, + 0x29dc, 0x29fb, + 0x29fe, 0x2b4c, + 0x2b50, 0x2b59, + 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, 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, + 0xfb29, 0xfb29, + 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, + 0x10102, 0x10102, + 0x10137, 0x1013f, + 0x10179, 0x10189, + 0x10190, 0x1019b, + 0x101d0, 0x101fc, + 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, + 0x1f000, 0x1f02b, + 0x1f030, 0x1f093, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, +}; /* CR_S */ + +/* 'Sc': General Category */ +static const OnigCodePoint CR_Sc[] = { + 16, + 0x0024, 0x0024, + 0x00a2, 0x00a5, + 0x060b, 0x060b, + 0x09f2, 0x09f3, + 0x09fb, 0x09fb, + 0x0af1, 0x0af1, + 0x0bf9, 0x0bf9, + 0x0e3f, 0x0e3f, + 0x17db, 0x17db, + 0x20a0, 0x20b8, + 0xa838, 0xa838, + 0xfdfc, 0xfdfc, + 0xfe69, 0xfe69, + 0xff04, 0xff04, + 0xffe0, 0xffe1, + 0xffe5, 0xffe6, +}; /* CR_Sc */ + +/* 'Sk': General Category */ +static const OnigCodePoint CR_Sk[] = { + 26, + 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, + 0xff3e, 0xff3e, + 0xff40, 0xff40, + 0xffe3, 0xffe3, +}; /* CR_Sk */ + +/* 'Sm': General Category */ +static const OnigCodePoint CR_Sm[] = { + 65, + 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, + 0x2140, 0x2144, + 0x214b, 0x214b, + 0x2190, 0x2194, + 0x219a, 0x219b, + 0x21a0, 0x21a0, + 0x21a3, 0x21a3, + 0x21a6, 0x21a6, + 0x21ae, 0x21ae, + 0x21ce, 0x21cf, + 0x21d2, 0x21d2, + 0x21d4, 0x21d4, + 0x21f4, 0x22ff, + 0x2308, 0x230b, + 0x2320, 0x2321, + 0x237c, 0x237c, + 0x239b, 0x23b3, + 0x23dc, 0x23e1, + 0x25b7, 0x25b7, + 0x25c1, 0x25c1, + 0x25f8, 0x25ff, + 0x266f, 0x266f, + 0x27c0, 0x27c4, + 0x27c7, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 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, +}; /* CR_Sm */ + +/* 'So': General Category */ +static const OnigCodePoint CR_So[] = { + 154, + 0x00a6, 0x00a7, + 0x00a9, 0x00a9, + 0x00ae, 0x00ae, + 0x00b0, 0x00b0, + 0x00b6, 0x00b6, + 0x0482, 0x0482, + 0x060e, 0x060f, + 0x06e9, 0x06e9, + 0x06fd, 0x06fe, + 0x07f6, 0x07f6, + 0x09fa, 0x09fa, + 0x0b70, 0x0b70, + 0x0bf3, 0x0bf8, + 0x0bfa, 0x0bfa, + 0x0c7f, 0x0c7f, + 0x0cf1, 0x0cf2, + 0x0d79, 0x0d79, + 0x0f01, 0x0f03, + 0x0f13, 0x0f17, + 0x0f1a, 0x0f1f, + 0x0f34, 0x0f34, + 0x0f36, 0x0f36, + 0x0f38, 0x0f38, + 0x0fbe, 0x0fc5, + 0x0fc7, 0x0fcc, + 0x0fce, 0x0fcf, + 0x0fd5, 0x0fd8, + 0x109e, 0x109f, + 0x1360, 0x1360, + 0x1390, 0x1399, + 0x1940, 0x1940, + 0x19e0, 0x19ff, + 0x1b61, 0x1b6a, + 0x1b74, 0x1b7c, + 0x2100, 0x2101, + 0x2103, 0x2106, + 0x2108, 0x2109, + 0x2114, 0x2114, + 0x2116, 0x2118, + 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, 0x23e8, + 0x2400, 0x2426, + 0x2440, 0x244a, + 0x249c, 0x24e9, + 0x2500, 0x25b6, + 0x25b8, 0x25c0, + 0x25c2, 0x25f7, + 0x2600, 0x266e, + 0x2670, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, + 0x2701, 0x2704, + 0x2706, 0x2709, + 0x270c, 0x2727, + 0x2729, 0x274b, + 0x274d, 0x274d, + 0x274f, 0x2752, + 0x2756, 0x275e, + 0x2761, 0x2767, + 0x2794, 0x2794, + 0x2798, 0x27af, + 0x27b1, 0x27be, + 0x2800, 0x28ff, + 0x2b00, 0x2b2f, + 0x2b45, 0x2b46, + 0x2b50, 0x2b59, + 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, 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, + 0x10102, 0x10102, + 0x10137, 0x1013f, + 0x10179, 0x10189, + 0x10190, 0x1019b, + 0x101d0, 0x101fc, + 0x1d000, 0x1d0f5, + 0x1d100, 0x1d126, + 0x1d129, 0x1d164, + 0x1d16a, 0x1d16c, + 0x1d183, 0x1d184, + 0x1d18c, 0x1d1a9, + 0x1d1ae, 0x1d1dd, + 0x1d200, 0x1d241, + 0x1d245, 0x1d245, + 0x1d300, 0x1d356, + 0x1f000, 0x1f02b, + 0x1f030, 0x1f093, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, +}; /* CR_So */ + +/* 'Z': Major Category */ +static const OnigCodePoint CR_Z[] = { + 9, + 0x0020, 0x0020, + 0x00a0, 0x00a0, + 0x1680, 0x1680, + 0x180e, 0x180e, + 0x2000, 0x200a, + 0x2028, 0x2029, + 0x202f, 0x202f, + 0x205f, 0x205f, + 0x3000, 0x3000, +}; /* CR_Z */ + +/* 'Zl': General Category */ +static const OnigCodePoint CR_Zl[] = { + 1, + 0x2028, 0x2028, +}; /* CR_Zl */ + +/* 'Zp': General Category */ +static const OnigCodePoint CR_Zp[] = { + 1, + 0x2029, 0x2029, +}; /* CR_Zp */ + +/* 'Zs': General Category */ +static const OnigCodePoint CR_Zs[] = { + 8, + 0x0020, 0x0020, + 0x00a0, 0x00a0, + 0x1680, 0x1680, + 0x180e, 0x180e, + 0x2000, 0x200a, + 0x202f, 0x202f, + 0x205f, 0x205f, + 0x3000, 0x3000, +}; /* CR_Zs */ + +/* 'Math': Derived Property */ +static const OnigCodePoint CR_Math[] = { + 105, + 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, + 0x210a, 0x2113, + 0x2115, 0x2115, + 0x2119, 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, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 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, +}; /* CR_Math */ + +/* 'Alphabetic': Derived Property */ +static const OnigCodePoint CR_Alphabetic[] = { + 474, + 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, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x05b0, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0610, 0x061a, + 0x0621, 0x0657, + 0x0659, 0x065e, + 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, + 0x0900, 0x0939, + 0x093d, 0x094c, + 0x094e, 0x094e, + 0x0950, 0x0950, + 0x0955, 0x0955, + 0x0958, 0x0963, + 0x0971, 0x0972, + 0x0979, 0x097f, + 0x0981, 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, + 0x0c01, 0x0c03, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4c, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c82, 0x0c83, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbd, 0x0cc4, + 0x0cc6, 0x0cc8, + 0x0cca, 0x0ccc, + 0x0cd5, 0x0cd6, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce3, + 0x0d02, 0x0d03, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4c, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f40, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f81, + 0x0f88, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x1000, 0x1036, + 0x1038, 0x1038, + 0x103b, 0x103f, + 0x1050, 0x1062, + 0x1065, 0x1068, + 0x106e, 0x1086, + 0x108e, 0x108e, + 0x109c, 0x109d, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, 0x16f0, + 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, 0x191c, + 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, + 0x1bae, 0x1baf, + 0x1c00, 0x1c35, + 0x1c4d, 0x1c4f, + 0x1c5a, 0x1c7d, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf2, + 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, 0x2094, + 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, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa61f, + 0xa62a, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa67f, 0xa697, + 0xa6a0, 0xa6ef, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 0xa801, + 0xa803, 0xa805, + 0xa807, 0xa80a, + 0xa80c, 0xa827, + 0xa840, 0xa873, + 0xa880, 0xa8c3, + 0xa8f2, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa90a, 0xa92a, + 0xa930, 0xa952, + 0xa960, 0xa97c, + 0xa980, 0xa9bf, + 0xa9cf, 0xa9cf, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaabe, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabea, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0x1031e, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11082, 0x110b8, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Alphabetic */ + +/* 'Lowercase': Derived Property */ +static const OnigCodePoint CR_Lowercase[] = { + 602, + 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, + 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, + 0x2090, 0x2094, + 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, + 0x2d00, 0x2d25, + 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, + 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, + 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, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xff41, 0xff5a, + 0x10428, 0x1044f, + 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, +}; /* CR_Lowercase */ -/* 'Cs': General Category */ -static const OnigCodePoint CR_Cs[] = { - 4, - 0xd800, 0xd800, - 0xdb7f, 0xdb80, - 0xdbff, 0xdc00, - 0xdfff, 0xdfff, -}; /* CR_Cs */ +/* 'Uppercase': Derived Property */ +static const OnigCodePoint CR_Uppercase[] = { + 596, + 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, + 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, + 0x0531, 0x0556, + 0x10a0, 0x10c5, + 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, + 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, + 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, + 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, + 0xff21, 0xff3a, + 0x10400, 0x10427, + 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, +}; /* CR_Uppercase */ -/* 'L': Major Category */ -static const OnigCodePoint CR_L[] = { - 394, +/* 'Cased': Derived Property */ +static const OnigCodePoint CR_Cased[] = { + 110, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, @@ -4748,12 +6576,14 @@ static const OnigCodePoint CR_L[] = { 0x00ba, 0x00ba, 0x00c0, 0x00d6, 0x00d8, 0x00f6, - 0x00f8, 0x02c1, - 0x02c6, 0x02d1, + 0x00f8, 0x01ba, + 0x01bc, 0x01bf, + 0x01c4, 0x0293, + 0x0295, 0x02b8, + 0x02c0, 0x02c1, 0x02e0, 0x02e4, - 0x02ec, 0x02ec, - 0x02ee, 0x02ee, - 0x0370, 0x0374, + 0x0345, 0x0345, + 0x0370, 0x0373, 0x0376, 0x0377, 0x037a, 0x037d, 0x0386, 0x0386, @@ -4762,388 +6592,1511 @@ static const OnigCodePoint CR_L[] = { 0x038e, 0x03a1, 0x03a3, 0x03f5, 0x03f7, 0x0481, - 0x048a, 0x0523, + 0x048a, 0x0525, 0x0531, 0x0556, - 0x0559, 0x0559, 0x0561, 0x0587, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0621, 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, - 0x0904, 0x0939, - 0x093d, 0x093d, - 0x0950, 0x0950, - 0x0958, 0x0961, - 0x0971, 0x0972, - 0x097b, 0x097f, - 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, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3d, 0x0c3d, - 0x0c58, 0x0c59, - 0x0c60, 0x0c61, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbd, 0x0cbd, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3d, 0x0d3d, - 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, + 0x10a0, 0x10c5, + 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, + 0x2090, 0x2094, + 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, + 0x2d00, 0x2d25, + 0xa640, 0xa65f, + 0xa662, 0xa66d, + 0xa680, 0xa697, + 0xa722, 0xa787, + 0xa78b, 0xa78c, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xff21, 0xff3a, + 0xff41, 0xff5a, + 0x10400, 0x1044f, + 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, +}; /* CR_Cased */ + +/* 'Case_Ignorable': Derived Property */ +static const OnigCodePoint CR_Case_Ignorable[] = { + 266, + 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, 0x0603, + 0x0610, 0x061a, + 0x0640, 0x0640, + 0x064b, 0x065e, + 0x0670, 0x0670, + 0x06d6, 0x06e8, + 0x06ea, 0x06ed, + 0x070f, 0x070f, + 0x0711, 0x0711, + 0x0730, 0x074a, + 0x07a6, 0x07b0, + 0x07eb, 0x07f5, + 0x07fa, 0x07fa, + 0x0816, 0x082d, + 0x0900, 0x0902, + 0x093c, 0x093c, + 0x0941, 0x0948, + 0x094d, 0x094d, + 0x0951, 0x0955, + 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, + 0x0c3e, 0x0c40, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c62, 0x0c63, + 0x0cbc, 0x0cbc, + 0x0cbf, 0x0cbf, + 0x0cc6, 0x0cc6, + 0x0ccc, 0x0ccd, + 0x0ce2, 0x0ce3, + 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, - 0x0edc, 0x0edd, - 0x0f00, 0x0f00, - 0x0f40, 0x0f47, - 0x0f49, 0x0f6c, - 0x0f88, 0x0f8b, - 0x1000, 0x102a, - 0x103f, 0x103f, - 0x1050, 0x1055, - 0x105a, 0x105d, - 0x1061, 0x1061, - 0x1065, 0x1066, - 0x106e, 0x1070, - 0x1075, 0x1081, - 0x108e, 0x108e, - 0x10a0, 0x10c5, - 0x10d0, 0x10fa, + 0x0ec8, 0x0ecd, + 0x0f18, 0x0f19, + 0x0f35, 0x0f35, + 0x0f37, 0x0f37, + 0x0f39, 0x0f39, + 0x0f71, 0x0f7e, + 0x0f80, 0x0f84, + 0x0f86, 0x0f87, + 0x0f90, 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, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 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, - 0x1380, 0x138f, - 0x13a0, 0x13f4, - 0x1401, 0x166c, - 0x166f, 0x1676, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x1700, 0x170c, - 0x170e, 0x1711, - 0x1720, 0x1731, - 0x1740, 0x1751, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1780, 0x17b3, + 0x135f, 0x135f, + 0x1712, 0x1714, + 0x1732, 0x1734, + 0x1752, 0x1753, + 0x1772, 0x1773, + 0x17b4, 0x17b5, + 0x17b7, 0x17bd, + 0x17c6, 0x17c6, + 0x17c9, 0x17d3, 0x17d7, 0x17d7, - 0x17dc, 0x17dc, - 0x1820, 0x1877, - 0x1880, 0x18a8, - 0x18aa, 0x18aa, - 0x1900, 0x191c, - 0x1950, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19c1, 0x19c7, - 0x1a00, 0x1a16, - 0x1b05, 0x1b33, - 0x1b45, 0x1b4b, - 0x1b83, 0x1ba0, - 0x1bae, 0x1baf, - 0x1c00, 0x1c23, - 0x1c4d, 0x1c4f, - 0x1c5a, 0x1c7d, - 0x1d00, 0x1dbf, - 0x1e00, 0x1f15, + 0x17dd, 0x17dd, + 0x180b, 0x180d, + 0x1843, 0x1843, + 0x18a9, 0x18a9, + 0x1920, 0x1922, + 0x1927, 0x1928, + 0x1932, 0x1932, + 0x1939, 0x193b, + 0x1a17, 0x1a18, + 0x1a56, 0x1a56, + 0x1a58, 0x1a5e, + 0x1a60, 0x1a60, + 0x1a62, 0x1a62, + 0x1a65, 0x1a6c, + 0x1a73, 0x1a7c, + 0x1a7f, 0x1a7f, + 0x1aa7, 0x1aa7, + 0x1b00, 0x1b03, + 0x1b34, 0x1b34, + 0x1b36, 0x1b3a, + 0x1b3c, 0x1b3c, + 0x1b42, 0x1b42, + 0x1b6b, 0x1b73, + 0x1b80, 0x1b81, + 0x1ba2, 0x1ba5, + 0x1ba8, 0x1ba9, + 0x1c2c, 0x1c33, + 0x1c36, 0x1c37, + 0x1c78, 0x1c7d, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1ce0, + 0x1ce2, 0x1ce8, + 0x1ced, 0x1ced, + 0x1d2c, 0x1d61, + 0x1d78, 0x1d78, + 0x1d9b, 0x1de6, + 0x1dfd, 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, + 0x206a, 0x206f, + 0x2071, 0x2071, + 0x207f, 0x207f, + 0x2090, 0x2094, + 0x20d0, 0x20f0, + 0x2c7d, 0x2c7d, + 0x2cef, 0x2cf1, + 0x2d6f, 0x2d6f, + 0x2de0, 0x2dff, + 0x2e2f, 0x2e2f, + 0x3005, 0x3005, + 0x302a, 0x302f, + 0x3031, 0x3035, + 0x303b, 0x303b, + 0x3099, 0x309e, + 0x30fc, 0x30fe, + 0xa015, 0xa015, + 0xa4f8, 0xa4fd, + 0xa60c, 0xa60c, + 0xa66f, 0xa672, + 0xa67c, 0xa67d, + 0xa67f, 0xa67f, + 0xa6f0, 0xa6f1, + 0xa700, 0xa721, + 0xa770, 0xa770, + 0xa788, 0xa78a, + 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, + 0xaa29, 0xaa2e, + 0xaa31, 0xaa32, + 0xaa35, 0xaa36, + 0xaa43, 0xaa43, + 0xaa4c, 0xaa4c, + 0xaa70, 0xaa70, + 0xaab0, 0xaab0, + 0xaab2, 0xaab4, + 0xaab7, 0xaab8, + 0xaabe, 0xaabf, + 0xaac1, 0xaac1, + 0xaadd, 0xaadd, + 0xabe5, 0xabe5, + 0xabe8, 0xabe8, + 0xabed, 0xabed, + 0xfb1e, 0xfb1e, + 0xfe00, 0xfe0f, + 0xfe13, 0xfe13, + 0xfe20, 0xfe26, + 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, + 0x10a01, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a0f, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x11080, 0x11081, + 0x110b3, 0x110b6, + 0x110b9, 0x110ba, + 0x110bd, 0x110bd, + 0x1d167, 0x1d169, + 0x1d173, 0x1d182, + 0x1d185, 0x1d18b, + 0x1d1aa, 0x1d1ad, + 0x1d242, 0x1d244, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, + 0xe0100, 0xe01ef, +}; /* CR_Case_Ignorable */ + +/* 'Changes_When_Lowercased': Derived Property */ +static const OnigCodePoint CR_Changes_When_Lowercased[] = { + 557, + 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, + 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, + 0x0531, 0x0556, + 0x10a0, 0x10c5, + 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, - 0x1f20, 0x1f45, + 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, + 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, + 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, + 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, + 0xff21, 0xff3a, + 0x10400, 0x10427, +}; /* CR_Changes_When_Lowercased */ + +/* 'Changes_When_Uppercased': Derived Property */ +static const OnigCodePoint CR_Changes_When_Uppercased[] = { + 573, + 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, 0x025b, + 0x0260, 0x0260, + 0x0263, 0x0263, + 0x0268, 0x0269, + 0x026b, 0x026b, + 0x026f, 0x026f, + 0x0271, 0x0272, + 0x0275, 0x0275, + 0x027d, 0x027d, + 0x0280, 0x0280, + 0x0283, 0x0283, + 0x0288, 0x028c, + 0x0292, 0x0292, + 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, 0x03f2, + 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, + 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, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, + 0x1f60, 0x1f67, + 0x1f70, 0x1f7d, 0x1f80, 0x1fb4, - 0x1fb6, 0x1fbc, + 0x1fb6, 0x1fb7, + 0x1fbc, 0x1fbc, 0x1fbe, 0x1fbe, 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fcc, + 0x1fc6, 0x1fc7, + 0x1fcc, 0x1fcc, 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fe0, 0x1fec, + 0x1fd6, 0x1fd7, + 0x1fe0, 0x1fe7, 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffc, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x2094, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210a, 0x2113, - 0x2115, 0x2115, - 0x2119, 0x211d, - 0x2124, 0x2124, - 0x2126, 0x2126, - 0x2128, 0x2128, - 0x212a, 0x212d, - 0x212f, 0x2139, - 0x213c, 0x213f, - 0x2145, 0x2149, + 0x1ff6, 0x1ff7, + 0x1ffc, 0x1ffc, 0x214e, 0x214e, - 0x2183, 0x2184, - 0x2c00, 0x2c2e, + 0x2170, 0x217f, + 0x2184, 0x2184, + 0x24d0, 0x24e9, 0x2c30, 0x2c5e, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0x2c80, 0x2ce4, - 0x2d00, 0x2d25, - 0x2d30, 0x2d65, - 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, 0x31b7, - 0x31f0, 0x31ff, - 0x3400, 0x3400, - 0x4db5, 0x4db5, - 0x4e00, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa48c, - 0xa500, 0xa60c, - 0xa610, 0xa61f, - 0xa62a, 0xa62b, - 0xa640, 0xa65f, - 0xa662, 0xa66e, - 0xa67f, 0xa697, - 0xa717, 0xa71f, - 0xa722, 0xa788, - 0xa78b, 0xa78c, - 0xa7fb, 0xa801, - 0xa803, 0xa805, - 0xa807, 0xa80a, - 0xa80c, 0xa822, - 0xa840, 0xa873, - 0xa882, 0xa8b3, - 0xa90a, 0xa925, - 0xa930, 0xa946, - 0xaa00, 0xaa28, - 0xaa40, 0xaa42, - 0xaa44, 0xaa4b, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, + 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, + 0x2d00, 0x2d25, + 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, + 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, + 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, 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, 0x1031e, - 0x10330, 0x10340, - 0x10342, 0x10349, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x10400, 0x1049d, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10900, 0x10915, - 0x10920, 0x10939, - 0x10a00, 0x10a00, - 0x10a10, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x12000, 0x1236e, - 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, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, -}; /* CR_L */ + 0x10428, 0x1044f, +}; /* CR_Changes_When_Uppercased */ -/* 'Ll': General Category */ -static const OnigCodePoint CR_Ll[] = { - 598, +/* 'Changes_When_Titlecased': Derived Property */ +static const OnigCodePoint CR_Changes_When_Titlecased[] = { + 574, 0x0061, 0x007a, - 0x00aa, 0x00aa, 0x00b5, 0x00b5, - 0x00ba, 0x00ba, 0x00df, 0x00f6, 0x00f8, 0x00ff, 0x0101, 0x0101, @@ -5173,7 +8126,7 @@ static const OnigCodePoint CR_Ll[] = { 0x0131, 0x0131, 0x0133, 0x0133, 0x0135, 0x0135, - 0x0137, 0x0138, + 0x0137, 0x0137, 0x013a, 0x013a, 0x013c, 0x013c, 0x013e, 0x013e, @@ -5211,24 +8164,25 @@ static const OnigCodePoint CR_Ll[] = { 0x0183, 0x0183, 0x0185, 0x0185, 0x0188, 0x0188, - 0x018c, 0x018d, + 0x018c, 0x018c, 0x0192, 0x0192, 0x0195, 0x0195, - 0x0199, 0x019b, + 0x0199, 0x019a, 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, + 0x01b9, 0x01b9, + 0x01bd, 0x01bd, + 0x01bf, 0x01bf, + 0x01c4, 0x01c4, + 0x01c6, 0x01c7, + 0x01c9, 0x01ca, 0x01cc, 0x01cc, 0x01ce, 0x01ce, 0x01d0, 0x01d0, @@ -5246,7 +8200,7 @@ static const OnigCodePoint CR_Ll[] = { 0x01e9, 0x01e9, 0x01eb, 0x01eb, 0x01ed, 0x01ed, - 0x01ef, 0x01f0, + 0x01ef, 0x01f1, 0x01f3, 0x01f3, 0x01f5, 0x01f5, 0x01f9, 0x01f9, @@ -5269,7 +8223,6 @@ static const OnigCodePoint CR_Ll[] = { 0x021b, 0x021b, 0x021d, 0x021d, 0x021f, 0x021f, - 0x0221, 0x0221, 0x0223, 0x0223, 0x0225, 0x0225, 0x0227, 0x0227, @@ -5278,7 +8231,7 @@ static const OnigCodePoint CR_Ll[] = { 0x022d, 0x022d, 0x022f, 0x022f, 0x0231, 0x0231, - 0x0233, 0x0239, + 0x0233, 0x0233, 0x023c, 0x023c, 0x023f, 0x0240, 0x0242, 0x0242, @@ -5286,8 +8239,23 @@ static const OnigCodePoint CR_Ll[] = { 0x0249, 0x0249, 0x024b, 0x024b, 0x024d, 0x024d, - 0x024f, 0x0293, - 0x0295, 0x02af, + 0x024f, 0x0254, + 0x0256, 0x0257, + 0x0259, 0x0259, + 0x025b, 0x025b, + 0x0260, 0x0260, + 0x0263, 0x0263, + 0x0268, 0x0269, + 0x026b, 0x026b, + 0x026f, 0x026f, + 0x0271, 0x0272, + 0x0275, 0x0275, + 0x027d, 0x027d, + 0x0280, 0x0280, + 0x0283, 0x0283, + 0x0288, 0x028c, + 0x0292, 0x0292, + 0x0345, 0x0345, 0x0371, 0x0371, 0x0373, 0x0373, 0x0377, 0x0377, @@ -5307,10 +8275,10 @@ static const OnigCodePoint CR_Ll[] = { 0x03e9, 0x03e9, 0x03eb, 0x03eb, 0x03ed, 0x03ed, - 0x03ef, 0x03f3, + 0x03ef, 0x03f2, 0x03f5, 0x03f5, 0x03f8, 0x03f8, - 0x03fb, 0x03fc, + 0x03fb, 0x03fb, 0x0430, 0x045f, 0x0461, 0x0461, 0x0463, 0x0463, @@ -5405,10 +8373,10 @@ static const OnigCodePoint CR_Ll[] = { 0x051f, 0x051f, 0x0521, 0x0521, 0x0523, 0x0523, + 0x0525, 0x0525, 0x0561, 0x0587, - 0x1d00, 0x1d2b, - 0x1d62, 0x1d77, - 0x1d79, 0x1d9a, + 0x1d79, 0x1d79, + 0x1d7d, 0x1d7d, 0x1e01, 0x1e01, 0x1e03, 0x1e03, 0x1e05, 0x1e05, @@ -5483,8 +8451,7 @@ static const OnigCodePoint CR_Ll[] = { 0x1e8f, 0x1e8f, 0x1e91, 0x1e91, 0x1e93, 0x1e93, - 0x1e95, 0x1e9d, - 0x1e9f, 0x1e9f, + 0x1e95, 0x1e9b, 0x1ea1, 0x1ea1, 0x1ea3, 0x1ea3, 0x1ea5, 0x1ea5, @@ -5553,27 +8520,18 @@ static const OnigCodePoint CR_Ll[] = { 0x1fe0, 0x1fe7, 0x1ff2, 0x1ff4, 0x1ff6, 0x1ff7, - 0x2071, 0x2071, - 0x207f, 0x207f, - 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, 0x2c7c, + 0x2c73, 0x2c73, + 0x2c76, 0x2c76, 0x2c81, 0x2c81, 0x2c83, 0x2c83, 0x2c85, 0x2c85, @@ -5623,7 +8581,9 @@ static const OnigCodePoint CR_Ll[] = { 0x2cdd, 0x2cdd, 0x2cdf, 0x2cdf, 0x2ce1, 0x2ce1, - 0x2ce3, 0x2ce4, + 0x2ce3, 0x2ce3, + 0x2cec, 0x2cec, + 0x2cee, 0x2cee, 0x2d00, 0x2d25, 0xa641, 0xa641, 0xa643, 0xa643, @@ -5665,7 +8625,7 @@ static const OnigCodePoint CR_Ll[] = { 0xa729, 0xa729, 0xa72b, 0xa72b, 0xa72d, 0xa72d, - 0xa72f, 0xa731, + 0xa72f, 0xa72f, 0xa733, 0xa733, 0xa735, 0xa735, 0xa737, 0xa737, @@ -5697,7 +8657,6 @@ static const OnigCodePoint CR_Ll[] = { 0xa76b, 0xa76b, 0xa76d, 0xa76d, 0xa76f, 0xa76f, - 0xa771, 0xa778, 0xa77a, 0xa77a, 0xa77c, 0xa77c, 0xa77f, 0xa77f, @@ -5709,119 +8668,1186 @@ static const OnigCodePoint CR_Ll[] = { 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xff41, 0xff5a, - 0x10428, 0x1044f, - 0x1d41a, 0x1d433, - 0x1d44e, 0x1d454, - 0x1d456, 0x1d467, - 0x1d482, 0x1d49b, - 0x1d4b6, 0x1d4b9, + 0x10428, 0x1044f, +}; /* CR_Changes_When_Titlecased */ + +/* 'Changes_When_Casefolded': Derived Property */ +static const OnigCodePoint CR_Changes_When_Casefolded[] = { + 568, + 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, + 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, + 0x0531, 0x0556, + 0x0587, 0x0587, + 0x10a0, 0x10c5, + 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, + 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, + 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, + 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, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xff21, 0xff3a, + 0x10400, 0x10427, +}; /* CR_Changes_When_Casefolded */ + +/* 'Changes_When_Casemapped': Derived Property */ +static const OnigCodePoint CR_Changes_When_Casemapped[] = { + 97, + 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, 0x025b, + 0x0260, 0x0260, + 0x0263, 0x0263, + 0x0268, 0x0269, + 0x026b, 0x026b, + 0x026f, 0x026f, + 0x0271, 0x0272, + 0x0275, 0x0275, + 0x027d, 0x027d, + 0x0280, 0x0280, + 0x0283, 0x0283, + 0x0288, 0x028c, + 0x0292, 0x0292, + 0x0345, 0x0345, + 0x0370, 0x0373, + 0x0376, 0x0377, + 0x037b, 0x037d, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03d1, + 0x03d5, 0x03f2, + 0x03f4, 0x03f5, + 0x03f7, 0x03fb, + 0x03fd, 0x0481, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0561, 0x0587, + 0x10a0, 0x10c5, + 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, + 0x2d00, 0x2d25, + 0xa640, 0xa65f, + 0xa662, 0xa66d, + 0xa680, 0xa697, + 0xa722, 0xa72f, + 0xa732, 0xa76f, + 0xa779, 0xa787, + 0xa78b, 0xa78c, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xff21, 0xff3a, + 0xff41, 0xff5a, + 0x10400, 0x1044f, +}; /* CR_Changes_When_Casemapped */ + +/* 'ID_Start': Derived Property */ +static const OnigCodePoint CR_ID_Start[] = { + 424, + 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, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0621, 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, + 0x0904, 0x0939, + 0x093d, 0x093d, + 0x0950, 0x0950, + 0x0958, 0x0961, + 0x0971, 0x0972, + 0x0979, 0x097f, + 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, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c3d, + 0x0c58, 0x0c59, + 0x0c60, 0x0c61, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbd, 0x0cbd, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce1, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d3d, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f40, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f88, 0x0f8b, + 0x1000, 0x102a, + 0x103f, 0x103f, + 0x1050, 0x1055, + 0x105a, 0x105d, + 0x1061, 0x1061, + 0x1065, 0x1066, + 0x106e, 0x1070, + 0x1075, 0x1081, + 0x108e, 0x108e, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, 0x16f0, + 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, 0x191c, + 0x1950, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19c1, 0x19c7, + 0x1a00, 0x1a16, + 0x1a20, 0x1a54, + 0x1aa7, 0x1aa7, + 0x1b05, 0x1b33, + 0x1b45, 0x1b4b, + 0x1b83, 0x1ba0, + 0x1bae, 0x1baf, + 0x1c00, 0x1c23, + 0x1c4d, 0x1c4f, + 0x1c5a, 0x1c7d, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf1, + 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, 0x2094, + 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, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa61f, + 0xa62a, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa67f, 0xa697, + 0xa6a0, 0xa6ef, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 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, + 0xaa00, 0xaa28, + 0xaa40, 0xaa42, + 0xaa44, 0xaa4b, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaaaf, + 0xaab1, 0xaab1, + 0xaab5, 0xaab6, + 0xaab9, 0xaabd, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabe2, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0x1031e, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a00, + 0x10a10, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11083, 0x110af, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 0x1d400, 0x1d454, + 0x1d456, 0x1d49c, + 0x1d49e, 0x1d49f, + 0x1d4a2, 0x1d4a2, + 0x1d4a5, 0x1d4a6, + 0x1d4a9, 0x1d4ac, + 0x1d4ae, 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, + 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, 0x1d6e1, + 0x1d6dc, 0x1d6fa, 0x1d6fc, 0x1d714, - 0x1d716, 0x1d71b, + 0x1d716, 0x1d734, 0x1d736, 0x1d74e, - 0x1d750, 0x1d755, + 0x1d750, 0x1d76e, 0x1d770, 0x1d788, - 0x1d78a, 0x1d78f, + 0x1d78a, 0x1d7a8, 0x1d7aa, 0x1d7c2, - 0x1d7c4, 0x1d7c9, - 0x1d7cb, 0x1d7cb, -}; /* CR_Ll */ - -/* 'Lm': General Category */ -static const OnigCodePoint CR_Lm[] = { - 39, - 0x02b0, 0x02c1, - 0x02c6, 0x02d1, - 0x02e0, 0x02e4, - 0x02ec, 0x02ec, - 0x02ee, 0x02ee, - 0x0374, 0x0374, - 0x037a, 0x037a, - 0x0559, 0x0559, - 0x0640, 0x0640, - 0x06e5, 0x06e6, - 0x07f4, 0x07f5, - 0x07fa, 0x07fa, - 0x0971, 0x0971, - 0x0e46, 0x0e46, - 0x0ec6, 0x0ec6, - 0x10fc, 0x10fc, - 0x17d7, 0x17d7, - 0x1843, 0x1843, - 0x1c78, 0x1c7d, - 0x1d2c, 0x1d61, - 0x1d78, 0x1d78, - 0x1d9b, 0x1dbf, - 0x2090, 0x2094, - 0x2c7d, 0x2c7d, - 0x2d6f, 0x2d6f, - 0x2e2f, 0x2e2f, - 0x3005, 0x3005, - 0x3031, 0x3035, - 0x303b, 0x303b, - 0x309d, 0x309e, - 0x30fc, 0x30fe, - 0xa015, 0xa015, - 0xa60c, 0xa60c, - 0xa67f, 0xa67f, - 0xa717, 0xa71f, - 0xa770, 0xa770, - 0xa788, 0xa788, - 0xff70, 0xff70, - 0xff9e, 0xff9f, -}; /* CR_Lm */ + 0x1d7c4, 0x1d7cb, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_ID_Start */ -/* 'Lo': General Category */ -static const OnigCodePoint CR_Lo[] = { - 286, - 0x01bb, 0x01bb, - 0x01c0, 0x01c3, - 0x0294, 0x0294, +/* 'ID_Continue': Derived Property */ +static const OnigCodePoint CR_ID_Continue[] = { + 506, + 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, + 0x0386, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x0483, 0x0487, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, 0x05d0, 0x05ea, 0x05f0, 0x05f2, - 0x0621, 0x063f, - 0x0641, 0x064a, - 0x066e, 0x066f, - 0x0671, 0x06d3, - 0x06d5, 0x06d5, - 0x06ee, 0x06ef, - 0x06fa, 0x06fc, + 0x0610, 0x061a, + 0x0621, 0x065e, + 0x0660, 0x0669, + 0x066e, 0x06d3, + 0x06d5, 0x06dc, + 0x06df, 0x06e8, + 0x06ea, 0x06fc, 0x06ff, 0x06ff, - 0x0710, 0x0710, - 0x0712, 0x072f, - 0x074d, 0x07a5, - 0x07b1, 0x07b1, - 0x07ca, 0x07ea, - 0x0904, 0x0939, - 0x093d, 0x093d, - 0x0950, 0x0950, - 0x0958, 0x0961, - 0x0972, 0x0972, - 0x097b, 0x097f, + 0x0710, 0x074a, + 0x074d, 0x07b1, + 0x07c0, 0x07f5, + 0x07fa, 0x07fa, + 0x0800, 0x082d, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0963, + 0x0966, 0x096f, + 0x0971, 0x0972, + 0x0979, 0x097f, + 0x0981, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, 0x0993, 0x09a8, 0x09aa, 0x09b0, 0x09b2, 0x09b2, 0x09b6, 0x09b9, - 0x09bd, 0x09bd, - 0x09ce, 0x09ce, + 0x09bc, 0x09c4, + 0x09c7, 0x09c8, + 0x09cb, 0x09ce, + 0x09d7, 0x09d7, 0x09dc, 0x09dd, - 0x09df, 0x09e1, - 0x09f0, 0x09f1, + 0x09df, 0x09e3, + 0x09e6, 0x09f1, + 0x0a01, 0x0a03, 0x0a05, 0x0a0a, 0x0a0f, 0x0a10, 0x0a13, 0x0a28, @@ -5829,29 +9855,43 @@ static const OnigCodePoint CR_Lo[] = { 0x0a32, 0x0a33, 0x0a35, 0x0a36, 0x0a38, 0x0a39, + 0x0a3c, 0x0a3c, + 0x0a3e, 0x0a42, + 0x0a47, 0x0a48, + 0x0a4b, 0x0a4d, + 0x0a51, 0x0a51, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e, - 0x0a72, 0x0a74, + 0x0a66, 0x0a75, + 0x0a81, 0x0a83, 0x0a85, 0x0a8d, 0x0a8f, 0x0a91, 0x0a93, 0x0aa8, 0x0aaa, 0x0ab0, 0x0ab2, 0x0ab3, 0x0ab5, 0x0ab9, - 0x0abd, 0x0abd, + 0x0abc, 0x0ac5, + 0x0ac7, 0x0ac9, + 0x0acb, 0x0acd, 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae1, + 0x0ae0, 0x0ae3, + 0x0ae6, 0x0aef, + 0x0b01, 0x0b03, 0x0b05, 0x0b0c, 0x0b0f, 0x0b10, 0x0b13, 0x0b28, 0x0b2a, 0x0b30, 0x0b32, 0x0b33, 0x0b35, 0x0b39, - 0x0b3d, 0x0b3d, + 0x0b3c, 0x0b44, + 0x0b47, 0x0b48, + 0x0b4b, 0x0b4d, + 0x0b56, 0x0b57, 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, + 0x0b5f, 0x0b63, + 0x0b66, 0x0b6f, 0x0b71, 0x0b71, - 0x0b83, 0x0b83, + 0x0b82, 0x0b83, 0x0b85, 0x0b8a, 0x0b8e, 0x0b90, 0x0b92, 0x0b95, @@ -5861,38 +9901,64 @@ static const OnigCodePoint CR_Lo[] = { 0x0ba3, 0x0ba4, 0x0ba8, 0x0baa, 0x0bae, 0x0bb9, + 0x0bbe, 0x0bc2, + 0x0bc6, 0x0bc8, + 0x0bca, 0x0bcd, 0x0bd0, 0x0bd0, + 0x0bd7, 0x0bd7, + 0x0be6, 0x0bef, + 0x0c01, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, 0x0c12, 0x0c28, 0x0c2a, 0x0c33, 0x0c35, 0x0c39, - 0x0c3d, 0x0c3d, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, 0x0c58, 0x0c59, - 0x0c60, 0x0c61, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c82, 0x0c83, 0x0c85, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, 0x0cb5, 0x0cb9, - 0x0cbd, 0x0cbd, + 0x0cbc, 0x0cc4, + 0x0cc6, 0x0cc8, + 0x0cca, 0x0ccd, + 0x0cd5, 0x0cd6, 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, + 0x0ce0, 0x0ce3, + 0x0ce6, 0x0cef, + 0x0d02, 0x0d03, 0x0d05, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d28, 0x0d2a, 0x0d39, - 0x0d3d, 0x0d3d, - 0x0d60, 0x0d61, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4d, + 0x0d57, 0x0d57, + 0x0d60, 0x0d63, + 0x0d66, 0x0d6f, 0x0d7a, 0x0d7f, + 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, - 0x0e01, 0x0e30, - 0x0e32, 0x0e33, - 0x0e40, 0x0e45, + 0x0dca, 0x0dca, + 0x0dcf, 0x0dd4, + 0x0dd6, 0x0dd6, + 0x0dd8, 0x0ddf, + 0x0df2, 0x0df3, + 0x0e01, 0x0e3a, + 0x0e40, 0x0e4e, + 0x0e50, 0x0e59, 0x0e81, 0x0e82, 0x0e84, 0x0e84, 0x0e87, 0x0e88, @@ -5904,29 +9970,32 @@ static const OnigCodePoint CR_Lo[] = { 0x0ea5, 0x0ea5, 0x0ea7, 0x0ea7, 0x0eaa, 0x0eab, - 0x0ead, 0x0eb0, - 0x0eb2, 0x0eb3, - 0x0ebd, 0x0ebd, + 0x0ead, 0x0eb9, + 0x0ebb, 0x0ebd, 0x0ec0, 0x0ec4, + 0x0ec6, 0x0ec6, + 0x0ec8, 0x0ecd, + 0x0ed0, 0x0ed9, 0x0edc, 0x0edd, 0x0f00, 0x0f00, - 0x0f40, 0x0f47, + 0x0f18, 0x0f19, + 0x0f20, 0x0f29, + 0x0f35, 0x0f35, + 0x0f37, 0x0f37, + 0x0f39, 0x0f39, + 0x0f3e, 0x0f47, 0x0f49, 0x0f6c, - 0x0f88, 0x0f8b, - 0x1000, 0x102a, - 0x103f, 0x103f, - 0x1050, 0x1055, - 0x105a, 0x105d, - 0x1061, 0x1061, - 0x1065, 0x1066, - 0x106e, 0x1070, - 0x1075, 0x1081, - 0x108e, 0x108e, + 0x0f71, 0x0f84, + 0x0f86, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fc6, 0x0fc6, + 0x1000, 0x1049, + 0x1050, 0x109d, + 0x10a0, 0x10c5, 0x10d0, 0x10fa, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1200, 0x1248, + 0x10fc, 0x10fc, + 0x1100, 0x1248, 0x124a, 0x124d, 0x1250, 0x1256, 0x1258, 0x1258, @@ -5942,39 +10011,104 @@ static const OnigCodePoint CR_Lo[] = { 0x12d8, 0x1310, 0x1312, 0x1315, 0x1318, 0x135a, + 0x135f, 0x135f, + 0x1369, 0x1371, 0x1380, 0x138f, 0x13a0, 0x13f4, 0x1401, 0x166c, - 0x166f, 0x1676, + 0x166f, 0x167f, 0x1681, 0x169a, 0x16a0, 0x16ea, + 0x16ee, 0x16f0, 0x1700, 0x170c, - 0x170e, 0x1711, - 0x1720, 0x1731, - 0x1740, 0x1751, + 0x170e, 0x1714, + 0x1720, 0x1734, + 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, + 0x1772, 0x1773, 0x1780, 0x17b3, - 0x17dc, 0x17dc, - 0x1820, 0x1842, - 0x1844, 0x1877, - 0x1880, 0x18a8, - 0x18aa, 0x18aa, + 0x17b6, 0x17d3, + 0x17d7, 0x17d7, + 0x17dc, 0x17dd, + 0x17e0, 0x17e9, + 0x180b, 0x180d, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18aa, + 0x18b0, 0x18f5, 0x1900, 0x191c, - 0x1950, 0x196d, + 0x1920, 0x192b, + 0x1930, 0x193b, + 0x1946, 0x196d, 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19c1, 0x19c7, - 0x1a00, 0x1a16, - 0x1b05, 0x1b33, - 0x1b45, 0x1b4b, - 0x1b83, 0x1ba0, - 0x1bae, 0x1baf, - 0x1c00, 0x1c23, - 0x1c4d, 0x1c4f, - 0x1c5a, 0x1c77, - 0x2135, 0x2138, + 0x1980, 0x19ab, + 0x19b0, 0x19c9, + 0x19d0, 0x19da, + 0x1a00, 0x1a1b, + 0x1a20, 0x1a5e, + 0x1a60, 0x1a7c, + 0x1a7f, 0x1a89, + 0x1a90, 0x1a99, + 0x1aa7, 0x1aa7, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b59, + 0x1b6b, 0x1b73, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c37, + 0x1c40, 0x1c49, + 0x1c4d, 0x1c7d, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1cf2, + 0x1d00, 0x1de6, + 0x1dfd, 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, 0x2094, + 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, 0x2cf1, + 0x2d00, 0x2d25, 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, 0x2d80, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, @@ -5984,44 +10118,63 @@ static const OnigCodePoint CR_Lo[] = { 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, - 0x3006, 0x3006, - 0x303c, 0x303c, + 0x2de0, 0x2dff, + 0x3005, 0x3007, + 0x3021, 0x302f, + 0x3031, 0x3035, + 0x3038, 0x303c, 0x3041, 0x3096, - 0x309f, 0x309f, + 0x3099, 0x309f, 0x30a1, 0x30fa, - 0x30ff, 0x30ff, + 0x30fc, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x31a0, 0x31b7, 0x31f0, 0x31ff, - 0x3400, 0x3400, - 0x4db5, 0x4db5, - 0x4e00, 0x4e00, - 0x9fc3, 0x9fc3, - 0xa000, 0xa014, - 0xa016, 0xa48c, - 0xa500, 0xa60b, - 0xa610, 0xa61f, - 0xa62a, 0xa62b, - 0xa66e, 0xa66e, - 0xa7fb, 0xa801, - 0xa803, 0xa805, - 0xa807, 0xa80a, - 0xa80c, 0xa822, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66f, + 0xa67c, 0xa67d, + 0xa67f, 0xa697, + 0xa6a0, 0xa6f1, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 0xa827, 0xa840, 0xa873, - 0xa882, 0xa8b3, - 0xa90a, 0xa925, - 0xa930, 0xa946, - 0xaa00, 0xaa28, - 0xaa40, 0xaa42, - 0xaa44, 0xaa4b, - 0xac00, 0xac00, - 0xd7a3, 0xd7a3, + 0xa880, 0xa8c4, + 0xa8d0, 0xa8d9, + 0xa8e0, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa900, 0xa92d, + 0xa930, 0xa953, + 0xa960, 0xa97c, + 0xa980, 0xa9c0, + 0xa9cf, 0xa9d9, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabea, + 0xabec, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, + 0xfa30, 0xfa6d, 0xfa70, 0xfad9, - 0xfb1d, 0xfb1d, - 0xfb1f, 0xfb28, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xfb1d, 0xfb28, 0xfb2a, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, @@ -6032,11 +10185,17 @@ static const OnigCodePoint CR_Lo[] = { 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0, 0xfdfb, + 0xfe00, 0xfe0f, + 0xfe20, 0xfe26, + 0xfe33, 0xfe34, + 0xfe4d, 0xfe4f, 0xfe70, 0xfe74, 0xfe76, 0xfefc, - 0xff66, 0xff6f, - 0xff71, 0xff9d, - 0xffa0, 0xffbe, + 0xff10, 0xff19, + 0xff21, 0xff3a, + 0xff3f, 0xff3f, + 0xff41, 0xff5a, + 0xff66, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, @@ -6048,2276 +10207,4838 @@ static const OnigCodePoint CR_Lo[] = { 0x1003f, 0x1004d, 0x10050, 0x1005d, 0x10080, 0x100fa, + 0x10140, 0x10174, + 0x101fd, 0x101fd, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x10300, 0x1031e, - 0x10330, 0x10340, - 0x10342, 0x10349, + 0x10330, 0x1034a, 0x10380, 0x1039d, 0x103a0, 0x103c3, 0x103c8, 0x103cf, - 0x10450, 0x1049d, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, 0x10800, 0x10805, 0x10808, 0x10808, 0x1080a, 0x10835, 0x10837, 0x10838, 0x1083c, 0x1083c, - 0x1083f, 0x1083f, + 0x1083f, 0x10855, 0x10900, 0x10915, 0x10920, 0x10939, - 0x10a00, 0x10a00, - 0x10a10, 0x10a13, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11080, 0x110ba, 0x12000, 0x1236e, - 0x20000, 0x20000, - 0x2a6d6, 0x2a6d6, - 0x2f800, 0x2fa1d, -}; /* CR_Lo */ - -/* '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, -}; /* CR_Lt */ - -/* 'Lu': General Category */ -static const OnigCodePoint CR_Lu[] = { - 591, - 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, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, + 0xe0100, 0xe01ef, +}; /* CR_ID_Continue */ + +/* 'XID_Start': Derived Property */ +static const OnigCodePoint CR_XID_Start[] = { + 431, + 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, 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, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x048a, 0x0525, 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0621, 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, + 0x0904, 0x0939, + 0x093d, 0x093d, + 0x0950, 0x0950, + 0x0958, 0x0961, + 0x0971, 0x0972, + 0x0979, 0x097f, + 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, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c3d, + 0x0c58, 0x0c59, + 0x0c60, 0x0c61, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbd, 0x0cbd, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce1, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d3d, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f40, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f88, 0x0f8b, + 0x1000, 0x102a, + 0x103f, 0x103f, + 0x1050, 0x1055, + 0x105a, 0x105d, + 0x1061, 0x1061, + 0x1065, 0x1066, + 0x106e, 0x1070, + 0x1075, 0x1081, + 0x108e, 0x108e, 0x10a0, 0x10c5, - 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, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, 0x16f0, + 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, 0x191c, + 0x1950, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19c1, 0x19c7, + 0x1a00, 0x1a16, + 0x1a20, 0x1a54, + 0x1aa7, 0x1aa7, + 0x1b05, 0x1b33, + 0x1b45, 0x1b4b, + 0x1b83, 0x1ba0, + 0x1bae, 0x1baf, + 0x1c00, 0x1c23, + 0x1c4d, 0x1c4f, + 0x1c5a, 0x1c7d, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf1, + 0x1d00, 0x1dbf, + 0x1e00, 0x1f15, 0x1f18, 0x1f1d, - 0x1f28, 0x1f2f, - 0x1f38, 0x1f3f, + 0x1f20, 0x1f45, 0x1f48, 0x1f4d, + 0x1f50, 0x1f57, 0x1f59, 0x1f59, 0x1f5b, 0x1f5b, 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f5f, - 0x1f68, 0x1f6f, - 0x1fb8, 0x1fbb, - 0x1fc8, 0x1fcb, - 0x1fd8, 0x1fdb, - 0x1fe8, 0x1fec, - 0x1ff8, 0x1ffb, + 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, 0x2094, 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, + 0x210a, 0x2113, + 0x2115, 0x2115, + 0x2118, 0x211d, + 0x2124, 0x2124, + 0x2126, 0x2126, + 0x2128, 0x2128, + 0x212a, 0x2139, + 0x213c, 0x213f, + 0x2145, 0x2149, + 0x214e, 0x214e, + 0x2160, 0x2188, 0x2c00, 0x2c2e, - 0x2c60, 0x2c60, - 0x2c62, 0x2c64, - 0x2c67, 0x2c67, - 0x2c69, 0x2c69, - 0x2c6b, 0x2c6b, - 0x2c6d, 0x2c6f, - 0x2c72, 0x2c72, - 0x2c75, 0x2c75, - 0x2c80, 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, - 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, - 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, - 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, + 0x2c30, 0x2c5e, + 0x2c60, 0x2ce4, + 0x2ceb, 0x2cee, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa61f, + 0xa62a, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa67f, 0xa697, + 0xa6a0, 0xa6ef, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 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, + 0xaa00, 0xaa28, + 0xaa40, 0xaa42, + 0xaa44, 0xaa4b, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaaaf, + 0xaab1, 0xaab1, + 0xaab5, 0xaab6, + 0xaab9, 0xaabd, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabe2, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0x1031e, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a00, + 0x10a10, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11083, 0x110af, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_XID_Start */ + +/* 'XID_Continue': Derived Property */ +static const OnigCodePoint CR_XID_Continue[] = { + 513, + 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, + 0x0386, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x0483, 0x0487, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0610, 0x061a, + 0x0621, 0x065e, + 0x0660, 0x0669, + 0x066e, 0x06d3, + 0x06d5, 0x06dc, + 0x06df, 0x06e8, + 0x06ea, 0x06fc, + 0x06ff, 0x06ff, + 0x0710, 0x074a, + 0x074d, 0x07b1, + 0x07c0, 0x07f5, + 0x07fa, 0x07fa, + 0x0800, 0x082d, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0963, + 0x0966, 0x096f, + 0x0971, 0x0972, + 0x0979, 0x097f, + 0x0981, 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, + 0x0c01, 0x0c03, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c82, 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, + 0x0d02, 0x0d03, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4d, + 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, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f18, 0x0f19, + 0x0f20, 0x0f29, + 0x0f35, 0x0f35, + 0x0f37, 0x0f37, + 0x0f39, 0x0f39, + 0x0f3e, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f84, + 0x0f86, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fc6, 0x0fc6, + 0x1000, 0x1049, + 0x1050, 0x109d, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, + 0x1369, 0x1371, + 0x1380, 0x138f, + 0x13a0, 0x13f4, + 0x1401, 0x166c, + 0x166f, 0x167f, + 0x1681, 0x169a, + 0x16a0, 0x16ea, + 0x16ee, 0x16f0, + 0x1700, 0x170c, + 0x170e, 0x1714, + 0x1720, 0x1734, + 0x1740, 0x1753, + 0x1760, 0x176c, + 0x176e, 0x1770, + 0x1772, 0x1773, + 0x1780, 0x17b3, + 0x17b6, 0x17d3, + 0x17d7, 0x17d7, + 0x17dc, 0x17dd, + 0x17e0, 0x17e9, + 0x180b, 0x180d, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18aa, + 0x18b0, 0x18f5, + 0x1900, 0x191c, + 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, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b59, + 0x1b6b, 0x1b73, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c37, + 0x1c40, 0x1c49, + 0x1c4d, 0x1c7d, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1cf2, + 0x1d00, 0x1de6, + 0x1dfd, 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, 0x2094, + 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, 0x2cf1, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, + 0x2d80, 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, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66f, + 0xa67c, 0xa67d, + 0xa67f, 0xa697, + 0xa6a0, 0xa6f1, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 0xa827, + 0xa840, 0xa873, + 0xa880, 0xa8c4, + 0xa8d0, 0xa8d9, + 0xa8e0, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa900, 0xa92d, + 0xa930, 0xa953, + 0xa960, 0xa97c, + 0xa980, 0xa9c0, + 0xa9cf, 0xa9d9, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabea, + 0xabec, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 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, 0xfe26, + 0xfe33, 0xfe34, + 0xfe4d, 0xfe4f, + 0xfe71, 0xfe71, + 0xfe73, 0xfe73, + 0xfe77, 0xfe77, + 0xfe79, 0xfe79, + 0xfe7b, 0xfe7b, + 0xfe7d, 0xfe7d, + 0xfe7f, 0xfefc, + 0xff10, 0xff19, 0xff21, 0xff3a, - 0x10400, 0x10427, - 0x1d400, 0x1d419, - 0x1d434, 0x1d44d, - 0x1d468, 0x1d481, - 0x1d49c, 0x1d49c, + 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, + 0x10300, 0x1031e, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11080, 0x110ba, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, + 0xe0100, 0xe01ef, +}; /* CR_XID_Continue */ + +/* 'Default_Ignorable_Code_Point': Derived Property */ +static const OnigCodePoint CR_Default_Ignorable_Code_Point[] = { + 15, + 0x00ad, 0x00ad, + 0x034f, 0x034f, + 0x115f, 0x1160, + 0x17b4, 0x17b5, + 0x180b, 0x180d, + 0x200b, 0x200f, + 0x202a, 0x202e, + 0x2060, 0x206f, + 0x3164, 0x3164, + 0xfe00, 0xfe0f, + 0xfeff, 0xfeff, + 0xffa0, 0xffa0, + 0xfff0, 0xfff8, + 0x1d173, 0x1d17a, + 0xe0000, 0xe0fff, +}; /* CR_Default_Ignorable_Code_Point */ + +/* 'Grapheme_Extend': Derived Property */ +static const OnigCodePoint CR_Grapheme_Extend[] = { + 206, + 0x0300, 0x036f, + 0x0483, 0x0489, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x0610, 0x061a, + 0x064b, 0x065e, + 0x0670, 0x0670, + 0x06d6, 0x06dc, + 0x06de, 0x06e4, + 0x06e7, 0x06e8, + 0x06ea, 0x06ed, + 0x0711, 0x0711, + 0x0730, 0x074a, + 0x07a6, 0x07b0, + 0x07eb, 0x07f3, + 0x0816, 0x0819, + 0x081b, 0x0823, + 0x0825, 0x0827, + 0x0829, 0x082d, + 0x0900, 0x0902, + 0x093c, 0x093c, + 0x0941, 0x0948, + 0x094d, 0x094d, + 0x0951, 0x0955, + 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, + 0x0c3e, 0x0c40, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c62, 0x0c63, + 0x0cbc, 0x0cbc, + 0x0cbf, 0x0cbf, + 0x0cc2, 0x0cc2, + 0x0cc6, 0x0cc6, + 0x0ccc, 0x0ccd, + 0x0cd5, 0x0cd6, + 0x0ce2, 0x0ce3, + 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, + 0x0f90, 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, + 0x135f, 0x135f, + 0x1712, 0x1714, + 0x1732, 0x1734, + 0x1752, 0x1753, + 0x1772, 0x1773, + 0x17b7, 0x17bd, + 0x17c6, 0x17c6, + 0x17c9, 0x17d3, + 0x17dd, 0x17dd, + 0x180b, 0x180d, + 0x18a9, 0x18a9, + 0x1920, 0x1922, + 0x1927, 0x1928, + 0x1932, 0x1932, + 0x1939, 0x193b, + 0x1a17, 0x1a18, + 0x1a56, 0x1a56, + 0x1a58, 0x1a5e, + 0x1a60, 0x1a60, + 0x1a62, 0x1a62, + 0x1a65, 0x1a6c, + 0x1a73, 0x1a7c, + 0x1a7f, 0x1a7f, + 0x1b00, 0x1b03, + 0x1b34, 0x1b34, + 0x1b36, 0x1b3a, + 0x1b3c, 0x1b3c, + 0x1b42, 0x1b42, + 0x1b6b, 0x1b73, + 0x1b80, 0x1b81, + 0x1ba2, 0x1ba5, + 0x1ba8, 0x1ba9, + 0x1c2c, 0x1c33, + 0x1c36, 0x1c37, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1ce0, + 0x1ce2, 0x1ce8, + 0x1ced, 0x1ced, + 0x1dc0, 0x1de6, + 0x1dfd, 0x1dff, + 0x200c, 0x200d, + 0x20d0, 0x20f0, + 0x2cef, 0x2cf1, + 0x2de0, 0x2dff, + 0x302a, 0x302f, + 0x3099, 0x309a, + 0xa66f, 0xa672, + 0xa67c, 0xa67d, + 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, + 0xaa29, 0xaa2e, + 0xaa31, 0xaa32, + 0xaa35, 0xaa36, + 0xaa43, 0xaa43, + 0xaa4c, 0xaa4c, + 0xaab0, 0xaab0, + 0xaab2, 0xaab4, + 0xaab7, 0xaab8, + 0xaabe, 0xaabf, + 0xaac1, 0xaac1, + 0xabe5, 0xabe5, + 0xabe8, 0xabe8, + 0xabed, 0xabed, + 0xfb1e, 0xfb1e, + 0xfe00, 0xfe0f, + 0xfe20, 0xfe26, + 0xff9e, 0xff9f, + 0x101fd, 0x101fd, + 0x10a01, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a0f, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x11080, 0x11081, + 0x110b3, 0x110b6, + 0x110b9, 0x110ba, + 0x1d165, 0x1d165, + 0x1d167, 0x1d169, + 0x1d16e, 0x1d172, + 0x1d17b, 0x1d182, + 0x1d185, 0x1d18b, + 0x1d1aa, 0x1d1ad, + 0x1d242, 0x1d244, + 0xe0100, 0xe01ef, +}; /* CR_Grapheme_Extend */ + +/* 'Grapheme_Base': Derived Property */ +static const OnigCodePoint CR_Grapheme_Base[] = { + 567, + 0x0020, 0x007e, + 0x00a0, 0x00ac, + 0x00ae, 0x02ff, + 0x0370, 0x0377, + 0x037a, 0x037e, + 0x0384, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x0482, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x055f, + 0x0561, 0x0587, + 0x0589, 0x058a, + 0x05be, 0x05be, + 0x05c0, 0x05c0, + 0x05c3, 0x05c3, + 0x05c6, 0x05c6, + 0x05d0, 0x05ea, + 0x05f0, 0x05f4, + 0x0606, 0x060f, + 0x061b, 0x061b, + 0x061e, 0x061f, + 0x0621, 0x064a, + 0x0660, 0x066f, + 0x0671, 0x06d5, + 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, + 0x0903, 0x0939, + 0x093d, 0x0940, + 0x0949, 0x094c, + 0x094e, 0x094e, + 0x0950, 0x0950, + 0x0958, 0x0961, + 0x0964, 0x0972, + 0x0979, 0x097f, + 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, 0x0aef, + 0x0af1, 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, 0x0b71, + 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, 0x0c33, + 0x0c35, 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, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d3d, + 0x0d3f, 0x0d40, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4c, + 0x0d60, 0x0d61, + 0x0d66, 0x0d75, + 0x0d79, 0x0d7f, + 0x0d82, 0x0d83, + 0x0d85, 0x0d96, + 0x0d9a, 0x0db1, + 0x0db3, 0x0dbb, + 0x0dbd, 0x0dbd, + 0x0dc0, 0x0dc6, + 0x0dd0, 0x0dd1, + 0x0dd8, 0x0dde, + 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, 0x0edd, + 0x0f00, 0x0f17, + 0x0f1a, 0x0f34, + 0x0f36, 0x0f36, + 0x0f38, 0x0f38, + 0x0f3a, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f7f, 0x0f7f, + 0x0f85, 0x0f85, + 0x0f88, 0x0f8b, + 0x0fbe, 0x0fc5, + 0x0fc7, 0x0fcc, + 0x0fce, 0x0fd8, + 0x1000, 0x102c, + 0x1031, 0x1031, + 0x1038, 0x1038, + 0x103b, 0x103c, + 0x103f, 0x1057, + 0x105a, 0x105d, + 0x1061, 0x1070, + 0x1075, 0x1081, + 0x1083, 0x1084, + 0x1087, 0x108c, + 0x108e, 0x109c, + 0x109e, 0x10c5, + 0x10d0, 0x10fc, + 0x1100, 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, 0x16f0, + 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, + 0x180e, 0x180e, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18a8, + 0x18aa, 0x18aa, + 0x18b0, 0x18f5, + 0x1900, 0x191c, + 0x1923, 0x1926, + 0x1929, 0x192b, + 0x1930, 0x1931, + 0x1933, 0x1938, + 0x1940, 0x1940, + 0x1944, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19b0, 0x19c9, + 0x19d0, 0x19da, + 0x19de, 0x1a16, + 0x1a19, 0x1a1b, + 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, 0x1bb9, + 0x1c00, 0x1c2b, + 0x1c34, 0x1c35, + 0x1c3b, 0x1c49, + 0x1c4d, 0x1c7f, + 0x1cd3, 0x1cd3, + 0x1ce1, 0x1ce1, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf2, + 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, 0x2094, + 0x20a0, 0x20b8, + 0x2100, 0x2189, + 0x2190, 0x23e8, + 0x2400, 0x2426, + 0x2440, 0x244a, + 0x2460, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, + 0x2701, 0x2704, + 0x2706, 0x2709, + 0x270c, 0x2727, + 0x2729, 0x274b, + 0x274d, 0x274d, + 0x274f, 0x2752, + 0x2756, 0x275e, + 0x2761, 0x2794, + 0x2798, 0x27af, + 0x27b1, 0x27be, + 0x27c0, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 0x2b4c, + 0x2b50, 0x2b59, + 0x2c00, 0x2c2e, + 0x2c30, 0x2c5e, + 0x2c60, 0x2cee, + 0x2cf9, 0x2d25, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, + 0x2d80, 0x2d96, + 0x2da0, 0x2da6, + 0x2da8, 0x2dae, + 0x2db0, 0x2db6, + 0x2db8, 0x2dbe, + 0x2dc0, 0x2dc6, + 0x2dc8, 0x2dce, + 0x2dd0, 0x2dd6, + 0x2dd8, 0x2dde, + 0x2e00, 0x2e31, + 0x2e80, 0x2e99, + 0x2e9b, 0x2ef3, + 0x2f00, 0x2fd5, + 0x2ff0, 0x2ffb, + 0x3000, 0x3029, + 0x3030, 0x303f, + 0x3041, 0x3096, + 0x309b, 0x30ff, + 0x3105, 0x312d, + 0x3131, 0x318e, + 0x3190, 0x31b7, + 0x31c0, 0x31e3, + 0x31f0, 0x321e, + 0x3220, 0x32fe, + 0x3300, 0x4db5, + 0x4dc0, 0x9fcb, + 0xa000, 0xa48c, + 0xa490, 0xa4c6, + 0xa4d0, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa673, 0xa673, + 0xa67e, 0xa697, + 0xa6a0, 0xa6ef, + 0xa6f2, 0xa6f7, + 0xa700, 0xa78c, + 0xa7fb, 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, 0xa9df, + 0xaa00, 0xaa28, + 0xaa2f, 0xaa30, + 0xaa33, 0xaa34, + 0xaa40, 0xaa42, + 0xaa44, 0xaa4b, + 0xaa4d, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa5c, 0xaa7b, + 0xaa80, 0xaaaf, + 0xaab1, 0xaab1, + 0xaab5, 0xaab6, + 0xaab9, 0xaabd, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadf, + 0xabc0, 0xabe4, + 0xabe6, 0xabe7, + 0xabe9, 0xabec, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 0xfa6d, + 0xfa70, 0xfad9, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xfb1d, 0xfb1d, + 0xfb1f, 0xfb36, + 0xfb38, 0xfb3c, + 0xfb3e, 0xfb3e, + 0xfb40, 0xfb41, + 0xfb43, 0xfb44, + 0xfb46, 0xfbb1, + 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, 0x1018a, + 0x10190, 0x1019b, + 0x101d0, 0x101fc, + 0x10280, 0x1029c, + 0x102a0, 0x102d0, + 0x10300, 0x1031e, + 0x10320, 0x10323, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x1039f, 0x103c3, + 0x103c8, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10857, 0x1085f, + 0x10900, 0x1091b, + 0x1091f, 0x10939, + 0x1093f, 0x1093f, + 0x10a00, 0x10a00, + 0x10a10, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a40, 0x10a47, + 0x10a50, 0x10a58, + 0x10a60, 0x10a7f, + 0x10b00, 0x10b35, + 0x10b39, 0x10b55, + 0x10b58, 0x10b72, + 0x10b78, 0x10b7f, + 0x10c00, 0x10c48, + 0x10e60, 0x10e7e, + 0x11082, 0x110b2, + 0x110b7, 0x110b8, + 0x110bb, 0x110bc, + 0x110be, 0x110c1, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x12470, 0x12473, + 0x13000, 0x1342e, + 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, 0x1d4b5, - 0x1d4d0, 0x1d4e9, - 0x1d504, 0x1d505, + 0x1d4ae, 0x1d4b9, + 0x1d4bb, 0x1d4bb, + 0x1d4bd, 0x1d4c3, + 0x1d4c5, 0x1d505, 0x1d507, 0x1d50a, 0x1d50d, 0x1d514, 0x1d516, 0x1d51c, - 0x1d538, 0x1d539, + 0x1d51e, 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, -}; /* CR_Lu */ + 0x1d552, 0x1d6a5, + 0x1d6a8, 0x1d7cb, + 0x1d7ce, 0x1d7ff, + 0x1f000, 0x1f02b, + 0x1f030, 0x1f093, + 0x1f100, 0x1f10a, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Grapheme_Base */ + +/* 'Grapheme_Link': Derived Property */ +static const OnigCodePoint CR_Grapheme_Link[] = { + 26, + 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, 0x1baa, + 0xa806, 0xa806, + 0xa8c4, 0xa8c4, + 0xa953, 0xa953, + 0xa9c0, 0xa9c0, + 0xabed, 0xabed, + 0x10a3f, 0x10a3f, + 0x110b9, 0x110b9, +}; /* CR_Grapheme_Link */ + +/* 'Common': Script */ +static const OnigCodePoint CR_Common[] = { + 159, + 0x0000, 0x0040, + 0x005b, 0x0060, + 0x007b, 0x00a9, + 0x00ab, 0x00b9, + 0x00bb, 0x00bf, + 0x00d7, 0x00d7, + 0x00f7, 0x00f7, + 0x02b9, 0x02df, + 0x02e5, 0x02ff, + 0x0374, 0x0374, + 0x037e, 0x037e, + 0x0385, 0x0385, + 0x0387, 0x0387, + 0x0589, 0x0589, + 0x0600, 0x0603, + 0x060c, 0x060c, + 0x061b, 0x061b, + 0x061f, 0x061f, + 0x0640, 0x0640, + 0x0660, 0x0669, + 0x06dd, 0x06dd, + 0x0964, 0x0965, + 0x0970, 0x0970, + 0x0cf1, 0x0cf2, + 0x0e3f, 0x0e3f, + 0x0fd5, 0x0fd8, + 0x10fb, 0x10fb, + 0x16eb, 0x16ed, + 0x1735, 0x1736, + 0x1802, 0x1803, + 0x1805, 0x1805, + 0x1cd3, 0x1cd3, + 0x1ce1, 0x1ce1, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf2, + 0x2000, 0x200b, + 0x200e, 0x2064, + 0x206a, 0x2070, + 0x2074, 0x207e, + 0x2080, 0x208e, + 0x20a0, 0x20b8, + 0x2100, 0x2125, + 0x2127, 0x2129, + 0x212c, 0x2131, + 0x2133, 0x214d, + 0x214f, 0x215f, + 0x2189, 0x2189, + 0x2190, 0x23e8, + 0x2400, 0x2426, + 0x2440, 0x244a, + 0x2460, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, + 0x2701, 0x2704, + 0x2706, 0x2709, + 0x270c, 0x2727, + 0x2729, 0x274b, + 0x274d, 0x274d, + 0x274f, 0x2752, + 0x2756, 0x275e, + 0x2761, 0x2794, + 0x2798, 0x27af, + 0x27b1, 0x27be, + 0x27c0, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 0x27ff, + 0x2900, 0x2b4c, + 0x2b50, 0x2b59, + 0x2e00, 0x2e31, + 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, + 0xfd3e, 0xfd3f, + 0xfdfd, 0xfdfd, + 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, + 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, + 0x1f100, 0x1f10a, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, +}; /* CR_Common */ + +/* 'Latin': Script */ +static const OnigCodePoint CR_Latin[] = { + 28, + 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, 0x2094, + 0x212a, 0x212b, + 0x2132, 0x2132, + 0x214e, 0x214e, + 0x2160, 0x2188, + 0x2c60, 0x2c7f, + 0xa722, 0xa787, + 0xa78b, 0xa78c, + 0xa7fb, 0xa7ff, + 0xfb00, 0xfb06, + 0xff21, 0xff3a, + 0xff41, 0xff5a, +}; /* CR_Latin */ + +/* 'Greek': Script */ +static const OnigCodePoint CR_Greek[] = { + 33, + 0x0370, 0x0373, + 0x0375, 0x0377, + 0x037a, 0x037d, + 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, + 0x10140, 0x1018a, + 0x1d200, 0x1d245, +}; /* CR_Greek */ + +/* 'Cyrillic': Script */ +static const OnigCodePoint CR_Cyrillic[] = { + 8, + 0x0400, 0x0484, + 0x0487, 0x0525, + 0x1d2b, 0x1d2b, + 0x1d78, 0x1d78, + 0x2de0, 0x2dff, + 0xa640, 0xa65f, + 0xa662, 0xa673, + 0xa67c, 0xa697, +}; /* CR_Cyrillic */ -/* 'M': Major Category */ -static const OnigCodePoint CR_M[] = { - 161, - 0x0300, 0x036f, - 0x0483, 0x0489, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x0610, 0x061a, - 0x064b, 0x065e, - 0x0670, 0x0670, - 0x06d6, 0x06dc, - 0x06de, 0x06e4, - 0x06e7, 0x06e8, - 0x06ea, 0x06ed, - 0x0711, 0x0711, - 0x0730, 0x074a, - 0x07a6, 0x07b0, - 0x07eb, 0x07f3, - 0x0901, 0x0903, - 0x093c, 0x093c, - 0x093e, 0x094d, - 0x0951, 0x0954, - 0x0962, 0x0963, +/* 'Armenian': Script */ +static const OnigCodePoint CR_Armenian[] = { + 5, + 0x0531, 0x0556, + 0x0559, 0x055f, + 0x0561, 0x0587, + 0x058a, 0x058a, + 0xfb13, 0xfb17, +}; /* CR_Armenian */ + +/* '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, +}; /* CR_Hebrew */ + +/* 'Arabic': Script */ +static const OnigCodePoint CR_Arabic[] = { + 18, + 0x0606, 0x060b, + 0x060d, 0x061a, + 0x061e, 0x061e, + 0x0621, 0x063f, + 0x0641, 0x064a, + 0x0656, 0x065e, + 0x066a, 0x066f, + 0x0671, 0x06dc, + 0x06de, 0x06ff, + 0x0750, 0x077f, + 0xfb50, 0xfbb1, + 0xfbd3, 0xfd3d, + 0xfd50, 0xfd8f, + 0xfd92, 0xfdc7, + 0xfdf0, 0xfdfc, + 0xfe70, 0xfe74, + 0xfe76, 0xfefc, + 0x10e60, 0x10e7e, +}; /* CR_Arabic */ + +/* 'Syriac': Script */ +static const OnigCodePoint CR_Syriac[] = { + 3, + 0x0700, 0x070d, + 0x070f, 0x074a, + 0x074d, 0x074f, +}; /* CR_Syriac */ + +/* 'Thaana': Script */ +static const OnigCodePoint CR_Thaana[] = { + 1, + 0x0780, 0x07b1, +}; /* CR_Thaana */ + +/* 'Devanagari': Script */ +static const OnigCodePoint CR_Devanagari[] = { + 9, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0950, + 0x0953, 0x0955, + 0x0958, 0x0963, + 0x0966, 0x096f, + 0x0971, 0x0972, + 0x0979, 0x097f, + 0xa8e0, 0xa8fb, +}; /* CR_Devanagari */ + +/* 'Bengali': Script */ +static const OnigCodePoint CR_Bengali[] = { + 14, 0x0981, 0x0983, - 0x09bc, 0x09bc, - 0x09be, 0x09c4, + 0x0985, 0x098c, + 0x098f, 0x0990, + 0x0993, 0x09a8, + 0x09aa, 0x09b0, + 0x09b2, 0x09b2, + 0x09b6, 0x09b9, + 0x09bc, 0x09c4, 0x09c7, 0x09c8, - 0x09cb, 0x09cd, + 0x09cb, 0x09ce, 0x09d7, 0x09d7, - 0x09e2, 0x09e3, + 0x09dc, 0x09dd, + 0x09df, 0x09e3, + 0x09e6, 0x09fb, +}; /* CR_Bengali */ + +/* '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, - 0x0a70, 0x0a71, - 0x0a75, 0x0a75, + 0x0a59, 0x0a5c, + 0x0a5e, 0x0a5e, + 0x0a66, 0x0a75, +}; /* CR_Gurmukhi */ + +/* 'Gujarati': Script */ +static const OnigCodePoint CR_Gujarati[] = { + 14, 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, - 0x0c01, 0x0c03, - 0x0c3e, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c62, 0x0c63, - 0x0c82, 0x0c83, - 0x0cbc, 0x0cbc, - 0x0cbe, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0ce2, 0x0ce3, - 0x0d02, 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, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x102b, 0x103e, - 0x1056, 0x1059, - 0x105e, 0x1060, - 0x1062, 0x1064, - 0x1067, 0x106d, - 0x1071, 0x1074, - 0x1082, 0x108d, - 0x108f, 0x108f, - 0x135f, 0x135f, - 0x1712, 0x1714, - 0x1732, 0x1734, - 0x1752, 0x1753, - 0x1772, 0x1773, - 0x17b6, 0x17d3, - 0x17dd, 0x17dd, - 0x180b, 0x180d, - 0x18a9, 0x18a9, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x19b0, 0x19c0, - 0x19c8, 0x19c9, - 0x1a17, 0x1a1b, - 0x1b00, 0x1b04, - 0x1b34, 0x1b44, - 0x1b6b, 0x1b73, - 0x1b80, 0x1b82, - 0x1ba1, 0x1baa, - 0x1c24, 0x1c37, - 0x1dc0, 0x1de6, - 0x1dfe, 0x1dff, - 0x20d0, 0x20f0, - 0x2de0, 0x2dff, - 0x302a, 0x302f, - 0x3099, 0x309a, - 0xa66f, 0xa672, - 0xa67c, 0xa67d, - 0xa802, 0xa802, - 0xa806, 0xa806, - 0xa80b, 0xa80b, - 0xa823, 0xa827, - 0xa880, 0xa881, - 0xa8b4, 0xa8c4, - 0xa926, 0xa92d, - 0xa947, 0xa953, - 0xaa29, 0xaa36, - 0xaa43, 0xaa43, - 0xaa4c, 0xaa4d, - 0xfb1e, 0xfb1e, - 0xfe00, 0xfe0f, - 0xfe20, 0xfe26, - 0x101fd, 0x101fd, - 0x10a01, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a0f, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, - 0x1d165, 0x1d169, - 0x1d16d, 0x1d172, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, - 0xe0100, 0xe01ef, -}; /* CR_M */ + 0x0a85, 0x0a8d, + 0x0a8f, 0x0a91, + 0x0a93, 0x0aa8, + 0x0aaa, 0x0ab0, + 0x0ab2, 0x0ab3, + 0x0ab5, 0x0ab9, + 0x0abc, 0x0ac5, + 0x0ac7, 0x0ac9, + 0x0acb, 0x0acd, + 0x0ad0, 0x0ad0, + 0x0ae0, 0x0ae3, + 0x0ae6, 0x0aef, + 0x0af1, 0x0af1, +}; /* CR_Gujarati */ -/* 'Mc': General Category */ -static const OnigCodePoint CR_Mc[] = { - 85, - 0x0903, 0x0903, - 0x093e, 0x0940, - 0x0949, 0x094c, - 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, +/* '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, 0x0b4c, - 0x0b57, 0x0b57, - 0x0bbe, 0x0bbf, - 0x0bc1, 0x0bc2, + 0x0b4b, 0x0b4d, + 0x0b56, 0x0b57, + 0x0b5c, 0x0b5d, + 0x0b5f, 0x0b63, + 0x0b66, 0x0b71, +}; /* CR_Oriya */ + +/* '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, 0x0bcc, + 0x0bca, 0x0bcd, + 0x0bd0, 0x0bd0, 0x0bd7, 0x0bd7, + 0x0be6, 0x0bfa, +}; /* CR_Tamil */ + +/* 'Telugu': Script */ +static const OnigCodePoint CR_Telugu[] = { + 14, 0x0c01, 0x0c03, - 0x0c41, 0x0c44, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c78, 0x0c7f, +}; /* CR_Telugu */ + +/* 'Kannada': Script */ +static const OnigCodePoint CR_Kannada[] = { + 13, 0x0c82, 0x0c83, - 0x0cbe, 0x0cbe, - 0x0cc0, 0x0cc4, - 0x0cc7, 0x0cc8, - 0x0cca, 0x0ccb, + 0x0c85, 0x0c8c, + 0x0c8e, 0x0c90, + 0x0c92, 0x0ca8, + 0x0caa, 0x0cb3, + 0x0cb5, 0x0cb9, + 0x0cbc, 0x0cc4, + 0x0cc6, 0x0cc8, + 0x0cca, 0x0ccd, 0x0cd5, 0x0cd6, + 0x0cde, 0x0cde, + 0x0ce0, 0x0ce3, + 0x0ce6, 0x0cef, +}; /* CR_Kannada */ + +/* 'Malayalam': Script */ +static const OnigCodePoint CR_Malayalam[] = { + 12, 0x0d02, 0x0d03, - 0x0d3e, 0x0d40, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, 0x0d46, 0x0d48, - 0x0d4a, 0x0d4c, + 0x0d4a, 0x0d4d, 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, - 0x17b6, 0x17b6, - 0x17be, 0x17c5, - 0x17c7, 0x17c8, - 0x1923, 0x1926, - 0x1929, 0x192b, - 0x1930, 0x1931, - 0x1933, 0x1938, - 0x19b0, 0x19c0, - 0x19c8, 0x19c9, - 0x1a19, 0x1a1b, - 0x1b04, 0x1b04, - 0x1b35, 0x1b35, - 0x1b3b, 0x1b3b, - 0x1b3d, 0x1b41, - 0x1b43, 0x1b44, - 0x1b82, 0x1b82, - 0x1ba1, 0x1ba1, - 0x1ba6, 0x1ba7, - 0x1baa, 0x1baa, - 0x1c24, 0x1c2b, - 0x1c34, 0x1c35, - 0xa823, 0xa824, - 0xa827, 0xa827, - 0xa880, 0xa881, - 0xa8b4, 0xa8c3, - 0xa952, 0xa953, - 0xaa2f, 0xaa30, - 0xaa33, 0xaa34, - 0xaa4d, 0xaa4d, - 0x1d165, 0x1d166, - 0x1d16d, 0x1d172, -}; /* CR_Mc */ - -/* 'Me': General Category */ -static const OnigCodePoint CR_Me[] = { - 5, - 0x0488, 0x0489, - 0x06de, 0x06de, - 0x20dd, 0x20e0, - 0x20e2, 0x20e4, - 0xa670, 0xa672, -}; /* CR_Me */ + 0x0d60, 0x0d63, + 0x0d66, 0x0d75, + 0x0d79, 0x0d7f, +}; /* CR_Malayalam */ -/* 'Mn': General Category */ -static const OnigCodePoint CR_Mn[] = { - 160, - 0x0300, 0x036f, - 0x0483, 0x0487, - 0x0591, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x0610, 0x061a, - 0x064b, 0x065e, - 0x0670, 0x0670, - 0x06d6, 0x06dc, - 0x06df, 0x06e4, - 0x06e7, 0x06e8, - 0x06ea, 0x06ed, - 0x0711, 0x0711, - 0x0730, 0x074a, - 0x07a6, 0x07b0, - 0x07eb, 0x07f3, - 0x0901, 0x0902, - 0x093c, 0x093c, - 0x0941, 0x0948, - 0x094d, 0x094d, - 0x0951, 0x0954, - 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, - 0x0c3e, 0x0c40, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c62, 0x0c63, - 0x0cbc, 0x0cbc, - 0x0cbf, 0x0cbf, - 0x0cc6, 0x0cc6, - 0x0ccc, 0x0ccd, - 0x0ce2, 0x0ce3, - 0x0d41, 0x0d44, - 0x0d4d, 0x0d4d, - 0x0d62, 0x0d63, +/* 'Sinhala': Script */ +static const OnigCodePoint CR_Sinhala[] = { + 11, + 0x0d82, 0x0d83, + 0x0d85, 0x0d96, + 0x0d9a, 0x0db1, + 0x0db3, 0x0dbb, + 0x0dbd, 0x0dbd, + 0x0dc0, 0x0dc6, 0x0dca, 0x0dca, - 0x0dd2, 0x0dd4, + 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, - 0x0e31, 0x0e31, - 0x0e34, 0x0e3a, - 0x0e47, 0x0e4e, - 0x0eb1, 0x0eb1, - 0x0eb4, 0x0eb9, - 0x0ebb, 0x0ebc, + 0x0dd8, 0x0ddf, + 0x0df2, 0x0df4, +}; /* CR_Sinhala */ + +/* 'Thai': Script */ +static const OnigCodePoint CR_Thai[] = { + 2, + 0x0e01, 0x0e3a, + 0x0e40, 0x0e5b, +}; /* CR_Thai */ + +/* '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, - 0x0f18, 0x0f19, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f71, 0x0f7e, - 0x0f80, 0x0f84, - 0x0f86, 0x0f87, + 0x0ed0, 0x0ed9, + 0x0edc, 0x0edd, +}; /* CR_Lao */ + +/* 'Tibetan': Script */ +static const OnigCodePoint CR_Tibetan[] = { + 7, + 0x0f00, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f8b, 0x0f90, 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, - 0x135f, 0x135f, - 0x1712, 0x1714, - 0x1732, 0x1734, - 0x1752, 0x1753, - 0x1772, 0x1773, - 0x17b7, 0x17bd, - 0x17c6, 0x17c6, - 0x17c9, 0x17d3, - 0x17dd, 0x17dd, - 0x180b, 0x180d, - 0x18a9, 0x18a9, - 0x1920, 0x1922, - 0x1927, 0x1928, - 0x1932, 0x1932, - 0x1939, 0x193b, - 0x1a17, 0x1a18, - 0x1b00, 0x1b03, - 0x1b34, 0x1b34, - 0x1b36, 0x1b3a, - 0x1b3c, 0x1b3c, - 0x1b42, 0x1b42, - 0x1b6b, 0x1b73, - 0x1b80, 0x1b81, - 0x1ba2, 0x1ba5, - 0x1ba8, 0x1ba9, - 0x1c2c, 0x1c33, - 0x1c36, 0x1c37, + 0x0fbe, 0x0fcc, + 0x0fce, 0x0fd4, +}; /* CR_Tibetan */ + +/* 'Myanmar': Script */ +static const OnigCodePoint CR_Myanmar[] = { + 2, + 0x1000, 0x109f, + 0xaa60, 0xaa7b, +}; /* CR_Myanmar */ + +/* 'Georgian': Script */ +static const OnigCodePoint CR_Georgian[] = { + 4, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x2d00, 0x2d25, +}; /* CR_Georgian */ + +/* 'Hangul': Script */ +static const OnigCodePoint CR_Hangul[] = { + 13, + 0x1100, 0x11ff, + 0x3131, 0x318e, + 0x3200, 0x321e, + 0x3260, 0x327e, + 0xa960, 0xa97c, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xffa0, 0xffbe, + 0xffc2, 0xffc7, + 0xffca, 0xffcf, + 0xffd2, 0xffd7, + 0xffda, 0xffdc, +}; /* CR_Hangul */ + +/* 'Ethiopic': Script */ +static const OnigCodePoint CR_Ethiopic[] = { + 27, + 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, + 0x135f, 0x137c, + 0x1380, 0x1399, + 0x2d80, 0x2d96, + 0x2da0, 0x2da6, + 0x2da8, 0x2dae, + 0x2db0, 0x2db6, + 0x2db8, 0x2dbe, + 0x2dc0, 0x2dc6, + 0x2dc8, 0x2dce, + 0x2dd0, 0x2dd6, + 0x2dd8, 0x2dde, +}; /* CR_Ethiopic */ + +/* 'Cherokee': Script */ +static const OnigCodePoint CR_Cherokee[] = { + 1, + 0x13a0, 0x13f4, +}; /* CR_Cherokee */ + +/* 'Canadian_Aboriginal': Script */ +static const OnigCodePoint CR_Canadian_Aboriginal[] = { + 2, + 0x1400, 0x167f, + 0x18b0, 0x18f5, +}; /* CR_Canadian_Aboriginal */ + +/* 'Ogham': Script */ +static const OnigCodePoint CR_Ogham[] = { + 1, + 0x1680, 0x169c, +}; /* CR_Ogham */ + +/* 'Runic': Script */ +static const OnigCodePoint CR_Runic[] = { + 2, + 0x16a0, 0x16ea, + 0x16ee, 0x16f0, +}; /* CR_Runic */ + +/* 'Khmer': Script */ +static const OnigCodePoint CR_Khmer[] = { + 4, + 0x1780, 0x17dd, + 0x17e0, 0x17e9, + 0x17f0, 0x17f9, + 0x19e0, 0x19ff, +}; /* CR_Khmer */ + +/* 'Mongolian': Script */ +static const OnigCodePoint CR_Mongolian[] = { + 6, + 0x1800, 0x1801, + 0x1804, 0x1804, + 0x1806, 0x180e, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18aa, +}; /* CR_Mongolian */ + +/* 'Hiragana': Script */ +static const OnigCodePoint CR_Hiragana[] = { + 3, + 0x3041, 0x3096, + 0x309d, 0x309f, + 0x1f200, 0x1f200, +}; /* CR_Hiragana */ + +/* 'Katakana': Script */ +static const OnigCodePoint CR_Katakana[] = { + 7, + 0x30a1, 0x30fa, + 0x30fd, 0x30ff, + 0x31f0, 0x31ff, + 0x32d0, 0x32fe, + 0x3300, 0x3357, + 0xff66, 0xff6f, + 0xff71, 0xff9d, +}; /* CR_Katakana */ + +/* 'Bopomofo': Script */ +static const OnigCodePoint CR_Bopomofo[] = { + 2, + 0x3105, 0x312d, + 0x31a0, 0x31b7, +}; /* CR_Bopomofo */ + +/* '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, 0x9fcb, + 0xf900, 0xfa2d, + 0xfa30, 0xfa6d, + 0xfa70, 0xfad9, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Han */ + +/* 'Yi': Script */ +static const OnigCodePoint CR_Yi[] = { + 2, + 0xa000, 0xa48c, + 0xa490, 0xa4c6, +}; /* CR_Yi */ + +/* 'Old_Italic': Script */ +static const OnigCodePoint CR_Old_Italic[] = { + 2, + 0x10300, 0x1031e, + 0x10320, 0x10323, +}; /* CR_Old_Italic */ + +/* 'Gothic': Script */ +static const OnigCodePoint CR_Gothic[] = { + 1, + 0x10330, 0x1034a, +}; /* CR_Gothic */ + +/* 'Deseret': Script */ +static const OnigCodePoint CR_Deseret[] = { + 1, + 0x10400, 0x1044f, +}; /* CR_Deseret */ + +/* 'Inherited': Script */ +static const OnigCodePoint CR_Inherited[] = { + 23, + 0x0300, 0x036f, + 0x0485, 0x0486, + 0x064b, 0x0655, + 0x0670, 0x0670, + 0x0951, 0x0952, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1ce0, + 0x1ce2, 0x1ce8, + 0x1ced, 0x1ced, 0x1dc0, 0x1de6, - 0x1dfe, 0x1dff, - 0x20d0, 0x20dc, - 0x20e1, 0x20e1, - 0x20e5, 0x20f0, - 0x2de0, 0x2dff, + 0x1dfd, 0x1dff, + 0x200c, 0x200d, + 0x20d0, 0x20f0, 0x302a, 0x302f, 0x3099, 0x309a, - 0xa66f, 0xa66f, - 0xa67c, 0xa67d, - 0xa802, 0xa802, - 0xa806, 0xa806, - 0xa80b, 0xa80b, - 0xa825, 0xa826, - 0xa8c4, 0xa8c4, - 0xa926, 0xa92d, - 0xa947, 0xa951, - 0xaa29, 0xaa2e, - 0xaa31, 0xaa32, - 0xaa35, 0xaa36, - 0xaa43, 0xaa43, - 0xaa4c, 0xaa4c, - 0xfb1e, 0xfb1e, 0xfe00, 0xfe0f, 0xfe20, 0xfe26, 0x101fd, 0x101fd, - 0x10a01, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a0f, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, 0x1d167, 0x1d169, 0x1d17b, 0x1d182, 0x1d185, 0x1d18b, 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, 0xe0100, 0xe01ef, -}; /* CR_Mn */ +}; /* CR_Inherited */ -/* 'N': Major Category */ -static const OnigCodePoint CR_N[] = { - 69, - 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, - 0x0be6, 0x0bf2, - 0x0c66, 0x0c6f, - 0x0c78, 0x0c7e, - 0x0ce6, 0x0cef, - 0x0d66, 0x0d75, - 0x0e50, 0x0e59, - 0x0ed0, 0x0ed9, - 0x0f20, 0x0f33, - 0x1040, 0x1049, - 0x1090, 0x1099, - 0x1369, 0x137c, - 0x16ee, 0x16f0, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1810, 0x1819, - 0x1946, 0x194f, - 0x19d0, 0x19d9, - 0x1b50, 0x1b59, - 0x1bb0, 0x1bb9, - 0x1c40, 0x1c49, - 0x1c50, 0x1c59, - 0x2070, 0x2070, - 0x2074, 0x2079, - 0x2080, 0x2089, - 0x2153, 0x2182, - 0x2185, 0x2188, - 0x2460, 0x249b, - 0x24ea, 0x24ff, - 0x2776, 0x2793, - 0x2cfd, 0x2cfd, - 0x3007, 0x3007, - 0x3021, 0x3029, - 0x3038, 0x303a, - 0x3192, 0x3195, - 0x3220, 0x3229, - 0x3251, 0x325f, - 0x3280, 0x3289, - 0x32b1, 0x32bf, - 0xa620, 0xa629, - 0xa8d0, 0xa8d9, - 0xa900, 0xa909, - 0xaa50, 0xaa59, - 0xff10, 0xff19, - 0x10107, 0x10133, - 0x10140, 0x10178, - 0x1018a, 0x1018a, - 0x10320, 0x10323, - 0x10341, 0x10341, - 0x1034a, 0x1034a, - 0x103d1, 0x103d5, - 0x104a0, 0x104a9, - 0x10916, 0x10919, - 0x10a40, 0x10a47, - 0x12400, 0x12462, - 0x1d360, 0x1d371, - 0x1d7ce, 0x1d7ff, -}; /* CR_N */ +/* 'Tagalog': Script */ +static const OnigCodePoint CR_Tagalog[] = { + 2, + 0x1700, 0x170c, + 0x170e, 0x1714, +}; /* CR_Tagalog */ -/* 'Nd': General Category */ -static const OnigCodePoint CR_Nd[] = { - 33, - 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, - 0x0e50, 0x0e59, - 0x0ed0, 0x0ed9, - 0x0f20, 0x0f29, - 0x1040, 0x1049, - 0x1090, 0x1099, - 0x17e0, 0x17e9, - 0x1810, 0x1819, - 0x1946, 0x194f, - 0x19d0, 0x19d9, - 0x1b50, 0x1b59, - 0x1bb0, 0x1bb9, - 0x1c40, 0x1c49, - 0x1c50, 0x1c59, - 0xa620, 0xa629, - 0xa8d0, 0xa8d9, - 0xa900, 0xa909, - 0xaa50, 0xaa59, - 0xff10, 0xff19, +/* 'Hanunoo': Script */ +static const OnigCodePoint CR_Hanunoo[] = { + 1, + 0x1720, 0x1734, +}; /* CR_Hanunoo */ + +/* 'Buhid': Script */ +static const OnigCodePoint CR_Buhid[] = { + 1, + 0x1740, 0x1753, +}; /* CR_Buhid */ + +/* 'Tagbanwa': Script */ +static const OnigCodePoint CR_Tagbanwa[] = { + 3, + 0x1760, 0x176c, + 0x176e, 0x1770, + 0x1772, 0x1773, +}; /* CR_Tagbanwa */ + +/* 'Limbu': Script */ +static const OnigCodePoint CR_Limbu[] = { + 5, + 0x1900, 0x191c, + 0x1920, 0x192b, + 0x1930, 0x193b, + 0x1940, 0x1940, + 0x1944, 0x194f, +}; /* CR_Limbu */ + +/* 'Tai_Le': Script */ +static const OnigCodePoint CR_Tai_Le[] = { + 2, + 0x1950, 0x196d, + 0x1970, 0x1974, +}; /* CR_Tai_Le */ + +/* 'Linear_B': Script */ +static const OnigCodePoint CR_Linear_B[] = { + 7, + 0x10000, 0x1000b, + 0x1000d, 0x10026, + 0x10028, 0x1003a, + 0x1003c, 0x1003d, + 0x1003f, 0x1004d, + 0x10050, 0x1005d, + 0x10080, 0x100fa, +}; /* CR_Linear_B */ + +/* 'Ugaritic': Script */ +static const OnigCodePoint CR_Ugaritic[] = { + 2, + 0x10380, 0x1039d, + 0x1039f, 0x1039f, +}; /* CR_Ugaritic */ + +/* 'Shavian': Script */ +static const OnigCodePoint CR_Shavian[] = { + 1, + 0x10450, 0x1047f, +}; /* CR_Shavian */ + +/* 'Osmanya': Script */ +static const OnigCodePoint CR_Osmanya[] = { + 2, + 0x10480, 0x1049d, 0x104a0, 0x104a9, - 0x1d7ce, 0x1d7ff, -}; /* CR_Nd */ +}; /* CR_Osmanya */ -/* 'Nl': General Category */ -static const OnigCodePoint CR_Nl[] = { - 11, - 0x16ee, 0x16f0, - 0x2160, 0x2182, - 0x2185, 0x2188, - 0x3007, 0x3007, - 0x3021, 0x3029, - 0x3038, 0x303a, - 0x10140, 0x10174, - 0x10341, 0x10341, - 0x1034a, 0x1034a, - 0x103d1, 0x103d5, - 0x12400, 0x12462, -}; /* CR_Nl */ +/* 'Cypriot': Script */ +static const OnigCodePoint CR_Cypriot[] = { + 6, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x1083f, +}; /* CR_Cypriot */ + +/* 'Braille': Script */ +static const OnigCodePoint CR_Braille[] = { + 1, + 0x2800, 0x28ff, +}; /* CR_Braille */ -/* 'No': General Category */ -static const OnigCodePoint CR_No[] = { - 30, - 0x00b2, 0x00b3, - 0x00b9, 0x00b9, - 0x00bc, 0x00be, - 0x09f4, 0x09f9, - 0x0bf0, 0x0bf2, - 0x0c78, 0x0c7e, - 0x0d70, 0x0d75, - 0x0f2a, 0x0f33, - 0x1369, 0x137c, - 0x17f0, 0x17f9, - 0x2070, 0x2070, - 0x2074, 0x2079, - 0x2080, 0x2089, - 0x2153, 0x215f, - 0x2460, 0x249b, - 0x24ea, 0x24ff, - 0x2776, 0x2793, - 0x2cfd, 0x2cfd, - 0x3192, 0x3195, - 0x3220, 0x3229, - 0x3251, 0x325f, - 0x3280, 0x3289, - 0x32b1, 0x32bf, - 0x10107, 0x10133, - 0x10175, 0x10178, - 0x1018a, 0x1018a, - 0x10320, 0x10323, - 0x10916, 0x10919, - 0x10a40, 0x10a47, - 0x1d360, 0x1d371, -}; /* CR_No */ +/* 'Buginese': Script */ +static const OnigCodePoint CR_Buginese[] = { + 2, + 0x1a00, 0x1a1b, + 0x1a1e, 0x1a1f, +}; /* CR_Buginese */ -/* 'P': Major Category */ -static const OnigCodePoint CR_P[] = { - 112, - 0x0021, 0x0023, - 0x0025, 0x002a, - 0x002c, 0x002f, - 0x003a, 0x003b, - 0x003f, 0x0040, - 0x005b, 0x005d, - 0x005f, 0x005f, - 0x007b, 0x007b, - 0x007d, 0x007d, - 0x00a1, 0x00a1, - 0x00ab, 0x00ab, - 0x00b7, 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, - 0x0964, 0x0965, - 0x0970, 0x0970, - 0x0df4, 0x0df4, - 0x0e4f, 0x0e4f, - 0x0e5a, 0x0e5b, - 0x0f04, 0x0f12, - 0x0f3a, 0x0f3d, - 0x0f85, 0x0f85, - 0x0fd0, 0x0fd4, - 0x104a, 0x104f, - 0x10fb, 0x10fb, - 0x1361, 0x1368, - 0x166d, 0x166e, - 0x169b, 0x169c, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x17d4, 0x17d6, - 0x17d8, 0x17da, - 0x1800, 0x180a, - 0x1944, 0x1945, +/* 'Coptic': Script */ +static const OnigCodePoint CR_Coptic[] = { + 3, + 0x03e2, 0x03ef, + 0x2c80, 0x2cf1, + 0x2cf9, 0x2cff, +}; /* CR_Coptic */ + +/* 'New_Tai_Lue': Script */ +static const OnigCodePoint CR_New_Tai_Lue[] = { + 4, + 0x1980, 0x19ab, + 0x19b0, 0x19c9, + 0x19d0, 0x19da, 0x19de, 0x19df, - 0x1a1e, 0x1a1f, - 0x1b5a, 0x1b60, - 0x1c3b, 0x1c3f, - 0x1c7e, 0x1c7f, - 0x2010, 0x2027, - 0x2030, 0x2043, - 0x2045, 0x2051, - 0x2053, 0x205e, - 0x207d, 0x207e, - 0x208d, 0x208e, - 0x2329, 0x232a, - 0x2768, 0x2775, - 0x27c5, 0x27c6, - 0x27e6, 0x27ef, - 0x2983, 0x2998, - 0x29d8, 0x29db, - 0x29fc, 0x29fd, - 0x2cf9, 0x2cfc, - 0x2cfe, 0x2cff, - 0x2e00, 0x2e2e, - 0x2e30, 0x2e30, - 0x3001, 0x3003, - 0x3008, 0x3011, - 0x3014, 0x301f, - 0x3030, 0x3030, - 0x303d, 0x303d, - 0x30a0, 0x30a0, - 0x30fb, 0x30fb, - 0xa60d, 0xa60f, - 0xa673, 0xa673, - 0xa67e, 0xa67e, - 0xa874, 0xa877, - 0xa8ce, 0xa8cf, - 0xa92e, 0xa92f, - 0xa95f, 0xa95f, - 0xaa5c, 0xaa5f, - 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, 0x10101, - 0x1039f, 0x1039f, - 0x103d0, 0x103d0, - 0x1091f, 0x1091f, - 0x1093f, 0x1093f, +}; /* CR_New_Tai_Lue */ + +/* 'Glagolitic': Script */ +static const OnigCodePoint CR_Glagolitic[] = { + 2, + 0x2c00, 0x2c2e, + 0x2c30, 0x2c5e, +}; /* CR_Glagolitic */ + +/* 'Tifinagh': Script */ +static const OnigCodePoint CR_Tifinagh[] = { + 2, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, +}; /* CR_Tifinagh */ + +/* 'Syloti_Nagri': Script */ +static const OnigCodePoint CR_Syloti_Nagri[] = { + 1, + 0xa800, 0xa82b, +}; /* CR_Syloti_Nagri */ + +/* 'Old_Persian': Script */ +static const OnigCodePoint CR_Old_Persian[] = { + 2, + 0x103a0, 0x103c3, + 0x103c8, 0x103d5, +}; /* CR_Old_Persian */ + +/* 'Kharoshthi': Script */ +static const OnigCodePoint CR_Kharoshthi[] = { + 8, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a47, 0x10a50, 0x10a58, +}; /* CR_Kharoshthi */ + +/* 'Balinese': Script */ +static const OnigCodePoint CR_Balinese[] = { + 2, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b7c, +}; /* CR_Balinese */ + +/* 'Cuneiform': Script */ +static const OnigCodePoint CR_Cuneiform[] = { + 3, + 0x12000, 0x1236e, + 0x12400, 0x12462, 0x12470, 0x12473, -}; /* CR_P */ +}; /* CR_Cuneiform */ -/* 'Pc': General Category */ -static const OnigCodePoint CR_Pc[] = { - 6, - 0x005f, 0x005f, - 0x203f, 0x2040, - 0x2054, 0x2054, - 0xfe33, 0xfe34, - 0xfe4d, 0xfe4f, - 0xff3f, 0xff3f, -}; /* CR_Pc */ +/* 'Phoenician': Script */ +static const OnigCodePoint CR_Phoenician[] = { + 2, + 0x10900, 0x1091b, + 0x1091f, 0x1091f, +}; /* CR_Phoenician */ + +/* 'Phags_Pa': Script */ +static const OnigCodePoint CR_Phags_Pa[] = { + 1, + 0xa840, 0xa877, +}; /* CR_Phags_Pa */ + +/* 'Nko': Script */ +static const OnigCodePoint CR_Nko[] = { + 1, + 0x07c0, 0x07fa, +}; /* CR_Nko */ + +/* 'Sundanese': Script */ +static const OnigCodePoint CR_Sundanese[] = { + 2, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, +}; /* CR_Sundanese */ + +/* 'Lepcha': Script */ +static const OnigCodePoint CR_Lepcha[] = { + 3, + 0x1c00, 0x1c37, + 0x1c3b, 0x1c49, + 0x1c4d, 0x1c4f, +}; /* CR_Lepcha */ -/* 'Pd': General Category */ -static const OnigCodePoint CR_Pd[] = { - 14, - 0x002d, 0x002d, - 0x058a, 0x058a, - 0x05be, 0x05be, - 0x1806, 0x1806, - 0x2010, 0x2015, - 0x2e17, 0x2e17, - 0x2e1a, 0x2e1a, - 0x301c, 0x301c, - 0x3030, 0x3030, - 0x30a0, 0x30a0, - 0xfe31, 0xfe32, - 0xfe58, 0xfe58, - 0xfe63, 0xfe63, - 0xff0d, 0xff0d, -}; /* CR_Pd */ +/* 'Ol_Chiki': Script */ +static const OnigCodePoint CR_Ol_Chiki[] = { + 1, + 0x1c50, 0x1c7f, +}; /* CR_Ol_Chiki */ -/* 'Pe': General Category */ -static const OnigCodePoint CR_Pe[] = { - 70, - 0x0029, 0x0029, - 0x005d, 0x005d, - 0x007d, 0x007d, - 0x0f3b, 0x0f3b, - 0x0f3d, 0x0f3d, - 0x169c, 0x169c, - 0x2046, 0x2046, - 0x207e, 0x207e, - 0x208e, 0x208e, - 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, - 0xfd3f, 0xfd3f, - 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, -}; /* CR_Pe */ +/* 'Vai': Script */ +static const OnigCodePoint CR_Vai[] = { + 1, + 0xa500, 0xa62b, +}; /* CR_Vai */ -/* '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, -}; /* CR_Pf */ +/* 'Saurashtra': Script */ +static const OnigCodePoint CR_Saurashtra[] = { + 2, + 0xa880, 0xa8c4, + 0xa8ce, 0xa8d9, +}; /* CR_Saurashtra */ -/* '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, -}; /* CR_Pi */ +/* 'Kayah_Li': Script */ +static const OnigCodePoint CR_Kayah_Li[] = { + 1, + 0xa900, 0xa92f, +}; /* CR_Kayah_Li */ -/* 'Po': General Category */ -static const OnigCodePoint CR_Po[] = { - 108, - 0x0021, 0x0023, - 0x0025, 0x0027, - 0x002a, 0x002a, - 0x002c, 0x002c, - 0x002e, 0x002f, - 0x003a, 0x003b, - 0x003f, 0x0040, - 0x005c, 0x005c, - 0x00a1, 0x00a1, - 0x00b7, 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, - 0x0964, 0x0965, - 0x0970, 0x0970, - 0x0df4, 0x0df4, - 0x0e4f, 0x0e4f, - 0x0e5a, 0x0e5b, - 0x0f04, 0x0f12, - 0x0f85, 0x0f85, - 0x0fd0, 0x0fd4, - 0x104a, 0x104f, - 0x10fb, 0x10fb, - 0x1361, 0x1368, - 0x166d, 0x166e, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x17d4, 0x17d6, - 0x17d8, 0x17da, - 0x1800, 0x1805, - 0x1807, 0x180a, - 0x1944, 0x1945, - 0x19de, 0x19df, - 0x1a1e, 0x1a1f, - 0x1b5a, 0x1b60, - 0x1c3b, 0x1c3f, - 0x1c7e, 0x1c7f, - 0x2016, 0x2017, - 0x2020, 0x2027, - 0x2030, 0x2038, - 0x203b, 0x203e, - 0x2041, 0x2043, - 0x2047, 0x2051, - 0x2053, 0x2053, - 0x2055, 0x205e, - 0x2cf9, 0x2cfc, - 0x2cfe, 0x2cff, - 0x2e00, 0x2e01, - 0x2e06, 0x2e08, - 0x2e0b, 0x2e0b, - 0x2e0e, 0x2e16, - 0x2e18, 0x2e19, - 0x2e1b, 0x2e1b, - 0x2e1e, 0x2e1f, - 0x2e2a, 0x2e2e, - 0x2e30, 0x2e30, - 0x3001, 0x3003, - 0x303d, 0x303d, - 0x30fb, 0x30fb, - 0xa60d, 0xa60f, - 0xa673, 0xa673, - 0xa67e, 0xa67e, - 0xa874, 0xa877, - 0xa8ce, 0xa8cf, - 0xa92e, 0xa92f, +/* 'Rejang': Script */ +static const OnigCodePoint CR_Rejang[] = { + 2, + 0xa930, 0xa953, 0xa95f, 0xa95f, - 0xaa5c, 0xaa5f, - 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, 0x10101, - 0x1039f, 0x1039f, - 0x103d0, 0x103d0, - 0x1091f, 0x1091f, +}; /* CR_Rejang */ + +/* 'Lycian': Script */ +static const OnigCodePoint CR_Lycian[] = { + 1, + 0x10280, 0x1029c, +}; /* CR_Lycian */ + +/* 'Carian': Script */ +static const OnigCodePoint CR_Carian[] = { + 1, + 0x102a0, 0x102d0, +}; /* CR_Carian */ + +/* 'Lydian': Script */ +static const OnigCodePoint CR_Lydian[] = { + 2, + 0x10920, 0x10939, 0x1093f, 0x1093f, - 0x10a50, 0x10a58, - 0x12470, 0x12473, -}; /* CR_Po */ +}; /* CR_Lydian */ -/* 'Ps': General Category */ -static const OnigCodePoint CR_Ps[] = { - 72, - 0x0028, 0x0028, - 0x005b, 0x005b, - 0x007b, 0x007b, - 0x0f3a, 0x0f3a, - 0x0f3c, 0x0f3c, - 0x169b, 0x169b, - 0x201a, 0x201a, - 0x201e, 0x201e, - 0x2045, 0x2045, - 0x207d, 0x207d, - 0x208d, 0x208d, - 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, - 0x3008, 0x3008, - 0x300a, 0x300a, - 0x300c, 0x300c, - 0x300e, 0x300e, - 0x3010, 0x3010, - 0x3014, 0x3014, - 0x3016, 0x3016, - 0x3018, 0x3018, - 0x301a, 0x301a, - 0x301d, 0x301d, - 0xfd3e, 0xfd3e, - 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, -}; /* CR_Ps */ +/* 'Cham': Script */ +static const OnigCodePoint CR_Cham[] = { + 4, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa5c, 0xaa5f, +}; /* CR_Cham */ -/* 'S': Major Category */ -static const OnigCodePoint CR_S[] = { - 179, - 0x0024, 0x0024, - 0x002b, 0x002b, - 0x003c, 0x003e, - 0x005e, 0x005e, - 0x0060, 0x0060, - 0x007c, 0x007c, - 0x007e, 0x007e, - 0x00a2, 0x00a9, - 0x00ac, 0x00ac, - 0x00ae, 0x00b1, - 0x00b4, 0x00b4, - 0x00b6, 0x00b6, - 0x00b8, 0x00b8, - 0x00d7, 0x00d7, - 0x00f7, 0x00f7, - 0x02c2, 0x02c5, - 0x02d2, 0x02df, - 0x02e5, 0x02eb, - 0x02ed, 0x02ed, - 0x02ef, 0x02ff, - 0x0375, 0x0375, - 0x0384, 0x0385, - 0x03f6, 0x03f6, - 0x0482, 0x0482, - 0x0606, 0x0608, - 0x060b, 0x060b, - 0x060e, 0x060f, - 0x06e9, 0x06e9, - 0x06fd, 0x06fe, - 0x07f6, 0x07f6, - 0x09f2, 0x09f3, - 0x09fa, 0x09fa, - 0x0af1, 0x0af1, - 0x0b70, 0x0b70, - 0x0bf3, 0x0bfa, - 0x0c7f, 0x0c7f, - 0x0cf1, 0x0cf2, - 0x0d79, 0x0d79, - 0x0e3f, 0x0e3f, - 0x0f01, 0x0f03, - 0x0f13, 0x0f17, - 0x0f1a, 0x0f1f, - 0x0f34, 0x0f34, - 0x0f36, 0x0f36, - 0x0f38, 0x0f38, - 0x0fbe, 0x0fc5, - 0x0fc7, 0x0fcc, - 0x0fce, 0x0fcf, - 0x109e, 0x109f, - 0x1360, 0x1360, - 0x1390, 0x1399, - 0x17db, 0x17db, - 0x1940, 0x1940, - 0x19e0, 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, 0x20b5, - 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, 0x2328, - 0x232b, 0x23e7, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x249c, 0x24e9, - 0x2500, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2767, - 0x2794, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27c4, - 0x27c7, 0x27ca, - 0x27cc, 0x27cc, - 0x27d0, 0x27e5, - 0x27f0, 0x2982, - 0x2999, 0x29d7, - 0x29dc, 0x29fb, - 0x29fe, 0x2b4c, - 0x2b50, 0x2b54, - 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, 0x3243, - 0x3250, 0x3250, - 0x3260, 0x327f, - 0x328a, 0x32b0, - 0x32c0, 0x32fe, - 0x3300, 0x33ff, - 0x4dc0, 0x4dff, - 0xa490, 0xa4c6, - 0xa700, 0xa716, - 0xa720, 0xa721, - 0xa789, 0xa78a, - 0xa828, 0xa82b, - 0xfb29, 0xfb29, - 0xfdfc, 0xfdfd, - 0xfe62, 0xfe62, - 0xfe64, 0xfe66, - 0xfe69, 0xfe69, - 0xff04, 0xff04, - 0xff0b, 0xff0b, - 0xff1c, 0xff1e, +/* 'Tai_Tham': Script */ +static const OnigCodePoint CR_Tai_Tham[] = { + 5, + 0x1a20, 0x1a5e, + 0x1a60, 0x1a7c, + 0x1a7f, 0x1a89, + 0x1a90, 0x1a99, + 0x1aa0, 0x1aad, +}; /* CR_Tai_Tham */ + +/* 'Tai_Viet': Script */ +static const OnigCodePoint CR_Tai_Viet[] = { + 2, + 0xaa80, 0xaac2, + 0xaadb, 0xaadf, +}; /* CR_Tai_Viet */ + +/* 'Avestan': Script */ +static const OnigCodePoint CR_Avestan[] = { + 2, + 0x10b00, 0x10b35, + 0x10b39, 0x10b3f, +}; /* CR_Avestan */ + +/* 'Egyptian_Hieroglyphs': Script */ +static const OnigCodePoint CR_Egyptian_Hieroglyphs[] = { + 1, + 0x13000, 0x1342e, +}; /* CR_Egyptian_Hieroglyphs */ + +/* 'Samaritan': Script */ +static const OnigCodePoint CR_Samaritan[] = { + 2, + 0x0800, 0x082d, + 0x0830, 0x083e, +}; /* CR_Samaritan */ + +/* 'Lisu': Script */ +static const OnigCodePoint CR_Lisu[] = { + 1, + 0xa4d0, 0xa4ff, +}; /* CR_Lisu */ + +/* 'Bamum': Script */ +static const OnigCodePoint CR_Bamum[] = { + 1, + 0xa6a0, 0xa6f7, +}; /* CR_Bamum */ + +/* 'Javanese': Script */ +static const OnigCodePoint CR_Javanese[] = { + 3, + 0xa980, 0xa9cd, + 0xa9cf, 0xa9d9, + 0xa9de, 0xa9df, +}; /* CR_Javanese */ + +/* 'Meetei_Mayek': Script */ +static const OnigCodePoint CR_Meetei_Mayek[] = { + 2, + 0xabc0, 0xabed, + 0xabf0, 0xabf9, +}; /* CR_Meetei_Mayek */ + +/* 'Imperial_Aramaic': Script */ +static const OnigCodePoint CR_Imperial_Aramaic[] = { + 2, + 0x10840, 0x10855, + 0x10857, 0x1085f, +}; /* CR_Imperial_Aramaic */ + +/* 'Old_South_Arabian': Script */ +static const OnigCodePoint CR_Old_South_Arabian[] = { + 1, + 0x10a60, 0x10a7f, +}; /* CR_Old_South_Arabian */ + +/* 'Inscriptional_Parthian': Script */ +static const OnigCodePoint CR_Inscriptional_Parthian[] = { + 2, + 0x10b40, 0x10b55, + 0x10b58, 0x10b5f, +}; /* CR_Inscriptional_Parthian */ + +/* 'Inscriptional_Pahlavi': Script */ +static const OnigCodePoint CR_Inscriptional_Pahlavi[] = { + 2, + 0x10b60, 0x10b72, + 0x10b78, 0x10b7f, +}; /* CR_Inscriptional_Pahlavi */ + +/* 'Old_Turkic': Script */ +static const OnigCodePoint CR_Old_Turkic[] = { + 1, + 0x10c00, 0x10c48, +}; /* CR_Old_Turkic */ + +/* 'Kaithi': Script */ +static const OnigCodePoint CR_Kaithi[] = { + 1, + 0x11080, 0x110c1, +}; /* CR_Kaithi */ + +/* 'White_Space': Binary Property */ +static const OnigCodePoint CR_White_Space[] = { + 11, + 0x0009, 0x000d, + 0x0020, 0x0020, + 0x0085, 0x0085, + 0x00a0, 0x00a0, + 0x1680, 0x1680, + 0x180e, 0x180e, + 0x2000, 0x200a, + 0x2028, 0x2029, + 0x202f, 0x202f, + 0x205f, 0x205f, + 0x3000, 0x3000, +}; /* CR_White_Space */ + +/* 'Bidi_Control': Binary Property */ +static const OnigCodePoint CR_Bidi_Control[] = { + 2, + 0x200e, 0x200f, + 0x202a, 0x202e, +}; /* CR_Bidi_Control */ + +/* 'Join_Control': Binary Property */ +static const OnigCodePoint CR_Join_Control[] = { + 1, + 0x200c, 0x200d, +}; /* CR_Join_Control */ + +/* 'Dash': Binary Property */ +static const OnigCodePoint CR_Dash[] = { + 19, + 0x002d, 0x002d, + 0x058a, 0x058a, + 0x05be, 0x05be, + 0x1400, 0x1400, + 0x1806, 0x1806, + 0x2010, 0x2015, + 0x2053, 0x2053, + 0x207b, 0x207b, + 0x208b, 0x208b, + 0x2212, 0x2212, + 0x2e17, 0x2e17, + 0x2e1a, 0x2e1a, + 0x301c, 0x301c, + 0x3030, 0x3030, + 0x30a0, 0x30a0, + 0xfe31, 0xfe32, + 0xfe58, 0xfe58, + 0xfe63, 0xfe63, + 0xff0d, 0xff0d, +}; /* CR_Dash */ + +/* '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, +}; /* CR_Hyphen */ + +/* 'Quotation_Mark': Binary Property */ +static const OnigCodePoint CR_Quotation_Mark[] = { + 12, + 0x0022, 0x0022, + 0x0027, 0x0027, + 0x00ab, 0x00ab, + 0x00bb, 0x00bb, + 0x2018, 0x201f, + 0x2039, 0x203a, + 0x300c, 0x300f, + 0x301d, 0x301f, + 0xfe41, 0xfe44, + 0xff02, 0xff02, + 0xff07, 0xff07, + 0xff62, 0xff63, +}; /* CR_Quotation_Mark */ + +/* 'Terminal_Punctuation': Binary Property */ +static const OnigCodePoint CR_Terminal_Punctuation[] = { + 65, + 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, + 0x0964, 0x0965, + 0x0e5a, 0x0e5b, + 0x0f08, 0x0f08, + 0x0f0d, 0x0f12, + 0x104a, 0x104b, + 0x1361, 0x1368, + 0x166d, 0x166e, + 0x16eb, 0x16ed, + 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, + 0x3001, 0x3002, + 0xa4fe, 0xa4ff, + 0xa60d, 0xa60f, + 0xa6f3, 0xa6f7, + 0xa876, 0xa877, + 0xa8ce, 0xa8cf, + 0xa92f, 0xa92f, + 0xa9c7, 0xa9c9, + 0xaa5d, 0xaa5f, + 0xaadf, 0xaadf, + 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, + 0x10b3a, 0x10b3f, + 0x110be, 0x110c1, + 0x12470, 0x12473, +}; /* CR_Terminal_Punctuation */ + +/* 'Other_Math': Binary Property */ +static const OnigCodePoint CR_Other_Math[] = { + 99, + 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, + 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, + 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, - 0xff40, 0xff40, - 0xff5c, 0xff5c, - 0xff5e, 0xff5e, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfffc, 0xfffd, - 0x10102, 0x10102, - 0x10137, 0x1013f, - 0x10179, 0x10189, - 0x10190, 0x1019b, - 0x101d0, 0x101fc, - 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, - 0x1f000, 0x1f02b, - 0x1f030, 0x1f093, -}; /* CR_S */ + 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, +}; /* CR_Other_Math */ + +/* 'Hex_Digit': Binary Property */ +static const OnigCodePoint CR_Hex_Digit[] = { + 6, + 0x0030, 0x0039, + 0x0041, 0x0046, + 0x0061, 0x0066, + 0xff10, 0xff19, + 0xff21, 0xff26, + 0xff41, 0xff46, +}; /* CR_Hex_Digit */ + +/* 'ASCII_Hex_Digit': Binary Property */ +static const OnigCodePoint CR_ASCII_Hex_Digit[] = { + 3, + 0x0030, 0x0039, + 0x0041, 0x0046, + 0x0061, 0x0066, +}; /* CR_ASCII_Hex_Digit */ + +/* 'Other_Alphabetic': Binary Property */ +static const OnigCodePoint CR_Other_Alphabetic[] = { + 141, + 0x0345, 0x0345, + 0x05b0, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x0610, 0x061a, + 0x064b, 0x0657, + 0x0659, 0x065e, + 0x0670, 0x0670, + 0x06d6, 0x06dc, + 0x06e1, 0x06e4, + 0x06e7, 0x06e8, + 0x06ed, 0x06ed, + 0x0711, 0x0711, + 0x0730, 0x073f, + 0x07a6, 0x07b0, + 0x0816, 0x0817, + 0x081b, 0x0823, + 0x0825, 0x0827, + 0x0829, 0x082c, + 0x0900, 0x0903, + 0x093e, 0x094c, + 0x094e, 0x094e, + 0x0955, 0x0955, + 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, + 0x0c01, 0x0c03, + 0x0c3e, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4c, + 0x0c55, 0x0c56, + 0x0c62, 0x0c63, + 0x0c82, 0x0c83, + 0x0cbe, 0x0cc4, + 0x0cc6, 0x0cc8, + 0x0cca, 0x0ccc, + 0x0cd5, 0x0cd6, + 0x0ce2, 0x0ce3, + 0x0d02, 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, + 0x0f90, 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, + 0x1c24, 0x1c35, + 0x1cf2, 0x1cf2, + 0x24b6, 0x24e9, + 0x2de0, 0x2dff, + 0xa823, 0xa827, + 0xa880, 0xa881, + 0xa8b4, 0xa8c3, + 0xa926, 0xa92a, + 0xa947, 0xa952, + 0xa980, 0xa983, + 0xa9b3, 0xa9bf, + 0xaa29, 0xaa36, + 0xaa43, 0xaa43, + 0xaa4c, 0xaa4d, + 0xaab0, 0xaab0, + 0xaab2, 0xaab4, + 0xaab7, 0xaab8, + 0xaabe, 0xaabe, + 0xabe3, 0xabea, + 0xfb1e, 0xfb1e, + 0x10a01, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a0f, + 0x11082, 0x11082, + 0x110b0, 0x110b8, +}; /* CR_Other_Alphabetic */ -/* 'Sc': General Category */ -static const OnigCodePoint CR_Sc[] = { - 14, - 0x0024, 0x0024, - 0x00a2, 0x00a5, - 0x060b, 0x060b, - 0x09f2, 0x09f3, - 0x0af1, 0x0af1, - 0x0bf9, 0x0bf9, - 0x0e3f, 0x0e3f, - 0x17db, 0x17db, - 0x20a0, 0x20b5, - 0xfdfc, 0xfdfc, - 0xfe69, 0xfe69, - 0xff04, 0xff04, - 0xffe0, 0xffe1, - 0xffe5, 0xffe6, -}; /* CR_Sc */ +/* 'Ideographic': Binary Property */ +static const OnigCodePoint CR_Ideographic[] = { + 11, + 0x3006, 0x3007, + 0x3021, 0x3029, + 0x3038, 0x303a, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xf900, 0xfa2d, + 0xfa30, 0xfa6d, + 0xfa70, 0xfad9, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Ideographic */ -/* 'Sk': General Category */ -static const OnigCodePoint CR_Sk[] = { - 26, +/* 'Diacritic': Binary Property */ +static const OnigCodePoint CR_Diacritic[] = { + 117, 0x005e, 0x005e, 0x0060, 0x0060, 0x00a8, 0x00a8, 0x00af, 0x00af, 0x00b4, 0x00b4, - 0x00b8, 0x00b8, - 0x02c2, 0x02c5, - 0x02d2, 0x02df, - 0x02e5, 0x02eb, - 0x02ed, 0x02ed, - 0x02ef, 0x02ff, - 0x0375, 0x0375, + 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, + 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, + 0x1b34, 0x1b34, + 0x1b44, 0x1b44, + 0x1b6b, 0x1b73, + 0x1baa, 0x1baa, + 0x1c36, 0x1c37, + 0x1c78, 0x1c7d, + 0x1cd0, 0x1ce8, + 0x1ced, 0x1ced, + 0x1d2c, 0x1d6a, + 0x1dc4, 0x1dcf, + 0x1dfd, 0x1dff, 0x1fbd, 0x1fbd, 0x1fbf, 0x1fc1, 0x1fcd, 0x1fcf, 0x1fdd, 0x1fdf, 0x1fed, 0x1fef, 0x1ffd, 0x1ffe, - 0x309b, 0x309c, - 0xa700, 0xa716, - 0xa720, 0xa721, - 0xa789, 0xa78a, + 0x2cef, 0x2cf1, + 0x2e2f, 0x2e2f, + 0x302a, 0x302f, + 0x3099, 0x309c, + 0x30fc, 0x30fc, + 0xa66f, 0xa66f, + 0xa67c, 0xa67d, + 0xa67f, 0xa67f, + 0xa6f0, 0xa6f1, + 0xa717, 0xa721, + 0xa788, 0xa788, + 0xa8c4, 0xa8c4, + 0xa8e0, 0xa8f1, + 0xa92b, 0xa92e, + 0xa953, 0xa953, + 0xa9b3, 0xa9b3, + 0xa9c0, 0xa9c0, + 0xaa7b, 0xaa7b, + 0xaabf, 0xaac2, + 0xabec, 0xabed, + 0xfb1e, 0xfb1e, + 0xfe20, 0xfe26, 0xff3e, 0xff3e, 0xff40, 0xff40, + 0xff70, 0xff70, + 0xff9e, 0xff9f, 0xffe3, 0xffe3, -}; /* CR_Sk */ + 0x110b9, 0x110ba, + 0x1d167, 0x1d169, + 0x1d16d, 0x1d172, + 0x1d17b, 0x1d182, + 0x1d185, 0x1d18b, + 0x1d1aa, 0x1d1ad, +}; /* CR_Diacritic */ -/* 'Sm': General Category */ -static const OnigCodePoint CR_Sm[] = { - 65, - 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, - 0x2140, 0x2144, - 0x214b, 0x214b, - 0x2190, 0x2194, - 0x219a, 0x219b, - 0x21a0, 0x21a0, - 0x21a3, 0x21a3, - 0x21a6, 0x21a6, - 0x21ae, 0x21ae, - 0x21ce, 0x21cf, - 0x21d2, 0x21d2, - 0x21d4, 0x21d4, - 0x21f4, 0x22ff, - 0x2308, 0x230b, - 0x2320, 0x2321, - 0x237c, 0x237c, - 0x239b, 0x23b3, - 0x23dc, 0x23e1, - 0x25b7, 0x25b7, - 0x25c1, 0x25c1, - 0x25f8, 0x25ff, - 0x266f, 0x266f, - 0x27c0, 0x27c4, - 0x27c7, 0x27ca, - 0x27cc, 0x27cc, - 0x27d0, 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, -}; /* CR_Sm */ +/* 'Extender': Binary Property */ +static const OnigCodePoint CR_Extender[] = { + 20, + 0x00b7, 0x00b7, + 0x02d0, 0x02d1, + 0x0640, 0x0640, + 0x07fa, 0x07fa, + 0x0e46, 0x0e46, + 0x0ec6, 0x0ec6, + 0x1843, 0x1843, + 0x1aa7, 0x1aa7, + 0x1c36, 0x1c36, + 0x1c7b, 0x1c7b, + 0x3005, 0x3005, + 0x3031, 0x3035, + 0x309d, 0x309e, + 0x30fc, 0x30fe, + 0xa015, 0xa015, + 0xa60c, 0xa60c, + 0xa9cf, 0xa9cf, + 0xaa70, 0xaa70, + 0xaadd, 0xaadd, + 0xff70, 0xff70, +}; /* CR_Extender */ + +/* 'Other_Lowercase': Binary Property */ +static const OnigCodePoint CR_Other_Lowercase[] = { + 13, + 0x02b0, 0x02b8, + 0x02c0, 0x02c1, + 0x02e0, 0x02e4, + 0x0345, 0x0345, + 0x037a, 0x037a, + 0x1d2c, 0x1d61, + 0x1d78, 0x1d78, + 0x1d9b, 0x1dbf, + 0x2090, 0x2094, + 0x2170, 0x217f, + 0x24d0, 0x24e9, + 0x2c7d, 0x2c7d, + 0xa770, 0xa770, +}; /* CR_Other_Lowercase */ + +/* 'Other_Uppercase': Binary Property */ +static const OnigCodePoint CR_Other_Uppercase[] = { + 2, + 0x2160, 0x216f, + 0x24b6, 0x24cf, +}; /* CR_Other_Uppercase */ + +/* '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, +}; /* CR_Noncharacter_Code_Point */ + +/* 'Other_Grapheme_Extend': Binary Property */ +static const OnigCodePoint CR_Other_Grapheme_Extend[] = { + 16, + 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, + 0xff9e, 0xff9f, + 0x1d165, 0x1d165, + 0x1d16e, 0x1d172, +}; /* CR_Other_Grapheme_Extend */ + +/* 'IDS_Binary_Operator': Binary Property */ +static const OnigCodePoint CR_IDS_Binary_Operator[] = { + 2, + 0x2ff0, 0x2ff1, + 0x2ff4, 0x2ffb, +}; /* CR_IDS_Binary_Operator */ + +/* 'IDS_Trinary_Operator': Binary Property */ +static const OnigCodePoint CR_IDS_Trinary_Operator[] = { + 1, + 0x2ff2, 0x2ff3, +}; /* CR_IDS_Trinary_Operator */ + +/* 'Radical': Binary Property */ +static const OnigCodePoint CR_Radical[] = { + 3, + 0x2e80, 0x2e99, + 0x2e9b, 0x2ef3, + 0x2f00, 0x2fd5, +}; /* CR_Radical */ + +/* 'Unified_Ideograph': Binary Property */ +static const OnigCodePoint CR_Unified_Ideograph[] = { + 11, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xfa0e, 0xfa0f, + 0xfa11, 0xfa11, + 0xfa13, 0xfa14, + 0xfa1f, 0xfa1f, + 0xfa21, 0xfa21, + 0xfa23, 0xfa24, + 0xfa27, 0xfa29, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, +}; /* CR_Unified_Ideograph */ + +/* 'Other_Default_Ignorable_Code_Point': Binary Property */ +static const OnigCodePoint CR_Other_Default_Ignorable_Code_Point[] = { + 10, + 0x034f, 0x034f, + 0x115f, 0x1160, + 0x2065, 0x2069, + 0x3164, 0x3164, + 0xffa0, 0xffa0, + 0xfff0, 0xfff8, + 0xe0000, 0xe0000, + 0xe0002, 0xe001f, + 0xe0080, 0xe00ff, + 0xe01f0, 0xe0fff, +}; /* CR_Other_Default_Ignorable_Code_Point */ -/* 'So': General Category */ -static const OnigCodePoint CR_So[] = { - 134, - 0x00a6, 0x00a7, +/* 'Deprecated': Binary Property */ +static const OnigCodePoint CR_Deprecated[] = { + 8, + 0x0149, 0x0149, + 0x0f77, 0x0f77, + 0x0f79, 0x0f79, + 0x17a3, 0x17a4, + 0x206a, 0x206f, + 0x2329, 0x232a, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, +}; /* CR_Deprecated */ + +/* '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, +}; /* CR_Soft_Dotted */ + +/* 'Logical_Order_Exception': Binary Property */ +static const OnigCodePoint CR_Logical_Order_Exception[] = { + 5, + 0x0e40, 0x0e44, + 0x0ec0, 0x0ec4, + 0xaab5, 0xaab6, + 0xaab9, 0xaab9, + 0xaabb, 0xaabc, +}; /* CR_Logical_Order_Exception */ + +/* 'Other_ID_Start': Binary Property */ +static const OnigCodePoint CR_Other_ID_Start[] = { + 3, + 0x2118, 0x2118, + 0x212e, 0x212e, + 0x309b, 0x309c, +}; /* CR_Other_ID_Start */ + +/* 'Other_ID_Continue': Binary Property */ +static const OnigCodePoint CR_Other_ID_Continue[] = { + 3, + 0x00b7, 0x00b7, + 0x0387, 0x0387, + 0x1369, 0x1371, +}; /* CR_Other_ID_Continue */ + +/* 'STerm': Binary Property */ +static const OnigCodePoint CR_STerm[] = { + 43, + 0x0021, 0x0021, + 0x002e, 0x002e, + 0x003f, 0x003f, + 0x055c, 0x055c, + 0x055e, 0x055e, + 0x0589, 0x0589, + 0x061f, 0x061f, + 0x06d4, 0x06d4, + 0x0700, 0x0702, + 0x07f9, 0x07f9, + 0x0964, 0x0965, + 0x104a, 0x104b, + 0x1362, 0x1362, + 0x1367, 0x1368, + 0x166e, 0x166e, + 0x1803, 0x1803, + 0x1809, 0x1809, + 0x1944, 0x1945, + 0x1b5a, 0x1b5b, + 0x1b5e, 0x1b5f, + 0x1c3b, 0x1c3c, + 0x1c7e, 0x1c7f, + 0x203c, 0x203d, + 0x2047, 0x2049, + 0x2e2e, 0x2e2e, + 0x3002, 0x3002, + 0xa4ff, 0xa4ff, + 0xa60e, 0xa60f, + 0xa6f3, 0xa6f3, + 0xa6f7, 0xa6f7, + 0xa876, 0xa877, + 0xa8ce, 0xa8cf, + 0xa92f, 0xa92f, + 0xa9c8, 0xa9c9, + 0xaa5d, 0xaa5f, + 0xabeb, 0xabeb, + 0xfe52, 0xfe52, + 0xfe56, 0xfe57, + 0xff01, 0xff01, + 0xff0e, 0xff0e, + 0xff1f, 0xff1f, + 0xff61, 0xff61, + 0x110be, 0x110c1, +}; /* CR_STerm */ + +/* 'Variation_Selector': Binary Property */ +static const OnigCodePoint CR_Variation_Selector[] = { + 3, + 0x180b, 0x180d, + 0xfe00, 0xfe0f, + 0xe0100, 0xe01ef, +}; /* CR_Variation_Selector */ + +/* 'Pattern_White_Space': Binary Property */ +static const OnigCodePoint CR_Pattern_White_Space[] = { + 5, + 0x0009, 0x000d, + 0x0020, 0x0020, + 0x0085, 0x0085, + 0x200e, 0x200f, + 0x2028, 0x2029, +}; /* CR_Pattern_White_Space */ + +/* '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, 0x00b0, + 0x00b0, 0x00b1, 0x00b6, 0x00b6, - 0x0482, 0x0482, - 0x060e, 0x060f, - 0x06e9, 0x06e9, - 0x06fd, 0x06fe, - 0x07f6, 0x07f6, - 0x09fa, 0x09fa, - 0x0b70, 0x0b70, - 0x0bf3, 0x0bf8, - 0x0bfa, 0x0bfa, - 0x0c7f, 0x0c7f, + 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, +}; /* CR_Pattern_Syntax */ +#endif /* USE_UNICODE_PROPERTIES */ + +/* 'NEWLINE': [[:NEWLINE:]] */ +static const OnigCodePoint CR_NEWLINE[] = { + 1, + 0x000a, 0x000a, +}; /* CR_NEWLINE */ + +/* 'Alpha': [[:Alpha:]] */ +#define CR_Alpha CR_Alphabetic + +/* 'Blank': [[:Blank:]] */ +static const OnigCodePoint CR_Blank[] = { + 9, + 0x0009, 0x0009, + 0x0020, 0x0020, + 0x00a0, 0x00a0, + 0x1680, 0x1680, + 0x180e, 0x180e, + 0x2000, 0x200a, + 0x202f, 0x202f, + 0x205f, 0x205f, + 0x3000, 0x3000, +}; /* CR_Blank */ + +/* 'Cntrl': [[:Cntrl:]] */ +#define CR_Cntrl CR_Cc + +/* 'Digit': [[:Digit:]] */ +#define CR_Digit CR_Nd + +/* 'Graph': [[:Graph:]] */ +static const OnigCodePoint CR_Graph[] = { + 490, + 0x0021, 0x007e, + 0x00a1, 0x0377, + 0x037a, 0x037e, + 0x0384, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x055f, + 0x0561, 0x0587, + 0x0589, 0x058a, + 0x0591, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f4, + 0x0600, 0x0603, + 0x0606, 0x061b, + 0x061e, 0x061f, + 0x0621, 0x065e, + 0x0660, 0x070d, + 0x070f, 0x074a, + 0x074d, 0x07b1, + 0x07c0, 0x07fa, + 0x0800, 0x082d, + 0x0830, 0x083e, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0972, + 0x0979, 0x097f, + 0x0981, 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, 0x0aef, + 0x0af1, 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, 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, 0x0bfa, + 0x0c01, 0x0c03, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c78, 0x0c7f, + 0x0c82, 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, - 0x0d79, 0x0d79, - 0x0f01, 0x0f03, - 0x0f13, 0x0f17, - 0x0f1a, 0x0f1f, - 0x0f34, 0x0f34, - 0x0f36, 0x0f36, - 0x0f38, 0x0f38, - 0x0fbe, 0x0fc5, - 0x0fc7, 0x0fcc, - 0x0fce, 0x0fcf, - 0x109e, 0x109f, - 0x1360, 0x1360, - 0x1390, 0x1399, + 0x0d02, 0x0d03, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4d, + 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, + 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, 0x0edd, + 0x0f00, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fbe, 0x0fcc, + 0x0fce, 0x0fd8, + 0x1000, 0x10c5, + 0x10d0, 0x10fc, + 0x1100, 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, 0x137c, + 0x1380, 0x1399, + 0x13a0, 0x13f4, + 0x1400, 0x167f, + 0x1681, 0x169c, + 0x16a0, 0x16f0, + 0x1700, 0x170c, + 0x170e, 0x1714, + 0x1720, 0x1736, + 0x1740, 0x1753, + 0x1760, 0x176c, + 0x176e, 0x1770, + 0x1772, 0x1773, + 0x1780, 0x17dd, + 0x17e0, 0x17e9, + 0x17f0, 0x17f9, + 0x1800, 0x180d, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18aa, + 0x18b0, 0x18f5, + 0x1900, 0x191c, + 0x1920, 0x192b, + 0x1930, 0x193b, 0x1940, 0x1940, - 0x19e0, 0x19ff, - 0x1b61, 0x1b6a, - 0x1b74, 0x1b7c, - 0x2100, 0x2101, - 0x2103, 0x2106, - 0x2108, 0x2109, - 0x2114, 0x2114, - 0x2116, 0x2118, - 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, 0x23e7, + 0x1944, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19b0, 0x19c9, + 0x19d0, 0x19da, + 0x19de, 0x1a1b, + 0x1a1e, 0x1a5e, + 0x1a60, 0x1a7c, + 0x1a7f, 0x1a89, + 0x1a90, 0x1a99, + 0x1aa0, 0x1aad, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b7c, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c37, + 0x1c3b, 0x1c49, + 0x1c4d, 0x1c7f, + 0x1cd0, 0x1cf2, + 0x1d00, 0x1de6, + 0x1dfd, 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, + 0x206a, 0x2071, + 0x2074, 0x208e, + 0x2090, 0x2094, + 0x20a0, 0x20b8, + 0x20d0, 0x20f0, + 0x2100, 0x2189, + 0x2190, 0x23e8, 0x2400, 0x2426, 0x2440, 0x244a, - 0x249c, 0x24e9, - 0x2500, 0x25b6, - 0x25b8, 0x25c0, - 0x25c2, 0x25f7, - 0x2600, 0x266e, - 0x2670, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, + 0x2460, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, 0x2701, 0x2704, 0x2706, 0x2709, 0x270c, 0x2727, 0x2729, 0x274b, 0x274d, 0x274d, 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2767, - 0x2794, 0x2794, + 0x2756, 0x275e, + 0x2761, 0x2794, 0x2798, 0x27af, 0x27b1, 0x27be, - 0x2800, 0x28ff, - 0x2b00, 0x2b2f, - 0x2b45, 0x2b46, - 0x2b50, 0x2b54, - 0x2ce5, 0x2cea, + 0x27c0, 0x27ca, + 0x27cc, 0x27cc, + 0x27d0, 0x2b4c, + 0x2b50, 0x2b59, + 0x2c00, 0x2c2e, + 0x2c30, 0x2c5e, + 0x2c60, 0x2cf1, + 0x2cf9, 0x2d25, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, + 0x2d80, 0x2d96, + 0x2da0, 0x2da6, + 0x2da8, 0x2dae, + 0x2db0, 0x2db6, + 0x2db8, 0x2dbe, + 0x2dc0, 0x2dc6, + 0x2dc8, 0x2dce, + 0x2dd0, 0x2dd6, + 0x2dd8, 0x2dde, + 0x2de0, 0x2e31, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, - 0x3004, 0x3004, - 0x3012, 0x3013, - 0x3020, 0x3020, - 0x3036, 0x3037, - 0x303e, 0x303f, - 0x3190, 0x3191, - 0x3196, 0x319f, + 0x3001, 0x303f, + 0x3041, 0x3096, + 0x3099, 0x30ff, + 0x3105, 0x312d, + 0x3131, 0x318e, + 0x3190, 0x31b7, 0x31c0, 0x31e3, - 0x3200, 0x321e, - 0x322a, 0x3243, - 0x3250, 0x3250, - 0x3260, 0x327f, - 0x328a, 0x32b0, - 0x32c0, 0x32fe, - 0x3300, 0x33ff, - 0x4dc0, 0x4dff, + 0x31f0, 0x321e, + 0x3220, 0x32fe, + 0x3300, 0x4db5, + 0x4dc0, 0x9fcb, + 0xa000, 0xa48c, 0xa490, 0xa4c6, - 0xa828, 0xa82b, - 0xfdfd, 0xfdfd, - 0xffe4, 0xffe4, - 0xffe8, 0xffe8, - 0xffed, 0xffee, - 0xfffc, 0xfffd, - 0x10102, 0x10102, - 0x10137, 0x1013f, - 0x10179, 0x10189, + 0xa4d0, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa673, + 0xa67c, 0xa697, + 0xa6a0, 0xa6f7, + 0xa700, 0xa78c, + 0xa7fb, 0xa82b, + 0xa830, 0xa839, + 0xa840, 0xa877, + 0xa880, 0xa8c4, + 0xa8ce, 0xa8d9, + 0xa8e0, 0xa8fb, + 0xa900, 0xa953, + 0xa95f, 0xa97c, + 0xa980, 0xa9cd, + 0xa9cf, 0xa9d9, + 0xa9de, 0xa9df, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa5c, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadf, + 0xabc0, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xe000, 0xfa2d, + 0xfa30, 0xfa6d, + 0xfa70, 0xfad9, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xfb1d, 0xfb36, + 0xfb38, 0xfb3c, + 0xfb3e, 0xfb3e, + 0xfb40, 0xfb41, + 0xfb43, 0xfb44, + 0xfb46, 0xfbb1, + 0xfbd3, 0xfd3f, + 0xfd50, 0xfd8f, + 0xfd92, 0xfdc7, + 0xfdf0, 0xfdfd, + 0xfe00, 0xfe19, + 0xfe20, 0xfe26, + 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, 0x1018a, 0x10190, 0x1019b, - 0x101d0, 0x101fc, + 0x101d0, 0x101fd, + 0x10280, 0x1029c, + 0x102a0, 0x102d0, + 0x10300, 0x1031e, + 0x10320, 0x10323, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x1039f, 0x103c3, + 0x103c8, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10857, 0x1085f, + 0x10900, 0x1091b, + 0x1091f, 0x10939, + 0x1093f, 0x1093f, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a47, + 0x10a50, 0x10a58, + 0x10a60, 0x10a7f, + 0x10b00, 0x10b35, + 0x10b39, 0x10b55, + 0x10b58, 0x10b72, + 0x10b78, 0x10b7f, + 0x10c00, 0x10c48, + 0x10e60, 0x10e7e, + 0x11080, 0x110c1, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x12470, 0x12473, + 0x13000, 0x1342e, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, - 0x1d129, 0x1d164, - 0x1d16a, 0x1d16c, - 0x1d183, 0x1d184, - 0x1d18c, 0x1d1a9, - 0x1d1ae, 0x1d1dd, - 0x1d200, 0x1d241, - 0x1d245, 0x1d245, + 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, 0x1f000, 0x1f02b, 0x1f030, 0x1f093, -}; /* CR_So */ - -/* 'Z': Major Category */ -static const OnigCodePoint CR_Z[] = { - 9, - 0x0020, 0x0020, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x180e, 0x180e, - 0x2000, 0x200a, - 0x2028, 0x2029, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000, -}; /* CR_Z */ - -/* 'Zl': General Category */ -static const OnigCodePoint CR_Zl[] = { - 1, - 0x2028, 0x2028, -}; /* CR_Zl */ - -/* 'Zp': General Category */ -static const OnigCodePoint CR_Zp[] = { - 1, - 0x2029, 0x2029, -}; /* CR_Zp */ + 0x1f100, 0x1f10a, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, + 0xe0001, 0xe0001, + 0xe0020, 0xe007f, + 0xe0100, 0xe01ef, + 0xf0000, 0xffffd, + 0x100000, 0x10fffd, +}; /* CR_Graph */ -/* 'Zs': General Category */ -static const OnigCodePoint CR_Zs[] = { - 8, - 0x0020, 0x0020, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x180e, 0x180e, - 0x2000, 0x200a, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000, -}; /* CR_Zs */ +/* 'Lower': [[:Lower:]] */ +#define CR_Lower CR_Lowercase -/* 'Common': Script */ -static const OnigCodePoint CR_Common[] = { - 137, - 0x0000, 0x0040, - 0x005b, 0x0060, - 0x007b, 0x00a9, - 0x00ab, 0x00b9, - 0x00bb, 0x00bf, - 0x00d7, 0x00d7, - 0x00f7, 0x00f7, - 0x02b9, 0x02df, - 0x02e5, 0x02ff, - 0x0374, 0x0374, - 0x037e, 0x037e, - 0x0385, 0x0385, - 0x0387, 0x0387, - 0x0589, 0x0589, +/* 'Print': [[:Print:]] */ +static const OnigCodePoint CR_Print[] = { + 487, + 0x0020, 0x007e, + 0x00a0, 0x0377, + 0x037a, 0x037e, + 0x0384, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x055f, + 0x0561, 0x0587, + 0x0589, 0x058a, + 0x0591, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f4, 0x0600, 0x0603, - 0x060c, 0x060c, - 0x061b, 0x061b, - 0x061f, 0x061f, - 0x0640, 0x0640, - 0x0660, 0x0669, - 0x06dd, 0x06dd, - 0x0964, 0x0965, - 0x0970, 0x0970, + 0x0606, 0x061b, + 0x061e, 0x061f, + 0x0621, 0x065e, + 0x0660, 0x070d, + 0x070f, 0x074a, + 0x074d, 0x07b1, + 0x07c0, 0x07fa, + 0x0800, 0x082d, + 0x0830, 0x083e, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0972, + 0x0979, 0x097f, + 0x0981, 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, 0x0aef, + 0x0af1, 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, 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, 0x0bfa, + 0x0c01, 0x0c03, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c78, 0x0c7f, + 0x0c82, 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, - 0x0e3f, 0x0e3f, - 0x10fb, 0x10fb, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x1802, 0x1803, - 0x1805, 0x1805, - 0x2000, 0x200b, - 0x200e, 0x2064, - 0x206a, 0x2070, - 0x2074, 0x207e, - 0x2080, 0x208e, - 0x20a0, 0x20b5, - 0x2100, 0x2125, - 0x2127, 0x2129, - 0x212c, 0x2131, - 0x2133, 0x214d, - 0x214f, 0x214f, - 0x2153, 0x215f, - 0x2190, 0x23e7, + 0x0d02, 0x0d03, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4d, + 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, + 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, 0x0edd, + 0x0f00, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fbe, 0x0fcc, + 0x0fce, 0x0fd8, + 0x1000, 0x10c5, + 0x10d0, 0x10fc, + 0x1100, 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, 0x137c, + 0x1380, 0x1399, + 0x13a0, 0x13f4, + 0x1400, 0x169c, + 0x16a0, 0x16f0, + 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, 0x191c, + 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, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b7c, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c37, + 0x1c3b, 0x1c49, + 0x1c4d, 0x1c7f, + 0x1cd0, 0x1cf2, + 0x1d00, 0x1de6, + 0x1dfd, 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, + 0x206a, 0x2071, + 0x2074, 0x208e, + 0x2090, 0x2094, + 0x20a0, 0x20b8, + 0x20d0, 0x20f0, + 0x2100, 0x2189, + 0x2190, 0x23e8, 0x2400, 0x2426, 0x2440, 0x244a, - 0x2460, 0x269d, - 0x26a0, 0x26bc, - 0x26c0, 0x26c3, + 0x2460, 0x26cd, + 0x26cf, 0x26e1, + 0x26e3, 0x26e3, + 0x26e8, 0x26ff, 0x2701, 0x2704, 0x2706, 0x2709, 0x270c, 0x2727, 0x2729, 0x274b, 0x274d, 0x274d, 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, + 0x2756, 0x275e, 0x2761, 0x2794, 0x2798, 0x27af, 0x27b1, 0x27be, 0x27c0, 0x27ca, 0x27cc, 0x27cc, - 0x27d0, 0x27ff, - 0x2900, 0x2b4c, - 0x2b50, 0x2b54, - 0x2e00, 0x2e30, + 0x27d0, 0x2b4c, + 0x2b50, 0x2b59, + 0x2c00, 0x2c2e, + 0x2c30, 0x2c5e, + 0x2c60, 0x2cf1, + 0x2cf9, 0x2d25, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, + 0x2d80, 0x2d96, + 0x2da0, 0x2da6, + 0x2da8, 0x2dae, + 0x2db0, 0x2db6, + 0x2db8, 0x2dbe, + 0x2dc0, 0x2dc6, + 0x2dc8, 0x2dce, + 0x2dd0, 0x2dd6, + 0x2dd8, 0x2dde, + 0x2de0, 0x2e31, + 0x2e80, 0x2e99, + 0x2e9b, 0x2ef3, + 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, - 0x3000, 0x3004, - 0x3006, 0x3006, - 0x3008, 0x3020, - 0x3030, 0x3037, - 0x303c, 0x303f, - 0x309b, 0x309c, - 0x30a0, 0x30a0, - 0x30fb, 0x30fc, - 0x3190, 0x319f, + 0x3000, 0x303f, + 0x3041, 0x3096, + 0x3099, 0x30ff, + 0x3105, 0x312d, + 0x3131, 0x318e, + 0x3190, 0x31b7, 0x31c0, 0x31e3, - 0x3220, 0x3243, - 0x3250, 0x325f, - 0x327f, 0x32cf, - 0x3358, 0x33ff, - 0x4dc0, 0x4dff, - 0xa700, 0xa721, - 0xa788, 0xa78a, - 0xfd3e, 0xfd3f, - 0xfdfd, 0xfdfd, - 0xfe10, 0xfe19, + 0x31f0, 0x321e, + 0x3220, 0x32fe, + 0x3300, 0x4db5, + 0x4dc0, 0x9fcb, + 0xa000, 0xa48c, + 0xa490, 0xa4c6, + 0xa4d0, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa673, + 0xa67c, 0xa697, + 0xa6a0, 0xa6f7, + 0xa700, 0xa78c, + 0xa7fb, 0xa82b, + 0xa830, 0xa839, + 0xa840, 0xa877, + 0xa880, 0xa8c4, + 0xa8ce, 0xa8d9, + 0xa8e0, 0xa8fb, + 0xa900, 0xa953, + 0xa95f, 0xa97c, + 0xa980, 0xa9cd, + 0xa9cf, 0xa9d9, + 0xa9de, 0xa9df, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa5c, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadf, + 0xabc0, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xe000, 0xfa2d, + 0xfa30, 0xfa6d, + 0xfa70, 0xfad9, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xfb1d, 0xfb36, + 0xfb38, 0xfb3c, + 0xfb3e, 0xfb3e, + 0xfb40, 0xfb41, + 0xfb43, 0xfb44, + 0xfb46, 0xfbb1, + 0xfbd3, 0xfd3f, + 0xfd50, 0xfd8f, + 0xfd92, 0xfdc7, + 0xfdf0, 0xfdfd, + 0xfe00, 0xfe19, + 0xfe20, 0xfe26, 0xfe30, 0xfe52, 0xfe54, 0xfe66, 0xfe68, 0xfe6b, + 0xfe70, 0xfe74, + 0xfe76, 0xfefc, 0xfeff, 0xfeff, - 0xff01, 0xff20, - 0xff3b, 0xff40, - 0xff5b, 0xff65, - 0xff70, 0xff70, - 0xff9e, 0xff9f, + 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, 0x1013f, + 0x10137, 0x1018a, 0x10190, 0x1019b, - 0x101d0, 0x101fc, + 0x101d0, 0x101fd, + 0x10280, 0x1029c, + 0x102a0, 0x102d0, + 0x10300, 0x1031e, + 0x10320, 0x10323, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x1039f, 0x103c3, + 0x103c8, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10857, 0x1085f, + 0x10900, 0x1091b, + 0x1091f, 0x10939, + 0x1093f, 0x1093f, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a47, + 0x10a50, 0x10a58, + 0x10a60, 0x10a7f, + 0x10b00, 0x10b35, + 0x10b39, 0x10b55, + 0x10b58, 0x10b72, + 0x10b78, 0x10b7f, + 0x10c00, 0x10c48, + 0x10e60, 0x10e7e, + 0x11080, 0x110c1, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x12470, 0x12473, + 0x13000, 0x1342e, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, - 0x1d129, 0x1d166, - 0x1d16a, 0x1d17a, - 0x1d183, 0x1d184, - 0x1d18c, 0x1d1a9, - 0x1d1ae, 0x1d1dd, + 0x1d129, 0x1d1dd, + 0x1d200, 0x1d245, 0x1d300, 0x1d356, 0x1d360, 0x1d371, 0x1d400, 0x1d454, @@ -8343,62 +15064,332 @@ static const OnigCodePoint CR_Common[] = { 0x1d7ce, 0x1d7ff, 0x1f000, 0x1f02b, 0x1f030, 0x1f093, + 0x1f100, 0x1f10a, + 0x1f110, 0x1f12e, + 0x1f131, 0x1f131, + 0x1f13d, 0x1f13d, + 0x1f13f, 0x1f13f, + 0x1f142, 0x1f142, + 0x1f146, 0x1f146, + 0x1f14a, 0x1f14e, + 0x1f157, 0x1f157, + 0x1f15f, 0x1f15f, + 0x1f179, 0x1f179, + 0x1f17b, 0x1f17c, + 0x1f17f, 0x1f17f, + 0x1f18a, 0x1f18d, + 0x1f190, 0x1f190, + 0x1f200, 0x1f200, + 0x1f210, 0x1f231, + 0x1f240, 0x1f248, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, 0xe0001, 0xe0001, 0xe0020, 0xe007f, -}; /* CR_Common */ + 0xe0100, 0xe01ef, + 0xf0000, 0xffffd, + 0x100000, 0x10fffd, +}; /* CR_Print */ + +/* 'Punct': [[:Punct:]] */ +#define CR_Punct CR_P + +/* 'Space': [[:Space:]] */ +#define CR_Space CR_White_Space -/* 'Latin': Script */ -static const OnigCodePoint CR_Latin[] = { - 29, +/* 'Upper': [[:Upper:]] */ +#define CR_Upper CR_Uppercase + +/* 'XDigit': [[:XDigit:]] */ +#define CR_XDigit CR_ASCII_Hex_Digit + +/* 'Word': [[:Word:]] */ +static const OnigCodePoint CR_Word[] = { + 506, + 0x0030, 0x0039, 0x0041, 0x005a, + 0x005f, 0x005f, 0x0061, 0x007a, 0x00aa, 0x00aa, + 0x00b5, 0x00b5, 0x00ba, 0x00ba, 0x00c0, 0x00d6, 0x00d8, 0x00f6, - 0x00f8, 0x02b8, + 0x00f8, 0x02c1, + 0x02c6, 0x02d1, 0x02e0, 0x02e4, - 0x1d00, 0x1d25, - 0x1d2c, 0x1d5c, - 0x1d62, 0x1d65, - 0x1d6b, 0x1d77, - 0x1d79, 0x1dbe, - 0x1e00, 0x1eff, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x2094, - 0x212a, 0x212b, - 0x2132, 0x2132, - 0x214e, 0x214e, - 0x2160, 0x2188, - 0x2c60, 0x2c6f, - 0x2c71, 0x2c7d, - 0xa722, 0xa787, - 0xa78b, 0xa78c, - 0xa7fb, 0xa7ff, - 0xfb00, 0xfb06, - 0xff21, 0xff3a, - 0xff41, 0xff5a, -}; /* CR_Latin */ - -/* 'Greek': Script */ -static const OnigCodePoint CR_Greek[] = { - 33, - 0x0370, 0x0373, - 0x0375, 0x0377, + 0x02ec, 0x02ec, + 0x02ee, 0x02ee, + 0x0300, 0x0374, + 0x0376, 0x0377, 0x037a, 0x037d, - 0x0384, 0x0384, 0x0386, 0x0386, 0x0388, 0x038a, 0x038c, 0x038c, 0x038e, 0x03a1, - 0x03a3, 0x03e1, - 0x03f0, 0x03ff, - 0x1d26, 0x1d2a, - 0x1d5d, 0x1d61, - 0x1d66, 0x1d6a, - 0x1dbf, 0x1dbf, - 0x1f00, 0x1f15, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x0483, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x0591, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0610, 0x061a, + 0x0621, 0x065e, + 0x0660, 0x0669, + 0x066e, 0x06d3, + 0x06d5, 0x06dc, + 0x06de, 0x06e8, + 0x06ea, 0x06fc, + 0x06ff, 0x06ff, + 0x0710, 0x074a, + 0x074d, 0x07b1, + 0x07c0, 0x07f5, + 0x07fa, 0x07fa, + 0x0800, 0x082d, + 0x0900, 0x0939, + 0x093c, 0x094e, + 0x0950, 0x0955, + 0x0958, 0x0963, + 0x0966, 0x096f, + 0x0971, 0x0972, + 0x0979, 0x097f, + 0x0981, 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, + 0x0c01, 0x0c03, + 0x0c05, 0x0c0c, + 0x0c0e, 0x0c10, + 0x0c12, 0x0c28, + 0x0c2a, 0x0c33, + 0x0c35, 0x0c39, + 0x0c3d, 0x0c44, + 0x0c46, 0x0c48, + 0x0c4a, 0x0c4d, + 0x0c55, 0x0c56, + 0x0c58, 0x0c59, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c82, 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, + 0x0d02, 0x0d03, + 0x0d05, 0x0d0c, + 0x0d0e, 0x0d10, + 0x0d12, 0x0d28, + 0x0d2a, 0x0d39, + 0x0d3d, 0x0d44, + 0x0d46, 0x0d48, + 0x0d4a, 0x0d4d, + 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, + 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, 0x0edd, + 0x0f00, 0x0f00, + 0x0f18, 0x0f19, + 0x0f20, 0x0f29, + 0x0f35, 0x0f35, + 0x0f37, 0x0f37, + 0x0f39, 0x0f39, + 0x0f3e, 0x0f47, + 0x0f49, 0x0f6c, + 0x0f71, 0x0f84, + 0x0f86, 0x0f8b, + 0x0f90, 0x0f97, + 0x0f99, 0x0fbc, + 0x0fc6, 0x0fc6, + 0x1000, 0x1049, + 0x1050, 0x109d, + 0x10a0, 0x10c5, + 0x10d0, 0x10fa, + 0x10fc, 0x10fc, + 0x1100, 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, 0x16f0, + 0x1700, 0x170c, + 0x170e, 0x1714, + 0x1720, 0x1734, + 0x1740, 0x1753, + 0x1760, 0x176c, + 0x176e, 0x1770, + 0x1772, 0x1773, + 0x1780, 0x17b3, + 0x17b6, 0x17d3, + 0x17d7, 0x17d7, + 0x17dc, 0x17dd, + 0x17e0, 0x17e9, + 0x180b, 0x180d, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18aa, + 0x18b0, 0x18f5, + 0x1900, 0x191c, + 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, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b59, + 0x1b6b, 0x1b73, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c37, + 0x1c40, 0x1c49, + 0x1c4d, 0x1c7d, + 0x1cd0, 0x1cd2, + 0x1cd4, 0x1cf2, + 0x1d00, 0x1de6, + 0x1dfd, 0x1f15, 0x1f18, 0x1f1d, 0x1f20, 0x1f45, 0x1f48, 0x1f4d, @@ -8408,105 +15399,284 @@ static const OnigCodePoint CR_Greek[] = { 0x1f5d, 0x1f5d, 0x1f5f, 0x1f7d, 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, + 0x1fb6, 0x1fbc, + 0x1fbe, 0x1fbe, + 0x1fc2, 0x1fc4, + 0x1fc6, 0x1fcc, + 0x1fd0, 0x1fd3, 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, + 0x1fe0, 0x1fec, 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, + 0x1ff6, 0x1ffc, + 0x203f, 0x2040, + 0x2054, 0x2054, + 0x2071, 0x2071, + 0x207f, 0x207f, + 0x2090, 0x2094, + 0x20d0, 0x20f0, + 0x2102, 0x2102, + 0x2107, 0x2107, + 0x210a, 0x2113, + 0x2115, 0x2115, + 0x2119, 0x211d, + 0x2124, 0x2124, 0x2126, 0x2126, - 0x10140, 0x1018a, - 0x1d200, 0x1d245, -}; /* CR_Greek */ - -/* 'Cyrillic': Script */ -static const OnigCodePoint CR_Cyrillic[] = { - 7, - 0x0400, 0x0523, - 0x1d2b, 0x1d2b, - 0x1d78, 0x1d78, + 0x2128, 0x2128, + 0x212a, 0x212d, + 0x212f, 0x2139, + 0x213c, 0x213f, + 0x2145, 0x2149, + 0x214e, 0x214e, + 0x2160, 0x2188, + 0x24b6, 0x24e9, + 0x2c00, 0x2c2e, + 0x2c30, 0x2c5e, + 0x2c60, 0x2ce4, + 0x2ceb, 0x2cf1, + 0x2d00, 0x2d25, + 0x2d30, 0x2d65, + 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, 0x302f, + 0x3031, 0x3035, + 0x3038, 0x303c, + 0x3041, 0x3096, + 0x3099, 0x309a, + 0x309d, 0x309f, + 0x30a1, 0x30fa, + 0x30fc, 0x30ff, + 0x3105, 0x312d, + 0x3131, 0x318e, + 0x31a0, 0x31b7, + 0x31f0, 0x31ff, + 0x3400, 0x4db5, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa62b, 0xa640, 0xa65f, - 0xa662, 0xa673, - 0xa67c, 0xa697, -}; /* CR_Cyrillic */ - -/* 'Armenian': Script */ -static const OnigCodePoint CR_Armenian[] = { - 5, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x058a, 0x058a, + 0xa662, 0xa672, + 0xa67c, 0xa67d, + 0xa67f, 0xa697, + 0xa6a0, 0xa6f1, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 0xa827, + 0xa840, 0xa873, + 0xa880, 0xa8c4, + 0xa8d0, 0xa8d9, + 0xa8e0, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa900, 0xa92d, + 0xa930, 0xa953, + 0xa960, 0xa97c, + 0xa980, 0xa9c0, + 0xa9cf, 0xa9d9, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabea, + 0xabec, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 0xfa6d, + 0xfa70, 0xfad9, + 0xfb00, 0xfb06, 0xfb13, 0xfb17, -}; /* CR_Armenian */ - -/* 'Hebrew': Script */ -static const OnigCodePoint CR_Hebrew[] = { - 9, - 0x0591, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0xfb1d, 0xfb36, + 0xfb1d, 0xfb28, + 0xfb2a, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44, - 0xfb46, 0xfb4f, -}; /* CR_Hebrew */ - -/* 'Arabic': Script */ -static const OnigCodePoint CR_Arabic[] = { - 17, - 0x0606, 0x060b, - 0x060d, 0x061a, - 0x061e, 0x061e, - 0x0621, 0x063f, - 0x0641, 0x064a, - 0x0656, 0x065e, - 0x066a, 0x066f, - 0x0671, 0x06dc, - 0x06de, 0x06ff, - 0x0750, 0x077f, - 0xfb50, 0xfbb1, + 0xfb46, 0xfbb1, 0xfbd3, 0xfd3d, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfc, + 0xfdf0, 0xfdfb, + 0xfe00, 0xfe0f, + 0xfe20, 0xfe26, + 0xfe33, 0xfe34, + 0xfe4d, 0xfe4f, 0xfe70, 0xfe74, 0xfe76, 0xfefc, -}; /* CR_Arabic */ - -/* 'Syriac': Script */ -static const OnigCodePoint CR_Syriac[] = { - 3, - 0x0700, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x074f, -}; /* CR_Syriac */ - -/* 'Thaana': Script */ -static const OnigCodePoint CR_Thaana[] = { - 1, - 0x0780, 0x07b1, -}; /* CR_Thaana */ + 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, + 0x10300, 0x1031e, + 0x10330, 0x1034a, + 0x10380, 0x1039d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, + 0x104a0, 0x104a9, + 0x10800, 0x10805, + 0x10808, 0x10808, + 0x1080a, 0x10835, + 0x10837, 0x10838, + 0x1083c, 0x1083c, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, + 0x10a00, 0x10a03, + 0x10a05, 0x10a06, + 0x10a0c, 0x10a13, + 0x10a15, 0x10a17, + 0x10a19, 0x10a33, + 0x10a38, 0x10a3a, + 0x10a3f, 0x10a3f, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11080, 0x110ba, + 0x12000, 0x1236e, + 0x12400, 0x12462, + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, + 0xe0100, 0xe01ef, +}; /* CR_Word */ -/* 'Devanagari': Script */ -static const OnigCodePoint CR_Devanagari[] = { - 8, - 0x0901, 0x0939, - 0x093c, 0x094d, +/* 'Alnum': [[:Alnum:]] */ +static const OnigCodePoint CR_Alnum[] = { + 497, + 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, + 0x0386, 0x0386, + 0x0388, 0x038a, + 0x038c, 0x038c, + 0x038e, 0x03a1, + 0x03a3, 0x03f5, + 0x03f7, 0x0481, + 0x048a, 0x0525, + 0x0531, 0x0556, + 0x0559, 0x0559, + 0x0561, 0x0587, + 0x05b0, 0x05bd, + 0x05bf, 0x05bf, + 0x05c1, 0x05c2, + 0x05c4, 0x05c5, + 0x05c7, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f2, + 0x0610, 0x061a, + 0x0621, 0x0657, + 0x0659, 0x065e, + 0x0660, 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, + 0x0900, 0x0939, + 0x093d, 0x094c, + 0x094e, 0x094e, 0x0950, 0x0950, - 0x0953, 0x0954, + 0x0955, 0x0955, 0x0958, 0x0963, 0x0966, 0x096f, 0x0971, 0x0972, - 0x097b, 0x097f, -}; /* CR_Devanagari */ - -/* 'Bengali': Script */ -static const OnigCodePoint CR_Bengali[] = { - 14, + 0x0979, 0x097f, 0x0981, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, @@ -8514,18 +15684,14 @@ static const OnigCodePoint CR_Bengali[] = { 0x09aa, 0x09b0, 0x09b2, 0x09b2, 0x09b6, 0x09b9, - 0x09bc, 0x09c4, + 0x09bd, 0x09c4, 0x09c7, 0x09c8, - 0x09cb, 0x09ce, + 0x09cb, 0x09cc, + 0x09ce, 0x09ce, 0x09d7, 0x09d7, 0x09dc, 0x09dd, 0x09df, 0x09e3, - 0x09e6, 0x09fa, -}; /* CR_Bengali */ - -/* 'Gurmukhi': Script */ -static const OnigCodePoint CR_Gurmukhi[] = { - 16, + 0x09e6, 0x09f1, 0x0a01, 0x0a03, 0x0a05, 0x0a0a, 0x0a0f, 0x0a10, @@ -8534,19 +15700,13 @@ static const OnigCodePoint CR_Gurmukhi[] = { 0x0a32, 0x0a33, 0x0a35, 0x0a36, 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, 0x0a3e, 0x0a42, 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, + 0x0a4b, 0x0a4c, 0x0a51, 0x0a51, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e, 0x0a66, 0x0a75, -}; /* CR_Gurmukhi */ - -/* 'Gujarati': Script */ -static const OnigCodePoint CR_Gujarati[] = { - 14, 0x0a81, 0x0a83, 0x0a85, 0x0a8d, 0x0a8f, 0x0a91, @@ -8554,18 +15714,12 @@ static const OnigCodePoint CR_Gujarati[] = { 0x0aaa, 0x0ab0, 0x0ab2, 0x0ab3, 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, + 0x0abd, 0x0ac5, 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, + 0x0acb, 0x0acc, 0x0ad0, 0x0ad0, 0x0ae0, 0x0ae3, 0x0ae6, 0x0aef, - 0x0af1, 0x0af1, -}; /* CR_Gujarati */ - -/* 'Oriya': Script */ -static const OnigCodePoint CR_Oriya[] = { - 14, 0x0b01, 0x0b03, 0x0b05, 0x0b0c, 0x0b0f, 0x0b10, @@ -8573,18 +15727,14 @@ static const OnigCodePoint CR_Oriya[] = { 0x0b2a, 0x0b30, 0x0b32, 0x0b33, 0x0b35, 0x0b39, - 0x0b3c, 0x0b44, + 0x0b3d, 0x0b44, 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, + 0x0b4b, 0x0b4c, 0x0b56, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b63, - 0x0b66, 0x0b71, -}; /* CR_Oriya */ - -/* 'Tamil': Script */ -static const OnigCodePoint CR_Tamil[] = { - 16, + 0x0b66, 0x0b6f, + 0x0b71, 0x0b71, 0x0b82, 0x0b83, 0x0b85, 0x0b8a, 0x0b8e, 0x0b90, @@ -8597,15 +15747,10 @@ static const OnigCodePoint CR_Tamil[] = { 0x0bae, 0x0bb9, 0x0bbe, 0x0bc2, 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, + 0x0bca, 0x0bcc, 0x0bd0, 0x0bd0, 0x0bd7, 0x0bd7, - 0x0be6, 0x0bfa, -}; /* CR_Tamil */ - -/* 'Telugu': Script */ -static const OnigCodePoint CR_Telugu[] = { - 14, + 0x0be6, 0x0bef, 0x0c01, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, @@ -8614,35 +15759,24 @@ static const OnigCodePoint CR_Telugu[] = { 0x0c35, 0x0c39, 0x0c3d, 0x0c44, 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, + 0x0c4a, 0x0c4c, 0x0c55, 0x0c56, 0x0c58, 0x0c59, 0x0c60, 0x0c63, 0x0c66, 0x0c6f, - 0x0c78, 0x0c7f, -}; /* CR_Telugu */ - -/* 'Kannada': Script */ -static const OnigCodePoint CR_Kannada[] = { - 13, 0x0c82, 0x0c83, 0x0c85, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, + 0x0cbd, 0x0cc4, 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, + 0x0cca, 0x0ccc, 0x0cd5, 0x0cd6, 0x0cde, 0x0cde, 0x0ce0, 0x0ce3, 0x0ce6, 0x0cef, -}; /* CR_Kannada */ - -/* 'Malayalam': Script */ -static const OnigCodePoint CR_Malayalam[] = { - 12, 0x0d02, 0x0d03, 0x0d05, 0x0d0c, 0x0d0e, 0x0d10, @@ -8650,39 +15784,25 @@ static const OnigCodePoint CR_Malayalam[] = { 0x0d2a, 0x0d39, 0x0d3d, 0x0d44, 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, + 0x0d4a, 0x0d4c, 0x0d57, 0x0d57, 0x0d60, 0x0d63, - 0x0d66, 0x0d75, - 0x0d79, 0x0d7f, -}; /* CR_Malayalam */ - -/* 'Sinhala': Script */ -static const OnigCodePoint CR_Sinhala[] = { - 11, + 0x0d66, 0x0d6f, + 0x0d7a, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, - 0x0df2, 0x0df4, -}; /* CR_Sinhala */ - -/* 'Thai': Script */ -static const OnigCodePoint CR_Thai[] = { - 2, + 0x0df2, 0x0df3, 0x0e01, 0x0e3a, - 0x0e40, 0x0e5b, -}; /* CR_Thai */ - -/* 'Lao': Script */ -static const OnigCodePoint CR_Lao[] = { - 18, + 0x0e40, 0x0e46, + 0x0e4d, 0x0e4d, + 0x0e50, 0x0e59, 0x0e81, 0x0e82, 0x0e84, 0x0e84, 0x0e87, 0x0e88, @@ -8698,77 +15818,139 @@ static const OnigCodePoint CR_Lao[] = { 0x0ebb, 0x0ebd, 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, + 0x0ecd, 0x0ecd, 0x0ed0, 0x0ed9, 0x0edc, 0x0edd, -}; /* CR_Lao */ - -/* 'Tibetan': Script */ -static const OnigCodePoint CR_Tibetan[] = { - 7, - 0x0f00, 0x0f47, + 0x0f00, 0x0f00, + 0x0f20, 0x0f29, + 0x0f40, 0x0f47, 0x0f49, 0x0f6c, - 0x0f71, 0x0f8b, + 0x0f71, 0x0f81, + 0x0f88, 0x0f8b, 0x0f90, 0x0f97, 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fce, 0x0fd4, -}; /* CR_Tibetan */ - -/* 'Myanmar': Script */ -static const OnigCodePoint CR_Myanmar[] = { - 2, - 0x1000, 0x1099, - 0x109e, 0x109f, -}; /* CR_Myanmar */ - -/* 'Georgian': Script */ -static const OnigCodePoint CR_Georgian[] = { - 4, + 0x1000, 0x1036, + 0x1038, 0x1038, + 0x103b, 0x1049, + 0x1050, 0x1062, + 0x1065, 0x1068, + 0x106e, 0x1086, + 0x108e, 0x108e, + 0x1090, 0x1099, + 0x109c, 0x109d, 0x10a0, 0x10c5, 0x10d0, 0x10fa, 0x10fc, 0x10fc, + 0x1100, 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, 0x16f0, + 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, 0x191c, + 0x1920, 0x192b, + 0x1930, 0x1938, + 0x1946, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19b0, 0x19c9, + 0x19d0, 0x19da, + 0x1a00, 0x1a1b, + 0x1a20, 0x1a5e, + 0x1a61, 0x1a74, + 0x1a80, 0x1a89, + 0x1a90, 0x1a99, + 0x1aa7, 0x1aa7, + 0x1b00, 0x1b33, + 0x1b35, 0x1b43, + 0x1b45, 0x1b4b, + 0x1b50, 0x1b59, + 0x1b80, 0x1ba9, + 0x1bae, 0x1bb9, + 0x1c00, 0x1c35, + 0x1c40, 0x1c49, + 0x1c4d, 0x1c7d, + 0x1ce9, 0x1cec, + 0x1cee, 0x1cf2, + 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, 0x2094, + 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, 0x2d00, 0x2d25, -}; /* CR_Georgian */ - -/* 'Hangul': Script */ -static const OnigCodePoint CR_Hangul[] = { - 12, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x3131, 0x318e, - 0x3200, 0x321e, - 0x3260, 0x327e, - 0xac00, 0xd7a3, - 0xffa0, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, -}; /* CR_Hangul */ - -/* 'Ethiopic': Script */ -static const OnigCodePoint CR_Ethiopic[] = { - 27, - 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, - 0x135f, 0x137c, - 0x1380, 0x1399, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d6f, 0x2d80, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, @@ -8778,194 +15960,87 @@ static const OnigCodePoint CR_Ethiopic[] = { 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, -}; /* CR_Ethiopic */ - -/* 'Cherokee': Script */ -static const OnigCodePoint CR_Cherokee[] = { - 1, - 0x13a0, 0x13f4, -}; /* CR_Cherokee */ - -/* 'Canadian_Aboriginal': Script */ -static const OnigCodePoint CR_Canadian_Aboriginal[] = { - 1, - 0x1401, 0x1676, -}; /* CR_Canadian_Aboriginal */ - -/* 'Ogham': Script */ -static const OnigCodePoint CR_Ogham[] = { - 1, - 0x1680, 0x169c, -}; /* CR_Ogham */ - -/* 'Runic': Script */ -static const OnigCodePoint CR_Runic[] = { - 2, - 0x16a0, 0x16ea, - 0x16ee, 0x16f0, -}; /* CR_Runic */ - -/* 'Khmer': Script */ -static const OnigCodePoint CR_Khmer[] = { - 4, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x19e0, 0x19ff, -}; /* CR_Khmer */ - -/* 'Mongolian': Script */ -static const OnigCodePoint CR_Mongolian[] = { - 6, - 0x1800, 0x1801, - 0x1804, 0x1804, - 0x1806, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18aa, -}; /* CR_Mongolian */ - -/* 'Hiragana': Script */ -static const OnigCodePoint CR_Hiragana[] = { - 2, + 0x2de0, 0x2dff, + 0x2e2f, 0x2e2f, + 0x3005, 0x3007, + 0x3021, 0x3029, + 0x3031, 0x3035, + 0x3038, 0x303c, 0x3041, 0x3096, 0x309d, 0x309f, -}; /* CR_Hiragana */ - -/* 'Katakana': Script */ -static const OnigCodePoint CR_Katakana[] = { - 7, 0x30a1, 0x30fa, - 0x30fd, 0x30ff, - 0x31f0, 0x31ff, - 0x32d0, 0x32fe, - 0x3300, 0x3357, - 0xff66, 0xff6f, - 0xff71, 0xff9d, -}; /* CR_Katakana */ - -/* 'Bopomofo': Script */ -static const OnigCodePoint CR_Bopomofo[] = { - 2, + 0x30fc, 0x30ff, 0x3105, 0x312d, + 0x3131, 0x318e, 0x31a0, 0x31b7, -}; /* CR_Bopomofo */ - -/* 'Han': Script */ -static const OnigCodePoint CR_Han[] = { - 14, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x3005, 0x3005, - 0x3007, 0x3007, - 0x3021, 0x3029, - 0x3038, 0x303b, + 0x31f0, 0x31ff, 0x3400, 0x4db5, - 0x4e00, 0x9fc3, + 0x4e00, 0x9fcb, + 0xa000, 0xa48c, + 0xa4d0, 0xa4fd, + 0xa500, 0xa60c, + 0xa610, 0xa62b, + 0xa640, 0xa65f, + 0xa662, 0xa66e, + 0xa67f, 0xa697, + 0xa6a0, 0xa6ef, + 0xa717, 0xa71f, + 0xa722, 0xa788, + 0xa78b, 0xa78c, + 0xa7fb, 0xa801, + 0xa803, 0xa805, + 0xa807, 0xa80a, + 0xa80c, 0xa827, + 0xa840, 0xa873, + 0xa880, 0xa8c3, + 0xa8d0, 0xa8d9, + 0xa8f2, 0xa8f7, + 0xa8fb, 0xa8fb, + 0xa900, 0xa92a, + 0xa930, 0xa952, + 0xa960, 0xa97c, + 0xa980, 0xa9bf, + 0xa9cf, 0xa9d9, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa60, 0xaa76, + 0xaa7a, 0xaa7a, + 0xaa80, 0xaabe, + 0xaac0, 0xaac0, + 0xaac2, 0xaac2, + 0xaadb, 0xaadd, + 0xabc0, 0xabea, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, + 0xfa30, 0xfa6d, 0xfa70, 0xfad9, - 0x20000, 0x2a6d6, - 0x2f800, 0x2fa1d, -}; /* CR_Han */ - -/* 'Yi': Script */ -static const OnigCodePoint CR_Yi[] = { - 2, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, -}; /* CR_Yi */ - -/* 'Old_Italic': Script */ -static const OnigCodePoint CR_Old_Italic[] = { - 2, - 0x10300, 0x1031e, - 0x10320, 0x10323, -}; /* CR_Old_Italic */ - -/* 'Gothic': Script */ -static const OnigCodePoint CR_Gothic[] = { - 1, - 0x10330, 0x1034a, -}; /* CR_Gothic */ - -/* 'Deseret': Script */ -static const OnigCodePoint CR_Deseret[] = { - 1, - 0x10400, 0x1044f, -}; /* CR_Deseret */ - -/* 'Inherited': Script */ -static const OnigCodePoint CR_Inherited[] = { - 18, - 0x0300, 0x036f, - 0x064b, 0x0655, - 0x0670, 0x0670, - 0x0951, 0x0952, - 0x1dc0, 0x1de6, - 0x1dfe, 0x1dff, - 0x200c, 0x200d, - 0x20d0, 0x20f0, - 0x302a, 0x302f, - 0x3099, 0x309a, - 0xfe00, 0xfe0f, - 0xfe20, 0xfe26, - 0x101fd, 0x101fd, - 0x1d167, 0x1d169, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0xe0100, 0xe01ef, -}; /* CR_Inherited */ - -/* 'Tagalog': Script */ -static const OnigCodePoint CR_Tagalog[] = { - 2, - 0x1700, 0x170c, - 0x170e, 0x1714, -}; /* CR_Tagalog */ - -/* 'Hanunoo': Script */ -static const OnigCodePoint CR_Hanunoo[] = { - 1, - 0x1720, 0x1734, -}; /* CR_Hanunoo */ - -/* 'Buhid': Script */ -static const OnigCodePoint CR_Buhid[] = { - 1, - 0x1740, 0x1753, -}; /* CR_Buhid */ - -/* 'Tagbanwa': Script */ -static const OnigCodePoint CR_Tagbanwa[] = { - 3, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, -}; /* CR_Tagbanwa */ - -/* 'Limbu': Script */ -static const OnigCodePoint CR_Limbu[] = { - 5, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x194f, -}; /* CR_Limbu */ - -/* 'Tai_Le': Script */ -static const OnigCodePoint CR_Tai_Le[] = { - 2, - 0x1950, 0x196d, - 0x1970, 0x1974, -}; /* CR_Tai_Le */ - -/* 'Linear_B': Script */ -static const OnigCodePoint CR_Linear_B[] = { - 7, + 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, @@ -8973,219 +16048,80 @@ static const OnigCodePoint CR_Linear_B[] = { 0x1003f, 0x1004d, 0x10050, 0x1005d, 0x10080, 0x100fa, -}; /* CR_Linear_B */ - -/* 'Ugaritic': Script */ -static const OnigCodePoint CR_Ugaritic[] = { - 2, + 0x10140, 0x10174, + 0x10280, 0x1029c, + 0x102a0, 0x102d0, + 0x10300, 0x1031e, + 0x10330, 0x1034a, 0x10380, 0x1039d, - 0x1039f, 0x1039f, -}; /* CR_Ugaritic */ - -/* 'Shavian': Script */ -static const OnigCodePoint CR_Shavian[] = { - 1, - 0x10450, 0x1047f, -}; /* CR_Shavian */ - -/* 'Osmanya': Script */ -static const OnigCodePoint CR_Osmanya[] = { - 2, - 0x10480, 0x1049d, + 0x103a0, 0x103c3, + 0x103c8, 0x103cf, + 0x103d1, 0x103d5, + 0x10400, 0x1049d, 0x104a0, 0x104a9, -}; /* CR_Osmanya */ - -/* 'Cypriot': Script */ -static const OnigCodePoint CR_Cypriot[] = { - 6, 0x10800, 0x10805, 0x10808, 0x10808, 0x1080a, 0x10835, 0x10837, 0x10838, 0x1083c, 0x1083c, - 0x1083f, 0x1083f, -}; /* CR_Cypriot */ - -/* 'Braille': Script */ -static const OnigCodePoint CR_Braille[] = { - 1, - 0x2800, 0x28ff, -}; /* CR_Braille */ - -/* 'Buginese': Script */ -static const OnigCodePoint CR_Buginese[] = { - 2, - 0x1a00, 0x1a1b, - 0x1a1e, 0x1a1f, -}; /* CR_Buginese */ - -/* 'Coptic': Script */ -static const OnigCodePoint CR_Coptic[] = { - 3, - 0x03e2, 0x03ef, - 0x2c80, 0x2cea, - 0x2cf9, 0x2cff, -}; /* CR_Coptic */ - -/* 'New_Tai_Lue': Script */ -static const OnigCodePoint CR_New_Tai_Lue[] = { - 4, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x19de, 0x19df, -}; /* CR_New_Tai_Lue */ - -/* 'Glagolitic': Script */ -static const OnigCodePoint CR_Glagolitic[] = { - 2, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, -}; /* CR_Glagolitic */ - -/* 'Tifinagh': Script */ -static const OnigCodePoint CR_Tifinagh[] = { - 2, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, -}; /* CR_Tifinagh */ - -/* 'Syloti_Nagri': Script */ -static const OnigCodePoint CR_Syloti_Nagri[] = { - 1, - 0xa800, 0xa82b, -}; /* CR_Syloti_Nagri */ - -/* 'Old_Persian': Script */ -static const OnigCodePoint CR_Old_Persian[] = { - 2, - 0x103a0, 0x103c3, - 0x103c8, 0x103d5, -}; /* CR_Old_Persian */ - -/* 'Kharoshthi': Script */ -static const OnigCodePoint CR_Kharoshthi[] = { - 8, + 0x1083f, 0x10855, + 0x10900, 0x10915, + 0x10920, 0x10939, 0x10a00, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, -}; /* CR_Kharoshthi */ - -/* 'Balinese': Script */ -static const OnigCodePoint CR_Balinese[] = { - 2, - 0x1b00, 0x1b4b, - 0x1b50, 0x1b7c, -}; /* CR_Balinese */ - -/* 'Cuneiform': Script */ -static const OnigCodePoint CR_Cuneiform[] = { - 3, + 0x10a60, 0x10a7c, + 0x10b00, 0x10b35, + 0x10b40, 0x10b55, + 0x10b60, 0x10b72, + 0x10c00, 0x10c48, + 0x11082, 0x110b8, 0x12000, 0x1236e, 0x12400, 0x12462, - 0x12470, 0x12473, -}; /* CR_Cuneiform */ - -/* 'Phoenician': Script */ -static const OnigCodePoint CR_Phoenician[] = { - 2, - 0x10900, 0x10919, - 0x1091f, 0x1091f, -}; /* CR_Phoenician */ - -/* 'Phags_Pa': Script */ -static const OnigCodePoint CR_Phags_Pa[] = { - 1, - 0xa840, 0xa877, -}; /* CR_Phags_Pa */ - -/* 'Nko': Script */ -static const OnigCodePoint CR_Nko[] = { - 1, - 0x07c0, 0x07fa, -}; /* CR_Nko */ - -/* 'Sundanese': Script */ -static const OnigCodePoint CR_Sundanese[] = { - 2, - 0x1b80, 0x1baa, - 0x1bae, 0x1bb9, -}; /* CR_Sundanese */ - -/* 'Lepcha': Script */ -static const OnigCodePoint CR_Lepcha[] = { - 3, - 0x1c00, 0x1c37, - 0x1c3b, 0x1c49, - 0x1c4d, 0x1c4f, -}; /* CR_Lepcha */ - -/* 'Ol_Chiki': Script */ -static const OnigCodePoint CR_Ol_Chiki[] = { - 1, - 0x1c50, 0x1c7f, -}; /* CR_Ol_Chiki */ - -/* 'Vai': Script */ -static const OnigCodePoint CR_Vai[] = { - 1, - 0xa500, 0xa62b, -}; /* CR_Vai */ - -/* 'Saurashtra': Script */ -static const OnigCodePoint CR_Saurashtra[] = { - 2, - 0xa880, 0xa8c4, - 0xa8ce, 0xa8d9, -}; /* CR_Saurashtra */ - -/* 'Kayah_Li': Script */ -static const OnigCodePoint CR_Kayah_Li[] = { - 1, - 0xa900, 0xa92f, -}; /* CR_Kayah_Li */ - -/* 'Rejang': Script */ -static const OnigCodePoint CR_Rejang[] = { - 2, - 0xa930, 0xa953, - 0xa95f, 0xa95f, -}; /* CR_Rejang */ - -/* 'Lycian': Script */ -static const OnigCodePoint CR_Lycian[] = { - 1, - 0x10280, 0x1029c, -}; /* CR_Lycian */ + 0x13000, 0x1342e, + 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, + 0x20000, 0x2a6d6, + 0x2a700, 0x2b734, + 0x2f800, 0x2fa1d, +}; /* CR_Alnum */ -/* 'Carian': Script */ -static const OnigCodePoint CR_Carian[] = { +/* 'ASCII': [[:ASCII:]] */ +static const OnigCodePoint CR_ASCII[] = { 1, - 0x102a0, 0x102d0, -}; /* CR_Carian */ - -/* 'Lydian': Script */ -static const OnigCodePoint CR_Lydian[] = { - 2, - 0x10920, 0x10939, - 0x1093f, 0x1093f, -}; /* CR_Lydian */ - -/* 'Cham': Script */ -static const OnigCodePoint CR_Cham[] = { - 4, - 0xaa00, 0xaa36, - 0xaa40, 0xaa4d, - 0xaa50, 0xaa59, - 0xaa5c, 0xaa5f, -}; /* CR_Cham */ -#endif /* USE_UNICODE_PROPERTIES */ - + 0x0000, 0x007f, +}; /* CR_ASCII */ static const OnigCodePoint* const CodeRanges[] = { CR_NEWLINE, @@ -9243,6 +16179,25 @@ static const OnigCodePoint* const CodeRanges[] = { 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, @@ -9320,6 +16275,53 @@ static const OnigCodePoint* const CodeRanges[] = { 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_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, #endif /* USE_UNICODE_PROPERTIES */ }; struct uniname2ctype_struct { @@ -9330,138 +16332,374 @@ static const struct uniname2ctype_struct *uniname2ctype_p(const char *, unsigned %} struct uniname2ctype_struct; %% -newline, 0 -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 +newline, 0 +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 #ifdef USE_UNICODE_PROPERTIES -any, 15 -assigned, 16 -c, 17 -cc, 18 -cf, 19 -cn, 20 -co, 21 -cs, 22 -l, 23 -ll, 24 -lm, 25 -lo, 26 -lt, 27 -lu, 28 -m, 29 -mc, 30 -me, 31 -mn, 32 -n, 33 -nd, 34 -nl, 35 -no, 36 -p, 37 -pc, 38 -pd, 39 -pe, 40 -pf, 41 -pi, 42 -po, 43 -ps, 44 -s, 45 -sc, 46 -sk, 47 -sm, 48 -so, 49 -z, 50 -zl, 51 -zp, 52 -zs, 53 -common, 54 -latin, 55 -greek, 56 -cyrillic, 57 -armenian, 58 -hebrew, 59 -arabic, 60 -syriac, 61 -thaana, 62 -devanagari, 63 -bengali, 64 -gurmukhi, 65 -gujarati, 66 -oriya, 67 -tamil, 68 -telugu, 69 -kannada, 70 -malayalam, 71 -sinhala, 72 -thai, 73 -lao, 74 -tibetan, 75 -myanmar, 76 -georgian, 77 -hangul, 78 -ethiopic, 79 -cherokee, 80 -canadianaboriginal, 81 -ogham, 82 -runic, 83 -khmer, 84 -mongolian, 85 -hiragana, 86 -katakana, 87 -bopomofo, 88 -han, 89 -yi, 90 -olditalic, 91 -gothic, 92 -deseret, 93 -inherited, 94 -tagalog, 95 -hanunoo, 96 -buhid, 97 -tagbanwa, 98 -limbu, 99 -taile, 100 -linearb, 101 -ugaritic, 102 -shavian, 103 -osmanya, 104 -cypriot, 105 -braille, 106 -buginese, 107 -coptic, 108 -newtailue, 109 -glagolitic, 110 -tifinagh, 111 -sylotinagri, 112 -oldpersian, 113 -kharoshthi, 114 -balinese, 115 -cuneiform, 116 -phoenician, 117 -phagspa, 118 -nko, 119 -sundanese, 120 -lepcha, 121 -olchiki, 122 -vai, 123 -saurashtra, 124 -kayahli, 125 -rejang, 126 -lycian, 127 -carian, 128 -lydian, 129 -cham, 130 +any, 15 +assigned, 16 +c, 17 +cc, 18 +cf, 19 +cn, 20 +co, 21 +cs, 22 +l, 23 +ll, 24 +lm, 25 +lo, 26 +lt, 27 +lu, 28 +m, 29 +mc, 30 +me, 31 +mn, 32 +n, 33 +nd, 34 +nl, 35 +no, 36 +p, 37 +pc, 38 +pd, 39 +pe, 40 +pf, 41 +pi, 42 +po, 43 +ps, 44 +s, 45 +sc, 46 +sk, 47 +sm, 48 +so, 49 +z, 50 +zl, 51 +zp, 52 +zs, 53 +math, 54 +alphabetic, 55 +lowercase, 56 +uppercase, 57 +cased, 58 +caseignorable, 59 +changeswhenlowercased, 60 +changeswhenuppercased, 61 +changeswhentitlecased, 62 +changeswhencasefolded, 63 +changeswhencasemapped, 64 +idstart, 65 +idcontinue, 66 +xidstart, 67 +xidcontinue, 68 +defaultignorablecodepoint, 69 +graphemeextend, 70 +graphemebase, 71 +graphemelink, 72 +common, 73 +latin, 74 +greek, 75 +cyrillic, 76 +armenian, 77 +hebrew, 78 +arabic, 79 +syriac, 80 +thaana, 81 +devanagari, 82 +bengali, 83 +gurmukhi, 84 +gujarati, 85 +oriya, 86 +tamil, 87 +telugu, 88 +kannada, 89 +malayalam, 90 +sinhala, 91 +thai, 92 +lao, 93 +tibetan, 94 +myanmar, 95 +georgian, 96 +hangul, 97 +ethiopic, 98 +cherokee, 99 +canadianaboriginal, 100 +ogham, 101 +runic, 102 +khmer, 103 +mongolian, 104 +hiragana, 105 +katakana, 106 +bopomofo, 107 +han, 108 +yi, 109 +olditalic, 110 +gothic, 111 +deseret, 112 +inherited, 113 +tagalog, 114 +hanunoo, 115 +buhid, 116 +tagbanwa, 117 +limbu, 118 +taile, 119 +linearb, 120 +ugaritic, 121 +shavian, 122 +osmanya, 123 +cypriot, 124 +braille, 125 +buginese, 126 +coptic, 127 +newtailue, 128 +glagolitic, 129 +tifinagh, 130 +sylotinagri, 131 +oldpersian, 132 +kharoshthi, 133 +balinese, 134 +cuneiform, 135 +phoenician, 136 +phagspa, 137 +nko, 138 +sundanese, 139 +lepcha, 140 +olchiki, 141 +vai, 142 +saurashtra, 143 +kayahli, 144 +rejang, 145 +lycian, 146 +carian, 147 +lydian, 148 +cham, 149 +taitham, 150 +taiviet, 151 +avestan, 152 +egyptianhieroglyphs, 153 +samaritan, 154 +lisu, 155 +bamum, 156 +javanese, 157 +meeteimayek, 158 +imperialaramaic, 159 +oldsoutharabian, 160 +inscriptionalparthian, 161 +inscriptionalpahlavi, 162 +oldturkic, 163 +kaithi, 164 +whitespace, 165 +bidicontrol, 166 +joincontrol, 167 +dash, 168 +hyphen, 169 +quotationmark, 170 +terminalpunctuation, 171 +othermath, 172 +hexdigit, 173 +asciihexdigit, 174 +otheralphabetic, 175 +ideographic, 176 +diacritic, 177 +extender, 178 +otherlowercase, 179 +otheruppercase, 180 +noncharactercodepoint, 181 +othergraphemeextend, 182 +idsbinaryoperator, 183 +idstrinaryoperator, 184 +radical, 185 +unifiedideograph, 186 +otherdefaultignorablecodepoint, 187 +deprecated, 188 +softdotted, 189 +logicalorderexception, 190 +otheridstart, 191 +otheridcontinue, 192 +sterm, 193 +variationselector, 194 +patternwhitespace, 195 +patternsyntax, 196 +ahex, 174 +bidic, 166 +ci, 59 +cwcf, 63 +cwcm, 64 +cwl, 60 +cwt, 62 +cwu, 61 +dep, 188 +di, 69 +dia, 177 +ext, 178 +grbase, 71 +grext, 70 +grlink, 72 +hex, 173 +idc, 66 +ideo, 176 +ids, 65 +idsb, 183 +idst, 184 +joinc, 167 +loe, 190 +nchar, 181 +oalpha, 175 +odi, 187 +ogrext, 182 +oidc, 192 +oids, 191 +olower, 179 +omath, 172 +oupper, 180 +patsyn, 196 +patws, 195 +qmark, 170 +sd, 189 +term, 171 +uideo, 186 +vs, 194 +wspace, 165 +xidc, 68 +xids, 67 +other, 17 +control, 18 +format, 19 +unassigned, 20 +privateuse, 21 +surrogate, 22 +letter, 23 +lowercaseletter, 24 +modifierletter, 25 +otherletter, 26 +titlecaseletter, 27 +uppercaseletter, 28 +mark, 29 +spacingmark, 30 +enclosingmark, 31 +nonspacingmark, 32 +number, 33 +decimalnumber, 34 +letternumber, 35 +othernumber, 36 +punctuation, 37 +connectorpunctuation, 38 +dashpunctuation, 39 +closepunctuation, 40 +finalpunctuation, 41 +initialpunctuation, 42 +otherpunctuation, 43 +openpunctuation, 44 +symbol, 45 +currencysymbol, 46 +modifiersymbol, 47 +mathsymbol, 48 +othersymbol, 49 +separator, 50 +lineseparator, 51 +paragraphseparator, 52 +spaceseparator, 53 +arab, 79 +armi, 159 +armn, 77 +avst, 152 +bali, 134 +bamu, 156 +beng, 83 +bopo, 107 +brai, 125 +bugi, 126 +buhd, 116 +cans, 100 +cari, 147 +cher, 99 +copt, 127 +qaac, 127 +cprt, 124 +cyrl, 76 +deva, 82 +dsrt, 112 +egyp, 153 +ethi, 98 +geor, 96 +glag, 129 +goth, 111 +grek, 75 +gujr, 85 +guru, 84 +hang, 97 +hani, 108 +hano, 115 +hebr, 78 +hira, 105 +ital, 110 +java, 157 +kali, 144 +kana, 106 +khar, 133 +khmr, 103 +knda, 89 +kthi, 164 +lana, 150 +laoo, 93 +latn, 74 +lepc, 140 +limb, 118 +linb, 120 +lyci, 146 +lydi, 148 +mlym, 90 +mong, 104 +mtei, 158 +mymr, 95 +nkoo, 138 +ogam, 101 +olck, 141 +orkh, 163 +orya, 86 +osma, 123 +phag, 137 +phli, 162 +phnx, 136 +prti, 161 +rjng, 145 +runr, 102 +samr, 154 +sarb, 160 +saur, 143 +shaw, 122 +sinh, 91 +sund, 139 +sylo, 131 +syrc, 80 +tagb, 117 +tale, 119 +talu, 128 +taml, 87 +tavt, 151 +telu, 88 +tfng, 130 +tglg, 114 +thaa, 81 +tibt, 94 +ugar, 121 +vaii, 142 +xpeo, 132 +xsux, 135 +yiii, 109 +zinh, 113 +qaai, 113 +zyyy, 73 #endif /* USE_UNICODE_PROPERTIES */ %% static int diff --git a/encoding.c b/encoding.c index a7594aa3782360..38d81b8e2ffbd9 100644 --- a/encoding.c +++ b/encoding.c @@ -393,6 +393,15 @@ enc_ascii_compatible_p(VALUE enc) return rb_enc_asciicompat(enc_table.list[must_encoding(enc)].enc) ? Qtrue : Qfalse; } +/* + * Returns 1 when the encoding is Unicode series other than UTF-7 else 0. + */ +int +rb_enc_unicode_p(rb_encoding *enc) +{ + return rb_utf8_encoding()->is_code_ctype == enc->is_code_ctype; +} + static const char * enc_alias_internal(const char *alias, int idx) { @@ -655,7 +664,7 @@ rb_enc_associate_index(VALUE obj, int idx) { /* enc_check_capable(obj);*/ if (rb_enc_get_index(obj) == idx) - return obj; + return obj; if (SPECIAL_CONST_P(obj)) { rb_raise(rb_eArgError, "cannot set encoding"); } @@ -975,9 +984,18 @@ enc_list(VALUE klass) * Encoding.find("US-ASCII") => # * Encoding.find(:Shift_JIS) => # * + * Names which this method accept are encoding names and aliases + * including following special aliases + * + * "external":: default external encoding + * "internal":: default internal encoding + * "locale":: locale encoding + * "filesystem":: filesystem encoding + * * An ArgumentError is raised when no encoding with name. - * Only +Encoding.find("internal")+ however returns nil when no encoding named "internal", - * in other words, when Ruby has no default internal encoding. + * Only Encoding.find("internal") however returns nil + * when no encoding named "internal", in other words, when Ruby has no + * default internal encoding. */ static VALUE enc_find(VALUE klass, VALUE enc) @@ -991,7 +1009,7 @@ enc_find(VALUE klass, VALUE enc) * * Checks the compatibility of two strings. * If they are compatible, means concatenatable, - * returns an encoding which the concatinated string will be. + * returns an encoding which the concatenated string will be. * If they are not compatible, nil is returned. * * Encoding.compatible?("\xa1".force_encoding("iso-8859-1"), "b") @@ -1075,8 +1093,8 @@ rb_usascii_encindex(void) return ENCINDEX_US_ASCII; } -rb_encoding * -rb_locale_encoding(void) +static int +rb_locale_encindex(void) { VALUE charmap = rb_locale_charmap(rb_cEncoding); int idx; @@ -1088,25 +1106,49 @@ rb_locale_encoding(void) if (rb_enc_registered("locale") < 0) enc_alias_internal("locale", idx); - return rb_enc_from_index(idx); + return idx; } rb_encoding * -rb_filesystem_encoding(void) +rb_locale_encoding(void) { - rb_encoding *enc; + return rb_enc_from_index(rb_locale_encindex()); +} + +static int +enc_set_filesystem_encoding(void) +{ + int idx; #if defined NO_LOCALE_CHARMAP - enc = rb_default_external_encoding(); + idx = rb_enc_to_index(rb_default_external_encoding()); #elif defined _WIN32 || defined __CYGWIN__ char cp[sizeof(int) * 8 / 3 + 4]; snprintf(cp, sizeof cp, "CP%d", AreFileApisANSI() ? GetACP() : GetOEMCP()); - enc = rb_enc_find(cp); + idx = rb_enc_find_index(cp); + if (idx < 0) idx = rb_ascii8bit_encindex(); #elif defined __APPLE__ - enc = rb_utf8_encoding(); + idx = rb_utf8_encindex(); #else - enc = rb_default_external_encoding(); + idx = rb_enc_to_index(rb_default_external_encoding()); #endif - return enc; + + enc_alias_internal("filesystem", idx); + return idx; +} + +static int +rb_filesystem_encindex(void) +{ + int idx = rb_enc_registered("filesystem"); + if (idx < 0) + idx = enc_set_filesystem_encoding(); + return idx; +} + +rb_encoding * +rb_filesystem_encoding(void) +{ + return rb_enc_from_index(rb_filesystem_encindex()); } struct default_encoding { @@ -1114,6 +1156,8 @@ struct default_encoding { rb_encoding *enc; }; +static struct default_encoding default_external = {0}; + static int enc_set_default_encoding(struct default_encoding *def, VALUE encoding, const char *name) { @@ -1135,11 +1179,12 @@ enc_set_default_encoding(struct default_encoding *def, VALUE encoding, const cha enc_alias_internal(name, def->index); } + if (def == &default_external) + enc_set_filesystem_encoding(); + return overridden; } -static struct default_encoding default_external = {0}; - rb_encoding * rb_default_external_encoding(void) { @@ -1270,7 +1315,7 @@ set_default_internal(VALUE klass, VALUE encoding) * LANG=ja * Encoding.locale_charmap => "eucJP" * - * The result is higly platform dependent. + * The result is highly platform dependent. * So Encoding.find(Encoding.locale_charmap) may cause an error. * If you need some encoding object even for unknown locale, * Encoding.find("locale") can be used. diff --git a/enum.c b/enum.c index 715969d060ffd2..721227922394be 100644 --- a/enum.c +++ b/enum.c @@ -149,9 +149,6 @@ enum_count(int argc, VALUE *argv, VALUE obj) func = count_iter_i; } else { - if (rb_respond_to(obj, id_size)) { - return rb_funcall(obj, id_size, 0, 0); - } func = count_all_i; } } @@ -396,6 +393,48 @@ enum_collect(VALUE obj) return ary; } +static VALUE +flat_map_i(VALUE i, VALUE ary, int argc, VALUE *argv) +{ + VALUE tmp; + + i = enum_yield(argc, argv); + tmp = rb_check_array_type(i); + + if (NIL_P(tmp)) { + rb_ary_push(ary, i); + } + else { + rb_ary_concat(ary, tmp); + } + return Qnil; +} + +/* + * call-seq: + * enum.flat_map {| obj | block } => array + * enum.collect_concat {| obj | block } => array + * + * Returns a new array with the concatenated results of running + * block once for every element in enum. + * + * [[1,2],[3,4]].flat_map {|i| i } #=> [1, 2, 3, 4] + * + */ + +static VALUE +enum_flat_map(VALUE obj) +{ + VALUE ary; + + RETURN_ENUMERATOR(obj, 0, 0); + + ary = rb_ary_new(); + rb_block_call(obj, id_each, 0, 0, flat_map_i, ary); + + return ary; +} + /* * call-seq: * enum.to_a => array @@ -681,7 +720,7 @@ enum_first(int argc, VALUE *argv, VALUE obj) * +1 depending on the comparison between a and b. As of * Ruby 1.8, the method Enumerable#sort_by implements a * built-in Schwartzian Transform, useful when key computation or - * comparison is expensive.. + * comparison is expensive. * * %w(rhea kea flea).sort #=> ["flea", "kea", "rhea"] * (1..10).sort {|a,b| b <=> a} #=> [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] @@ -1134,57 +1173,123 @@ enum_max(VALUE obj) return result[0]; } -static VALUE -minmax_i(VALUE i, VALUE *memo, int argc, VALUE *argv) +struct minmax_t { + VALUE min; + VALUE max; + VALUE ary; + VALUE last; +}; + +static void +minmax_i_update(VALUE i, VALUE j, struct minmax_t *memo) { int n; - ENUM_WANT_SVALUE(); - - if (memo[0] == Qundef) { - memo[0] = i; - memo[1] = i; + if (memo->min == Qundef) { + memo->min = i; + memo->max = j; } else { - n = rb_cmpint(rb_funcall(i, id_cmp, 1, memo[0]), i, memo[0]); + n = rb_cmpint(rb_funcall(i, id_cmp, 1, memo->min), i, memo->min); if (n < 0) { - memo[0] = i; + memo->min = i; } - n = rb_cmpint(rb_funcall(i, id_cmp, 1, memo[1]), i, memo[1]); + n = rb_cmpint(rb_funcall(j, id_cmp, 1, memo->max), j, memo->max); if (n > 0) { - memo[1] = i; + memo->max = j; } } - return Qnil; } static VALUE -minmax_ii(VALUE i, VALUE *memo, int argc, VALUE *argv) +minmax_i(VALUE i, VALUE _memo, int argc, VALUE *argv) { + struct minmax_t *memo = (struct minmax_t *)_memo; int n; + VALUE j; ENUM_WANT_SVALUE(); - if (memo[0] == Qundef) { - memo[0] = i; - memo[1] = i; + if (memo->last == Qundef) { + memo->last = i; + return Qnil; + } + j = memo->last; + memo->last = Qundef; + + n = rb_cmpint(rb_funcall(j, id_cmp, 1, i), j, i); + if (n == 0) + i = j; + else if (n < 0) { + VALUE tmp; + tmp = i; + i = j; + j = tmp; + } + + minmax_i_update(i, j, memo); + + return Qnil; +} + +static void +minmax_ii_update(VALUE i, VALUE j, struct minmax_t *memo) +{ + int n; + + if (memo->min == Qundef) { + memo->min = i; + memo->max = j; } else { - VALUE ary = memo[2]; + VALUE ary = memo->ary; - RARRAY_PTR(ary)[0] = i; - RARRAY_PTR(ary)[1] = memo[0]; - n = rb_cmpint(rb_yield(ary), i, memo[0]); + rb_ary_store(ary, 0, i); + rb_ary_store(ary, 1, memo->min); + n = rb_cmpint(rb_yield(ary), i, memo->min); if (n < 0) { - memo[0] = i; + memo->min = i; } - RARRAY_PTR(ary)[0] = i; - RARRAY_PTR(ary)[1] = memo[1]; - n = rb_cmpint(rb_yield(ary), i, memo[1]); + rb_ary_store(ary, 0, j); + rb_ary_store(ary, 1, memo->max); + n = rb_cmpint(rb_yield(ary), j, memo->max); if (n > 0) { - memo[1] = i; + memo->max = j; } } +} + +static VALUE +minmax_ii(VALUE i, VALUE _memo, int argc, VALUE *argv) +{ + struct minmax_t *memo = (struct minmax_t *)_memo; + int n; + VALUE ary, j; + + ENUM_WANT_SVALUE(); + + if (memo->last == Qundef) { + memo->last = i; + return Qnil; + } + j = memo->last; + memo->last = Qundef; + + ary = memo->ary; + rb_ary_store(ary, 0, j); + rb_ary_store(ary, 1, i); + n = rb_cmpint(rb_yield(ary), j, i); + if (n == 0) + i = j; + else if (n < 0) { + VALUE tmp; + tmp = i; + i = j; + j = tmp; + } + + minmax_ii_update(i, j, memo); + return Qnil; } @@ -1206,20 +1311,25 @@ minmax_ii(VALUE i, VALUE *memo, int argc, VALUE *argv) static VALUE enum_minmax(VALUE obj) { - VALUE result[3]; + struct minmax_t memo; VALUE ary = rb_ary_new3(2, Qnil, Qnil); - result[0] = Qundef; + memo.min = Qundef; + memo.last = Qundef; if (rb_block_given_p()) { - result[2] = ary; - rb_block_call(obj, id_each, 0, 0, minmax_ii, (VALUE)result); + memo.ary = ary; + rb_block_call(obj, id_each, 0, 0, minmax_ii, (VALUE)&memo); + if (memo.last != Qundef) + minmax_ii_update(memo.last, memo.last, &memo); } else { - rb_block_call(obj, id_each, 0, 0, minmax_i, (VALUE)result); + rb_block_call(obj, id_each, 0, 0, minmax_i, (VALUE)&memo); + if (memo.last != Qundef) + minmax_i_update(memo.last, memo.last, &memo); } - if (result[0] != Qundef) { - RARRAY_PTR(ary)[0] = result[0]; - RARRAY_PTR(ary)[1] = result[1]; + if (memo.min != Qundef) { + rb_ary_store(ary, 0, memo.min); + rb_ary_store(ary, 1, memo.max); } return ary; } @@ -1310,30 +1420,73 @@ enum_max_by(VALUE obj) return memo[1]; } +struct minmax_by_t { + VALUE min_bv; + VALUE max_bv; + VALUE min; + VALUE max; + VALUE last_bv; + VALUE last; +}; + +static void +minmax_by_i_update(VALUE v1, VALUE v2, VALUE i1, VALUE i2, struct minmax_by_t *memo) +{ + if (memo->min_bv == Qundef) { + memo->min_bv = v1; + memo->max_bv = v2; + memo->min = i1; + memo->max = i2; + } + else { + if (rb_cmpint(rb_funcall(v1, id_cmp, 1, memo->min_bv), v1, memo->min_bv) < 0) { + memo->min_bv = v1; + memo->min = i1; + } + if (rb_cmpint(rb_funcall(v2, id_cmp, 1, memo->max_bv), v2, memo->max_bv) > 0) { + memo->max_bv = v2; + memo->max = i2; + } + } +} + static VALUE -minmax_by_i(VALUE i, VALUE *memo, int argc, VALUE *argv) +minmax_by_i(VALUE i, VALUE _memo, int argc, VALUE *argv) { - VALUE v; + struct minmax_by_t *memo = (struct minmax_by_t *)_memo; + VALUE vi, vj, j; + int n; ENUM_WANT_SVALUE(); - v = rb_yield(i); - if (memo[0] == Qundef) { - memo[0] = v; - memo[1] = v; - memo[2] = i; - memo[3] = i; + vi = rb_yield(i); + + if (memo->last_bv == Qundef) { + memo->last_bv = vi; + memo->last = i; + return Qnil; } - else { - if (rb_cmpint(rb_funcall(v, id_cmp, 1, memo[0]), v, memo[0]) < 0) { - memo[0] = v; - memo[2] = i; - } - if (rb_cmpint(rb_funcall(v, id_cmp, 1, memo[1]), v, memo[1]) > 0) { - memo[1] = v; - memo[3] = i; - } + vj = memo->last_bv; + j = memo->last; + memo->last_bv = Qundef; + + n = rb_cmpint(rb_funcall(vj, id_cmp, 1, vi), vj, vi); + if (n == 0) { + i = j; + vi = vj; + } + else if (n < 0) { + VALUE tmp; + tmp = i; + i = j; + j = tmp; + tmp = vi; + vi = vj; + vj = tmp; } + + minmax_by_i_update(vi, vj, i, j, memo); + return Qnil; } @@ -1352,16 +1505,20 @@ minmax_by_i(VALUE i, VALUE *memo, int argc, VALUE *argv) static VALUE enum_minmax_by(VALUE obj) { - VALUE memo[4]; + struct minmax_by_t memo; RETURN_ENUMERATOR(obj, 0, 0); - memo[0] = Qundef; - memo[1] = Qundef; - memo[2] = Qnil; - memo[3] = Qnil; - rb_block_call(obj, id_each, 0, 0, minmax_by_i, (VALUE)memo); - return rb_assoc_new(memo[2], memo[3]); + memo.min_bv = Qundef; + memo.max_bv = Qundef; + memo.min = Qnil; + memo.max = Qnil; + memo.last_bv = Qundef; + memo.last = Qundef; + rb_block_call(obj, id_each, 0, 0, minmax_by_i, (VALUE)&memo); + if (memo.last_bv != Qundef) + minmax_by_i_update(memo.last_bv, memo.last_bv, memo.last, memo.last, &memo); + return rb_assoc_new(memo.min, memo.max); } static VALUE @@ -1802,6 +1959,408 @@ enum_cycle(int argc, VALUE *argv, VALUE obj) return Qnil; /* not reached */ } +struct chunk_arg { + VALUE categorize; + VALUE state; + VALUE prev_value; + VALUE prev_elts; + VALUE yielder; +}; + +static VALUE +chunk_ii(VALUE i, VALUE _argp, int argc, VALUE *argv) +{ + struct chunk_arg *argp = (struct chunk_arg *)_argp; + VALUE v; + VALUE alone = ID2SYM(rb_intern("_alone")); + VALUE separator = ID2SYM(rb_intern("_separator")); + + ENUM_WANT_SVALUE(); + + if (NIL_P(argp->state)) + v = rb_funcall(argp->categorize, rb_intern("call"), 1, i); + else + v = rb_funcall(argp->categorize, rb_intern("call"), 2, i, argp->state); + + if (v == alone) { + if (!NIL_P(argp->prev_value)) { + rb_funcall(argp->yielder, rb_intern("<<"), 1, rb_assoc_new(argp->prev_value, argp->prev_elts)); + argp->prev_value = argp->prev_elts = Qnil; + } + rb_funcall(argp->yielder, rb_intern("<<"), 1, rb_assoc_new(v, rb_ary_new3(1, i))); + } + else if (NIL_P(v) || v == separator) { + if (!NIL_P(argp->prev_value)) { + rb_funcall(argp->yielder, rb_intern("<<"), 1, rb_assoc_new(argp->prev_value, argp->prev_elts)); + argp->prev_value = argp->prev_elts = Qnil; + } + } + else if (SYMBOL_P(v) && rb_id2name(SYM2ID(v))[0] == '_') { + rb_raise(rb_eRuntimeError, "symbol begins with an underscore is reserved"); + } + else { + if (NIL_P(argp->prev_value)) { + argp->prev_value = v; + argp->prev_elts = rb_ary_new3(1, i); + } + else { + if (rb_equal(argp->prev_value, v)) { + rb_ary_push(argp->prev_elts, i); + } + else { + rb_funcall(argp->yielder, rb_intern("<<"), 1, rb_assoc_new(argp->prev_value, argp->prev_elts)); + argp->prev_value = v; + argp->prev_elts = rb_ary_new3(1, i); + } + } + } + return Qnil; +} + +static VALUE +chunk_i(VALUE yielder, VALUE enumerator, int argc, VALUE *argv) +{ + VALUE enumerable; + struct chunk_arg arg; + + enumerable = rb_ivar_get(enumerator, rb_intern("chunk_enumerable")); + arg.categorize = rb_ivar_get(enumerator, rb_intern("chunk_categorize")); + arg.state = rb_ivar_get(enumerator, rb_intern("chunk_initial_state")); + arg.prev_value = Qnil; + arg.prev_elts = Qnil; + arg.yielder = yielder; + + if (!NIL_P(arg.state)) + arg.state = rb_obj_dup(arg.state); + + rb_block_call(enumerable, id_each, 0, 0, chunk_ii, (VALUE)&arg); + if (!NIL_P(arg.prev_elts)) + rb_funcall(arg.yielder, rb_intern("<<"), 1, rb_assoc_new(arg.prev_value, arg.prev_elts)); + return Qnil; +} + +/* + * call-seq: + * enum.chunk {|elt| ... } => enumerator + * enum.chunk(initial_state) {|elt, state| ... } => enumerator + * + * Creates an enumerator for each chunked elements. + * The consecutive elements which have same block value are chunked. + * + * The result enumerator yields the block value and an array of chunked elements. + * So "each" method can be called as follows. + * + * enum.chunk {|elt| key }.each {|key, ary| ... } + * enum.chunk(initial_state) {|elt, state| key }.each {|key, ary| ... } + * + * For example, consecutive even numbers and odd numbers can be + * splitted as follows. + * + * [3,1,4,1,5,9,2,6,5,3,5].chunk {|n| + * n.even? + * }.each {|even, ary| + * p [even, ary] + * } + * #=> [false, [3, 1]] + * # [true, [4]] + * # [false, [1, 5, 9]] + * # [true, [2, 6]] + * # [false, [5, 3, 5]] + * + * This method is especially useful for sorted series of elements. + * The following example counts words for each initial letter. + * + * open("/usr/share/dict/words", "r:iso-8859-1") {|f| + * f.chunk {|line| line.ord }.each {|ch, lines| p [ch.chr, lines.length] } + * } + * #=> ["\n", 1] + * # ["A", 1327] + * # ["B", 1372] + * # ["C", 1507] + * # ["D", 791] + * # ... + * + * The following key values has special meaning: + * - nil and :_separator specifies that the elements are dropped. + * - :_alone specifies that the element should be chunked as a singleton. + * Other symbols which begins an underscore are reserved. + * + * nil and :_separator can be used to ignore some elements. + * For example, the sequence of hyphens in svn log can be eliminated as follows. + * + * sep = "-"*72 + "\n" + * IO.popen("svn log README") {|f| + * f.chunk {|line| + * line != sep || nil + * }.each {|_, lines| + * pp lines + * } + * } + * #=> ["r20018 | knu | 2008-10-29 13:20:42 +0900 (Wed, 29 Oct 2008) | 2 lines\n", + * # "\n", + * # "* README, README.ja: Update the portability section.\n", + * # "\n"] + * # ["r16725 | knu | 2008-05-31 23:34:23 +0900 (Sat, 31 May 2008) | 2 lines\n", + * # "\n", + * # "* README, README.ja: Add a note about default C flags.\n", + * # "\n"] + * # ... + * + * paragraphs separated by empty lines can be parsed as follows. + * + * File.foreach("README").chunk {|line| + * /\A\s*\z/ !~ line || nil + * }.each {|_, lines| + * pp lines + * } + * + * :_alone can be used to pass through bunch of elements. + * For example, sort consecutive lines formed as Foo#bar and + * pass other lines, chunk can be used as follows. + * + * pat = /\A[A-Z][A-Za-z0-9_]+\#/ + * open(filename) {|f| + * f.chunk {|line| pat =~ line ? $& : :_alone }.each {|key, lines| + * if key != :_alone + * print lines.sort.join('') + * else + * print lines.join('') + * end + * } + * } + * + * If the block needs to maintain state over multiple elements, + * _initial_state_ argument can be used. + * If non-nil value is given, + * it is duplicated for each "each" method invocation of the enumerator. + * The duplicated object is passed to 2nd argument of the block for "chunk" method. + * + */ +static VALUE +enum_chunk(int argc, VALUE *argv, VALUE enumerable) +{ + VALUE initial_state; + VALUE enumerator; + + if(!rb_block_given_p()) + rb_raise(rb_eArgError, "no block given"); + rb_scan_args(argc, argv, "01", &initial_state); + + enumerator = rb_obj_alloc(rb_cEnumerator); + rb_ivar_set(enumerator, rb_intern("chunk_enumerable"), enumerable); + rb_ivar_set(enumerator, rb_intern("chunk_categorize"), rb_block_proc()); + rb_ivar_set(enumerator, rb_intern("chunk_initial_state"), initial_state); + rb_block_call(enumerator, rb_intern("initialize"), 0, 0, chunk_i, enumerator); + return enumerator; +} + + +struct slicebefore_arg { + VALUE sep_pred; + VALUE sep_pat; + VALUE state; + VALUE prev_elts; + VALUE yielder; +}; + +static VALUE +slicebefore_ii(VALUE i, VALUE _argp, int argc, VALUE *argv) +{ + struct slicebefore_arg *argp = (struct slicebefore_arg *)_argp; + VALUE header_p; + + ENUM_WANT_SVALUE(); + + if (!NIL_P(argp->sep_pat)) + header_p = rb_funcall(argp->sep_pat, id_eqq, 1, i); + else if (NIL_P(argp->state)) + header_p = rb_funcall(argp->sep_pred, rb_intern("call"), 1, i); + else + header_p = rb_funcall(argp->sep_pred, rb_intern("call"), 2, i, argp->state); + if (RTEST(header_p)) { + if (!NIL_P(argp->prev_elts)) + rb_funcall(argp->yielder, rb_intern("<<"), 1, argp->prev_elts); + argp->prev_elts = rb_ary_new3(1, i); + } + else { + if (NIL_P(argp->prev_elts)) + argp->prev_elts = rb_ary_new3(1, i); + else + rb_ary_push(argp->prev_elts, i); + } + + return Qnil; +} + +static VALUE +slicebefore_i(VALUE yielder, VALUE enumerator, int argc, VALUE *argv) +{ + VALUE enumerable; + struct slicebefore_arg arg; + + enumerable = rb_ivar_get(enumerator, rb_intern("slicebefore_enumerable")); + arg.sep_pred = rb_attr_get(enumerator, rb_intern("slicebefore_sep_pred")); + arg.sep_pat = NIL_P(arg.sep_pred) ? rb_ivar_get(enumerator, rb_intern("slicebefore_sep_pat")) : Qnil; + arg.state = rb_ivar_get(enumerator, rb_intern("slicebefore_initial_state")); + arg.prev_elts = Qnil; + arg.yielder = yielder; + + if (!NIL_P(arg.state)) + arg.state = rb_obj_dup(arg.state); + + rb_block_call(enumerable, id_each, 0, 0, slicebefore_ii, (VALUE)&arg); + if (!NIL_P(arg.prev_elts)) + rb_funcall(arg.yielder, rb_intern("<<"), 1, arg.prev_elts); + return Qnil; +} + +/* + * call-seq: + * enum.slice_before(pattern) => enumerator + * enum.slice_before {|elt| bool } => enumerator + * enum.slice_before(initial_state) {|elt, state| bool } => enumerator + * + * Creates an enumerator for each chunked elements. + * The beginnings of chunks are defined by _pattern_ and the block. + * If _pattern_ === _elt_ returns true or + * the block returns true for the element, + * the element is beginning of a chunk. + * + * The result enumerator yields the chunked elements as an array. + * So "each" method can be called as follows. + * + * enum.slice_before(pattern).each {|ary| ... } + * enum.slice_before {|elt| bool }.each {|ary| ... } + * enum.slice_before(initial_state) {|elt, state| bool }.each {|ary| ... } + * + * For example, iteration over ChangeLog entries can be implemented as + * follows. + * + * # iterate over ChangeLog entries. + * open("ChangeLog") {|f| + * f.slice_before(/\A\S/).each {|e| pp e} + * } + * + * # same as above. block is used instead of pattern argument. + * open("ChangeLog") {|f| + * f.slice_before {|line| /\A\S/ === line }.each {|e| pp e} + * } + * + * "svn proplist -R" produces multiline output for each file. + * They can be chunked as follows: + * + * IO.popen([{"LC_ALL"=>"C"}, "svn", "proplist", "-R"]) {|f| + * f.lines.slice_before(/\AProp/).each {|lines| p lines } + * } + * #=> ["Properties on '.':\n", " svn:ignore\n", " svk:merge\n"] + * # ["Properties on 'goruby.c':\n", " svn:eol-style\n"] + * # ["Properties on 'complex.c':\n", " svn:mime-type\n", " svn:eol-style\n"] + * # ["Properties on 'regparse.c':\n", " svn:eol-style\n"] + * # ... + * + * If the block needs to maintain state over multiple elements, + * local variables can be used. + * For example, monotonically increasing elements can be chunked as follows. + * + * a = [3,1,4,1,5,9,2,6,5,3,5] + * n = 0 + * p a.slice_before {|elt| + * prev, n = n, elt + * prev > elt + * }.to_a + * #=> [[3], [1, 4], [1, 5, 9], [2, 6], [5], [3, 5]] + * + * However local variables are not appropriate to maintain state + * if the result enumerator is used twice or more. + * In such case, the last state of the 1st +each+ is used in 2nd +each+. + * _initial_state_ argument can be used to avoid this problem. + * If non-nil value is given as _initial_state_, + * it is duplicated for each "each" method invocation of the enumerator. + * The duplicated object is passed to 2nd argument of the block for + * +slice_before+ method. + * + * # word wrapping. + * # this assumes all characters have same width. + * def wordwrap(words, maxwidth) + * # if cols is a local variable, 2nd "each" may start with non-zero cols. + * words.slice_before(cols: 0) {|w, h| + * h[:cols] += 1 if h[:cols] != 0 + * h[:cols] += w.length + * if maxwidth < h[:cols] + * h[:cols] = w.length + * true + * else + * false + * end + * } + * end + * text = (1..20).to_a.join(" ") + * enum = wordwrap(text.split(/\s+/), 10) + * puts "-"*10 + * enum.each {|ws| puts ws.join(" ") } + * puts "-"*10 + * #=> ---------- + * # 1 2 3 4 5 + * # 6 7 8 9 10 + * # 11 12 13 + * # 14 15 16 + * # 17 18 19 + * # 20 + * # ---------- + * + * mbox contains series of mails which start with Unix From line. + * So each mail can be extracted by slice before Unix From line. + * + * # parse mbox + * open("mbox") {|f| + * f.slice_before {|line| + * line.start_with? "From " + * }.each {|mail| + * unix_from = mail.shift + * i = mail.index("\n") + * header = mail[0...i] + * body = mail[(i+1)..-1] + * fields = header.slice_before {|line| !" \t".include?(line[0]) }.to_a + * p unix_from + * pp fields + * pp body + * } + * } + * + * # split mails in mbox (slice before Unix From line after an empty line) + * open("mbox") {|f| + * f.slice_before(emp: true) {|line,h| + * prevemp = h[:emp] + * h[:emp] = line == "\n" + * prevemp && line.start_with?("From ") + * }.each {|mail| + * pp mail + * } + * + */ +static VALUE +enum_slice_before(int argc, VALUE *argv, VALUE enumerable) +{ + VALUE enumerator; + + if (rb_block_given_p()) { + VALUE initial_state; + rb_scan_args(argc, argv, "01", &initial_state); + enumerator = rb_obj_alloc(rb_cEnumerator); + rb_ivar_set(enumerator, rb_intern("slicebefore_sep_pred"), rb_block_proc()); + rb_ivar_set(enumerator, rb_intern("slicebefore_initial_state"), initial_state); + } + else { + VALUE sep_pat; + rb_scan_args(argc, argv, "1", &sep_pat); + enumerator = rb_obj_alloc(rb_cEnumerator); + rb_ivar_set(enumerator, rb_intern("slicebefore_sep_pat"), sep_pat); + } + rb_ivar_set(enumerator, rb_intern("slicebefore_enumerable"), enumerable); + rb_block_call(enumerator, rb_intern("initialize"), 0, 0, slicebefore_i, enumerator); + return enumerator; +} + /* * call-seq: * enum.join(sep=$,) -> str @@ -1855,6 +2414,8 @@ Init_Enumerable(void) rb_define_method(rb_mEnumerable, "reject", enum_reject, 0); rb_define_method(rb_mEnumerable, "collect", enum_collect, 0); rb_define_method(rb_mEnumerable, "map", enum_collect, 0); + rb_define_method(rb_mEnumerable, "flat_map", enum_flat_map, 0); + rb_define_method(rb_mEnumerable, "collect_concat", enum_flat_map, 0); rb_define_method(rb_mEnumerable, "inject", enum_inject, -1); rb_define_method(rb_mEnumerable, "reduce", enum_inject, -1); rb_define_method(rb_mEnumerable, "partition", enum_partition, 0); @@ -1881,6 +2442,8 @@ Init_Enumerable(void) rb_define_method(rb_mEnumerable, "drop_while", enum_drop_while, 0); rb_define_method(rb_mEnumerable, "cycle", enum_cycle, -1); rb_define_method(rb_mEnumerable, "join", enum_join, -1); + rb_define_method(rb_mEnumerable, "chunk", enum_chunk, -1); + rb_define_method(rb_mEnumerable, "slice_before", enum_slice_before, -1); id_eqq = rb_intern("==="); id_each = rb_intern("each"); diff --git a/enumerator.c b/enumerator.c index e6af7d810efeb7..7c50f3dda2ae46 100644 --- a/enumerator.c +++ b/enumerator.c @@ -400,7 +400,8 @@ enumerator_initialize(int argc, VALUE *argv, VALUE obj) rb_raise(rb_eArgError, "wrong number of argument (0 for 1+)"); recv = generator_init(generator_allocate(rb_cGenerator), rb_block_proc()); - } else { + } + else { recv = *argv++; if (--argc) { meth = *argv++; @@ -445,6 +446,21 @@ rb_enumeratorize(VALUE obj, VALUE meth, int argc, VALUE *argv) return enumerator_init(enumerator_allocate(rb_cEnumerator), obj, meth, argc, argv); } +static VALUE +enumerator_block_call(VALUE obj, rb_block_call_func *func, VALUE arg) +{ + int argc = 0; + VALUE *argv = 0; + const struct enumerator *e = enumerator_ptr(obj); + ID meth = e->meth; + + if (e->args) { + argc = RARRAY_LENINT(e->args); + argv = RARRAY_PTR(e->args); + } + return rb_block_call(e->obj, meth, argc, argv, func, arg); +} + /* * call-seq: * enum.each {...} @@ -456,24 +472,15 @@ rb_enumeratorize(VALUE obj, VALUE meth, int argc, VALUE *argv) static VALUE enumerator_each(VALUE obj) { - struct enumerator *e; - int argc = 0; - VALUE *argv = 0; - if (!rb_block_given_p()) return obj; - e = enumerator_ptr(obj); - if (e->args) { - argc = RARRAY_LENINT(e->args); - argv = RARRAY_PTR(e->args); - } - return rb_block_call(e->obj, e->meth, argc, argv, - enumerator_each_i, (VALUE)e); + return enumerator_block_call(obj, enumerator_each_i, obj); } static VALUE -enumerator_with_index_i(VALUE val, VALUE *memo, int argc, VALUE *argv) +enumerator_with_index_i(VALUE val, VALUE m, int argc, VALUE *argv) { VALUE idx; + VALUE *memo = (VALUE *)m; idx = INT2FIX(*memo); ++*memo; @@ -496,23 +503,12 @@ enumerator_with_index_i(VALUE val, VALUE *memo, int argc, VALUE *argv) static VALUE enumerator_with_index(int argc, VALUE *argv, VALUE obj) { - struct enumerator *e; VALUE memo; rb_scan_args(argc, argv, "01", &memo); RETURN_ENUMERATOR(obj, argc, argv); memo = NIL_P(memo) ? 0 : (VALUE)NUM2LONG(memo); - e = enumerator_ptr(obj); - if (e->args) { - argc = RARRAY_LENINT(e->args); - argv = RARRAY_PTR(e->args); - } - else { - argc = 0; - argv = NULL; - } - return rb_block_call(e->obj, e->meth, argc, argv, - enumerator_with_index_i, (VALUE)&memo); + return enumerator_block_call(obj, enumerator_with_index_i, (VALUE)&memo); } /* @@ -520,7 +516,7 @@ enumerator_with_index(int argc, VALUE *argv, VALUE obj) * e.each_with_index {|(*args), idx| ... } * e.each_with_index * - * Same as Enumeartor#with_index, except each_with_index does not + * Same as Enumerator#with_index, except each_with_index does not * receive an offset argument. * */ @@ -553,18 +549,8 @@ enumerator_with_object_i(VALUE val, VALUE memo, int argc, VALUE *argv) static VALUE enumerator_with_object(VALUE obj, VALUE memo) { - struct enumerator *e; - int argc = 0; - VALUE *argv = 0; - RETURN_ENUMERATOR(obj, 1, &memo); - e = enumerator_ptr(obj); - if (e->args) { - argc = RARRAY_LENINT(e->args); - argv = RARRAY_PTR(e->args); - } - rb_block_call(e->obj, e->meth, argc, argv, - enumerator_with_object_i, memo); + enumerator_block_call(obj, enumerator_with_object_i, memo); return memo; } @@ -870,8 +856,7 @@ enumerator_rewind(VALUE obj) { struct enumerator *e = enumerator_ptr(obj); - if (rb_respond_to(e->obj, id_rewind)) - rb_funcall(e->obj, id_rewind, 0); + rb_check_funcall(e->obj, id_rewind, 0, 0); e->fib = 0; e->dst = Qnil; @@ -1027,6 +1012,13 @@ yielder_yield(VALUE obj, VALUE args) return rb_proc_call(ptr->proc, args); } +/* :nodoc: */ +static VALUE yielder_yield_push(VALUE obj, VALUE args) +{ + yielder_yield(obj, args); + return obj; +} + static VALUE yielder_yield_i(VALUE obj, VALUE memo, int argc, VALUE *argv) { @@ -1243,7 +1235,7 @@ Init_Enumerator(void) rb_define_alloc_func(rb_cYielder, yielder_allocate); rb_define_method(rb_cYielder, "initialize", yielder_initialize, 0); rb_define_method(rb_cYielder, "yield", yielder_yield, -2); - rb_define_method(rb_cYielder, "<<", yielder_yield, -2); + rb_define_method(rb_cYielder, "<<", yielder_yield_push, -2); id_rewind = rb_intern("rewind"); id_each = rb_intern("each"); diff --git a/error.c b/error.c index a7342de4e55bbc..3fcd18478db5d1 100644 --- a/error.c +++ b/error.c @@ -18,12 +18,25 @@ #ifdef HAVE_STDLIB_H #include #endif +#include + #ifndef EXIT_SUCCESS #define EXIT_SUCCESS 0 #endif extern const char ruby_description[]; +static const char * +rb_strerrno(int err) +{ +#define defined_error(name, num) if (err == num) return name; +#define undefined_error(name) +#include "known_errors.inc" +#undef defined_error +#undef undefined_error + return NULL; +} + static int err_position_0(char *buf, long len, const char *file, int line) { @@ -235,6 +248,20 @@ rb_bug(const char *fmt, ...) abort(); } +void +rb_bug_errno(const char *mesg, int errno_arg) +{ + if (errno_arg == 0) + rb_bug("%s: errno == 0 (NOERROR)", mesg); + else { + const char *errno_str = rb_strerrno(errno_arg); + if (errno_str) + rb_bug("%s: %s (%s)", mesg, strerror(errno_arg), errno_str); + else + rb_bug("%s: %s (%d)", mesg, strerror(errno_arg), errno_arg); + } +} + void rb_compile_bug(const char *file, int line, const char *fmt, ...) { @@ -349,8 +376,6 @@ rb_check_typeddata(VALUE obj, const rb_data_type_t *data_type) } /* exception classes */ -#include - VALUE rb_eException; VALUE rb_eSystemExit; VALUE rb_eInterrupt; @@ -608,13 +633,10 @@ exc_equal(VALUE exc, VALUE obj) CONST_ID(id_message, "message"); CONST_ID(id_backtrace, "backtrace"); - if (rb_respond_to(obj, id_message) && rb_respond_to(obj, id_backtrace)) { - mesg = rb_funcall(obj, id_message, 0, 0); - backtrace = rb_funcall(obj, id_backtrace, 0, 0); - } - else { - return Qfalse; - } + mesg = rb_check_funcall(obj, id_message, 0, 0); + if (mesg == Qundef) return Qfalse; + backtrace = rb_check_funcall(obj, id_backtrace, 0, 0); + if (backtrace == Qundef) return Qfalse; } else { mesg = rb_attr_get(obj, id_mesg); @@ -794,8 +816,8 @@ static const rb_data_type_t name_err_mesg_data_type = { }; /* :nodoc: */ -static VALUE -name_err_mesg_new(VALUE obj, VALUE mesg, VALUE recv, VALUE method) +VALUE +rb_name_err_mesg_new(VALUE obj, VALUE mesg, VALUE recv, VALUE method) { VALUE *ptr = ALLOC_N(VALUE, NAME_ERR_MESG_COUNT); @@ -1112,7 +1134,7 @@ Init_Exception(void) rb_define_method(rb_eNameError, "name", name_err_name, 0); rb_define_method(rb_eNameError, "to_s", name_err_to_s, 0); rb_cNameErrorMesg = rb_define_class_under(rb_eNameError, "message", rb_cData); - rb_define_singleton_method(rb_cNameErrorMesg, "!", name_err_mesg_new, NAME_ERR_MESG_COUNT); + rb_define_singleton_method(rb_cNameErrorMesg, "!", rb_name_err_mesg_new, NAME_ERR_MESG_COUNT); rb_define_method(rb_cNameErrorMesg, "==", name_err_mesg_equal, 1); rb_define_method(rb_cNameErrorMesg, "to_str", name_err_mesg_to_str, 0); rb_define_method(rb_cNameErrorMesg, "_dump", name_err_mesg_to_str, 1); @@ -1250,10 +1272,15 @@ rb_check_frozen(VALUE obj) if (OBJ_FROZEN(obj)) rb_error_frozen(rb_obj_classname(obj)); } -void Init_syserr(void) +void +Init_syserr(void) { rb_eNOERROR = set_syserr(0, "NOERROR"); +#define defined_error(name, num) set_syserr(num, name); +#define undefined_error(name) set_syserr(0, name); #include "known_errors.inc" +#undef defined_error +#undef undefined_error } static void diff --git a/eval.c b/eval.c index 7ba413bd49b387..9ac63889cfcc5b 100644 --- a/eval.c +++ b/eval.c @@ -14,6 +14,8 @@ #include "eval_intern.h" #include "iseq.h" #include "gc.h" +#include "ruby/vm.h" +#include "ruby/encoding.h" #define numberof(array) (int)(sizeof(array) / sizeof((array)[0])) @@ -32,13 +34,6 @@ VALUE rb_eSysStackError; /* initialize ruby */ -#if defined(__APPLE__) -#define environ (*_NSGetEnviron()) -#elif !defined(_WIN32) -extern char **environ; -#endif -char **rb_origenviron; - void rb_clear_trace_func(void); void rb_thread_stop_timer_thread(void); @@ -56,8 +51,6 @@ ruby_init(void) return; initialized = 1; - rb_origenviron = environ; - ruby_init_stack((void *)&state); Init_BareVM(); Init_heap(); @@ -159,6 +152,7 @@ ruby_cleanup(volatile int ex) POP_TAG(); rb_thread_stop_timer_thread(); + state = 0; for (nerr = 0; nerr < numberof(errs); ++nerr) { VALUE err = errs[nerr]; @@ -172,12 +166,15 @@ ruby_cleanup(volatile int ex) } else if (rb_obj_is_kind_of(err, rb_eSignal)) { VALUE sig = rb_iv_get(err, "signo"); - ruby_default_signal(NUM2INT(sig)); + state = NUM2INT(sig); + break; } else if (ex == 0) { ex = 1; } } + ruby_vm_destruct(GET_VM()); + if (state) ruby_default_signal(state); #if EXIT_SUCCESS != 0 || EXIT_FAILURE != 1 switch (ex) { @@ -193,8 +190,8 @@ ruby_cleanup(volatile int ex) return ex; } -int -ruby_exec_node(void *n, const char *file) +static int +ruby_exec_internal(void *n) { volatile int state; VALUE iseq = (VALUE)n; @@ -220,19 +217,38 @@ ruby_stop(int ex) } int -ruby_run_node(void *n) +ruby_executable_node(void *n, int *status) { VALUE v = (VALUE)n; + int s; switch (v) { - case Qtrue: return EXIT_SUCCESS; - case Qfalse: return EXIT_FAILURE; + case Qtrue: s = EXIT_SUCCESS; break; + case Qfalse: s = EXIT_FAILURE; break; + default: + if (!FIXNUM_P(v)) return TRUE; + s = FIX2INT(v); } - if (FIXNUM_P(v)) { - return FIX2INT(v); + if (status) *status = s; + return FALSE; +} + +int +ruby_run_node(void *n) +{ + int status; + if (!ruby_executable_node(n, &status)) { + ruby_cleanup(0); + return status; } + return ruby_cleanup(ruby_exec_node(n)); +} + +int +ruby_exec_node(void *n) +{ ruby_init_stack((void *)&n); - return ruby_cleanup(ruby_exec_node(n, 0)); + return ruby_exec_internal(n); } /* @@ -343,12 +359,6 @@ rb_longjmp(int tag, volatile VALUE mesg) const char *file; volatile int line = 0; - if (rb_threadptr_set_raised(th)) { - th->errinfo = exception_error; - rb_threadptr_reset_raised(th); - JUMP_TAG(TAG_FATAL); - } - if (NIL_P(mesg)) mesg = th->errinfo; if (NIL_P(mesg)) { @@ -358,13 +368,19 @@ rb_longjmp(int tag, volatile VALUE mesg) file = rb_sourcefile(); if (file) line = rb_sourceline(); if (file && !NIL_P(mesg)) { - at = get_backtrace(mesg); - if (NIL_P(at)) { - at = rb_make_backtrace(); - if (OBJ_FROZEN(mesg)) { - mesg = rb_obj_dup(mesg); + if (mesg == sysstack_error) { + at = rb_enc_sprintf(rb_usascii_encoding(), "%s:%d", file, line); + rb_iv_set(mesg, "bt", at); + } + else { + at = get_backtrace(mesg); + if (NIL_P(at)) { + at = rb_make_backtrace(); + if (OBJ_FROZEN(mesg)) { + mesg = rb_obj_dup(mesg); + } + set_backtrace(mesg, at); } - set_backtrace(mesg, at); } } if (!NIL_P(mesg)) { @@ -399,6 +415,12 @@ rb_longjmp(int tag, volatile VALUE mesg) } } + if (rb_threadptr_set_raised(th)) { + th->errinfo = exception_error; + rb_threadptr_reset_raised(th); + JUMP_TAG(TAG_FATAL); + } + rb_trap_restore_mask(); if (tag != TAG_FATAL) { @@ -410,11 +432,13 @@ rb_longjmp(int tag, volatile VALUE mesg) JUMP_TAG(tag); } +static VALUE make_exception(int argc, VALUE *argv, int isstr); + void rb_exc_raise(VALUE mesg) { if (!NIL_P(mesg)) { - mesg = rb_make_exception(1, &mesg); + mesg = make_exception(1, &mesg, FALSE); } rb_longjmp(TAG_RAISE, mesg); } @@ -423,7 +447,7 @@ void rb_exc_fatal(VALUE mesg) { if (!NIL_P(mesg)) { - mesg = rb_make_exception(1, &mesg); + mesg = make_exception(1, &mesg, FALSE); } rb_longjmp(TAG_FATAL, mesg); } @@ -475,8 +499,8 @@ rb_f_raise(int argc, VALUE *argv) return Qnil; /* not reached */ } -VALUE -rb_make_exception(int argc, VALUE *argv) +static VALUE +make_exception(int argc, VALUE *argv, int isstr) { VALUE mesg; ID exception; @@ -489,10 +513,12 @@ rb_make_exception(int argc, VALUE *argv) case 1: if (NIL_P(argv[0])) break; - mesg = rb_check_string_type(argv[0]); - if (!NIL_P(mesg)) { - mesg = rb_exc_new3(rb_eRuntimeError, mesg); - break; + if (isstr) { + mesg = rb_check_string_type(argv[0]); + if (!NIL_P(mesg)) { + mesg = rb_exc_new3(rb_eRuntimeError, mesg); + break; + } } n = 0; goto exception_call; @@ -501,11 +527,12 @@ rb_make_exception(int argc, VALUE *argv) case 3: n = 1; exception_call: + if (argv[0] == sysstack_error) return argv[0]; CONST_ID(exception, "exception"); - if (!rb_respond_to(argv[0], exception)) { + mesg = rb_check_funcall(argv[0], exception, n, argv+1); + if (mesg == Qundef) { rb_raise(rb_eTypeError, "exception class/object expected"); } - mesg = rb_funcall(argv[0], exception, n, argv[1]); break; default: rb_raise(rb_eArgError, "wrong number of arguments"); @@ -521,6 +548,12 @@ rb_make_exception(int argc, VALUE *argv) return mesg; } +VALUE +rb_make_exception(int argc, VALUE *argv) +{ + return make_exception(argc, argv, TRUE); +} + void rb_raise_jump(VALUE mesg) { @@ -906,9 +939,8 @@ VALUE rb_f_trace_var(); VALUE rb_f_untrace_var(); static VALUE * -errinfo_place(void) +errinfo_place(rb_thread_t *th) { - rb_thread_t *th = GET_THREAD(); rb_control_frame_t *cfp = th->cfp; rb_control_frame_t *end_cfp = RUBY_VM_END_CONTROL_FRAME(th); @@ -929,18 +961,23 @@ errinfo_place(void) } static VALUE -get_errinfo(void) +get_thread_errinfo(rb_thread_t *th) { - VALUE *ptr = errinfo_place(); + VALUE *ptr = errinfo_place(th); if (ptr) { return *ptr; } else { - rb_thread_t *th = GET_THREAD(); return th->errinfo; } } +static VALUE +get_errinfo(void) +{ + return get_thread_errinfo(GET_THREAD()); +} + static VALUE errinfo_getter(ID id) { @@ -955,7 +992,7 @@ errinfo_setter(VALUE val, ID id, VALUE *var) rb_raise(rb_eTypeError, "assigning non-exception to $!"); } else { - VALUE *ptr = errinfo_place(); + VALUE *ptr = errinfo_place(GET_THREAD()); if (ptr) { *ptr = val; } diff --git a/eval_intern.h b/eval_intern.h index 573f49751b3a67..b7790828dcdb82 100644 --- a/eval_intern.h +++ b/eval_intern.h @@ -157,7 +157,7 @@ enum ruby_tag_type { #define TAG_MASK RUBY_TAG_MASK #define NEW_THROW_OBJECT(val, pt, st) \ - ((VALUE)NEW_NODE(NODE_LIT, (val), (pt), (st))) + ((VALUE)rb_node_newnode(NODE_LIT, (VALUE)(val), (VALUE)(pt), (VALUE)(st))) #define SET_THROWOBJ_CATCH_POINT(obj, val) \ (RNODE((obj))->u2.value = (val)) #define SET_THROWOBJ_STATE(obj, val) \ diff --git a/ext/bigdecimal/bigdecimal.c b/ext/bigdecimal/bigdecimal.c index de18b83784a7e3..38772f68f6a3ac 100644 --- a/ext/bigdecimal/bigdecimal.c +++ b/ext/bigdecimal/bigdecimal.c @@ -8,7 +8,7 @@ * License or the Artistic License, as specified in the README file * of this BigDecimal distribution. * - * NOTE: Change log in this source removed to reduce source code size. + * NOTE: Change log in this source removed to reduce source code size. * See rev. 1.25 if needed. * */ @@ -26,7 +26,7 @@ #ifdef HAVE_IEEEFP_H #include #endif - + /* #define ENABLE_NUMERIC_STRING */ VALUE rb_cBigDecimal; @@ -62,118 +62,6 @@ static U_LONG BASE1 = 1000L; /* =BASE/10 */ */ #define DoSomeOne(x,y,f) rb_num_coerce_bin(x,y,f) -#if 0 -/* BigDecimal provides arbitrary-precision floating point decimal arithmetic. - * - * Copyright (C) 2002 by Shigeo Kobayashi . - * You may distribute under the terms of either the GNU General Public - * License or the Artistic License, as specified in the README file - * of the BigDecimal distribution. - * - * Documented by mathew . - * - * = Introduction - * - * Ruby provides built-in support for arbitrary precision integer arithmetic. - * For example: - * - * 42**13 -> 1265437718438866624512 - * - * BigDecimal provides similar support for very large or very accurate floating - * point numbers. - * - * Decimal arithmetic is also useful for general calculation, because it - * provides the correct answers people expect--whereas normal binary floating - * point arithmetic often introduces subtle errors because of the conversion - * between base 10 and base 2. For example, try: - * - * sum = 0 - * for i in (1..10000) - * sum = sum + 0.0001 - * end - * print sum - * - * and contrast with the output from: - * - * require 'bigdecimal' - * - * sum = BigDecimal.new("0") - * for i in (1..10000) - * sum = sum + BigDecimal.new("0.0001") - * end - * print sum - * - * Similarly: - * - * (BigDecimal.new("1.2") - BigDecimal("1.0")) == BigDecimal("0.2") -> true - * - * (1.2 - 1.0) == 0.2 -> false - * - * = Special features of accurate decimal arithmetic - * - * Because BigDecimal is more accurate than normal binary floating point - * arithmetic, it requires some special values. - * - * == Infinity - * - * BigDecimal sometimes needs to return infinity, for example if you divide - * a value by zero. - * - * BigDecimal.new("1.0") / BigDecimal.new("0.0") -> infinity - * - * BigDecimal.new("-1.0") / BigDecimal.new("0.0") -> -infinity - * - * You can represent infinite numbers to BigDecimal using the strings - * 'Infinity', '+Infinity' and '-Infinity' (case-sensitive) - * - * == Not a Number - * - * When a computation results in an undefined value, the special value NaN - * (for 'not a number') is returned. - * - * Example: - * - * BigDecimal.new("0.0") / BigDecimal.new("0.0") -> NaN - * - * You can also create undefined values. NaN is never considered to be the - * same as any other value, even NaN itself: - * - * n = BigDecimal.new('NaN') - * - * n == 0.0 -> nil - * - * n == n -> nil - * - * == Positive and negative zero - * - * If a computation results in a value which is too small to be represented as - * a BigDecimal within the currently specified limits of precision, zero must - * be returned. - * - * If the value which is too small to be represented is negative, a BigDecimal - * value of negative zero is returned. If the value is positive, a value of - * positive zero is returned. - * - * BigDecimal.new("1.0") / BigDecimal.new("-Infinity") -> -0.0 - * - * BigDecimal.new("1.0") / BigDecimal.new("Infinity") -> 0.0 - * - * (See BigDecimal.mode for how to specify limits of precision.) - * - * Note that -0.0 and 0.0 are considered to be the same for the purposes of - * comparison. - * - * Note also that in mathematics, there is no particular concept of negative - * or positive zero; true mathematical zero has no sign. - */ -void -Init_BigDecimal() -{ - /* This is a #if-ed out function to fool Rdoc into documenting the class. */ - /* The real init function is Init_bigdecimal() further down. */ -} -#endif - /* * Returns the BigDecimal version number. * @@ -191,7 +79,7 @@ BigDecimal_version(VALUE self) } /* - * VP routines used in BigDecimal part + * VP routines used in BigDecimal part */ static unsigned short VpGetException(void); static void VpSetException(unsigned short f); @@ -239,9 +127,24 @@ GetVpValue(VALUE v, int must) Real *pv; VALUE bg; char szD[128]; + VALUE orig = Qundef; + int util_loaded = 0; +again: switch(TYPE(v)) { + case T_RATIONAL: + if(orig == Qundef ? (orig = v, 1) : orig != v) { + if(!util_loaded) { + rb_require("bigdecimal/util"); + util_loaded = 1; + } + v = rb_funcall2(v, rb_intern("to_d"), 0, 0); + goto again; + } + v = orig; + goto SomeOneMayDoIt; + case T_DATA: if(rb_typeddata_is_kind_of(v, &BigDecimal_data_type)) { pv = DATA_PTR(v); @@ -298,7 +201,7 @@ BigDecimal_double_fig(VALUE self) * * Returns an Array of two Integer values. * - * The first value is the current number of significant digits in the + * The first value is the current number of significant digits in the * BigDecimal. The second value is the maximum number of significant digits * for the BigDecimal. */ @@ -398,8 +301,8 @@ BigDecimal_load(VALUE self, VALUE str) * BigDecimal::EXCEPTION_ZERODIVIDE * BigDecimal::EXCEPTION_ALL * - * For each mode parameter above, if the value set is false, computation - * continues after an arithmetic exception of the appropriate type. + * For each mode parameter above, if the value set is false, computation + * continues after an arithmetic exception of the appropriate type. * When computation continues, results are as follows: * * EXCEPTION_NaN:: NaN @@ -426,7 +329,7 @@ BigDecimal_mode(int argc, VALUE *argv, VALUE self) VALUE which; VALUE val; unsigned long f,fo; - + if(rb_scan_args(argc,argv,"11",&which,&val)==1) val = Qnil; Check_Type(which, T_FIXNUM); @@ -536,7 +439,9 @@ BigDecimal_IsNaN(VALUE self) return Qfalse; } -/* Returns True if the value is infinite */ +/* Returns nil, −1, or +1 depending on whether the value is finite, + * -infinity, or +infinity. + */ static VALUE BigDecimal_IsInfinite(VALUE self) { @@ -671,7 +576,7 @@ BigDecimal_to_r(VALUE self) digits = RARRAY_PTR(a)[1]; denomi_power = power - RSTRING_LEN(digits); numerator = rb_funcall(digits, rb_intern("to_i"), 0); - + if (sign < 0) { numerator = rb_funcall(numerator, '*', 1, INT2FIX(-1)); } @@ -689,8 +594,8 @@ BigDecimal_to_r(VALUE self) /* The coerce method provides support for Ruby type coercion. It is not * enabled by default. - * - * This means that binary operations like + * / or - can often be performed + * + * This means that binary operations like + * / or - can often be performed * on a BigDecimal and an object of another type, if the other object can * be coerced into a BigDecimal value. * @@ -730,7 +635,7 @@ BigDecimal_uplus(VALUE self) /* call-seq: * add(value, digits) * - * Add the specified value. + * Add the specified value. * * e.g. * c = a.add(b,n) @@ -768,7 +673,7 @@ BigDecimal_add(VALUE self, VALUE r) /* call-seq: * sub(value, digits) * - * Subtract the specified value. + * Subtract the specified value. * * e.g. * c = a.sub(b,n) @@ -819,23 +724,21 @@ BigDecimalCmp(VALUE self, VALUE r,char op) switch(op) { - case '*': f = rb_intern("<=>");break; - case '=': f = rb_intern("=="); break; - case '!': f = rb_intern("!="); break; + case '*': return rb_num_coerce_cmp(self,r,rb_intern("<=>")); + case '=': return RTEST(rb_num_coerce_cmp(self,r,rb_intern("=="))) ? Qtrue : Qfalse; case 'G': f = rb_intern(">="); break; case 'L': f = rb_intern("<="); break; case '>': case '<': f = (ID)op; break; } - return rb_num_coerce_cmp(self,r,f); + return rb_num_coerce_relop(self,r,f); } SAVE(b); e = VpComp(a, b); - if(e==999) return Qnil; + if(e==999) return (op == '*') ? Qnil : Qfalse; switch(op) { case '*': return INT2FIX(e); /* any op */ case '=': if(e==0) return Qtrue ; return Qfalse; - case '!': if(e!=0) return Qtrue ; return Qfalse; case 'G': if(e>=0) return Qtrue ; return Qfalse; case '>': if(e> 0) return Qtrue ; return Qfalse; case 'L': if(e<=0) return Qtrue ; return Qfalse; @@ -852,7 +755,7 @@ BigDecimal_zero(VALUE self) return VpIsZero(a) ? Qtrue : Qfalse; } -/* Returns True if the value is non-zero. */ +/* Returns self if the value is non-zero, nil otherwise. */ static VALUE BigDecimal_nonzero(VALUE self) { @@ -872,7 +775,7 @@ BigDecimal_comp(VALUE self, VALUE r) /* * Tests for value equality; returns true if the values are equal. * - * The == and === operators and the eql? method have the same implementation + * The == and === operators and the eql? method have the same implementation * for BigDecimal. * * Values may be coerced to perform the comparison: @@ -900,7 +803,7 @@ BigDecimal_lt(VALUE self, VALUE r) /* call-seq: * a <= b * - * Returns true if a is less than or equal to b. Values may be coerced to + * Returns true if a is less than or equal to b. Values may be coerced to * perform the comparison (see ==, coerce). */ static VALUE @@ -912,7 +815,7 @@ BigDecimal_le(VALUE self, VALUE r) /* call-seq: * a > b * - * Returns true if a is greater than b. Values may be coerced to + * Returns true if a is greater than b. Values may be coerced to * perform the comparison (see ==, coerce). */ static VALUE @@ -924,7 +827,7 @@ BigDecimal_gt(VALUE self, VALUE r) /* call-seq: * a >= b * - * Returns true if a is greater than or equal to b. Values may be coerced to + * Returns true if a is greater than or equal to b. Values may be coerced to * perform the comparison (see ==, coerce) */ static VALUE @@ -947,7 +850,7 @@ BigDecimal_neg(VALUE self) /* call-seq: * mult(value, digits) * - * Multiply by the specified value. + * Multiply by the specified value. * * e.g. * c = a.mult(b,n) @@ -997,13 +900,13 @@ BigDecimal_divide(Real **c, Real **res, Real **div, VALUE self, VALUE r) * div(value, digits) * quo(value) * - * Divide by the specified value. + * Divide by the specified value. * * e.g. * c = a.div(b,n) * * digits:: If specified and less than the number of significant digits of the result, the result is rounded to that number of digits, according to BigDecimal.mode. - * + * * If digits is 0, the result is the same as the / operator. If not, the * result is an integer BigDecimal, by analogy with Float#div. * @@ -1148,10 +1051,7 @@ BigDecimal_divremain(VALUE self, VALUE r, Real **dv, Real **rv) /* Returns the remainder from dividing by the value. * - * If the values divided are of the same sign, the remainder is the same as - * the modulus (see divmod). - * - * Otherwise, the remainder is the modulus minus the value divided by. + * x.remainder(y) means x-y*(x/y).truncate */ static VALUE BigDecimal_remainder(VALUE self, VALUE r) /* remainder */ @@ -1179,7 +1079,7 @@ BigDecimal_remainder(VALUE self, VALUE r) /* remainder */ * * a == c -> true * - * The quotient q is (a/b).floor, and the modulus is the amount that must be + * The quotient q is (a/b).floor, and the modulus is the amount that must be * added to q * b to get a. */ static VALUE @@ -1354,7 +1254,7 @@ BigDecimal_fix(VALUE self) * BigDecimal('8.7').round -> 9 * * If n is specified and positive, the fractional part of the result has no - * more than that many digits. + * more than that many digits. * * If n is specified and negative, at least that many digits to the left of the * decimal point will be 0 in the result. @@ -1363,7 +1263,7 @@ BigDecimal_fix(VALUE self) * * BigDecimal('13345.234').round(-2) -> 13300.0 * - * The value of the optional mode argument can be used to determine how + * The value of the optional mode argument can be used to determine how * rounding is performed; see BigDecimal.mode. */ static VALUE @@ -1422,7 +1322,7 @@ BigDecimal_round(int argc, VALUE *argv, VALUE self) * BigDecimal('8.7').truncate -> 8 * * If n is specified and positive, the fractional part of the result has no - * more than that many digits. + * more than that many digits. * * If n is specified and negative, at least that many digits to the left of the * decimal point will be 0 in the result. @@ -1485,7 +1385,7 @@ BigDecimal_frac(VALUE self) * BigDecimal('-9.1').floor -> -10 * * If n is specified and positive, the fractional part of the result has no - * more than that many digits. + * more than that many digits. * * If n is specified and negative, at least that * many digits to the left of the decimal point will be 0 in the result. @@ -1532,7 +1432,7 @@ BigDecimal_floor(int argc, VALUE *argv, VALUE self) * BigDecimal('-9.1').ceil -> -9 * * If n is specified and positive, the fractional part of the result has no - * more than that many digits. + * more than that many digits. * * If n is specified and negative, at least that * many digits to the left of the decimal point will be 0 in the result. @@ -1584,7 +1484,7 @@ BigDecimal_ceil(int argc, VALUE *argv, VALUE self) * * A space at the start of s returns positive values with a leading space. * - * If s contains a number, a space is inserted after each group of that many + * If s contains a number, a space is inserted after each group of that many * fractional digits. * * If s ends with an 'E', engineering notation (0.xxxxEnn) is used. @@ -1614,7 +1514,7 @@ BigDecimal_to_s(int argc, VALUE *argv, VALUE self) VALUE f; GUARD_OBJ(vp,GetVpValue(self,1)); - + if(rb_scan_args(argc,argv,"01",&f)==1) { if(TYPE(f)==T_STRING) { SafeStringValue(f); @@ -1668,7 +1568,7 @@ BigDecimal_to_s(int argc, VALUE *argv, VALUE self) * * The fourth value is an Integer exponent. * - * If the BigDecimal can be represented as 0.xxxxxx*10**n, then xxxxxx is the + * If the BigDecimal can be represented as 0.xxxxxx*10**n, then xxxxxx is the * string of significant digits with no leading zeros, and n is the exponent. * * From these values, you can translate a BigDecimal to a float as follows: @@ -1676,7 +1576,7 @@ BigDecimal_to_s(int argc, VALUE *argv, VALUE self) * sign, significant_digits, base, exponent = a.split * f = sign * "0.#{significant_digits}".to_f * (base ** exponent) * - * (Note that the to_f method is provided as a more convenient way to translate + * (Note that the to_f method is provided as a more convenient way to translate * a BigDecimal to a Float.) */ static VALUE @@ -1842,13 +1742,13 @@ BigDecimal_new(int argc, VALUE *argv, VALUE self) /* call-seq: * BigDecimal.limit(digits) * - * Limit the number of significant digits in newly created BigDecimal - * numbers to the specified value. Rounding is performed as necessary, + * Limit the number of significant digits in newly created BigDecimal + * numbers to the specified value. Rounding is performed as necessary, * as specified by BigDecimal.mode. * * A limit of 0, the default, means no upper limit. * - * The limit specified by this method takes less priority over any limit + * The limit specified by this method takes less priority over any limit * specified to instance methods such as ceil, floor, truncate, or round. */ static VALUE @@ -1872,10 +1772,10 @@ BigDecimal_limit(int argc, VALUE *argv, VALUE self) /* Returns the sign of the value. * - * Returns a positive value if > 0, a negative value if < 0, and a + * Returns a positive value if > 0, a negative value if < 0, and a * zero if == 0. * - * The specific value returned indicates the type and sign of the BigDecimal, + * The specific value returned indicates the type and sign of the BigDecimal, * as follows: * * BigDecimal::SIGN_NaN:: value is Not a Number @@ -1893,6 +1793,110 @@ BigDecimal_sign(VALUE self) return INT2FIX(s); } +/* Document-class: BigDecimal + * BigDecimal provides arbitrary-precision floating point decimal arithmetic. + * + * Copyright (C) 2002 by Shigeo Kobayashi . + * You may distribute under the terms of either the GNU General Public + * License or the Artistic License, as specified in the README file + * of the BigDecimal distribution. + * + * Documented by mathew . + * + * = Introduction + * + * Ruby provides built-in support for arbitrary precision integer arithmetic. + * For example: + * + * 42**13 -> 1265437718438866624512 + * + * BigDecimal provides similar support for very large or very accurate floating + * point numbers. + * + * Decimal arithmetic is also useful for general calculation, because it + * provides the correct answers people expect--whereas normal binary floating + * point arithmetic often introduces subtle errors because of the conversion + * between base 10 and base 2. For example, try: + * + * sum = 0 + * for i in (1..10000) + * sum = sum + 0.0001 + * end + * print sum + * + * and contrast with the output from: + * + * require 'bigdecimal' + * + * sum = BigDecimal.new("0") + * for i in (1..10000) + * sum = sum + BigDecimal.new("0.0001") + * end + * print sum + * + * Similarly: + * + * (BigDecimal.new("1.2") - BigDecimal("1.0")) == BigDecimal("0.2") -> true + * + * (1.2 - 1.0) == 0.2 -> false + * + * = Special features of accurate decimal arithmetic + * + * Because BigDecimal is more accurate than normal binary floating point + * arithmetic, it requires some special values. + * + * == Infinity + * + * BigDecimal sometimes needs to return infinity, for example if you divide + * a value by zero. + * + * BigDecimal.new("1.0") / BigDecimal.new("0.0") -> infinity + * + * BigDecimal.new("-1.0") / BigDecimal.new("0.0") -> -infinity + * + * You can represent infinite numbers to BigDecimal using the strings + * 'Infinity', '+Infinity' and '-Infinity' (case-sensitive) + * + * == Not a Number + * + * When a computation results in an undefined value, the special value NaN + * (for 'not a number') is returned. + * + * Example: + * + * BigDecimal.new("0.0") / BigDecimal.new("0.0") -> NaN + * + * You can also create undefined values. NaN is never considered to be the + * same as any other value, even NaN itself: + * + * n = BigDecimal.new('NaN') + * + * n == 0.0 -> nil + * + * n == n -> nil + * + * == Positive and negative zero + * + * If a computation results in a value which is too small to be represented as + * a BigDecimal within the currently specified limits of precision, zero must + * be returned. + * + * If the value which is too small to be represented is negative, a BigDecimal + * value of negative zero is returned. If the value is positive, a value of + * positive zero is returned. + * + * BigDecimal.new("1.0") / BigDecimal.new("-Infinity") -> -0.0 + * + * BigDecimal.new("1.0") / BigDecimal.new("Infinity") -> 0.0 + * + * (See BigDecimal.mode for how to specify limits of precision.) + * + * Note that -0.0 and 0.0 are considered to be the same for the purposes of + * comparison. + * + * Note also that in mathematics, there is no particular concept of negative + * or positive zero; true mathematical zero has no sign. + */ void Init_bigdecimal(void) { @@ -1915,54 +1919,54 @@ Init_bigdecimal(void) /* Constants definition */ - /* - * Base value used in internal calculations. On a 32 bit system, BASE - * is 10000, indicating that calculation is done in groups of 4 digits. + /* + * Base value used in internal calculations. On a 32 bit system, BASE + * is 10000, indicating that calculation is done in groups of 4 digits. * (If it were larger, BASE**2 wouldn't fit in 32 bits, so you couldn't - * guarantee that two groups could always be multiplied together without - * overflow.) + * guarantee that two groups could always be multiplied together without + * overflow.) */ rb_define_const(rb_cBigDecimal, "BASE", INT2FIX((S_INT)VpBaseVal())); /* Exceptions */ /* - * 0xff: Determines whether overflow, underflow or zero divide result in + * 0xff: Determines whether overflow, underflow or zero divide result in * an exception being thrown. See BigDecimal.mode. */ rb_define_const(rb_cBigDecimal, "EXCEPTION_ALL",INT2FIX(VP_EXCEPTION_ALL)); - /* - * 0x02: Determines what happens when the result of a computation is not a - * number (NaN). See BigDecimal.mode. + /* + * 0x02: Determines what happens when the result of a computation is not a + * number (NaN). See BigDecimal.mode. */ rb_define_const(rb_cBigDecimal, "EXCEPTION_NaN",INT2FIX(VP_EXCEPTION_NaN)); - /* + /* * 0x01: Determines what happens when the result of a computation is * infinity. See BigDecimal.mode. */ rb_define_const(rb_cBigDecimal, "EXCEPTION_INFINITY",INT2FIX(VP_EXCEPTION_INFINITY)); - /* + /* * 0x04: Determines what happens when the result of a computation is an * underflow (a result too small to be represented). See BigDecimal.mode. */ rb_define_const(rb_cBigDecimal, "EXCEPTION_UNDERFLOW",INT2FIX(VP_EXCEPTION_UNDERFLOW)); - /* + /* * 0x01: Determines what happens when the result of a computation is an * overflow (a result too large to be represented). See BigDecimal.mode. */ rb_define_const(rb_cBigDecimal, "EXCEPTION_OVERFLOW",INT2FIX(VP_EXCEPTION_OVERFLOW)); - /* + /* * 0x01: Determines what happens when a division by zero is performed. * See BigDecimal.mode. */ rb_define_const(rb_cBigDecimal, "EXCEPTION_ZERODIVIDE",INT2FIX(VP_EXCEPTION_ZERODIVIDE)); - /* + /* * 0x100: Determines what happens when a result must be rounded in order to * fit in the appropriate number of significant digits. See * BigDecimal.mode. @@ -4485,7 +4489,7 @@ VpMidRound(Real *y, int f, int nf) div = v/10; v = v - div*10; if (fracf == 0) { - for(i=ix+1;iPrec;i++) { + for(i=ix+1;(U_LONG)iPrec;i++) { if (y->frac[i]%BASE) { fracf = 1; break; @@ -4567,7 +4571,7 @@ VpLeftRound(Real *y, int f, int nf) return VpMidRound(y,f,nf); } -VP_EXPORT int +VP_EXPORT int VpActiveRound(Real *y, Real *x, int f, int nf) { /* First,assign whole value in truncation mode */ @@ -4586,7 +4590,7 @@ VpLimitRound(Real *c,U_LONG ixDigit) return VpLeftRound(c,VpGetRoundMode(),ix); } -static void +static void VpInternalRound(Real *c,int ixDigit,U_LONG vPrev,U_LONG v) { int f = 0; diff --git a/ext/bigdecimal/lib/bigdecimal/jacobian.rb b/ext/bigdecimal/lib/bigdecimal/jacobian.rb index 8c36ad14fc9a33..e4420df158d312 100644 --- a/ext/bigdecimal/lib/bigdecimal/jacobian.rb +++ b/ext/bigdecimal/lib/bigdecimal/jacobian.rb @@ -21,18 +21,20 @@ # fx is f.values(x). # module Jacobian + module_function + #-- def isEqual(a,b,zero=0.0,e=1.0e-8) aa = a.abs bb = b.abs if aa == zero && bb == zero then - true + true else - if ((a-b)/(aa+bb)).abs < e then - true - else - false - end + if ((a-b)/(aa+bb)).abs < e then + true + else + false + end end end #++ @@ -52,17 +54,17 @@ def dfdxi(f,fx,x,i) s = f.zero deriv = [] if(nRetry>100) then - raise "Singular Jacobian matrix. No change at x[" + i.to_s + "]" + raise "Singular Jacobian matrix. No change at x[" + i.to_s + "]" end dx = dx*f.two x[i] += dx fxNew = f.values(x) for j in 0...n do if !isEqual(fxNew[j],fx[j],f.zero,f.eps) then - ok += 1 - deriv <<= (fxNew[j]-fx[j])/dx + ok += 1 + deriv <<= (fxNew[j]-fx[j])/dx else - deriv <<= f.zero + deriv <<= f.zero end end x[i] = xSave @@ -77,7 +79,7 @@ def jacobian(f,fx,x) for i in 0...n do df = dfdxi(f,fx,x,i) for j in 0...n do - dfdx[j*n+i] = df[j] + dfdx[j*n+i] = df[j] end end dfdx diff --git a/ext/bigdecimal/lib/bigdecimal/ludcmp.rb b/ext/bigdecimal/lib/bigdecimal/ludcmp.rb index 176ed84caf9bd5..6cbe29b6da0219 100644 --- a/ext/bigdecimal/lib/bigdecimal/ludcmp.rb +++ b/ext/bigdecimal/lib/bigdecimal/ludcmp.rb @@ -1,7 +1,11 @@ +require 'bigdecimal' + # # Solves a*x = b for x, using LU decomposition. # module LUSolve + module_function + # Performs LU decomposition of the n by n matrix a. def ludecomp(a,n,zero=0,one=1) prec = BigDecimal.limit(nil) @@ -12,24 +16,24 @@ def ludecomp(a,n,zero=0,one=1) nrmrow = zero ixn = i*n for j in 0...n do - biggst = a[ixn+j].abs - nrmrow = biggst if biggst>nrmrow + biggst = a[ixn+j].abs + nrmrow = biggst if biggst>nrmrow end if nrmrow>zero then - scales <<= one.div(nrmrow,prec) + scales <<= one.div(nrmrow,prec) else - raise "Singular matrix" + raise "Singular matrix" end end n1 = n - 1 for k in 0...n1 do # Gaussian elimination with partial pivoting. biggst = zero; for i in k...n do - size = a[ps[i]*n+k].abs*scales[ps[i]] - if size>biggst then - biggst = size - pividx = i - end + size = a[ps[i]*n+k].abs*scales[ps[i]] + if size>biggst then + biggst = size + pividx = i + end end raise "Singular matrix" if biggst<=zero if pividx!=k then @@ -42,10 +46,10 @@ def ludecomp(a,n,zero=0,one=1) psin = ps[i]*n a[psin+k] = mult = a[psin+k].div(pivot,prec) if mult!=zero then - pskn = ps[k]*n - for j in (k+1)...n do - a[psin+j] -= mult.mult(a[pskn+j],prec) - end + pskn = ps[k]*n + for j in (k+1)...n do + a[psin+j] -= mult.mult(a[pskn+j],prec) + end end end end @@ -72,12 +76,12 @@ def lusolve(a,b,ps,zero=0.0) x <<= b[ps[i]] - dot end (n-1).downto(0) do |i| - dot = zero - psin = ps[i]*n - for j in (i+1)...n do - dot = a[psin+j].mult(x[j],prec) + dot - end - x[i] = (x[i]-dot).div(a[psin+i],prec) + dot = zero + psin = ps[i]*n + for j in (i+1)...n do + dot = a[psin+j].mult(x[j],prec) + dot + end + x[i] = (x[i]-dot).div(a[psin+i],prec) end x end diff --git a/ext/bigdecimal/lib/bigdecimal/math.rb b/ext/bigdecimal/lib/bigdecimal/math.rb index 24e928b9019876..eeffde4e68b169 100644 --- a/ext/bigdecimal/lib/bigdecimal/math.rb +++ b/ext/bigdecimal/lib/bigdecimal/math.rb @@ -1,3 +1,5 @@ +require 'bigdecimal' + # #-- # Contents: @@ -29,6 +31,7 @@ # puts sin(a,100) # -> 0.10000000000000000000......E1 # module BigMath + module_function # Computes the square root of x to the specified number of digits of # precision. @@ -49,6 +52,14 @@ def sin(x, prec) n = prec + BigDecimal.double_fig one = BigDecimal("1") two = BigDecimal("2") + x = -x if neg = x < 0 + if x > (twopi = two * BigMath.PI(prec)) + if x > 30 + x %= twopi + else + x -= twopi while x > twopi + end + end x1 = x x2 = x.mult(x,n) sign = 1 @@ -65,7 +76,7 @@ def sin(x, prec) d = sign * x1.div(z,m) y += d end - y + neg ? -y : y end # Computes the cosine of x to the specified number of digits of precision. @@ -77,6 +88,14 @@ def cos(x, prec) n = prec + BigDecimal.double_fig one = BigDecimal("1") two = BigDecimal("2") + x = -x if x < 0 + if x > (twopi = two * BigMath.PI(prec)) + if x > 30 + x %= twopi + else + x -= twopi while x > twopi + end + end x1 = one x2 = x.mult(x,n) sign = 1 @@ -98,12 +117,16 @@ def cos(x, prec) # Computes the arctangent of x to the specified number of digits of precision. # - # If x is infinite or NaN, returns NaN. - # Raises an argument error if x > 1. + # If x is NaN, returns NaN. def atan(x, prec) raise ArgumentError, "Zero or negative precision for atan" if prec <= 0 - return BigDecimal("NaN") if x.infinite? || x.nan? - raise ArgumentError, "x.abs must be less than 1.0" if x.abs>=1 + return BigDecimal("NaN") if x.nan? + pi = PI(prec) + x = -x if neg = x < 0 + return pi.div(neg ? -2 : 2, prec) if x.infinite? + return pi / (neg ? -4 : 4) if x.round(prec) == 1 + x = 1 / x if inv = x > 1 + x = (-1 + sqrt(1 + x**2, prec))/x if dbl = x > 0.5 n = prec + BigDecimal.double_fig y = x d = y @@ -117,6 +140,9 @@ def atan(x, prec) y += d r += 2 end + y *= 2 if dbl + y = pi / 2 - y if inv + y = -y if neg y end @@ -132,6 +158,7 @@ def exp(x, prec) return BigDecimal("NaN") if x.infinite? || x.nan? n = prec + BigDecimal.double_fig one = BigDecimal("1") + x = -x if neg = x < 0 x1 = one y = one d = y @@ -145,7 +172,11 @@ def exp(x, prec) d = x1.div(z,m) y += d end - y + if neg + one.div(y, prec) + else + y.round(prec - y.exponent) + end end # Computes the natural logarithm of x to the specified number of digits @@ -159,6 +190,9 @@ def log(x, prec) one = BigDecimal("1") two = BigDecimal("2") n = prec + BigDecimal.double_fig + if (expo = x.exponent) < 0 + x = x.mult(BigDecimal("1E#{-expo}"), n) + end x = (x - one).div(x + one,n) x2 = x.mult(x,n) y = x @@ -171,7 +205,11 @@ def log(x, prec) d = x.div(i,m) y += d end - y*two + y *= two + if expo < 0 + y += log(BigDecimal("10"),prec) * BigDecimal(expo.to_s) + end + y end # Computes the value of pi to the specified number of digits of precision. diff --git a/ext/bigdecimal/lib/bigdecimal/newton.rb b/ext/bigdecimal/lib/bigdecimal/newton.rb index d78c3d7647c1df..96defc3c068fea 100644 --- a/ext/bigdecimal/lib/bigdecimal/newton.rb +++ b/ext/bigdecimal/lib/bigdecimal/newton.rb @@ -1,3 +1,6 @@ +require "bigdecimal/ludcmp" +require "bigdecimal/jacobian" + # # newton.rb # @@ -22,12 +25,10 @@ # # On exit, x is the solution vector. # -require "bigdecimal/ludcmp" -require "bigdecimal/jacobian" - module Newton include LUSolve include Jacobian + module_function def norm(fv,zero=0.0) s = zero diff --git a/ext/bigdecimal/lib/bigdecimal/util.rb b/ext/bigdecimal/lib/bigdecimal/util.rb index 257781f0353dff..474266476f5acd 100644 --- a/ext/bigdecimal/lib/bigdecimal/util.rb +++ b/ext/bigdecimal/lib/bigdecimal/util.rb @@ -31,23 +31,23 @@ class BigDecimal < Numeric # Converts a BigDecimal to a String of the form "nnnnnn.mmm". # This method is deprecated; use BigDecimal#to_s("F") instead. def to_digits - if self.nan? || self.infinite? || self.zero? - self.to_s - else - i = self.to_i.to_s - s,f,y,z = self.frac.split - i + "." + ("0"*(-z)) + f - end + if self.nan? || self.infinite? || self.zero? + self.to_s + else + i = self.to_i.to_s + s,f,y,z = self.frac.split + i + "." + ("0"*(-z)) + f + end end end class Rational < Numeric # Converts a Rational to a BigDecimal def to_d(nFig=0) - num = self.numerator.to_s - if nFig<=0 - nFig = BigDecimal.double_fig*2+1 - end - BigDecimal.new(num).div(self.denominator,nFig) + num = self.numerator.to_s + if nFig<=0 + nFig = BigDecimal.double_fig*2+1 + end + BigDecimal.new(num).div(self.denominator,nFig) end end diff --git a/ext/curses/curses.c b/ext/curses/curses.c index 94da77f826ffe2..7f68b2186ab389 100644 --- a/ext/curses/curses.c +++ b/ext/curses/curses.c @@ -138,6 +138,7 @@ curses_init_screen(void) static VALUE curses_close_screen(void) { + curses_stdscr(); #ifdef HAVE_ISENDWIN if (!isendwin()) #endif @@ -164,6 +165,7 @@ curses_finalize(VALUE dummy) static VALUE curses_closed(void) { + curses_stdscr(); if (isendwin()) { return Qtrue; } @@ -355,6 +357,7 @@ curses_setpos(VALUE obj, VALUE y, VALUE x) static VALUE curses_standout(VALUE obj) { + curses_stdscr(); standout(); return Qnil; } @@ -363,6 +366,7 @@ curses_standout(VALUE obj) static VALUE curses_standend(VALUE obj) { + curses_stdscr(); standend(); return Qnil; } @@ -406,15 +410,22 @@ curses_addstr(VALUE obj, VALUE str) return Qnil; } +static VALUE +getch_func(void *arg) +{ + int *ip = (int *)arg; + *ip = getch(); + return Qnil; +} + /* def getch */ static VALUE curses_getch(VALUE obj) { int c; - rb_read_check(stdin); curses_stdscr(); - c = getch(); + rb_thread_blocking_region(getch_func, (void *)&c, RUBY_UBF_IO, 0); if (c == EOF) return Qnil; if (rb_isprint(c)) { char ch = (char)c; @@ -424,18 +435,29 @@ curses_getch(VALUE obj) return UINT2NUM(c); } -/* def getstr */ +/* This should be big enough.. I hope */ +#define GETSTR_BUF_SIZE 1024 + static VALUE -curses_getstr(VALUE obj) +getstr_func(void *arg) { - char rtn[1024]; /* This should be big enough.. I hope */ - - rb_read_check(stdin); + char *rtn = (char *)arg; #if defined(HAVE_GETNSTR) - getnstr(rtn,1023); + getnstr(rtn,GETSTR_BUF_SIZE-1); #else getstr(rtn); #endif + return Qnil; +} + +/* def getstr */ +static VALUE +curses_getstr(VALUE obj) +{ + char rtn[GETSTR_BUF_SIZE]; + + curses_stdscr(); + rb_thread_blocking_region(getstr_func, (void *)rtn, RUBY_UBF_IO, 0); return rb_locale_str_new_cstr(rtn); } @@ -443,6 +465,7 @@ curses_getstr(VALUE obj) static VALUE curses_delch(VALUE obj) { + curses_stdscr(); delch(); return Qnil; } @@ -451,6 +474,7 @@ curses_delch(VALUE obj) static VALUE curses_deleteln(VALUE obj) { + curses_stdscr(); #if defined(HAVE_DELETELN) || defined(deleteln) deleteln(); #endif @@ -461,6 +485,7 @@ curses_deleteln(VALUE obj) static VALUE curses_insertln(VALUE obj) { + curses_stdscr(); #if defined(HAVE_INSERTLN) || defined(insertln) insertln(); #endif @@ -475,6 +500,7 @@ curses_keyname(VALUE obj, VALUE c) int cc = curses_char(c); const char *name; + curses_stdscr(); name = keyname(cc); if (name) { return rb_str_new_cstr(name); @@ -510,6 +536,7 @@ curses_curs_set(VALUE obj, VALUE visibility) { #ifdef HAVE_CURS_SET int n; + curses_stdscr(); return (n = curs_set(NUM2INT(visibility)) != ERR) ? INT2FIX(n) : Qnil; #else return Qnil; @@ -521,6 +548,7 @@ curses_scrl(VALUE obj, VALUE n) { /* may have to raise exception on ERR */ #ifdef HAVE_SCRL + curses_stdscr(); return (scrl(NUM2INT(n)) == OK) ? Qtrue : Qfalse; #else return Qfalse; @@ -532,6 +560,7 @@ curses_setscrreg(VALUE obj, VALUE top, VALUE bottom) { /* may have to raise exception on ERR */ #ifdef HAVE_SETSCRREG + curses_stdscr(); return (setscrreg(NUM2INT(top), NUM2INT(bottom)) == OK) ? Qtrue : Qfalse; #else return Qfalse; @@ -541,6 +570,7 @@ curses_setscrreg(VALUE obj, VALUE top, VALUE bottom) static VALUE curses_attroff(VALUE obj, VALUE attrs) { + curses_stdscr(); return window_attroff(rb_stdscr,attrs); /* return INT2FIX(attroff(NUM2INT(attrs))); */ } @@ -548,6 +578,7 @@ curses_attroff(VALUE obj, VALUE attrs) static VALUE curses_attron(VALUE obj, VALUE attrs) { + curses_stdscr(); return window_attron(rb_stdscr,attrs); /* return INT2FIX(attroff(NUM2INT(attrs))); */ } @@ -555,6 +586,7 @@ curses_attron(VALUE obj, VALUE attrs) static VALUE curses_attrset(VALUE obj, VALUE attrs) { + curses_stdscr(); return window_attrset(rb_stdscr,attrs); /* return INT2FIX(attroff(NUM2INT(attrs))); */ } @@ -563,6 +595,7 @@ static VALUE curses_bkgdset(VALUE obj, VALUE ch) { #ifdef HAVE_BKGDSET + curses_stdscr(); bkgdset(NUM2CH(ch)); #endif return Qnil; @@ -572,6 +605,7 @@ static VALUE curses_bkgd(VALUE obj, VALUE ch) { #ifdef HAVE_BKGD + curses_stdscr(); return (bkgd(NUM2CH(ch)) == OK) ? Qtrue : Qfalse; #else return Qfalse; @@ -582,6 +616,7 @@ curses_bkgd(VALUE obj, VALUE ch) static VALUE curses_use_default_colors(VALUE obj) { + curses_stdscr(); use_default_colors(); return Qnil; } @@ -635,6 +670,7 @@ static VALUE curses_resizeterm(VALUE obj, VALUE lin, VALUE col) { #if defined(HAVE_RESIZETERM) + curses_stdscr(); return (resizeterm(NUM2INT(lin),NUM2INT(col)) == OK) ? Qtrue : Qfalse; #else return Qnil; @@ -646,6 +682,7 @@ static VALUE curses_start_color(VALUE obj) { /* may have to raise exception on ERR */ + curses_stdscr(); return (start_color() == OK) ? Qtrue : Qfalse; } @@ -653,6 +690,7 @@ static VALUE curses_init_pair(VALUE obj, VALUE pair, VALUE f, VALUE b) { /* may have to raise exception on ERR */ + curses_stdscr(); return (init_pair(NUM2INT(pair),NUM2INT(f),NUM2INT(b)) == OK) ? Qtrue : Qfalse; } @@ -660,6 +698,7 @@ static VALUE curses_init_color(VALUE obj, VALUE color, VALUE r, VALUE g, VALUE b) { /* may have to raise exception on ERR */ + curses_stdscr(); return (init_color(NUM2INT(color),NUM2INT(r), NUM2INT(g),NUM2INT(b)) == OK) ? Qtrue : Qfalse; } @@ -667,12 +706,14 @@ curses_init_color(VALUE obj, VALUE color, VALUE r, VALUE g, VALUE b) static VALUE curses_has_colors(VALUE obj) { + curses_stdscr(); return has_colors() ? Qtrue : Qfalse; } static VALUE curses_can_change_color(VALUE obj) { + curses_stdscr(); return can_change_color() ? Qtrue : Qfalse; } @@ -691,6 +732,7 @@ curses_color_content(VALUE obj, VALUE color) { short r,g,b; + curses_stdscr(); color_content(NUM2INT(color),&r,&g,&b); return rb_ary_new3(3,INT2FIX(r),INT2FIX(g),INT2FIX(b)); } @@ -711,6 +753,7 @@ curses_pair_content(VALUE obj, VALUE pair) { short f,b; + curses_stdscr(); pair_content(NUM2INT(pair),&f,&b); return rb_ary_new3(2,INT2FIX(f),INT2FIX(b)); } @@ -724,6 +767,7 @@ curses_color_pair(VALUE obj, VALUE attrs) static VALUE curses_pair_number(VALUE obj, VALUE attrs) { + curses_stdscr(); return INT2FIX(PAIR_NUMBER(NUM2INT(attrs))); } #endif /* USE_COLOR */ @@ -759,6 +803,7 @@ curses_getmouse(VALUE obj) struct mousedata *mdata; VALUE val; + curses_stdscr(); val = Data_Make_Struct(cMouseEvent,struct mousedata, 0,curses_mousedata_free,mdata); mdata->mevent = (MEVENT*)xmalloc(sizeof(MEVENT)); @@ -770,6 +815,7 @@ curses_ungetmouse(VALUE obj, VALUE mevent) { struct mousedata *mdata; + curses_stdscr(); GetMOUSE(mevent,mdata); return (ungetmouse(mdata->mevent) == OK) ? Qtrue : Qfalse; } @@ -777,12 +823,14 @@ curses_ungetmouse(VALUE obj, VALUE mevent) static VALUE curses_mouseinterval(VALUE obj, VALUE interval) { + curses_stdscr(); return mouseinterval(NUM2INT(interval)) ? Qtrue : Qfalse; } static VALUE curses_mousemask(VALUE obj, VALUE mask) { + curses_stdscr(); return INT2NUM(mousemask(NUM2UINT(mask),NULL)); } @@ -806,6 +854,7 @@ DEFINE_MOUSE_GET_MEMBER(curs_mouse_bstate, bstate) static VALUE curses_timeout(VALUE obj, VALUE delay) { + curses_stdscr(); timeout(NUM2INT(delay)); return Qnil; } @@ -817,6 +866,7 @@ curses_timeout(VALUE obj, VALUE delay) static VALUE curses_def_prog_mode(VALUE obj) { + curses_stdscr(); return def_prog_mode() == OK ? Qtrue : Qfalse; } #else @@ -827,6 +877,7 @@ curses_def_prog_mode(VALUE obj) static VALUE curses_reset_prog_mode(VALUE obj) { + curses_stdscr(); return reset_prog_mode() == OK ? Qtrue : Qfalse; } #else @@ -1179,16 +1230,31 @@ window_addstr2(VALUE obj, VALUE str) return obj; } +struct wgetch_arg { + WINDOW *win; + int c; +}; + +static VALUE +wgetch_func(void *_arg) +{ + struct wgetch_arg *arg = (struct wgetch_arg *)_arg; + arg->c = wgetch(arg->win); + return Qnil; +} + /* def getch */ static VALUE window_getch(VALUE obj) { struct windata *winp; + struct wgetch_arg arg; int c; - rb_read_check(stdin); GetWINDOW(obj, winp); - c = wgetch(winp->window); + arg.win = winp->window; + rb_thread_blocking_region(wgetch_func, (void *)&arg, RUBY_UBF_IO, 0); + c = arg.c; if (c == EOF) return Qnil; if (rb_isprint(c)) { char ch = (char)c; @@ -1198,21 +1264,34 @@ window_getch(VALUE obj) return UINT2NUM(c); } +struct wgetstr_arg { + WINDOW *win; + char rtn[GETSTR_BUF_SIZE]; +}; + +static VALUE +wgetstr_func(void *_arg) +{ + struct wgetstr_arg *arg = (struct wgetstr_arg *)_arg; +#if defined(HAVE_WGETNSTR) + wgetnstr(arg->win, arg->rtn, GETSTR_BUF_SIZE-1); +#else + wgetstr(arg->win, arg->rtn); +#endif + return Qnil; +} + /* def getstr */ static VALUE window_getstr(VALUE obj) { struct windata *winp; - char rtn[1024]; /* This should be big enough.. I hope */ + struct wgetstr_arg arg; GetWINDOW(obj, winp); - rb_read_check(stdin); -#if defined(HAVE_WGETNSTR) - wgetnstr(winp->window, rtn, 1023); -#else - wgetstr(winp->window, rtn); -#endif - return rb_locale_str_new_cstr(rtn); + arg.win = winp->window; + rb_thread_blocking_region(wgetstr_func, (void *)&arg, RUBY_UBF_IO, 0); + return rb_locale_str_new_cstr(arg.rtn); } /* def delch */ diff --git a/ext/digest/bubblebabble/bubblebabble.c b/ext/digest/bubblebabble/bubblebabble.c index 3a03ceced00836..10bde6ff714419 100644 --- a/ext/digest/bubblebabble/bubblebabble.c +++ b/ext/digest/bubblebabble/bubblebabble.c @@ -23,7 +23,7 @@ bubblebabble_str_new(VALUE str_digest) size_t digest_len; VALUE str; char *p; - int i, j, seed = 1; + size_t i, j, seed = 1; static const char vowels[] = { 'a', 'e', 'i', 'o', 'u', 'y' }; diff --git a/ext/digest/digest.c b/ext/digest/digest.c index c3e9546ab4c0d3..f723bbdbd05e6f 100644 --- a/ext/digest/digest.c +++ b/ext/digest/digest.c @@ -36,7 +36,7 @@ hexencode_str_new(VALUE str_digest) { char *digest; size_t digest_len; - int i; + size_t i; VALUE str; char *p; static const char hex[] = { @@ -83,6 +83,15 @@ rb_digest_s_hexencode(VALUE klass, VALUE str) * object to calculate message digest values. */ +static void +rb_digest_instance_method_unimpl(VALUE self, const char *method) +{ + VALUE klass = rb_obj_class(self); + + rb_raise(rb_eRuntimeError, "%s does not implement %s()", + rb_obj_classname(self), method); +} + /* * call-seq: * digest_obj.update(string) -> digest_obj @@ -97,7 +106,7 @@ rb_digest_s_hexencode(VALUE klass, VALUE str) static VALUE rb_digest_instance_update(VALUE self, VALUE str) { - rb_raise(rb_eRuntimeError, "%s does not implement update()", RSTRING_PTR(rb_inspect(self))); + rb_digest_instance_method_unimpl(self, "update"); } /* @@ -115,7 +124,7 @@ rb_digest_instance_update(VALUE self, VALUE str) static VALUE rb_digest_instance_finish(VALUE self) { - rb_raise(rb_eRuntimeError, "%s does not implement finish()", RSTRING_PTR(rb_inspect(self))); + rb_digest_instance_method_unimpl(self, "finish"); } /* @@ -129,7 +138,7 @@ rb_digest_instance_finish(VALUE self) static VALUE rb_digest_instance_reset(VALUE self) { - rb_raise(rb_eRuntimeError, "%s does not implement reset()", RSTRING_PTR(rb_inspect(self))); + rb_digest_instance_method_unimpl(self, "reset"); } /* @@ -358,7 +367,7 @@ rb_digest_instance_length(VALUE self) static VALUE rb_digest_instance_block_length(VALUE self) { - rb_raise(rb_eRuntimeError, "%s does not implement block_length()", RSTRING_PTR(rb_inspect(self))); + rb_digest_instance_method_unimpl(self, "block_length"); } /* diff --git a/ext/dl/cfunc.c b/ext/dl/cfunc.c index 1f20be3d8b71e1..729dbe9ac667da 100644 --- a/ext/dl/cfunc.c +++ b/ext/dl/cfunc.c @@ -112,7 +112,7 @@ rb_dlcfunc2ptr(VALUE val) return func; } -VALUE +static VALUE rb_dlcfunc_s_allocate(VALUE klass) { VALUE obj; @@ -133,7 +133,14 @@ rb_dlcfunc_kind_p(VALUE func) return rb_typeddata_is_kind_of(func, &dlcfunc_data_type); } -VALUE +/* + * call-seq: + * DL::CFunc.new(address, type=DL::TYPE_VOID, name=nil, calltype=:cdecl) + * + * Create a new function that points to +address+ with an optional return type + * of +type+, a name of +name+ and a calltype of +calltype+. + */ +static VALUE rb_dlcfunc_initialize(int argc, VALUE argv[], VALUE self) { VALUE addr, name, type, calltype; @@ -150,13 +157,19 @@ rb_dlcfunc_initialize(int argc, VALUE argv[], VALUE self) if( data->name ) xfree(data->name); data->ptr = saddr; data->name = sname ? strdup(sname) : 0; - data->type = (type == Qnil) ? DLTYPE_VOID : NUM2INT(type); - data->calltype = (calltype == Qnil) ? CFUNC_CDECL : SYM2ID(calltype); + data->type = NIL_P(type) ? DLTYPE_VOID : NUM2INT(type); + data->calltype = NIL_P(calltype) ? CFUNC_CDECL : SYM2ID(calltype); return Qnil; } -VALUE +/* + * call-seq: + * name => str + * + * Get the name of this function + */ +static VALUE rb_dlcfunc_name(VALUE self) { struct cfunc_data *cfunc; @@ -165,7 +178,14 @@ rb_dlcfunc_name(VALUE self) return cfunc->name ? rb_tainted_str_new2(cfunc->name) : Qnil; } -VALUE +/* + * call-seq: + * cfunc.ctype => num + * + * Get the C function return value type. See DL for a list of constants + * corresponding to this method's return value. + */ +static VALUE rb_dlcfunc_ctype(VALUE self) { struct cfunc_data *cfunc; @@ -174,7 +194,13 @@ rb_dlcfunc_ctype(VALUE self) return INT2NUM(cfunc->type); } -VALUE +/* + * call-seq: + * cfunc.ctype = type + * + * Set the C function return value type to +type+. + */ +static VALUE rb_dlcfunc_set_ctype(VALUE self, VALUE ctype) { struct cfunc_data *cfunc; @@ -184,7 +210,13 @@ rb_dlcfunc_set_ctype(VALUE self, VALUE ctype) return ctype; } -VALUE +/* + * call-seq: + * cfunc.calltype => symbol + * + * Get the call type of this function. + */ +static VALUE rb_dlcfunc_calltype(VALUE self) { struct cfunc_data *cfunc; @@ -193,7 +225,13 @@ rb_dlcfunc_calltype(VALUE self) return ID2SYM(cfunc->calltype); } -VALUE +/* + * call-seq: + * cfunc.calltype = symbol + * + * Set the call type for this function. + */ +static VALUE rb_dlcfunc_set_calltype(VALUE self, VALUE sym) { struct cfunc_data *cfunc; @@ -203,8 +241,13 @@ rb_dlcfunc_set_calltype(VALUE self, VALUE sym) return sym; } - -VALUE +/* + * call-seq: + * cfunc.ptr + * + * Get the underlying function pointer as a DL::CPtr object. + */ +static VALUE rb_dlcfunc_ptr(VALUE self) { struct cfunc_data *cfunc; @@ -213,7 +256,13 @@ rb_dlcfunc_ptr(VALUE self) return PTR2NUM(cfunc->ptr); } -VALUE +/* + * call-seq: + * cfunc.ptr = pointer + * + * Set the underlying function pointer to a DL::CPtr named +pointer+. + */ +static VALUE rb_dlcfunc_set_ptr(VALUE self, VALUE addr) { struct cfunc_data *cfunc; @@ -224,7 +273,13 @@ rb_dlcfunc_set_ptr(VALUE self, VALUE addr) return Qnil; } -VALUE +/* + * call-seq: inspect + * + * Returns a string formatted with an easily readable representation of the + * internal state of the DL::CFunc + */ +static VALUE rb_dlcfunc_inspect(VALUE self) { VALUE val; @@ -264,7 +319,15 @@ rb_dlcfunc_inspect(VALUE self) } -VALUE +/* + * call-seq: + * dlcfunc.call(ary) => some_value + * dlcfunc[ary] => some_value + * + * Calls the function pointer passing in +ary+ as values to the underlying + * C function. The return value depends on the ctype. + */ +static VALUE rb_dlcfunc_call(VALUE self, VALUE ary) { struct cfunc_data *cfunc; @@ -512,7 +575,13 @@ rb_dlcfunc_call(VALUE self, VALUE ary) return result; } -VALUE +/* + * call-seq: + * dlfunc.to_i => integer + * + * Returns the memory location of this function pointer as an integer. + */ +static VALUE rb_dlcfunc_to_i(VALUE self) { struct cfunc_data *cfunc; diff --git a/ext/dl/cptr.c b/ext/dl/cptr.c index b557945a827b48..b1b156a2b269b6 100644 --- a/ext/dl/cptr.c +++ b/ext/dl/cptr.c @@ -123,6 +123,15 @@ rb_dlptr_s_allocate(VALUE klass) return obj; } +/* + * call-seq: + * DL::CPtr.new(address) => dl_cptr + * DL::CPtr.new(address, size) => dl_cptr + * DL::CPtr.new(address, size, freefunc) => dl_cptr + * + * Create a new pointer to +address+ with an optional +size+ and +freefunc+. + * +freefunc+ will be called when the instance is garbage collected. + */ static VALUE rb_dlptr_initialize(int argc, VALUE argv[], VALUE self) { @@ -163,6 +172,16 @@ rb_dlptr_initialize(int argc, VALUE argv[], VALUE self) return Qnil; } +/* + * call-seq: + * + * DL::CPtr.malloc(size, freefunc = nil) => dl cptr instance + * + * Allocate +size+ bytes of memory and associate it with an optional + * +freefunc+ that will be called when the pointer is garbage collected. + * +freefunc+ must be an address pointing to a function or an instance of + * DL::CFunc + */ static VALUE rb_dlptr_s_malloc(int argc, VALUE argv[], VALUE klass) { @@ -188,7 +207,12 @@ rb_dlptr_s_malloc(int argc, VALUE argv[], VALUE klass) return obj; } -VALUE +/* + * call-seq: to_i + * + * Returns the integer memory location of this DL::CPtr. + */ +static VALUE rb_dlptr_to_i(VALUE self) { struct ptr_data *data; @@ -197,7 +221,12 @@ rb_dlptr_to_i(VALUE self) return PTR2NUM(data->ptr); } -VALUE +/* + * call-seq: to_value + * + * Cast this CPtr to a ruby object. + */ +static VALUE rb_dlptr_to_value(VALUE self) { struct ptr_data *data; @@ -205,6 +234,12 @@ rb_dlptr_to_value(VALUE self) return (VALUE)(data->ptr); } +/* + * call-seq: ptr + * + * Returns a DL::CPtr that is a dereferenced pointer for this DL::CPtr. + * Analogous to the star operator in C. + */ VALUE rb_dlptr_ptr(VALUE self) { @@ -214,6 +249,12 @@ rb_dlptr_ptr(VALUE self) return rb_dlptr_new(*((void**)(data->ptr)),0,0); } +/* + * call-seq: ref + * + * Returns a DL::CPtr that is a reference pointer for this DL::CPtr. + * Analogous to the ampersand operator in C. + */ VALUE rb_dlptr_ref(VALUE self) { @@ -223,6 +264,11 @@ rb_dlptr_ref(VALUE self) return rb_dlptr_new(&(data->ptr),0,0); } +/* + * call-seq: null? + * + * Returns true if this is a null pointer. + */ VALUE rb_dlptr_null_p(VALUE self) { @@ -232,7 +278,12 @@ rb_dlptr_null_p(VALUE self) return data->ptr ? Qfalse : Qtrue; } -VALUE +/* + * call-seq: free=(function) + * + * Set the free function for this pointer to the DL::CFunc in +function+. + */ +static VALUE rb_dlptr_free_set(VALUE self, VALUE val) { struct ptr_data *data; @@ -243,7 +294,12 @@ rb_dlptr_free_set(VALUE self, VALUE val) return Qnil; } -VALUE +/* + * call-seq: free + * + * Get the free function for this pointer. Returns DL::CFunc or nil. + */ +static VALUE rb_dlptr_free_get(VALUE self) { struct ptr_data *pdata; @@ -253,7 +309,17 @@ rb_dlptr_free_get(VALUE self) return rb_dlcfunc_new(pdata->free, DLTYPE_VOID, "free", CFUNC_CDECL); } -VALUE +/* + * call-seq: + * + * ptr.to_s => string + * ptr.to_s(len) => string + * + * Returns the pointer contents as a string. When called with no arguments, + * this method will return the contents until the first NULL byte. When + * called with +len+, a string of +len+ bytes will be returned. + */ +static VALUE rb_dlptr_to_s(int argc, VALUE argv[], VALUE self) { struct ptr_data *data; @@ -276,7 +342,17 @@ rb_dlptr_to_s(int argc, VALUE argv[], VALUE self) return val; } -VALUE +/* + * call-seq: + * + * ptr.to_str => string + * ptr.to_str(len) => string + * + * Returns the pointer contents as a string. When called with no arguments, + * this method will return the contents with the length of this pointer's + * +size+. When called with +len+, a string of +len+ bytes will be returned. + */ +static VALUE rb_dlptr_to_str(int argc, VALUE argv[], VALUE self) { struct ptr_data *data; @@ -299,33 +375,60 @@ rb_dlptr_to_str(int argc, VALUE argv[], VALUE self) return val; } -VALUE +/* + * call-seq: inspect + * + * Returns a string formatted with an easily readable representation of the + * internal state of the DL::CPtr + */ +static VALUE rb_dlptr_inspect(VALUE self) { struct ptr_data *data; char str[1024]; TypedData_Get_Struct(self, struct ptr_data, &dlptr_data_type, data); - snprintf(str, 1023, "#<%s:%p ptr=%p size=%ld free=%p>", + snprintf(str, 1023, "#<%s:%p ptr=%#lx size=%ld free=%#lx>", rb_class2name(CLASS_OF(self)), data, data->ptr, data->size, data->free); return rb_str_new2(str); } +/* + * call-seq: + * ptr == other => true or false + * ptr.eql?(other) => true or false + * + * Returns true if +other+ wraps the same pointer, otherwise returns + * false. + */ VALUE rb_dlptr_eql(VALUE self, VALUE other) { void *ptr1, *ptr2; + + if(!rb_obj_is_kind_of(other, rb_cDLCPtr)) return Qfalse; + ptr1 = rb_dlptr2cptr(self); ptr2 = rb_dlptr2cptr(other); return ptr1 == ptr2 ? Qtrue : Qfalse; } -VALUE +/* + * call-seq: + * ptr <=> other => -1, 0, 1, or nil + * + * Returns -1 if less than, 0 if equal to, 1 if greater than +other+. Returns + * nil if +ptr+ cannot be compared to +other+. + */ +static VALUE rb_dlptr_cmp(VALUE self, VALUE other) { void *ptr1, *ptr2; SIGNED_VALUE diff; + + if(!rb_obj_is_kind_of(other, rb_cDLCPtr)) return Qnil; + ptr1 = rb_dlptr2cptr(self); ptr2 = rb_dlptr2cptr(other); diff = (SIGNED_VALUE)ptr1 - (SIGNED_VALUE)ptr2; @@ -333,7 +436,13 @@ rb_dlptr_cmp(VALUE self, VALUE other) return diff > 0 ? INT2NUM(1) : INT2NUM(-1); } -VALUE +/* + * call-seq: + * ptr + n => new cptr + * + * Returns a new DL::CPtr that has been advanced +n+ bytes. + */ +static VALUE rb_dlptr_plus(VALUE self, VALUE other) { void *ptr; @@ -345,7 +454,13 @@ rb_dlptr_plus(VALUE self, VALUE other) return rb_dlptr_new((char *)ptr + num, size - num, 0); } -VALUE +/* + * call-seq: + * ptr - n => new cptr + * + * Returns a new DL::CPtr that has been moved back +n+ bytes. + */ +static VALUE rb_dlptr_minus(VALUE self, VALUE other) { void *ptr; @@ -357,6 +472,15 @@ rb_dlptr_minus(VALUE self, VALUE other) return rb_dlptr_new((char *)ptr - num, size + num, 0); } +/* + * call-seq: + * ptr[index] -> an_integer + * ptr[start, length] -> a_string + * + * Returns integer stored at _index_. If _start_ and _length_ are given, + * a string containing the bytes from _start_ of length _length_ will be + * returned. + */ VALUE rb_dlptr_aref(int argc, VALUE argv[], VALUE self) { @@ -380,6 +504,15 @@ rb_dlptr_aref(int argc, VALUE argv[], VALUE self) return retval; } +/* + * call-seq: + * ptr[index] = int -> int + * ptr[start, length] = string or cptr or addr -> string or dl_cptr or addr + * + * Set the value at +index+ to +int+. Or, set the memory at +start+ until + * +length+ with the contents of +string+, the memory from +dl_cptr+, or the + * memory pointed at by the memory address +addr+. + */ VALUE rb_dlptr_aset(int argc, VALUE argv[], VALUE self) { @@ -415,35 +548,52 @@ rb_dlptr_aset(int argc, VALUE argv[], VALUE self) return retval; } -VALUE -rb_dlptr_size(int argc, VALUE argv[], VALUE self) +/* + * call-seq: size=(size) + * + * Set the size of this pointer to +size+ + */ +static VALUE +rb_dlptr_size_set(VALUE self, VALUE size) { - VALUE size; + RPTR_DATA(self)->size = NUM2LONG(size); + return size; +} - if (rb_scan_args(argc, argv, "01", &size) == 0){ - return LONG2NUM(RPTR_DATA(self)->size); - } - else{ - RPTR_DATA(self)->size = NUM2LONG(size); - return size; - } +/* + * call-seq: size + * + * Get the size of this pointer. + */ +static VALUE +rb_dlptr_size_get(VALUE self) +{ + return LONG2NUM(RPTR_DATA(self)->size); } -VALUE +/* + * call-seq: + * DL::CPtr.to_ptr(val) => cptr + * DL::CPtr[val] => cptr + * + * Get the underlying pointer for ruby object +val+ and return it as a + * DL::CPtr object. + */ +static VALUE rb_dlptr_s_to_ptr(VALUE self, VALUE val) { VALUE ptr; - if (rb_obj_is_kind_of(val, rb_cIO) == Qtrue){ + if (RTEST(rb_obj_is_kind_of(val, rb_cIO))){ rb_io_t *fptr; FILE *fp; GetOpenFile(val, fptr); fp = rb_io_stdio_file(fptr); ptr = rb_dlptr_new(fp, 0, NULL); } - else if (rb_obj_is_kind_of(val, rb_cString) == Qtrue){ - char *str = StringValuePtr(val); - ptr = rb_dlptr_new(str, RSTRING_LEN(val), NULL); + else if (RTEST(rb_obj_is_kind_of(val, rb_cString))){ + char *str = StringValuePtr(val); + ptr = rb_dlptr_new(str, RSTRING_LEN(val), NULL); } else if (rb_respond_to(val, id_to_ptr)){ VALUE vptr = rb_funcall(val, id_to_ptr, 0); @@ -458,6 +608,7 @@ rb_dlptr_s_to_ptr(VALUE self, VALUE val) ptr = rb_dlptr_new(NUM2PTR(rb_Integer(val)), 0, NULL); } OBJ_INFECT(ptr, val); + rb_iv_set(ptr, "wrapping", val); return ptr; } @@ -491,8 +642,8 @@ Init_dlptr(void) rb_define_method(rb_cDLCPtr, "-", rb_dlptr_minus, 1); rb_define_method(rb_cDLCPtr, "[]", rb_dlptr_aref, -1); rb_define_method(rb_cDLCPtr, "[]=", rb_dlptr_aset, -1); - rb_define_method(rb_cDLCPtr, "size", rb_dlptr_size, -1); - rb_define_method(rb_cDLCPtr, "size=", rb_dlptr_size, -1); + rb_define_method(rb_cDLCPtr, "size", rb_dlptr_size_get, 0); + rb_define_method(rb_cDLCPtr, "size=", rb_dlptr_size_set, 1); rb_define_const(rb_mDL, "NULL", rb_dlptr_new(0, 0, 0)); } diff --git a/ext/dl/dl.c b/ext/dl/dl.c index 00762c5be11924..96357948836fd1 100644 --- a/ext/dl/dl.c +++ b/ext/dl/dl.c @@ -13,10 +13,15 @@ ID rbdl_id_stdcall; VALUE rb_dl_dlopen(int argc, VALUE argv[], VALUE self) { - rb_secure(2); return rb_class_new_instance(argc, argv, rb_cDLHandle); } +/* + * call-seq: DL.malloc + * + * Allocate +size+ bytes of memory and return the integer memory address + * for the allocated memory. + */ VALUE rb_dl_malloc(VALUE self, VALUE size) { @@ -27,6 +32,13 @@ rb_dl_malloc(VALUE self, VALUE size) return PTR2NUM(ptr); } +/* + * call-seq: DL.realloc(addr, size) + * + * Change the size of the memory allocated at the memory location +addr+ to + * +size+ bytes. Returns the memory address of the reallocated memory, which + * may be different than the address passed in. + */ VALUE rb_dl_realloc(VALUE self, VALUE addr, VALUE size) { @@ -37,6 +49,11 @@ rb_dl_realloc(VALUE self, VALUE addr, VALUE size) return PTR2NUM(ptr); } +/* + * call-seq: DL.free(addr) + * + * Free the memory at address +addr+ + */ VALUE rb_dl_free(VALUE self, VALUE addr) { diff --git a/ext/dl/extconf.rb b/ext/dl/extconf.rb index 36babf4143ec6d..8317ac35ad7b4b 100644 --- a/ext/dl/extconf.rb +++ b/ext/dl/extconf.rb @@ -1,6 +1,6 @@ require 'mkmf' -if( RbConfig::CONFIG['CC'] =~ /gcc/ ) +if RbConfig::CONFIG['GCC'] == 'yes' $CFLAGS << " -fno-defer-pop -fno-omit-frame-pointer" end diff --git a/ext/dl/handle.c b/ext/dl/handle.c index 0db66c70b4af83..dddd8d54e97dd3 100644 --- a/ext/dl/handle.c +++ b/ext/dl/handle.c @@ -51,14 +51,33 @@ static const rb_data_type_t dlhandle_data_type = { 0, dlhandle_free, dlhandle_memsize, }; +/* + * call-seq: close + * + * Close this DL::Handle. Calling close more than once will raise a + * DL::DLError exception. + */ VALUE rb_dlhandle_close(VALUE self) { struct dl_handle *dlhandle; TypedData_Get_Struct(self, struct dl_handle, &dlhandle_data_type, dlhandle); - dlhandle->open = 0; - return INT2NUM(dlclose(dlhandle->ptr)); + if(dlhandle->open) { + int ret = dlclose(dlhandle->ptr); + dlhandle->open = 0; + + /* Check dlclose for successful return value */ + if(ret) { +#if defined(HAVE_DLERROR) + rb_raise(rb_eDLError, dlerror()); +#else + rb_raise(rb_eDLError, "could not close handle"); +#endif + } + return INT2NUM(ret); + } + rb_raise(rb_eDLError, "dlclose() called too many times"); } VALUE @@ -87,6 +106,13 @@ predefined_dlhandle(void *handle) return obj; } +/* + * call-seq: + * initialize(lib = nil, flags = DL::RTLD_LAZY | DL::RTLD_GLOBAL) + * + * Create a new handler that opens library named +lib+ with +flags+. If no + * library is specified, RTLD_DEFAULT is used. + */ VALUE rb_dlhandle_initialize(int argc, VALUE argv[], VALUE self) { @@ -114,6 +140,8 @@ rb_dlhandle_initialize(int argc, VALUE argv[], VALUE self) rb_bug("rb_dlhandle_new"); } + rb_secure(2); + #if defined(HAVE_WINDOWS_H) if( !clib ){ HANDLE rb_libruby_handle(void); @@ -159,6 +187,11 @@ rb_dlhandle_initialize(int argc, VALUE argv[], VALUE self) return Qnil; } +/* + * call-seq: enable_close + * + * Enable a call to dlclose() when this DL::Handle is garbage collected. + */ VALUE rb_dlhandle_enable_close(VALUE self) { @@ -169,6 +202,11 @@ rb_dlhandle_enable_close(VALUE self) return Qnil; } +/* + * call-seq: disable_close + * + * Disable a call to dlclose() when this DL::Handle is garbage collected. + */ VALUE rb_dlhandle_disable_close(VALUE self) { @@ -179,6 +217,28 @@ rb_dlhandle_disable_close(VALUE self) return Qnil; } +/* + * call-seq: close_enabled? + * + * Returns +true+ if dlclose() will be called when this DL::Handle is + * garbage collected. + */ +static VALUE +rb_dlhandle_close_enabled_p(VALUE self) +{ + struct dl_handle *dlhandle; + + TypedData_Get_Struct(self, struct dl_handle, &dlhandle_data_type, dlhandle); + + if(dlhandle->enable_close) return Qtrue; + return Qfalse; +} + +/* + * call-seq: to_i + * + * Returns the memory address for this handle. + */ VALUE rb_dlhandle_to_i(VALUE self) { @@ -190,15 +250,18 @@ rb_dlhandle_to_i(VALUE self) static VALUE dlhandle_sym(void *handle, const char *symbol); +/* + * Document-method: sym + * Document-method: [] + * + * call-seq: sym(name) + * + * Get the address as an Integer for the function named +name+. + */ VALUE rb_dlhandle_sym(VALUE self, VALUE sym) { struct dl_handle *dlhandle; - const char *name; - - rb_secure(2); - - name = StringValuePtr(sym); TypedData_Get_Struct(self, struct dl_handle, &dlhandle_data_type, dlhandle); if( ! dlhandle->open ){ @@ -215,10 +278,18 @@ rb_dlhandle_sym(VALUE self, VALUE sym) #define RTLD_DEFAULT NULL #endif +/* + * Document-method: sym + * Document-method: [] + * + * call-seq: sym(name) + * + * Get the address as an Integer for the function named +name+. The function + * is searched via dlsym on RTLD_NEXT. See man(3) dlsym() for more info. + */ VALUE rb_dlhandle_s_sym(VALUE self, VALUE sym) { - rb_secure(2); return dlhandle_sym(RTLD_NEXT, StringValueCStr(sym)); } @@ -231,8 +302,10 @@ dlhandle_sym(void *handle, const char *name) #else # define CHECK_DLERROR #endif - void (*func)() = dlsym(handle, name); + void (*func)(); + rb_secure(2); + func = dlsym(handle, name); CHECK_DLERROR; #if defined(FUNC_STDCALL) if( !func ){ @@ -298,4 +371,7 @@ Init_dlhandle(void) rb_define_method(rb_cDLHandle, "[]", rb_dlhandle_sym, 1); rb_define_method(rb_cDLHandle, "disable_close", rb_dlhandle_disable_close, 0); rb_define_method(rb_cDLHandle, "enable_close", rb_dlhandle_enable_close, 0); + rb_define_method(rb_cDLHandle, "close_enabled?", rb_dlhandle_close_enabled_p, 0); } + +/* mode: c; tab-with=8; sw=4; ts=8; noexpandtab: */ diff --git a/ext/dl/win32/lib/win32/registry.rb b/ext/dl/win32/lib/win32/registry.rb index a2b69a08fe9287..5742d0f376e712 100644 --- a/ext/dl/win32/lib/win32/registry.rb +++ b/ext/dl/win32/lib/win32/registry.rb @@ -1,5 +1,9 @@ -=begin -= Win32 Registry I/F +require 'dl/import' +module Win32 + +=begin rdoc += Win32 Registry + win32/registry is registry accessor library for Win32 platform. It uses dl/import to call Win32 Registry APIs. @@ -24,247 +28,69 @@ == Win32::Registry class -=== including modules - -* Enumerable -* Registry::Constants - -=== class methods ---- Registry.open(key, subkey, desired = KEY_READ, opt = REG_OPTION_RESERVED) ---- Registry.open(key, subkey, desired = KEY_READ, opt = REG_OPTION_RESERVED) { |reg| ... } - Open the registry key ((|subkey|)) under ((|key|)). - ((|key|)) is Win32::Registry object of parent key. - You can use predefined key HKEY_* (see (())) - - ((|desired|)) and ((|opt|)) is access mask and key option. - For detail, see (()). - - If block is given, the key is closed automatically. - ---- Registry.create(key, subkey, desired = KEY_ALL_ACCESS, opt = REG_OPTION_RESERVED) ---- Registry.create(key, subkey, desired = KEY_ALL_ACCESS, opt = REG_OPTION_RESERVED) { |reg| ... } - Create or open the registry key ((|subkey|)) under ((|key|)). - You can use predefined key HKEY_* (see (())) - - If subkey is already exists, key is opened and Registry#(()) - method will return false. - - If block is given, the key is closed automatically. - ---- Registry.expand_environ(str) - Replace (({%\w+%})) into the environment value of ((|str|)). - This method is used for REG_EXPAND_SZ. - - For detail, see (()) Win32 API. - ---- Registry.type2name(type) - Convert registry type value to readable string. - ---- Registry.wtime2time(wtime) - Convert 64-bit FILETIME integer into Time object. - ---- Registry.time2wtime(time) - Convert Time object or Integer object into 64-bit FILETIME. - -=== instance methods ---- open(subkey, desired = KEY_READ, opt = REG_OPTION_RESERVED) - Same as (({Win32::(())(self, subkey, desired, opt)})) - ---- create(subkey, desired = KEY_ALL_ACCESS, opt = REG_OPTION_RESERVED) - Same as (({Win32::(())(self, subkey, desired, opt)})) - ---- close - Close key. - - After closed, most method raises error. - ---- read(name, *rtype) - Read a registry value named ((|name|)) and return array of - [ ((|type|)), ((|data|)) ]. - When name is nil, the `default' value is read. - - ((|type|)) is value type. (see (())) - ((|data|)) is value data, its class is: - :REG_SZ, REG_EXPAND_SZ - String - :REG_MULTI_SZ - Array of String - :REG_DWORD, REG_DWORD_BIG_ENDIAN, REG_QWORD - Integer - :REG_BINARY - String (contains binary data) - - When ((|rtype|)) is specified, the value type must be included by - ((|rtype|)) array, or TypeError is raised. - ---- self[name, *rtype] - Read a registry value named ((|name|)) and return its value data. - The class of value is same as (()) method returns. - - If the value type is REG_EXPAND_SZ, returns value data whose environment - variables are replaced. - If the value type is neither REG_SZ, REG_MULTI_SZ, REG_DWORD, - REG_DWORD_BIG_ENDIAN, nor REG_QWORD, TypeError is raised. - - The meaning of ((|rtype|)) is same as (()) method. - ---- read_s(name) ---- read_i(name) ---- read_bin(name) - Read a REG_SZ(read_s), REG_DWORD(read_i), or REG_BINARY(read_bin) - registry value named ((|name|)). - - If the values type does not match, TypeError is raised. - ---- read_s_expand(name) - Read a REG_SZ or REG_EXPAND_SZ registry value named ((|name|)). - - If the value type is REG_EXPAND_SZ, environment variables are replaced. - Unless the value type is REG_SZ or REG_EXPAND_SZ, TypeError is raised. - ---- write(name, type, data) - Write ((|data|)) to a registry value named ((|name|)). - When name is nil, write to the `default' value. - - ((|type|)) is type value. (see (())) - Class of ((|data|)) must be same as which (()) - method returns. - ---- self[name, wtype = nil] = value - Write ((|value|)) to a registry value named ((|name|)). - - If ((|wtype|)) is specified, the value type is it. - Otherwise, the value type is depend on class of ((|value|)): - :Integer - REG_DWORD - :String - REG_SZ - :Array - REG_MULTI_SZ - ---- write_s(name, value) ---- write_i(name, value) ---- write_bin(name, value) - Write ((|value|)) to a registry value named ((|name|)). - - The value type is REG_SZ(write_s), REG_DWORD(write_i), or - REG_BINARY(write_bin). - ---- each { |name, type, value| ... } ---- each_value { |name, type, value| ... } - Enumerate values. - ---- each_key { |subkey, wtime| ... } - Enumerate subkeys. - - ((|subkey|)) is String which contains name of subkey. - ((|wtime|)) is last write time as FILETIME (64-bit integer). - (see (())) - ---- delete(name) ---- delete_value(name) - Delete a registry value named ((|name|)). - We can not delete the `default' value. - ---- delete_key(name, recursive = false) - Delete a subkey named ((|name|)) and all its values. - - If ((|recursive|)) is false, the subkey must not have subkeys. - Otherwise, this method deletes all subkeys and values recursively. - ---- flush - Write all the attributes into the registry file. - ---- created? - Returns if key is created ((*newly*)). - (see (())) - ---- open? - Returns if key is not closed. - ---- hkey - Returns key handle value. - ---- parent - Win32::Registry object of parent key, or nil if predefeined key. - ---- keyname - Same as ((|subkey|)) value of (()) or - (()) method. - ---- disposition - Disposition value (REG_CREATED_NEW_KEY or REG_OPENED_EXISTING_KEY). - ---- name ---- to_s - Full path of key such as (({'HKEY_CURRENT_USER\SOFTWARE\foo\bar'})). - --- info - Returns key information as Array of: - :num_keys - The number of subkeys. - :max_key_length - Maximum length of name of subkeys. - :num_values - The number of values. - :max_value_name_length - Maximum length of name of values. - :max_value_length - Maximum length of value of values. - :descriptor_length - Length of security descriptor. - :wtime - Last write time as FILETIME(64-bit integer) - - For detail, see (()) Win32 API. --- num_keys + --- max_key_length + --- num_values + --- max_value_name_length + --- max_value_length + --- descriptor_length + --- wtime Returns an item of key information. === constants --- HKEY_CLASSES_ROOT ---- HKEY_CURRENT_USER ---- HKEY_LOCAL_MACHINE ---- HKEY_PERFORMANCE_DATA ---- HKEY_CURRENT_CONFIG ---- HKEY_DYN_DATA - Win32::Registry object whose key is predefined key. - For detail, see (()). -== Win32::Registry::Constants module - -For detail, see (()). - ---- HKEY_* - Predefined key ((*handle*)). - These are Integer, not Win32::Registry. +--- HKEY_CURRENT_USER ---- REG_* - Registry value type. +--- HKEY_LOCAL_MACHINE ---- KEY_* - Security access mask. +--- HKEY_PERFORMANCE_DATA ---- KEY_OPTIONS_* - Key options. +--- HKEY_CURRENT_CONFIG ---- REG_CREATED_NEW_KEY ---- REG_OPENED_EXISTING_KEY - If the key is created newly or opened existing key. - See also Registry#(()) method. +--- HKEY_DYN_DATA -=end + Win32::Registry object whose key is predefined key. +For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/predefined_keys.asp] article. -require 'dl/import' +=end rdoc -module Win32 class Registry + + # + # For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/registry.asp]. + # + # --- HKEY_* + # + # Predefined key ((*handle*)). + # These are Integer, not Win32::Registry. + # + # --- REG_* + # + # Registry value type. + # + # --- KEY_* + # + # Security access mask. + # + # --- KEY_OPTIONS_* + # + # Key options. + # + # --- REG_CREATED_NEW_KEY + # + # --- REG_OPENED_EXISTING_KEY + # + # If the key is created newly or opened existing key. + # See also Registry#disposition method. module Constants HKEY_CLASSES_ROOT = 0x80000000 HKEY_CURRENT_USER = 0x80000001 @@ -365,7 +191,7 @@ def close raise Error.new(5) ## ERROR_ACCESS_DENIED end - # Fake class for Registry#open, Registry#create + # Fake #class method for Registry#open, Registry#create def class Registry end @@ -498,7 +324,10 @@ def QueryInfoKey(hkey) end # - # utility functions + # Replace %\w+% into the environment value of what is contained between the %'s + # This method is used for REG_EXPAND_SZ. + # + # For detail, see expandEnvironmentStrings[http://msdn.microsoft.com/library/en-us/sysinfo/base/expandenvironmentstrings.asp] \Win32 \API. # def self.expand_environ(str) str.gsub(/%([^%]+)%/) { ENV[$1] || ENV[$1.upcase] || $& } @@ -514,23 +343,43 @@ def self.expand_environ(str) @@type2name[Constants.const_get(type)] = type end + # + # Convert registry type value to readable string. + # def self.type2name(type) @@type2name[type] || type.to_s end + # + # Convert 64-bit FILETIME integer into Time object. + # def self.wtime2time(wtime) Time.at((wtime - 116444736000000000) / 10000000) end + # + # Convert Time object or Integer object into 64-bit FILETIME. + # def self.time2wtime(time) time.to_i * 10000000 + 116444736000000000 end # - # constructors + # constructor # private_class_method :new + # + # --- Registry.open(key, subkey, desired = KEY_READ, opt = REG_OPTION_RESERVED) + # + # --- Registry.open(key, subkey, desired = KEY_READ, opt = REG_OPTION_RESERVED) { |reg| ... } + # + # Open the registry key subkey under key. + # key is Win32::Registry object of parent key. + # You can use predefined key HKEY_* (see Constants) + # desired and opt is access mask and key option. + # For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/regopenkeyex.asp]. + # If block is given, the key is closed automatically. def self.open(hkey, subkey, desired = KEY_READ, opt = REG_OPTION_RESERVED) subkey = subkey.chomp('\\') newkey = API.OpenKey(hkey.hkey, subkey, opt, desired) @@ -546,6 +395,19 @@ def self.open(hkey, subkey, desired = KEY_READ, opt = REG_OPTION_RESERVED) end end + # + # --- Registry.create(key, subkey, desired = KEY_ALL_ACCESS, opt = REG_OPTION_RESERVED) + # + # --- Registry.create(key, subkey, desired = KEY_ALL_ACCESS, opt = REG_OPTION_RESERVED) { |reg| ... } + # + # Create or open the registry key subkey under key. + # You can use predefined key HKEY_* (see Constants) + # + # If subkey is already exists, key is opened and Registry#created? + # method will return false. + # + # If block is given, the key is closed automatically. + # def self.create(hkey, subkey, desired = KEY_ALL_ACCESS, opt = REG_OPTION_RESERVED) newkey, disp = API.CreateKey(hkey.hkey, subkey, opt, desired) obj = new(newkey, hkey, subkey, disp) @@ -576,19 +438,37 @@ def initialize(hkey, parent, keyname, disposition) @hkeyfinal = [ hkey ] ObjectSpace.define_finalizer self, @@final.call(@hkeyfinal) end - attr_reader :hkey, :parent, :keyname, :disposition + + # Returns key handle value. + attr_reader :hkey + # Win32::Registry object of parent key, or nil if predefeined key. + attr_reader :parent + # Same as subkey value of Registry.open or + # Registry.create method. + attr_reader :keyname + # Disposition value (REG_CREATED_NEW_KEY or REG_OPENED_EXISTING_KEY). + attr_reader :disposition # - # attributes + # Returns if key is created ((*newly*)). + # (see Registry.create) -- basically you call create + # then when you call created? on the instance returned + # it will tell if it was successful or not # def created? @disposition == REG_CREATED_NEW_KEY end + # + # Returns if key is not closed. + # def open? !@hkey.nil? end + # + # Full path of key such as 'HKEY_CURRENT_USER\SOFTWARE\foo\bar'. + # def name parent = self name = @keyname @@ -603,23 +483,31 @@ def inspect end # - # marshalling + # marshalling is not allowed # def _dump(depth) raise TypeError, "can't dump Win32::Registry" end # - # open/close + # Same as Win32::Registry.open (self, subkey, desired, opt) # def open(subkey, desired = KEY_READ, opt = REG_OPTION_RESERVED, &blk) self.class.open(self, subkey, desired, opt, &blk) end + # + # Same as Win32::Registry.create (self, subkey, desired, opt) + # def create(subkey, desired = KEY_ALL_ACCESS, opt = REG_OPTION_RESERVED, &blk) self.class.create(self, subkey, desired, opt, &blk) end + # + # Close key. + # + # After close, most method raise an error. + # def close API.CloseKey(@hkey) @hkey = @parent = @keyname = nil @@ -627,7 +515,7 @@ def close end # - # iterator + # Enumerate values. # def each_value index = 0 @@ -649,6 +537,13 @@ def each_value end alias each each_value + # + # Enumerate subkeys. + # + # subkey is String which contains name of subkey. + # wtime is last write time as FILETIME (64-bit integer). + # (see Registry.wtime2time) + # def each_key index = 0 while true @@ -663,15 +558,31 @@ def each_key index end + # + # return keys as an array + # def keys keys_ary = [] each_key { |key,| keys_ary << key } keys_ary end - # - # reader - # + # Read a registry value named name and return array of + # [ type, data ]. + # When name is nil, the `default' value is read. + # type is value type. (see Win32::Registry::Constants module) + # data is value data, its class is: + # :REG_SZ, REG_EXPAND_SZ + # String + # :REG_MULTI_SZ + # Array of String + # :REG_DWORD, REG_DWORD_BIG_ENDIAN, REG_QWORD + # Integer + # :REG_BINARY + # String (contains binary data) + # + # When rtype is specified, the value type must be included by + # rtype array, or TypeError is raised. def read(name, *rtype) type, data = API.QueryValue(@hkey, name) unless rtype.empty? or rtype.include?(type) @@ -695,6 +606,17 @@ def read(name, *rtype) end end + # + # Read a registry value named name and return its value data. + # The class of value is same as #read method returns. + # + # If the value type is REG_EXPAND_SZ, returns value data whose environment + # variables are replaced. + # If the value type is neither REG_SZ, REG_MULTI_SZ, REG_DWORD, + # REG_DWORD_BIG_ENDIAN, nor REG_QWORD, TypeError is raised. + # + # The meaning of rtype is same as #read method. + # def [](name, *rtype) type, data = read(name, *rtype) case type @@ -707,10 +629,20 @@ def [](name, *rtype) end end + # Read a REG_SZ(read_s), REG_DWORD(read_i), or REG_BINARY(read_bin) + # registry value named name. + # + # If the values type does not match, TypeError is raised. def read_s(name) read(name, REG_SZ)[1] end + # + # Read a REG_SZ or REG_EXPAND_SZ registry value named name. + # + # If the value type is REG_EXPAND_SZ, environment variables are replaced. + # Unless the value type is REG_SZ or REG_EXPAND_SZ, TypeError is raised. + # def read_s_expand(name) type, data = read(name, REG_SZ, REG_EXPAND_SZ) if type == REG_EXPAND_SZ @@ -720,16 +652,33 @@ def read_s_expand(name) end end + # + # Read a REG_SZ(read_s), REG_DWORD(read_i), or REG_BINARY(read_bin) + # registry value named name. + # + # If the values type does not match, TypeError is raised. + # def read_i(name) read(name, REG_DWORD, REG_DWORD_BIG_ENDIAN, REG_QWORD)[1] end + # + # Read a REG_SZ(read_s), REG_DWORD(read_i), or REG_BINARY(read_bin) + # registry value named name. + # + # If the values type does not match, TypeError is raised. + # def read_bin(name) read(name, REG_BINARY)[1] end # - # writer + # Write data to a registry value named name. + # When name is nil, write to the `default' value. + # + # type is type value. (see Registry::Constants module) + # Class of data must be same as which #read + # method returns. # def write(name, type, data) case type @@ -751,6 +700,18 @@ def write(name, type, data) API.SetValue(@hkey, name, type, data, data.length) end + # + # Write value to a registry value named name. + # + # If wtype is specified, the value type is it. + # Otherwise, the value type is depend on class of value: + # :Integer + # REG_DWORD + # :String + # REG_SZ + # :Array + # REG_MULTI_SZ + # def []=(name, rtype, value = nil) if value write name, rtype, value @@ -769,26 +730,51 @@ def []=(name, rtype, value = nil) value end + # + # Write value to a registry value named name. + # + # The value type is REG_SZ(write_s), REG_DWORD(write_i), or + # REG_BINARY(write_bin). + # def write_s(name, value) write name, REG_SZ, value.to_s end + # + # Write value to a registry value named name. + # + # The value type is REG_SZ(write_s), REG_DWORD(write_i), or + # REG_BINARY(write_bin). + # def write_i(name, value) write name, REG_DWORD, value.to_i end + # + # Write value to a registry value named name. + # + # The value type is REG_SZ(write_s), REG_DWORD(write_i), or + # REG_BINARY(write_bin). + # def write_bin(name, value) write name, REG_BINARY, value.to_s end # - # delete + # Delete a registry value named name. + # We can not delete the `default' value. # def delete_value(name) API.DeleteValue(@hkey, name) end alias delete delete_value + # + # Delete a subkey named name and all its values. + # + # If recursive is false, the subkey must not have subkeys. + # Otherwise, this method deletes all subkeys and values recursively. + # def delete_key(name, recursive = false) if recursive open(name, KEY_ALL_ACCESS) do |reg| @@ -812,18 +798,38 @@ def delete_key(name, recursive = false) end # - # flush + # Write all the attributes into the registry file. # def flush API.FlushKey @hkey end # - # key information + # Returns key information as Array of: + # :num_keys + # The number of subkeys. + # :max_key_length + # Maximum length of name of subkeys. + # :num_values + # The number of values. + # :max_value_name_length + # Maximum length of name of values. + # :max_value_length + # Maximum length of value of values. + # :descriptor_length + # Length of security descriptor. + # :wtime + # Last write time as FILETIME(64-bit integer) + # + # For detail, see RegQueryInfoKey[http://msdn.microsoft.com/library/en-us/sysinfo/base/regqueryinfokey.asp] Win32 API. # def info API.QueryInfoKey(@hkey) end + + # + # Returns an item of key information. + # %w[ num_keys max_key_length num_values max_value_name_length max_value_length diff --git a/ext/etc/etc.c b/ext/etc/etc.c index c8e52dabc2223a..fc96b5f548d40a 100644 --- a/ext/etc/etc.c +++ b/ext/etc/etc.c @@ -464,7 +464,7 @@ etc_group(VALUE obj) return Qnil; } -#ifdef HAVE_GETPWENT +#ifdef HAVE_GETGRENT /* Iterates for each entry in the /etc/group file if a block is given. * If no block is given, returns the enumerator. * diff --git a/ext/extmk.rb b/ext/extmk.rb index 30de287cd841ad..a94bbfc44961f8 100644 --- a/ext/extmk.rb +++ b/ext/extmk.rb @@ -570,7 +570,7 @@ def initialize(src) ENV.delete("RUBYOPT") if $command_output message = "echo #{message}" - cmd = $makeflags.quote.join(' ') + cmd = $makeflags.join(' ') open($command_output, 'wb') do |f| case $command_output when /\.sh\z/ diff --git a/ext/fcntl/fcntl.c b/ext/fcntl/fcntl.c index 57cca103f401e3..fdb9f82b1e4cf1 100644 --- a/ext/fcntl/fcntl.c +++ b/ext/fcntl/fcntl.c @@ -22,7 +22,7 @@ fcntl - load the C fcntl.h defines = DESCRIPTION -This module is just a translation of the C file. +This module is just a translation of the C file. = NOTE diff --git a/ext/gdbm/gdbm.c b/ext/gdbm/gdbm.c index 71a159171e2fcd..3c95cde2f78648 100644 --- a/ext/gdbm/gdbm.c +++ b/ext/gdbm/gdbm.c @@ -435,9 +435,9 @@ fgdbm_index(VALUE obj, VALUE value) /* * call-seq: - * gdbm.select { |value| block } -> array + * gdbm.select { |key, value| block } -> array * - * Returns a new array of all values of the database for which _block_ + * Returns a new array of all key-value pairs of the database for which _block_ * evaluates to true. */ static VALUE diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c index 35e5c34634bb78..c4c6fd8124f9d9 100644 --- a/ext/iconv/iconv.c +++ b/ext/iconv/iconv.c @@ -106,6 +106,7 @@ static VALUE rb_eIconvBrokenLibrary; static ID rb_success, rb_failed; static VALUE iconv_fail _((VALUE error, VALUE success, VALUE failed, struct iconv_env_t* env, const char *mesg)); +static VALUE iconv_fail_retry _((VALUE error, VALUE success, VALUE failed, struct iconv_env_t* env, const char *mesg)); static VALUE iconv_failure_initialize _((VALUE error, VALUE mesg, VALUE success, VALUE failed)); static VALUE iconv_failure_success _((VALUE self)); static VALUE iconv_failure_failed _((VALUE self)); @@ -231,8 +232,8 @@ iconv_create(VALUE to, VALUE from, struct rb_iconv_opt_t *opt, int *idx) s = RSTRING_PTR(msg); rb_str_set_len(msg, strlen(s)); if (!inval) rb_sys_fail(s); - iconv_fail(rb_eIconvInvalidEncoding, - Qnil, rb_ary_new3(2, to, from), NULL, s); + rb_exc_raise(iconv_fail(rb_eIconvInvalidEncoding, Qnil, + rb_ary_new3(2, to, from), NULL, s)); } } @@ -372,7 +373,13 @@ iconv_fail(VALUE error, VALUE success, VALUE failed, struct iconv_env_t* env, co args[2] = rb_ary_new4(env->argc, env->argv); } } - error = rb_class_new_instance(3, args, error); + return rb_class_new_instance(3, args, error); +} + +static VALUE +iconv_fail_retry(VALUE error, VALUE success, VALUE failed, struct iconv_env_t* env, const char *mesg) +{ + error = iconv_fail(error, success, failed, env, mesg); if (!rb_block_given_p()) rb_exc_raise(error); rb_set_errinfo(error); return rb_yield(failed); @@ -418,7 +425,7 @@ iconv_convert(iconv_t cd, VALUE str, long start, long length, int toidx, struct error = iconv_try(cd, &inptr, &inlen, &outptr, &outlen); if (RTEST(error)) { unsigned int i; - rescue = iconv_fail(error, Qnil, Qnil, env, 0); + rescue = iconv_fail_retry(error, Qnil, Qnil, env, 0); if (TYPE(rescue) == T_ARRAY) { str = RARRAY_LEN(rescue) > 0 ? RARRAY_PTR(rescue)[0] : Qnil; } @@ -460,8 +467,8 @@ iconv_convert(iconv_t cd, VALUE str, long start, long length, int toidx, struct if (0 <= outlen && outlen <= sizeof(buffer)) { outlen = sizeof(buffer) - outlen; if (NIL_P(error) || /* something converted */ - outlen > inptr - tmpstart || /* input can't contain output */ - (outlen < inptr - tmpstart && inlen > 0) || /* something skipped */ + outlen > (size_t)(inptr - tmpstart) || /* input can't contain output */ + (outlen < (size_t)(inptr - tmpstart) && inlen > 0) || /* something skipped */ memcmp(buffer, tmpstart, outlen)) /* something differs */ { if (NIL_P(str)) { @@ -502,7 +509,7 @@ iconv_convert(iconv_t cd, VALUE str, long start, long length, int toidx, struct rb_str_cat(ret, instart, inptr - instart); } str = rb_str_derive(str, inptr, inlen); - rescue = iconv_fail(error, ret, str, env, errmsg); + rescue = iconv_fail_retry(error, ret, str, env, errmsg); if (TYPE(rescue) == T_ARRAY) { if ((len = RARRAY_LEN(rescue)) > 0) rb_str_concat(ret, RARRAY_PTR(rescue)[0]); diff --git a/ext/json/ext/generator/extconf.rb b/ext/json/ext/generator/extconf.rb index 55741516f49995..fc267420f1b38a 100644 --- a/ext/json/ext/generator/extconf.rb +++ b/ext/json/ext/generator/extconf.rb @@ -1,7 +1,7 @@ require 'mkmf' require 'rbconfig' -if CONFIG['CC'] =~ /gcc/ +if CONFIG['GCC'] == 'yes' $CFLAGS += ' -Wall' #$CFLAGS += ' -O0 -ggdb' end diff --git a/ext/json/ext/generator/generator.c b/ext/json/ext/generator/generator.c index 94e59f77fcaf84..c6c63c1a5e319b 100644 --- a/ext/json/ext/generator/generator.c +++ b/ext/json/ext/generator/generator.c @@ -409,7 +409,7 @@ static VALUE mString_Extend_json_create(VALUE self, VALUE o) { } /* - * call-seq: to_json(state = nil, depth = 0) + * call-seq: to_json(*) * * Returns a JSON string for true: 'true'. */ @@ -421,7 +421,7 @@ static VALUE mTrueClass_to_json(int argc, VALUE *argv, VALUE self) } /* - * call-seq: to_json(state = nil, depth = 0) + * call-seq: to_json(*) * * Returns a JSON string for false: 'false'. */ @@ -433,7 +433,7 @@ static VALUE mFalseClass_to_json(int argc, VALUE *argv, VALUE self) } /* - * call-seq: to_json(state = nil, depth = 0) + * call-seq: to_json(*) * */ static VALUE mNilClass_to_json(int argc, VALUE *argv, VALUE self) diff --git a/ext/json/ext/parser/extconf.rb b/ext/json/ext/parser/extconf.rb index b56c4e66d7e71e..e790f6caae89af 100644 --- a/ext/json/ext/parser/extconf.rb +++ b/ext/json/ext/parser/extconf.rb @@ -1,7 +1,7 @@ require 'mkmf' require 'rbconfig' -if CONFIG['CC'] =~ /gcc/ +if CONFIG['GCC'] == 'yes' $CFLAGS += ' -Wall' #$CFLAGS += ' -O0 -ggdb' end diff --git a/ext/json/lib/json/common.rb b/ext/json/lib/json/common.rb index 0df8a8995ee759..b816a66cf1beec 100755 --- a/ext/json/lib/json/common.rb +++ b/ext/json/lib/json/common.rb @@ -270,7 +270,6 @@ def recurse_proc(result, &proc) proc.call result end end - module_function :recurse_proc alias restore load module_function :restore diff --git a/ext/openssl/extconf.rb b/ext/openssl/extconf.rb index 6b834896428034..993d9e9f18da60 100644 --- a/ext/openssl/extconf.rb +++ b/ext/openssl/extconf.rb @@ -28,7 +28,7 @@ if with_config("debug") or enable_config("debug") $defs.push("-DOSSL_DEBUG") unless $defs.include? "-DOSSL_DEBUG" - if /gcc/ =~ CONFIG["CC"] + if CONFIG['GCC'] == 'yes' $CPPFLAGS += " -Wall" unless $CPPFLAGS.split.include? "-Wall" end end diff --git a/ext/openssl/ossl_config.c b/ext/openssl/ossl_config.c index bbd49750317fc1..aac51f9f5df7af 100644 --- a/ext/openssl/ossl_config.c +++ b/ext/openssl/ossl_config.c @@ -192,10 +192,19 @@ ossl_config_add_value(VALUE self, VALUE section, VALUE name, VALUE value) #endif } +static void +rb_ossl_config_modify_check(VALUE config) +{ + if (OBJ_FROZEN(config)) rb_error_frozen("OpenSSL::Config"); + if (!OBJ_UNTRUSTED(config) && rb_safe_level() >= 4) + rb_raise(rb_eSecurityError, "Insecure: can't modify OpenSSL config"); +} + #if !defined(OSSL_NO_CONF_API) static VALUE ossl_config_add_value_m(VALUE self, VALUE section, VALUE name, VALUE value) { + rb_ossl_config_modify_check(self); return ossl_config_add_value(self, section, name, value); } #else @@ -257,6 +266,7 @@ ossl_config_set_section(VALUE self, VALUE section, VALUE hash) { VALUE arg[2]; + rb_ossl_config_modify_check(self); arg[0] = self; arg[1] = section; rb_block_call(hash, rb_intern("each"), 0, 0, set_conf_section_i, (VALUE)arg); diff --git a/ext/openssl/ossl_ocsp.c b/ext/openssl/ossl_ocsp.c index a658c0180a97e0..898b2ad7531d30 100644 --- a/ext/openssl/ossl_ocsp.c +++ b/ext/openssl/ossl_ocsp.c @@ -382,7 +382,7 @@ ossl_ocspres_to_der(VALUE self) ossl_raise(eOCSPError, NULL); str = rb_str_new(0, len); p = (unsigned char *)RSTRING_PTR(str); - if(i2d_OCSP_RESPONSE(res, NULL) <= 0) + if(i2d_OCSP_RESPONSE(res, &p) <= 0) ossl_raise(eOCSPError, NULL); ossl_str_adjust(str, p); diff --git a/ext/openssl/ossl_ssl.c b/ext/openssl/ossl_ssl.c index 6a3e200ee74f7b..97c5583b9265c4 100644 --- a/ext/openssl/ossl_ssl.c +++ b/ext/openssl/ossl_ssl.c @@ -963,6 +963,9 @@ ossl_ssl_initialize(int argc, VALUE *argv, VALUE self) ossl_ssl_set_ctx(self, ctx); ossl_ssl_set_sync_close(self, Qfalse); ossl_sslctx_setup(ctx); + + rb_iv_set(self, "@hostname", Qnil); + rb_call_super(0, 0); return self; diff --git a/ext/socket/ancdata.c b/ext/socket/ancdata.c index e4b616767aba64..8714add1d431dc 100644 --- a/ext/socket/ancdata.c +++ b/ext/socket/ancdata.c @@ -54,7 +54,7 @@ ip_cmsg_type_to_sym(int level, int cmsg_type) * - etc. * * _cmsg_type_ should be an integer, a string or a symbol. - * If a string/symbol is specified, it is interepreted depend on _cmsg_level_. + * If a string/symbol is specified, it is interpreted depend on _cmsg_level_. * - Socket::SCM_RIGHTS, "SCM_RIGHTS", "RIGHTS", :SCM_RIGHTS, :RIGHTS for SOL_SOCKET * - Socket::IP_RECVTTL, "RECVTTL" and :RECVTTL for IPPROTO_IP * - Socket::IPV6_PKTINFO, "PKTINFO" and :PKTINFO for IPPROTO_IPV6 @@ -1221,6 +1221,7 @@ bsock_sendmsg_internal(int argc, VALUE *argv, VALUE sock, int nonblock) * - NetBSD 4.0.1 * SCM_RIGHTS with padding causes EINVAL * IPV6_PKTINFO without padding causes "page fault trap" + * http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=40661 * * - OpenBSD 4.4 * IPV6_PKTINFO without padding causes EINVAL @@ -1693,7 +1694,7 @@ bsock_recvmsg_internal(int argc, VALUE *argv, VALUE sock, int nonblock) * * _flags_ is bitwise OR of MSG_* constants such as Socket::MSG_PEEK. * - * _maxcontrolslen_ is the maximum length of controls (ancillary data) to receive. + * _maxcontrollen_ is the maximum length of controls (ancillary data) to receive. * * _opts_ is option hash. * Currently :scm_rights=>bool is the only option. @@ -1703,7 +1704,7 @@ bsock_recvmsg_internal(int argc, VALUE *argv, VALUE sock, int nonblock) * In this case, recvmsg closes the passed file descriptors immediately. * This is the default behavior. * - * If :scm_rights value is neigher nil nor false, application expects SCM_RIGHTS control message. + * If :scm_rights value is neither nil nor false, application expects SCM_RIGHTS control message. * In this case, recvmsg creates IO objects for each file descriptors for * Socket::AncillaryData#unix_rights method. * @@ -1722,7 +1723,7 @@ bsock_recvmsg_internal(int argc, VALUE *argv, VALUE sock, int nonblock) * * # * - * _maxmesglen_ and _maxcontrolslen_ can be nil. + * _maxmesglen_ and _maxcontrollen_ can be nil. * In that case, the buffer will be grown until the message is not truncated. * Internally, MSG_PEEK is used and MSG_TRUNC/MSG_CTRUNC are checked. * diff --git a/ext/socket/basicsocket.c b/ext/socket/basicsocket.c index 4ffbd497bf3205..bb1bda57df804f 100644 --- a/ext/socket/basicsocket.c +++ b/ext/socket/basicsocket.c @@ -151,7 +151,7 @@ bsock_close_write(VALUE sock) * call-seq: setsockopt(level, optname, optval) * * Sets a socket option. These are protocol and system specific, see your - * local sytem documentation for details. + * local system documentation for details. * * === Parameters * * +level+ is an integer, usually one of the SOL_ constants such as @@ -250,7 +250,7 @@ bsock_setsockopt(int argc, VALUE *argv, VALUE sock) * call-seq: getsockopt(level, optname) * * Gets a socket option. These are protocol and system specific, see your - * local sytem documentation for details. The option is returned as + * local system documentation for details. The option is returned as * a String with the data being the binary value of the socket option. * * === Parameters diff --git a/ext/socket/extconf.rb b/ext/socket/extconf.rb index 1d233fdd1f6ba7..8b0f2eb1106b7e 100644 --- a/ext/socket/extconf.rb +++ b/ext/socket/extconf.rb @@ -97,8 +97,10 @@ def %(s) s || self end # doug's fix, NOW add -Dss_family... only if required! doug = proc {have_struct_member("struct sockaddr_storage", "ss_family", headers)} if (doug[] or - with_cppflags($CPPFLAGS + " -Dss_family=__ss_family -Dss_len=__ss_len", &doug)) + with_cppflags($CPPFLAGS + " -Dss_family=__ss_family", &doug)) $defs[-1] = "-DHAVE_SOCKADDR_STORAGE" + doug = proc {have_struct_member("struct sockaddr_storage", "ss_len", headers)} + doug[] or with_cppflags($CPPFLAGS + " -Dss_len=__ss_len", &doug) end if have_struct_member("struct sockaddr", "sa_len", headers) diff --git a/ext/socket/getnameinfo.c b/ext/socket/getnameinfo.c index 689b91c2916d3e..62a14ac555e0f2 100644 --- a/ext/socket/getnameinfo.c +++ b/ext/socket/getnameinfo.c @@ -35,6 +35,9 @@ */ #include "ruby/config.h" +#ifdef RUBY_EXTCONF_H +#include RUBY_EXTCONF_H +#endif #include #include #ifndef _WIN32 diff --git a/ext/socket/init.c b/ext/socket/init.c index ed85e0b50333ea..b143dccd5f9cb7 100644 --- a/ext/socket/init.c +++ b/ext/socket/init.c @@ -43,6 +43,17 @@ VALUE rsock_init_sock(VALUE sock, int fd) { rb_io_t *fp; + struct stat sbuf; + +#ifndef _WIN32 + if (fstat(fd, &sbuf) < 0) + rb_sys_fail(0); + if (!S_ISSOCK(sbuf.st_mode)) + rb_raise(rb_eArgError, "not a socket file descriptor"); +#else + if (!rb_w32_is_socket(fd)) + rb_raise(rb_eArgError, "not a socket file descriptor"); +#endif MakeOpenFile(sock, fp); fp->fd = fd; diff --git a/ext/socket/ipsocket.c b/ext/socket/ipsocket.c index 35025803a93186..e87f9edc00faf9 100644 --- a/ext/socket/ipsocket.c +++ b/ext/socket/ipsocket.c @@ -165,7 +165,7 @@ ip_addr(VALUE sock) * * Returns the remote address as an array which contains * address_family, port, hostname and numeric_address. - * It is defined for connection oritented socket such as TCPSocket. + * It is defined for connection oriented socket such as TCPSocket. * * TCPSocket.open("www.ruby-lang.org", 80) {|sock| * p sock.peeraddr #=> ["AF_INET", 80, "carbon.ruby-lang.org", "221.186.184.68"] diff --git a/ext/socket/lib/socket.rb b/ext/socket/lib/socket.rb index b3b31d87f76873..5dd5ca651c29f3 100644 --- a/ext/socket/lib/socket.rb +++ b/ext/socket/lib/socket.rb @@ -552,6 +552,46 @@ def self.udp_server_sockets(host=nil, port) end end + # :call-seq: + # Socket.udp_server_recv(sockets) {|msg, msg_src| ... } + # + # Receive UDP/IP packets from the given _sockets_. + # For each packet received, the block is called. + # + # The block receives _msg_ and _msg_src_. + # _msg_ is a string which is the payload of the received packet. + # _msg_src_ is a Socket::UDPSource object which is used for reply. + # + # Socket.udp_server_loop can be implemented using this method as follows. + # + # udp_server_sockets(host, port) {|sockets| + # loop { + # readable, _, _ = IO.select(sockets) + # udp_server_recv(readable) {|msg, msg_src| ... } + # } + # } + # + def self.udp_server_recv(sockets) + sockets.each {|r| + begin + msg, sender_addrinfo, rflags, *controls = r.recvmsg_nonblock + rescue IO::WaitReadable + next + end + ai = r.local_address + if ai.ipv6? and pktinfo = controls.find {|c| c.cmsg_is?(:IPV6, :PKTINFO) } + ai = Addrinfo.udp(pktinfo.ipv6_pktinfo_addr.ip_address, ai.ip_port) + yield msg, UDPSource.new(sender_addrinfo, ai) {|reply_msg| + r.sendmsg reply_msg, 0, sender_addrinfo, pktinfo + } + else + yield msg, UDPSource.new(sender_addrinfo, ai) {|reply_msg| + r.send reply_msg, 0, sender_addrinfo + } + end + } + end + # :call-seq: # Socket.udp_server_loop_on(sockets) {|msg, msg_src| ... } # @@ -561,27 +601,10 @@ def self.udp_server_sockets(host=nil, port) # # It calls the block for each message received. # - def self.udp_server_loop_on(sockets) # :yield: msg, msg_src + def self.udp_server_loop_on(sockets, &b) # :yield: msg, msg_src loop { readable, _, _ = IO.select(sockets) - readable.each {|r| - begin - msg, sender_addrinfo, rflags, *controls = r.recvmsg_nonblock - rescue IO::WaitReadable - next - end - ai = r.local_address - if ai.ipv6? and pktinfo = controls.find {|c| c.cmsg_is?(:IPV6, :PKTINFO) } - ai = Addrinfo.udp(pktinfo.ipv6_pktinfo_addr.ip_address, ai.ip_port) - yield msg, UDPSource.new(sender_addrinfo, ai) {|reply_msg| - r.sendmsg reply_msg, 0, sender_addrinfo, pktinfo - } - else - yield msg, UDPSource.new(sender_addrinfo, ai) {|reply_msg| - r.send reply_msg, 0, sender_addrinfo - } - end - } + udp_server_recv(sockets, &b) } end diff --git a/ext/socket/raddrinfo.c b/ext/socket/raddrinfo.c index 21cc953e1f25d2..fed3f2391ec769 100644 --- a/ext/socket/raddrinfo.c +++ b/ext/socket/raddrinfo.c @@ -746,7 +746,7 @@ init_unix_addrinfo(rb_addrinfo_t *rai, VALUE path, int socktype) * Addrinfo.new(sockaddr, family, socktype, protocol) => addrinfo * * returns a new instance of Addrinfo. - * The instnace contains sockaddr, family, socktype, protocol. + * The instance contains sockaddr, family, socktype, protocol. * sockaddr means struct sockaddr which can be used for connect(2), etc. * family, socktype and protocol are integers which is used for arguments of socket(2). * @@ -771,16 +771,16 @@ init_unix_addrinfo(rb_addrinfo_t *rai, VALUE path, int socktype) * family is specified as an integer to specify the protocol family such as Socket::PF_INET. * It can be a symbol or a string which is the constant name * with or without PF_ prefix such as :INET, :INET6, :UNIX, "PF_INET", etc. - * If ommitted, PF_UNSPEC is assumed. + * If omitted, PF_UNSPEC is assumed. * * socktype is specified as an integer to specify the socket type such as Socket::SOCK_STREAM. * It can be a symbol or a string which is the constant name * with or without SOCK_ prefix such as :STREAM, :DGRAM, :RAW, "SOCK_STREAM", etc. - * If ommitted, 0 is assumed. + * If omitted, 0 is assumed. * * protocol is specified as an integer to specify the protocol such as Socket::IPPROTO_TCP. * It must be an integer, unlike family and socktype. - * If ommitted, 0 is assumed. + * If omitted, 0 is assumed. * Note that 0 is reasonable value for most protocols, except raw socket. * */ @@ -887,7 +887,7 @@ inspect_sockaddr(VALUE addrinfo, VALUE ret) if (rai->sockaddr_len == 0) { rb_str_cat2(ret, "empty-sockaddr"); } - else if (rai->sockaddr_len < ((char*)&rai->addr.ss_family + sizeof(rai->addr.ss_family)) - (char*)&rai->addr) + else if ((long)rai->sockaddr_len < ((char*)&rai->addr.ss_family + sizeof(rai->addr.ss_family)) - (char*)&rai->addr) rb_str_cat2(ret, "too-short-sockaddr"); else { switch (rai->addr.ss_family) { @@ -1917,18 +1917,18 @@ addrinfo_unix_path(VALUE self) * * nodename or service can be nil if no conversion intended. * - * family, socktype and protocol are hint for prefered protocol. + * family, socktype and protocol are hint for preferred protocol. * If the result will be used for a socket with SOCK_STREAM, * SOCK_STREAM should be specified as socktype. * If so, Addrinfo.getaddrinfo returns addrinfo list appropriate for SOCK_STREAM. * If they are omitted or nil is given, the result is not restricted. * - * Similary, PF_INET6 as family restricts for IPv6. + * Similarly, PF_INET6 as family restricts for IPv6. * * flags should be bitwise OR of Socket::AI_??? constants. * * Note that socktype should be specified whenever application knows the usage of the address. - * Some platform causes an error when socktype is ommitted and servname is specified as an integer + * Some platform causes an error when socktype is omitted and servname is specified as an integer * because some port numbers, 512 for example, are ambiguous without socktype. * * Addrinfo.getaddrinfo("www.kame.net", 80, nil, :STREAM) diff --git a/ext/socket/socket.c b/ext/socket/socket.c index a2e14b32d2f839..bdc6d16d1c71f7 100644 --- a/ext/socket/socket.c +++ b/ext/socket/socket.c @@ -156,7 +156,7 @@ rsock_sock_s_socketpair(int argc, VALUE *argv, VALUE klass) * On unix-based systems the following system exceptions may be raised if * the call to _connect_ fails: * * Errno::EACCES - search permission is denied for a component of the prefix - * path or write access to the +socket+ is denided + * path or write access to the +socket+ is denied * * Errno::EADDRINUSE - the _sockaddr_ is already in use * * Errno::EADDRNOTAVAIL - the specified _sockaddr_ is not available from the * local machine @@ -172,7 +172,7 @@ rsock_sock_s_socketpair(int argc, VALUE *argv, VALUE klass) * * Errno::EHOSTUNREACH - the destination host cannot be reached (probably * because the host is down or a remote router cannot reach it) * * Errno::EINPROGRESS - the O_NONBLOCK is set for the +socket+ and the - * connection cnanot be immediately established; the connection will be + * connection cannot be immediately established; the connection will be * established asynchronously * * Errno::EINTR - the attempt to establish the connection was interrupted by * delivery of a signal that was caught; the connection will be established @@ -197,12 +197,12 @@ rsock_sock_s_socketpair(int argc, VALUE *argv, VALUE klass) * On unix-based systems if the address family of the calling +socket+ is * AF_UNIX the follow exceptions may be raised if the call to _connect_ * fails: - * * Errno::EIO - an i/o error occured while reading from or writing to the + * * Errno::EIO - an i/o error occurred while reading from or writing to the * file system * * Errno::ELOOP - too many symbolic links were encountered in translating * the pathname in _sockaddr_ * * Errno::ENAMETOOLLONG - a component of a pathname exceeded NAME_MAX - * characters, or an entired pathname exceeded PATH_MAX characters + * characters, or an entire pathname exceeded PATH_MAX characters * * Errno::ENOENT - a component of the pathname does not name an existing file * or the pathname is an empty string * * Errno::ENOTDIR - a component of the path prefix of the pathname in _sockaddr_ @@ -347,7 +347,7 @@ sock_connect_nonblock(VALUE sock, VALUE addr) * * Errno::EADDRINUSE - the specified _sockaddr_ is already in use * * Errno::EADDRNOTAVAIL - the specified _sockaddr_ is not available from the * local machine - * * Errno::EAFNOSUPPORT - the specified _sockaddr_ isnot a valid address for + * * Errno::EAFNOSUPPORT - the specified _sockaddr_ is not a valid address for * the family of the calling +socket+ * * Errno::EBADF - the _sockaddr_ specified is not a valid file descriptor * * Errno::EFAULT - the _sockaddr_ argument cannot be accessed @@ -369,14 +369,14 @@ sock_connect_nonblock(VALUE sock, VALUE addr) * Socket::AF_UNIX the follow exceptions may be raised if the call to _bind_ * fails: * * Errno::EACCES - search permission is denied for a component of the prefix - * path or write access to the +socket+ is denided + * path or write access to the +socket+ is denied * * Errno::EDESTADDRREQ - the _sockaddr_ argument is a null pointer * * Errno::EISDIR - same as Errno::EDESTADDRREQ * * Errno::EIO - an i/o error occurred * * Errno::ELOOP - too many symbolic links were encountered in translating * the pathname in _sockaddr_ * * Errno::ENAMETOOLLONG - a component of a pathname exceeded NAME_MAX - * characters, or an entired pathname exceeded PATH_MAX characters + * characters, or an entire pathname exceeded PATH_MAX characters * * Errno::ENOENT - a component of the pathname does not name an existing file * or the pathname is an empty string * * Errno::ENOTDIR - a component of the path prefix of the pathname in _sockaddr_ @@ -434,7 +434,7 @@ sock_bind(VALUE sock, VALUE addr) * socket.bind( sockaddr ) * socket.listen( 5 ) * - * === Example 2 (listening on an arbitary port, unix-based systems only): + * === Example 2 (listening on an arbitrary port, unix-based systems only): * require 'socket' * include Socket::Constants * socket = Socket.new( AF_INET, SOCK_STREAM, 0 ) @@ -457,7 +457,7 @@ sock_bind(VALUE sock, VALUE addr) * * Errno::EINVAL - the _socket_ is already connected * * Errno::ENOTSOCK - the _socket_ argument does not refer to a socket * * Errno::EOPNOTSUPP - the _socket_ protocol does not support listen - * * Errno::EACCES - the calling process does not have approriate privileges + * * Errno::EACCES - the calling process does not have appropriate privileges * * Errno::EINVAL - the _socket_ has been shut down * * Errno::ENOBUFS - insufficient resources are available in the system to * complete the call @@ -469,7 +469,7 @@ sock_bind(VALUE sock, VALUE addr) * * Errno::EADDRINUSE - the socket's local address is already in use. This * usually occurs during the execution of _bind_ but could be delayed * if the call to _bind_ was to a partially wildcard address (involving - * ADDR_ANY) and if a specific address needs to be commmitted at the + * ADDR_ANY) and if a specific address needs to be committed at the * time of the call to _listen_ * * Errno::EINPROGRESS - a Windows Sockets 1.1 call is in progress or the * service provider is still processing a callback function @@ -550,7 +550,7 @@ sock_listen(VALUE sock, VALUE log) * * Errno::ECONNRESET - a connection was forcibly closed by a peer * * Errno::EFAULT - the socket's internal buffer, address or address length * cannot be accessed or written - * * Errno::EINTR - a signal interupted _recvfrom_ before any data was available + * * Errno::EINTR - a signal interrupted _recvfrom_ before any data was available * * Errno::EINVAL - the MSG_OOB flag is set and no out-of-band data is available * * Errno::EIO - an i/o error occurred while reading from or writing to the * filesystem @@ -572,7 +572,7 @@ sock_listen(VALUE sock, VALUE log) * * Errno::ENETDOWN - the network is down * * Errno::EFAULT - the internal buffer and from parameters on +socket+ are not * part of the user address space, or the internal fromlen parameter is - * too small to accomodate the peer address + * too small to accommodate the peer address * * Errno::EINTR - the (blocking) call was cancelled by an internal call to * the WinSock function WSACancelBlockingCall * * Errno::EINPROGRESS - a blocking Windows Sockets 1.1 call is in progress or @@ -582,7 +582,7 @@ sock_listen(VALUE sock, VALUE log) * SO_OOBINLINE enabled, or (for byte stream-style sockets only) the internal * len parameter on +socket+ was zero or negative * * Errno::EISCONN - +socket+ is already connected. The call to _recvfrom_ is - * not permitted with a connected socket on a socket that is connetion + * not permitted with a connected socket on a socket that is connection * oriented or connectionless. * * Errno::ENETRESET - the connection has been broken due to the keep-alive * activity detecting a failure while the operation was in progress. @@ -713,7 +713,7 @@ sock_accept(VALUE sock) * * Accepts an incoming connection using accept(2) after * O_NONBLOCK is set for the underlying file descriptor. - * It returns an array containg the accpeted socket + * It returns an array containing the accepted socket * for the incoming connection, _client_socket_, * and a string that contains the +struct+ sockaddr information * about the caller, _client_sockaddr_. @@ -776,7 +776,7 @@ sock_accept_nonblock(VALUE sock) * call-seq: * socket.sysaccept => [client_socket_fd, client_sockaddr] * - * Accepts an incoming connection returnings an array containg the (integer) + * Accepts an incoming connection returning an array containing the (integer) * file descriptor for the incoming connection, _client_socket_fd_, * and a string that contains the +struct+ sockaddr information * about the caller, _client_sockaddr_. @@ -1127,7 +1127,7 @@ sock_s_getaddrinfo(int argc, VALUE *argv) * Obtains name information for _sockaddr_. * * _sockaddr_ should be one of follows. - * - packed sockddr string such as Socket.sockaddr_in(80, "127.0.0.1") + * - packed sockaddr string such as Socket.sockaddr_in(80, "127.0.0.1") * - 3-elements array such as ["AF_INET", 80, "127.0.0.1"] * - 4-elements array such as ["AF_INET", 80, ignored, "127.0.0.1"] * @@ -1458,7 +1458,7 @@ sockaddr_obj(struct sockaddr *addr) break; } #ifdef SA_LEN - if (len < SA_LEN(addr)) + if (len < (socklen_t)SA_LEN(addr)) len = SA_LEN(addr); #endif @@ -1508,7 +1508,7 @@ socket_s_ip_address_list(VALUE self) return list; #elif defined(SIOCGLIFCONF) && defined(SIOCGLIFNUM) && !defined(__hpux) /* Solaris if_tcp(7P) */ - /* HP-UX has SIOCGLIFCONF too. But it uses differenet struct */ + /* HP-UX has SIOCGLIFCONF too. But it uses different struct */ int fd = -1; int ret; struct lifnum ln; @@ -1711,21 +1711,21 @@ socket_s_ip_address_list(VALUE self) rb_notimplement(); pGetAdaptersAddresses = (GetAdaptersAddresses_t)GetProcAddress(h, "GetAdaptersAddresses"); if (!pGetAdaptersAddresses) { - CloseHandle(h); + FreeLibrary(h); rb_notimplement(); } ret = pGetAdaptersAddresses(AF_UNSPEC, 0, NULL, NULL, &len); if (ret != ERROR_SUCCESS && ret != ERROR_BUFFER_OVERFLOW) { errno = rb_w32_map_errno(ret); - CloseHandle(h); + FreeLibrary(h); rb_sys_fail("GetAdaptersAddresses"); } adapters = (ip_adapter_addresses_t *)ALLOCA_N(BYTE, len); ret = pGetAdaptersAddresses(AF_UNSPEC, 0, NULL, adapters, &len); if (ret != ERROR_SUCCESS) { errno = rb_w32_map_errno(ret); - CloseHandle(h); + FreeLibrary(h); rb_sys_fail("GetAdaptersAddresses"); } @@ -1753,7 +1753,7 @@ socket_s_ip_address_list(VALUE self) } } - CloseHandle(h); + FreeLibrary(h); return list; #endif } diff --git a/ext/socket/udpsocket.c b/ext/socket/udpsocket.c index ae1f70eb109bad..8abed48376c328 100644 --- a/ext/socket/udpsocket.c +++ b/ext/socket/udpsocket.c @@ -196,7 +196,7 @@ udp_send(int argc, VALUE *argv, VALUE sock) * * Receives up to _maxlen_ bytes from +udpsocket+ using recvfrom(2) after * O_NONBLOCK is set for the underlying file descriptor. - * If _maxlen_ is ommitted, its default value is 65536. + * If _maxlen_ is omitted, its default value is 65536. * _flags_ is zero or more of the +MSG_+ options. * The first element of the results, _mesg_, is the data received. * The second element, _sender_inet_addr_, is an array to represent the sender address. diff --git a/ext/stringio/stringio.c b/ext/stringio/stringio.c index 7514264f6ac189..802c462b566044 100644 --- a/ext/stringio/stringio.c +++ b/ext/stringio/stringio.c @@ -28,15 +28,13 @@ struct StringIO { int count; }; -static void strio_mark _((struct StringIO *)); -static void strio_free _((struct StringIO *)); static void strio_init(int, VALUE *, struct StringIO *); -#define IS_STRIO(obj) (RDATA(obj)->dmark == (RUBY_DATA_FUNC)strio_mark) +#define IS_STRIO(obj) (rb_typeddata_is_kind_of(obj, &strio_data_type)) #define error_inval(msg) (errno = EINVAL, rb_sys_fail(msg)) static struct StringIO * -strio_alloc() +strio_alloc(void) { struct StringIO *ptr = ALLOC(struct StringIO); ptr->string = Qnil; @@ -48,32 +46,40 @@ strio_alloc() } static void -strio_mark(struct StringIO *ptr) +strio_mark(void *p) { + struct StringIO *ptr = p; if (ptr) { rb_gc_mark(ptr->string); } } static void -strio_free(struct StringIO *ptr) +strio_free(void *p) { + struct StringIO *ptr = p; if (--ptr->count <= 0) { xfree(ptr); } } -static struct StringIO* -check_strio(VALUE self) +static size_t +strio_memsize(const void *p) { - Check_Type(self, T_DATA); - if (!IS_STRIO(self)) { - rb_raise(rb_eTypeError, "wrong argument type %s (expected StringIO)", - rb_class2name(CLASS_OF(self))); - } - return DATA_PTR(self); + const struct StringIO *ptr = p; + if (!ptr) return 0; + return sizeof(struct StringIO); } +static const rb_data_type_t strio_data_type = { + "strio", + strio_mark, + strio_free, + strio_memsize, +}; + +#define check_strio(self) ((struct StringIO*)rb_check_typeddata(self, &strio_data_type)) + static struct StringIO* get_strio(VALUE self) { @@ -135,7 +141,7 @@ check_modifiable(struct StringIO *ptr) static VALUE strio_s_allocate(VALUE klass) { - return Data_Wrap_Struct(klass, strio_mark, strio_free, 0); + return TypedData_Wrap_Struct(klass, &strio_data_type, 0); } /* @@ -1168,7 +1174,7 @@ strio_read(int argc, VALUE *argv, VALUE self) { struct StringIO *ptr = readable(StringIO(self)); VALUE str = Qnil; - long len, olen; + long len; switch (argc) { case 2: @@ -1177,7 +1183,7 @@ strio_read(int argc, VALUE *argv, VALUE self) rb_str_modify(str); case 1: if (!NIL_P(argv[0])) { - len = olen = NUM2LONG(argv[0]); + len = NUM2LONG(argv[0]); if (len < 0) { rb_raise(rb_eArgError, "negative length %ld given", len); } @@ -1189,7 +1195,6 @@ strio_read(int argc, VALUE *argv, VALUE self) } /* fall through */ case 0: - olen = -1; len = RSTRING_LEN(ptr->string); if (len <= ptr->pos) { if (NIL_P(str)) { @@ -1209,6 +1214,7 @@ strio_read(int argc, VALUE *argv, VALUE self) } if (NIL_P(str)) { str = strio_substr(ptr, ptr->pos, len); + if (argc > 0) rb_enc_associate(str, rb_ascii8bit_encoding()); } else { long rest = RSTRING_LEN(ptr->string) - ptr->pos; @@ -1404,6 +1410,7 @@ Init_stringio() rb_define_method(StringIO, "read", strio_read, -1); rb_define_method(StringIO, "sysread", strio_sysread, -1); rb_define_method(StringIO, "readpartial", strio_sysread, -1); + rb_define_method(StringIO, "read_nonblock", strio_sysread, -1); rb_define_method(StringIO, "write", strio_write, 1); rb_define_method(StringIO, "<<", strio_addstr, 1); @@ -1412,6 +1419,7 @@ Init_stringio() rb_define_method(StringIO, "putc", strio_putc, 1); rb_define_method(StringIO, "puts", strio_puts, -1); rb_define_method(StringIO, "syswrite", strio_syswrite, 1); + rb_define_method(StringIO, "write_nonblock", strio_syswrite, 1); rb_define_method(StringIO, "isatty", strio_isatty, 0); rb_define_method(StringIO, "tty?", strio_isatty, 0); diff --git a/ext/syck/emitter.c b/ext/syck/emitter.c index 73ff5d7a0b4d41..18f2cdefeff8ad 100644 --- a/ext/syck/emitter.c +++ b/ext/syck/emitter.c @@ -294,7 +294,7 @@ syck_emitter_write( SyckEmitter *e, const char *str, long len ) * Flush if at end of buffer */ at = e->marker - e->buffer; - if ( len + at >= e->bufsize ) + if ( len + at >= (long)e->bufsize ) { syck_emitter_flush( e, 0 ); for (;;) { @@ -326,7 +326,7 @@ syck_emitter_flush( SyckEmitter *e, long check_room ) */ if ( check_room > 0 ) { - if ( e->bufsize > ( e->marker - e->buffer ) + check_room ) + if ( (long)e->bufsize > ( e->marker - e->buffer ) + check_room ) { return; } @@ -459,7 +459,7 @@ void syck_emit_tag( SyckEmitter *e, const char *tag, const char *ignore ) const char *subd = tag + 4; while ( *subd != ':' && *subd != '\0' ) subd++; if ( *subd == ':' ) { - if ( subd - tag > ( strlen( YAML_DOMAIN ) + 5 ) && + if ( subd - tag > ( (long)( strlen( YAML_DOMAIN ) + 5 )) && strncmp( subd - strlen( YAML_DOMAIN ), YAML_DOMAIN, strlen( YAML_DOMAIN ) ) == 0 ) { syck_emitter_write( e, tag + 4, subd - strlen( YAML_DOMAIN ) - ( tag + 4 ) - 1 ); syck_emitter_write( e, "/", 1 ); diff --git a/ext/tk/lib/remote-tk.rb b/ext/tk/lib/remote-tk.rb index 0fa713359eeaae..443d66010c3df6 100644 --- a/ext/tk/lib/remote-tk.rb +++ b/ext/tk/lib/remote-tk.rb @@ -464,7 +464,7 @@ def mainloop def mainloop_watchdog fail RuntimeError, 'not support "mainloop_watchdog" on the remote interpreter' end - def do_one_evant(flag = nil) + def do_one_event(flag = nil) fail RuntimeError, 'not support "do_one_event" on the remote interpreter' end def mainloop_abort_on_exception @@ -500,7 +500,7 @@ def mainloop(*args) def mainloop_watchdog(*args) fail RuntimeError, 'not support "mainloop_watchdog" on the remote interpreter' end - def do_one_evant(flag = nil) + def do_one_event(flag = nil) fail RuntimeError, 'not support "do_one_event" on the remote interpreter' end def mainloop_abort_on_exception diff --git a/ext/tk/lib/tk/canvas.rb b/ext/tk/lib/tk/canvas.rb index 602139e00a2b2e..f0cb755bd76cb5 100644 --- a/ext/tk/lib/tk/canvas.rb +++ b/ext/tk/lib/tk/canvas.rb @@ -25,7 +25,10 @@ def __item_methodcall_optkeys(id) private :__item_methodcall_optkeys def __item_val2ruby_optkeys(id) # { key=>proc, ... } - super(id).update('window'=>proc{|i, v| window(v)}) + super(id).update('window'=>proc{|i, v| window(v)}, + 'tags'=>proc{|i, v| + simplelist(v).collect{|tag| TkcTag.id2obj(self, tag)} + }) end private :__item_val2ruby_optkeys @@ -690,7 +693,7 @@ def self._parse_create_args(args) args = args.flatten end - [args, fontkeys] + [args, fontkeys, methodkeys] end private_class_method :_parse_create_args @@ -698,10 +701,11 @@ def self.create(canvas, *args) unless self::CItemTypeName fail RuntimeError, "#{self} is an abstract class" end - args, fontkeys = _parse_create_args(args) + args, fontkeys, methodkeys = _parse_create_args(args) idnum = tk_call_without_enc(canvas.path, 'create', self::CItemTypeName, *args) canvas.itemconfigure(idnum, fontkeys) unless fontkeys.empty? + canvas.itemconfigure(idnum, methodkeys) unless methodkeys.empty? idnum.to_i # 'canvas item id' is an integer number end ######################################## diff --git a/ext/tk/lib/tk/variable.rb b/ext/tk/lib/tk/variable.rb index 6fc2ffdf2fb4e9..0487b034bd430b 100644 --- a/ext/tk/lib/tk/variable.rb +++ b/ext/tk/lib/tk/variable.rb @@ -694,6 +694,14 @@ def set_value(val) self end + def to_hash + hash = {} + self.keys.each{|k| + hash[k] = self[k] + } + hash + end + def set_element_value(idxs, val) if idxs.kind_of?(Array) self[*idxs]=val @@ -921,9 +929,20 @@ def set_procedure_element_type(idxs, cmd) self.set_proceure_element(idxs, cmd) end + def to_proc + cmd = self.procedure + if cmd.respond_to?(:call) + cmd + else + # cmd is a String + cmd.to_sym.to_proc + end + end + def to_i number(_value).to_i end + alias to_int to_i def element_to_i(*idxs) number(_element_value(*idxs)).to_i end @@ -940,6 +959,7 @@ def to_s _value end alias string to_s + alias to_str to_s def element_to_s(*idxs) _element_value(*idxs) end @@ -1011,6 +1031,7 @@ def list tk_split_simplelist(_value) end alias to_a list + alias to_ary list def list_element(*idxs) tk_split_simplelist(_element_value(*idxs)) end @@ -1143,10 +1164,8 @@ def coerce(other) [other, self.to_s] when Symbol [other, self.to_sym] - when Integer - [other, self.to_i] - when Float - [other, self.to_f] + when Numeric + [other, self.numeric] when Array [other, self.to_a] else @@ -1154,6 +1173,13 @@ def coerce(other) end end + def +@ + self.numeric + end + def -@ + -(self.numeric) + end + def &(other) if other.kind_of?(Array) self.to_a & other.to_a @@ -1190,7 +1216,7 @@ def -(other) end end def *(other) - num_or_str(self._value) * other.to_i + num_or_str(self._value) * other #begin # number(self._value) * other #rescue @@ -1201,7 +1227,7 @@ def /(other) number(self._value) / other end def %(other) - num_or_str(self._value) % other.to_i + num_or_str(self._value) % other #begin # number(self._value) % other #rescue @@ -1354,7 +1380,7 @@ def trace(opts, cmd = Proc.new) if @trace_opts == nil TkVar_CB_TBL[@id] = self - @trace_opts = opts + @trace_opts = opts.dup if USE_OLD_TRACE_OPTION_STYLE Tk.tk_call_without_enc('trace', 'variable', @id, @trace_opts, 'rb_var ' << @id) @@ -1400,7 +1426,7 @@ def trace_element(elem, opts, cmd = Proc.new) if @trace_opts == nil TkVar_CB_TBL[@id] = self - @trace_opts = opts + @trace_opts = opts.dup if USE_OLD_TRACE_OPTION_STYLE Tk.tk_call_without_enc('trace', 'add', 'variable', @id, @trace_opts, 'rb_var ' << @id) diff --git a/ext/tk/lib/tkextlib/blt/component.rb b/ext/tk/lib/tkextlib/blt/component.rb index 20db035fdd27ec..a228a8224612e0 100644 --- a/ext/tk/lib/tkextlib/blt/component.rb +++ b/ext/tk/lib/tkextlib/blt/component.rb @@ -1268,7 +1268,7 @@ def self._parse_create_args(keys) args = [] end - [args, fontkeys] + [args, fontkeys, methodkeys] end private_class_method :_parse_create_args @@ -1276,18 +1276,20 @@ def self.create(chart, keys={}) unless self::MarkerTypeName fail RuntimeError, "#{self} is an abstract class" end - args, fontkeys = _parse_create_args(keys) + args, fontkeys, methodkeys = _parse_create_args(keys) idnum = tk_call_without_enc(chart.path, 'marker', 'create', self::MarkerTypeName, *args) chart.marker_configure(idnum, fontkeys) unless fontkeys.empty? + chart.marker_configure(idnum, methodkeys) unless methodkeys.empty? idnum.to_i # 'item id' is an integer number end def self.create_type(chart, type, keys={}) - args, fontkeys = _parse_create_args(keys) + args, fontkeys, methodkeys = _parse_create_args(keys) idnum = tk_call_without_enc(chart.path, 'marker', 'create', type, *args) chart.marker_configure(idnum, fontkeys) unless fontkeys.empty? + chart.marker_configure(idnum, methodkeys) unless methodkeys.empty? id = idnum.to_i # 'item id' is an integer number obj = self.allocate obj.instance_eval{ diff --git a/ext/tk/lib/tkextlib/vu/dial.rb b/ext/tk/lib/tkextlib/vu/dial.rb index eca0bbb67c1b89..4d04974a55d7b5 100644 --- a/ext/tk/lib/tkextlib/vu/dial.rb +++ b/ext/tk/lib/tkextlib/vu/dial.rb @@ -32,10 +32,10 @@ def __methodcall_optkeys # { key=>method, ... } def coords(val = nil) if val - tk_split_list(tk_send_without_enc('coords')) - else tk_send_without_enc('coords', val) self + else + tk_split_list(tk_send_without_enc('coords')) end end diff --git a/ext/tk/stubs.c b/ext/tk/stubs.c index 4388fb294d4046..762fe5ea8d1f3f 100644 --- a/ext/tk/stubs.c +++ b/ext/tk/stubs.c @@ -6,6 +6,12 @@ #include "ruby.h" #include "stubs.h" + +#if !defined(RSTRING_PTR) +#define RSTRING_PTR(s) (RSTRING(s)->ptr) +#define RSTRING_LEN(s) (RSTRING(s)->len) +#endif + #include #include diff --git a/ext/tk/tcltklib.c b/ext/tk/tcltklib.c index 2938536cdaba77..7260f8a03d74c9 100644 --- a/ext/tk/tcltklib.c +++ b/ext/tk/tcltklib.c @@ -4,7 +4,7 @@ * Oct. 24, 1997 Y. Matsumoto */ -#define TCLTKLIB_RELEASE_DATE "2009-08-09" +#define TCLTKLIB_RELEASE_DATE "2009-10-27" #include "ruby.h" @@ -24,6 +24,15 @@ int rb_thread_check_trap_pending(); #include "rubysig.h" #endif +#if !defined(RSTRING_PTR) +#define RSTRING_PTR(s) (RSTRING(s)->ptr) +#define RSTRING_LEN(s) (RSTRING(s)->len) +#endif +#if !defined(RARRAY_PTR) +#define RARRAY_PTR(s) (RARRAY(s)->ptr) +#define RARRAY_LEN(s) (RARRAY(s)->len) +#endif + #ifdef OBJ_UNTRUST #define RbTk_OBJ_UNTRUST(x) do {OBJ_TAINT(x); OBJ_UNTRUST(x);} while (0) #else diff --git a/ext/tk/tkutil/tkutil.c b/ext/tk/tkutil/tkutil.c index 25011bb473b12f..6a670ce6fa1489 100644 --- a/ext/tk/tkutil/tkutil.c +++ b/ext/tk/tkutil/tkutil.c @@ -7,7 +7,7 @@ ************************************************/ -#define TKUTIL_RELEASE_DATE "2009-07-12" +#define TKUTIL_RELEASE_DATE "2009-10-27" #include "ruby.h" @@ -23,6 +23,22 @@ static VALUE rb_thread_critical; /* dummy */ #include "st.h" #endif +#if !defined(RHASH_TBL) +#define RHASH_TBL(h) (RHASH(h)->tbl) +#endif +#if !defined(RSTRING_PTR) +#define RSTRING_PTR(s) (RSTRING(s)->ptr) +#define RSTRING_LEN(s) (RSTRING(s)->len) +#endif +#if !defined(RARRAY_PTR) +#define RARRAY_PTR(s) (RARRAY(s)->ptr) +#define RARRAY_LEN(s) (RARRAY(s)->len) +#endif + +#if defined(HAVE_STRNDUP) && !defined(_GNU_SOURCE) +extern char *strndup(const char* _ptr, size_t _len); +#endif + static VALUE cMethod; static VALUE cTclTkLib; diff --git a/ext/win32ole/win32ole.c b/ext/win32ole/win32ole.c index 66f9b4cc8aa3e3..080d3aa2d2adc7 100644 --- a/ext/win32ole/win32ole.c +++ b/ext/win32ole/win32ole.c @@ -130,7 +130,7 @@ const IID IID_IMultiLanguage2 = {0xDCCFC164, 0x2B38, 0x11d2, {0xB7, 0xEC, 0x00, #define WC2VSTR(x) ole_wc2vstr((x), TRUE) -#define WIN32OLE_VERSION "1.4.1" +#define WIN32OLE_VERSION "1.4.6" typedef HRESULT (STDAPICALLTYPE FNCOCREATEINSTANCEEX) (REFCLSID, IUnknown*, DWORD, COSERVERINFO*, DWORD, MULTI_QI*); @@ -232,6 +232,10 @@ struct oledata { IDispatch *pDispatch; }; +struct oletypelibdata { + ITypeLib *pTypeLib; +}; + struct oletypedata { ITypeInfo *pTypeInfo; }; @@ -295,6 +299,7 @@ static void ole_raise(HRESULT hr, VALUE ecs, const char *fmt, ...); static void ole_initialize(); static void ole_msg_loop(); static void ole_free(struct oledata *pole); +static void oletypelib_free(struct oletypelibdata *poletypelib); static void oletype_free(struct oletypedata *poletype); static void olemethod_free(struct olemethoddata *polemethod); static void olevariable_free(struct olevariabledata *polevar); @@ -382,8 +387,6 @@ static VALUE fole_put_methods(VALUE self); static VALUE fole_func_methods(VALUE self); static VALUE ole_type_from_itypeinfo(ITypeInfo *pTypeInfo); static VALUE fole_type(VALUE self); -static VALUE make_oletypelib_obj(VALUE guid, VALUE major_version, VALUE minor_version); -static VALUE ole_typelib_from_itypelib(ITypeLib *pTypeLib); static VALUE ole_typelib_from_itypeinfo(ITypeInfo *pTypeInfo); static VALUE fole_typelib(VALUE self); static VALUE fole_query_interface(VALUE self, VALUE str_iid); @@ -400,11 +403,14 @@ static VALUE foletype_s_progids(VALUE self); static VALUE foletype_s_allocate(VALUE klass); static VALUE oletype_set_member(VALUE self, ITypeInfo *pTypeInfo, VALUE name); static VALUE oleclass_from_typelib(VALUE self, ITypeLib *pTypeLib, VALUE oleclass); -static VALUE oletypelib_set_member(VALUE self, VALUE typelib, VALUE guid, VALUE version); +static VALUE oletypelib_set_member(VALUE self, ITypeLib *pTypeLib); +static ITypeLib * oletypelib_get_typelib(VALUE self); +static void oletypelib_get_libattr(ITypeLib *pTypeLib, TLIBATTR **ppTLibAttr); static VALUE foletypelib_s_typelibs(VALUE self); static VALUE make_version_str(VALUE major, VALUE minor); static VALUE oletypelib_search_registry2(VALUE self, VALUE args); static VALUE oletypelib_search_registry(VALUE self, VALUE typelib); +static VALUE foletypelib_s_allocate(VALUE klass); static VALUE foletypelib_initialize(VALUE self, VALUE args); static VALUE foletypelib_guid(VALUE self); static VALUE foletypelib_name(VALUE self); @@ -412,8 +418,8 @@ static VALUE foletypelib_version(VALUE self); static VALUE foletypelib_major_version(VALUE self); static VALUE foletypelib_minor_version(VALUE self); static VALUE oletypelib_path(VALUE guid, VALUE version); +static HRESULT oletypelib_from_guid(VALUE guid, VALUE version, ITypeLib **ppTypeLib); static VALUE foletypelib_path(VALUE self); -static void oletypelib2itypelib(VALUE self, ITypeLib **ppTypeLib); static VALUE foletypelib_visible(VALUE self); static VALUE foletypelib_library_name(VALUE self); static VALUE foletypelib_ole_types(VALUE self); @@ -1214,6 +1220,13 @@ ole_free(struct oledata *pole) free(pole); } +static void +oletypelib_free(struct oletypelibdata *poletypelib) +{ + OLE_FREE(poletypelib->pTypeLib); + free(poletypelib); +} + static void oletype_free(struct oletypedata *poletype) { @@ -4316,44 +4329,6 @@ fole_type(VALUE self) return type; } -static VALUE -make_oletypelib_obj(VALUE guid, VALUE major_version, VALUE minor_version) -{ - VALUE args = rb_ary_new(); - rb_ary_push(args, guid); - rb_ary_push(args, major_version); - rb_ary_push(args, minor_version); - return rb_apply(cWIN32OLE_TYPELIB, rb_intern("new"), args); -} - -static VALUE -ole_typelib_from_itypelib(ITypeLib *pTypeLib) -{ - TLIBATTR *pTLibAttr; - OLECHAR bstr[80]; - VALUE guid = Qnil; - VALUE major; - VALUE minor; - int len = 0; - HRESULT hr = S_OK; - hr = pTypeLib->lpVtbl->GetLibAttr(pTypeLib, &pTLibAttr); - if (FAILED(hr)) { - return Qnil; - } - len = StringFromGUID2(&pTLibAttr->guid, bstr, sizeof(bstr)/sizeof(OLECHAR)); - if (len > 3) { - guid = ole_wc2vstr(bstr, FALSE); - } - major = INT2NUM(pTLibAttr->wMajorVerNum); - minor = INT2NUM(pTLibAttr->wMinorVerNum); - pTypeLib->lpVtbl->ReleaseTLibAttr(pTypeLib, pTLibAttr); - if (guid == Qnil) { - return Qnil; - } - return make_oletypelib_obj(guid, major, minor); -} - - static VALUE ole_typelib_from_itypeinfo(ITypeInfo *pTypeInfo) { @@ -4366,8 +4341,8 @@ ole_typelib_from_itypeinfo(ITypeInfo *pTypeInfo) if(FAILED(hr)) { return Qnil; } - retval = ole_typelib_from_itypelib(pTypeLib); - OLE_RELEASE(pTypeLib); + retval = rb_funcall(cWIN32OLE_TYPELIB, rb_intern("allocate"), 0); + oletypelib_set_member(retval, pTypeLib); return retval; } @@ -4876,16 +4851,34 @@ oleclass_from_typelib(VALUE self, ITypeLib *pTypeLib, VALUE oleclass) * WIN32OLE_TYPELIB objects represent OLE tyblib information. */ - static VALUE -oletypelib_set_member(VALUE self, VALUE typelib, VALUE guid, VALUE version) +oletypelib_set_member(VALUE self, ITypeLib *pTypeLib) { - rb_ivar_set(self, rb_intern("name"), typelib); - rb_ivar_set(self, rb_intern("guid"), guid); - rb_ivar_set(self, rb_intern("version"), version); + struct oletypelibdata *ptlib; + Data_Get_Struct(self, struct oletypelibdata, ptlib); + ptlib->pTypeLib = pTypeLib; return self; } +static ITypeLib * +oletypelib_get_typelib(VALUE self) +{ + struct oletypelibdata *ptlib; + Data_Get_Struct(self, struct oletypelibdata, ptlib); + return ptlib->pTypeLib; +} + +static void +oletypelib_get_libattr(ITypeLib *pTypeLib, TLIBATTR **ppTLibAttr) +{ + HRESULT hr; + hr = pTypeLib->lpVtbl->GetLibAttr(pTypeLib, ppTLibAttr); + if (FAILED(hr)) { + ole_raise(hr, eWIN32OLERuntimeError, + "failed to get library attribute(TLIBATTR) from ITypeLib"); + } +} + /* * call-seq: * @@ -4907,6 +4900,8 @@ foletypelib_s_typelibs(VALUE self) VALUE name = Qnil; VALUE typelibs = rb_ary_new(); VALUE typelib = Qnil; + HRESULT hr; + ITypeLib *pTypeLib; err = reg_open_key(HKEY_CLASSES_ROOT, "TypeLib", &htypelib); if(err != ERROR_SUCCESS) { @@ -4924,9 +4919,12 @@ foletypelib_s_typelibs(VALUE self) if (version == Qnil) break; if ( (name = reg_get_val2(hguid, StringValuePtr(version))) != Qnil ) { - typelib = rb_funcall(cWIN32OLE_TYPELIB, rb_intern("allocate"), 0); - oletypelib_set_member(typelib, name, guid, version); - rb_ary_push(typelibs, typelib); + hr = oletypelib_from_guid(guid, version, &pTypeLib); + if (SUCCEEDED(hr)) { + typelib = rb_funcall(cWIN32OLE_TYPELIB, rb_intern("allocate"), 0); + oletypelib_set_member(typelib, pTypeLib); + rb_ary_push(typelibs, typelib); + } } } RegCloseKey(hguid); @@ -4965,6 +4963,8 @@ oletypelib_search_registry2(VALUE self, VALUE args) VALUE version_str; VALUE version = Qnil; VALUE typelib = Qnil; + HRESULT hr; + ITypeLib *pTypeLib; VALUE guid = rb_ary_entry(args, 0); version_str = make_version_str(rb_ary_entry(args, 1), rb_ary_entry(args, 2)); @@ -5013,8 +5013,11 @@ oletypelib_search_registry2(VALUE self, VALUE args) RegCloseKey(hguid); RegCloseKey(htypelib); if (typelib != Qnil) { - found = Qtrue; - oletypelib_set_member(self, typelib, guid, version); + hr = oletypelib_from_guid(guid, version, &pTypeLib); + if (SUCCEEDED(hr)) { + found = Qtrue; + oletypelib_set_member(self, pTypeLib); + } } return found; } @@ -5029,6 +5032,8 @@ oletypelib_search_registry(VALUE self, VALUE typelib) VALUE tlib; VALUE guid; VALUE ver; + HRESULT hr; + ITypeLib *pTypeLib; err = reg_open_key(HKEY_CLASSES_ROOT, "TypeLib", &htypelib); if(err != ERROR_SUCCESS) { @@ -5054,8 +5059,11 @@ oletypelib_search_registry(VALUE self, VALUE typelib) continue; } if (rb_str_cmp(typelib, tlib) == 0) { - oletypelib_set_member(self, typelib, guid, ver); - found = Qtrue; + hr = oletypelib_from_guid(guid, ver, &pTypeLib); + if (SUCCEEDED(hr)) { + oletypelib_set_member(self, pTypeLib); + found = Qtrue; + } } RegCloseKey(hversion); } @@ -5065,6 +5073,17 @@ oletypelib_search_registry(VALUE self, VALUE typelib) return found; } +static VALUE +foletypelib_s_allocate(VALUE klass) +{ + struct oletypelibdata *poletypelib; + VALUE obj; + ole_initialize(); + obj = Data_Make_Struct(klass, struct oletypelibdata, 0, oletypelib_free, poletypelib); + poletypelib->pTypeLib = NULL; + return obj; +} + /* * call-seq: * WIN32OLE_TYPELIB.new(typelib [, version1, version2]) -> WIN32OLE_TYPELIB object @@ -5099,7 +5118,6 @@ foletypelib_initialize(VALUE self, VALUE args) int len = 0; OLECHAR * pbuf; ITypeLib *pTypeLib; - VALUE retval; HRESULT hr = S_OK; len = RARRAY_LEN(args); @@ -5120,15 +5138,8 @@ foletypelib_initialize(VALUE self, VALUE args) hr = LoadTypeLibEx(pbuf, REGKIND_NONE, &pTypeLib); SysFreeString(pbuf); if (SUCCEEDED(hr)) { - retval = ole_typelib_from_itypelib(pTypeLib); - OLE_RELEASE(pTypeLib); - if (retval != Qnil) { - found = Qtrue; - oletypelib_set_member(self, - rb_ivar_get(retval, rb_intern("name")), - rb_ivar_get(retval, rb_intern("guid")), - rb_ivar_get(retval, rb_intern("version"))); - } + found = Qtrue; + oletypelib_set_member(self, pTypeLib); } } @@ -5151,7 +5162,20 @@ foletypelib_initialize(VALUE self, VALUE args) static VALUE foletypelib_guid(VALUE self) { - return rb_ivar_get(self, rb_intern("guid")); + ITypeLib *pTypeLib; + OLECHAR bstr[80]; + VALUE guid = Qnil; + int len; + TLIBATTR *pTLibAttr; + + pTypeLib = oletypelib_get_typelib(self); + oletypelib_get_libattr(pTypeLib, &pTLibAttr); + len = StringFromGUID2(&pTLibAttr->guid, bstr, sizeof(bstr)/sizeof(OLECHAR)); + if (len > 3) { + guid = ole_wc2vstr(bstr, FALSE); + } + pTypeLib->lpVtbl->ReleaseTLibAttr(pTypeLib, pTLibAttr); + return guid; } /* @@ -5166,7 +5190,18 @@ foletypelib_guid(VALUE self) static VALUE foletypelib_name(VALUE self) { - VALUE name = rb_ivar_get(self, rb_intern("name")); + ITypeLib *pTypeLib; + HRESULT hr; + BSTR bstr; + VALUE name; + pTypeLib = oletypelib_get_typelib(self); + hr = pTypeLib->lpVtbl->GetDocumentation(pTypeLib, -1, + NULL, &bstr, NULL, NULL); + + if (FAILED(hr)) { + ole_raise(hr, eWIN32OLERuntimeError, "failed to get name from ITypeLib"); + } + name = WC2VSTR(bstr); return rb_enc_str_new(StringValuePtr(name), strlen(StringValuePtr(name)), cWIN32OLE_enc); } @@ -5182,8 +5217,17 @@ foletypelib_name(VALUE self) static VALUE foletypelib_version(VALUE self) { - VALUE ver = rb_ivar_get(self, rb_intern("version")); - return rb_Float(ver); + TLIBATTR *pTLibAttr; + VALUE major; + VALUE minor; + ITypeLib *pTypeLib; + + pTypeLib = oletypelib_get_typelib(self); + oletypelib_get_libattr(pTypeLib, &pTLibAttr); + major = INT2NUM(pTLibAttr->wMajorVerNum); + minor = INT2NUM(pTLibAttr->wMinorVerNum); + pTypeLib->lpVtbl->ReleaseTLibAttr(pTypeLib, pTLibAttr); + return rb_Float(make_version_str(major, minor)); } /* @@ -5198,9 +5242,15 @@ foletypelib_version(VALUE self) static VALUE foletypelib_major_version(VALUE self) { - VALUE ver = rb_ivar_get(self, rb_intern("version")); - VALUE ary = rb_str_split(ver, "."); - return rb_Integer(rb_ary_entry(ary, 0)); + TLIBATTR *pTLibAttr; + VALUE major; + ITypeLib *pTypeLib; + pTypeLib = oletypelib_get_typelib(self); + oletypelib_get_libattr(pTypeLib, &pTLibAttr); + + major = INT2NUM(pTLibAttr->wMajorVerNum); + pTypeLib->lpVtbl->ReleaseTLibAttr(pTypeLib, pTLibAttr); + return major; } /* @@ -5215,9 +5265,14 @@ foletypelib_major_version(VALUE self) static VALUE foletypelib_minor_version(VALUE self) { - VALUE ver = rb_ivar_get(self, rb_intern("version")); - VALUE ary = rb_str_split(ver, "."); - return rb_Integer(rb_ary_entry(ary, 1)); + TLIBATTR *pTLibAttr; + VALUE minor; + ITypeLib *pTypeLib; + pTypeLib = oletypelib_get_typelib(self); + oletypelib_get_libattr(pTypeLib, &pTLibAttr); + minor = INT2NUM(pTLibAttr->wMinorVerNum); + pTypeLib->lpVtbl->ReleaseTLibAttr(pTypeLib, pTLibAttr); + return minor; } static VALUE @@ -5253,6 +5308,22 @@ oletypelib_path(VALUE guid, VALUE version) return path; } +static HRESULT +oletypelib_from_guid(VALUE guid, VALUE version, ITypeLib **ppTypeLib) +{ + VALUE path; + OLECHAR *pBuf; + HRESULT hr; + path = oletypelib_path(guid, version); + if (path == Qnil) { + return E_UNEXPECTED; + } + pBuf = ole_vstr2wc(path); + hr = LoadTypeLibEx(pBuf, REGKIND_NONE, ppTypeLib); + SysFreeString(pBuf); + return hr; +} + /* * call-seq: * WIN32OLE_TYPELIB#path -> The type library file path. @@ -5265,28 +5336,28 @@ oletypelib_path(VALUE guid, VALUE version) static VALUE foletypelib_path(VALUE self) { - VALUE guid = rb_ivar_get(self, rb_intern("guid")); - VALUE version = rb_ivar_get(self, rb_intern("version")); - return oletypelib_path(guid, version); -} + TLIBATTR *pTLibAttr; + HRESULT hr = S_OK; + BSTR bstr; + LCID lcid = cWIN32OLE_lcid; + VALUE path; + ITypeLib *pTypeLib; -static void -oletypelib2itypelib(VALUE self, ITypeLib **ppTypeLib) -{ - VALUE path = Qnil; - OLECHAR *pbuf; - HRESULT hr = S_OK; - path = rb_funcall(self, rb_intern("path"), 0); - if (path != Qnil) { - pbuf = ole_vstr2wc(path); - hr = LoadTypeLibEx(pbuf, REGKIND_NONE, ppTypeLib); - SysFreeString(pbuf); - if (FAILED(hr)) - ole_raise(hr, eWIN32OLERuntimeError, "failed to LoadTypeLibEx from `%s'", - StringValuePtr(path)); - } else { - rb_raise(eWIN32OLERuntimeError, "failed to get type library path"); + pTypeLib = oletypelib_get_typelib(self); + oletypelib_get_libattr(pTypeLib, &pTLibAttr); + hr = QueryPathOfRegTypeLib(&pTLibAttr->guid, + pTLibAttr->wMajorVerNum, + pTLibAttr->wMinorVerNum, + lcid, + &bstr); + if (FAILED(hr)) { + pTypeLib->lpVtbl->ReleaseTLibAttr(pTypeLib, pTLibAttr); + ole_raise(hr, eWIN32OLERuntimeError, "failed to QueryPathOfRegTypeTypeLib"); } + + pTypeLib->lpVtbl->ReleaseTLibAttr(pTypeLib, pTLibAttr); + path = WC2VSTR(bstr); + return rb_enc_str_new(StringValuePtr(path), strlen(StringValuePtr(path)), cWIN32OLE_enc); } /* @@ -5305,25 +5376,19 @@ oletypelib2itypelib(VALUE self, ITypeLib **ppTypeLib) static VALUE foletypelib_visible(VALUE self) { - HRESULT hr; ITypeLib *pTypeLib = NULL; VALUE visible = Qtrue; TLIBATTR *pTLibAttr; - oletypelib2itypelib(self, &pTypeLib); + pTypeLib = oletypelib_get_typelib(self); + oletypelib_get_libattr(pTypeLib, &pTLibAttr); - hr = pTypeLib->lpVtbl->GetLibAttr(pTypeLib, &pTLibAttr); - if (FAILED(hr)) { - OLE_RELEASE(pTypeLib); - ole_raise(hr, eWIN32OLERuntimeError, "failed to get TLIBATTR information"); - } if ((pTLibAttr->wLibFlags == 0) || (pTLibAttr->wLibFlags & LIBFLAG_FRESTRICTED) || (pTLibAttr->wLibFlags & LIBFLAG_FHIDDEN)) { visible = Qfalse; } pTypeLib->lpVtbl->ReleaseTLibAttr(pTypeLib, pTLibAttr); - OLE_RELEASE(pTypeLib); return visible; } @@ -5345,14 +5410,12 @@ foletypelib_library_name(VALUE self) VALUE libname = Qnil; BSTR bstr; - oletypelib2itypelib(self, &pTypeLib); + pTypeLib = oletypelib_get_typelib(self); hr = pTypeLib->lpVtbl->GetDocumentation(pTypeLib, -1, &bstr, NULL, NULL, NULL); if (FAILED(hr)) { - OLE_RELEASE(pTypeLib); ole_raise(hr, eWIN32OLERuntimeError, "failed to get library name"); } - OLE_RELEASE(pTypeLib); libname = WC2VSTR(bstr); return libname; } @@ -5372,9 +5435,8 @@ foletypelib_ole_types(VALUE self) { ITypeLib *pTypeLib = NULL; VALUE classes = rb_ary_new(); - oletypelib2itypelib(self, &pTypeLib); + pTypeLib = oletypelib_get_typelib(self); ole_types_from_typelib(pTypeLib, classes); - OLE_RELEASE(pTypeLib); return classes; } @@ -7699,6 +7761,7 @@ STDMETHODIMP EVENTSINK_Invoke( } if (pvarResult) { + VariantInit(pvarResult); ole_val2variant(result, pvarResult); } @@ -8986,6 +9049,7 @@ Init_win32ole() cWIN32OLE_TYPELIB = rb_define_class("WIN32OLE_TYPELIB", rb_cObject); rb_define_singleton_method(cWIN32OLE_TYPELIB, "typelibs", foletypelib_s_typelibs, 0); + rb_define_alloc_func(cWIN32OLE_TYPELIB, foletypelib_s_allocate); rb_define_method(cWIN32OLE_TYPELIB, "initialize", foletypelib_initialize, -2); rb_define_method(cWIN32OLE_TYPELIB, "guid", foletypelib_guid, 0); rb_define_method(cWIN32OLE_TYPELIB, "name", foletypelib_name, 0); diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c index 8f23bcff21811c..a865cf384f5ff2 100644 --- a/ext/zlib/zlib.c +++ b/ext/zlib/zlib.c @@ -306,7 +306,7 @@ do_checksum(argc, argv, func) /* * call-seq: Zlib.adler32(string, adler) * - * Calculates Alder-32 checksum for +string+, and returns updated value of + * Calculates Adler-32 checksum for +string+, and returns updated value of * +adler+. If +string+ is omitted, it returns the Adler-32 initial value. If * +adler+ is omitted, it assumes that the initial value is given to +adler+. * @@ -497,7 +497,7 @@ zstream_append_buffer(struct zstream *z, const Bytef *src, int len) z->stream.avail_out = 0; } else { - if (z->stream.avail_out >= len) { + if (z->stream.avail_out >= (uInt)len) { z->stream.avail_out -= len; } else { @@ -609,7 +609,7 @@ zstream_append_input(struct zstream *z, const Bytef *src, unsigned int len) static void zstream_discard_input(struct zstream *z, unsigned int len) { - if (NIL_P(z->input) || RSTRING_LEN(z->input) <= len) { + if (NIL_P(z->input) || (unsigned int)RSTRING_LEN(z->input) <= len) { z->input = Qnil; } else { @@ -1921,7 +1921,7 @@ gzfile_make_header(struct gzfile *gz) buf[1] = GZ_MAGIC2; buf[2] = GZ_METHOD_DEFLATE; buf[3] = flags; - gzfile_set32(gz->mtime, &buf[4]); + gzfile_set32((unsigned long)gz->mtime, &buf[4]); buf[8] = extraflags; buf[9] = gz->os_code; zstream_append_buffer(&gz->z, buf, sizeof(buf)); diff --git a/file.c b/file.c index b872002c2f992f..5df3fc1c37a5b1 100644 --- a/file.c +++ b/file.c @@ -103,6 +103,34 @@ VALUE rb_cStat; #define insecure_obj_p(obj, level) (level >= 4 || (level > 0 && OBJ_TAINTED(obj))) +static VALUE +file_path_convert(VALUE name) +{ +#ifndef _WIN32 /* non Windows == Unix */ + rb_encoding *fname_encoding = rb_enc_from_index(ENCODING_GET(name)); + rb_encoding *fs_encoding; +# ifdef __APPLE__ + /* Mac OS X's file system encoding is UTF-8 */ + if (rb_usascii_encoding() != fname_encoding + && rb_ascii8bit_encoding() != fname_encoding + && (fs_encoding = rb_filesystem_encoding()) != fname_encoding + && rb_enc_find("UTF8-MAC") != fname_encoding) { + /* Don't call rb_enc_find() before UTF-8 */ + name = rb_str_conv_enc(name, fname_encoding, fs_encoding); + } +# else /* Unix other than Mac OS X */ + if (rb_default_internal_encoding() != NULL + && rb_usascii_encoding() != fname_encoding + && rb_ascii8bit_encoding() != fname_encoding + && (fs_encoding = rb_filesystem_encoding()) != fname_encoding) { + /* Don't call rb_filesystem_encoding() before US-ASCII and ASCII-8BIT */ + name = rb_str_conv_enc(name, fname_encoding, fs_encoding); + } +# endif +#endif + return name; +} + static VALUE rb_get_path_check(VALUE obj, int level) { @@ -122,11 +150,14 @@ rb_get_path_check(VALUE obj, int level) else { tmp = obj; } + StringValue(tmp); exit: + tmp = file_path_convert(tmp); StringValueCStr(tmp); if (obj != tmp && insecure_obj_p(tmp, level)) { rb_insecure_operation(); } + rb_enc_check(tmp, rb_enc_from_encoding(rb_usascii_encoding())); return rb_str_new4(tmp); } @@ -222,7 +253,7 @@ static struct timespec stat_mtimespec(struct stat *st); /* * call-seq: - * stat <=> other_stat => -1, 0, 1 + * stat <=> other_stat => -1, 0, 1, nil * * Compares File::Stat objects by comparing their * respective modification times. @@ -963,9 +994,6 @@ eaccess(const char *path, int mode) return -1; #else -# if defined(_MSC_VER) || defined(__MINGW32__) - mode &= ~1; -# endif return access(path, mode); #endif } @@ -4525,7 +4553,8 @@ path_check_0(VALUE path, int execpath) rb_str_cat2(newpath, "/"); rb_str_cat2(newpath, p0); - p0 = RSTRING_PTR(path = newpath); + path = newpath; + p0 = RSTRING_PTR(path); } for (;;) { #ifndef S_IWOTH @@ -4539,6 +4568,7 @@ path_check_0(VALUE path, int execpath) rb_warn("Insecure world writable dir %s in %sPATH, mode 0%o", p0, (execpath ? "" : "LOAD_"), st.st_mode); if (p) *p = '/'; + RB_GC_GUARD(path); return 0; } s = strrdirsep(p0); @@ -4550,15 +4580,11 @@ path_check_0(VALUE path, int execpath) } #endif -static int -fpath_check(const char *path) -{ #if ENABLE_PATH_CHECK - return path_check_0(rb_str_new2(path), FALSE); +#define fpath_check(path) path_check_0(path, FALSE) #else - return 1; +#define fpath_check(path) 1 #endif -} int rb_path_check(const char *path) @@ -4656,7 +4682,7 @@ rb_find_file_ext_safe(VALUE *filep, const char *const *ext, int safe_level) } if (expanded || is_absolute_path(f) || is_explicit_relative(f)) { - if (safe_level >= 1 && !fpath_check(f)) { + if (safe_level >= 1 && !fpath_check(fname)) { rb_raise(rb_eSecurityError, "loading from unsafe path %s", f); } if (!expanded) fname = rb_file_expand_path(fname, Qnil); @@ -4727,7 +4753,7 @@ rb_find_file_safe(VALUE path, int safe_level) } if (expanded || is_absolute_path(f) || is_explicit_relative(f)) { - if (safe_level >= 1 && !fpath_check(f)) { + if (safe_level >= 1 && !fpath_check(path)) { rb_raise(rb_eSecurityError, "loading from unsafe path %s", f); } if (!file_load_ok(f)) return 0; @@ -4761,7 +4787,7 @@ rb_find_file_safe(VALUE path, int safe_level) } found: - if (safe_level >= 1 && !fpath_check(f)) { + if (safe_level >= 1 && !fpath_check(tmp)) { rb_raise(rb_eSecurityError, "loading from unsafe file %s", f); } diff --git a/gc.c b/gc.c index dc8916b885d844..40212204a3582a 100644 --- a/gc.c +++ b/gc.c @@ -366,6 +366,8 @@ int *ruby_initial_gc_stress_ptr = &rb_objspace.gc_stress; #define need_call_final (finalizer_table && finalizer_table->num_entries) +static void rb_objspace_call_finalizer(rb_objspace_t *objspace); + #if defined(ENABLE_VM_OBJSPACE) && ENABLE_VM_OBJSPACE rb_objspace_t * rb_objspace_alloc(void) @@ -377,6 +379,33 @@ rb_objspace_alloc(void) return objspace; } + +void +rb_objspace_free(rb_objspace_t *objspace) +{ + rb_objspace_call_finalizer(objspace); + if (objspace->profile.record) { + free(objspace->profile.record); + objspace->profile.record = 0; + } + if (global_List) { + struct gc_list *list, *next; + for (list = global_List; list; list = next) { + next = list->next; + free(list); + } + } + if (heaps) { + size_t i; + for (i = 0; i < heaps_used; ++i) { + free(heaps[i].membase); + } + free(heaps); + heaps_used = 0; + heaps = 0; + } + free(objspace); +} #endif /* tiny heap size */ @@ -589,6 +618,7 @@ gc_with_gvl(void *ptr) static int garbage_collect_with_gvl(rb_objspace_t *objspace) { + if (dont_gc) return TRUE; if (ruby_thread_has_gvl_p()) { return garbage_collect(objspace); } @@ -604,6 +634,8 @@ garbage_collect_with_gvl(rb_objspace_t *objspace) } } +static void vm_xfree(rb_objspace_t *objspace, void *ptr); + static void * vm_xmalloc(rb_objspace_t *objspace, size_t size) { @@ -651,8 +683,11 @@ vm_xrealloc(rb_objspace_t *objspace, void *ptr, size_t size) if ((ssize_t)size < 0) { negative_size_allocation_error("negative re-allocation size"); } - if (!ptr) return ruby_xmalloc(size); - if (size == 0) size = 1; + if (!ptr) return vm_xmalloc(objspace, size); + if (size == 0) { + vm_xfree(objspace, ptr); + return 0; + } if (ruby_gc_stress && !ruby_disable_gc_stress) garbage_collect_with_gvl(objspace); @@ -741,7 +776,7 @@ void ruby_xfree(void *x) { if (x) - vm_xfree(&rb_objspace, x); + vm_xfree(&rb_objspace, x); } @@ -974,7 +1009,7 @@ rb_newobj_from_heap(rb_objspace_t *objspace) VALUE obj; if ((ruby_gc_stress && !ruby_disable_gc_stress) || !freelist) { - if (!heaps_increment(objspace) && !garbage_collect(objspace)) { + if (!heaps_increment(objspace) && !garbage_collect(objspace)) { during_gc = 0; rb_memerror(); } @@ -1424,8 +1459,8 @@ free_method_entry_i(ID key, rb_method_entry_t *me, st_data_t data) return ST_CONTINUE; } -static void -free_m_table(st_table *tbl) +void +rb_free_m_table(st_table *tbl) { st_foreach(tbl, free_method_entry_i, 0); st_free_table(tbl); @@ -1953,7 +1988,7 @@ obj_free(rb_objspace_t *objspace, VALUE obj) case T_MODULE: case T_CLASS: rb_clear_cache_by_class((VALUE)obj); - free_m_table(RCLASS_M_TBL(obj)); + rb_free_m_table(RCLASS_M_TBL(obj)); if (RCLASS_IV_TBL(obj)) { st_free_table(RCLASS_IV_TBL(obj)); } @@ -2054,33 +2089,29 @@ obj_free(rb_objspace_t *objspace, VALUE obj) void rb_vm_mark(void *ptr); +#if STACK_GROW_DIRECTION < 0 +#define GET_STACK_BOUNDS(start, end, appendix) (start = STACK_END, end = STACK_START) +#elif STACK_GROW_DIRECTION > 0 +#define GET_STACK_BOUNDS(start, end, appendix) (start = STACK_START, end = STACK_END+appendix) +#else +#define GET_STACK_BOUNDS(stack_start, stack_end, appendix) \ + ((STACK_END < STACK_START) ? \ + (start = STACK_END, end = STACK_START) : (start = STACK_START, end = STACK_END+appendix)) +#endif + static void mark_current_machine_context(rb_objspace_t *objspace, rb_thread_t *th) { rb_jmp_buf save_regs_gc_mark; VALUE *stack_start, *stack_end; - SET_STACK_END; -#if STACK_GROW_DIRECTION < 0 - stack_start = th->machine_stack_end; - stack_end = th->machine_stack_start; -#elif STACK_GROW_DIRECTION > 0 - stack_start = th->machine_stack_start; - stack_end = th->machine_stack_end + 1; -#else - if (th->machine_stack_end < th->machine_stack_start) { - stack_start = th->machine_stack_end; - stack_end = th->machine_stack_start; - } - else { - stack_start = th->machine_stack_start; - stack_end = th->machine_stack_end + 1; - } -#endif - FLUSH_REGISTER_WINDOWS; /* This assumes that all registers are saved into the jmp_buf (and stack) */ rb_setjmp(save_regs_gc_mark); + + SET_STACK_END; + GET_STACK_BOUNDS(stack_start, stack_end, 1); + mark_locations_array(objspace, (VALUE*)save_regs_gc_mark, sizeof(save_regs_gc_mark) / sizeof(VALUE)); @@ -2184,18 +2215,10 @@ void rb_gc_mark_machine_stack(rb_thread_t *th) { rb_objspace_t *objspace = &rb_objspace; -#if STACK_GROW_DIRECTION < 0 - rb_gc_mark_locations(th->machine_stack_end, th->machine_stack_start); -#elif STACK_GROW_DIRECTION > 0 - rb_gc_mark_locations(th->machine_stack_start, th->machine_stack_end); -#else - if (th->machine_stack_start < th->machine_stack_end) { - rb_gc_mark_locations(th->machine_stack_start, th->machine_stack_end); - } - else { - rb_gc_mark_locations(th->machine_stack_end, th->machine_stack_start); - } -#endif + VALUE *stack_start, *stack_end; + + GET_STACK_BOUNDS(stack_start, stack_end, 0); + rb_gc_mark_locations(stack_start, stack_end); #ifdef __ia64 rb_gc_mark_locations(th->machine_register_stack_start, th->machine_register_stack_end); #endif @@ -2284,7 +2307,7 @@ Init_heap(void) * sample_callback(void *vstart, void *vend, int stride, void *data) { * VALUE v = (VALUE)vstart; * for (; v != (VALUE)vend; v += stride) { - * if (RBASIC(v)->flasgs) { // liveness check + * if (RBASIC(v)->flags) { // liveness check * // do something with live object 'v' * } * return 0; // continue to iteration @@ -2608,7 +2631,12 @@ chain_finalized_object(st_data_t key, st_data_t val, st_data_t arg) void rb_gc_call_finalizer_at_exit(void) { - rb_objspace_t *objspace = &rb_objspace; + rb_objspace_call_finalizer(&rb_objspace); +} + +void +rb_objspace_call_finalizer(rb_objspace_t *objspace) +{ RVALUE *p, *pend; RVALUE *final_list = 0; size_t i; @@ -2908,9 +2936,9 @@ count_objects(int argc, VALUE *argv, VALUE os) * call-seq: * GC.count -> Integer * - * The number of times GC occured. + * The number of times GC occurred. * - * It returns the number of times GC occured since the process started. + * It returns the number of times GC occurred since the process started. * */ diff --git a/gc.h b/gc.h index 29fd6b407c9014..d835b9b6d2d2ca 100644 --- a/gc.h +++ b/gc.h @@ -2,8 +2,10 @@ #ifndef RUBY_GC_H #define RUBY_GC_H 1 -#if defined(__i386) && defined(__GNUC__) -#define SET_MACHINE_STACK_END(p) __asm__("mov %%esp, %0" : "=r" (*p)) +#if defined(__x86_64__) && defined(__GNUC__) +#define SET_MACHINE_STACK_END(p) __asm__("movq\t%%rsp, %0" : "=r" (*p)) +#elif defined(__i386) && defined(__GNUC__) +#define SET_MACHINE_STACK_END(p) __asm__("movl\t%%esp, %0" : "=r" (*p)) #else NOINLINE(void rb_gc_set_stack_end(VALUE **stack_end_p)); #define SET_MACHINE_STACK_END(p) rb_gc_set_stack_end(p) @@ -26,7 +28,7 @@ rb_gc_debug_indent(void) } static void -rb_gc_debug_body(char *mode, char *msg, int st, void *ptr) +rb_gc_debug_body(const char *mode, const char *msg, int st, void *ptr) { if (st == 0) { ruby_gc_debug_indent--; diff --git a/gem_prelude.rb b/gem_prelude.rb index ca865aabdcff1f..5e12ac16a721c5 100644 --- a/gem_prelude.rb +++ b/gem_prelude.rb @@ -66,7 +66,8 @@ def self.pre_uninstall(&hook) end def self.set_home(home) - home = home.gsub File::ALT_SEPARATOR, File::SEPARATOR if File::ALT_SEPARATOR + home = home.dup.force_encoding(Encoding.find('filesystem')) + home.gsub!(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR @gem_home = home end @@ -87,10 +88,11 @@ def self.set_paths(gpaths) end @gem_path.uniq! + @gem_path.map!{|x|x.force_encoding(Encoding.find('filesystem'))} end def self.user_home - @user_home ||= File.expand_path("~") + @user_home ||= File.expand_path("~").force_encoding(Encoding.find('filesystem')) rescue if File::ALT_SEPARATOR then "C:/" diff --git a/hash.c b/hash.c index bc0a2511e5ee7f..321f7a7375c409 100644 --- a/hash.c +++ b/hash.c @@ -193,7 +193,7 @@ static VALUE hash_foreach_call(struct hash_foreach_arg *arg) { if (st_foreach(RHASH(arg->hash)->ntbl, hash_foreach_iter, (st_data_t)arg)) { - rb_raise(rb_eRuntimeError, "hash modified during iteration"); + rb_raise(rb_eRuntimeError, "hash modified during iteration"); } return Qnil; } @@ -218,7 +218,7 @@ hash_alloc(VALUE klass) NEWOBJ(hash, struct RHash); OBJSETUP(hash, klass, T_HASH); - hash->ifnone = Qnil; + RHASH_IFNONE(hash) = Qnil; return (VALUE)hash; } @@ -240,7 +240,7 @@ rb_hash_dup(VALUE hash) if (FL_TEST(hash, HASH_PROC_DEFAULT)) { FL_SET(ret, HASH_PROC_DEFAULT); } - ret->ifnone = RHASH(hash)->ifnone; + RHASH_IFNONE(ret) = RHASH_IFNONE(hash); return (VALUE)ret; } @@ -268,6 +268,17 @@ rb_hash_modify(VALUE hash) rb_hash_tbl(hash); } +static void +default_proc_arity_check(VALUE proc) +{ + int n = rb_proc_arity(proc); + + if (rb_proc_lambda_p(proc) && n != 2 && (n >= 0 || n < -3)) { + if (n < 0) n = -n-1; + rb_raise(rb_eTypeError, "default_proc takes two arguments (2 for %d)", n); + } +} + /* * call-seq: * Hash.new => hash @@ -313,12 +324,14 @@ rb_hash_initialize(int argc, VALUE *argv, VALUE hash) if (argc > 0) { rb_raise(rb_eArgError, "wrong number of arguments"); } - RHASH(hash)->ifnone = rb_block_proc(); + ifnone = rb_block_proc(); + default_proc_arity_check(ifnone); + RHASH_IFNONE(hash) = ifnone; FL_SET(hash, HASH_PROC_DEFAULT); } else { rb_scan_args(argc, argv, "01", &ifnone); - RHASH(hash)->ifnone = ifnone; + RHASH_IFNONE(hash) = ifnone; } return hash; @@ -466,7 +479,7 @@ rb_hash_rehash(VALUE hash) * hsh[key] => value * * Element Reference---Retrieves the value object corresponding - * to the key object. If not found, returns the a default value (see + * to the key object. If not found, returns the default value (see * Hash::new for details). * * h = { "a" => 100, "b" => 200 } @@ -585,14 +598,15 @@ rb_hash_fetch(VALUE hash, VALUE key) static VALUE rb_hash_default(int argc, VALUE *argv, VALUE hash) { - VALUE key; + VALUE key, ifnone; rb_scan_args(argc, argv, "01", &key); + ifnone = RHASH_IFNONE(hash); if (FL_TEST(hash, HASH_PROC_DEFAULT)) { if (argc == 0) return Qnil; - return rb_funcall(RHASH(hash)->ifnone, id_yield, 2, hash, key); + return rb_funcall(ifnone, id_yield, 2, hash, key); } - return RHASH(hash)->ifnone; + return ifnone; } /* @@ -600,7 +614,7 @@ rb_hash_default(int argc, VALUE *argv, VALUE hash) * hsh.default = obj => obj * * Sets the default value, the value returned for a key that does not - * exist in the hash. It is not possible to set the a default to a + * exist in the hash. It is not possible to set the default to a * Proc that will be executed on each key lookup. * * h = { "a" => 100, "b" => 200 } @@ -619,7 +633,7 @@ static VALUE rb_hash_set_default(VALUE hash, VALUE ifnone) { rb_hash_modify(hash); - RHASH(hash)->ifnone = ifnone; + RHASH_IFNONE(hash) = ifnone; FL_UNSET(hash, HASH_PROC_DEFAULT); return ifnone; } @@ -643,7 +657,7 @@ static VALUE rb_hash_default_proc(VALUE hash) { if (FL_TEST(hash, HASH_PROC_DEFAULT)) { - return RHASH(hash)->ifnone; + return RHASH_IFNONE(hash); } return Qnil; } @@ -676,7 +690,8 @@ rb_hash_set_default_proc(VALUE hash, VALUE proc) rb_obj_classname(proc)); } proc = b; - RHASH(hash)->ifnone = proc; + default_proc_arity_check(proc); + RHASH_IFNONE(hash) = proc; FL_SET(hash, HASH_PROC_DEFAULT); return proc; } @@ -834,10 +849,10 @@ rb_hash_shift(VALUE hash) return rb_assoc_new(var.key, var.val); } else if (FL_TEST(hash, HASH_PROC_DEFAULT)) { - return rb_funcall(RHASH(hash)->ifnone, id_yield, 2, hash, Qnil); + return rb_funcall(RHASH_IFNONE(hash), id_yield, 2, hash, Qnil); } else { - return RHASH(hash)->ifnone; + return RHASH_IFNONE(hash); } } @@ -947,7 +962,7 @@ select_i(VALUE key, VALUE value, VALUE result) * call-seq: * hsh.select {|key, value| block} => a_hash * - * Returns a new hash consisting of entries which the block returns true. + * Returns a new hash consisting of entries for which the block returns true. * * h = { "a" => 100, "b" => 200, "c" => 300 } * h.select {|k,v| k > "a"} #=> {"b" => 200, "c" => 300} @@ -1065,7 +1080,7 @@ rb_hash_replace(VALUE hash, VALUE hash2) RHASH(hash)->ntbl->type = RHASH(hash2)->ntbl->type; } rb_hash_foreach(hash2, replace_i, hash); - RHASH(hash)->ifnone = RHASH(hash2)->ifnone; + RHASH_IFNONE(hash) = RHASH_IFNONE(hash2); if (FL_TEST(hash2, HASH_PROC_DEFAULT)) { FL_SET(hash, HASH_PROC_DEFAULT); } @@ -1492,7 +1507,7 @@ hash_equal(VALUE hash1, VALUE hash2, int eql) if (RHASH(hash1)->ntbl->type != RHASH(hash2)->ntbl->type) return Qfalse; #if 0 - if (!(rb_equal(RHASH(hash1)->ifnone, RHASH(hash2)->ifnone) && + if (!(rb_equal(RHASH_IFNONE(hash1), RHASH_IFNONE(hash2)) && FL_TEST(hash1, HASH_PROC_DEFAULT) == FL_TEST(hash2, HASH_PROC_DEFAULT))) return Qfalse; #endif @@ -1556,13 +1571,13 @@ recursive_hash(VALUE hash, VALUE dummy, int recur) { st_index_t hval; - if (recur) { - rb_raise(rb_eArgError, "recursive key for hash"); - } if (!RHASH(hash)->ntbl) return LONG2FIX(0); hval = RHASH(hash)->ntbl->num_entries; - rb_hash_foreach(hash, hash_i, (VALUE)&hval); + if (recur) + hval = rb_hash_end(rb_hash_uint(rb_hash_start(rb_hash(rb_cHash)), hval)); + else + rb_hash_foreach(hash, hash_i, (VALUE)&hval); return INT2FIX(hval); } @@ -1577,7 +1592,7 @@ recursive_hash(VALUE hash, VALUE dummy, int recur) static VALUE rb_hash_hash(VALUE hash) { - return rb_exec_recursive(recursive_hash, hash, 0); + return rb_exec_recursive_outer(recursive_hash, hash, 0); } static int @@ -1743,7 +1758,7 @@ rassoc_i(VALUE key, VALUE val, VALUE arg) * hash.rassoc(key) -> an_array or nil * * Searches through the hash comparing _obj_ with the value using ==. - * Returns the first key-value pair (two elements array) that matches. See + * Returns the first key-value pair (two-element array) that matches. See * also Array#rassoc. * * a = {1=> "one", 2 => "two", 3 => "three", "ii" => "two"} @@ -1770,7 +1785,7 @@ rb_hash_rassoc(VALUE hash, VALUE obj) * Returns a new array that is a one-dimensional flattening of this * hash. That is, for every key or value that is an array, extract * its elements into the new array. Unlike Array#flatten, this - * method does not flatten recursively by default. If the optional + * method does not flatten recursively by default. The optional * level argument determines the level of recursion to flatten. * * a = {1=> "one", 2 => [2,"two"], 3 => "three"} @@ -1797,7 +1812,7 @@ rb_hash_flatten(int argc, VALUE *argv, VALUE hash) * call-seq: * hsh.compare_by_identity => hsh * - * Makes hsh to compare its keys by their identity, i.e. it + * Makes hsh compare its keys by their identity, i.e. it * will consider exact same objects as same keys. * * h1 = { "a" => 100, "b" => 200, :c => "c" } @@ -1915,6 +1930,8 @@ env_delete_m(VALUE obj, VALUE name) return val; } +static int env_path_tainted(const char *); + static VALUE rb_f_getenv(VALUE obj, VALUE name) { @@ -1928,8 +1945,8 @@ rb_f_getenv(VALUE obj, VALUE name) } env = getenv(nam); if (env) { - if (ENVMATCH(nam, PATH_ENV) && !rb_env_path_tainted()) { - VALUE str = rb_str_new2(env); + if (ENVMATCH(nam, PATH_ENV) && !env_path_tainted(env)) { + VALUE str = rb_filesystem_str_new_cstr(env); rb_obj_freeze(str); return str; @@ -1965,17 +1982,26 @@ env_fetch(int argc, VALUE *argv) } return if_none; } - if (ENVMATCH(nam, PATH_ENV) && !rb_env_path_tainted()) - return rb_str_new2(env); + if (ENVMATCH(nam, PATH_ENV) && !env_path_tainted(env)) + return rb_filesystem_str_new_cstr(env); return env_str_new2(env); } static void -path_tainted_p(char *path) +path_tainted_p(const char *path) { path_tainted = rb_path_check(path)?0:1; } +static int +env_path_tainted(const char *path) +{ + if (path_tainted < 0) { + path_tainted_p(path); + } + return path_tainted; +} + int rb_env_path_tainted(void) { @@ -1985,7 +2011,18 @@ rb_env_path_tainted(void) return path_tainted; } -#if !defined(_WIN32) && !(defined(HAVE_SETENV) && defined(HAVE_UNSETENV)) +#if defined(_WIN32) || (defined(HAVE_SETENV) && defined(HAVE_UNSETENV)) +#elif defined __sun__ +static int +in_origenv(const char *str) +{ + char **env; + for (env = origenviron; *env; ++env) { + if (*env == str) return 1; + } + return 0; +} +#else static int envix(const char *nam) { @@ -2006,24 +2043,24 @@ void ruby_setenv(const char *name, const char *value) { #if defined(_WIN32) - /* The sane way to deal with the environment. - * Has these advantages over putenv() & co.: - * * enables us to store a truly empty value in the - * environment (like in UNIX). - * * we don't have to deal with RTL globals, bugs and leaks. - * * Much faster. - * Why you may want to enable USE_WIN32_RTL_ENV: - * * environ[] and RTL functions will not reflect changes, - * which might be an issue if extensions want to access - * the env. via RTL. This cuts both ways, since RTL will - * not see changes made by extensions that call the Win32 - * functions directly, either. - * GSAR 97-06-07 - * - * REMARK: USE_WIN32_RTL_ENV is already obsoleted since we don't use - * RTL's environ global variable directly yet. - */ - SetEnvironmentVariable(name,value); + int len; + char *buf; + if (value) { + len = strlen(name) + 1 + strlen(value) + 1; + buf = ALLOCA_N(char, len); + snprintf(buf, len, "%s=%s", name, value); + putenv(buf); + + /* putenv() doesn't handle empty value */ + if (*value) + SetEnvironmentVariable(name,value); + } + else { + len = strlen(name) + 1 + 1; + buf = ALLOCA_N(char, len); + snprintf(buf, len, "%s=", name); + putenv(buf); + } #elif defined(HAVE_SETENV) && defined(HAVE_UNSETENV) #undef setenv #undef unsetenv @@ -2031,6 +2068,21 @@ ruby_setenv(const char *name, const char *value) setenv(name,value,1); else unsetenv(name); +#elif defined __sun__ + size_t len = strlen(name); + char **env_ptr, *str; + for (env_ptr = GET_ENVIRON(environ); (str = *env_ptr) != 0; ++env_ptr) { + if (!strncmp(str, name, len) && str[len] == '=') { + if (!in_origenv(str)) free(str); + while ((env_ptr[0] = env_ptr[1]) != 0) env_ptr++; + break; + } + } + if (value) { + str = malloc(len += strlen(value) + 2); + snprintf(str, len, "%s=%s", name, value); + putenv(str); + } #else /* WIN32 */ size_t len; int i=envix(name); /* where does it go? */ @@ -2043,7 +2095,7 @@ ruby_setenv(const char *name, const char *value) for (max = i; environ[max]; max++) ; tmpenv = ALLOC_N(char*, max+2); for (j=0; jHash is a collection of key-value pairs. It is * similar to an Array, except that indexing is done via - * arbitrary keys of any object type, not an integer index. The order - * in which you traverse a hash by either key or value may seem - * arbitrary, and will generally not be in the insertion order. + * arbitrary keys of any object type, not an integer index. Hashes enumerate + * their values in the order that the corresponding keys were inserted. * * Hashes have a default value that is returned when accessing * keys that do not exist in the hash. By default, that value is diff --git a/include/ruby/encoding.h b/include/ruby/encoding.h index 9be412ddf2b5aa..500725e72e8947 100644 --- a/include/ruby/encoding.h +++ b/include/ruby/encoding.h @@ -170,11 +170,13 @@ int rb_enc_tolower(int c, rb_encoding *enc); ID rb_intern3(const char*, long, rb_encoding*); ID rb_interned_id_p(const char *, long, rb_encoding *); int rb_enc_symname_p(const char*, rb_encoding*); +int rb_enc_symname2_p(const char*, long, rb_encoding*); int rb_enc_str_coderange(VALUE); long rb_str_coderange_scan_restartable(const char*, const char*, rb_encoding*, int*); int rb_enc_str_asciionly_p(VALUE); #define rb_enc_str_asciicompat_p(str) rb_enc_asciicompat(rb_enc_get(str)) VALUE rb_enc_from_encoding(rb_encoding *enc); +int rb_enc_unicode_p(rb_encoding *enc); rb_encoding *rb_ascii8bit_encoding(void); rb_encoding *rb_utf8_encoding(void); rb_encoding *rb_usascii_encoding(void); diff --git a/include/ruby/intern.h b/include/ruby/intern.h index 3adec625da4f9c..fd37ecab2a05e8 100644 --- a/include/ruby/intern.h +++ b/include/ruby/intern.h @@ -203,6 +203,7 @@ void rb_check_frozen(VALUE); /* eval.c */ int rb_sourceline(void); const char *rb_sourcefile(void); +VALUE rb_check_funcall(VALUE, ID, int, VALUE*); #if defined(NFDBITS) && defined(HAVE_RB_FD_INIT) typedef struct { @@ -305,6 +306,7 @@ VALUE rb_proc_new(VALUE (*)(ANYARGS/* VALUE yieldarg[, VALUE procarg] */), VALUE VALUE rb_proc_call(VALUE, VALUE); VALUE rb_proc_call_with_block(VALUE, int argc, VALUE *argv, VALUE); int rb_proc_arity(VALUE); +VALUE rb_proc_lambda_p(VALUE); VALUE rb_binding_new(void); VALUE rb_obj_method(VALUE, VALUE); VALUE rb_method_call(int, VALUE*, VALUE); @@ -314,7 +316,6 @@ VALUE rb_protect(VALUE (*)(VALUE), VALUE, int*); void rb_set_end_proc(void (*)(VALUE), VALUE); void rb_mark_end_proc(void); void rb_exec_end_proc(void); -void Init_jump(void); void ruby_finalize(void); NORETURN(void ruby_stop(int)); int ruby_cleanup(volatile int); @@ -343,6 +344,7 @@ void rb_thread_atfork(void); void rb_thread_atfork_before_exec(void); VALUE rb_exec_recursive(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE); VALUE rb_exec_recursive_paired(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE,VALUE); +VALUE rb_exec_recursive_outer(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE); /* file.c */ VALUE rb_file_s_expand_path(int, VALUE *); VALUE rb_file_expand_path(VALUE, VALUE); @@ -600,6 +602,8 @@ VALUE rb_external_str_new(const char*, long); VALUE rb_external_str_new_cstr(const char*); VALUE rb_locale_str_new(const char*, long); VALUE rb_locale_str_new_cstr(const char*); +VALUE rb_filesystem_str_new(const char*, long); +VALUE rb_filesystem_str_new_cstr(const char*); VALUE rb_str_buf_new(long); VALUE rb_str_buf_new_cstr(const char*); VALUE rb_str_buf_new2(const char*); @@ -634,10 +638,13 @@ VALUE rb_str_cat2(VALUE, const char*); VALUE rb_str_append(VALUE, VALUE); VALUE rb_str_concat(VALUE, VALUE); st_index_t rb_memhash(const void *ptr, long len); -VALUE rb_hash_start(VALUE); -VALUE rb_hash_uint32(VALUE, unsigned int); -VALUE rb_hash_uint(VALUE, VALUE); -VALUE rb_hash_end(VALUE); +st_index_t rb_hash_start(st_index_t); +st_index_t rb_hash_uint32(st_index_t, uint32_t); +st_index_t rb_hash_uint(st_index_t, st_index_t); +st_index_t rb_hash_end(st_index_t); +#define rb_hash_uint32(h, i) st_hash_uint32(h, i) +#define rb_hash_uint(h, i) st_hash_uint(h, i) +#define rb_hash_end(h) st_hash_end(h) st_index_t rb_str_hash(VALUE); int rb_str_hash_cmp(VALUE,VALUE); int rb_str_comparable(VALUE, VALUE); @@ -729,7 +736,7 @@ VALUE rb_struct_initialize(VALUE, VALUE); VALUE rb_struct_aref(VALUE, VALUE); VALUE rb_struct_aset(VALUE, VALUE, VALUE); VALUE rb_struct_getmember(VALUE, ID); -VALUE rb_struct_iv_get(VALUE, const char*); +DEPRECATED(VALUE rb_struct_iv_get(VALUE, const char*)); VALUE rb_struct_s_members(VALUE); VALUE rb_struct_members(VALUE); VALUE rb_struct_alloc_noinit(VALUE); diff --git a/include/ruby/io.h b/include/ruby/io.h index 45384db586158f..2ccaf0f1f90f01 100644 --- a/include/ruby/io.h +++ b/include/ruby/io.h @@ -164,7 +164,7 @@ NORETURN(void rb_eof_error(void)); void rb_io_read_check(rb_io_t*); int rb_io_read_pending(rb_io_t*); -void rb_read_check(FILE*); +DEPRECATED(void rb_read_check(FILE*)); #if defined(__cplusplus) #if 0 diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h index 8800e029e80659..568d61ab478ed6 100644 --- a/include/ruby/ruby.h +++ b/include/ruby/ruby.h @@ -291,7 +291,7 @@ VALUE rb_ull2inum(unsigned LONG_LONG); #define SYMBOL_P(x) (((VALUE)(x)&~(~(VALUE)0<flags & T_MASK) +static inline int rb_type(VALUE obj); #define TYPE(x) rb_type((VALUE)(x)) -#define RB_GC_GUARD(v) (*(volatile VALUE *)&(v)) +#ifdef __GNUC__ +#define RB_GC_GUARD_PTR(ptr) \ + __extension__ ({volatile VALUE *rb_gc_guarded_ptr = (ptr); rb_gc_guarded_ptr;}) +#else +#define RB_GC_GUARD_PTR(ptr) (volatile VALUE *)(ptr) +#endif +#define RB_GC_GUARD(v) (*RB_GC_GUARD_PTR(&(v))) void rb_check_type(VALUE,int); #define Check_Type(v,t) rb_check_type((VALUE)(v),t) @@ -450,11 +457,17 @@ NUM2LONG(VALUE x) long rb_num2int(VALUE); long rb_fix2int(VALUE); #define FIX2INT(x) ((int)rb_fix2int((VALUE)x)) +#define NUM2INT_internal(x) (FIXNUM_P(x) ? FIX2INT(x) : (int)rb_num2int(x)) +#ifdef __GNUC__ +#define NUM2INT(x) \ + __extension__ ({VALUE num2int_x = (x); NUM2INT_internal(num2int_x);}) +#else static inline int NUM2INT(VALUE x) { - return FIXNUM_P(x) ? FIX2INT(x) : (int)rb_num2int(x); + return NUM2INT_internal(x); } +#endif unsigned long rb_num2uint(VALUE); #define NUM2UINT(x) ((unsigned int)rb_num2uint(x)) unsigned long rb_fix2uint(VALUE); @@ -469,11 +482,17 @@ unsigned long rb_fix2uint(VALUE); #ifdef HAVE_LONG_LONG LONG_LONG rb_num2ll(VALUE); unsigned LONG_LONG rb_num2ull(VALUE); +# define NUM2LL_internal(x) (FIXNUM_P(x) ? FIX2LONG(x) : rb_num2ll(x)) +# ifdef __GNUC__ +# define NUM2LL(x) \ + __extension__ ({VALUE num2ll_x = (x); NUM2LL_internal(num2ll_x);}) +# else static inline LONG_LONG NUM2LL(VALUE x) { - return FIXNUM_P(x) ? FIX2LONG(x) : rb_num2ll(x); + return NUM2LL_internal(x); } +# endif # define NUM2ULL(x) rb_num2ull((VALUE)x) #endif @@ -497,45 +516,6 @@ double rb_num2dbl(VALUE); VALUE rb_uint2big(VALUE); VALUE rb_int2big(SIGNED_VALUE); -#if SIZEOF_INT < SIZEOF_VALUE -# define INT2NUM(v) INT2FIX((int)(v)) -# define UINT2NUM(v) LONG2FIX((unsigned int)(v)) -#else -static inline VALUE -INT2NUM(int v) -{ - if (!FIXABLE(v)) - return rb_int2big(v); - return INT2FIX(v); -} - -static inline VALUE -UINT2NUM(unsigned int v) -{ - if (!POSFIXABLE(v)) - return rb_uint2big(v); - return LONG2FIX(v); -} -#endif - -static inline VALUE -LONG2NUM(long v) -{ - if (FIXABLE(v)) return LONG2FIX(v); - return rb_int2big(v); -} - -static inline VALUE -ULONG2NUM(unsigned long v) -{ - if (POSFIXABLE(v)) return LONG2FIX(v); - return rb_uint2big(v); -} - -#define NUM2CHR(x) (((TYPE(x) == T_STRING)&&(RSTRING_LEN(x)>=1))?\ - RSTRING_PTR(x)[0]:(char)(NUM2INT(x)&0xff)) -#define CHR2FIX(x) INT2FIX((long)((x)&0xff)) - VALUE rb_newobj(void); #define NEWOBJ(obj,type) type *obj = (type*)rb_newobj() #define OBJSETUP(obj,c,t) do {\ @@ -584,6 +564,7 @@ struct RObject { RCLASS_IV_INDEX_TBL(rb_obj_class(o)) : \ ROBJECT(o)->as.heap.iv_index_tbl) +/** @internal */ typedef struct { VALUE super; struct st_table *iv_tbl; @@ -639,7 +620,12 @@ struct RString { (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? \ RSTRING(str)->as.ary : \ RSTRING(str)->as.heap.ptr) -#define RSTRING_END(str) (RSTRING_PTR(str)+RSTRING_LEN(str)) +#define RSTRING_END(str) \ + (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? \ + (RSTRING(str)->as.ary + \ + ((RBASIC(str)->flags >> RSTRING_EMBED_LEN_SHIFT) & \ + (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT))) : \ + (RSTRING(str)->as.heap.ptr + RSTRING(str)->as.heap.len)) #define RARRAY_EMBED_LEN_MAX 3 struct RArray { @@ -679,7 +665,7 @@ NORETURN(void rb_out_of_int(SIGNED_VALUE num)); int i = (int)(n); \ if ((long)i != (n)) rb_out_of_int(n) #ifdef __GNUC__ -#define rb_long2int(i2l_n) __extension__ ({rb_long2int_internal(i2l_n, i2l_i); i2l_i;}) +#define rb_long2int(n) __extension__ ({long i2l_n = (n); rb_long2int_internal(i2l_n, i2l_i); i2l_i;}) #else static inline int rb_long2int(long n) {rb_long2int_internal(n, i); return i;} @@ -925,6 +911,68 @@ struct RBignum { #define OBJ_FROZEN(x) (!!FL_TEST((x), FL_FREEZE)) #define OBJ_FREEZE(x) FL_SET((x), FL_FREEZE) +#if SIZEOF_INT < SIZEOF_VALUE +# define INT2NUM(v) INT2FIX((int)(v)) +# define UINT2NUM(v) LONG2FIX((unsigned int)(v)) +#else +# define INT2NUM_internal(v) (FIXABLE(v) ? INT2FIX(v) : rb_int2big(v)) +# ifdef __GNUC__ +# define INT2NUM(v) __extension__ ({int int2num_v = (v); INT2NUM_internal(int2num_v);}) +# else +static inline VALUE +INT2NUM(int v) +{ + return INT2NUM_internal(v); +} +# endif + +# define UINT2NUM_internal(v) (POSFIXABLE(v) ? LONG2FIX(v) : rb_uint2big(v)) +# ifdef __GNUC__ +# define UINT2NUM(v) __extension__ ({unsigned int uint2num_v = (v); UINT2NUM_internal(uint2num_v);}) +# else +static inline VALUE +UINT2NUM(unsigned int v) +{ + return UINT2NUM_internal(v); +} +# endif +#endif + +#define LONG2NUM_internal(v) (FIXABLE(v) ? LONG2FIX(v) : rb_int2big(v)) +#ifdef __GNUC__ +# define LONG2NUM(v) __extension__ ({long long2num_v = (v); LONG2NUM_internal(long2num_v);}) +#else +static inline VALUE +LONG2NUM(long v) +{ + return LONG2NUM_internal(v); +} +#endif + +#define ULONG2NUM_internal(v) (POSFIXABLE(v) ? LONG2FIX(v) : rb_uint2big(v)) +#ifdef __GNUC__ +# define ULONG2NUM(v) __extension__ ({unsigned long ulong2num_v = (v); ULONG2NUM_internal(ulong2num_v);}) +#else +static inline VALUE +ULONG2NUM(unsigned long v) +{ + return ULONG2NUM_internal(v); +} +#endif + +#define NUM2CHR_internal(x) (((TYPE(x) == T_STRING)&&(RSTRING_LEN(x)>=1))?\ + RSTRING_PTR(x)[0]:(char)(NUM2INT(x)&0xff)) +#ifdef __GNUC__ +# define NUM2CHR(x) __extension__ ({VALUE num2chr_x = (x); NUM2CHR_internal(num2chr_x);}) +#else +static inline char +NUM2CHR(VALUE x) +{ + return NUM2CHR_internal(x); +} +#endif +#define CHR2FIX(x) INT2FIX((long)((x)&0xff)) + #define ALLOC_N(type,n) (type*)xmalloc2((n),sizeof(type)) #define ALLOC(type) (type*)xmalloc(sizeof(type)) #define REALLOC_N(var,type,n) (var)=(type*)xrealloc2((char*)(var),(n),sizeof(type)) @@ -1052,6 +1100,7 @@ VALUE *rb_ruby_debug_ptr(void); PRINTF_ARGS(NORETURN(void rb_raise(VALUE, const char*, ...)), 2, 3); PRINTF_ARGS(NORETURN(void rb_fatal(const char*, ...)), 1, 2); PRINTF_ARGS(NORETURN(void rb_bug(const char*, ...)), 1, 2); +NORETURN(void rb_bug_errno(const char*, int)); NORETURN(void rb_sys_fail(const char*)); NORETURN(void rb_mod_sys_fail(VALUE, const char*)); NORETURN(void rb_iter_break(void)); @@ -1099,6 +1148,7 @@ void ruby_init_stack(volatile VALUE*); void ruby_init(void); void *ruby_options(int, char**); int ruby_run_node(void *); +int ruby_exec_node(void *); RUBY_EXTERN VALUE rb_mKernel; RUBY_EXTERN VALUE rb_mComparable; @@ -1216,12 +1266,34 @@ rb_type(VALUE obj) return BUILTIN_TYPE(obj); } +#define RB_TYPE_P(obj, type) ( \ + ((type) == T_FIXNUM) ? FIXNUM_P(obj) : \ + ((type) == T_TRUE) ? ((obj) == Qtrue) : \ + ((type) == T_FALSE) ? ((obj) == Qfalse) : \ + ((type) == T_NIL) ? ((obj) == Qnil) : \ + ((type) == T_UNDEF) ? ((obj) == Qundef) : \ + ((type) == T_SYMBOL) ? SYMBOL_P(obj) : \ + (!SPECIAL_CONST_P(obj) && BUILTIN_TYPE(obj) == (type))) + +#ifdef __GNUC__ +#define rb_type_p(obj, type) \ + __extension__ (__builtin_constant_p(type) ? RB_TYPE_P(obj, type) : \ + rb_type(obj) == (type)) +#else +#define rb_type_p(obj, type) (rb_type(obj) == (type)) +#endif + +#ifdef __GNUC__ +#define rb_special_const_p(obj) \ + __extension__ ({VALUE special_const_obj = (obj); (int)(SPECIAL_CONST_P(special_const_obj) ? Qtrue : Qfalse);}) +#else static inline int rb_special_const_p(VALUE obj) { if (SPECIAL_CONST_P(obj)) return (int)Qtrue; return (int)Qfalse; } +#endif #include "ruby/missing.h" #include "ruby/intern.h" @@ -1232,8 +1304,7 @@ static char *dln_libs_to_be_linked[] = { EXTLIB, 0 }; #endif #if (defined(__APPLE__) || defined(__NeXT__)) && defined(__MACH__) -/* to link startup code with ObjC support */ -#define RUBY_GLOBAL_SETUP static void objcdummyfunction(void) {objc_msgSend();} +#define RUBY_GLOBAL_SETUP /* use linker option to link startup code with ObjC support */ #else #define RUBY_GLOBAL_SETUP #endif diff --git a/include/ruby/st.h b/include/ruby/st.h index 412a0129c7b62a..d60ccd9a9a986e 100644 --- a/include/ruby/st.h +++ b/include/ruby/st.h @@ -26,6 +26,13 @@ extern "C" { #include #endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif + #if SIZEOF_LONG == SIZEOF_VOIDP typedef unsigned long st_data_t; #elif SIZEOF_LONG_LONG == SIZEOF_VOIDP @@ -59,6 +66,9 @@ typedef st_data_t st_index_t; typedef int st_compare_func(st_data_t, st_data_t); typedef st_index_t st_hash_func(st_data_t); +typedef char st_check_for_sizeof_st_index_t[SIZEOF_VOIDP == (int)sizeof(st_index_t) ? 1 : -1]; +#define SIZEOF_ST_INDEX_T SIZEOF_VOIDP + struct st_hash_type { int (*compare)(ANYARGS /*st_data_t, st_data_t*/); /* st_compare_func* */ st_index_t (*hash)(ANYARGS /*st_data_t*/); /* st_hash_func* */ @@ -108,6 +118,12 @@ st_index_t st_numhash(st_data_t); int st_strcasecmp(const char *s1, const char *s2); int st_strncasecmp(const char *s1, const char *s2, size_t n); size_t st_memsize(const st_table *); +st_index_t st_hash(const void *ptr, size_t len, st_index_t h); +st_index_t st_hash_uint32(st_index_t h, uint32_t i); +st_index_t st_hash_uint(st_index_t h, st_index_t i); +st_index_t st_hash_end(st_index_t h); +st_index_t st_hash_start(st_index_t h); +#define st_hash_start(h) ((st_index_t)(h)) #if defined(__cplusplus) #if 0 diff --git a/include/ruby/vm.h b/include/ruby/vm.h index 68434697357776..27b976dd85cfab 100644 --- a/include/ruby/vm.h +++ b/include/ruby/vm.h @@ -19,4 +19,10 @@ * http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/mvm/ */ +/* VM type declaration */ +typedef struct rb_vm_struct ruby_vm_t; + +/* core API */ +int ruby_vm_destruct(ruby_vm_t *vm); + #endif /* RUBY_VM_H */ diff --git a/include/ruby/win32.h b/include/ruby/win32.h index d468bb266469b2..5f0501aa55f052 100644 --- a/include/ruby/win32.h +++ b/include/ruby/win32.h @@ -139,7 +139,6 @@ extern DWORD rb_w32_osid(void); #define getppid() rb_w32_getppid() #define sleep(x) rb_w32_Sleep((x)*1000) #define Sleep(msec) (void)rb_w32_Sleep(msec) -#define fstat(fd,st) _fstati64(fd,st) #ifdef __BORLANDC__ #define creat(p, m) _creat(p, m) #define eof() _eof() @@ -155,14 +154,14 @@ extern DWORD rb_w32_osid(void); #define fdopen(h, m) rb_w32_fdopen(h, m) #undef fsopen #define fsopen(p, m, sh) rb_w32_fsopen(p, m, sh) -#endif +#endif /* __BORLANDC__ */ #undef execv #define execv(path,argv) rb_w32_aspawn(P_OVERLAY,path,argv) #if !defined(__BORLANDC__) #undef isatty #define isatty(h) rb_w32_isatty(h) -#endif +#endif /* __BORLANDC__ */ #undef mkdir #define mkdir(p, m) rb_w32_mkdir(p, m) @@ -170,19 +169,21 @@ extern DWORD rb_w32_osid(void); #define rmdir(p) rb_w32_rmdir(p) #undef unlink #define unlink(p) rb_w32_unlink(p) -#endif +#endif /* RUBY_EXPORT */ #if SIZEOF_OFF_T == 8 #define off_t __int64 #define stat stati64 +#define fstat(fd,st) _fstati64(fd,st) #if defined(__BORLANDC__) #define stati64(path, st) rb_w32_stati64(path, st) -#elif !defined(_MSC_VER) || _MSC_VER < 1400 +#elif !defined(_MSC_VER) || RT_VER < 80 #define stati64 _stati64 #define _stati64(path, st) rb_w32_stati64(path, st) #else #define stati64 _stat64 #define _stat64(path, st) rb_w32_stati64(path, st) +#define _fstati64 _fstat64 #endif #else #define stat(path,st) rb_w32_stat(path,st) @@ -190,6 +191,7 @@ extern DWORD rb_w32_osid(void); extern int rb_w32_stat(const char *, struct stat *); extern int rb_w32_fstat(int, struct stat *); #endif +#define access(path,mode) rb_w32_access(path,mode) #define strcasecmp _stricmp #define strncasecmp _strnicmp @@ -277,6 +279,7 @@ extern int rb_w32_mkdir(const char *, int); extern int rb_w32_rmdir(const char *); extern int rb_w32_unlink(const char *); extern int rb_w32_stati64(const char *, struct stati64 *); +extern int rb_w32_access(const char *, int); #ifdef __BORLANDC__ extern int rb_w32_fstati64(int, struct stati64 *); @@ -291,15 +294,19 @@ extern FILE *rb_w32_fsopen(const char *, const char *, int); #ifndef isnan #define isnan(x) _isnan(x) #endif -#ifndef finite -#define finite(x) _finite(x) -#endif +static inline int +finite(double x) +{ + return _finite(x); +} #ifndef copysign #define copysign(a, b) _copysign(a, b) #endif -#ifndef scalb -#define scalb(a, b) _scalb(a, b) -#endif +static inline double +scalb(double a, long b) +{ + return _scalb(a, b); +} #endif #if !defined S_IFIFO && defined _S_IFIFO diff --git a/insns.def b/insns.def index 4acbcef1cb9a23..49522974dc9db7 100644 --- a/insns.def +++ b/insns.def @@ -583,7 +583,7 @@ newhash (...) (VALUE val) // inc += 1 - num; { - int i; + rb_num_t i; val = rb_hash_new(); for (i = num; i > 0; i -= 2) { @@ -982,8 +982,8 @@ send const rb_method_entry_t *me; VALUE recv, klass; rb_block_t *blockptr = 0; - rb_num_t num = caller_setup_args(th, GET_CFP(), op_flag, (int)op_argc, - (rb_iseq_t *)blockiseq, &blockptr); + int num = caller_setup_args(th, GET_CFP(), op_flag, (int)op_argc, + (rb_iseq_t *)blockiseq, &blockptr); rb_num_t flag = op_flag; ID id = op_id; @@ -1008,8 +1008,8 @@ invokesuper (VALUE val) // inc += - (int)(op_argc + ((op_flag & VM_CALL_ARGS_BLOCKARG_BIT) ? 1 : 0)); { rb_block_t *blockptr = !(op_flag & VM_CALL_ARGS_BLOCKARG_BIT) ? GET_BLOCK_PTR() : 0; - rb_num_t num = caller_setup_args(th, GET_CFP(), op_flag, - (int)op_argc, blockiseq, &blockptr); + int num = caller_setup_args(th, GET_CFP(), op_flag, + (int)op_argc, blockiseq, &blockptr); VALUE recv, klass; ID id; VALUE flag = VM_CALL_SUPER_BIT | VM_CALL_FCALL_BIT; @@ -1174,7 +1174,7 @@ getinlinecache (VALUE val) { if (ic->ic_vmstat == GET_VM_STATE_VERSION()) { - val = ic->ic_value; + val = ic->ic_value.value; JUMP(dst); } else { @@ -1195,12 +1195,12 @@ onceinlinecache (VALUE val) { if (ic->ic_vmstat) { - val = ic->ic_value; + val = ic->ic_value.value; JUMP(dst); } else { /* none */ - ic->ic_value = Qundef; + ic->ic_value.value = Qundef; val = Qnil; } } @@ -1218,10 +1218,10 @@ setinlinecache { IC ic = GET_CONST_INLINE_CACHE(dst); - if (ic->ic_value == Qundef) { + if (ic->ic_value.value == Qundef) { rb_ary_push(GET_ISEQ()->mark_ary, val); } - ic->ic_value = val; + ic->ic_value.value = val; ic->ic_vmstat = GET_VM_STATE_VERSION() - ruby_vm_const_missing_count; ruby_vm_const_missing_count = 0; } @@ -1247,10 +1247,10 @@ opt_case_dispatch } } else { - struct opt_case_dispatch_i_arg arg = { - key, -1 - }; + struct opt_case_dispatch_i_arg arg; + arg.obj = key; + arg.label = -1; st_foreach(RHASH_TBL(hash), opt_case_dispatch_i, (st_data_t)&arg); if (arg.label != -1) { diff --git a/io.c b/io.c index 90fa2339a73981..643455eca50179 100644 --- a/io.c +++ b/io.c @@ -1062,7 +1062,7 @@ rb_io_seek(VALUE io, VALUE offset, int whence) /* * call-seq: - * ios.seek(amount, whence=SEEK_SET) -> 0 + * ios.seek(amount, whence=IO::SEEK_SET) -> 0 * * Seeks to a given offset anInteger in the stream according to * the value of whence: @@ -1582,17 +1582,22 @@ make_readconv(rb_io_t *fptr, int size) } } -static int -more_char(rb_io_t *fptr) +#define MORE_CHAR_SUSPENDED Qtrue +#define MORE_CHAR_FINISHED Qnil +static VALUE +fill_cbuf(rb_io_t *fptr, int ec_flags) { const unsigned char *ss, *sp, *se; unsigned char *ds, *dp, *de; rb_econv_result_t res; int putbackable; int cbuf_len0; + VALUE exc; + + ec_flags |= ECONV_PARTIAL_INPUT; if (fptr->cbuf_len == fptr->cbuf_capa) - return 0; /* cbuf full */ + return MORE_CHAR_SUSPENDED; /* cbuf full */ if (fptr->cbuf_len == 0) fptr->cbuf_off = 0; else if (fptr->cbuf_off + fptr->cbuf_len == fptr->cbuf_capa) { @@ -1607,7 +1612,7 @@ more_char(rb_io_t *fptr) se = sp + fptr->rbuf_len; ds = dp = (unsigned char *)fptr->cbuf + fptr->cbuf_off + fptr->cbuf_len; de = (unsigned char *)fptr->cbuf + fptr->cbuf_capa; - res = rb_econv_convert(fptr->readconv, &sp, se, &dp, de, ECONV_PARTIAL_INPUT|ECONV_AFTER_OUTPUT); + res = rb_econv_convert(fptr->readconv, &sp, se, &dp, de, ec_flags); fptr->rbuf_off += (int)(sp - ss); fptr->rbuf_len -= (int)(sp - ss); fptr->cbuf_len += (int)(dp - ds); @@ -1619,14 +1624,15 @@ more_char(rb_io_t *fptr) fptr->rbuf_len += putbackable; } - rb_econv_check_error(fptr->readconv); + exc = rb_econv_make_exception(fptr->readconv); + if (!NIL_P(exc)) + return exc; if (cbuf_len0 != fptr->cbuf_len) - return 0; + return MORE_CHAR_SUSPENDED; if (res == econv_finished) { - clear_readconv(fptr); - return -1; + return MORE_CHAR_FINISHED; } if (res == econv_source_buffer_empty) { @@ -1645,6 +1651,16 @@ more_char(rb_io_t *fptr) } } +static VALUE +more_char(rb_io_t *fptr) +{ + VALUE v; + v = fill_cbuf(fptr, ECONV_AFTER_OUTPUT); + if (v != MORE_CHAR_SUSPENDED && v != MORE_CHAR_FINISHED) + rb_exc_raise(v); + return v; +} + static VALUE io_shift_cbuf(rb_io_t *fptr, int len, VALUE *strp) { @@ -1666,7 +1682,7 @@ io_shift_cbuf(rb_io_t *fptr, int len, VALUE *strp) /* xxx: set coderange */ if (fptr->cbuf_len == 0) fptr->cbuf_off = 0; - if (fptr->cbuf_off < fptr->cbuf_capa/2) { + else if (fptr->cbuf_capa/2 < fptr->cbuf_off) { memmove(fptr->cbuf, fptr->cbuf+fptr->cbuf_off, fptr->cbuf_len); fptr->cbuf_off = 0; } @@ -1687,10 +1703,19 @@ read_all(rb_io_t *fptr, long siz, VALUE str) else rb_str_set_len(str, 0); make_readconv(fptr, 0); while (1) { + VALUE v; if (fptr->cbuf_len) { io_shift_cbuf(fptr, fptr->cbuf_len, &str); } - if (more_char(fptr) == -1) { + v = fill_cbuf(fptr, 0); + if (v != MORE_CHAR_SUSPENDED && v != MORE_CHAR_FINISHED) { + if (fptr->cbuf_len) { + io_shift_cbuf(fptr, fptr->cbuf_len, &str); + } + rb_exc_raise(v); + } + if (v == MORE_CHAR_FINISHED) { + clear_readconv(fptr); return io_enc_str(str, fptr); } } @@ -1717,7 +1742,7 @@ read_all(rb_io_t *fptr, long siz, VALUE str) } bytes += n; if (cr != ENC_CODERANGE_BROKEN) - pos = rb_str_coderange_scan_restartable(RSTRING_PTR(str) + pos, RSTRING_PTR(str) + bytes, enc, &cr); + pos += rb_str_coderange_scan_restartable(RSTRING_PTR(str) + pos, RSTRING_PTR(str) + bytes, enc, &cr); if (bytes < siz) break; siz += BUFSIZ; rb_str_resize(str, siz); @@ -2171,7 +2196,8 @@ appendline(rb_io_t *fptr, int delim, VALUE *strp, long *lp) return (unsigned char)RSTRING_PTR(str)[RSTRING_LEN(str)-1]; } } - } while (more_char(fptr) != -1); + } while (more_char(fptr) != MORE_CHAR_FINISHED); + clear_readconv(fptr); *lp = limit; return EOF; } @@ -2684,7 +2710,8 @@ io_getc(rb_io_t *fptr, rb_encoding *enc) } } - if (more_char(fptr) == -1) { + if (more_char(fptr) == MORE_CHAR_FINISHED) { + clear_readconv(fptr); if (fptr->cbuf_len == 0) return Qnil; /* return an incomplete character just before EOF */ @@ -2819,7 +2846,8 @@ rb_io_each_codepoint(VALUE io) rb_raise(rb_eIOError, "too long character"); } } - if (more_char(fptr) == -1) { + if (more_char(fptr) == MORE_CHAR_FINISHED) { + clear_readconv(fptr); /* ignore an incomplete character before EOF */ return io; } @@ -3686,7 +3714,7 @@ rb_io_close_write(VALUE io) /* * call-seq: - * ios.sysseek(offset, whence=SEEK_SET) => integer + * ios.sysseek(offset, whence=IO::SEEK_SET) => integer * * Seeks to a given offset in the stream according to the value * of whence (see IO#seek for values of @@ -4143,8 +4171,10 @@ parse_mode_enc(const char *estr, rb_encoding **enc_p, rb_encoding **enc2_p) if (len == 0 || len > ENCODING_MAXNAMELEN) idx = -1; else { - if (io_encname_bom_p(estr, len)) + if (io_encname_bom_p(estr, len)) { estr += 4; + len -= 4; + } memcpy(encname, estr, len); encname[len] = '\0'; estr = encname; @@ -4155,6 +4185,7 @@ parse_mode_enc(const char *estr, rb_encoding **enc_p, rb_encoding **enc2_p) long len = strlen(estr); if (io_encname_bom_p(estr, len)) { estr += 4; + len -= 4; memcpy(encname, estr, len); encname[len] = '\0'; estr = encname; @@ -5157,6 +5188,7 @@ pop_last_hash(int *argc_p, VALUE *argv) if (*argc_p == 0) return Qnil; last = argv[*argc_p-1]; + if (NIL_P(last)) return Qnil; tmp = rb_check_convert_type(last, T_HASH, "Hash", "to_hash"); if (NIL_P(tmp)) return Qnil; @@ -5307,25 +5339,6 @@ rb_scan_open_args(int argc, VALUE *argv, opt = pop_last_hash(&argc, argv); rb_scan_args(argc, argv, "12", &fname, &vmode, &vperm); FilePathValue(fname); -#if defined __APPLE__ - { - static rb_encoding *fs_encoding; - rb_encoding *fname_encoding = rb_enc_get(fname); - if (!fs_encoding) - fs_encoding = rb_filesystem_encoding(); - if (rb_usascii_encoding() != fname_encoding - && rb_ascii8bit_encoding() != fname_encoding -#if defined __APPLE__ - && rb_utf8_encoding() != fname_encoding -#endif - && fs_encoding != fname_encoding) { - static VALUE fs_enc; - if (!fs_enc) - fs_enc = rb_enc_from_encoding(fs_encoding); - fname = rb_str_encode(fname, fs_enc, 0, Qnil); - } - } -#endif rb_io_extract_modeenc(&vmode, &vperm, opt, &oflags, &fmode, convconfig_p); @@ -5635,7 +5648,7 @@ io_reopen(VALUE io, VALUE nfile) nfile = rb_io_get_io(nfile); if (rb_safe_level() >= 4 && - (!OBJ_UNTRUSTED(io) || !OBJ_UNTRUSTED(nfile))) { + (!OBJ_UNTRUSTED(io) || !OBJ_UNTRUSTED(nfile))) { rb_raise(rb_eSecurityError, "Insecure: can't reopen"); } GetOpenFile(io, fptr); @@ -5652,13 +5665,6 @@ io_reopen(VALUE io, VALUE nfile) rb_io_fmode_modestr(orig->mode)); } } - if (orig->mode & FMODE_READABLE) { - pos = io_tell(orig); - } - if (orig->mode & FMODE_WRITABLE) { - if (io_fflush(orig) < 0) - rb_sys_fail(0); - } if (fptr->mode & FMODE_WRITABLE) { if (io_fflush(fptr) < 0) rb_sys_fail(0); @@ -5666,6 +5672,13 @@ io_reopen(VALUE io, VALUE nfile) else { io_tell(fptr); } + if (orig->mode & FMODE_READABLE) { + pos = io_tell(orig); + } + if (orig->mode & FMODE_WRITABLE) { + if (io_fflush(orig) < 0) + rb_sys_fail(0); + } /* copy rb_io_t structure */ fptr->mode = orig->mode | (fptr->mode & FMODE_PREP); @@ -5682,20 +5695,17 @@ io_reopen(VALUE io, VALUE nfile) fd = fptr->fd; fd2 = orig->fd; if (fd != fd2) { - if (IS_PREP_STDIO(fptr)) { - /* need to keep stdio objects */ + if (IS_PREP_STDIO(fptr) || fd <= 2 || !fptr->stdio_file) { + /* need to keep FILE objects of stdin, stdout and stderr */ if (dup2(fd2, fd) < 0) rb_sys_fail_path(orig->pathv); } else { - if (fptr->stdio_file) - fclose(fptr->stdio_file); - else - close(fptr->fd); + fclose(fptr->stdio_file); fptr->stdio_file = 0; fptr->fd = -1; - if (dup2(fd2, fd) < 0) - rb_sys_fail_path(orig->pathv); + if (dup2(fd2, fd) < 0) + rb_sys_fail_path(orig->pathv); fptr->fd = fd; } rb_thread_fd_close(fd); @@ -6067,12 +6077,17 @@ rb_io_puts(int argc, VALUE *argv, VALUE out) return Qnil; } for (i=0; iIO object (a stream) for the given * IO object or integer file descriptor and mode - * string. See also IO#fileno and + * string. See also IO.sysopen and * IO.for_fd. * * === Parameters * fd:: numeric file descriptor * mode:: file mode. a string or an integer - * opt:: hash for specifiying mode by name. + * opt:: hash for specifying mode by name. * * ==== Mode * When mode is an integer it must be combination of @@ -6332,7 +6347,8 @@ rb_io_stdio_file(rb_io_t *fptr) * * === Example1 * - * a = IO.new(2,"w") # '2' is standard error + * fd = IO.sysopen("/dev/tty", "w") + * a = IO.new(fd,"w") * $stderr.puts "Hello" * a.puts "World" * @@ -6342,13 +6358,18 @@ rb_io_stdio_file(rb_io_t *fptr) * World * * === Example2 - * io = IO.new(2, mode: 'w:UTF-16LE', cr_newline: true) + * + * require 'fcntl' + * + * fd = STDERR.fcntl(Fcntl::F_DUPFD) + * io = IO.new(fd, mode: 'w:UTF-16LE', cr_newline: true) * io.puts "Hello, World!" * - * io = IO.new(2, mode: 'w', cr_newline: true, external_encoding: Encoding::UTF_16LE) + * fd = STDERR.fcntl(Fcntl::F_DUPFD) + * io = IO.new(fd, mode: 'w', cr_newline: true, external_encoding: Encoding::UTF_16LE) * io.puts "Hello, World!" * - * both of aboves print "Hello, World!" in UTF-16LE to standard error output with + * both of above print "Hello, World!" in UTF-16LE to standard error output with * converting EOL generated by puts to CR. */ @@ -7232,6 +7253,11 @@ io_cntl(int fd, unsigned long cmd, long narg, int io_p) # else retval = io_p?ioctl(fd, cmd, narg):fcntl(fd, (int)cmd, narg); # endif +# if defined(F_DUPFD) + if (!io_p && retval != -1 && cmd == F_DUPFD) { + UPDATE_MAXFD(retval); + } +# endif #else if (!io_p) { rb_notimplement(); @@ -7495,8 +7521,7 @@ io_encoding_set(rb_io_t *fptr, VALUE v1, VALUE v2, VALUE opt) enc2 = rb_to_encoding(v1); tmp = rb_check_string_type(v2); if (!NIL_P(tmp)) { - char *p = StringValueCStr(tmp); - if (*p == '-' && *(p+1) == '\0') { + if (RSTRING_LEN(tmp) == 1 && RSTRING_PTR(tmp)[0] == '-') { /* Special case - "-" => no transcoding */ enc = enc2; enc2 = NULL; @@ -7521,8 +7546,8 @@ io_encoding_set(rb_io_t *fptr, VALUE v1, VALUE v2, VALUE opt) } else { tmp = rb_check_string_type(v1); - if (!NIL_P(tmp)) { - parse_mode_enc(StringValueCStr(tmp), &enc, &enc2); + if (!NIL_P(tmp) && rb_enc_asciicompat(rb_enc_get(tmp))) { + parse_mode_enc(RSTRING_PTR(tmp), &enc, &enc2); ecflags = rb_econv_prepare_opts(opt, &ecopts); } else { @@ -8628,7 +8653,7 @@ argf_tell(VALUE argf) /* * call-seq: - * ARGF.seek(amount, whence=SEEK_SET) -> 0 + * ARGF.seek(amount, whence=IO::SEEK_SET) -> 0 * * Seeks to offset _amount_ (an +Integer+) in the +ARGF+ stream according to * the value of _whence_. See +IO#seek+ for further details. @@ -9099,7 +9124,7 @@ argf_readbyte(VALUE argf) * Returns an enumerator which iterates over each line (separated by _sep_, * which defaults to your platform's newline character) of each file in * +ARGV+. If a block is supplied, each line in turn will be yielded to the - * block. The optional _limit_ argument is a +Fixnum+ specifying the maximumn + * block. The optional _limit_ argument is a +Fixnum+ specifying the maximum * length of each line; longer lines will be split according to this limit. * * This method allows you to treat the files supplied on the command line as @@ -9400,7 +9425,7 @@ opt_i_get(ID id, VALUE *var) * * Sets the filename extension for inplace editing mode to the given String. * Each file being edited has this value appended to its filename. The - * modifed file is saved under this new name. + * modified file is saved under this new name. * * For example: * @@ -9411,7 +9436,7 @@ opt_i_get(ID id, VALUE *var) * print line.sub("foo","bar") * end * - * Each line of _file.txt_ has the first occurence of "foo" replaced with + * Each line of _file.txt_ has the first occurrence of "foo" replaced with * "bar", then the new line is written out to _file.txt.bak_. */ static VALUE @@ -9683,7 +9708,7 @@ Init_IO(void) rb_output_fs = Qnil; rb_define_hooked_variable("$,", &rb_output_fs, 0, rb_str_setter); - rb_rs = rb_default_rs = rb_str_new2("\n"); + rb_rs = rb_default_rs = rb_usascii_str_new2("\n"); rb_gc_register_mark_object(rb_default_rs); rb_output_rs = Qnil; OBJ_FREEZE(rb_default_rs); /* avoid modifying RS_default */ @@ -9897,7 +9922,7 @@ Init_IO(void) /* truncate size to 0 */ rb_file_const("TRUNC", INT2FIX(O_TRUNC)); #ifdef O_NOCTTY - /* not to make opened IO the controling terminal device */ + /* not to make opened IO the controlling terminal device */ rb_file_const("NOCTTY", INT2FIX(O_NOCTTY)); #endif #ifndef O_BINARY diff --git a/iseq.c b/iseq.c index 680ddd1a06a7de..1f00132c74c338 100644 --- a/iseq.c +++ b/iseq.c @@ -11,7 +11,7 @@ #include "ruby/ruby.h" -/* #define MARK_FREE_DEBUG 1 */ +/* #define RUBY_MARK_FREE_DEBUG 1 */ #include "gc.h" #include "vm_core.h" #include "iseq.h" @@ -63,10 +63,12 @@ iseq_free(void *ptr) if (ptr) { iseq = ptr; if (!iseq->orig) { - /* It's possible that strings are freed - * GC_INFO("%s @ %s\n", RSTRING_PTR(iseq->name), - * RSTRING_PTR(iseq->filename)); - */ + /* It's possible that strings are freed */ + if (0) { + RUBY_GC_INFO("%s @ %s\n", RSTRING_PTR(iseq->name), + RSTRING_PTR(iseq->filename)); + } + if (iseq->iseq != iseq->iseq_encoded) { RUBY_FREE_UNLESS_NULL(iseq->iseq_encoded); } @@ -218,7 +220,8 @@ prepare_iseq_build(rb_iseq_t *iseq, iseq->filename = filename; iseq->line_no = line_no; iseq->defined_method_id = 0; - iseq->mark_ary = rb_ary_new(); + iseq->mark_ary = rb_ary_tmp_new(3); + OBJ_UNTRUST(iseq->mark_ary); RBASIC(iseq->mark_ary)->klass = 0; iseq->type = type; @@ -249,6 +252,7 @@ prepare_iseq_build(rb_iseq_t *iseq, iseq->compile_data->storage_head->buff = (char *)(&iseq->compile_data->storage_head->buff + 1); iseq->compile_data->option = option; + iseq->compile_data->last_coverable_line = -1; set_relation(iseq, parent); @@ -517,7 +521,7 @@ rb_iseq_load(VALUE data, VALUE parent, VALUE opt) } static NODE * -compile_string(VALUE str, const char *file, int line) +parse_string(VALUE str, const char *file, int line) { VALUE parser = rb_parser_new(); NODE *node = rb_parser_compile_string(parser, file, str, line); @@ -534,7 +538,7 @@ rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE line, VALUE opt) rb_compile_option_t option; const char *fn = StringValueCStr(file); int ln = NUM2INT(line); - NODE *node = compile_string(StringValue(src), fn, ln); + NODE *node = parse_string(StringValue(src), fn, ln); rb_thread_t *th = GET_THREAD(); make_compile_option(&option, opt); @@ -710,8 +714,8 @@ find_prev_line_no(rb_iseq_t *iseqdat, unsigned long pos) static VALUE insn_operand_intern(rb_iseq_t *iseq, - int insn, int op_no, VALUE op, - int len, int pos, VALUE *pnop, VALUE child) + VALUE insn, int op_no, VALUE op, + int len, size_t pos, VALUE *pnop, VALUE child) { const char *types = insn_op_types(insn); char type = types[op_no]; @@ -729,7 +733,7 @@ insn_operand_intern(rb_iseq_t *iseq, case TS_LINDEX: { rb_iseq_t *ip = iseq->local_iseq; - int lidx = ip->local_size - op; + int lidx = ip->local_size - (int)op; const char *name = rb_id2name(ip->local_table[lidx]); if (name) { @@ -743,7 +747,7 @@ insn_operand_intern(rb_iseq_t *iseq, case TS_DINDEX:{ if (insn == BIN(getdynamic) || insn == BIN(setdynamic)) { rb_iseq_t *ip = iseq; - int level = *pnop, i; + VALUE level = *pnop, i; const char *name; for (i = 0; i < level; i++) { ip = ip->parent_iseq; @@ -814,11 +818,11 @@ insn_operand_intern(rb_iseq_t *iseq, * Disassemble a instruction * Iseq -> Iseq inspect object */ -VALUE -rb_iseq_disasm_insn(VALUE ret, VALUE *iseq, int pos, +int +rb_iseq_disasm_insn(VALUE ret, VALUE *iseq, size_t pos, rb_iseq_t *iseqdat, VALUE child) { - int insn = iseq[pos]; + VALUE insn = iseq[pos]; int len = insn_len(insn); int j; const char *types = insn_op_types(insn); @@ -827,10 +831,10 @@ rb_iseq_disasm_insn(VALUE ret, VALUE *iseq, int pos, insn_name_buff = insn_name(insn); if (1) { - rb_str_catf(str, "%04d %-16s ", pos, insn_name_buff); + rb_str_catf(str, "%04"PRIdSIZE" %-16s ", pos, insn_name_buff); } else { - rb_str_catf(str, "%04d %-16.*s ", pos, + rb_str_catf(str, "%04"PRIdSIZE" %-16.*s ", pos, (int)strcspn(insn_name_buff, "_"), insn_name_buff); } @@ -907,6 +911,7 @@ rb_iseq_disasm(VALUE self) int i; long l; ID *tbl; + size_t n; enum {header_minlen = 72}; rb_secure(1); @@ -986,8 +991,8 @@ rb_iseq_disasm(VALUE self) } /* show each line */ - for (i = 0; (size_t)i < size;) { - i += rb_iseq_disasm_insn(str, iseq, i, iseqdat, child); + for (n = 0; n < size;) { + n += rb_iseq_disasm_insn(str, iseq, n, iseqdat, child); } for (i = 0; i < RARRAY_LEN(child); i++) { @@ -1010,6 +1015,15 @@ iseq_s_disasm(VALUE klass, VALUE body) if ((iseq = rb_method_get_iseq(body)) != 0) { ret = rb_iseq_disasm(iseq->self); } + else { + rb_proc_t *proc; + VALUE iseqval; + GetProcPtr(body, proc); + iseqval = proc->block.iseq->self; + if (RUBY_VM_NORMAL_ISEQ_P(iseqval)) { + ret = rb_iseq_disasm(iseqval); + } + } return ret; } @@ -1032,12 +1046,12 @@ ruby_node_name(int node) sym_##name = ID2SYM(rb_intern(#name)) static VALUE -register_label(struct st_table *table, int idx) +register_label(struct st_table *table, unsigned long idx) { VALUE sym; char buff[8 + (sizeof(idx) * CHAR_BIT * 32 / 100)]; - snprintf(buff, sizeof(buff), "label_%u", idx); + snprintf(buff, sizeof(buff), "label_%lu", idx); sym = ID2SYM(rb_intern(buff)); st_insert(table, idx, sym); return sym; @@ -1071,7 +1085,8 @@ cdhash_each(VALUE key, VALUE value, VALUE ary) static VALUE iseq_data_to_ary(rb_iseq_t *iseq) { - int i, pos, line = 0; + long i, pos; + int line = 0; VALUE *seq; VALUE val = rb_ary_new(); @@ -1183,7 +1198,7 @@ iseq_data_to_ary(rb_iseq_t *iseq) for (j=0; jiseq + *seq; + unsigned long idx = nseq - iseq->iseq + *seq; rb_ary_push(ary, register_label(labels_table, idx)); break; } @@ -1229,7 +1244,7 @@ iseq_data_to_ary(rb_iseq_t *iseq) for (i=0; iiseq + pos; + unsigned long idx = nseq - iseq->iseq + pos; rb_ary_store(val, i+1, register_label(labels_table, idx)); @@ -1425,6 +1440,7 @@ rb_iseq_build_for_ruby2cext( iseq->filename = rb_str_new2(filename); iseq->line_no = line_no; iseq->mark_ary = rb_ary_tmp_new(3); + OBJ_UNTRUST(iseq->mark_ary); iseq->self = iseqval; iseq->iseq = ALLOC_N(VALUE, iseq->iseq_size); diff --git a/iseq.h b/iseq.h index 981b1fca0064fc..d09cdd5414ea09 100644 --- a/iseq.h +++ b/iseq.h @@ -32,12 +32,12 @@ struct st_table *ruby_insn_make_insn_table(void); #define ISEQ_TYPE_MAIN INT2FIX(8) #define ISEQ_TYPE_DEFINED_GUARD INT2FIX(9) -#define CATCH_TYPE_RESCUE INT2FIX(1) -#define CATCH_TYPE_ENSURE INT2FIX(2) -#define CATCH_TYPE_RETRY INT2FIX(3) -#define CATCH_TYPE_BREAK INT2FIX(4) -#define CATCH_TYPE_REDO INT2FIX(5) -#define CATCH_TYPE_NEXT INT2FIX(6) +#define CATCH_TYPE_RESCUE ((int)INT2FIX(1)) +#define CATCH_TYPE_ENSURE ((int)INT2FIX(2)) +#define CATCH_TYPE_RETRY ((int)INT2FIX(3)) +#define CATCH_TYPE_BREAK ((int)INT2FIX(4)) +#define CATCH_TYPE_REDO ((int)INT2FIX(5)) +#define CATCH_TYPE_NEXT ((int)INT2FIX(6)) struct iseq_insn_info_entry { unsigned short position; @@ -74,14 +74,15 @@ struct iseq_compile_data { struct iseq_label_data *end_label; struct iseq_label_data *redo_label; VALUE current_block; - VALUE loopval_popped; /* used by NODE_BREAK */ VALUE ensure_node; VALUE for_iseq; struct iseq_compile_data_ensure_node_stack *ensure_node_stack; + int loopval_popped; /* used by NODE_BREAK */ int cached_const; struct iseq_compile_data_storage *storage_head; struct iseq_compile_data_storage *storage_current; int last_line; + int last_coverable_line; int flip_cnt; int label_no; int node_level; diff --git a/lib/cgi/cookie.rb b/lib/cgi/cookie.rb index 68fbc8972cc632..513bd40989f6f7 100644 --- a/lib/cgi/cookie.rb +++ b/lib/cgi/cookie.rb @@ -1,37 +1,38 @@ - # Class representing an HTTP cookie. - # - # In addition to its specific fields and methods, a Cookie instance - # is a delegator to the array of its values. - # - # See RFC 2965. - # - # == Examples of use - # cookie1 = CGI::Cookie::new("name", "value1", "value2", ...) - # cookie1 = CGI::Cookie::new("name" => "name", "value" => "value") - # cookie1 = CGI::Cookie::new('name' => 'name', - # 'value' => ['value1', 'value2', ...], - # 'path' => 'path', # optional - # 'domain' => 'domain', # optional - # 'expires' => Time.now, # optional - # 'secure' => true # optional - # ) - # - # cgi.out("cookie" => [cookie1, cookie2]) { "string" } - # - # name = cookie1.name - # values = cookie1.value - # path = cookie1.path - # domain = cookie1.domain - # expires = cookie1.expires - # secure = cookie1.secure - # - # cookie1.name = 'name' - # cookie1.value = ['value1', 'value2', ...] - # cookie1.path = 'path' - # cookie1.domain = 'domain' - # cookie1.expires = Time.now + 30 - # cookie1.secure = true +# Class representing an HTTP cookie. +# +# In addition to its specific fields and methods, a Cookie instance +# is a delegator to the array of its values. +# +# See RFC 2965. +# +# == Examples of use +# cookie1 = CGI::Cookie::new("name", "value1", "value2", ...) +# cookie1 = CGI::Cookie::new("name" => "name", "value" => "value") +# cookie1 = CGI::Cookie::new('name' => 'name', +# 'value' => ['value1', 'value2', ...], +# 'path' => 'path', # optional +# 'domain' => 'domain', # optional +# 'expires' => Time.now, # optional +# 'secure' => true # optional +# ) +# +# cgi.out("cookie" => [cookie1, cookie2]) { "string" } +# +# name = cookie1.name +# values = cookie1.value +# path = cookie1.path +# domain = cookie1.domain +# expires = cookie1.expires +# secure = cookie1.secure +# +# cookie1.name = 'name' +# cookie1.value = ['value1', 'value2', ...] +# cookie1.path = 'path' +# cookie1.domain = 'domain' +# cookie1.expires = Time.now + 30 +# cookie1.secure = true class CGI + @@accept_charset="UTF-8" unless defined?(@@accept_charset) class Cookie < Array # Create a new CGI::Cookie object. @@ -55,11 +56,10 @@ class Cookie < Array def initialize(name = "", *value) if name.kind_of?(String) @name = name - @value = value %r|^(.*/)|.match(ENV["SCRIPT_NAME"]) @path = ($1 or "") @secure = false - return super(@value) + return super(value) end options = name @@ -68,7 +68,7 @@ def initialize(name = "", *value) end @name = options["name"] - @value = Array(options["value"]) + value = Array(options["value"]) # simple support for IE if options["path"] @path = options["path"] @@ -80,12 +80,20 @@ def initialize(name = "", *value) @expires = options["expires"] @secure = options["secure"] == true ? true : false - super(@value) + super(value) end - attr_accessor("name", "value", "path", "domain", "expires") + attr_accessor("name", "path", "domain", "expires") attr_reader("secure") + def value + self + end + + def value=(val) + replace(Array(val)) + end + # Set whether the Cookie is a secure cookie or not. # # +val+ must be a boolean. @@ -96,7 +104,7 @@ def secure=(val) # Convert the Cookie to its string representation. def to_s - val = @value.kind_of?(String) ? CGI::escape(@value) : @value.collect{|v| CGI::escape(v) }.join("&") + val = collect{|v| CGI::escape(v) }.join("&") buf = "#{@name}=#{val}" buf << "; domain=#{@domain}" if @domain buf << "; path=#{@path}" if @path diff --git a/lib/cgi/core.rb b/lib/cgi/core.rb index 02daf14e50d33a..39306633311d4d 100644 --- a/lib/cgi/core.rb +++ b/lib/cgi/core.rb @@ -555,12 +555,17 @@ def read_from_cmdline %|(offline mode: enter name=value pairs on standard input)\n| ) end - readlines.join(' ').gsub(/\n/, '') - end.gsub(/\\=/, '%3D').gsub(/\\&/, '%26') + array = readlines rescue nil + if not array.nil? + array.join(' ').gsub(/\n/n, '') + else + "" + end + end.gsub(/\\=/n, '%3D').gsub(/\\&/n, '%26') words = Shellwords.shellwords(string) - if words.find{|x| /=/.match(x) } + if words.find{|x| /=/n.match(x) } words.join('&') else words.join('+') diff --git a/lib/cgi/util.rb b/lib/cgi/util.rb index 218bdbdd9a0fd4..42f1336e9fc06b 100644 --- a/lib/cgi/util.rb +++ b/lib/cgi/util.rb @@ -1,4 +1,5 @@ class CGI + @@accept_charset="UTF-8" unless defined?(@@accept_charset) # URL-encode a string. # url_encoded_string = CGI::escape("'Stop!' said Fred") # # => "%27Stop%21%27+said+Fred" @@ -169,7 +170,7 @@ def CGI::rfc1123_date(time) # # # def CGI::pretty(string, shift = " ") - lines = string.gsub(/(?!\A)<(?:.|\n)*?>/, "\n\\0").gsub(/<(?:.|\n)*?>(?!\n)/, "\\0\n") + lines = string.gsub(/(?!\A)<.*?>/m, "\n\\0").gsub(/<.*?>(?!\n)/m, "\\0\n") end_pos = 0 while end_pos = lines.index(/^<\/(\w+)/, end_pos) element = $1.dup diff --git a/lib/csv.rb b/lib/csv.rb index aae94888cdc637..d44e4db744f05f 100644 --- a/lib/csv.rb +++ b/lib/csv.rb @@ -1550,12 +1550,7 @@ def initialize(data, options = Hash.new) # create the IO object we will read from @io = if data.is_a? String then StringIO.new(data) else data end # honor the IO encoding if we can, otherwise default to ASCII-8BIT - @encoding = if @io.respond_to? :internal_encoding - @io.internal_encoding || @io.external_encoding - elsif @io.is_a? StringIO - @io.string.encoding - end - @encoding ||= Encoding.default_internal || Encoding.default_external + @encoding = raw_encoding || Encoding.default_internal || Encoding.default_external # # prepare for building safe regular expressions in the target encoding, # if we can transcode the needed characters @@ -1989,7 +1984,6 @@ def init_separators(options) sample = read_to_char(1024) sample += read_to_char(1) if sample[-1..-1] == encode_str("\r") and not @io.eof? - # try to find a standard separator if sample =~ encode_re("\r\n?|\n") @row_sep = $& @@ -2272,8 +2266,9 @@ def encode_str(*chunks) # def read_to_char(bytes) return "" if @io.eof? - data = @io.read(bytes) + data = read_io(bytes) begin + raise unless data.valid_encoding? encoded = encode_str(data) raise unless encoded.valid_encoding? return encoded @@ -2281,11 +2276,28 @@ def read_to_char(bytes) if @io.eof? or data.size >= bytes + 10 return data else - data += @io.read(1) + data += read_io(1) retry end end end + + private + def raw_encoding + if @io.respond_to? :internal_encoding + @io.internal_encoding || @io.external_encoding + elsif @io.is_a? StringIO + @io.string.encoding + elsif @io.respond_to? :encoding + @io.encoding + else + Encoding::ASCII_8BIT + end + end + + def read_io(bytes) + @io.read(bytes).force_encoding(raw_encoding) + end end # Another name for CSV::instance(). diff --git a/lib/date.rb b/lib/date.rb index 802ce8ec146a55..daa51d8e0ebb3e 100644 --- a/lib/date.rb +++ b/lib/date.rb @@ -194,7 +194,6 @@ # puts secs_to_new_year() require 'date/format' -require 'date/delta' # Class representing a date. # @@ -1337,9 +1336,6 @@ def new_offset(of=0) def + (n) case n when Numeric; return self.class.new!(@ajd + n, @of, @sg) - when Delta - d = n.__send__(:delta) - return (self >> d.imag) + d.real end raise TypeError, 'expected numeric' end @@ -1356,11 +1352,8 @@ def - (x) case x when Numeric; return self.class.new!(@ajd - x, @of, @sg) when Date; return @ajd - x.ajd - when Delta - d = x.__send__(:delta) - return (self << d.imag) - d.real end - raise TypeError, 'expected numeric' + raise TypeError, 'expected numeric or date' end # Compare this date with another date. diff --git a/lib/date/delta.rb b/lib/date/delta.rb index 283faf6ac2e74f..eacfdefc62da22 100644 --- a/lib/date/delta.rb +++ b/lib/date/delta.rb @@ -1,5 +1,6 @@ # delta.rb: Written by Tadayoshi Funaba 2004-2009 +require 'date' require 'date/delta/parser' class Date @@ -398,3 +399,33 @@ def marshal_load(a) end end + +vsave = $VERBOSE +$VERBOSE = false + +class Date + + def + (n) + case n + when Numeric; return self.class.new!(@ajd + n, @of, @sg) + when Delta + d = n.__send__(:delta) + return (self >> d.imag) + d.real + end + raise TypeError, 'expected numeric' + end + + def - (x) + case x + when Numeric; return self.class.new!(@ajd - x, @of, @sg) + when Date; return @ajd - x.ajd + when Delta + d = x.__send__(:delta) + return (self << d.imag) - d.real + end + raise TypeError, 'expected numeric' + end + +end + +$VERBOSE = vsave diff --git a/lib/delegate.rb b/lib/delegate.rb index d0b732aa8d6a59..77804e47ffe5e9 100644 --- a/lib/delegate.rb +++ b/lib/delegate.rb @@ -115,7 +115,7 @@ # implementation, see SimpleDelegator. # class Delegator - [:to_s,:inspect,:=~,:!~,:===].each do |m| + [:to_s,:inspect,:=~,:!~,:===,:<=>].each do |m| undef_method m end @@ -137,18 +137,24 @@ def method_missing(m, *args, &block) target.__send__(m, *args, &block) end rescue Exception - $@.delete_if{|s| %r"\A#{Regexp.quote(__FILE__)}:\d+:in `method_missing'\z"o =~ s} + if i = $@.index{|s| %r"\A#{Regexp.quote(__FILE__)}:\d+:in `method_missing'\z"o =~ s} + $@[0..i] = [] + end ::Kernel::raise end end # - # Checks for a method provided by this the delegate object by fowarding the + # Checks for a method provided by this the delegate object by forwarding the # call through \_\_getobj\_\_. # - def respond_to?(m, include_private = false) - return true if super - return self.__getobj__.respond_to?(m, include_private) + def respond_to_missing?(m, include_private) + r = self.__getobj__.respond_to?(m, include_private) + if r && include_private && !self.__getobj__.respond_to?(m, false) + warn "#{caller(3)[0]}: delegator does not forward private method \##{m}" + return false + end + r end # @@ -196,6 +202,17 @@ def dup new.__setobj__(__getobj__.dup) new end + + # Freeze self and target at once. + def freeze + __getobj__.freeze + super + end + + @delegator_api = self.public_instance_methods + def self.public_api # :nodoc: + @delegator_api + end end # @@ -228,6 +245,17 @@ def __setobj__(obj) raise ArgumentError, "cannot delegate to self" if self.equal?(obj) @delegate_sd_obj = obj end + + def initialize(obj) # :nodoc: + (self.public_methods - Delegator.public_api).each do |m| + class << self + self + end.class_eval do + undef_method m + end + end + super + end end # :stopdoc: @@ -257,7 +285,7 @@ def Delegator.delegating_block(mid) def DelegateClass(superclass) klass = Class.new(Delegator) methods = superclass.public_instance_methods(true) - methods -= ::Delegator.public_instance_methods + methods -= ::Delegator.public_api methods -= [:to_s,:inspect,:=~,:!~,:===] klass.module_eval { def __getobj__ # :nodoc: diff --git a/lib/fileutils.rb b/lib/fileutils.rb index 58e3f1d684bdf2..8c522ced55eb64 100644 --- a/lib/fileutils.rb +++ b/lib/fileutils.rb @@ -977,20 +977,26 @@ def chown_R(user, group, list, options = {}) def fu_get_uid(user) #:nodoc: return nil unless user - user = user.to_s - if /\A\d+\z/ =~ user - then user.to_i - else Etc.getpwnam(user).uid + case user + when Integer + user + when /\A\d+\z/ + user.to_i + else + Etc.getpwnam(user).uid end end private_module_function :fu_get_uid def fu_get_gid(group) #:nodoc: return nil unless group - group = group.to_s - if /\A\d+\z/ =~ group - then group.to_i - else Etc.getgrnam(group).gid + case group + when Integer + group + when /\A\d+\z/ + group.to_i + else + Etc.getgrnam(group).gid end end private_module_function :fu_get_gid diff --git a/lib/gauntlet_rubygems.rb b/lib/gauntlet_rubygems.rb deleted file mode 100644 index f6c48271298278..00000000000000 --- a/lib/gauntlet_rubygems.rb +++ /dev/null @@ -1,50 +0,0 @@ -require 'rubygems' -require 'gauntlet' - -## -# GemGauntlet validates all current gems. Currently these packages are -# borked: -# -# Asami-0.04 : No such file or directory - bin/Asami.rb -# ObjectGraph-1.0.1 : No such file or directory - bin/objectgraph -# evil-ruby-0.1.0 : authors must be Array of Strings -# fresh_cookies-1.0.0 : authors must be Array of Strings -# plugems_deploy-0.2.0 : authors must be Array of Strings -# pmsrb-0.2.0 : authors must be Array of Strings -# pqa-1.6 : authors must be Array of Strings -# rant-0.5.7 : authors must be Array of Strings -# rvsh-0.4.5 : No such file or directory - bin/rvsh -# xen-0.1.2.1 : authors must be Array of Strings - -class GemGauntlet < Gauntlet - def run(name) - warn name - - spec = begin - Gem::Specification.load 'gemspec' - rescue SyntaxError - Gem::Specification.from_yaml File.read('gemspec') - end - spec.validate - - self.data[name] = false - self.dirty = true - rescue SystemCallError, Gem::InvalidSpecificationException => e - self.data[name] = e.message - self.dirty = true - end - - def should_skip?(name) - self.data[name] == false - end - - def report - self.data.sort.reject { |k,v| !v }.each do |k,v| - puts "%-21s: %s" % [k, v] - end - end -end - -gauntlet = GemGauntlet.new -gauntlet.run_the_gauntlet ARGV.shift -gauntlet.report diff --git a/lib/irb/context.rb b/lib/irb/context.rb index a2778f76ab539e..497d7bf6374d0b 100644 --- a/lib/irb/context.rb +++ b/lib/irb/context.rb @@ -35,6 +35,8 @@ def initialize(irb, workspace = nil, input_method = nil, output_method = nil) @load_modules = IRB.conf[:LOAD_MODULES] @use_readline = IRB.conf[:USE_READLINE] + @verbose = IRB.conf[:VERBOSE] + @io = nil self.inspect_mode = IRB.conf[:INSPECT_MODE] self.math_mode = IRB.conf[:MATH_MODE] if IRB.conf[:MATH_MODE] @@ -91,7 +93,6 @@ def initialize(irb, workspace = nil, input_method = nil, output_method = nil) @output_method = StdioOutputMethod.new end - @verbose = IRB.conf[:VERBOSE] @echo = IRB.conf[:ECHO] if @echo.nil? @echo = true @@ -164,8 +165,6 @@ def set_last_value(value) @workspace.evaluate self, "_ = IRB.CurrentContext.last_value" end - attr_reader :irb_name - def prompt_mode=(mode) @prompt_mode = mode pconf = IRB.conf[:PROMPT][mode] diff --git a/lib/irb/ruby-lex.rb b/lib/irb/ruby-lex.rb index b49337c1c6390c..5a6c2894fb8bed 100644 --- a/lib/irb/ruby-lex.rb +++ b/lib/irb/ruby-lex.rb @@ -705,7 +705,7 @@ def lex_int2 @OP.def_rule('@') do |op, io| - if peek(0) =~ /[\w_@]/ + if peek(0) =~ /[\w@]/ ungetc identify_identifier else diff --git a/lib/logger.rb b/lib/logger.rb index 07699e7017d7a6..6c33f7b3be6127 100644 --- a/lib/logger.rb +++ b/lib/logger.rb @@ -1,11 +1,5 @@ # logger.rb - simple logging utility -# Copyright (C) 2000-2003, 2005 NAKAMURA, Hiroshi . - -require 'monitor' - -# = logger.rb -# -# Simple logging utility. +# Copyright (C) 2000-2003, 2005, 2008 NAKAMURA, Hiroshi . # # Author:: NAKAMURA, Hiroshi # Documentation:: NAKAMURA, Hiroshi and Gavin Sinclair @@ -15,10 +9,11 @@ # Revision:: $Id$ # # See Logger for documentation. -# -# +require 'monitor' + + # == Description # # The Logger class provides a simple but sophisticated logging utility that @@ -180,7 +175,7 @@ class Logger - VERSION = "1.2.6" + VERSION = "1.2.7" id, name, rev = %w$Id$ if name name = name.chomp(",v") @@ -191,7 +186,7 @@ class Logger ProgName = "#{name}/#{rev}" class Error < RuntimeError; end - class ShiftingError < Error; end + class ShiftingError < Error; end # not used after 1.2.7. just for compat. # Logging severity. module Severity @@ -334,10 +329,10 @@ def add(severity, message = nil, progname = nil, &block) progname ||= @progname if message.nil? if block_given? - message = yield + message = yield else - message = progname - progname = @progname + message = progname + progname = @progname end end @logdev.write( @@ -499,32 +494,44 @@ def initialize(log = nil, opt = {}) @dev = @filename = @shift_age = @shift_size = nil @mutex = LogDeviceMutex.new if log.respond_to?(:write) and log.respond_to?(:close) - @dev = log + @dev = log else - @dev = open_logfile(log) - @dev.sync = true - @filename = log - @shift_age = opt[:shift_age] || 7 - @shift_size = opt[:shift_size] || 1048576 + @dev = open_logfile(log) + @dev.sync = true + @filename = log + @shift_age = opt[:shift_age] || 7 + @shift_size = opt[:shift_size] || 1048576 end end def write(message) - @mutex.synchronize do - if @shift_age and @dev.respond_to?(:stat) + begin + @mutex.synchronize do + if @shift_age and @dev.respond_to?(:stat) + begin + check_shift_log + rescue + warn("log shifting failed. #{$!}") + end + end begin - check_shift_log + @dev.write(message) rescue - raise Logger::ShiftingError.new("Shifting failed. #{$!}") + warn("log writing failed. #{$!}") end end - @dev.write(message) + rescue Exception => ignored + warn("log writing failed. #{ignored}") end end def close - @mutex.synchronize do - @dev.close + begin + @mutex.synchronize do + @dev.close rescue nil + end + rescue Exception => ignored + @dev.close rescue nil end end @@ -532,9 +539,9 @@ def close def open_logfile(filename) if (FileTest.exist?(filename)) - open(filename, (File::WRONLY | File::APPEND)) + open(filename, (File::WRONLY | File::APPEND)) else - create_logfile(filename) + create_logfile(filename) end end @@ -547,8 +554,8 @@ def create_logfile(filename) def add_log_header(file) file.write( - "# Logfile created on %s by %s\n" % [Time.now.to_s, Logger::ProgName] - ) + "# Logfile created on %s by %s\n" % [Time.now.to_s, Logger::ProgName] + ) end SiD = 24 * 60 * 60 @@ -561,8 +568,9 @@ def check_shift_log end else now = Time.now - if @dev.stat.mtime <= previous_period_end(now) - shift_log_period(now) + period_end = previous_period_end(now) + if @dev.stat.mtime <= period_end + shift_log_period(period_end) end end end @@ -573,19 +581,26 @@ def shift_log_age File.rename("#{@filename}.#{i}", "#{@filename}.#{i+1}") end end - @dev.close + @dev.close rescue nil File.rename("#{@filename}", "#{@filename}.0") @dev = create_logfile(@filename) return true end - def shift_log_period(now) - postfix = previous_period_end(now).strftime("%Y%m%d") # YYYYMMDD + def shift_log_period(period_end) + postfix = period_end.strftime("%Y%m%d") # YYYYMMDD age_file = "#{@filename}.#{postfix}" if FileTest.exist?(age_file) - raise RuntimeError.new("'#{ age_file }' already exists.") + # try to avoid filename crash caused by Timestamp change. + idx = 0 + # .99 can be overriden; avoid too much file search with 'loop do' + while idx < 100 + idx += 1 + age_file = "#{@filename}.#{postfix}.#{idx}" + break unless FileTest.exist?(age_file) + end end - @dev.close + @dev.close rescue nil File.rename("#{@filename}", age_file) @dev = create_logfile(@filename) return true @@ -672,12 +687,12 @@ def initialize(appname = nil) def start status = -1 begin - log(INFO, "Start of #{ @appname }.") - status = run + log(INFO, "Start of #{ @appname }.") + status = run rescue - log(FATAL, "Detected an exception. Stopping ... #{$!} (#{$!.class})\n" << $@.join("\n")) + log(FATAL, "Detected an exception. Stopping ... #{$!} (#{$!.class})\n" << $@.join("\n")) ensure - log(INFO, "End of #{ @appname }. (status: #{ status.to_s })") + log(INFO, "End of #{ @appname }. (status: #{ status.to_s })") end status end @@ -692,6 +707,8 @@ def logger # def logger=(logger) @log = logger + @log.progname = @appname + @log.level = @level end # @@ -726,6 +743,7 @@ def log(severity, message = nil, &block) private def run + # TODO: should be an NotImplementedError raise RuntimeError.new('Method run must be defined in the derived class.') end end diff --git a/lib/mathn.rb b/lib/mathn.rb index 57eac113c70c93..f834893f3f2a37 100644 --- a/lib/mathn.rb +++ b/lib/mathn.rb @@ -25,7 +25,7 @@ class Fixnum remove_method :/ alias / quo - alias power! ** unless defined?(0.power!) + alias power! ** unless method_defined? :power! def ** (other) if self < 0 && other.round != other @@ -41,7 +41,7 @@ class Bignum remove_method :/ alias / quo - alias power! ** unless defined?(0.power!) + alias power! ** unless method_defined? :power! def ** (other) if self < 0 && other.round != other diff --git a/lib/matrix.rb b/lib/matrix.rb index 95c827352252e9..3c75751e3755e4 100644 --- a/lib/matrix.rb +++ b/lib/matrix.rb @@ -35,10 +35,9 @@ module ExceptionForMatrix # :nodoc: # arithmetically and algebraically, and determining their mathematical properties (trace, rank, # inverse, determinant). # -# Note that although matrices should theoretically be rectangular, this is not -# enforced by the class. +# Note that matrices must be rectangular, otherwise an ErrDimensionMismatch is raised. # -# Also note that the determinant of integer matrices may be incorrectly calculated unless you +# Also note that the determinant of integer matrices may be approximated unless you # also require 'mathn'. This may be fixed in the future. # # == Method Catalogue @@ -50,7 +49,6 @@ module ExceptionForMatrix # :nodoc: # * Matrix.columns(columns) # * Matrix.diagonal(*values) # * Matrix.scalar(n, value) -# * Matrix.scalar(n, value) # * Matrix.identity(n) # * Matrix.unit(n) # * Matrix.I(n) @@ -109,6 +107,8 @@ class Matrix # instance creations private_class_method :new + attr_reader :rows + protected :rows # # Creates a matrix where each argument is a row. @@ -117,18 +117,27 @@ class Matrix # -1 66 # def Matrix.[](*rows) - new(:init_rows, rows, false) + Matrix.rows(rows, false) end # # Creates a matrix where +rows+ is an array of arrays, each of which is a row - # to the matrix. If the optional argument +copy+ is false, use the given + # of the matrix. If the optional argument +copy+ is false, use the given # arrays as the internal structure of the matrix without copying. # Matrix.rows([[25, 93], [-1, 66]]) # => 25 93 # -1 66 + # def Matrix.rows(rows, copy = true) - new(:init_rows, rows, copy) + rows = Matrix.convert_to_array(rows) + rows.map! do |row| + Matrix.convert_to_array(row, copy) + end + size = (rows[0] || []).size + rows.each do |row| + Matrix.Raise ErrDimensionMismatch, "element size differs (#{row.size} should be #{size})" unless row.size == size + end + new rows, size end # @@ -137,14 +146,8 @@ def Matrix.rows(rows, copy = true) # => 25 -1 # 93 66 # - # def Matrix.columns(columns) - rows = (0 .. columns[0].size - 1).collect {|i| - (0 .. columns.size - 1).collect {|j| - columns[j][i] - } - } - Matrix.rows(rows, false) + Matrix.rows(columns, false).transpose end # @@ -156,12 +159,12 @@ def Matrix.columns(columns) # def Matrix.diagonal(*values) size = values.size - rows = (0 .. size - 1).collect {|j| + rows = (0 ... size).collect {|j| row = Array.new(size).fill(0, 0, size) row[j] = values[j] row } - rows(rows, false) + new rows end # @@ -206,14 +209,8 @@ def Matrix.zero(n) # => 4 5 6 # def Matrix.row_vector(row) - case row - when Vector - Matrix.rows([row.to_a], false) - when Array - Matrix.rows([row.dup], false) - else - Matrix.rows([[row]], false) - end + row = Matrix.convert_to_array(row) + new [row] end # @@ -225,39 +222,50 @@ def Matrix.row_vector(row) # 6 # def Matrix.column_vector(column) - case column - when Vector - Matrix.columns([column.to_a]) - when Array - Matrix.columns([column]) - else - Matrix.columns([[column]]) - end + column = Matrix.convert_to_array(column) + new [column].transpose, 1 end # - # This method is used by the other methods that create matrices, and is of no - # use to general users. + # Creates a empty matrix of +row_size+ x +column_size+. + # +row_size+ or +column_size+ must be 0. + # + # m = Matrix.empty(2, 0) + # m == Matrix[ [], [] ] + # => true + # n = Matrix.empty(0, 3) + # n == Matrix.columns([ [], [], [] ]) + # => true + # m * n + # => Matrix[[0, 0, 0], [0, 0, 0]] # - def initialize(init_method, *argv) - self.send(init_method, *argv) + def Matrix.empty(row_size = 0, column_size = 0) + Matrix.Raise ErrDimensionMismatch if column_size != 0 && row_size != 0 + + new([[]]*row_size, column_size) end - def init_rows(rows, copy) - if copy - @rows = rows.collect{|row| row.dup} - else - @rows = rows - end - self + # + # Matrix.new is private; use Matrix.rows, columns, [], etc... to create. + # + def initialize(rows, column_size = rows[0].size) + # No checking is done at this point. rows must be an Array of Arrays. + # column_size must be the size of the first row, if there is one, + # otherwise it *must* be specified and can be any integer >= 0 + @rows = rows + @column_size = column_size + end + + def new_matrix(rows, column_size = rows[0].size) # :nodoc: + Matrix.send(:new, rows, column_size) # bypass privacy of Matrix.new end - private :init_rows + private :new_matrix # # Returns element (+i+,+j+) of the matrix. That is: row +i+, column +j+. # def [](i, j) - @rows[i][j] + @rows.fetch(i){return nil}[j] end alias element [] alias component [] @@ -277,26 +285,20 @@ def row_size end # - # Returns the number of columns. Note that it is possible to construct a - # matrix with uneven columns (e.g. Matrix[ [1,2,3], [4,5] ]), but this is - # mathematically unsound. This method uses the first row to determine the - # result. + # Returns the number of columns. # - def column_size - @rows[0].size - end + attr_reader :column_size # # Returns row vector number +i+ of the matrix as a Vector (starting at 0 like # an array). When a block is given, the elements of that vector are iterated. # - def row(i) # :yield: e + def row(i, &block) # :yield: e if block_given? - for e in @rows[i] - yield e - end + @rows.fetch(i){return self}.each(&block) + self else - Vector.elements(@rows[i]) + Vector.elements(@rows.fetch(i){return nil}) end end @@ -307,11 +309,14 @@ def row(i) # :yield: e # def column(j) # :yield: e if block_given? - 0.upto(row_size - 1) do |i| + return self if j >= column_size || j < -column_size + row_size.times do |i| yield @rows[i][j] end + self else - col = (0 .. row_size - 1).collect {|i| + return nil if j >= column_size || j < -column_size + col = (0 ... row_size).collect {|i| @rows[i][j] } Vector.elements(col, false) @@ -325,9 +330,10 @@ def column(j) # :yield: e # => 1 4 # 9 16 # - def collect # :yield: e - rows = @rows.collect{|row| row.collect{|e| yield e}} - Matrix.rows(rows, false) + def collect(&block) # :yield: e + return to_enum(:collect) unless block_given? + rows = @rows.collect{|row| row.collect(&block)} + new_matrix rows, column_size end alias map collect @@ -340,28 +346,39 @@ def collect # :yield: e # => 9 0 0 # 0 5 0 # + # Like Array#[], negative indices count backward from the end of the + # row or column (-1 is the last element). Returns nil if the starting + # row or column is greater than row_size or column_size respectively. + # def minor(*param) case param.size when 2 from_row = param[0].first - size_row = param[0].end - from_row - size_row += 1 unless param[0].exclude_end? + from_row += row_size if from_row < 0 + to_row = param[0].end + to_row += row_size if to_row < 0 + to_row += 1 unless param[0].exclude_end? + size_row = to_row - from_row from_col = param[1].first - size_col = param[1].end - from_col - size_col += 1 unless param[1].exclude_end? + from_col += column_size if from_col < 0 + to_col = param[1].end + to_col += column_size if to_col < 0 + to_col += 1 unless param[1].exclude_end? + size_col = to_col - from_col when 4 - from_row = param[0] - size_row = param[1] - from_col = param[2] - size_col = param[3] + from_row, size_row, from_col, size_col = param + return nil if size_row < 0 || size_col < 0 + from_row += row_size if from_row < 0 + from_col += column_size if from_col < 0 else Matrix.Raise ArgumentError, param.inspect end + return nil if from_row > row_size || from_col > column_size || from_row < 0 || from_col < 0 rows = @rows[from_row, size_row].collect{|row| row[from_col, size_col] } - Matrix.rows(rows, false) + new_matrix rows, column_size - from_col end #-- @@ -383,8 +400,7 @@ def singular? end # - # Returns +true+ is this is a square matrix. See note in column_size about this - # being unreliable, though. + # Returns +true+ is this is a square matrix. # def square? column_size == row_size @@ -399,22 +415,18 @@ def square? # def ==(other) return false unless Matrix === other - - other.compare_by_row_vectors(@rows) + rows == other.rows end + def eql?(other) return false unless Matrix === other - - other.compare_by_row_vectors(@rows, :eql?) + rows.eql? other.rows end - # - # Not really intended for general consumption. - # def compare_by_row_vectors(rows, comparison = :==) return false unless @rows.size == rows.size - 0.upto(@rows.size - 1) do |i| + @rows.size.times do |i| return false unless @rows[i].send(comparison, rows[i]) end true @@ -423,22 +435,17 @@ def compare_by_row_vectors(rows, comparison = :==) # # Returns a clone of the matrix, so that the contents of each do not reference # identical objects. + # There should be no good reason to do this since Matrices are immutable. # def clone - Matrix.rows(@rows) + new_matrix @rows.map{|row| row.dup}, column_size end # # Returns a hash-code for the matrix. # def hash - value = 0 - for row in @rows - for e in row - value ^= e.hash - end - end - return value + @rows.hash end #-- @@ -459,7 +466,7 @@ def *(m) # m is matrix or vector or number e * m } } - return Matrix.rows(rows, false) + return new_matrix rows, column_size when Vector m = Matrix.column_vector(m) r = self * m @@ -467,16 +474,14 @@ def *(m) # m is matrix or vector or number when Matrix Matrix.Raise ErrDimensionMismatch if column_size != m.row_size - rows = (0 .. row_size - 1).collect {|i| - (0 .. m.column_size - 1).collect {|j| - vij = 0 - 0.upto(column_size - 1) do |k| - vij += self[i, k] * m[k, j] + rows = (0 ... row_size).collect {|i| + (0 ... m.column_size).collect {|j| + (0 ... column_size).inject(0) do |vij, k| + vij + self[i, k] * m[k, j] end - vij } } - return Matrix.rows(rows, false) + return new_matrix rows, m.column_size else x, y = m.coerce(self) return x * y @@ -503,12 +508,12 @@ def +(m) Matrix.Raise ErrDimensionMismatch unless row_size == m.row_size and column_size == m.column_size - rows = (0 .. row_size - 1).collect {|i| - (0 .. column_size - 1).collect {|j| + rows = (0 ... row_size).collect {|i| + (0 ... column_size).collect {|j| self[i, j] + m[i, j] } } - Matrix.rows(rows, false) + new_matrix rows, column_size end # @@ -531,12 +536,12 @@ def -(m) Matrix.Raise ErrDimensionMismatch unless row_size == m.row_size and column_size == m.column_size - rows = (0 .. row_size - 1).collect {|i| - (0 .. column_size - 1).collect {|j| + rows = (0 ... row_size).collect {|i| + (0 ... column_size).collect {|j| self[i, j] - m[i, j] } } - Matrix.rows(rows, false) + new_matrix rows, column_size end # @@ -553,12 +558,12 @@ def /(other) e / other } } - return Matrix.rows(rows, false) + return new_matrix rows, column_size when Matrix return self * other.inverse else x, y = other.coerce(self) - rerurn x / y + return x / y end end @@ -578,13 +583,13 @@ def inverse # Not for public consumption? # def inverse_from(src) - size = row_size - 1 + size = row_size a = src.to_a - for k in 0..size + size.times do |k| i = k akk = a[k][k].abs - ((k+1)..size).each do |j| + (k+1 ... size).each do |j| v = a[j][k].abs if v > akk i = j @@ -598,23 +603,23 @@ def inverse_from(src) end akk = a[k][k] - for i in 0 .. size + size.times do |i| next if i == k q = a[i][k].quo(akk) a[i][k] = 0 - for j in (k + 1).. size + (k + 1 ... size).each do |j| a[i][j] -= a[k][j] * q end - for j in 0..size + size.times do |j| @rows[i][j] -= @rows[k][j] * q end end - for j in (k + 1).. size + (k + 1 ... size).each do |j| a[k][j] = a[k][j].quo(akk) end - for j in 0..size + size.times do |j| @rows[k][j] = @rows[k][j].quo(akk) end end @@ -637,18 +642,12 @@ def ** (other) return Matrix.identity(self.column_size) if other == 0 other = -other end - z = x - n = other - 1 - while n != 0 - while (div, mod = n.divmod(2) - mod == 0) - x = x * x - n = div - end - z *= x - n -= 1 + z = nil + loop do + z = z ? z * x : x if other[0] == 1 + return z if (other >>= 1).zero? + x *= x end - z elsif other.kind_of?(Float) || defined?(Rational) && other.kind_of?(Rational) Matrix.Raise ErrOperationNotDefined, "**" else @@ -662,42 +661,39 @@ def ** (other) # # Returns the determinant of the matrix. If the matrix is not square, the - # result is 0. This method's algorism is Gaussian elimination method + # result is 0. This method's algorithm is Gaussian elimination method # and using Numeric#quo(). Beware that using Float values, with their # usual lack of precision, can affect the value returned by this method. Use # Rational values or Matrix#det_e instead if this is important to you. # # Matrix[[7,6], [3,9]].determinant - # => 63.0 + # => 45.0 # def determinant return 0 unless square? - size = row_size - 1 + size = row_size a = to_a det = 1 - k = 0 - loop do + size.times do |k| if (akk = a[k][k]) == 0 - i = k - loop do - return 0 if (ii += 1) > size - break unless a[i][k] == 0 - end + i = (k+1 ... size).find {|i| + a[i][k] != 0 + } + return 0 if i.nil? a[i], a[k] = a[k], a[i] akk = a[k][k] det *= -1 end - for i in k + 1 .. size + (k + 1 ... size).each do |i| q = a[i][k].quo(akk) - (k + 1).upto(size) do |j| + (k + 1 ... size).each do |j| a[i][j] -= a[k][j] * q end end det *= akk - break unless (k += 1) <= size end det end @@ -705,8 +701,8 @@ def determinant # # Returns the determinant of the matrix. If the matrix is not square, the - # result is 0. This method's algorism is Gaussian elimination method. - # This method uses Euclidean algorism. If all elements are integer, + # result is 0. This method's algorithm is Gaussian elimination method. + # This method uses Euclidean algorithm. If all elements are integer, # really exact value. But, if an element is a float, can't return # exact value. # @@ -716,25 +712,23 @@ def determinant def determinant_e return 0 unless square? - size = row_size - 1 + size = row_size a = to_a det = 1 - k = 0 - loop do + size.times do |k| if a[k][k].zero? - i = k - loop do - return 0 if (i += 1) > size - break unless a[i][k].zero? - end + i = (k+1 ... size).find {|i| + a[i][k] != 0 + } + return 0 if i.nil? a[i], a[k] = a[k], a[i] det *= -1 end - for i in (k + 1)..size + (k + 1 ... size).each do |i| q = a[i][k].quo(a[k][k]) - k.upto(size) do |j| + (k ... size).each do |j| a[i][j] -= a[k][j] * q end unless a[i][k].zero? @@ -744,7 +738,6 @@ def determinant_e end end det *= a[k][k] - break unless (k += 1) <= size end det end @@ -769,56 +762,40 @@ def rank a_row_size = row_size end rank = 0 - k = 0 - begin + a_column_size.times do |k| if (akk = a[k][k]) == 0 - i = k - exists = true - loop do - if (i += 1) > a_column_size - 1 - exists = false - break - end - break unless a[i][k] == 0 - end - if exists + i = (k+1 ... a_row_size).find {|i| + a[i][k] != 0 + } + if i a[i], a[k] = a[k], a[i] akk = a[k][k] else - i = k - exists = true - loop do - if (i += 1) > a_row_size - 1 - exists = false - break - end - break unless a[k][i] == 0 - end - if exists - k.upto(a_column_size - 1) do |j| - a[j][k], a[j][i] = a[j][i], a[j][k] - end - akk = a[k][k] - else - next + i = (k+1 ... a_column_size).find {|i| + a[k][i] != 0 + } + next if i.nil? + (k ... a_column_size).each do |j| + a[j][k], a[j][i] = a[j][i], a[j][k] end + akk = a[k][k] end end - for i in (k + 1)..(a_row_size - 1) + (k + 1 ... a_row_size).each do |i| q = a[i][k].quo(akk) - for j in (k + 1)..(a_column_size - 1) + (k + 1... a_column_size).each do |j| a[i][j] -= a[k][j] * q end end rank += 1 - end while (k += 1) <= a_column_size - 1 + end return rank end # # Returns the rank of the matrix. This method uses Euclidean - # algorism. If all elements are integer, really exact value. But, if + # algorithm. If all elements are integer, really exact value. But, if # an element is a float, can't return exact value. # # Matrix[[7,6], [3,9]].rank @@ -829,7 +806,7 @@ def rank_e a_column_size = column_size a_row_size = row_size pi = 0 - (0 ... a_column_size).each do |j| + a_column_size.times do |j| if i = (pi ... a_row_size).find{|i0| !a[i0][j].zero?} if i != pi a[pi], a[i] = a[i], a[pi] @@ -857,11 +834,10 @@ def rank_e # => 16 # def trace - tr = 0 - 0.upto(column_size - 1) do |i| - tr += @rows[i][i] + Matrix.Raise ErrDimensionMismatch unless square? + (0...column_size).inject(0) do |tr, i| + tr + @rows[i][i] end - tr end alias tr trace @@ -876,7 +852,8 @@ def trace # 2 4 6 # def transpose - Matrix.columns(@rows) + return Matrix.empty(column_size, 0) if row_size.zero? + new_matrix @rows.transpose, row_size end alias t transpose @@ -900,27 +877,25 @@ def coerce(other) # Returns an array of the row vectors of the matrix. See Vector. # def row_vectors - rows = (0 .. row_size - 1).collect {|i| + (0 ... row_size).collect {|i| row(i) } - rows end # # Returns an array of the column vectors of the matrix. See Vector. # def column_vectors - columns = (0 .. column_size - 1).collect {|i| + (0 ... column_size).collect {|i| column(i) } - columns end # # Returns an array of arrays that describe the rows of the matrix. # def to_a - @rows.collect{|row| row.collect{|e| e}} + @rows.collect{|row| row.dup} end def elements_to_f @@ -943,16 +918,47 @@ def elements_to_r # Overrides Object#to_s # def to_s - "Matrix[" + @rows.collect{|row| - "[" + row.collect{|e| e.to_s}.join(", ") + "]" - }.join(", ")+"]" + if row_size == 0 || column_size == 0 + "Matrix.empty(#{row_size}, #{column_size})" + else + "Matrix[" + @rows.collect{|row| + "[" + row.collect{|e| e.to_s}.join(", ") + "]" + }.join(", ")+"]" + end end + alias_method :inspect_org, :inspect + # # Overrides Object#inspect # def inspect - "Matrix"+@rows.inspect + if row_size == 0 || column_size == 0 + "Matrix.empty(#{row_size}, #{column_size})" + else + "Matrix#{@rows.inspect}" + end + end + + # + # Converts the obj to an Array. If copy is set to true + # a copy of obj will be made if necessary. + # + def Matrix.convert_to_array(obj, copy = false) + case obj + when Array + copy ? obj.dup : obj + when Vector + obj.to_a + else + begin + converted = obj.to_ary + rescue Exception => e + raise TypeError, "can't convert #{obj.class} into an Array (#{e.message})" + end + raise TypeError, "#{obj.class}#to_ary should return an Array" unless converted.is_a? Array + converted + end end # Private CLASS @@ -1012,7 +1018,7 @@ def / (other) when Vector Scalar.Raise WrongArgType, other.class, "Numeric or Scalar or Matrix" when Matrix - self * other.inverse + self * other.inverse else x, y = other.coerce(self) x.quo(y) @@ -1081,13 +1087,14 @@ class Vector #INSTANCE CREATION private_class_method :new - + attr_reader :elements + protected :elements # # Creates a Vector from a list of elements. # Vector[7, 4, ...] # def Vector.[](*array) - new(:init_elements, array, copy = false) + new Matrix.convert_to_array(array, copy = false) end # @@ -1095,25 +1102,15 @@ def Vector.[](*array) # whether the array itself or a copy is used internally. # def Vector.elements(array, copy = true) - new(:init_elements, array, copy) + new Matrix.convert_to_array(array, copy) end # - # For internal use. + # Vector.new is private; use Vector[] or Vector.elements to create. # - def initialize(method, array, copy) - self.send(method, array, copy) - end - - # - # For internal use. - # - def init_elements(array, copy) - if copy - @elements = array.dup - else - @elements = array - end + def initialize(array) + # No checking is done at this point. + @elements = array end # ACCESSING @@ -1150,7 +1147,8 @@ def size # def each2(v) # :yield: e1, e2 Vector.Raise ErrDimensionMismatch if size != v.size - 0.upto(size - 1) do |i| + return to_enum(:each2) unless block_given? + size.times do |i| yield @elements[i], v[i] end end @@ -1161,7 +1159,8 @@ def each2(v) # :yield: e1, e2 # def collect2(v) # :yield: e1, e2 Vector.Raise ErrDimensionMismatch if size != v.size - (0 .. size - 1).collect do |i| + return to_enum(:collect2) unless block_given? + (0 ... size).collect do |i| yield @elements[i], v[i] end end @@ -1175,18 +1174,14 @@ def collect2(v) # :yield: e1, e2 # def ==(other) return false unless Vector === other - - other.compare_by(@elements) + @elements == other.elements end + def eql?(other) return false unless Vector === other - - other.compare_by(@elements, :eql?) + @elements.eql? other.elements end - # - # For internal use. - # def compare_by(elements, comparison = :==) @elements.send(comparison, elements) end @@ -1284,10 +1279,9 @@ def inner_product(v) # # Like Array#collect. # - def collect # :yield: e - els = @elements.collect {|v| - yield v - } + def collect(&block) # :yield: e + return to_enum(:collect) unless block_given? + els = @elements.collect(&block) Vector.elements(els, false) end alias map collect @@ -1295,10 +1289,9 @@ def collect # :yield: e # # Like Vector#collect2, but returns a Vector instead of an Array. # - def map2(v) # :yield: e1, e2 - els = collect2(v) {|v1, v2| - yield v1, v2 - } + def map2(v, &block) # :yield: e1, e2 + return to_enum(:map2) unless block_given? + els = collect2(v, &block) Vector.elements(els, false) end @@ -1307,11 +1300,7 @@ def map2(v) # :yield: e1, e2 # Vector[5,8,2].r => 9.643650761 # def r - v = 0 - for e in @elements - v += e*e - end - return Math.sqrt(v) + Math.sqrt(@elements.inject(0) {|v, e| v + e*e}) end #-- @@ -1375,6 +1364,5 @@ def inspect end end - # Documentation comments: # - Matrix#coerce and Vector#coerce need to be documented diff --git a/lib/mkmf.rb b/lib/mkmf.rb index 5e9d646e4c208c..895bca0beefe39 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -195,13 +195,13 @@ def quote end def rm_f(*files) - opt = ([files.pop] if Hash === files.last) - FileUtils.rm_f(Dir[*files], *opt) + opt = (Hash === files.last ? [files.pop] : []) + FileUtils.rm_f(Dir[*files.flatten], *opt) end def rm_rf(*files) - opt = ([files.pop] if Hash === files.last) - FileUtils.rm_rf(Dir[*files], *opt) + opt = (Hash === files.last ? [files.pop] : []) + FileUtils.rm_rf(Dir[*files.flatten], *opt) end # Returns time stamp of the +target+ file if it exists and is newer @@ -1123,10 +1123,12 @@ def fmt.%(x) # Internal use only. # def find_executable0(bin, path = nil) - ext = config_string('EXEEXT') + exts = config_string('EXECUTABLE_EXTS') {|s| s.split} || config_string('EXEEXT') {|s| [s]} if File.expand_path(bin) == bin return bin if File.executable?(bin) - ext and File.executable?(file = bin + ext) and return file + if exts + exts.each {|ext| File.executable?(file = bin + ext) and return file} + end return nil end if path ||= ENV['PATH'] @@ -1137,7 +1139,9 @@ def find_executable0(bin, path = nil) file = nil path.each do |dir| return file if File.executable?(file = File.join(dir, bin)) - return file if ext and File.executable?(file << ext) + if exts + exts.each {|ext| File.executable?(ext = file + ext) and return ext} + end end nil end @@ -1264,7 +1268,7 @@ def create_header(header = "extconf.h") for line in $defs case line when /^-D([^=]+)(?:=(.*))?/ - hdr << "#define #$1 #{$2 ? Shellwords.shellwords($2)[0] : 1}\n" + hdr << "#define #$1 #{$2 ? Shellwords.shellwords($2)[0].gsub(/(?=\t+)/, "\\\n") : 1}\n" when /^-U(.*)/ hdr << "#undef #$1\n" end @@ -1272,7 +1276,7 @@ def create_header(header = "extconf.h") hdr << "#endif\n" hdr = hdr.join unless (IO.read(header) == hdr rescue false) - open(header, "w") do |hfile| + open(header, "wb") do |hfile| hfile.write(hdr) end end diff --git a/lib/net/ftp.rb b/lib/net/ftp.rb index 40227b69d80d0d..0bf1fb25ca769a 100644 --- a/lib/net/ftp.rb +++ b/lib/net/ftp.rb @@ -128,10 +128,12 @@ def FTP.open(host, user = nil, passwd = nil, acct = nil) # def initialize(host = nil, user = nil, passwd = nil, acct = nil) super() - @binary = false + @binary = true @passive = false @debug_mode = false @resume = false + @sock = nil + @logged_in = false if host connect(host) if user @@ -143,10 +145,19 @@ def initialize(host = nil, user = nil, passwd = nil, acct = nil) def binary=(newmode) if newmode != @binary @binary = newmode - @binary ? voidcmd("TYPE I") : voidcmd("TYPE A") + send_type_command if @logged_in end end + def send_type_command + if @binary + voidcmd("TYPE I") + else + voidcmd("TYPE A") + end + end + private :send_type_command + def with_binary(newmode) oldmode = binary self.binary = newmode @@ -363,22 +374,6 @@ def transfercmd(cmd, rest_offset = nil) end private :transfercmd - def getaddress - thishost = Socket.gethostname - if not thishost.index(".") - thishost = Socket.gethostbyname(thishost)[0] - end - if ENV.has_key?("LOGNAME") - realuser = ENV["LOGNAME"] - elsif ENV.has_key?("USER") - realuser = ENV["USER"] - else - realuser = "anonymous" - end - return realuser + "@" + thishost - end - private :getaddress - # # Logs in to the remote host. The session must have been previously # connected. If +user+ is the string "anonymous" and the +password+ is @@ -389,7 +384,7 @@ def getaddress # def login(user = "anonymous", passwd = nil, acct = nil) if user == "anonymous" and passwd == nil - passwd = getaddress + passwd = "anonymous@" end resp = "" @@ -408,7 +403,8 @@ def login(user = "anonymous", passwd = nil, acct = nil) raise FTPReplyError, resp end @welcome = resp - self.binary = true + send_type_command + @logged_in = true end # @@ -445,12 +441,7 @@ def retrlines(cmd) # :yield: line loop do line = conn.gets break if line == nil - if line[-2, 2] == CRLF - line = line[0 .. -3] - elsif line[-1] == ?\n - line = line[0 .. -2] - end - yield(line) + yield(line.sub(/\r?\n\z/, ""), !line.match(/\n\z/).nil?) end conn.close voidresp @@ -470,7 +461,7 @@ def storbinary(cmd, file, blocksize, rest_offset = nil, &block) # :yield: data end synchronize do with_binary(true) do - conn = transfercmd(cmd, rest_offset) + conn = transfercmd(cmd) loop do buf = file.read(blocksize) break if buf == nil @@ -544,7 +535,7 @@ def getbinaryfile(remotefile, localfile = File.basename(remotefile), end begin f.binmode if localfile - retrbinary("RETR " + remotefile, blocksize, rest_offset) do |data| + retrbinary("RETR " + remotefile.to_s, blocksize, rest_offset) do |data| f.write(data) if localfile yield(data) if block_given? result.concat(data) if result @@ -570,10 +561,11 @@ def gettextfile(remotefile, localfile = File.basename(remotefile)) # :yield: lin result = "" end begin - retrlines("RETR " + remotefile) do |line| - f.puts(line) if localfile - yield(line) if block_given? - result.concat(line + "\n") if result + retrlines("RETR " + remotefile) do |line, newline| + l = newline ? line + "\n" : line + f.print(l) if localfile + yield(line, newline) if block_given? + result.concat(l) if result end return result ensure @@ -613,7 +605,11 @@ def putbinaryfile(localfile, remotefile = File.basename(localfile), f = open(localfile) begin f.binmode - storbinary("STOR " + remotefile, f, blocksize, rest_offset, &block) + if rest_offset + storbinary("APPE " + remotefile, f, blocksize, rest_offset, &block) + else + storbinary("STOR " + remotefile, f, blocksize, rest_offset, &block) + end ensure f.close end @@ -676,7 +672,7 @@ def nlst(dir = nil) def list(*args, &block) # :yield: line cmd = "LIST" args.each do |arg| - cmd = cmd + " " + arg + cmd = cmd + " " + arg.to_s end if block retrlines(cmd, &block) diff --git a/lib/net/http.rb b/lib/net/http.rb index 272a63b3b740f4..fb8a3cc08b4f2f 100644 --- a/lib/net/http.rb +++ b/lib/net/http.rb @@ -1124,6 +1124,10 @@ def transport_request(req) } end_transport req, res res + rescue => exception + D "Conn close because of error #{exception}" + @socket.close unless @socket.closed? + raise exception end def begin_transport(req) @@ -1297,11 +1301,12 @@ def get_fields(key) # See Hash#fetch def fetch(key, *args, &block) #:yield: +key+ a = @header.fetch(key.downcase, *args, &block) - a.join(', ') + a.kind_of?(Array) ? a.join(', ') : a end # Iterates for each header names and values. def each_header #:yield: +key+, +value+ + block_given? or return enum_for(__method__) @header.each do |k,va| yield k, va.join(', ') end @@ -1311,13 +1316,15 @@ def each_header #:yield: +key+, +value+ # Iterates for each header names. def each_name(&block) #:yield: +key+ + block_given? or return enum_for(__method__) @header.each_key(&block) end alias each_key each_name # Iterates for each capitalized header names. - def each_capitalized_name(&block) #:yield: +key+ + def each_capitalized_name #:yield: +key+ + block_given? or return enum_for(__method__) @header.each_key do |k| yield capitalize(k) end @@ -1325,6 +1332,7 @@ def each_capitalized_name(&block) #:yield: +key+ # Iterates for each header values. def each_value #:yield: +value+ + block_given? or return enum_for(__method__) @header.each_value do |va| yield va.join(', ') end @@ -1347,6 +1355,7 @@ def to_hash # As for #each_header, except the keys are provided in capitalized form. def each_capitalized + block_given? or return enum_for(__method__) @header.each do |k,v| yield capitalize(k), v.join(', ') end @@ -1525,7 +1534,7 @@ def set_form_data(params, sep = '&') alias form_data= set_form_data def encode_kvpair(k, vs) - Array(vs).map {|v| "#{urlencode(k)}=#{urlencode(v.to_s)}" } + Array(vs).map {|v| "#{urlencode(k.to_s)}=#{urlencode(v.to_s)}" } end private :encode_kvpair @@ -2149,13 +2158,20 @@ def response_class(code) end def each_response_header(sock) + key = value = nil while true line = sock.readuntil("\n", true).sub(/\s+\z/, '') break if line.empty? - m = /\A([^:]+):\s*/.match(line) or - raise HTTPBadResponse, 'wrong header line format' - yield m[1], m.post_match + if line[0] == ?\s or line[0] == ?\t and value + value << ' ' unless value.empty? + value << line.strip + else + yield key, value if key + key, value = line.strip.split(/\s*:\s*/, 2) + raise HTTPBadResponse, 'wrong header line format' if value.nil? + end end + yield key, value if key end end diff --git a/lib/net/imap.rb b/lib/net/imap.rb index 8b7529d79dba96..3a8145e03cc0e6 100644 --- a/lib/net/imap.rb +++ b/lib/net/imap.rb @@ -270,6 +270,16 @@ def self.debug=(val) return @@debug = val end + # Returns the max number of flags interned to symbols. + def self.max_flag_count + return @@max_flag_count + end + + # Sets the max number of flags interned to symbols. + def self.max_flag_count=(count) + @@max_flag_count = count + end + # Adds an authenticator for Net::IMAP#authenticate. +auth_type+ # is the type of authentication this authenticator supports # (for instance, "LOGIN"). The +authenticator+ is an object @@ -929,6 +939,7 @@ def self.format_datetime(time) @@debug = false @@authenticators = {} + @@max_flag_count = 10000 # call-seq: # Net::IMAP.new(host, options = {}) @@ -1929,6 +1940,14 @@ def media_subtype end class ResponseParser # :nodoc: + def initialize + @str = nil + @pos = nil + @lex_state = nil + @token = nil + @flag_symbols = {} + end + def parse(str) @str = str @pos = 0 @@ -2939,7 +2958,16 @@ def flag_list if @str.index(/\(([^)]*)\)/ni, @pos) @pos = $~.end(0) return $1.scan(FLAG_REGEXP).collect { |flag, atom| - atom || flag.capitalize.intern + if atom + atom + else + symbol = flag.capitalize.untaint.intern + @flag_symbols[symbol] = true + if @flag_symbols.length > IMAP.max_flag_count + raise FlagCountError, "number of flag symbols exceeded" + end + symbol + end } else parse_error("invalid flag list") @@ -3410,6 +3438,10 @@ class BadResponseError < ResponseError # out due to inactivity. class ByeResponseError < ResponseError end + + # Error raised when too many flags are interned to symbols. + class FlagCountError < Error + end end end diff --git a/lib/net/telnet.rb b/lib/net/telnet.rb index 98285a944bb3a2..f233827a59a52a 100644 --- a/lib/net/telnet.rb +++ b/lib/net/telnet.rb @@ -10,7 +10,6 @@ # require "socket" -require "delegate" require "timeout" require "English" @@ -93,7 +92,7 @@ module Net # of relevant RFCs, see # http://www.omnifarious.org/~hopper/technical/telnet-rfc.html # - class Telnet < SimpleDelegator + class Telnet # :stopdoc: IAC = 255.chr # "\377" # "\xff" # interpret as command @@ -368,7 +367,6 @@ def @dumplog.log_dump(dir, x) # :nodoc: @dumplog.log_dump('#', message) if @options.has_key?("Dump_log") end - super(@sock) end # initialize # The socket the Telnet object is using. Note that this object becomes @@ -681,20 +679,22 @@ def puts(string) def cmd(options) # :yield: recvdata match = @options["Prompt"] time_out = @options["Timeout"] + fail_eof = @options["FailEOF"] if options.kind_of?(Hash) string = options["String"] match = options["Match"] if options.has_key?("Match") time_out = options["Timeout"] if options.has_key?("Timeout") + fail_eof = options["FailEOF"] if options.has_key?("FailEOF") else string = options end self.puts(string) if block_given? - waitfor({"Prompt" => match, "Timeout" => time_out}){|c| yield c } + waitfor({"Prompt" => match, "Timeout" => time_out, "FailEOF" => fail_eof}){|c| yield c } else - waitfor({"Prompt" => match, "Timeout" => time_out}) + waitfor({"Prompt" => match, "Timeout" => time_out, "FailEOF" => fail_eof}) end end diff --git a/lib/open-uri.rb b/lib/open-uri.rb index 2a6c544fe66f0a..bb45d63ae6ed72 100644 --- a/lib/open-uri.rb +++ b/lib/open-uri.rb @@ -465,7 +465,9 @@ def content_type_parse # :nodoc: subtype = $2.downcase parameters = [] $3.scan(/;#{RE_LWS}?(#{RE_TOKEN})#{RE_LWS}?=#{RE_LWS}?(?:(#{RE_TOKEN})|(#{RE_QUOTED_STRING}))/no) {|att, val, qval| - val = qval.gsub(/[\r\n\t !#-\[\]-~\x80-\xff]+|(\\[\x00-\x7f])/n) { $1 ? $1[1,1] : $& } if qval + if qval + val = qval[1...-1].gsub(/[\r\n\t !#-\[\]-~\x80-\xff]+|(\\[\x00-\x7f])/n) { $1 ? $1[1,1] : $& } + end parameters << [att.downcase, val] } ["#{type}/#{subtype}", *parameters] @@ -603,7 +605,7 @@ module OpenRead # # If :progress_proc option is specified, the proc is called with one # argument each time when `open' gets content fragment from network. - # The argument `size' `size' is a accumulated transfered size in bytes. + # The argument `size' `size' is a accumulated transferred size in bytes. # # If two or more transfer is done by HTTP redirection, the procedure # is called only one for a last transfer. @@ -778,8 +780,9 @@ def buffer_open(buf, proxy, options) # :nodoc: end require 'net/ftp' - directories = self.path.split(%r{/}, -1) - directories.shift if directories[0] == '' # strip a field before leading slash + path = self.path + path = path.sub(%r{\A/}, '%2F') # re-encode the beginning slash because uri library decodes it. + directories = path.split(%r{/}, -1) directories.each {|d| d.gsub!(/%([0-9A-Fa-f][0-9A-Fa-f])/) { [$1].pack("H2") } } @@ -800,7 +803,8 @@ def buffer_open(buf, proxy, options) # :nodoc: end # The access sequence is defined by RFC 1738 - ftp = Net::FTP.open(self.host) + ftp = Net::FTP.new + ftp.connect(self.host, self.port) ftp.passive = true if !options[:ftp_active_mode] # todo: extract user/passwd from .netrc. user = 'anonymous' diff --git a/lib/pathname.rb b/lib/pathname.rb index 8af8957c7b38ab..226b0da229716e 100644 --- a/lib/pathname.rb +++ b/lib/pathname.rb @@ -198,7 +198,7 @@ class Pathname TO_PATH = :to_path end - SAME_PATHS = if File::FNM_SYSCASE + SAME_PATHS = if File::FNM_SYSCASE.nonzero? proc {|a, b| a.casecmp(b).zero?} else proc {|a, b| a == b} diff --git a/lib/pp.rb b/lib/pp.rb index a71ce9db38b938..2fcb4af820e12d 100644 --- a/lib/pp.rb +++ b/lib/pp.rb @@ -54,12 +54,12 @@ def pretty_inspect private # prints arguments in pretty form. # - # pp returns nil. + # pp returns argument(s). def pp(*objs) # :doc: objs.each {|obj| PP.pp(obj) } - nil + objs.size <= 1 ? objs.first : objs end module_function :pp end @@ -270,7 +270,7 @@ class SingleLine < PrettyPrint::SingleLine module ObjectMixin # 1. specific pretty_print # 2. specific inspect - # 3. specific to_s if instance variable is empty + # 3. specific to_s # 4. generic pretty_print # A default pretty printing method for general objects. @@ -283,9 +283,22 @@ module ObjectMixin # This module provides predefined #pretty_print methods for some of # the most commonly used built-in classes for convenience. def pretty_print(q) - if /\(Kernel\)#/ !~ Object.instance_method(:method).bind(self).call(:inspect).inspect + method_method = Object.instance_method(:method).bind(self) + begin + inspect_method = method_method.call(:inspect) + rescue NameError + end + begin + to_s_method = method_method.call(:to_s) + rescue NameError + end + if inspect_method && /\(Kernel\)#/ !~ inspect_method.inspect + q.text self.inspect + elsif !inspect_method && self.respond_to?(:inspect) q.text self.inspect - elsif /\(Kernel\)#/ !~ Object.instance_method(:method).bind(self).call(:to_s).inspect && instance_variables.empty? + elsif to_s_method && /\(Kernel\)#/ !~ to_s_method.inspect + q.text self.to_s + elsif !to_s_method && self.respond_to?(:to_s) q.text self.to_s else q.pp_object(self) diff --git a/lib/prime.rb b/lib/prime.rb index 68253897ca45a3..e5feba1c4c8c6b 100644 --- a/lib/prime.rb +++ b/lib/prime.rb @@ -91,14 +91,14 @@ def initialize warn "Prime::new is obsolete. use Prime::instance or class methods of Prime." end - class< i - if !@table[i].zero? - (j...32).step(2) do |k| - return 32*i+k if !@table[i][k.div(2)].zero? + extend_table until @tables.length > table_index + for j in integer_index...ENTRIES_PER_TABLE + if !@tables[table_index][j].zero? + for k in bit_index...BITS_PER_ENTRY + return NUMS_PER_TABLE*table_index + NUMS_PER_ENTRY*j + 2*k+1 if !@tables[table_index][j][k].zero? + end end + bit_index = 0 end - i += 1; j = 1 + table_index += 1; integer_index = 0 end end private + # for an odd number +n+, returns (i, j, k) such that @tables[i][j][k] represents primarity of the number + def indices(n) + # binary digits of n: |0|1|2|3|4|5|6|7|8|9|10|11|.... + # indices: |-| k | j | i + # because of NUMS_PER_ENTRY, NUMS_PER_TABLE + + k = (n & 0b00011111) >> 1 + j = (n & 0b11100000) >> 5 + i = n >> 8 + return i, j, k + end + def extend_table - orig_len = @table.length - new_len = [orig_len**2, orig_len+256].min - lbound = orig_len*32 - ubound = new_len*32 - @table.fill(0xFFFF, orig_len...new_len) + lbound = NUMS_PER_TABLE * @tables.length + ubound = lbound + NUMS_PER_TABLE + new_table = [FILLED_ENTRY] * ENTRIES_PER_TABLE # which represents primarity in lbound...ubound (3..Integer(Math.sqrt(ubound))).step(2) do |p| - i, j = p.divmod(32) - next if @table[i][j.div(2)].zero? + i, j, k = indices(p) + next if @tables[i][j][k].zero? - start = (lbound.div(2*p)*2+1)*p # odd multiple of p which is greater than or equal to lbound + start = (lbound.div(p)+1)*p # least multiple of p which is >= lbound + start += p if start.even? (start...ubound).step(2*p) do |n| - i, j = n.divmod(32) - @table[i] &= 0xFFFF ^ (1<<(j.div(2))) + _, j, k = indices(n) + new_table[j] &= FILLED_ENTRY^(1<>(n) + to_i >> n + end + def stopped? + false + end + def exited? + true + end + end + #################################################################### # TaskAguments manage the arguments passed to a task. # @@ -432,7 +455,7 @@ def to_s module Rake - # ######################################################################### + ########################################################################### # A Task is the basic unit of work in a Rakefile. Tasks have associated # actions (possibly more than one) and a list of prerequisites. When # invoked, a task will first ensure that all of its prerequisites have an @@ -732,7 +755,7 @@ def scope_name(scope, task_name) end # class Rake::Task - # ######################################################################### + ########################################################################### # A FileTask is a task that includes time based dependencies. If any of a # FileTask's prerequisites have a timestamp that is later than the file # represented by this task, then the file must be rebuilt (using the @@ -774,7 +797,7 @@ def scope_name(scope, task_name) end end # class Rake::FileTask - # ######################################################################### + ########################################################################### # A FileCreationTask is a file task that when used as a dependency will be # needed if and only if the file has not been created. Once created, it is # not re-triggered if any of its dependencies are newer, nor does trigger @@ -793,7 +816,7 @@ def timestamp end end - # ######################################################################### + ########################################################################### # Same as a regular task, but the immediate prerequisites are done in # parallel using Ruby threads. # @@ -808,7 +831,7 @@ def invoke_prerequisites(args, invocation_chain) end end # module Rake -# ########################################################################### +## ########################################################################### # Task Definition Functions ... # Declare a basic task. @@ -927,12 +950,18 @@ def import(*fns) end end -# ########################################################################### +############################################################################# # This a FileUtils extension that defines several additional commands to be # added to the FileUtils utility functions. # module FileUtils - RUBY = File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name']). + RUBY_EXT = ((RbConfig::CONFIG['ruby_install_name'] =~ /\.(com|cmd|exe|bat|rb|sh)$/) ? + "" : + RbConfig::CONFIG['EXEEXT']) + + RUBY = File.join( + RbConfig::CONFIG['bindir'], + RbConfig::CONFIG['ruby_install_name'] + RUBY_EXT). sub(/.*\s.*/m, '"\&"') OPT_TABLE['sh'] = %w(noop verbose) @@ -958,7 +987,7 @@ def sh(*cmd, &block) options = (Hash === cmd.last) ? cmd.pop : {} unless block_given? show_command = cmd.join(" ") - show_command = show_command[0,42] + "..." + show_command = show_command[0,42] + "..." unless $trace # TODO code application logic heref show_command.length > 45 block = lambda { |ok, status| ok or fail "Command failed with status (#{status.exitstatus}): [#{show_command}]" @@ -974,7 +1003,9 @@ def sh(*cmd, &block) rake_output_message cmd.join(" ") if options[:verbose] unless options[:noop] res = rake_system(*cmd) - block.call(res, $?) + status = $? + status = PseudoStatus.new(1) if !res && status.nil? + block.call(res, status) end end @@ -1027,7 +1058,7 @@ def split_all(path) end end -# ########################################################################### +############################################################################# # RakeFileUtils provides a custom version of the FileUtils methods that # respond to the verbose and nowrite commands. # @@ -1158,7 +1189,7 @@ def rake_check_options(options, *optdecl) extend self end -# ########################################################################### +############################################################################# # Include the FileUtils file manipulation functions in the top level module, # but mark them private so that they don't unintentionally define methods on # other objects. @@ -1170,7 +1201,7 @@ def rake_check_options(options, *optdecl) ###################################################################### module Rake - # ######################################################################### + ########################################################################### # A FileList is essentially an array with a few helper methods defined to # make file manipulation a bit easier. # @@ -1228,21 +1259,17 @@ class FileList # Now do the delegation. DELEGATING_METHODS.each_with_index do |sym, i| if SPECIAL_RETURN.include?(sym) - class_eval <<-END, __FILE__, __LINE__+1 - def #{sym}(*args, &block) - resolve - result = @items.send(:#{sym}, *args, &block) - FileList.new.import(result) - end - END + define_method(sym) do |*args, &block| + resolve + result = @items.send(sym, *args, &block) + FileList.new.import(result) + end else - class_eval <<-END, __FILE__, __LINE__+1 - def #{sym}(*args, &block) - resolve - result = @items.send(:#{sym}, *args, &block) - result.object_id == @items.object_id ? self : result - end - END + define_method(sym) do |*args, &block| + resolve + result = @items.send(sym, *args, &block) + result.object_id == @items.object_id ? self : result + end end end @@ -1450,7 +1477,7 @@ def pathmap(spec=nil) collect { |fn| fn.pathmap(spec) } end - # Return a new file list with String#ext method applied + # Return a new FileList with String#ext method applied # to each member of the array. # # This method is a shortcut for: @@ -1468,9 +1495,9 @@ def ext(newext='') # name, line number, and the matching line of text. If no block is given, # a standard emac style file:linenumber:line message will be printed to # standard out. - def egrep(pattern, *opt) + def egrep(pattern, *options) each do |fn| - open(fn, "rb", *opt) do |inf| + open(fn, "rb", *options) do |inf| count = 0 inf.each do |line| count += 1 @@ -1576,7 +1603,7 @@ def each_dir_parent(dir) # :nodoc: # Alias FileList to be available at the top level. FileList = Rake::FileList -# ########################################################################### +############################################################################# module Rake # Default Rakefile loader used by +import+. @@ -1603,7 +1630,7 @@ def to_s EARLY = EarlyTime.instance end # module Rake -# ########################################################################### +############################################################################# # Extensions to time to allow comparisons with an early time class. # class Time @@ -1960,11 +1987,9 @@ def initialize # application. The define any tasks. Finally, call +top_level+ to run your top # level tasks. def run - standard_exception_handling do - init - load_rakefile - top_level - end + init + load_rakefile + top_level end # Initialize the command line parameters and app name. @@ -2041,7 +2066,7 @@ def standard_exception_handling # Exit with error message $stderr.puts "#{name} aborted!" $stderr.puts ex.message - if options.trace + if options.trace or true $stderr.puts ex.backtrace.join("\n") else $stderr.puts ex.backtrace.find {|str| str =~ /#{@rakefile}/ } || "" @@ -2362,24 +2387,13 @@ def glob(path, &block) # The directory path containing the system wide rakefiles. def system_dir - @system_dir ||= - begin - if ENV['RAKE_SYSTEM'] - ENV['RAKE_SYSTEM'] - else - standard_system_dir - end - end + @system_dir ||= ENV['RAKE_SYSTEM'] || standard_system_dir end # The standard directory containing system wide rake files. - if Win32.windows? - def standard_system_dir #:nodoc: - Win32.win32_system_dir - end - else + unless method_defined?(:standard_system_dir) def standard_system_dir #:nodoc: - File.expand_path('.rake', '~') + File.expand_path('~/.rake') end end private :standard_system_dir diff --git a/lib/rake/contrib/compositepublisher.rb b/lib/rake/contrib/compositepublisher.rb new file mode 100644 index 00000000000000..31ef080dd7a4af --- /dev/null +++ b/lib/rake/contrib/compositepublisher.rb @@ -0,0 +1,20 @@ +module Rake + + # Manage several publishers as a single entity. + class CompositePublisher + def initialize + @publishers = [] + end + + # Add a publisher to the composite. + def add(pub) + @publishers << pub + end + + # Upload all the individual publishers. + def upload + @publishers.each { |p| p.upload } + end + end + +end diff --git a/lib/rake/contrib/ftptools.rb b/lib/rake/contrib/ftptools.rb new file mode 100644 index 00000000000000..4c6897f02e83cd --- /dev/null +++ b/lib/rake/contrib/ftptools.rb @@ -0,0 +1,151 @@ +# = Tools for FTP uploading. +# +# This file is still under development and is not released for general +# use. + +require 'date' +require 'net/ftp' + +module Rake # :nodoc: + + #################################################################### + # Note: Not released for general use. + class FtpFile + attr_reader :name, :size, :owner, :group, :time + + def self.date + @date_class ||= Date + end + + def self.time + @time_class ||= Time + end + + def initialize(path, entry) + @path = path + @mode, line, @owner, @group, size, d1, d2, d3, @name = entry.split(' ') + @size = size.to_i + @time = determine_time(d1, d2, d3) + end + + def path + File.join(@path, @name) + end + + def directory? + @mode[0] == ?d + end + + def mode + parse_mode(@mode) + end + + def symlink? + @mode[0] == ?l + end + + private # -------------------------------------------------------- + + def parse_mode(m) + result = 0 + (1..9).each do |i| + result = 2*result + ((m[i]==?-) ? 0 : 1) + end + result + end + + def determine_time(d1, d2, d3) + now = self.class.time.now + if /:/ =~ d3 + h, m = d3.split(':') + result = Time.parse("#{d1} #{d2} #{now.year} #{d3}") + if result > now + result = Time.parse("#{d1} #{d2} #{now.year-1} #{d3}") + end + else + result = Time.parse("#{d1} #{d2} #{d3}") + end + result +# elements = ParseDate.parsedate("#{d1} #{d2} #{d3}") +# if elements[0].nil? +# today = self.class.date.today +# if elements[1] > today.month +# elements[0] = today.year - 1 +# else +# elements[0] = today.year +# end +# end +# elements = elements.collect { |el| el.nil? ? 0 : el } +# Time.mktime(*elements[0,7]) + end + end + + #################################################################### + # Manage the uploading of files to an FTP account. + class FtpUploader + + # Log uploads to standard output when true. + attr_accessor :verbose + + class << FtpUploader + # Create an uploader and pass it to the given block as +up+. + # When the block is complete, close the uploader. + def connect(path, host, account, password) + up = self.new(path, host, account, password) + begin + yield(up) + ensure + up.close + end + end + end + + # Create an FTP uploader targetting the directory +path+ on +host+ + # using the given account and password. +path+ will be the root + # path of the uploader. + def initialize(path, host, account, password) + @created = Hash.new + @path = path + @ftp = Net::FTP.new(host, account, password) + makedirs(@path) + @ftp.chdir(@path) + end + + # Create the directory +path+ in the uploader root path. + def makedirs(path) + route = [] + File.split(path).each do |dir| + route << dir + current_dir = File.join(route) + if @created[current_dir].nil? + @created[current_dir] = true + puts "Creating Directory #{current_dir}" if @verbose + @ftp.mkdir(current_dir) rescue nil + end + end + end + + # Upload all files matching +wildcard+ to the uploader's root + # path. + def upload_files(wildcard) + Dir[wildcard].each do |fn| + upload(fn) + end + end + + # Close the uploader. + def close + @ftp.close + end + + private # -------------------------------------------------------- + + # Upload a single file to the uploader's root path. + def upload(file) + puts "Uploading #{file}" if @verbose + dir = File.dirname(file) + makedirs(dir) + @ftp.putbinaryfile(file, file) unless File.directory?(file) + end + end +end diff --git a/lib/rake/contrib/publisher.rb b/lib/rake/contrib/publisher.rb new file mode 100644 index 00000000000000..7f69d3a6541912 --- /dev/null +++ b/lib/rake/contrib/publisher.rb @@ -0,0 +1,73 @@ +# Copyright 2003, 2004, 2005, 2006, 2007, 2008 by Jim Weirich (jim@weirichhouse.org) +# All rights reserved. + +# Permission is granted for use, copying, modification, distribution, +# and distribution of modified versions of this work as long as the +# above copyright notice is included. + +# Configuration information about an upload host system. +# * name :: Name of host system. +# * webdir :: Base directory for the web information for the +# application. The application name (APP) is appended to +# this directory before using. +# * pkgdir :: Directory on the host system where packages can be +# placed. +HostInfo = Struct.new(:name, :webdir, :pkgdir) + +# Manage several publishers as a single entity. +class CompositePublisher + def initialize + @publishers = [] + end + + # Add a publisher to the composite. + def add(pub) + @publishers << pub + end + + # Upload all the individual publishers. + def upload + @publishers.each { |p| p.upload } + end +end + +# Publish an entire directory to an existing remote directory using +# SSH. +class SshDirPublisher + def initialize(host, remote_dir, local_dir) + @host = host + @remote_dir = remote_dir + @local_dir = local_dir + end + + def upload + run %{scp -rq #{@local_dir}/* #{@host}:#{@remote_dir}} + end +end + +# Publish an entire directory to a fresh remote directory using SSH. +class SshFreshDirPublisher < SshDirPublisher + def upload + run %{ssh #{@host} rm -rf #{@remote_dir}} rescue nil + run %{ssh #{@host} mkdir #{@remote_dir}} + super + end +end + +# Publish a list of files to an existing remote directory. +class SshFilePublisher + # Create a publisher using the give host information. + def initialize(host, remote_dir, local_dir, *files) + @host = host + @remote_dir = remote_dir + @local_dir = local_dir + @files = files + end + + # Upload the local directory to the remote directory. + def upload + @files.each do |fn| + run %{scp -q #{@local_dir}/#{fn} #{@host}:#{@remote_dir}} + end + end +end diff --git a/lib/rake/contrib/rubyforgepublisher.rb b/lib/rake/contrib/rubyforgepublisher.rb new file mode 100644 index 00000000000000..a4b96936c8dd65 --- /dev/null +++ b/lib/rake/contrib/rubyforgepublisher.rb @@ -0,0 +1,16 @@ +require 'rake/contrib/sshpublisher' + +module Rake + + class RubyForgePublisher < SshDirPublisher + attr_reader :project, :proj_id, :user + + def initialize(projname, user) + super( + "#{user}@rubyforge.org", + "/var/www/gforge-projects/#{projname}", + "html") + end + end + +end diff --git a/lib/rake/contrib/sshpublisher.rb b/lib/rake/contrib/sshpublisher.rb new file mode 100644 index 00000000000000..e679716c7b9185 --- /dev/null +++ b/lib/rake/contrib/sshpublisher.rb @@ -0,0 +1,45 @@ +require 'rake/contrib/compositepublisher' + +module Rake + + # Publish an entire directory to an existing remote directory using + # SSH. + class SshDirPublisher + def initialize(host, remote_dir, local_dir) + @host = host + @remote_dir = remote_dir + @local_dir = local_dir + end + + def upload + sh %{scp -rq #{@local_dir}/* #{@host}:#{@remote_dir}} + end + end + + # Publish an entire directory to a fresh remote directory using SSH. + class SshFreshDirPublisher < SshDirPublisher + def upload + sh %{ssh #{@host} rm -rf #{@remote_dir}} rescue nil + sh %{ssh #{@host} mkdir #{@remote_dir}} + super + end + end + + # Publish a list of files to an existing remote directory. + class SshFilePublisher + # Create a publisher using the give host information. + def initialize(host, remote_dir, local_dir, *files) + @host = host + @remote_dir = remote_dir + @local_dir = local_dir + @files = files + end + + # Upload the local directory to the remote directory. + def upload + @files.each do |fn| + sh %{scp -q #{@local_dir}/#{fn} #{@host}:#{@remote_dir}} + end + end + end +end diff --git a/lib/rake/loaders/makefile.rb b/lib/rake/loaders/makefile.rb index c77d428596b70d..9a2ac8090ef71d 100644 --- a/lib/rake/loaders/makefile.rb +++ b/lib/rake/loaders/makefile.rb @@ -21,7 +21,7 @@ def load(fn) def process_line(line) file_tasks, args = line.split(':', 2) return if args.nil? - dependents = args.split + dependents = args.split.map {|arg| respace(arg)} file_tasks.scan(/\S+/) do |file_task| file_task = respace(file_task) file file_task => dependents diff --git a/lib/rake/rdoctask.rb b/lib/rake/rdoctask.rb index de020f4d873046..9198806026c808 100644 --- a/lib/rake/rdoctask.rb +++ b/lib/rake/rdoctask.rb @@ -19,7 +19,7 @@ module Rake # Rebuild the rdoc files from scratch, even if they are not out # of date. # - # Simple example: + # Simple Example: # # Rake::RDocTask.new do |rd| # rd.main = "README.rdoc" @@ -132,7 +132,7 @@ def define args = option_list + @rdoc_files if @external argstring = args.join(' ') - sh %{ruby -Ivendor vender/rd #{argstring}} + sh %{ruby -Ivendor vendor/rd #{argstring}} else require 'rdoc/rdoc' RDoc::RDoc.new.document(args) diff --git a/lib/rake/testtask.rb b/lib/rake/testtask.rb index 34440125004c83..c400205ff32ee2 100644 --- a/lib/rake/testtask.rb +++ b/lib/rake/testtask.rb @@ -93,7 +93,7 @@ def initialize(name=:test) # Create the tasks defined by this task lib. def define - lib_path = @libs.collect {|path| "-I#{File.expand_path(path)}"} + lib_path = @libs.join(File::PATH_SEPARATOR) desc "Run tests" + (@name==:test ? "" : " for #{@name}") task @name do run_code = '' @@ -103,11 +103,11 @@ def define when :direct "-e 'ARGV.each{|f| load f}'" when :testrb - "-S testrb #{fix}" + "-S testrb" when :rake rake_loader end - @ruby_opts.unshift( *lib_path ) + @ruby_opts.unshift( "-I\"#{lib_path}\"" ) @ruby_opts.unshift( "-w" ) if @warning ruby @ruby_opts.join(" ") + " \"#{run_code}\" " + @@ -133,15 +133,6 @@ def file_list # :nodoc: end end - def fix # :nodoc: - case RUBY_VERSION - when '1.8.2' - find_file 'rake/ruby182_test_unit_fix' - else - nil - end || '' - end - def rake_loader # :nodoc: find_file('rake/rake_test_loader') or fail "unable to find rake test loader" diff --git a/lib/rake/win32.rb b/lib/rake/win32.rb index 96f66d6957c7f1..0ab31c28221697 100644 --- a/lib/rake/win32.rb +++ b/lib/rake/win32.rb @@ -5,9 +5,10 @@ module Rake module Win32 class << self # True if running on a windows system. - def windows? - # assume other DOSish systems are extinct. - File::ALT_SEPARATOR == '\\' + if File::ALT_SEPARATOR == '\\' # assume other DOSish systems are extinct. + def windows?; true end + else + def windows?; false end end end @@ -29,6 +30,17 @@ def win32_system_dir #:nodoc: end File.expand_path('Rake', win32_shared_path) end + + # Normalize a win32 path so that the slashes are all forward slashes. + def normalize(path) + path.tr('\\', '/') + end end if windows? end + + if Win32.windows? + def standard_system_dir + Win32.win32_system_dir + end + end end diff --git a/lib/rational.rb b/lib/rational.rb index 515c273d545ea2..a1aeca1e40c237 100644 --- a/lib/rational.rb +++ b/lib/rational.rb @@ -7,7 +7,7 @@ class Fixnum alias quof fdiv alias rdiv quo - alias power! ** unless defined?(0.power!) + alias power! ** unless method_defined? :power! alias rpower ** end @@ -17,7 +17,7 @@ class Bignum alias quof fdiv alias rdiv quo - alias power! ** unless defined?(0.power!) + alias power! ** unless method_defined? :power! alias rpower ** end diff --git a/lib/rdoc/parser/ruby.rb b/lib/rdoc/parser/ruby.rb index cf6c1ad2217e20..fde3964a60e2f4 100644 --- a/lib/rdoc/parser/ruby.rb +++ b/lib/rdoc/parser/ruby.rb @@ -1458,7 +1458,7 @@ def read_escape class RDoc::Parser::Ruby < RDoc::Parser - parse_files_matching(/\.rbw?$/) + parse_files_matching(/\.(?:rbw?|rdoc)\z/) include RDoc::RubyToken include RDoc::TokenStream diff --git a/lib/rdoc/rdoc.rb b/lib/rdoc/rdoc.rb index ce1cb1a93f35e7..80128ee8ba5a22 100644 --- a/lib/rdoc/rdoc.rb +++ b/lib/rdoc/rdoc.rb @@ -203,14 +203,11 @@ def parse_files(options) file_list.each do |filename| @stats.add_file filename - content = if RUBY_VERSION >= '1.9' then - File.open(filename, "r:ascii-8bit") { |f| f.read } - else - File.read filename - end - - if defined? Encoding then - if /coding:\s*(\S+)/ =~ content[/\A(?:.*\n){0,2}/] + content = File.open(filename, "rb") { |f| f.read } + content.gsub!(/\r$/, '') + + if defined?(::Encoding) then + if /coding[=:]\s*([^\s;]+)/ =~ content[/\A(?:!.*\n)?(.*\n)/, 1] if enc = ::Encoding.find($1) content.force_encoding(enc) end diff --git a/lib/resolv.rb b/lib/resolv.rb index ed8859d3c43a73..9a65746959fec3 100644 --- a/lib/resolv.rb +++ b/lib/resolv.rb @@ -599,10 +599,10 @@ def self.free_request_id(host, port, id) # :nodoc: } end - def self.bind_random_port(udpsock) # :nodoc: + def self.bind_random_port(udpsock, is_ipv6=false) # :nodoc: begin port = rangerand(1024..65535) - udpsock.bind("", port) + udpsock.bind(is_ipv6 ? "::" : "", port) rescue Errno::EADDRINUSE retry end @@ -655,6 +655,7 @@ class UnconnectedUDP < Requester # :nodoc: def initialize super() @sock = UDPSocket.new + @sock.do_not_reverse_lookup = true @sock.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC) if defined? Fcntl::F_SETFD DNS.bind_random_port(@sock) end @@ -699,10 +700,12 @@ def initialize(host, port=Port) super() @host = host @port = port - @sock = UDPSocket.new(host.index(':') ? Socket::AF_INET6 : Socket::AF_INET) - DNS.bind_random_port(@sock) - @sock.connect(host, port) + is_ipv6 = host.index(':') + @sock = UDPSocket.new(is_ipv6 ? Socket::AF_INET6 : Socket::AF_INET) + @sock.do_not_reverse_lookup = true @sock.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC) if defined? Fcntl::F_SETFD + DNS.bind_random_port(@sock, is_ipv6) + @sock.connect(host, port) end def recv_reply diff --git a/lib/rexml/element.rb b/lib/rexml/element.rb index 7a3abc65e5f913..f999b0b2b15ff2 100644 --- a/lib/rexml/element.rb +++ b/lib/rexml/element.rb @@ -492,7 +492,7 @@ def get_text path = nil def text=( text ) if text.kind_of? String text = Text.new( text, whitespace(), nil, raw() ) - elsif text and !text.kind_of? Text + elsif !text.nil? and !text.kind_of? Text text = Text.new( text.to_s, whitespace(), nil, raw() ) end old_text = get_text diff --git a/lib/rexml/formatters/default.rb b/lib/rexml/formatters/default.rb index 56a1d937836896..db44453e1e27ab 100644 --- a/lib/rexml/formatters/default.rb +++ b/lib/rexml/formatters/default.rb @@ -63,7 +63,9 @@ def write_document( node, output ) def write_element( node, output ) output << "<#{node.expanded_name}" - node.attributes.to_a.sort_by {|attr| attr.name}.each do |attr| + node.attributes.to_a.map { |a| + Hash === a ? a.values : a + }.flatten.sort_by {|attr| attr.name}.each do |attr| output << " " attr.write( output ) end unless node.attributes.empty? diff --git a/lib/rubygems.rb b/lib/rubygems.rb index 8e6d8c9636d3f9..5faca8695fc820 100644 --- a/lib/rubygems.rb +++ b/lib/rubygems.rb @@ -388,7 +388,7 @@ def self.bin_path(name, exec_name = nil, *version_requirements) # The mode needed to read a file as straight binary. def self.binary_mode - @binary_mode ||= RUBY_VERSION > '1.9' ? 'rb:ascii-8bit' : 'rb' + 'rb' end ## diff --git a/lib/set.rb b/lib/set.rb index 8f2bef91baf7d6..f21ff14a705778 100644 --- a/lib/set.rb +++ b/lib/set.rb @@ -327,13 +327,16 @@ def ^(enum) # Returns true if two sets are equal. The equality of each couple # of elements is defined according to Object#eql?. - def ==(set) - equal?(set) and return true - - set.is_a?(Set) && size == set.size or return false - - hash = @hash.dup - set.all? { |o| hash.include?(o) } + def ==(other) + if self.equal?(other) + true + elsif other.instance_of?(self.class) + @hash == other.instance_variable_get(:@hash) + elsif other.is_a?(Set) && self.size == other.size + other.all? { |o| @hash.include?(o) } + else + false + end end def hash # :nodoc: diff --git a/lib/sync.rb b/lib/sync.rb index 36c4c08d45aac3..459bba732b11fe 100644 --- a/lib/sync.rb +++ b/lib/sync.rb @@ -42,7 +42,7 @@ end module Sync_m - RCS_ID='-$Header$-' + RCS_ID='-$Id$-' # lock mode UN = :UN diff --git a/lib/tempfile.rb b/lib/tempfile.rb index 4ebeea28a1f995..b327acb62ba55a 100755 --- a/lib/tempfile.rb +++ b/lib/tempfile.rb @@ -133,9 +133,17 @@ def initialize(basename, *rest) create(basename, *rest) do |tmpname, n, opts| lock = tmpname + '.lock' + mode = File::RDWR|File::CREAT|File::EXCL + perm = 0600 + if opts + mode |= opts.delete(:mode) || 0 + opts[:perm] = perm + else + opts = perm + end self.class.mkdir(lock) begin - @data[1] = @tmpfile = File.open(tmpname, File::RDWR|File::CREAT|File::EXCL, 0600, *opts) + @data[1] = @tmpfile = File.open(tmpname, mode, opts) @data[0] = @tmpname = tmpname ensure self.class.rmdir(lock) diff --git a/lib/test/unit/assertions.rb b/lib/test/unit/assertions.rb index 35348d87beaf1c..821faf5803aa17 100644 --- a/lib/test/unit/assertions.rb +++ b/lib/test/unit/assertions.rb @@ -67,8 +67,16 @@ def assert_equal(exp, act, msg = nil) exp_str = "%\#.#{Float::DIG+2}g" % exp act_str = "%\#.#{Float::DIG+2}g" % act elsif exp.is_a?(Time) && act.is_a?(Time) - exp_comment = " (nsec=#{exp.nsec})" - act_comment = " (nsec=#{act.nsec})" + if exp.subsec * 1000_000_000 == exp.nsec + exp_comment = " (#{exp.nsec}[ns])" + else + exp_comment = " (subsec=#{exp.subsec})" + end + if act.subsec * 1000_000_000 == act.nsec + act_comment = " (#{act.nsec}[ns])" + else + act_comment = " (subsec=#{act.subsec})" + end elsif exp.class != act.class # a subclass of Range, for example. exp_comment = " (#{exp.class})" diff --git a/lib/thread.rb b/lib/thread.rb index cb6d8c62fccdac..34c2a506d2ab07 100644 --- a/lib/thread.rb +++ b/lib/thread.rb @@ -59,13 +59,16 @@ def initialize # # Releases the lock held in +mutex+ and waits; reacquires the lock on wakeup. # - def wait(mutex) + # If +timeout+ is given, this method returns after +timeout+ seconds passed, + # even if no other thread doesn't signal. + # + def wait(mutex, timeout=nil) begin # TODO: mutex should not be used @waiters_mutex.synchronize do @waiters.push(Thread.current) end - mutex.sleep + mutex.sleep timeout end end diff --git a/lib/time.rb b/lib/time.rb index 2e6ed324e3da8c..1c43371d4e0cd1 100644 --- a/lib/time.rb +++ b/lib/time.rb @@ -252,6 +252,10 @@ def make_time(year, mon, day, hour, min, sec, sec_fraction, zone, now) # # A failure for Time.parse should be checked, though. # + # time library should be required to use this method as follows. + # + # require 'time' + # def parse(date, now=self.now) comp = !block_given? d = Date._parse(date, comp) @@ -293,6 +297,10 @@ def strptime(date, format, now=self.now) # # See #rfc2822 for more information on this format. # + # time library should be required to use this method as follows. + # + # require 'time' + # def rfc2822(date) if /\A\s* (?:(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s*,\s*)? @@ -342,6 +350,10 @@ def rfc2822(date) # # See #httpdate for more information on this format. # + # time library should be required to use this method as follows. + # + # require 'time' + # def httpdate(date) if /\A\s* (?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),\x20 @@ -389,6 +401,10 @@ def httpdate(date) # # See #xmlschema for more information on this format. # + # time library should be required to use this method as follows. + # + # require 'time' + # def xmlschema(date) if /\A\s* (-?\d+)-(\d\d)-(\d\d) @@ -431,10 +447,14 @@ def xmlschema(date) # # If +self+ is a UTC time, -0000 is used as zone. # + # time library should be required to use this method as follows. + # + # require 'time' + # def rfc2822 - sprintf('%s, %02d %s %04d %02d:%02d:%02d ', + sprintf('%s, %02d %s %0*d %02d:%02d:%02d ', RFC2822_DAY_NAME[wday], - day, RFC2822_MONTH_NAME[mon-1], year, + day, RFC2822_MONTH_NAME[mon-1], year < 0 ? 5 : 4, year, hour, min, sec) + if utc? '-0000' @@ -462,11 +482,15 @@ def rfc2822 # # Note that the result is always UTC (GMT). # + # time library should be required to use this method as follows. + # + # require 'time' + # def httpdate t = dup.utc - sprintf('%s, %02d %s %04d %02d:%02d:%02d GMT', + sprintf('%s, %02d %s %0*d %02d:%02d:%02d GMT', RFC2822_DAY_NAME[t.wday], - t.day, RFC2822_MONTH_NAME[t.mon-1], t.year, + t.day, RFC2822_MONTH_NAME[t.mon-1], t.year < 0 ? 5 : 4, t.year, t.hour, t.min, t.sec) end @@ -484,9 +508,13 @@ def httpdate # +fractional_seconds+ specifies a number of digits of fractional seconds. # Its default value is 0. # + # time library should be required to use this method as follows. + # + # require 'time' + # def xmlschema(fraction_digits=0) - sprintf('%04d-%02d-%02dT%02d:%02d:%02d', - year, mon, day, hour, min, sec) + + sprintf('%0*d-%02d-%02dT%02d:%02d:%02d', + year < 0 ? 5 : 4, year, mon, day, hour, min, sec) + if fraction_digits == 0 '' else diff --git a/lib/tmpdir.rb b/lib/tmpdir.rb index 0aa9cf5e3bad81..32befa3e8acd3c 100644 --- a/lib/tmpdir.rb +++ b/lib/tmpdir.rb @@ -111,7 +111,7 @@ def Dir.mktmpdir(prefix_suffix=nil, *rest) end end - module Tmpname + module Tmpname # :nodoc: module_function def tmpdir @@ -152,7 +152,7 @@ def create(basename, *rest) n = nil begin path = File.expand_path(make_tmpname(basename, n), tmpdir) - yield(path, n, opts) + yield(path, n, *opts) rescue Errno::EEXIST n ||= 0 n += 1 diff --git a/lib/webrick/httpauth/digestauth.rb b/lib/webrick/httpauth/digestauth.rb index aac87a06df8f05..1c6942be8b266b 100644 --- a/lib/webrick/httpauth/digestauth.rb +++ b/lib/webrick/httpauth/digestauth.rb @@ -222,7 +222,7 @@ def _authenticate(req, res) end }.join(', ') end - info('%s: authentication scceeded.', auth_req['username']) + info('%s: authentication succeeded.', auth_req['username']) req.user = auth_req['username'] return true end diff --git a/lib/yaml/tag.rb b/lib/yaml/tag.rb index add3c49894ddb6..ac587165c218de 100644 --- a/lib/yaml/tag.rb +++ b/lib/yaml/tag.rb @@ -58,7 +58,7 @@ class Module # taguris. def yaml_as( tag, sc = true ) verbose, $VERBOSE = $VERBOSE, nil - class_eval <<-"end;", __FILE__, __LINE__+1 + class_eval <<-"END", __FILE__, __LINE__+1 attr_writer :taguri def taguri if respond_to? :to_yaml_type @@ -73,7 +73,7 @@ def taguri end end def self.yaml_tag_subclasses?; #{ sc ? 'true' : 'false' }; end - end; + END YAML::tag_class tag, self ensure $VERBOSE = verbose @@ -88,4 +88,5 @@ def yaml_tag_class_name def yaml_tag_read_class( name ) name end + # :startdoc: end diff --git a/load.c b/load.c index 57d5f3a9b4ef6f..90d22d80ba4651 100644 --- a/load.c +++ b/load.c @@ -662,7 +662,16 @@ rb_mod_autoload(VALUE mod, VALUE sym, VALUE file) } /* - * MISSING: documentation + * call-seq: + * mod.autoload?(name) => String or nil + * + * Returns _filename_ to be loaded if _name_ is registered as + * +autoload+ in the namespace of _mod_. + * + * module A + * end + * A.autoload(:B, "b") + * A.autoload?(:B) # => "b" */ static VALUE @@ -693,7 +702,14 @@ rb_f_autoload(VALUE obj, VALUE sym, VALUE file) } /* - * MISSING: documentation + * call-seq: + * autoload?(name) => String or nil + * + * Returns _filename_ to be loaded if _name_ is registered as + * +autoload+. + * + * autoload(:B, "b") + * autoload?(:B) # => "b" */ static VALUE diff --git a/man/erb.1 b/man/erb.1 index 87a0a6fca4073d..80b564a061d2f7 100644 --- a/man/erb.1 +++ b/man/erb.1 @@ -18,14 +18,14 @@ .Pp .Sh DESCRIPTION .Nm -is a command line front-end for +is a command line front-end for .Li "ERB" library, which is an implementation of eRuby. - -eRuby provdes an easy to use but powerful templating system for Ruby. +.Pp +eRuby provdes an easy to use but powerful templating system for Ruby. Using eRuby, actual Ruby code can be added to any plain text document for the purposes of generating document information details and/or flow control. - +.Pp .Nm is a part of .Nm Ruby . @@ -34,18 +34,18 @@ is a part of .Bl -tag -width "1234567890123" -compact .Pp .It Fl -version -Prints the version of +Prints the version of .Nm . .Pp .It Fl E Ar external Ns Op : Ns Ar internal .It Fl -encoding Ar external Ns Op : Ns Ar internal Specifies the default value(s) for external encodings and internal encoding. Values should be separated with colon (:). - +.Pp You can ommit the one for internal encodings, then the value .Pf ( Li "Encoding.default_internal" ) will be nil. .Pp .It Fl P -Evaluates lines starting with +Evaluates lines starting with .Li "%" as Ruby code and removes the tailing EOLs. .Pp @@ -53,7 +53,7 @@ as Ruby code and removes the tailing EOLs. Specifies the safe level in which eRuby script will run. .Pp .It Fl T Ar mode -Specifies trim mode (default 0). +Specifies trim mode (default 0). .Ar mode can be one of .Bl -hang -offset indent @@ -96,10 +96,10 @@ Prints a summry of the options. .It Fl n Used with .Fl x . -Prepends the line number to each line in the output. +Prepends the line number to each line in the output. .Pp .It Fl v -Enables verbose mode. +Enables verbose mode. .Li "$VERBOSE" will be set to true. .Pp @@ -119,7 +119,7 @@ Here is an eRuby script <%= Prime.each(10).to_a.join(", ") %> .Ed - +.Pp Command .Dl "% erb -T - example.erb" prints @@ -134,17 +134,16 @@ prints .Pp .Sh SEE ALSO .Xr ruby 1 . - -And see +.Pp +And see .Xr ri 1 -documentation for +documentation for .Li "ERB" class. -.El .Pp .Sh REPORTING BUGS .Bl -bullet -.Li Security vulnerabilities should be reported via an email to +.Li Security vulnerabilities should be reported via an email to .Aq security@ruby-lang.org Ns .Li . Reported problems will be published after fixed. diff --git a/man/irb.1 b/man/irb.1 index 20e97e32f70384..dc78baeff70844 100644 --- a/man/irb.1 +++ b/man/irb.1 @@ -40,7 +40,7 @@ Prints the version of .It Fl -encoding Ar external Ns Op : Ns Ar internal Same as `ruby -E' . Specifies the default value(s) for external encodings and internal encoding. Values should be separated with colon (:). - +.Pp You can ommit the one for internal encodings, then the value .Pf ( Li "Encoding.default_internal" ) will be nil. .Pp @@ -62,7 +62,7 @@ Sets to true. .Pp .It Fl f -Suppresses read of +Suppresses read of .Pa ~/.irbrc . .Pp .It Fl h @@ -93,9 +93,9 @@ Doesn't use Readline extension module. Switch prompt mode. Pre-defined prompt modes are `default', `simple', `xmp' and `inf-ruby'. .Pp -.It Fl -inf-ruby-mode -Uses prompt appropriate for inf-ruby-mode on emacs. -Suppresses --readline. +.It Fl -inf-ruby-mode +Uses prompt appropriate for inf-ruby-mode on emacs. +Suppresses --readline. .Pp .It Fl -simple-prompt Makes prompts simple. @@ -111,7 +111,7 @@ Displays backtrace top .Ar n and tail .Ar n Ns . -The default value is 16. +The default value is 16. .Pp .It Fl -irb_debug Ar n Sets internal debug level to n (not for popular use) @@ -152,14 +152,14 @@ Personal irb initialization. .Dl :ok .Dl => :ok .Dl irb(main):009:0> Ic quit -.Dl % +.Dl % .Pp .Sh SEE ALSO .Xr ruby 1 . .Pp .Sh REPORTING BUGS .Bl -bullet -.Li Security vulnerabilities should be reported via an email to +.Li Security vulnerabilities should be reported via an email to .Aq security@ruby-lang.org Ns .Li . Reported problems will be published after fixed. diff --git a/man/rake.1 b/man/rake.1 index 3872026bf1917d..2f80dbf7f4107b 100644 --- a/man/rake.1 +++ b/man/rake.1 @@ -22,17 +22,17 @@ .Ar target ... .Sh DESCRIPTION .Nm Rake -is a simple +is a simple .Xr ruby 1 -build program with capabilities similar to the regular +build program with capabilities similar to the regular .Xr make 1 command. - +.Pp .Nm Rake has the following features: .Bl -bullet .It -Rakefiles (Rake's version of Makefiles) are completely defined in standard Ruby syntax. +Rakefiles (Rake's version of Makefiles) are completely defined in standard Ruby syntax. No XML files to edit. No quirky Makefile syntax to worry about (is that a tab or a space?). .It Users can specify tasks with prerequisites. @@ -41,7 +41,7 @@ Rake supports rule patterns to sythesize implicit tasks. .It Flexible FileLists that act like arrays but know about manipulating file names and paths. .It -A library of prepackaged tasks to make building rakefiles easier. +A library of prepackaged tasks to make building rakefiles easier. .El .Pp .Sh OPTIONS @@ -56,7 +56,7 @@ Put Task and FileTask in the top level namespace .Pp .It Fl D Op Ar PATTERN .It Fl -describe Op Ar PATTERN -Describe the tasks (matching optional +Describe the tasks (matching optional .Ar PATTERN Ns ), then exit. .Pp @@ -71,7 +71,7 @@ Use standard project Rakefile search paths, ignore system wide rakefiles. .Pp .It Fl I Ar LIBDIR .It Fl -libdir Ar LIBDIR -Include +Include .Ar LIBDIR in the search path for required modules. .Pp @@ -89,7 +89,7 @@ Display the tasks and dependencies, then exit. .It Fl -rakelibdir Ar RAKELIBDIR Auto-import any .rake files in .Ar RAKELIBDIR . -(default is +(default is .Pa rakelib ) .Pp @@ -113,7 +113,7 @@ Prints a summary of options. .Pp .It Fl g .It Fl -system -Using system wide (global) rakefiles (usually +Using system wide (global) rakefiles (usually .Pa ~/.rake/*.rake ). .Pp @@ -135,7 +135,7 @@ Require MODULE before executing rakefile. .Pp .It Fl s .It Fl -silent -Like +Like .Fl -quiet , but also suppresses the 'in directory' announcement. .Pp @@ -158,12 +158,12 @@ Trace the rules resolution. .Pp http://rake.rubyforge.org/ .Sh REPORTING BUGS -Bugs, features requests and other issues can be logged at +Bugs, features requests and other issues can be logged at <\fBhttp://onestepback.org/redmine/projects/show/rake\fR>. .Pp You will need an account to before you can post issues. Register at <\fBhttp://onestepback.org/redmine/account/register\fR>. Or you can send an email to the author. .Sh AUTHOR .Nm Rake -is written by +is written by .An Jim Weirich Aq jim@weirichhouse.org diff --git a/man/ri.1 b/man/ri.1 index f414adb55917b5..baced73528efcf 100644 --- a/man/ri.1 +++ b/man/ri.1 @@ -4,7 +4,7 @@ .Os UNIX .Sh NAME .Nm ri -.Nd Ruby API reference front end +.Nd Ruby API reference front end .Sh SYNOPSIS .Nm .Op Fl Ti @@ -12,19 +12,19 @@ .Op Fl f Ar format .Op Fl -list-doc-dirs .Op Fl -no-standard-docs -.Op Fl - Ns Oo Cm no- Oc Ns Cm Bro Cm system Ns | Ns Cm site Ns | Ns Cm gems Ns | Ns Cm home Brc +.Op Fl - Ns Oo Cm no- Oc Ns Bro Cm system Ns | Ns Cm site Ns | Ns Cm gems Ns | Ns Cm home Brc .Op Fl - Ns Oo Cm no- Oc Ns Cm use-cache .Op Fl -width Ns = Ns Ar width .Op Ar target ... .Sh DESCRIPTION .Nm -is a CUI front end for the Ruby API reference. +is a CUI front end for the Ruby API reference. You can search and read API reference for classes and methods with .Nm . - +.Pp .Nm is a part of Ruby. - +.Pp .Ar target can be one of the following forms: .Bl -diag -offset indent @@ -39,10 +39,10 @@ for both class and instance methods .It method for both class and instance methods .El - +.Pp All class names may be abbreviated to their minimum unambiguous form. If a name is ambiguous, all valid options will be listed. - +.Pp For example: .Bd -literal -offset indent ri Fil @@ -50,7 +50,7 @@ ri File ri File.new ri zip .Ed - +.Pp Note that shell quoting may be required for method names containing punctuation: .Bd -literal -offset indent @@ -61,7 +61,7 @@ ri compact\! .Bl -tag -width "1234567890123" -compact .Pp .It Fl -version -Prints the version of +Prints the version of .Nm . .Pp .It Fl T @@ -84,7 +84,7 @@ pager or tell the pager to allow control characters. .Pp .It Fl i .It Fl -interactive -This makes +This makes .Nm go into interactive mode. .Pp @@ -103,8 +103,8 @@ Do not include documentation from the Ruby standard library, .Pa site_lib , installed gems, or .Pa ~/.rdoc . - -Equivalent to specifying the options +.Pp +Equivalent to specifying the options .Fl -no-system , Fl -no-site , Fl -no-gems , and .Fl -no-home . @@ -122,7 +122,7 @@ Include documentation from RubyGems. Defaults to true. Include documentation stored in ~/.rdoc. Defaults to true. .Pp .It Fl - Ns Oo Cm no- Oc Ns Cm use-cache -Whether or not to use +Whether or not to use .Nm Ns .Ns 's cache. True by default. .Pp @@ -165,7 +165,7 @@ Searches user-wide documents here. .Pp .Sh REPORTING BUGS .Bl -bullet -.Li Security vulnerabilities should be reported via an email to +.Li Security vulnerabilities should be reported via an email to .Aq security@ruby-lang.org Ns .Li . Reported problems will be published after fixed. diff --git a/man/ruby.1 b/man/ruby.1 index e2d0abdefd3990..9ac2324c1adcb0 100644 --- a/man/ruby.1 +++ b/man/ruby.1 @@ -95,7 +95,7 @@ Ruby has a bunch of text processing features like in Perl. .Pp .It Sy "M17N, character set independent" Ruby supports multilingualized programming. Easy to process texts -written in many different natural languages and encoded in many +written in many different natural languages and encoded in many different character encodings, without dependence on Unicode. .Pp .It Sy "Bignums" @@ -122,7 +122,7 @@ on-the-fly. .It Sy "Rich libraries" Libraries called "builtin libraries" and "standard libraries" are bundled with Ruby. And you can obtain more libraries via the package management system called `RubyGems'. - +.Pp Moreover there are thousands of Ruby projects in Rubyforge .Pf ( "http://www.rubyforge.org" ) and RAA .Pf ( "http://raa.ruby-lang.org" ) Ns . @@ -160,7 +160,7 @@ Causes Ruby to switch to the directory. .It Fl E Ar external Ns Op : Ns Ar internal .It Fl -encoding Ar external Ns Op : Ns Ar internal Specifies the default value(s) for external encodings and internal encoding. Values should be separated with colon (:). - +.Pp You can ommit the one for internal encodings, then the value .Pf ( Li "Encoding.default_internal" ) will be nil. .Pp @@ -177,7 +177,7 @@ will be added to the load-path variable Specifies KANJI (Japanese) encoding. The default value for script encodings .Pf ( Li "__ENCODING__" ) and external encodings ( Li "Encoding.default_external" ) will be the specified one. .Ar kcode -can be one of +can be one of .Bl -hang -offset indent .It Sy e EUC-JP @@ -205,15 +205,15 @@ on machines that don't support it, in the following manner: exec /usr/local/bin/ruby -S $0 $* .Ed .Pp -.It Fl T Ns Op Ar level +.It Fl T Ns Op Ar level=1 Turns on taint checks at the specified level (default 1). .Pp .It Fl U Sets the defalut value for internal encodings .Pf ( Li "Encoding.default_internal" ) to UTF-8. .Pp -.It Fl W Ns Op Ar level -Turns on verbose mode at the specified level, without printing version +.It Fl W Ns Op Ar level=2 +Turns on verbose mode at the specified level, without printing version message at the beginning. The level can be; .Bl -hang -offset indent .It Sy 0 @@ -375,7 +375,7 @@ before executing script. .It Fl y .It Fl -yydebug DO NOT USE. - +.Pp Turns on compiler debug mode. Ruby will print a bunch of internal state messages during compiling scripts. You don't have to specify this switch, unless you are going to debug the Ruby interpreter. @@ -406,8 +406,8 @@ Disables (or enables) all features. .El .Pp .It Fl -dump Ns = Ns Ar target -DO NOT USE. - +DO NOT USE. +.Pp Prints the specified target. .Ar target can be one of; @@ -494,7 +494,7 @@ Ruby Application Archive. .Pp .Sh REPORTING BUGS .Bl -bullet -.Li Security vulnerabilities should be reported via an email to +.Li Security vulnerabilities should be reported via an email to .Aq security@ruby-lang.org Ns .Li . Reported problems will be published after fixed. @@ -507,5 +507,5 @@ via the system because it publishes the vulnerabilities immedately. .Sh AUTHORS Ruby is designed and implemented by .An Yukihiro Matsumoto Aq matz@netlab.jp . - +.Pp See <\fBhttp://redmine.ruby-lang.org/wiki/ruby/Contributors\fR> for contributors to Ruby. diff --git a/marshal.c b/marshal.c index 300391191eff3b..a0f9d76edb81fe 100644 --- a/marshal.c +++ b/marshal.c @@ -132,14 +132,12 @@ rb_marshal_define_compat(VALUE newclass, VALUE oldclass, VALUE (*dumper)(VALUE), } struct dump_arg { - VALUE obj; VALUE str, dest; st_table *symbols; st_table *data; int taint; int untrust; st_table *compat_tbl; - VALUE wrapper; st_table *encodings; }; @@ -152,22 +150,43 @@ struct dump_call_arg { static void check_dump_arg(struct dump_arg *arg, ID sym) { - if (!DATA_PTR(arg->wrapper)) { + if (!arg->symbols) { rb_raise(rb_eRuntimeError, "Marshal.dump reentered at %s", rb_id2name(sym)); } } +static void clear_dump_arg(struct dump_arg *arg); + static void mark_dump_arg(void *ptr) { struct dump_arg *p = ptr; - if (!ptr) + if (!p->symbols) return; rb_mark_set(p->data); rb_mark_hash(p->compat_tbl); + rb_gc_mark(p->str); +} + +static void +free_dump_arg(void *ptr) +{ + clear_dump_arg(ptr); + xfree(ptr); } +static size_t +memsize_dump_arg(const void *ptr) +{ + return ptr ? sizeof(struct dump_arg) : 0; +} + +static const rb_data_type_t dump_arg_data = { + "dump_arg", + mark_dump_arg, free_dump_arg, memsize_dump_arg +}; + static const char * must_not_be_anonymous(const char *type, VALUE path) { @@ -413,13 +432,13 @@ w_symbol(ID id, struct dump_arg *arg) } w_byte(TYPE_SYMBOL, arg); w_bytes(RSTRING_PTR(sym), RSTRING_LEN(sym), arg); + st_add_direct(arg->symbols, id, arg->symbols->num_entries); if (encidx != -1) { struct dump_call_arg c_arg; c_arg.limit = 1; c_arg.arg = arg; w_encoding(sym, 0, &c_arg); } - st_add_direct(arg->symbols, id, arg->symbols->num_entries); } } @@ -760,7 +779,7 @@ w_object(VALUE obj, struct dump_arg *arg, int limit) case T_HASH: w_uclass(obj, rb_cHash, arg); - if (NIL_P(RHASH(obj)->ifnone)) { + if (NIL_P(RHASH_IFNONE(obj))) { w_byte(TYPE_HASH, arg); } else if (FL_TEST(obj, FL_USER2)) { @@ -772,8 +791,8 @@ w_object(VALUE obj, struct dump_arg *arg, int limit) } w_long(RHASH_SIZE(obj), arg); rb_hash_foreach(obj, hash_each, (st_data_t)&c_arg); - if (!NIL_P(RHASH(obj)->ifnone)) { - w_object(RHASH(obj)->ifnone, arg, limit); + if (!NIL_P(RHASH_IFNONE(obj))) { + w_object(RHASH_IFNONE(obj), arg, limit); } break; @@ -825,41 +844,33 @@ w_object(VALUE obj, struct dump_arg *arg, int limit) } } -static VALUE -dump(struct dump_call_arg *arg) -{ - w_object(arg->obj, arg->arg, arg->limit); - if (arg->arg->dest) { - rb_io_write(arg->arg->dest, arg->arg->str); - rb_str_resize(arg->arg->str, 0); - } - return 0; -} - -static VALUE -dump_ensure(struct dump_arg *arg) +static void +clear_dump_arg(struct dump_arg *arg) { - if (!DATA_PTR(arg->wrapper)) return 0; + if (!arg->symbols) return; st_free_table(arg->symbols); + arg->symbols = 0; st_free_table(arg->data); + arg->data = 0; st_free_table(arg->compat_tbl); - if (arg->encodings) st_free_table(arg->encodings); - DATA_PTR(arg->wrapper) = 0; - arg->wrapper = 0; + arg->compat_tbl = 0; + if (arg->encodings) { + st_free_table(arg->encodings); + arg->encodings = 0; + } if (arg->taint) { OBJ_TAINT(arg->str); } if (arg->untrust) { OBJ_UNTRUST(arg->str); } - return 0; } /* * call-seq: * dump( obj [, anIO] , limit=--1 ) => anIO * - * Serializes obj and all descendent objects. If anIO is + * Serializes obj and all descendant objects. If anIO is * specified, the serialized data will be written to it, otherwise the * data will be returned as a String. If limit is specified, the * traversal of subobjects will be limited to that depth. If limit is @@ -880,14 +891,20 @@ dump_ensure(struct dump_arg *arg) * data = Marshal.dump(o) * obj = Marshal.load(data) * obj.sayHello #=> "hello\n" + * + * Marshal can't dump following objects: + * * anonymous Class/Module. + * * objects which related to its system (ex: Dir, File::Stat, IO, File, Socket and so on) + * * an instance of MatchData, Data, Method, UnboundMethod, Proc, Thread, ThreadGroup, Continuation + * * objects which defines singleton methods */ static VALUE marshal_dump(int argc, VALUE *argv) { VALUE obj, port, a1, a2; int limit = -1; - struct dump_arg arg; - struct dump_call_arg c_arg; + struct dump_arg *arg; + volatile VALUE wrapper; port = Qnil; rb_scan_args(argc, argv, "12", &obj, &a1, &a2); @@ -901,40 +918,40 @@ marshal_dump(int argc, VALUE *argv) else if (NIL_P(a1)) goto type_error; else port = a1; } - arg.dest = 0; - arg.symbols = st_init_numtable(); - arg.data = st_init_numtable(); - arg.taint = FALSE; - arg.untrust = FALSE; - arg.compat_tbl = st_init_numtable(); - arg.encodings = 0; - arg.str = rb_str_buf_new(0); - RBASIC(arg.str)->klass = 0; - arg.wrapper = Data_Wrap_Struct(rb_cData, mark_dump_arg, 0, &arg); + wrapper = TypedData_Make_Struct(rb_cData, struct dump_arg, &dump_arg_data, arg); + arg->dest = 0; + arg->symbols = st_init_numtable(); + arg->data = st_init_numtable(); + arg->taint = FALSE; + arg->untrust = FALSE; + arg->compat_tbl = st_init_numtable(); + arg->encodings = 0; + arg->str = rb_str_buf_new(0); if (!NIL_P(port)) { if (!rb_respond_to(port, s_write)) { type_error: rb_raise(rb_eTypeError, "instance of IO needed"); } - arg.dest = port; + arg->dest = port; if (rb_respond_to(port, s_binmode)) { rb_funcall2(port, s_binmode, 0, 0); - check_dump_arg(&arg, s_binmode); + check_dump_arg(arg, s_binmode); } } else { - port = arg.str; + port = arg->str; } - c_arg.obj = obj; - c_arg.arg = &arg; - c_arg.limit = limit; - - w_byte(MARSHAL_MAJOR, &arg); - w_byte(MARSHAL_MINOR, &arg); + w_byte(MARSHAL_MAJOR, arg); + w_byte(MARSHAL_MINOR, arg); - rb_ensure(dump, (VALUE)&c_arg, dump_ensure, (VALUE)&arg); - RBASIC(arg.str)->klass = rb_cString; + w_object(obj, arg, limit); + if (arg->dest) { + rb_io_write(arg->dest, arg->str); + rb_str_resize(arg->str, 0); + } + clear_dump_arg(arg); + RB_GC_GUARD(wrapper); return port; } @@ -948,33 +965,62 @@ struct load_arg { int taint; int untrust; st_table *compat_tbl; - VALUE wrapper; }; static void check_load_arg(struct load_arg *arg, ID sym) { - if (!DATA_PTR(arg->wrapper)) { + if (!arg->symbols) { rb_raise(rb_eRuntimeError, "Marshal.load reentered at %s", rb_id2name(sym)); } } +static void clear_load_arg(struct load_arg *arg); + static void mark_load_arg(void *ptr) { struct load_arg *p = ptr; - if (!ptr) + if (!p->symbols) return; rb_mark_tbl(p->data); rb_mark_hash(p->compat_tbl); } -static VALUE r_entry(VALUE v, struct load_arg *arg); +static void +free_load_arg(void *ptr) +{ + clear_load_arg(ptr); + xfree(ptr); +} + +static size_t +memsize_load_arg(const void *ptr) +{ + return ptr ? sizeof(struct load_arg) : 0; +} + +static const rb_data_type_t load_arg_data = { + "load_arg", + mark_load_arg, free_load_arg, memsize_load_arg +}; + +#define r_entry(v, arg) r_entry0(v, (arg)->data->num_entries, arg) +static VALUE r_entry0(VALUE v, st_index_t num, struct load_arg *arg); static VALUE r_object(struct load_arg *arg); static ID r_symbol(struct load_arg *arg); static VALUE path2class(VALUE path); +static st_index_t +r_prepare(struct load_arg *arg) +{ + st_index_t idx = arg->data->num_entries; + + st_insert(arg->data, (st_data_t)idx, (st_data_t)Qundef); + return idx; +} + static int r_byte(struct load_arg *arg) { @@ -1079,10 +1125,12 @@ r_bytes0(long len, struct load_arg *arg) } static int -id2encidx(ID id, VALUE val) +id2encidx(ID id, VALUE val, struct load_arg *arg) { if (id == rb_id_encoding()) { - return rb_enc_find_index(StringValueCStr(val)); + int idx = rb_enc_find_index(StringValueCStr(val)); + r_entry(val, arg); + return idx; } else if (id == rb_intern("E")) { if (val == Qfalse) return rb_usascii_encindex(); @@ -1110,18 +1158,20 @@ r_symreal(struct load_arg *arg, int ivar) volatile VALUE s = r_bytes(arg); ID id; int idx = -1; + st_index_t n = arg->symbols->num_entries; + st_insert(arg->symbols, (st_data_t)n, (st_data_t)0); if (ivar) { long num = r_long(arg); while (num-- > 0) { id = r_symbol(arg); - idx = id2encidx(id, r_object(arg)); + idx = id2encidx(id, r_object(arg), arg); } } if (idx < 0) idx = rb_usascii_encindex(); rb_enc_associate_index(s, idx); id = rb_intern_str(s); - st_insert(arg->symbols, arg->symbols->num_entries, id); + st_insert(arg->symbols, (st_data_t)n, (st_data_t)id); return id; } @@ -1162,14 +1212,14 @@ r_string(struct load_arg *arg) } static VALUE -r_entry(VALUE v, struct load_arg *arg) +r_entry0(VALUE v, st_index_t num, struct load_arg *arg) { st_data_t real_obj = (VALUE)Qundef; if (st_lookup(arg->compat_tbl, v, &real_obj)) { - st_insert(arg->data, arg->data->num_entries, (st_data_t)real_obj); + st_insert(arg->data, num, (st_data_t)real_obj); } else { - st_insert(arg->data, arg->data->num_entries, (st_data_t)v); + st_insert(arg->data, num, (st_data_t)v); } if (arg->taint) { OBJ_TAINT(v); @@ -1216,7 +1266,7 @@ r_ivar(VALUE obj, struct load_arg *arg) do { ID id = r_symbol(arg); VALUE val = r_object(arg); - int idx = id2encidx(id, val); + int idx = id2encidx(id, val, arg); if (idx >= 0) { rb_enc_associate_index(obj, idx); } @@ -1274,6 +1324,35 @@ obj_alloc_by_path(VALUE path, struct load_arg *arg) #define div0(x) ruby_div0(x) +static int +has_encoding(struct load_arg *arg) +{ + int res = FALSE; + long offset = arg->offset; + r_long(arg); + switch (r_byte(arg)) { + case TYPE_SYMBOL: + switch (r_byte(arg)) { + case 6: + if (r_byte(arg) == 'E') res = TRUE; + break; + case 13: + if (r_byte(arg) == 'e') res = TRUE; + break; + } + break; + case TYPE_SYMLINK: + { + ID id = r_symlink(arg); + if (id == rb_intern("E") || id == rb_id_encoding()) + res = TRUE; + } + break; + } + arg->offset = offset; + return res; +} + static VALUE r_object0(struct load_arg *arg, int *ivp, VALUE extmod) { @@ -1444,20 +1523,18 @@ r_object0(struct load_arg *arg, int *ivp, VALUE extmod) { volatile VALUE str = r_bytes(arg); int options = r_byte(arg); - v = rb_reg_new("", 0, options); - if (ivp) { - r_ivar(v, arg); - *ivp = FALSE; - } - if (rb_enc_get_index(v) != rb_usascii_encindex()) - rb_enc_copy(str, v); - if (rb_enc_get_index(str) != rb_utf8_encindex()) { -#define f_gsub_bang(x,y,z) rb_funcall(x, rb_intern("gsub!"), 2, y, z) - f_gsub_bang(str, rb_reg_new("\\\\u", 3, 0), rb_usascii_str_new_cstr("u")); + + if (!ivp || !has_encoding(arg)) { + VALUE pat; + VALUE dst; + static const char rsrc[] = + "(?ifnone = r_object(arg); + RHASH_IFNONE(v) = r_object(arg); } v = r_leave(v, arg); } @@ -1495,14 +1572,12 @@ r_object0(struct load_arg *arg, int *ivp, VALUE extmod) case TYPE_STRUCT: { - VALUE klass, mem; - VALUE values; + VALUE mem, values; volatile long i; /* gcc 2.7.2.3 -O2 bug?? */ - long len; ID slot; - - klass = path2class(r_unique(arg)); - len = r_long(arg); + st_index_t idx = r_prepare(arg); + VALUE klass = path2class(r_unique(arg)); + long len = r_long(arg); v = rb_obj_alloc(klass); if (TYPE(v) != T_STRUCT) { @@ -1514,7 +1589,7 @@ r_object0(struct load_arg *arg, int *ivp, VALUE extmod) rb_class2name(klass)); } - v = r_entry(v, arg); + v = r_entry0(v, idx, arg); values = rb_ary_new2(len); for (i=0; iwrapper)) return 0; + if (!arg->symbols) return; st_free_table(arg->symbols); + arg->symbols = 0; st_free_table(arg->data); + arg->data = 0; st_free_table(arg->compat_tbl); - DATA_PTR(arg->wrapper) = 0; - arg->wrapper = 0; - return 0; + arg->compat_tbl = 0; } /* @@ -1710,37 +1780,40 @@ static VALUE marshal_load(int argc, VALUE *argv) { VALUE port, proc; - int major, minor; + int major, minor, taint = FALSE; VALUE v; - struct load_arg arg; + volatile VALUE wrapper; + struct load_arg *arg; rb_scan_args(argc, argv, "11", &port, &proc); v = rb_check_string_type(port); if (!NIL_P(v)) { - arg.taint = OBJ_TAINTED(port); /* original taintedness */ + taint = OBJ_TAINTED(port); /* original taintedness */ port = v; } else if (rb_respond_to(port, s_getbyte) && rb_respond_to(port, s_read)) { if (rb_respond_to(port, s_binmode)) { rb_funcall2(port, s_binmode, 0, 0); } - arg.taint = TRUE; + taint = TRUE; } else { rb_raise(rb_eTypeError, "instance of IO needed"); } - arg.untrust = OBJ_UNTRUSTED(port); - arg.src = port; - arg.offset = 0; - arg.symbols = st_init_numtable(); - arg.data = st_init_numtable(); - arg.compat_tbl = st_init_numtable(); - arg.proc = 0; - arg.wrapper = Data_Wrap_Struct(rb_cData, mark_load_arg, 0, &arg); - - major = r_byte(&arg); - minor = r_byte(&arg); + wrapper = TypedData_Make_Struct(rb_cData, struct load_arg, &load_arg_data, arg); + arg->taint = taint; + arg->untrust = OBJ_UNTRUSTED(port); + arg->src = port; + arg->offset = 0; + arg->symbols = st_init_numtable(); + arg->data = st_init_numtable(); + arg->compat_tbl = st_init_numtable(); + arg->proc = 0; + + major = r_byte(arg); + minor = r_byte(arg); if (major != MARSHAL_MAJOR || minor > MARSHAL_MINOR) { + clear_load_arg(arg); rb_raise(rb_eTypeError, "incompatible marshal file format (can't be read)\n\ \tformat version %d.%d required; %d.%d given", MARSHAL_MAJOR, MARSHAL_MINOR, major, minor); @@ -1751,8 +1824,10 @@ marshal_load(int argc, VALUE *argv) MARSHAL_MAJOR, MARSHAL_MINOR, major, minor); } - if (!NIL_P(proc)) arg.proc = proc; - v = rb_ensure(load, (VALUE)&arg, load_ensure, (VALUE)&arg); + if (!NIL_P(proc)) arg->proc = proc; + v = r_object(arg); + clear_load_arg(arg); + RB_GC_GUARD(wrapper); return v; } diff --git a/math.c b/math.c index 51caf35c5d4c96..1a448b871332ea 100644 --- a/math.c +++ b/math.c @@ -600,7 +600,7 @@ math_erfc(VALUE obj, VALUE x) * Calculates the gamma function of x. * * Note that gamma(n) is same as fact(n-1) for integer n > 0. - * However gamma(n) returns float and possibly has error in calculation. + * However gamma(n) returns float and can be an approximation. * * def fact(n) (1..n).inject(1) {|r,i| r*i } end * 1.upto(26) {|i| p [i, Math.gamma(i), fact(i-1)] } @@ -666,14 +666,13 @@ math_gamma(VALUE obj, VALUE x) }; double d0, d; double intpart, fracpart; - int n; Need_Float(x); d0 = RFLOAT_VALUE(x); fracpart = modf(d0, &intpart); if (fracpart == 0.0 && - 0 < intpart && - (n = (int)intpart - 1) < numberof(fact_table)) { - return DBL2NUM(fact_table[n]); + 0 < intpart && + intpart - 1 < (double)numberof(fact_table)) { + return DBL2NUM(fact_table[(int)intpart - 1]); } errno = 0; d = tgamma(d0); diff --git a/method.h b/method.h index 8090b6354f273f..177d7bc67762ac 100644 --- a/method.h +++ b/method.h @@ -21,7 +21,8 @@ typedef enum { NOEX_UNDEF = NOEX_NOSUPER, NOEX_MODFUNC = 0x12, NOEX_SUPER = 0x20, - NOEX_VCALL = 0x40 + NOEX_VCALL = 0x40, + NOEX_RESPONDS = 0x80 } rb_method_flag_t; #define NOEX_SAFE(n) ((int)((n) >> 8) & 0x0F) @@ -39,7 +40,8 @@ typedef enum { VM_METHOD_TYPE_ZSUPER, VM_METHOD_TYPE_UNDEF, VM_METHOD_TYPE_NOTIMPLEMENTED, - VM_METHOD_TYPE_OPTIMIZED /* Kernel#send, Proc#call, etc */ + VM_METHOD_TYPE_OPTIMIZED, /* Kernel#send, Proc#call, etc */ + VM_METHOD_TYPE_MISSING /* wrapper for method_missing(id) */ } rb_method_type_t; typedef struct rb_method_cfunc_struct { diff --git a/misc/rdoc-mode.el b/misc/rdoc-mode.el new file mode 100644 index 00000000000000..d04af491567669 --- /dev/null +++ b/misc/rdoc-mode.el @@ -0,0 +1,82 @@ +;; +;; rdoc-mode.el +;; Major mode for RDoc editing +;; + +;; Created: Fri Sep 18 09:04:49 JST 2009 + +;; License: Ruby's + +(require 'derived) +(define-derived-mode rdoc-mode text-mode "RDoc" + "Major mode for RD editing. +\\{rdoc-mode-map}" + (make-local-variable 'paragraph-separate) + (setq paragraph-separate "^\\(=+\\|\\*+\\)\\s \\|^\\s *$") + (make-local-variable 'paragraph-start) + (setq paragraph-start paragraph-separate) + (make-local-variable 'require-final-newline) + (setq require-final-newline t) + (make-local-variable 'font-lock-defaults) + (setq font-lock-defaults '((rdoc-font-lock-keywords) t nil)) + (make-local-variable 'font-lock-keywords) + (setq font-lock-keywords rdoc-font-lock-keywords) + (make-local-variable 'outline-regexp) + (setq outline-regexp "^\\(=+\\)\\s ") + (outline-minor-mode t) + (rdoc-setup-keys) + (setq indent-tabs-mode nil) + (run-hooks 'rdoc-mode-hook) + ) + +(defun rdoc-fill-paragraph (&rest args) + "Fills paragraph, except for cited region" + (interactive (progn + (barf-if-buffer-read-only) + (list (if current-prefix-arg 'full)))) + (save-excursion + (beginning-of-line) + (unless (looking-at "^ +") + (apply 'fill-paragraph args)))) + +(defun rdoc-setup-keys () + (interactive) + (define-key rdoc-mode-map "\M-q" 'rdoc-fill-paragraph) + ) + +(defvar rdoc-heading1-face 'font-lock-keywordoc-face) +(defvar rdoc-heading2-face 'font-lock-type-face) +(defvar rdoc-heading3-face 'font-lock-variable-name-face) +(defvar rdoc-heading4-face 'font-lock-comment-face) +(defvar rdoc-bold-face 'font-lock-function-name-face) +(defvar rdoc-emphasis-face 'font-lock-function-name-face) +(defvar rdoc-code-face 'font-lock-keyword-face) +(defvar rdoc-description-face 'font-lock-constant-face) + +(defvar rdoc-font-lock-keywords + (list + (list "^= .*$" + 0 rdoc-heading1-face) + (list "^== .*$" + 0 rdoc-heading2-face) + (list "^=== .*$" + 0 rdoc-heading3-face) + (list "^=====* .*$" + 0 rdoc-heading4-face) + (list "\\(^\\|\\s \\)\\(\\*\\(\\sw\\|[-_:]\\)+\\*\\)\\($\\|\\s \\)" + 2 rdoc-bold-face) ; *bold* + (list "\\(^\\|\\s \\)\\(_\\(\\sw\\|[-_:]\\)+_\\)\\($\\|\\s \\)" + 2 rdoc-emphasis-face) ; _emphasis_ + (list "\\(^\\|\\s \\)\\(\\+\\(\\sw\\|[-_:]\\)+\\+\\)\\($\\|\\s \\)" + 2 rdoc-code-face) ; +code+ + (list "[^<>]*" 0 rdoc-emphasis-face) + (list "[^<>]*" 0 rdoc-emphasis-face) + (list "[^<>]*" 0 rdoc-bold-face) + (list "[^<>]*" 0 rdoc-code-face) + (list "[^<>]*" 0 rdoc-code-face) + (list "^\\([-*]\\|[0-9]+\\.\\|[A-Za-z]\\.\\)\\s " + 1 rdoc-description-face) ; bullet | numbered | alphabetically numbered + (list "^\\[[^\]]*\\]\\|\\S .*::\\)\\(\\s \\|$\\)" + 1 rdoc-description-face) ; labeled | node + ;(list "^\\s +\\(.*\\)" 1 rdoc-verbatim-face) + )) diff --git a/node.h b/node.h index 02338fc94203c4..c0fb774bc6f09b 100644 --- a/node.h +++ b/node.h @@ -272,7 +272,7 @@ typedef struct RNode { #define NODE_LSHIFT (NODE_TYPESHIFT+7) #define NODE_LMASK (((SIGNED_VALUE)1<<(sizeof(VALUE)*CHAR_BIT-NODE_LSHIFT))-1) -#define nd_line(n) (RNODE(n)->flags>>NODE_LSHIFT) +#define nd_line(n) (int)(RNODE(n)->flags>>NODE_LSHIFT) #define nd_set_line(n,l) \ RNODE(n)->flags=((RNODE(n)->flags&~(-1< true or false + * flt <= real -> true or false * * true if flt is less than * or equal to real. @@ -2669,7 +2669,7 @@ fix_lt(VALUE x, VALUE y) /* * call-seq: - * fix <= rael -> true or false + * fix <= real -> true or false * * Returns true if the value of fix is * less than or equal to that of real. diff --git a/object.c b/object.c index 156d358fc08631..10eb983078c277 100644 --- a/object.c +++ b/object.c @@ -38,7 +38,7 @@ static ID id_eq, id_eql, id_match, id_inspect, id_init_copy; * obj === other => true or false * * Case Equality---For class Object, effectively the same - * as calling #==, but typically overridden by descendents + * as calling #==, but typically overridden by descendants * to provide meaningful semantics in case statements. */ @@ -67,7 +67,7 @@ rb_eql(VALUE obj1, VALUE obj2) * * Equality---At the Object level, == returns * true only if obj and other are the - * same object. Typically, this method is overridden in descendent + * same object. Typically, this method is overridden in descendant * classes to provide class-specific meaning. * * Unlike ==, the equal? method should never be @@ -257,9 +257,9 @@ rb_obj_clone(VALUE obj) * dup copies the tainted state of obj. See also * the discussion under Object#clone. In general, * clone and dup may have different semantics - * in descendent classes. While clone is used to duplicate + * in descendant classes. While clone is used to duplicate * an object, including its internal state, dup typically - * uses the class of the descendent object to create the new instance. + * uses the class of the descendant object to create the new instance. * * This method may have class-specific behavior. If so, that * behavior will be documented under the #+initialize_copy+ method of @@ -367,19 +367,21 @@ inspect_obj(VALUE obj, VALUE str, int recur) * obj.inspect => string * * Returns a string containing a human-readable representation of - * obj. If not overridden, uses the to_s method to + * obj. If not overridden and no instance variables, uses the + * to_s method to generate the string. + * obj. If not overridden, uses the to_s method to * generate the string. * * [ 1, 2, 3..4, 'five' ].inspect #=> "[1, 2, 3..4, \"five\"]" * Time.new.inspect #=> "2008-03-08 19:43:39 +0900" */ +extern int rb_obj_basic_to_s_p(VALUE); static VALUE rb_obj_inspect(VALUE obj) { - - if (TYPE(obj) == T_OBJECT) { + if (TYPE(obj) == T_OBJECT && rb_obj_basic_to_s_p(obj)) { int has_ivar = 0; VALUE *ptr = ROBJECT_IVPTR(obj); long len = ROBJECT_NUMIV(obj); @@ -399,6 +401,7 @@ rb_obj_inspect(VALUE obj) str = rb_sprintf("-<%s:%p", c, (void*)obj); return rb_exec_recursive(inspect_obj, obj, str); } + return rb_any_to_s(obj); } return rb_funcall(obj, rb_intern("to_s"), 0, 0); } @@ -1089,7 +1092,7 @@ rb_false(VALUE obj) * call-seq: * obj =~ other => nil * - * Pattern Match---Overridden by descendents (notably + * Pattern Match---Overridden by descendants (notably * Regexp and String) to provide meaningful * pattern-match semantics. */ @@ -1116,6 +1119,15 @@ rb_obj_not_match(VALUE obj1, VALUE obj2) } +/* :nodoc: */ +static VALUE +rb_obj_cmp(VALUE obj1, VALUE obj2) +{ + if (obj1 == obj2 || rb_obj_equal(obj1, obj2)) + return INT2FIX(0); + return Qnil; +} + /*********************************************************************** * * Document-class: Module @@ -1127,7 +1139,7 @@ rb_obj_not_match(VALUE obj1, VALUE obj2) * called without creating an encapsulating object, while instance * methods may not. (See Module#module_function) * - * In the descriptions that follow, the parameter syml refers + * In the descriptions that follow, the parameter sym refers * to a symbol, which is either a quoted string or a * Symbol (such as :name). * @@ -1197,7 +1209,7 @@ rb_mod_freeze(VALUE mod) * mod === obj => true or false * * Case Equality---Returns true if anObject is an - * instance of mod or one of mod's descendents. Of + * instance of mod or one of mod's descendants. Of * limited use for modules, but can be used in case * statements to classify objects by class. */ @@ -1711,9 +1723,9 @@ rb_mod_const_defined(int argc, VALUE *argv, VALUE mod) * end * end * k = Klass.new - * k.methods[0..9] #=> ["kMethod", "freeze", "nil?", "is_a?", - * # "class", "instance_variable_set", - * # "methods", "extend", "__send__", "instance_eval"] + * k.methods[0..9] #=> [:kMethod, :freeze, :nil?, :is_a?, + * # :class, :instance_variable_set, + * # :methods, :extend, :__send__, :instance_eval] * k.methods.length #=> 42 */ @@ -1993,6 +2005,7 @@ convert_type(VALUE val, const char *tname, const char *method, int raise) { ID m = 0; int i; + VALUE r; for (i=0; conv_method_names[i].method; i++) { if (conv_method_names[i].method[0] == method[0] && @@ -2002,7 +2015,8 @@ convert_type(VALUE val, const char *tname, const char *method, int raise) } } if (!m) m = rb_intern(method); - if (!rb_respond_to(val, m)) { + r = rb_check_funcall(val, m, 0, 0); + if (r == Qundef) { if (raise) { rb_raise(rb_eTypeError, "can't convert %s into %s", NIL_P(val) ? "nil" : @@ -2011,11 +2025,9 @@ convert_type(VALUE val, const char *tname, const char *method, int raise) rb_obj_classname(val), tname); } - else { - return Qnil; - } + return Qnil; } - return rb_funcall(val, m, 0); + return r; } VALUE @@ -2087,13 +2099,14 @@ rb_to_int(VALUE val) return rb_to_integer(val, "to_int"); } -VALUE -rb_Integer(VALUE val) +static VALUE +rb_convert_to_integer(VALUE val, int base) { VALUE tmp; switch (TYPE(val)) { case T_FLOAT: + if (base != 0) goto arg_error; if (RFLOAT_VALUE(val) <= (double)FIXNUM_MAX && RFLOAT_VALUE(val) >= (double)FIXNUM_MIN) { break; @@ -2102,36 +2115,55 @@ rb_Integer(VALUE val) case T_FIXNUM: case T_BIGNUM: + if (base != 0) goto arg_error; return val; case T_STRING: - return rb_str_to_inum(val, 0, TRUE); + string_conv: + return rb_str_to_inum(val, base, TRUE); case T_NIL: + if (base != 0) goto arg_error; rb_raise(rb_eTypeError, "can't convert nil into Integer"); break; default: break; } + if (base != 0) { + tmp = rb_check_string_type(val); + if (!NIL_P(tmp)) goto string_conv; + arg_error: + rb_raise(rb_eArgError, "base specified for non string value"); + } tmp = convert_type(val, "Integer", "to_int", FALSE); if (NIL_P(tmp)) { return rb_to_integer(val, "to_i"); } return tmp; + +} + +VALUE +rb_Integer(VALUE val) +{ + return rb_convert_to_integer(val, 0); } /* * call-seq: - * Integer(arg) => integer + * Integer(arg,base=0) => integer * * Converts arg to a Fixnum or Bignum. * Numeric types are converted directly (with floating point numbers - * being truncated). If arg is a String, leading - * radix indicators (0, 0b, and - * 0x) are honored. Others are converted using - * to_int and to_i. This behavior is - * different from that of String#to_i. + * being truncated). base (0, or between 2 and 36) is a base for + * integer string representation. If arg is a String, + * when base is omitted or equals to zero, radix indicators + * (0, 0b, and 0x) are honored. + * In any case, strings should be strictly conformed to numeric + * representation. This behavior is different from that of + * String#to_i. Non string values will be converted using + * to_int, and to_i. * * Integer(123.999) #=> 123 * Integer("0x1a") #=> 26 @@ -2139,9 +2171,22 @@ rb_Integer(VALUE val) */ static VALUE -rb_f_integer(VALUE obj, VALUE arg) +rb_f_integer(int argc, VALUE *argv, VALUE obj) { - return rb_Integer(arg); + VALUE arg = Qnil; + int base = 0; + + switch (argc) { + case 2: + base = NUM2INT(argv[1]); + case 1: + arg = argv[0]; + break; + default: + /* should cause ArgumentError */ + rb_scan_args(argc, argv, "11", NULL, NULL); + } + return rb_convert_to_integer(arg, base); } double @@ -2519,6 +2564,7 @@ Init_Object(void) rb_define_method(rb_mKernel, "!~", rb_obj_not_match, 1); rb_define_method(rb_mKernel, "eql?", rb_obj_equal, 1); rb_define_method(rb_mKernel, "hash", rb_obj_hash, 0); + rb_define_method(rb_mKernel, "<=>", rb_obj_cmp, 1); rb_define_method(rb_mKernel, "class", rb_obj_class, 0); rb_define_method(rb_mKernel, "clone", rb_obj_clone, 0); @@ -2556,7 +2602,7 @@ Init_Object(void) rb_define_global_function("sprintf", rb_f_sprintf, -1); /* in sprintf.c */ rb_define_global_function("format", rb_f_sprintf, -1); /* in sprintf.c */ - rb_define_global_function("Integer", rb_f_integer, 1); + rb_define_global_function("Integer", rb_f_integer, -1); rb_define_global_function("Float", rb_f_float, 1); rb_define_global_function("String", rb_f_string, 1); diff --git a/pack.c b/pack.c index 172534404d4bcc..80b6ab51374447 100644 --- a/pack.c +++ b/pack.c @@ -25,7 +25,7 @@ #ifdef NATINT_PACK # define OFF16B(p) ((char*)(p) + (natint?0:(sizeof(short) - SIZE16))) # define OFF32B(p) ((char*)(p) + (natint?0:(sizeof(long) - SIZE32))) -# define NATINT_LEN(type,len) (natint?sizeof(type):(len)) +# define NATINT_LEN(type,len) (natint?(int)sizeof(type):(int)(len)) # ifdef WORDS_BIGENDIAN # define OFF16(p) OFF16B(p) # define OFF32(p) OFF32B(p) @@ -35,7 +35,7 @@ # define NATINT_HTONS(x) (natint?htons(x):hton16(x)) # define NATINT_HTONL(x) (natint?htonl(x):hton32(x)) #else -# define NATINT_LEN(type,len) sizeof(type) +# define NATINT_LEN(type,len) ((int)sizeof(type)) # define NATINT_HTOVS(x) htovs(x) # define NATINT_HTOVL(x) htovl(x) # define NATINT_HTONS(x) htons(x) @@ -166,7 +166,7 @@ swapd(const double d) memcpy(&dtmp,utmp,sizeof(double)); return dtmp; } -#else /* SIZEOF_DOUBLE == 8 but undivied by known size of int */ +#else /* SIZEOF_DOUBLE == 8 but undivide by known size of int */ define_swapx(d, double) #endif /* #if SIZEOF_SHORT == 4 */ #endif /* #if SIZEOF_LONG == 4 */ @@ -428,7 +428,7 @@ static unsigned long utf8_to_uv(const char*,long*); * u | UU-encoded string * V | Long, little-endian byte order * v | Short, little-endian byte order - * w | BER-compressed integer\fnm + * w | BER-compressed integer * X | Back up a byte * x | Null byte * Z | Same as ``a'', except that null is added with * @@ -712,7 +712,7 @@ pack_pack(VALUE ary, VALUE fmt) int i; from = NEXTFROM; - i = num2i32(from); + i = (int)num2i32(from); rb_str_buf_cat(res, (char*)&i, sizeof(int)); } break; @@ -1287,7 +1287,7 @@ infected_str_new(const char *ptr, long len, VALUE str) * | | short in network byte order * -------+---------+----------------------------------------- * P | String | treat sizeof(char *) characters as a - * | | pointer, and return \emph{len} characters + * | | pointer, and return the length bytes * | | from the referenced location * -------+---------+----------------------------------------- * p | String | treat sizeof(char *) characters as a diff --git a/parse.y b/parse.y index 26283aa6e57f7e..b194f496116193 100644 --- a/parse.y +++ b/parse.y @@ -26,6 +26,8 @@ #include #include +#define numberof(array) (int)(sizeof(array) / sizeof((array)[0])) + #define YYMALLOC(size) rb_parser_malloc(parser, size) #define YYREALLOC(ptr, size) rb_parser_realloc(parser, ptr, size) #define YYCALLOC(nelem, size) rb_parser_calloc(parser, nelem, size) @@ -103,7 +105,6 @@ struct local_vars { #define DVARS_SPECIAL_P(tbl) (!POINTER_P(tbl)) #define POINTER_P(val) ((VALUE)(val) & ~(VALUE)3) -#ifndef RIPPER static int vtable_size(const struct vtable *tbl) { @@ -172,6 +173,7 @@ vtable_included(const struct vtable * tbl, ID id) } +#ifndef RIPPER typedef struct token_info { const char *token; int linenum; @@ -372,8 +374,6 @@ static NODE *call_uni_op_gen(struct parser_params*,NODE*,ID); static NODE *new_args_gen(struct parser_params*,NODE*,NODE*,ID,NODE*,ID); #define new_args(f,o,r,p,b) new_args_gen(parser, f,o,r,p,b) -static void shadowing_lvar_gen(struct parser_params*,ID); -#define shadowing_lvar(name) shadowing_lvar_gen(parser, name) static NODE *negate_lit(NODE*); static NODE *ret_args_gen(struct parser_params*,NODE*); @@ -386,8 +386,7 @@ static NODE *gettable_gen(struct parser_params*,ID); #define gettable(id) gettable_gen(parser,id) static NODE *assignable_gen(struct parser_params*,ID,NODE*); #define assignable(id,node) assignable_gen(parser, id, node) -static void new_bv_gen(struct parser_params*,ID); -#define new_bv(id) new_bv_gen(parser, id) + static NODE *aryset_gen(struct parser_params*,NODE*,NODE*); #define aryset(node1,node2) aryset_gen(parser, node1, node2) static NODE *attrset_gen(struct parser_params*,NODE*,ID); @@ -401,6 +400,46 @@ static NODE *node_assign_gen(struct parser_params*,NODE*,NODE*); static NODE *match_op_gen(struct parser_params*,NODE*,NODE*); #define match_op(node1,node2) match_op_gen(parser, node1, node2) +static ID *local_tbl_gen(struct parser_params*); +#define local_tbl() local_tbl_gen(parser) + +static void fixup_nodes(NODE **); + +extern int rb_dvar_defined(ID); +extern int rb_local_defined(ID); +extern int rb_parse_in_eval(void); +extern int rb_parse_in_main(void); + +static VALUE reg_compile_gen(struct parser_params*, VALUE, int); +#define reg_compile(str,options) reg_compile_gen(parser, str, options) +static void reg_fragment_setenc_gen(struct parser_params*, VALUE, int); +#define reg_fragment_setenc(str,options) reg_fragment_setenc_gen(parser, str, options) +static void reg_fragment_check_gen(struct parser_params*, VALUE, int); +#define reg_fragment_check(str,options) reg_fragment_check_gen(parser, str, options) +static NODE *reg_named_capture_assign_gen(struct parser_params* parser, VALUE regexp, NODE *match); +#define reg_named_capture_assign(regexp,match) reg_named_capture_assign_gen(parser,regexp,match) + +#define get_id(id) (id) +#define get_value(val) (val) +#else +#define remove_begin(node) (node) +#define rb_dvar_defined(id) 0 +#define rb_local_defined(id) 0 +static ID ripper_get_id(VALUE); +#define get_id(id) ripper_get_id(id) +static VALUE ripper_get_value(VALUE); +#define get_value(val) ripper_get_value(val) +static VALUE assignable_gen(struct parser_params*,VALUE); +#define assignable(lhs,node) assignable_gen(parser, lhs) +#endif /* !RIPPER */ + +static ID formal_argument_gen(struct parser_params*, ID); +#define formal_argument(id) formal_argument_gen(parser, id) +static ID shadowing_lvar_gen(struct parser_params*,ID); +#define shadowing_lvar(name) shadowing_lvar_gen(parser, name) +static void new_bv_gen(struct parser_params*,ID); +#define new_bv(id) new_bv_gen(parser, id) + static void local_push_gen(struct parser_params*,int); #define local_push(top) local_push_gen(parser,top) static void local_pop_gen(struct parser_params*); @@ -411,15 +450,13 @@ static int arg_var_gen(struct parser_params*, ID); #define arg_var(id) arg_var_gen(parser, id) static int local_id_gen(struct parser_params*, ID); #define local_id(id) local_id_gen(parser, id) -static ID *local_tbl_gen(struct parser_params*); -#define local_tbl() local_tbl_gen(parser) static ID internal_id_gen(struct parser_params*); #define internal_id() internal_id_gen(parser) -static void dyna_push_gen(struct parser_params*); +static const struct vtable *dyna_push_gen(struct parser_params *); #define dyna_push() dyna_push_gen(parser) -static void dyna_pop_gen(struct parser_params*); -#define dyna_pop() dyna_pop_gen(parser) +static void dyna_pop_gen(struct parser_params*, const struct vtable *); +#define dyna_pop(node) dyna_pop_gen(parser, node) static int dyna_in_block_gen(struct parser_params*); #define dyna_in_block() dyna_in_block_gen(parser) #define dyna_var(id) local_var(id) @@ -428,25 +465,6 @@ static int dvar_defined_gen(struct parser_params*,ID); static int dvar_curr_gen(struct parser_params*,ID); #define dvar_curr(id) dvar_curr_gen(parser, id) -static void fixup_nodes(NODE **); - -extern int rb_dvar_defined(ID); -extern int rb_local_defined(ID); -extern int rb_parse_in_eval(void); -extern int rb_parse_in_main(void); - -static VALUE reg_compile_gen(struct parser_params*, VALUE, int); -#define reg_compile(str,options) reg_compile_gen(parser, str, options) -static void reg_fragment_setenc_gen(struct parser_params*, VALUE, int); -#define reg_fragment_setenc(str,options) reg_fragment_setenc_gen(parser, str, options) -static void reg_fragment_check_gen(struct parser_params*, VALUE, int); -#define reg_fragment_check(str,options) reg_fragment_check_gen(parser, str, options) -static NODE *reg_named_capture_assign_gen(struct parser_params* parser, VALUE regexp, NODE *match); -#define reg_named_capture_assign(regexp,match) reg_named_capture_assign_gen(parser,regexp,match) -int rb_enc_symname2_p(const char *, int, rb_encoding *); -#else -#define remove_begin(node) (node) -#endif /* !RIPPER */ static int lvar_defined_gen(struct parser_params*, ID); #define lvar_defined(id) lvar_defined_gen(parser, id) @@ -495,7 +513,7 @@ static VALUE ripper_dispatch5(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,V #define yyparse ripper_yyparse -static VALUE ripper_intern(const char*); +#define ripper_intern(s) ID2SYM(rb_intern(s)) static VALUE ripper_id2sym(ID); #ifdef __GNUC__ #define ripper_id2sym(id) ((id) < 256 && rb_ispunct(id) ? \ @@ -504,7 +522,6 @@ static VALUE ripper_id2sym(ID); #define arg_new() dispatch0(args_new) #define arg_add(l,a) dispatch2(args_add, l, a) -#define arg_prepend(l,a) dispatch2(args_prepend, l, a) #define arg_add_star(l,a) dispatch2(args_add_star, l, a) #define arg_add_block(l,b) dispatch2(args_add_block, l, b) #define arg_add_optblock(l,b) ((b)==Qundef? l : dispatch2(args_add_block, l, b)) @@ -586,6 +603,11 @@ static void ripper_compile_error(struct parser_params*, const char *fmt, ...); #ifndef RIPPER static void token_info_push(struct parser_params*, const char *token); static void token_info_pop(struct parser_params*, const char *token); +#define token_info_push(token) (RTEST(ruby_verbose) ? token_info_push(parser, token) : (void)0) +#define token_info_pop(token) (RTEST(ruby_verbose) ? token_info_pop(parser, token) : (void)0) +#else +#define token_info_push(token) /* nothing */ +#define token_info_pop(token) /* nothing */ #endif %} @@ -597,6 +619,7 @@ static void token_info_pop(struct parser_params*, const char *token); NODE *node; ID id; int num; + const struct vtable *vars; } /*%%%*/ @@ -762,6 +785,7 @@ program : { $$ = compile_for_eval || rb_parse_in_main(); local_push($$); /*% + local_push(0); %*/ } compstmt @@ -779,11 +803,11 @@ program : { } } ruby_eval_tree = NEW_SCOPE(0, block_append(ruby_eval_tree, $2)); - local_pop(); /*% $$ = $2; parser->result = dispatch1(program, $$); %*/ + local_pop(); } ; @@ -811,7 +835,7 @@ bodystmt : compstmt } fixpos($$, $1); /*% - $$ = dispatch4(body_stmt, + $$ = dispatch4(bodystmt, escape_Qundef($1), escape_Qundef($2), escape_Qundef($3), @@ -965,10 +989,7 @@ stmt : keyword_alias fitem {lex_state = EXPR_FNAME;} fitem if (in_def || in_single) { yyerror("BEGIN in method"); } - /*%%%*/ /* local_push(0); */ - /*% - %*/ } '{' compstmt '}' { @@ -976,11 +997,11 @@ stmt : keyword_alias fitem {lex_state = EXPR_FNAME;} fitem ruby_eval_tree_begin = block_append(ruby_eval_tree_begin, $4); /* NEW_PREEXE($4)); */ - /* local_pop(); */ $$ = NEW_BEGIN(0); /*% $$ = dispatch1(BEGIN, $4); %*/ + /* local_pop(); */ } | keyword_END '{' compstmt '}' { @@ -1049,7 +1070,7 @@ stmt : keyword_alias fitem {lex_state = EXPR_FNAME;} fitem value_expr($6); if (!$3) $3 = NEW_ZARRAY(); - args = arg_concat($6, $3); + args = arg_concat($3, $6); if ($5 == tOROP) { $5 = 0; } @@ -1234,8 +1255,8 @@ block_command : block_call cmd_brace_block : tLBRACE_ARG { + $1 = dyna_push(); /*%%%*/ - dyna_push(); $$ = ruby_sourceline; /*% %*/ @@ -1247,10 +1268,10 @@ cmd_brace_block : tLBRACE_ARG /*%%%*/ $$ = NEW_ITER($3,$4); nd_set_line($$, $2); - dyna_pop(); /*% $$ = dispatch2(brace_block, escape_Qundef($3), $4); %*/ + dyna_pop($1); } ; @@ -1412,7 +1433,8 @@ mlhs_basic : mlhs_head /*%%%*/ $$ = NEW_MASGN($1, NEW_POSTARG($3,$5)); /*% - $$ = mlhs_add_star($1, $3); + $1 = mlhs_add_star($1, $3); + $$ = mlhs_add($1, $5); %*/ } | mlhs_head tSTAR @@ -1514,11 +1536,7 @@ mlhs_post : mlhs_item mlhs_node : variable { - /*%%%*/ $$ = assignable($1, 0); - /*% - $$ = $1; - %*/ } | primary_value '[' opt_call_args rbracket { @@ -1588,10 +1606,11 @@ mlhs_node : variable lhs : variable { + $$ = assignable($1, 0); /*%%%*/ - if (!($$ = assignable($1, 0))) $$ = NEW_BEGIN(0); + if (!$$) $$ = NEW_BEGIN(0); /*% - $$ = dispatch1(var_field, $1); + $$ = dispatch1(var_field, $$); %*/ } | primary_value '[' opt_call_args rbracket @@ -1883,7 +1902,7 @@ arg : lhs '=' arg value_expr($6); if (!$3) $3 = NEW_ZARRAY(); - args = arg_concat($6, $3); + args = arg_concat($3, $6); if ($5 == tOROP) { $5 = 0; } @@ -2806,8 +2825,8 @@ primary : literal { if (in_def || in_single) yyerror("class definition in method body"); - /*%%%*/ local_push(0); + /*%%%*/ $$ = ruby_sourceline; /*% %*/ @@ -2818,10 +2837,10 @@ primary : literal /*%%%*/ $$ = NEW_CLASS($2, $5, $3); nd_set_line($$, $4); - local_pop(); /*% $$ = dispatch3(class, $2, $3, $5); %*/ + local_pop(); } | k_class tLSHFT expr { @@ -2832,10 +2851,7 @@ primary : literal { $$ = in_single; in_single = 0; - /*%%%*/ local_push(0); - /*% - %*/ } bodystmt k_end @@ -2843,10 +2859,10 @@ primary : literal /*%%%*/ $$ = NEW_SCLASS($3, $7); fixpos($$, $3); - local_pop(); /*% $$ = dispatch2(sclass, $3, $7); %*/ + local_pop(); in_def = $4; in_single = $6; } @@ -2854,8 +2870,8 @@ primary : literal { if (in_def || in_single) yyerror("module definition in method body"); - /*%%%*/ local_push(0); + /*%%%*/ $$ = ruby_sourceline; /*% %*/ @@ -2866,20 +2882,17 @@ primary : literal /*%%%*/ $$ = NEW_MODULE($2, $4); nd_set_line($$, $3); - local_pop(); /*% $$ = dispatch2(module, $2, $4); %*/ + local_pop(); } | k_def fname { $$ = cur_mid; cur_mid = $2; in_def++; - /*%%%*/ local_push(0); - /*% - %*/ } f_arglist bodystmt @@ -2890,10 +2903,10 @@ primary : literal reduce_nodes(&body); $$ = NEW_DEFN($2, $4, body, NOEX_PRIVATE); fixpos($$, $4); - local_pop(); /*% $$ = dispatch3(def, $2, $4, $5); %*/ + local_pop(); in_def--; cur_mid = $3; } @@ -2901,10 +2914,7 @@ primary : literal { in_single++; lex_state = EXPR_END; /* force for args */ - /*%%%*/ local_push(0); - /*% - %*/ } f_arglist bodystmt @@ -2915,10 +2925,10 @@ primary : literal reduce_nodes(&body); $$ = NEW_DEFS($2, $5, $7, body); fixpos($$, $2); - local_pop(); /*% $$ = dispatch5(defs, $2, $3, $5, $7, $8); %*/ + local_pop(); in_single--; } | keyword_break @@ -2969,89 +2979,67 @@ primary_value : primary k_begin : keyword_begin { -#ifndef RIPPER - if (RTEST(ruby_verbose)) token_info_push(parser, "begin"); -#endif + token_info_push("begin"); } ; k_if : keyword_if { -#ifndef RIPPER - if (RTEST(ruby_verbose)) token_info_push(parser, "if"); -#endif + token_info_push("if"); } ; k_unless : keyword_unless { -#ifndef RIPPER - if (RTEST(ruby_verbose)) token_info_push(parser, "unless"); -#endif + token_info_push("unless"); } ; k_while : keyword_while { -#ifndef RIPPER - if (RTEST(ruby_verbose)) token_info_push(parser, "while"); -#endif + token_info_push("while"); } ; k_until : keyword_until { -#ifndef RIPPER - if (RTEST(ruby_verbose)) token_info_push(parser, "until"); -#endif + token_info_push("until"); } ; k_case : keyword_case { -#ifndef RIPPER - if (RTEST(ruby_verbose)) token_info_push(parser, "case"); -#endif + token_info_push("case"); } ; k_for : keyword_for { -#ifndef RIPPER - if (RTEST(ruby_verbose)) token_info_push(parser, "for"); -#endif + token_info_push("for"); } ; k_class : keyword_class { -#ifndef RIPPER - if (RTEST(ruby_verbose)) token_info_push(parser, "class"); -#endif + token_info_push("class"); } ; k_module : keyword_module { -#ifndef RIPPER - if (RTEST(ruby_verbose)) token_info_push(parser, "module"); -#endif + token_info_push("module"); } ; k_def : keyword_def { -#ifndef RIPPER - if (RTEST(ruby_verbose)) token_info_push(parser, "def"); -#endif + token_info_push("def"); } ; k_end : keyword_end { -#ifndef RIPPER - if (RTEST(ruby_verbose)) token_info_pop(parser, "end"); /* POP */ -#endif + token_info_pop("end"); } ; @@ -3107,10 +3095,10 @@ for_var : lhs f_marg : f_norm_arg { - /*%%%*/ $$ = assignable($1, 0); + /*%%%*/ /*% - $$ = dispatch1(mlhs_paren, $1); + $$ = dispatch1(mlhs_paren, $$); %*/ } | tLPAREN f_margs rparen @@ -3151,18 +3139,20 @@ f_margs : f_marg_list } | f_marg_list ',' tSTAR f_norm_arg { + $$ = assignable($4, 0); /*%%%*/ - $$ = NEW_MASGN($1, assignable($4, 0)); + $$ = NEW_MASGN($1, $$); /*% - $$ = mlhs_add_star($1, $4); + $$ = mlhs_add_star($1, $$); %*/ } | f_marg_list ',' tSTAR f_norm_arg ',' f_marg_list { + $$ = assignable($4, 0); /*%%%*/ - $$ = NEW_MASGN($1, NEW_POSTARG(assignable($4, 0), $6)); + $$ = NEW_MASGN($1, NEW_POSTARG($$, $6)); /*% - $$ = mlhs_add_star($1, $4); + $$ = mlhs_add_star($1, $$); %*/ } | f_marg_list ',' tSTAR @@ -3183,21 +3173,23 @@ f_margs : f_marg_list } | tSTAR f_norm_arg { + $$ = assignable($2, 0); /*%%%*/ - $$ = NEW_MASGN(0, assignable($2, 0)); + $$ = NEW_MASGN(0, $$); /*% - $$ = mlhs_add_star(mlhs_new(), $2); + $$ = mlhs_add_star(mlhs_new(), $$); %*/ } | tSTAR f_norm_arg ',' f_marg_list { + $$ = assignable($2, 0); /*%%%*/ - $$ = NEW_MASGN(0, NEW_POSTARG(assignable($2, 0), $4)); + $$ = NEW_MASGN(0, NEW_POSTARG($$, $4)); /*% #if 0 TODO: Check me #endif - $$ = mlhs_add_star($2, $4); + $$ = mlhs_add_star($$, $4); %*/ } | tSTAR @@ -3344,7 +3336,7 @@ block_param : f_arg ',' f_block_optarg ',' f_rest_arg opt_f_block_arg opt_block_param : none | block_param_def { - command_start = Qtrue; + command_start = TRUE; } ; @@ -3392,7 +3384,7 @@ bv_decls : bvar /*%c%*/ /*%c { - $$ = rb_ary_new2($1); + $$ = rb_ary_new3(1, $1); } %*/ | bv_decls ',' bvar @@ -3406,10 +3398,10 @@ bv_decls : bvar bvar : tIDENTIFIER { + new_bv(get_id($1)); /*%%%*/ - new_bv($1); /*% - $$ = $1; + $$ = get_value($1); %*/ } | f_bad_arg @@ -3419,24 +3411,23 @@ bvar : tIDENTIFIER ; lambda : { - /*%%%*/ - dyna_push(); - /*% - %*/ + $$ = dyna_push(); + } + { $$ = lpar_beg; lpar_beg = ++paren_nest; } f_larglist lambda_body { - lpar_beg = $1; + lpar_beg = $2; /*%%%*/ - $$ = $2; - $$->nd_body = NEW_SCOPE($2->nd_head, $3); - dyna_pop(); + $$ = $3; + $$->nd_body = NEW_SCOPE($3->nd_head, $4); /*% - $$ = dispatch2(lambda, $2, $3); + $$ = dispatch2(lambda, $3, $4); %*/ + dyna_pop($1); } ; @@ -3470,8 +3461,8 @@ lambda_body : tLAMBEG compstmt '}' do_block : keyword_do_block { + $1 = dyna_push(); /*%%%*/ - dyna_push(); $$ = ruby_sourceline; /*% %*/ } @@ -3482,10 +3473,10 @@ do_block : keyword_do_block /*%%%*/ $$ = NEW_ITER($3,$4); nd_set_line($$, $2); - dyna_pop(); /*% $$ = dispatch2(do_block, escape_Qundef($3), $4); %*/ + dyna_pop($1); } ; @@ -3568,8 +3559,8 @@ method_call : operation paren_args $$ = NEW_CALL($1, rb_intern("call"), $3); fixpos($$, $1); /*% - $$ = dispatch3(call, dispatch1(paren, $1), - ripper_id2sym('.'), rb_intern("call")); + $$ = dispatch3(call, $1, ripper_id2sym('.'), + ripper_intern("call")); $$ = method_optarg($$, $3); %*/ } @@ -3579,8 +3570,8 @@ method_call : operation paren_args $$ = NEW_CALL($1, rb_intern("call"), $3); fixpos($$, $1); /*% - $$ = dispatch3(call, dispatch1(paren, $1), - ripper_id2sym('.'), rb_intern("call")); + $$ = dispatch3(call, $1, ripper_intern("::"), + ripper_intern("call")); $$ = method_optarg($$, $3); %*/ } @@ -3616,8 +3607,8 @@ method_call : operation paren_args brace_block : '{' { + $1 = dyna_push(); /*%%%*/ - dyna_push(); $$ = ruby_sourceline; /*% %*/ @@ -3628,15 +3619,15 @@ brace_block : '{' /*%%%*/ $$ = NEW_ITER($3,$4); nd_set_line($$, $2); - dyna_pop(); /*% $$ = dispatch2(brace_block, escape_Qundef($3), $4); %*/ + dyna_pop($1); } | keyword_do { + $1 = dyna_push(); /*%%%*/ - dyna_push(); $$ = ruby_sourceline; /*% %*/ @@ -3647,10 +3638,10 @@ brace_block : '{' /*%%%*/ $$ = NEW_ITER($3,$4); nd_set_line($$, $2); - dyna_pop(); /*% $$ = dispatch2(do_block, escape_Qundef($3), $4); %*/ + dyna_pop($1); } ; @@ -4126,10 +4117,10 @@ var_ref : variable var_lhs : variable { - /*%%%*/ $$ = assignable($1, 0); + /*%%%*/ /*% - $$ = dispatch1(var_field, $1); + $$ = dispatch1(var_field, $$); %*/ } ; @@ -4174,7 +4165,7 @@ f_arglist : '(' f_args rparen $$ = dispatch1(paren, $2); %*/ lex_state = EXPR_BEG; - command_start = Qtrue; + command_start = TRUE; } | f_args term { @@ -4345,29 +4336,25 @@ f_bad_arg : tCONSTANT f_norm_arg : f_bad_arg | tIDENTIFIER { - /*%%%*/ - if (!is_local_id($1)) - yyerror("formal argument must be local variable"); - shadowing_lvar($1); - /*% - %*/ + formal_argument(get_id($1)); $$ = $1; } ; f_arg_item : f_norm_arg { + arg_var(get_id($1)); /*%%%*/ - arg_var($1); $$ = NEW_ARGS_AUX($1, 1); /*% + $$ = get_value($1); %*/ } | tLPAREN f_margs rparen { - /*%%%*/ ID tid = internal_id(); arg_var(tid); + /*%%%*/ if (dyna_in_block()) { $2->nd_value = NEW_DVAR(tid); } @@ -4404,28 +4391,24 @@ f_arg : f_arg_item f_opt : tIDENTIFIER '=' arg_value { + arg_var(formal_argument(get_id($1))); + $$ = assignable($1, $3); /*%%%*/ - if (!is_local_id($1)) - yyerror("formal argument must be local variable"); - shadowing_lvar($1); - arg_var($1); - $$ = NEW_OPT_ARG(0, assignable($1, $3)); + $$ = NEW_OPT_ARG(0, $$); /*% - $$ = rb_assoc_new($1, $3); + $$ = rb_assoc_new($$, $3); %*/ } ; f_block_opt : tIDENTIFIER '=' primary_value { + arg_var(formal_argument(get_id($1))); + $$ = assignable($1, $3); /*%%%*/ - if (!is_local_id($1)) - yyerror("formal argument must be local variable"); - shadowing_lvar($1); - arg_var($1); - $$ = NEW_OPT_ARG(0, assignable($1, $3)); + $$ = NEW_OPT_ARG(0, $$); /*% - $$ = rb_assoc_new($1, $3); + $$ = rb_assoc_new($$, $3); %*/ } ; @@ -4487,8 +4470,9 @@ f_rest_arg : restarg_mark tIDENTIFIER /*%%%*/ if (!is_local_id($2)) yyerror("rest argument must be local variable"); - shadowing_lvar($2); - arg_var($2); + /*% %*/ + arg_var(shadowing_lvar(get_id($2))); + /*%%%*/ $$ = $2; /*% $$ = dispatch1(rest_param, $2); @@ -4516,8 +4500,9 @@ f_block_arg : blkarg_mark tIDENTIFIER yyerror("block argument must be local variable"); else if (!dyna_in_block() && local_id($2)) yyerror("duplicated block argument name"); - shadowing_lvar($2); - arg_var($2); + /*% %*/ + arg_var(shadowing_lvar(get_id($2))); + /*%%%*/ $$ = $2; /*% $$ = dispatch1(blockarg, $2); @@ -4718,41 +4703,65 @@ static int parser_here_document(struct parser_params*,NODE*); # define heredoc_restore(n) parser_heredoc_restore(parser,n) # define whole_match_p(e,l,i) parser_whole_match_p(parser,e,l,i) -#ifdef RIPPER -/* FIXME */ -# define local_id(x) 1 -# define dyna_in_block() 1 -#endif /* RIPPER */ - #ifndef RIPPER # define set_yylval_str(x) yylval.node = NEW_STR(x) # define set_yylval_num(x) yylval.num = x # define set_yylval_id(x) yylval.id = x +# define set_yylval_name(x) yylval.id = x # define set_yylval_literal(x) yylval.node = NEW_LIT(x) # define set_yylval_node(x) yylval.node = x # define yylval_id() yylval.id #else +static inline VALUE +ripper_yylval_id(ID x) +{ + return (VALUE)NEW_LASGN(x, ID2SYM(x)); +} # define set_yylval_str(x) (void)(x) # define set_yylval_num(x) (void)(x) -# define set_yylval_id(x) (void)(x) +# define set_yylval_id(x) (void)(x) +# define set_yylval_name(x) (void)(yylval.val = ripper_yylval_id(x)) # define set_yylval_literal(x) (void)(x) # define set_yylval_node(x) (void)(x) -# define yylval_id() SYM2ID(yylval.val) +# define yylval_id() yylval.id #endif -#ifdef RIPPER +#ifndef RIPPER +#define ripper_flush(p) (void)(p) +#else #define ripper_flush(p) (p->tokp = p->parser_lex_p) -static void -ripper_dispatch_scan_event(struct parser_params *parser, int t) +#define yylval_rval *(RB_TYPE_P(yylval.val, T_NODE) ? &yylval.node->nd_rval : &yylval.val) + +static int +ripper_has_scan_event(struct parser_params *parser) { - VALUE str; if (lex_p < parser->tokp) rb_raise(rb_eRuntimeError, "lex_p < tokp"); - if (lex_p == parser->tokp) return; - str = STR_NEW(parser->tokp, lex_p - parser->tokp); - yylval.val = ripper_dispatch1(parser, ripper_token2eventid(t), str); + return lex_p > parser->tokp; +} + +static VALUE +ripper_scan_event_val(struct parser_params *parser, int t) +{ + VALUE str = STR_NEW(parser->tokp, lex_p - parser->tokp); + VALUE rval = ripper_dispatch1(parser, ripper_token2eventid(t), str); ripper_flush(parser); + return rval; +} + +static void +ripper_dispatch_scan_event(struct parser_params *parser, int t) +{ + if (!ripper_has_scan_event(parser)) return; + yylval_rval = ripper_scan_event_val(parser, t); +} + +static void +ripper_dispatch_ignored_scan_event(struct parser_params *parser, int t) +{ + if (!ripper_has_scan_event(parser)) return; + (void)ripper_scan_event_val(parser, t); } static void @@ -4763,7 +4772,7 @@ ripper_dispatch_delayed_token(struct parser_params *parser, int t) ruby_sourceline = parser->delayed_line; parser->tokp = lex_pbeg + parser->delayed_col; - yylval.val = ripper_dispatch1(parser, ripper_token2eventid(t), parser->delayed); + yylval_rval = ripper_dispatch1(parser, ripper_token2eventid(t), parser->delayed); parser->delayed = Qnil; ruby_sourceline = saved_line; parser->tokp = saved_tokp; @@ -4820,6 +4829,7 @@ token_info_has_nonspaces(struct parser_params *parser, const char *token) return 0; } +#undef token_info_push static void token_info_push(struct parser_params *parser, const char *token) { @@ -4836,6 +4846,7 @@ token_info_push(struct parser_params *parser, const char *token) parser->parser_token_info = ptinfo; } +#undef token_info_pop static void token_info_pop(struct parser_params *parser, const char *token) { @@ -4968,9 +4979,7 @@ coverage(const char *f, int n) static int e_option_supplied(struct parser_params *parser) { - if (strcmp(ruby_sourcefile, "-e") == 0) - return Qtrue; - return Qfalse; + return strcmp(ruby_sourcefile, "-e") == 0; } static VALUE @@ -5023,7 +5032,7 @@ yycompile(struct parser_params *parser, const char *f, int line) { ruby_sourcefile = ruby_strdup(f); ruby_sourceline = line - 1; - return (NODE *)ruby_suppress_tracing(yycompile0, (VALUE)parser, Qtrue); + return (NODE *)ruby_suppress_tracing(yycompile0, (VALUE)parser, TRUE); } #endif /* !RIPPER */ @@ -5223,7 +5232,7 @@ parser_nextc(struct parser_params *parser) rb_str_buf_cat(parser->delayed, parser->tokp, lex_pend - parser->tokp); parser->delayed_line = ruby_sourceline; - parser->delayed_col = parser->tokp - lex_pbeg; + parser->delayed_col = (int)(parser->tokp - lex_pbeg); } else { rb_str_buf_cat(parser->delayed, @@ -5239,9 +5248,7 @@ parser_nextc(struct parser_params *parser) parser->line_count++; lex_pbeg = lex_p = RSTRING_PTR(v); lex_pend = lex_p + RSTRING_LEN(v); -#ifdef RIPPER ripper_flush(parser); -#endif lex_lastline = v; } } @@ -5445,7 +5452,7 @@ parser_read_escape(struct parser_params *parser, int flags, case '4': case '5': case '6': case '7': if (flags & (ESCAPE_CONTROL|ESCAPE_META)) goto eof; pushback(c); - c = ruby_scan_oct(lex_p, 3, &numlen); + c = scan_oct(lex_p, 3, &numlen); lex_p += numlen; return c; @@ -5738,6 +5745,8 @@ parser_tokadd_string(struct parser_params *parser, } else if (c != term && !(paren && c == paren)) { tokadd('\\'); + pushback(c); + continue; } } } @@ -5778,7 +5787,7 @@ parser_tokadd_string(struct parser_params *parser, static int parser_parse_string(struct parser_params *parser, NODE *quote) { - int func = quote->nd_func; + int func = (int)quote->nd_func; int term = nd_term(quote); int paren = nd_paren(quote); int c, space = 0; @@ -5839,7 +5848,8 @@ parser_parse_string(struct parser_params *parser, NODE *quote) static int parser_heredoc_identifier(struct parser_params *parser) { - int c = nextc(), term, func = 0, len; + int c = nextc(), term, func = 0; + long len; if (c == '-') { c = nextc(); @@ -5894,9 +5904,7 @@ parser_heredoc_identifier(struct parser_params *parser) len, /* nd_nth */ lex_lastline); /* nd_orig */ nd_set_line(lex_strterm, ruby_sourceline); -#ifdef RIPPER ripper_flush(parser); -#endif return term == '`' ? tXSTRING_BEG : tSTRING_BEG; } @@ -5905,12 +5913,6 @@ parser_heredoc_restore(struct parser_params *parser, NODE *here) { VALUE line; -#ifdef RIPPER - if (!NIL_P(parser->delayed)) - ripper_dispatch_delayed_token(parser, tSTRING_CONTENT); - lex_goto_eol(parser); - ripper_dispatch_scan_event(parser, tHEREDOC_END); -#endif line = here->nd_orig; lex_lastline = line; lex_pbeg = RSTRING_PTR(line); @@ -5920,25 +5922,22 @@ parser_heredoc_restore(struct parser_params *parser, NODE *here) ruby_sourceline = nd_line(here); dispose_string(here->nd_lit); rb_gc_force_recycle((VALUE)here); -#ifdef RIPPER ripper_flush(parser); -#endif } static int parser_whole_match_p(struct parser_params *parser, - const char *eos, int len, int indent) + const char *eos, long len, int indent) { const char *p = lex_pbeg; - int n; + long n; if (indent) { while (*p && ISSPACE(*p)) p++; } - n= lex_pend - (p + len); - if (n < 0 || (n > 0 && p[len] != '\n' && p[len] != '\r')) return Qfalse; - if (strncmp(eos, p, len) == 0) return Qtrue; - return Qfalse; + n = lex_pend - (p + len); + if (n < 0 || (n > 0 && p[len] != '\n' && p[len] != '\r')) return FALSE; + return strncmp(eos, p, len) == 0; } static int @@ -5948,6 +5947,7 @@ parser_here_document(struct parser_params *parser, NODE *here) const char *eos, *p, *pend; long len; VALUE str = 0; + rb_encoding *enc = parser->enc; eos = RSTRING_PTR(here->nd_lit); len = RSTRING_LEN(here->nd_lit) - 1; @@ -5956,6 +5956,20 @@ parser_here_document(struct parser_params *parser, NODE *here) if ((c = nextc()) == -1) { error: compile_error(PARSER_ARG "can't find string \"%s\" anywhere before EOF", eos); +#ifdef RIPPER + if (NIL_P(parser->delayed)) { + ripper_dispatch_scan_event(parser, tSTRING_CONTENT); + } + else { + if (str || + ((len = lex_p - parser->tokp) > 0 && + (str = STR_NEW3(parser->tokp, len, enc, func), 1))) { + rb_str_append(parser->delayed, str); + } + ripper_dispatch_delayed_token(parser, tSTRING_CONTENT); + } + lex_goto_eol(parser); +#endif restore: heredoc_restore(lex_strterm); lex_strterm = 0; @@ -5995,7 +6009,6 @@ parser_here_document(struct parser_params *parser, NODE *here) } else { /* int mb = ENC_CODERANGE_7BIT, *mbp = &mb;*/ - rb_encoding *enc = parser->enc; newtok(); if (c == '#') { switch (c = nextc()) { @@ -6024,6 +6037,12 @@ parser_here_document(struct parser_params *parser, NODE *here) } while (!whole_match_p(eos, len, indent)); str = STR_NEW3(tok(), toklen(), enc, func); } +#ifdef RIPPER + if (!NIL_P(parser->delayed)) + ripper_dispatch_delayed_token(parser, tSTRING_CONTENT); + lex_goto_eol(parser); + ripper_dispatch_ignored_scan_event(parser, tHEREDOC_END); +#endif heredoc_restore(lex_strterm); lex_strterm = NEW_STRTERM(-1, 0, 0); set_yylval_str(str); @@ -6032,36 +6051,39 @@ parser_here_document(struct parser_params *parser, NODE *here) #include "lex.c" -#ifndef RIPPER static void arg_ambiguous_gen(struct parser_params *parser) { +#ifndef RIPPER rb_warning0("ambiguous first argument; put parentheses or even spaces"); -} #else -static void -arg_ambiguous_gen(struct parser_params *parser) -{ dispatch0(arg_ambiguous); -} #endif +} #define arg_ambiguous() arg_ambiguous_gen(parser) +static ID +formal_argument_gen(struct parser_params *parser, ID lhs) +{ +#ifndef RIPPER + if (!is_local_id(lhs)) + yyerror("formal argument must be local variable"); +#endif + shadowing_lvar(lhs); + return lhs; +} + static int lvar_defined_gen(struct parser_params *parser, ID id) { -#ifndef RIPPER return (dyna_in_block() && dvar_defined(id)) || local_id(id); -#else - return 0; -#endif } /* emacsen -*- hack */ -static int -parser_encode_length(struct parser_params *parser, const char *name, int len) +static long +parser_encode_length(struct parser_params *parser, const char *name, long len) { - int nlen; + long nlen; if (len > 5 && name[nlen = len - 5] == '-') { if (rb_memcicmp(name + nlen + 1, "unix", 4) == 0) @@ -6115,7 +6137,7 @@ comment_at_top(struct parser_params *parser) } #ifndef RIPPER -typedef int (*rb_magic_comment_length_t)(struct parser_params *parser, const char *name, int len); +typedef long (*rb_magic_comment_length_t)(struct parser_params *parser, const char *name, long len); typedef void (*rb_magic_comment_setter_t)(struct parser_params *parser, const char *name, const char *val); static void @@ -6140,9 +6162,9 @@ static const struct magic_comment magic_comments[] = { #endif static const char * -magic_comment_marker(const char *str, int len) +magic_comment_marker(const char *str, long len) { - int i = 2; + long i = 2; while (i < len) { switch (str[i]) { @@ -6173,7 +6195,7 @@ magic_comment_marker(const char *str, int len) } static int -parser_magic_comment(struct parser_params *parser, const char *str, int len) +parser_magic_comment(struct parser_params *parser, const char *str, long len) { VALUE name = 0, val = 0; const char *beg, *end, *vbeg, *vend; @@ -6182,9 +6204,9 @@ parser_magic_comment(struct parser_params *parser, const char *str, int len) MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \ : ((_s) = STR_NEW((_p), (_n)))) - if (len <= 7) return Qfalse; - if (!(beg = magic_comment_marker(str, len))) return Qfalse; - if (!(end = magic_comment_marker(beg, str + len - beg))) return Qfalse; + if (len <= 7) return FALSE; + if (!(beg = magic_comment_marker(str, len))) return FALSE; + if (!(end = magic_comment_marker(beg, str + len - beg))) return FALSE; str = beg; len = end - beg - 3; @@ -6194,7 +6216,8 @@ parser_magic_comment(struct parser_params *parser, const char *str, int len) const struct magic_comment *p = magic_comments; #endif char *s; - int i, n = 0; + int i; + long n = 0; for (; len > 0 && *str; str++, --len) { switch (*str) { @@ -6242,7 +6265,7 @@ parser_magic_comment(struct parser_params *parser, const char *str, int len) str_copy(name, beg, n); s = RSTRING_PTR(name); for (i = 0; i < n; ++i) { - if (*s == '-') *s = '_'; + if (s[i] == '-') s[i] = '_'; } #ifndef RIPPER do { @@ -6255,13 +6278,13 @@ parser_magic_comment(struct parser_params *parser, const char *str, int len) (*p->func)(parser, s, RSTRING_PTR(val)); break; } - } while (++p < magic_comments + sizeof(magic_comments) / sizeof(*p)); + } while (++p < magic_comments + numberof(magic_comments)); #else dispatch2(magic_comment, name, val); #endif } - return Qtrue; + return TRUE; } static void @@ -6345,7 +6368,7 @@ parser_yylex(struct parser_params *parser) rb_encoding *enc; int mb; #ifdef RIPPER - int fallthru = Qfalse; + int fallthru = FALSE; #endif if (lex_strterm) { @@ -6368,7 +6391,7 @@ parser_yylex(struct parser_params *parser) return token; } cmd_state = command_start; - command_start = Qfalse; + command_start = FALSE; retry: switch (c = nextc()) { case '\0': /* NUL */ @@ -6407,7 +6430,7 @@ parser_yylex(struct parser_params *parser) lex_p = lex_pend; #ifdef RIPPER ripper_dispatch_scan_event(parser, tCOMMENT); - fallthru = Qtrue; + fallthru = TRUE; #endif /* fall through */ case '\n': @@ -6421,7 +6444,7 @@ parser_yylex(struct parser_params *parser) if (!fallthru) { ripper_dispatch_scan_event(parser, tIGNORED_NL); } - fallthru = Qfalse; + fallthru = FALSE; #endif goto retry; default: @@ -6454,7 +6477,7 @@ parser_yylex(struct parser_params *parser) } } normal_newline: - command_start = Qtrue; + command_start = TRUE; lex_state = EXPR_BEG; return '\n'; @@ -6519,7 +6542,7 @@ parser_yylex(struct parser_params *parser) /* skip embedded rd document */ if (strncmp(lex_p, "begin", 5) == 0 && ISSPACE(lex_p[5])) { #ifdef RIPPER - int first_p = Qtrue; + int first_p = TRUE; lex_goto_eol(parser); ripper_dispatch_scan_event(parser, tEMBDOC_BEG); @@ -6530,7 +6553,7 @@ parser_yylex(struct parser_params *parser) if (!first_p) { ripper_dispatch_scan_event(parser, tEMBDOC); } - first_p = Qfalse; + first_p = FALSE; #endif c = nextc(); if (c == -1) { @@ -6882,6 +6905,7 @@ parser_yylex(struct parser_params *parser) c = nextc(); } if (c == '0') { +#define no_digits() do {yyerror("numeric literal without digits"); return 0;} while (0) int start = toklen(); c = nextc(); if (c == 'x' || c == 'X') { @@ -6902,10 +6926,10 @@ parser_yylex(struct parser_params *parser) pushback(c); tokfix(); if (toklen() == start) { - yyerror("numeric literal without digits"); + no_digits(); } else if (nondigit) goto trailing_uc; - set_yylval_literal(rb_cstr_to_inum(tok(), 16, Qfalse)); + set_yylval_literal(rb_cstr_to_inum(tok(), 16, FALSE)); return tINTEGER; } if (c == 'b' || c == 'B') { @@ -6926,10 +6950,10 @@ parser_yylex(struct parser_params *parser) pushback(c); tokfix(); if (toklen() == start) { - yyerror("numeric literal without digits"); + no_digits(); } else if (nondigit) goto trailing_uc; - set_yylval_literal(rb_cstr_to_inum(tok(), 2, Qfalse)); + set_yylval_literal(rb_cstr_to_inum(tok(), 2, FALSE)); return tINTEGER; } if (c == 'd' || c == 'D') { @@ -6950,10 +6974,10 @@ parser_yylex(struct parser_params *parser) pushback(c); tokfix(); if (toklen() == start) { - yyerror("numeric literal without digits"); + no_digits(); } else if (nondigit) goto trailing_uc; - set_yylval_literal(rb_cstr_to_inum(tok(), 10, Qfalse)); + set_yylval_literal(rb_cstr_to_inum(tok(), 10, FALSE)); return tINTEGER; } if (c == '_') { @@ -6964,7 +6988,7 @@ parser_yylex(struct parser_params *parser) /* prefixed octal */ c = nextc(); if (c == -1 || c == '_' || !ISDIGIT(c)) { - yyerror("numeric literal without digits"); + no_digits(); } } if (c >= '0' && c <= '7') { @@ -6985,7 +7009,7 @@ parser_yylex(struct parser_params *parser) pushback(c); tokfix(); if (nondigit) goto trailing_uc; - set_yylval_literal(rb_cstr_to_inum(tok(), 8, Qfalse)); + set_yylval_literal(rb_cstr_to_inum(tok(), 8, FALSE)); return tINTEGER; } if (nondigit) { @@ -7068,13 +7092,13 @@ parser_yylex(struct parser_params *parser) decode_num: pushback(c); - tokfix(); if (nondigit) { char tmp[30]; trailing_uc: snprintf(tmp, sizeof(tmp), "trailing `%c' in number", nondigit); yyerror(tmp); } + tokfix(); if (is_float) { double d = strtod(tok(), 0); if (errno == ERANGE) { @@ -7084,7 +7108,7 @@ parser_yylex(struct parser_params *parser) set_yylval_literal(DBL2NUM(d)); return tFLOAT; } - set_yylval_literal(rb_cstr_to_inum(tok(), 10, Qfalse)); + set_yylval_literal(rb_cstr_to_inum(tok(), 10, FALSE)); return tINTEGER; } @@ -7173,7 +7197,7 @@ parser_yylex(struct parser_params *parser) case ';': lex_state = EXPR_BEG; - command_start = Qtrue; + command_start = TRUE; return ';'; case ',': @@ -7248,7 +7272,7 @@ parser_yylex(struct parser_params *parser) COND_PUSH(0); CMDARG_PUSH(0); lex_state = EXPR_BEG; - if (c != tLBRACE) command_start = Qtrue; + if (c != tLBRACE) command_start = TRUE; return c; case '\\': @@ -7383,7 +7407,7 @@ parser_yylex(struct parser_params *parser) tokadd('$'); tokadd(c); tokfix(); - set_yylval_id(rb_intern(tok())); + set_yylval_name(rb_intern(tok())); return tGVAR; case '-': @@ -7398,7 +7422,7 @@ parser_yylex(struct parser_params *parser) } gvar: tokfix(); - set_yylval_id(rb_intern(tok())); + set_yylval_name(rb_intern(tok())); return tGVAR; case '&': /* $&: last match */ @@ -7552,7 +7576,7 @@ parser_yylex(struct parser_params *parser) if (peek(':') && !(lex_p + 1 < lex_pend && lex_p[1] == ':')) { lex_state = EXPR_BEG; nextc(); - set_yylval_id(TOK_INTERN(!ENC_SINGLE(mb))); + set_yylval_name(TOK_INTERN(!ENC_SINGLE(mb))); return tLABEL; } } @@ -7565,11 +7589,11 @@ parser_yylex(struct parser_params *parser) enum lex_state_e state = lex_state; lex_state = kw->state; if (state == EXPR_FNAME) { - set_yylval_id(rb_intern(kw->name)); + set_yylval_name(rb_intern(kw->name)); return kw->id[0]; } if (kw->id[0] == keyword_do) { - command_start = Qtrue; + command_start = TRUE; if (lpar_beg && lpar_beg == paren_nest) { lpar_beg = 0; --paren_nest; @@ -7609,7 +7633,7 @@ parser_yylex(struct parser_params *parser) { ID ident = TOK_INTERN(!ENC_SINGLE(mb)); - set_yylval_id(ident); + set_yylval_name(ident); if (last_state != EXPR_DOT && is_local_id(ident) && lvar_defined(ident)) { lex_state = EXPR_END; } @@ -7992,11 +8016,24 @@ gettable_gen(struct parser_params *parser, ID id) compile_error(PARSER_ARG "identifier %s is not valid to get", rb_id2name(id)); return 0; } +#endif /* !RIPPER */ +#ifdef RIPPER +static VALUE +assignable_gen(struct parser_params *parser, VALUE lhs) +#else static NODE* assignable_gen(struct parser_params *parser, ID id, NODE *val) +#endif { - if (!id) return 0; +#ifdef RIPPER + ID id = get_id(lhs); +# define assignable_result(x) get_value(lhs) +# define parser_yyerror(parser, x) dispatch1(assign_error, lhs) +#else +# define assignable_result(x) x +#endif + if (!id) return assignable_result(0); if (id == keyword_self) { yyerror("Can't change the value of self"); } @@ -8021,53 +8058,55 @@ assignable_gen(struct parser_params *parser, ID id, NODE *val) else if (is_local_id(id)) { if (dyna_in_block()) { if (dvar_curr(id)) { - return NEW_DASGN_CURR(id, val); + return assignable_result(NEW_DASGN_CURR(id, val)); } else if (dvar_defined(id)) { - return NEW_DASGN(id, val); + return assignable_result(NEW_DASGN(id, val)); } else if (local_id(id)) { - return NEW_LASGN(id, val); + return assignable_result(NEW_LASGN(id, val)); } - else{ + else { dyna_var(id); - return NEW_DASGN_CURR(id, val); + return assignable_result(NEW_DASGN_CURR(id, val)); } } else { if (!local_id(id)) { local_var(id); } - return NEW_LASGN(id, val); + return assignable_result(NEW_LASGN(id, val)); } } else if (is_global_id(id)) { - return NEW_GASGN(id, val); + return assignable_result(NEW_GASGN(id, val)); } else if (is_instance_id(id)) { - return NEW_IASGN(id, val); + return assignable_result(NEW_IASGN(id, val)); } else if (is_const_id(id)) { - if (in_def || in_single) - yyerror("dynamic constant assignment"); - return NEW_CDECL(id, val, 0); + if (!in_def && !in_single) + return assignable_result(NEW_CDECL(id, val, 0)); + yyerror("dynamic constant assignment"); } else if (is_class_id(id)) { - return NEW_CVASGN(id, val); + return assignable_result(NEW_CVASGN(id, val)); } else { compile_error(PARSER_ARG "identifier %s is not valid to set", rb_id2name(id)); } - return 0; + return assignable_result(0); +#undef assignable_result +#undef parser_yyerror } -static void +static ID shadowing_lvar_gen(struct parser_params *parser, ID name) { ID uscore; CONST_ID(uscore, "_"); - if (uscore == name) return; + if (uscore == name) return name; if (dyna_in_block()) { if (dvar_curr(name)) { yyerror("duplicated argument name"); @@ -8082,6 +8121,7 @@ shadowing_lvar_gen(struct parser_params *parser, ID name) yyerror("duplicated argument name"); } } + return name; } static void @@ -8097,6 +8137,7 @@ new_bv_gen(struct parser_params *parser, ID name) dyna_var(name); } +#ifndef RIPPER static NODE * aryset_gen(struct parser_params *parser, NODE *recv, NODE *idx) { @@ -8234,7 +8275,7 @@ value_expr_gen(struct parser_params *parser, NODE *node) case NODE_DEFN: case NODE_DEFS: parser_warning(node, "void value expression"); - return Qfalse; + return FALSE; case NODE_RETURN: case NODE_BREAK: @@ -8243,7 +8284,7 @@ value_expr_gen(struct parser_params *parser, NODE *node) case NODE_RETRY: if (!cond) yyerror("void value expression"); /* or "control never reach"? */ - return Qfalse; + return FALSE; case NODE_BLOCK: while (node->nd_next) { @@ -8265,7 +8306,7 @@ value_expr_gen(struct parser_params *parser, NODE *node) node = node->nd_body; break; } - if (!value_expr(node->nd_body)) return Qfalse; + if (!value_expr(node->nd_body)) return FALSE; node = node->nd_else; break; @@ -8276,11 +8317,11 @@ value_expr_gen(struct parser_params *parser, NODE *node) break; default: - return Qtrue; + return TRUE; } } - return Qtrue; + return TRUE; } static void @@ -8411,7 +8452,7 @@ reduce_nodes_gen(struct parser_params *parser, NODE **body) (reduce_nodes(&node->n1), body = &node->n2, 1)) while (node) { - int newline = node->flags & NODE_FL_NEWLINE; + int newline = (int)(node->flags & NODE_FL_NEWLINE); switch (nd_type(node)) { end: case NODE_NIL: @@ -8463,6 +8504,7 @@ assign_in_cond(struct parser_params *parser, NODE *node) case NODE_LASGN: case NODE_DASGN: + case NODE_DASGN_CURR: case NODE_GASGN: case NODE_IASGN: break; @@ -8521,7 +8563,7 @@ fixup_nodes(NODE **rootnode) case NODE_DOT2: case NODE_DOT3: val = rb_range_new(head->nd_beg->nd_lit, head->nd_end->nd_lit, - type == NODE_DOT3 ? Qtrue : Qfalse); + type == NODE_DOT3); rb_gc_force_recycle((VALUE)head->nd_beg); rb_gc_force_recycle((VALUE)head->nd_end); nd_set_type(head, NODE_LIT); @@ -8640,9 +8682,9 @@ static NODE* logop_gen(struct parser_params *parser, enum node_type type, NODE *left, NODE *right) { value_expr(left); - if (left && nd_type(left) == type) { + if (left && (enum node_type)nd_type(left) == type) { NODE *node = left, *second; - while ((second = node->nd_2nd) != 0 && nd_type(second) == type) { + while ((second = node->nd_2nd) != 0 && (enum node_type)nd_type(second) == type) { node = second; } node->nd_2nd = NEW_NODE(type, second, right, 0); @@ -8746,6 +8788,7 @@ new_args_gen(struct parser_params *parser, NODE *m, NODE *o, ID r, NODE *p, ID b ruby_sourceline = saved_line; return node; } +#endif /* !RIPPER */ static void local_push_gen(struct parser_params *parser, int inherit_dvars) @@ -8769,6 +8812,7 @@ local_pop_gen(struct parser_params *parser) lvtbl = local; } +#ifndef RIPPER static ID* vtable_tblcpy(ID *buf, const struct vtable *src) { @@ -8797,6 +8841,7 @@ local_tbl_gen(struct parser_params *parser) buf[0] = cnt; return buf; } +#endif static int arg_var_gen(struct parser_params *parser, ID id) @@ -8834,18 +8879,22 @@ local_id_gen(struct parser_params *parser, ID id) } } -static void +static const struct vtable * dyna_push_gen(struct parser_params *parser) { lvtbl->args = vtable_alloc(lvtbl->args); lvtbl->vars = vtable_alloc(lvtbl->vars); + return lvtbl->args; } static void -dyna_pop_gen(struct parser_params *parser) +dyna_pop_gen(struct parser_params *parser, const struct vtable *lvargs) { struct vtable *tmp; + while (lvtbl->args != lvargs) { + local_pop(); + } tmp = lvtbl->args; lvtbl->args = lvtbl->args->prev; vtable_free(tmp); @@ -8893,6 +8942,7 @@ dvar_curr_gen(struct parser_params *parser, ID id) vtable_included(lvtbl->vars, id)); } +#ifndef RIPPER VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline); VALUE rb_reg_check_preprocess(VALUE); @@ -8963,7 +9013,7 @@ reg_named_capture_assign_iter(const OnigUChar *name, const OnigUChar *name_end, reg_named_capture_assign_t *arg = (reg_named_capture_assign_t*)arg0; struct parser_params* parser = arg->parser; rb_encoding *enc = arg->enc; - int len = name_end - name; + long len = name_end - name; const char *s = (const char *)name; ID var; @@ -8975,7 +9025,8 @@ reg_named_capture_assign_iter(const OnigUChar *name, const OnigUChar *name_end, } if (!len || (*name != '_' && ISASCII(*name) && !rb_enc_islower(*name, enc)) || - rb_reserved_word(s, len) || !rb_enc_symname2_p(s, len, enc)) { + (len < MAX_WORD_LENGTH && rb_reserved_word(s, (int)len)) || + !rb_enc_symname2_p(s, len, enc)) { return ST_CONTINUE; } var = rb_intern3(s, len, enc); @@ -9155,7 +9206,7 @@ static const struct { {tCOLON2, "::"}, }; -#define op_tbl_count (sizeof(op_tbl) / sizeof(op_tbl[0])) +#define op_tbl_count numberof(op_tbl) #ifndef ENABLE_SELECTOR_NAMESPACE #define ENABLE_SELECTOR_NAMESPACE 0 @@ -9224,6 +9275,7 @@ rb_gc_mark_symbols(void) rb_gc_mark_locations(global_symbols.op_sym, global_symbols.op_sym + tLAST_TOKEN); } +#endif /* !RIPPER */ static ID internal_id_gen(struct parser_params *parser) @@ -9233,6 +9285,7 @@ internal_id_gen(struct parser_params *parser) return ID_INTERNAL | (id << ID_SCOPE_SHIFT); } +#ifndef RIPPER static int is_special_global_name(const char *m, const char *e, rb_encoding *enc) { @@ -9259,7 +9312,7 @@ is_special_global_name(const char *m, const char *e, rb_encoding *enc) do { if (!ISASCII(*m)) mb = 1; ++m; - } while (rb_enc_isdigit(*m, enc)); + } while (m < e && rb_enc_isdigit(*m, enc)); } return m == e ? mb + 1 : 0; } @@ -9277,19 +9330,19 @@ rb_enc_symname_p(const char *name, rb_encoding *enc) } int -rb_enc_symname2_p(const char *name, int len, rb_encoding *enc) +rb_enc_symname2_p(const char *name, long len, rb_encoding *enc) { const char *m = name; const char *e = m + len; - int localid = Qfalse; + int localid = FALSE; - if (!m) return Qfalse; + if (!m) return FALSE; switch (*m) { case '\0': - return Qfalse; + return FALSE; case '$': - if (is_special_global_name(++m, e, enc)) return Qtrue; + if (is_special_global_name(++m, e, enc)) return TRUE; goto id; case '@': @@ -9314,7 +9367,7 @@ rb_enc_symname2_p(const char *name, int len, rb_encoding *enc) switch (*++m) { case '~': ++m; break; case '=': if (*++m == '=') ++m; break; - default: return Qfalse; + default: return FALSE; } break; @@ -9331,15 +9384,15 @@ rb_enc_symname2_p(const char *name, int len, rb_encoding *enc) break; case '[': - if (*++m != ']') return Qfalse; + if (*++m != ']') return FALSE; if (*++m == '=') ++m; break; case '!': switch (*++m) { - case '\0': return Qtrue; + case '\0': return TRUE; case '=': case '~': ++m; break; - default: return Qfalse; + default: return FALSE; } break; @@ -9347,7 +9400,7 @@ rb_enc_symname2_p(const char *name, int len, rb_encoding *enc) localid = !rb_enc_isupper(*m, enc); id: if (m >= e || (*m != '_' && !rb_enc_isalpha(*m, enc) && ISASCII(*m))) - return Qfalse; + return FALSE; while (m < e && is_identchar(m, e, enc)) m += rb_enc_mbclen(m, e, enc); if (localid) { switch (*m) { @@ -9377,7 +9430,7 @@ rb_intern3(const char *name, long len, rb_encoding *enc) unsigned char c; VALUE str; ID id; - int last; + long last; int mb; struct RString fake_str; fake_str.basic.flags = T_STRING|RSTRING_NOEMBED|FL_FREEZE; @@ -9479,6 +9532,16 @@ rb_intern3(const char *name, long len, rb_encoding *enc) mbstr:; } new_id: + if (global_symbols.last_id >= ~(ID)0 >> (ID_SCOPE_SHIFT+RUBY_SPECIAL_SHIFT)) { + if (len > 20) { + rb_raise(rb_eRuntimeError, "symbol table overflow (symbol %.20s...)", + name); + } + else { + rb_raise(rb_eRuntimeError, "symbol table overflow (symbol %.*s)", + (int)len, name); + } + } id |= ++global_symbols.last_id << ID_SCOPE_SHIFT; id_register: return register_symid(id, name, len, enc); @@ -9522,7 +9585,7 @@ rb_id2str(ID id) if (id < tLAST_TOKEN) { int i = 0; - if (rb_ispunct(id)) { + if (id < INT_MAX && rb_ispunct((int)id)) { VALUE str = global_symbols.op_sym[i = (int)id]; if (!str) { char name[2]; @@ -9619,36 +9682,31 @@ rb_sym_all_symbols(void) int rb_is_const_id(ID id) { - if (is_const_id(id)) return Qtrue; - return Qfalse; + return is_const_id(id); } int rb_is_class_id(ID id) { - if (is_class_id(id)) return Qtrue; - return Qfalse; + return is_class_id(id); } int rb_is_instance_id(ID id) { - if (is_instance_id(id)) return Qtrue; - return Qfalse; + return is_instance_id(id); } int rb_is_local_id(ID id) { - if (is_local_id(id)) return Qtrue; - return Qfalse; + return is_local_id(id); } int rb_is_junk_id(ID id) { - if (is_junk_id(id)) return Qtrue; - return Qfalse; + return is_junk_id(id); } #endif /* !RIPPER */ @@ -9673,7 +9731,7 @@ parser_initialize(struct parser_params *parser) parser->parser_tokidx = 0; parser->parser_toksiz = 0; parser->parser_heredoc_end = 0; - parser->parser_command_start = Qtrue; + parser->parser_command_start = TRUE; parser->parser_deferred_nodes = 0; parser->parser_lex_pbeg = 0; parser->parser_lex_p = 0; @@ -9692,7 +9750,7 @@ parser_initialize(struct parser_params *parser) parser->result = Qnil; parser->parsing_thread = Qnil; - parser->toplevel_p = Qtrue; + parser->toplevel_p = TRUE; #endif #ifdef YYMALLOC parser->heap = NULL; @@ -9961,7 +10019,10 @@ ripper_validate_object(VALUE self, VALUE x) case T_FLOAT: return x; case T_NODE: - rb_raise(rb_eArgError, "NODE given: %p", x); + if (nd_type(x) != NODE_LASGN) { + rb_raise(rb_eArgError, "NODE given: %p", x); + } + return ((NODE *)x)->nd_rval; default: rb_raise(rb_eArgError, "wrong type of ruby object: %p (%s)", x, rb_obj_classname(x)); @@ -9970,7 +10031,7 @@ ripper_validate_object(VALUE self, VALUE x) } #endif -#define validate(x) +#define validate(x) (x = get_value(x)) static VALUE ripper_dispatch0(struct parser_params *parser, ID mid) @@ -10122,10 +10183,24 @@ ripper_id2sym(ID id) return ID2SYM(rb_intern(name)); } +static ID +ripper_get_id(VALUE v) +{ + NODE *nd; + if (!RB_TYPE_P(v, T_NODE)) return 0; + nd = (NODE *)v; + if (nd_type(nd) != NODE_LASGN) return 0; + return nd->nd_vid; +} + static VALUE -ripper_intern(const char *s) +ripper_get_value(VALUE v) { - return ID2SYM(rb_intern(s)); + NODE *nd; + if (!RB_TYPE_P(v, T_NODE)) return v; + nd = (NODE *)v; + if (nd_type(nd) != NODE_LASGN) return Qnil; + return nd->nd_rval; } static void @@ -10316,6 +10391,24 @@ ripper_column(VALUE self) return LONG2NUM(col); } +/* + * call-seq: + * ripper#filename -> String + * + * Return current parsing filename. + */ +static VALUE +ripper_filename(VALUE self) +{ + struct parser_params *parser; + + TypedData_Get_Struct(self, struct parser_params, &parser_data_type, parser); + if (!ripper_initialized_p(parser)) { + rb_raise(rb_eArgError, "method called for uninitialized object"); + } + return parser->parser_ruby_sourcefile_string; +} + /* * call-seq: * ripper#lineno -> Integer @@ -10367,6 +10460,7 @@ Init_ripper(void) rb_define_method(Ripper, "initialize", ripper_initialize, -1); rb_define_method(Ripper, "parse", ripper_parse, 0); rb_define_method(Ripper, "column", ripper_column, 0); + rb_define_method(Ripper, "filename", ripper_filename, 0); rb_define_method(Ripper, "lineno", ripper_lineno, 0); rb_define_method(Ripper, "end_seen?", rb_parser_end_seen_p, 0); rb_define_method(Ripper, "encoding", rb_parser_encoding, 0); diff --git a/prelude.rb b/prelude.rb index fdf401b56a5475..a9e9e3c23e4c0e 100644 --- a/prelude.rb +++ b/prelude.rb @@ -23,13 +23,16 @@ def self.exclusive end end -def require_relative(relative_feature) - c = caller.first - e = c.rindex(/:\d+:in /) - file = $` - if /\A\((.*)\)/ =~ file # eval, etc. - raise LoadError, "require_relative is called in #{$1}" +module Kernel + module_function + def require_relative(relative_feature) + c = caller.first + e = c.rindex(/:\d+:in /) + file = $` + if /\A\((.*)\)/ =~ file # eval, etc. + raise LoadError, "require_relative is called in #{$1}" + end + absolute_feature = File.expand_path(File.join(File.dirname(file), relative_feature)) + require absolute_feature end - absolute_feature = File.expand_path(File.join(File.dirname(file), relative_feature)) - require absolute_feature end diff --git a/proc.c b/proc.c index 0398fb2ec6aceb..daf8c673fe3c74 100644 --- a/proc.c +++ b/proc.c @@ -33,6 +33,8 @@ rb_iseq_t *rb_method_get_iseq(VALUE method); /* Proc */ +#define IS_METHOD_PROC_NODE(node) (nd_type(node) == NODE_IFUNC && (node)->nd_cfnc == bmcall) + static void proc_free(void *ptr) { @@ -92,6 +94,7 @@ rb_obj_is_proc(VALUE proc) } } +/* :nodoc: */ static VALUE proc_dup(VALUE self) { @@ -109,6 +112,7 @@ proc_dup(VALUE self) return procval; } +/* :nodoc: */ static VALUE proc_clone(VALUE self) { @@ -219,8 +223,8 @@ proc_clone(VALUE self) * */ -static VALUE -proc_lambda_p(VALUE procval) +VALUE +rb_proc_lambda_p(VALUE procval) { rb_proc_t *proc; GetProcPtr(procval, proc); @@ -276,6 +280,7 @@ binding_alloc(VALUE klass) return obj; } +/* :nodoc: */ static VALUE binding_dup(VALUE self) { @@ -287,6 +292,7 @@ binding_dup(VALUE self) return bindval; } +/* :nodoc: */ static VALUE binding_clone(VALUE self) { @@ -633,7 +639,7 @@ rb_proc_arity(VALUE self) } else { NODE *node = (NODE *)iseq; - if (nd_type(node) == NODE_IFUNC && node->nd_cfnc == bmcall) { + if (IS_METHOD_PROC_NODE(node)) { /* method(:foo).to_proc.arity */ return method_arity(node->nd_tval); } @@ -642,8 +648,10 @@ rb_proc_arity(VALUE self) return -1; } -static rb_iseq_t * -get_proc_iseq(VALUE self, int *is_proc) +#define get_proc_iseq rb_proc_get_iseq + +rb_iseq_t * +rb_proc_get_iseq(VALUE self, int *is_proc) { rb_proc_t *proc; rb_iseq_t *iseq; @@ -654,7 +662,7 @@ get_proc_iseq(VALUE self, int *is_proc) if (!RUBY_VM_NORMAL_ISEQ_P(iseq)) { NODE *node = (NODE *)iseq; iseq = 0; - if (nd_type(node) == NODE_IFUNC && node->nd_cfnc == bmcall) { + if (IS_METHOD_PROC_NODE(node)) { /* method(:foo).to_proc */ iseq = rb_method_get_iseq(node->nd_tval); if (is_proc) *is_proc = 0; @@ -884,19 +892,39 @@ mnew(VALUE klass, VALUE obj, ID id, VALUE mclass, int scope) VALUE rclass = klass; ID rid = id; struct METHOD *data; - rb_method_entry_t *me; - rb_method_definition_t *def; + rb_method_entry_t *me, meb; + rb_method_definition_t *def = 0; again: me = rb_method_entry(klass, id); if (UNDEFINED_METHOD_ENTRY_P(me)) { + ID rmiss = rb_intern("respond_to_missing?"); + VALUE sym = ID2SYM(id); + + if (obj != Qundef && !rb_method_basic_definition_p(klass, rmiss)) { + if (RTEST(rb_funcall(obj, rmiss, 2, sym, scope ? Qfalse : Qtrue))) { + def = ALLOC(rb_method_definition_t); + def->type = VM_METHOD_TYPE_MISSING; + def->original_id = id; + def->alias_count = 0; + + meb.flag = 0; + meb.called_id = id; + meb.klass = klass; + meb.def = def; + me = &meb; + def = 0; + + goto gen_method; + } + } rb_print_undef(klass, id, 0); } def = me->def; if (scope && (me->flag & NOEX_MASK) != NOEX_PUBLIC) { rb_print_undef(rclass, def->original_id, (int)(me->flag & NOEX_MASK)); } - if (def->type == VM_METHOD_TYPE_ZSUPER) { + if (def && def->type == VM_METHOD_TYPE_ZSUPER) { klass = RCLASS_SUPER(me->klass); id = def->original_id; goto again; @@ -913,6 +941,7 @@ mnew(VALUE klass, VALUE obj, ID id, VALUE mclass, int scope) klass = RBASIC(klass)->klass; } + gen_method: method = TypedData_Make_Struct(mclass, struct METHOD, &method_data_type, data); data->recv = obj; @@ -955,8 +984,8 @@ mnew(VALUE klass, VALUE obj, ID id, VALUE mclass, int scope) * call-seq: * meth == other_meth => true or false * - * Two method objects are equal if that are bound to the same - * object and contain the same body. + * Two method objects are equal if they are bound to the same + * object and refer to the same method definition. */ static VALUE @@ -1115,6 +1144,13 @@ rb_obj_method(VALUE obj, VALUE vid) return mnew(CLASS_OF(obj), obj, rb_to_id(vid), rb_cMethod, FALSE); } +/* + * call-seq: + * obj.public_method(sym) => method + * + * Similar to _method_, searches public method only. + */ + VALUE rb_obj_public_method(VALUE obj, VALUE vid) { @@ -1159,6 +1195,13 @@ rb_mod_instance_method(VALUE mod, VALUE vid) return mnew(mod, Qundef, rb_to_id(vid), rb_cUnboundMethod, FALSE); } +/* + * call-seq: + * mod.public_instance_method(symbol) => unbound_method + * + * Similar to _instance_method_, searches public method only. + */ + static VALUE rb_mod_public_instance_method(VALUE mod, VALUE vid) { @@ -1171,7 +1214,7 @@ rb_mod_public_instance_method(VALUE mod, VALUE vid) * define_method(symbol) { block } => proc * * Defines an instance method in the receiver. The _method_ - * parameter can be a +Proc+ or +Method+ object. + * parameter can be a +Proc+, a +Method+ or an +UnboundMethod+ object. * If a block is specified, it is used as the method body. This block * is evaluated using instance_eval, a point that is * tricky to demonstrate because define_method is private. @@ -1229,12 +1272,12 @@ rb_mod_define_method(int argc, VALUE *argv, VALUE mod) if (rb_obj_is_method(body)) { struct METHOD *method = (struct METHOD *)DATA_PTR(body); VALUE rclass = method->rclass; - if (rclass != mod) { + if (rclass != mod && !RTEST(rb_class_inherited_p(mod, rclass))) { if (FL_TEST(rclass, FL_SINGLETON)) { rb_raise(rb_eTypeError, "can't bind singleton method to a different class"); } - if (!RTEST(rb_class_inherited_p(mod, rclass))) { + else { rb_raise(rb_eTypeError, "bind argument must be a subclass of %s", rb_class2name(rclass)); @@ -1268,7 +1311,7 @@ rb_mod_define_method(int argc, VALUE *argv, VALUE mod) * define_singleton_method(symbol) { block } => proc * * Defines a singleton method in the receiver. The _method_ - * parameter can be a +Proc+ or +Method+ object. + * parameter can be a +Proc+, a +Method+ or an +UnboundMethod+ object. * If a block is specified, it is used as the method body. * * class A @@ -1461,12 +1504,13 @@ umethod_bind(VALUE method, VALUE recv) struct METHOD *data, *bound; TypedData_Get_Struct(method, struct METHOD, &method_data_type, data); - if (data->rclass != CLASS_OF(recv)) { + + if (data->rclass != CLASS_OF(recv) && !rb_obj_is_kind_of(recv, data->rclass)) { if (FL_TEST(data->rclass, FL_SINGLETON)) { rb_raise(rb_eTypeError, "singleton method called for a different object"); } - if (!rb_obj_is_kind_of(recv, data->rclass)) { + else { rb_raise(rb_eTypeError, "bind argument must be an instance of %s", rb_class2name(data->rclass)); } @@ -1511,6 +1555,8 @@ rb_method_entry_arity(const rb_method_entry_t *me) case VM_METHOD_TYPE_UNDEF: case VM_METHOD_TYPE_NOTIMPLEMENTED: return 0; + case VM_METHOD_TYPE_MISSING: + return -1; case VM_METHOD_TYPE_OPTIMIZED: { switch (def->body.optimize_type) { case OPTIMIZED_METHOD_TYPE_SEND: @@ -1807,16 +1853,18 @@ static VALUE proc_binding(VALUE self) { rb_proc_t *proc; - VALUE bindval = binding_alloc(rb_cBinding); + VALUE bindval; rb_binding_t *bind; GetProcPtr(self, proc); - GetBindingPtr(bindval, bind); - if (TYPE(proc->block.iseq) == T_NODE) { - rb_raise(rb_eArgError, "Can't create Binding from C level Proc"); + if (!IS_METHOD_PROC_NODE((NODE *)proc->block.iseq)) { + rb_raise(rb_eArgError, "Can't create Binding from C level Proc"); + } } + bindval = binding_alloc(rb_cBinding); + GetBindingPtr(bindval, bind); bind->env = proc->envval; return bindval; } @@ -1923,7 +1971,7 @@ proc_curry(int argc, VALUE *argv, VALUE self) } else { sarity = FIX2INT(arity); - if (proc_lambda_p(self) && (sarity < marity || (sarity > marity && !opt))) { + if (rb_proc_lambda_p(self) && (sarity < marity || (sarity > marity && !opt))) { rb_raise(rb_eArgError, "wrong number of arguments (%d for %d)", sarity, marity); } } @@ -1980,7 +2028,7 @@ Init_Proc(void) rb_define_method(rb_cProc, "eql?", proc_eq, 1); rb_define_method(rb_cProc, "hash", proc_hash, 0); rb_define_method(rb_cProc, "to_s", proc_to_s, 0); - rb_define_method(rb_cProc, "lambda?", proc_lambda_p, 0); + rb_define_method(rb_cProc, "lambda?", rb_proc_lambda_p, 0); rb_define_method(rb_cProc, "binding", proc_binding, 0); rb_define_method(rb_cProc, "curry", proc_curry, -1); rb_define_method(rb_cProc, "source_location", rb_proc_location, 0); @@ -1995,7 +2043,6 @@ Init_Proc(void) sysstack_error = rb_exc_new3(rb_eSysStackError, rb_obj_freeze(rb_str_new2("stack level too deep"))); OBJ_TAINT(sysstack_error); - OBJ_FREEZE(sysstack_error); /* utility functions */ rb_define_global_function("proc", rb_block_proc, 0); diff --git a/process.c b/process.c index 8e8694e114b262..081e927bab71b9 100644 --- a/process.c +++ b/process.c @@ -1729,13 +1729,17 @@ rb_exec_arg_fixup(struct rb_exec_arg *e) * Replaces the current process by running the given external _command_. * _command..._ is one of following forms. * - * commandline : command line string which is passed to a shell + * commandline : command line string which is passed to the standard shell * cmdname, arg1, ... : command name and one or more arguments (no shell) * [cmdname, argv0], arg1, ... : command name, argv[0] and zero or more arguments (no shell) * * If single string is given as the command, * it is taken as a command line that is subject to shell expansion before being executed. * + * The standard shell means always "/bin/sh" on Unix-like systems, + * ENV["RUBYSHELL"] or ENV["COMSPEC"] on Windows NT series, and + * similar. + * * If two or more +string+ given, * the first is taken as a command name and * the rest are passed as parameters to command with no shell expansion. @@ -1769,7 +1773,7 @@ rb_f_exec(int argc, VALUE *argv) #define CHILD_ERRMSG_BUFLEN 80 char errmsg[CHILD_ERRMSG_BUFLEN] = { '\0' }; - rb_exec_arg_init(argc, argv, Qtrue, &earg); + rb_exec_arg_init(argc, argv, TRUE, &earg); if (NIL_P(rb_ary_entry(earg.options, EXEC_OPTION_CLOSE_OTHERS))) rb_exec_arg_addopt(&earg, ID2SYM(rb_intern("close_others")), Qfalse); rb_exec_arg_fixup(&earg); @@ -1924,8 +1928,8 @@ run_exec_dup2(VALUE ary, VALUE save, char *errmsg, size_t errmsg_buflen) struct fd_pair { int oldfd; int newfd; - int older_index; - int num_newer; + long older_index; + long num_newer; } *pairs = 0; n = RARRAY_LEN(ary); @@ -1969,7 +1973,7 @@ run_exec_dup2(VALUE ary, VALUE save, char *errmsg, size_t errmsg_buflen) /* non-cyclic redirection: O(n) */ for (i = 0; i < n; i++) { - int j = i; + long j = i; while (j != -1 && pairs[j].oldfd != -1 && pairs[j].num_newer == 0) { if (save_redirect_fd(pairs[j].newfd, save, errmsg, errmsg_buflen) < 0) goto fail; @@ -1987,7 +1991,7 @@ run_exec_dup2(VALUE ary, VALUE save, char *errmsg, size_t errmsg_buflen) /* cyclic redirection: O(n) */ for (i = 0; i < n; i++) { - int j; + long j; if (pairs[i].oldfd == -1) continue; if (pairs[i].oldfd == pairs[i].newfd) { /* self cycle */ @@ -2812,7 +2816,7 @@ rb_syswait(rb_pid_t pid) #endif RETSIGTYPE (*ifunc)(int) = 0; int status; - int i, hooked = Qfalse; + int i, hooked = FALSE; if (!overriding) { #ifdef SIGHUP @@ -2822,8 +2826,8 @@ rb_syswait(rb_pid_t pid) qfunc = signal(SIGQUIT, SIG_IGN); #endif ifunc = signal(SIGINT, SIG_IGN); - overriding = Qtrue; - hooked = Qtrue; + overriding = TRUE; + hooked = TRUE; } do { @@ -2838,7 +2842,7 @@ rb_syswait(rb_pid_t pid) signal(SIGQUIT, qfunc); #endif signal(SIGINT, ifunc); - overriding = Qfalse; + overriding = FALSE; } } @@ -2856,7 +2860,7 @@ rb_spawn_internal(int argc, VALUE *argv, int default_close_others, struct rb_exec_arg sarg; #endif - prog = rb_exec_arg_init(argc, argv, Qtrue, &earg); + prog = rb_exec_arg_init(argc, argv, TRUE, &earg); if (NIL_P(rb_ary_entry(earg.options, EXEC_OPTION_CLOSE_OTHERS))) { VALUE v = default_close_others ? Qtrue : Qfalse; rb_exec_arg_addopt(&earg, ID2SYM(rb_intern("close_others")), v); @@ -2899,13 +2903,13 @@ rb_spawn_internal(int argc, VALUE *argv, int default_close_others, rb_pid_t rb_spawn_err(int argc, VALUE *argv, char *errmsg, size_t errmsg_buflen) { - return rb_spawn_internal(argc, argv, Qtrue, errmsg, errmsg_buflen); + return rb_spawn_internal(argc, argv, TRUE, errmsg, errmsg_buflen); } rb_pid_t rb_spawn(int argc, VALUE *argv) { - return rb_spawn_internal(argc, argv, Qtrue, NULL, 0); + return rb_spawn_internal(argc, argv, TRUE, NULL, 0); } /* @@ -2915,7 +2919,7 @@ rb_spawn(int argc, VALUE *argv) * Executes _command..._ in a subshell. * _command..._ is one of following forms. * - * commandline : command line string which is passed to a shell + * commandline : command line string which is passed to the standard shell * cmdname, arg1, ... : command name and one or more arguments (no shell) * [cmdname, argv0], arg1, ... : command name, argv[0] and zero or more arguments (no shell) * @@ -2937,6 +2941,8 @@ rb_spawn(int argc, VALUE *argv) * * config.h main.rb * * + * + * See Kernel.exec for the standard shell. */ static VALUE @@ -2954,7 +2960,7 @@ rb_f_system(int argc, VALUE *argv) chfunc = signal(SIGCHLD, SIG_DFL); #endif - pid = rb_spawn_internal(argc, argv, Qfalse, NULL, 0); + pid = rb_spawn_internal(argc, argv, FALSE, NULL, 0); #if defined(HAVE_FORK) || defined(HAVE_SPAWNV) if (pid > 0) { rb_syswait(pid); @@ -2992,7 +2998,7 @@ rb_f_system(int argc, VALUE *argv) * name => val : set the environment variable * name => nil : unset the environment variable * command...: - * commandline : command line string which is passed to a shell + * commandline : command line string which is passed to the standard shell * cmdname, arg1, ... : command name and one or more arguments (no shell) * [cmdname, argv0], arg1, ... : command name, argv[0] and zero or more arguments (no shell) * options: hash @@ -3200,6 +3206,7 @@ rb_f_system(int argc, VALUE *argv) * Internally, +spawn+ uses an extra file descriptor to resolve such cyclic * file descriptor mapping. * + * See Kernel.exec for the standard shell. */ static VALUE @@ -4348,7 +4355,7 @@ proc_setgid(VALUE obj, VALUE id) #endif -static size_t maxgroups = 32; +static int maxgroups = 32; #ifdef HAVE_GETGROUPS @@ -4367,13 +4374,13 @@ static VALUE proc_getgroups(VALUE obj) { VALUE ary; - size_t i, ngroups; + int i, ngroups; rb_gid_t *groups; groups = ALLOCA_N(rb_gid_t, maxgroups); ngroups = getgroups(maxgroups, groups); - if (ngroups == (size_t)-1) + if (ngroups == -1) rb_sys_fail(0); ary = rb_ary_new(); @@ -4411,8 +4418,8 @@ proc_setgroups(VALUE obj, VALUE ary) Check_Type(ary, T_ARRAY); ngroups = RARRAY_LEN(ary); - if (ngroups > maxgroups) - rb_raise(rb_eArgError, "too many groups, %lu max", (unsigned long)maxgroups); + if (ngroups > (size_t)maxgroups) + rb_raise(rb_eArgError, "too many groups, %u max", maxgroups); groups = ALLOCA_N(rb_gid_t, ngroups); @@ -4438,7 +4445,7 @@ proc_setgroups(VALUE obj, VALUE ary) } } - if (setgroups(ngroups, groups) == -1) + if (setgroups((int)ngroups, groups) == -1) /* ngroups <= maxgroups */ rb_sys_fail(0); return proc_getgroups(obj); @@ -4507,7 +4514,7 @@ proc_getmaxgroups(VALUE obj) static VALUE proc_setmaxgroups(VALUE obj, VALUE val) { - size_t ngroups = FIX2INT(val); + int ngroups = FIX2UINT(val); if (ngroups > 4096) ngroups = 4096; diff --git a/random.c b/random.c index d3451b83cdd096..8d170a42ea7224 100644 --- a/random.c +++ b/random.c @@ -729,6 +729,7 @@ static VALUE rb_f_srand(int argc, VALUE *argv, VALUE obj) { VALUE seed, old; + struct Random *r = &default_rand; rb_secure(4); if (argc == 0) { @@ -737,8 +738,8 @@ rb_f_srand(int argc, VALUE *argv, VALUE obj) else { rb_scan_args(argc, argv, "01", &seed); } - old = default_rand.rnd.seed; - default_rand.rnd.seed = rand_init(&default_rand.rnd.mt, seed); + old = r->rnd.seed; + r->rnd.seed = rand_init(&r->rnd.mt, seed); return old; } @@ -970,7 +971,7 @@ float_value(VALUE v) * prng.rand(5.0..9.0) # => between 5.0 and 9.0, including 9.0 * prng.rand(5.0...9.0) # => between 5.0 and 9.0, excluding 9.0 * - * +begin+/+end+ of the range have to have subtruct and add methods. + * +begin+/+end+ of the range have to have subtract and add methods. * * Otherwise, it raises an ArgumentError. */ @@ -1126,25 +1127,53 @@ rb_f_rand(int argc, VALUE *argv, VALUE obj) return r; } +static st_index_t hashseed; + void Init_RandomSeed(void) { - fill_random_seed(default_rand.initial); - init_by_array(&default_rand.rnd.mt, default_rand.initial, DEFAULT_SEED_CNT); + struct Random *r = &default_rand; + struct MT *mt = &r->rnd.mt; + + fill_random_seed(r->initial); + init_by_array(mt, r->initial, DEFAULT_SEED_CNT); + + hashseed = genrand_int32(mt); +#if SIZEOF_ST_INDEX_T*CHAR_BIT > 4*8 + hashseed <<= 32; + hashseed |= genrand_int32(mt); +#endif +#if SIZEOF_ST_INDEX_T*CHAR_BIT > 8*8 + hashseed <<= 32; + hashseed |= genrand_int32(mt); +#endif +#if SIZEOF_ST_INDEX_T*CHAR_BIT > 12*8 + hashseed <<= 32; + hashseed |= genrand_int32(mt); +#endif +} + +st_index_t +rb_hash_start(st_index_t h) +{ + return st_hash_start(hashseed + h); } static void Init_RandomSeed2(void) { - default_rand.rnd.seed = make_seed_value(default_rand.initial); - memset(default_rand.initial, 0, DEFAULT_SEED_LEN); + struct Random *r = &default_rand; + rb_global_variable(&r->rnd.seed); + r->rnd.seed = make_seed_value(r->initial); + memset(r->initial, 0, DEFAULT_SEED_LEN); } void rb_reset_random_seed(void) { - uninit_genrand(&default_rand.rnd.mt); - default_rand.rnd.seed = INT2FIX(0); + struct Random *r = &default_rand; + uninit_genrand(&r->rnd.mt); + r->rnd.seed = INT2FIX(0); } void @@ -1153,7 +1182,6 @@ Init_Random(void) Init_RandomSeed2(); rb_define_global_function("srand", rb_f_srand, -1); rb_define_global_function("rand", rb_f_rand, -1); - rb_global_variable(&default_rand.rnd.seed); rb_cRandom = rb_define_class("Random", rb_cObject); rb_define_alloc_func(rb_cRandom, random_alloc); diff --git a/range.c b/range.c index 739831536e2382..60ad3939eb8042 100644 --- a/range.c +++ b/range.c @@ -105,6 +105,20 @@ range_exclude_end_p(VALUE range) return EXCL(range) ? Qtrue : Qfalse; } +static VALUE +recursive_equal(VALUE range, VALUE obj, int recur) +{ + if (recur) return Qtrue; /* Subtle! */ + if (!rb_equal(RANGE_BEG(range), RANGE_BEG(obj))) + return Qfalse; + if (!rb_equal(RANGE_END(range), RANGE_END(obj))) + return Qfalse; + + if (EXCL(range) != EXCL(obj)) + return Qfalse; + return Qtrue; +} + /* * call-seq: @@ -128,15 +142,7 @@ range_eq(VALUE range, VALUE obj) if (!rb_obj_is_kind_of(obj, rb_cRange)) return Qfalse; - if (!rb_equal(RANGE_BEG(range), RANGE_BEG(obj))) - return Qfalse; - if (!rb_equal(RANGE_END(range), RANGE_END(obj))) - return Qfalse; - - if (EXCL(range) != EXCL(obj)) - return Qfalse; - - return Qtrue; + return rb_exec_recursive_paired(recursive_equal, range, obj, obj); } static int @@ -145,10 +151,10 @@ r_lt(VALUE a, VALUE b) VALUE r = rb_funcall(a, id_cmp, 1, b); if (NIL_P(r)) - return Qfalse; + return (int)Qfalse; if (rb_cmpint(r, a, b) < 0) - return Qtrue; - return Qfalse; + return (int)Qtrue; + return (int)Qfalse; } static int @@ -158,16 +164,30 @@ r_le(VALUE a, VALUE b) VALUE r = rb_funcall(a, id_cmp, 1, b); if (NIL_P(r)) - return Qfalse; + return (int)Qfalse; c = rb_cmpint(r, a, b); if (c == 0) return (int)INT2FIX(0); if (c < 0) - return Qtrue; - return Qfalse; + return (int)Qtrue; + return (int)Qfalse; } +static VALUE +recursive_eql(VALUE range, VALUE obj, int recur) +{ + if (recur) return Qtrue; /* Subtle! */ + if (!rb_eql(RANGE_BEG(range), RANGE_BEG(obj))) + return Qfalse; + if (!rb_eql(RANGE_END(range), RANGE_END(obj))) + return Qfalse; + + if (EXCL(range) != EXCL(obj)) + return Qfalse; + return Qtrue; +} + /* * call-seq: * rng.eql?(obj) => true or false @@ -189,16 +209,7 @@ range_eql(VALUE range, VALUE obj) return Qtrue; if (!rb_obj_is_kind_of(obj, rb_cRange)) return Qfalse; - - if (!rb_eql(RANGE_BEG(range), RANGE_BEG(obj))) - return Qfalse; - if (!rb_eql(RANGE_END(range), RANGE_END(obj))) - return Qfalse; - - if (EXCL(range) != EXCL(obj)) - return Qfalse; - - return Qtrue; + return rb_exec_recursive_paired(recursive_eql, range, obj, obj); } static VALUE @@ -207,14 +218,13 @@ recursive_hash(VALUE range, VALUE dummy, int recur) st_index_t hash = EXCL(range); VALUE v; - if (recur) { - rb_raise(rb_eArgError, "recursive key for hash"); - } hash = rb_hash_start(hash); - v = rb_hash(RANGE_BEG(range)); - hash = rb_hash_uint(hash, NUM2LONG(v)); - v = rb_hash(RANGE_END(range)); - hash = rb_hash_uint(hash, NUM2LONG(v)); + if (!recur) { + v = rb_hash(RANGE_BEG(range)); + hash = rb_hash_uint(hash, NUM2LONG(v)); + v = rb_hash(RANGE_END(range)); + hash = rb_hash_uint(hash, NUM2LONG(v)); + } hash = rb_hash_uint(hash, EXCL(range) << 24); hash = rb_hash_end(hash); @@ -233,7 +243,7 @@ recursive_hash(VALUE range, VALUE dummy, int recur) static VALUE range_hash(VALUE range) { - return rb_exec_recursive(recursive_hash, range, 0); + return rb_exec_recursive_outer(recursive_hash, range, 0); } static void @@ -298,6 +308,14 @@ step_i(VALUE i, void *arg) extern int ruby_float_step(VALUE from, VALUE to, VALUE step, int excl); +static int +discrete_object_p(VALUE obj) +{ + if (rb_obj_is_kind_of(obj, rb_cTime)) return FALSE; /* until Time#succ removed */ + return rb_respond_to(obj, id_succ); +} + + /* * call-seq: * rng.step(n=1) {| obj | block } => rng @@ -406,7 +424,7 @@ range_step(int argc, VALUE *argv, VALUE range) else { VALUE args[2]; - if (!rb_respond_to(b, id_succ)) { + if (!discrete_object_p(b)) { rb_raise(rb_eTypeError, "can't iterate from %s", rb_obj_classname(b)); } @@ -488,7 +506,7 @@ range_each(VALUE range) rb_block_call(tmp, rb_intern("upto"), 2, args, rb_yield, 0); } else { - if (!rb_respond_to(beg, id_succ)) { + if (!discrete_object_p(beg)) { rb_raise(rb_eTypeError, "can't iterate from %s", rb_obj_classname(beg)); } @@ -667,8 +685,8 @@ rb_range_values(VALUE range, VALUE *begp, VALUE *endp, int *exclp) excl = EXCL(range); } else { - if (!rb_respond_to(range, id_beg)) return Qfalse; - if (!rb_respond_to(range, id_end)) return Qfalse; + if (!rb_respond_to(range, id_beg)) return (int)Qfalse; + if (!rb_respond_to(range, id_end)) return (int)Qfalse; b = rb_funcall(range, id_beg, 0); e = rb_funcall(range, id_end, 0); excl = RTEST(rb_funcall(range, rb_intern("exclude_end?"), 0)); @@ -676,7 +694,7 @@ rb_range_values(VALUE range, VALUE *begp, VALUE *endp, int *exclp) *begp = b; *endp = e; *exclp = excl; - return Qtrue; + return (int)Qtrue; } VALUE diff --git a/rational.c b/rational.c index 96e52660803828..43917bc8da12a2 100644 --- a/rational.c +++ b/rational.c @@ -1384,7 +1384,7 @@ nurat_to_r(VALUE self) the choice of a. Therefore we can simply ignore this case. Note 2: At first, we need to consider the closed interval [a,b]. but since a and b have the denominator 2^(|e|+1) whereas x itself - has a denominator <= 2^|e|, we can restrict the seach to the open + has a denominator <= 2^|e|, we can restrict the search to the open interval (a,b). So, for given a and b (0 < a < b) we are searching a rational number y with a <= y <= b. @@ -2097,7 +2097,7 @@ string_to_r_strict(VALUE self) * * Returns a rational which denotes the string form. The parser * ignores leading whitespaces and trailing garbage. Any digit - * sequences can be separeted by an underscore. Returns zero for null + * sequences can be separated by an underscore. Returns zero for null * or garbage string. * * NOTE: '0.3'.to_r isn't the same as 0.3.to_r. The former is @@ -2223,7 +2223,7 @@ nurat_s_convert(int argc, VALUE *argv, VALUE klass) * Rational(4, -6) #=> (-2/3) * 3.to_r #=> (3/1) * - * You can also create ratioanl object from floating-point numbers or + * You can also create rational object from floating-point numbers or * strings. * * Rational(0.3) #=> (5404319552844595/18014398509481984) diff --git a/re.c b/re.c index e22c8c04c29244..0f8ff7a67f568a 100644 --- a/re.c +++ b/re.c @@ -113,7 +113,7 @@ rb_memsearch_ss(const unsigned char *xs, long m, const unsigned char *ys, long n if (m > SIZEOF_VALUE) rb_bug("!!too long pattern string!!"); - /* Prepare hash value */ + /* Prepare hash value */ for (hx = *x++, hy = *y++; x < xe; ++x, ++y) { hx <<= CHAR_BIT; hy <<= CHAR_BIT; @@ -356,7 +356,7 @@ rb_reg_expr_str(VALUE str, const char *s, long len) } else if (c == -1) { int l = mbclen(p, pend, enc); - rb_str_buf_cat(str, p, l); + rb_str_buf_cat(str, p, l); p += l; continue; } @@ -526,9 +526,9 @@ rb_reg_to_s(VALUE re) rb_enc_get(re), OnigDefaultSyntax); if (r == 0) { - ++ptr; - len -= 2; - err = (onig_compile(rp, ptr, ptr + len, NULL, NULL, 0) != 0); + ++ptr; + len -= 2; + err = (onig_compile(rp, ptr, ptr + len, NULL, NULL, 0) != 0); } onig_free(rp); } @@ -3392,6 +3392,9 @@ match_setter(VALUE val) * MatchData object. * n can be a string or symbol to reference a named capture. * + * Note that the last_match is local to the thread and method scope + * of the method that did the pattern match. + * * /c(.)t/ =~ 'cat' #=> 0 * Regexp.last_match #=> # * Regexp.last_match(0) #=> "cat" @@ -3433,6 +3436,9 @@ re_warn(const char *s) * %r{...} literals, and by the Regexp::new * constructor. * + * A comprehensive reference for regexp syntax and usage is available as + * +Doc::Regexp+. + * */ void diff --git a/regenc.c b/regenc.c index 065e4d298a07b0..b9b03b03bf504f 100644 --- a/regenc.c +++ b/regenc.c @@ -789,28 +789,27 @@ extern int onigenc_minimum_property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end) { static const 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 } + PosixBracketEntryInit("Alnum", ONIGENC_CTYPE_ALNUM), + PosixBracketEntryInit("Alpha", ONIGENC_CTYPE_ALPHA), + PosixBracketEntryInit("Blank", ONIGENC_CTYPE_BLANK), + PosixBracketEntryInit("Cntrl", ONIGENC_CTYPE_CNTRL), + PosixBracketEntryInit("Digit", ONIGENC_CTYPE_DIGIT), + PosixBracketEntryInit("Graph", ONIGENC_CTYPE_GRAPH), + PosixBracketEntryInit("Lower", ONIGENC_CTYPE_LOWER), + PosixBracketEntryInit("Print", ONIGENC_CTYPE_PRINT), + PosixBracketEntryInit("Punct", ONIGENC_CTYPE_PUNCT), + PosixBracketEntryInit("Space", ONIGENC_CTYPE_SPACE), + PosixBracketEntryInit("Upper", ONIGENC_CTYPE_UPPER), + PosixBracketEntryInit("XDigit", ONIGENC_CTYPE_XDIGIT), + PosixBracketEntryInit("ASCII", ONIGENC_CTYPE_ASCII), + PosixBracketEntryInit("Word", ONIGENC_CTYPE_WORD), }; - const PosixBracketEntryType *pb; + const PosixBracketEntryType *pb, *pbe; int len; len = onigenc_strlen(enc, p, end); - for (pb = PBS; IS_NOT_NULL(pb->name); pb++) { + for (pbe = (pb = PBS) + sizeof(PBS)/sizeof(PBS[0]); pb < pbe; ++pb) { if (len == pb->len && onigenc_with_ascii_strncmp(enc, p, end, pb->name, pb->len) == 0) return pb->ctype; diff --git a/regenc.h b/regenc.h index c1d705b01a2fd6..97056214368bb2 100644 --- a/regenc.h +++ b/regenc.h @@ -96,11 +96,12 @@ typedef struct { typedef struct { - UChar *name; + const UChar *name; int ctype; short int len; } PosixBracketEntryType; +#define PosixBracketEntryInit(name, ctype) {(const UChar *)name, ctype, (short int)(sizeof(name) - 1)} /* #define USE_CRNL_AS_LINE_TERMINATOR */ #define USE_UNICODE_PROPERTIES diff --git a/regerror.c b/regerror.c index eb671386f12019..3c8b7371c2269f 100644 --- a/regerror.c +++ b/regerror.c @@ -205,17 +205,17 @@ static int to_ascii(OnigEncoding enc, UChar *s, UChar *end, while (p < end) { code = ONIGENC_MBC_TO_CODE(enc, p, end); if (code >= 0x80) { - if (code > 0xffff && len + 10 <= buf_size) { - sprint_byte_with_x((char*)(&(buf[len])), (unsigned int)(code >> 24)); - sprint_byte((char*)(&(buf[len+4])), (unsigned int)(code >> 16)); - sprint_byte((char*)(&(buf[len+6])), (unsigned int)(code >> 8)); - sprint_byte((char*)(&(buf[len+8])), (unsigned int)code); - len += 10; - } - else if (len + 6 <= buf_size) { - sprint_byte_with_x((char*)(&(buf[len])), (unsigned int)(code >> 8)); - sprint_byte((char*)(&(buf[len+4])), (unsigned int)code); - len += 6; + 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; @@ -309,38 +309,23 @@ onig_error_code_to_str(s, code, va_alist) } va_end(vargs); - return len; + return (int)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 +onig_vsnprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, + UChar* pat, UChar* pat_end, const UChar *fmt, va_list args) { size_t need; int n, 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 = (pat_end - pat) * 4 + 4; - if (n + need < bufsize) { + if (n + need < (size_t)bufsize) { strcat((char* )buf, ": /"); s = buf + onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, buf); @@ -387,3 +372,26 @@ onig_snprintf_with_pattern(buf, bufsize, enc, pat, pat_end, fmt, va_alist) *s = '\0'; } } + +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 +{ + va_list args; + va_init_list(args, fmt); + onig_vsnprintf_with_pattern(buf, bufsize, enc, + pat, pat_end, fmt, args); + va_end(args); +} + diff --git a/regexec.c b/regexec.c index cfe28836ba63a0..9fb5ff5dab6293 100644 --- a/regexec.c +++ b/regexec.c @@ -879,7 +879,7 @@ stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end, }\ k++;\ }\ - break;\ + break;\ }\ }\ }\ @@ -920,7 +920,7 @@ stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end, }\ k++;\ }\ - break;\ + break;\ }\ }\ else {\ diff --git a/regint.h b/regint.h index f7e44720e070ad..164828f430b19f 100644 --- a/regint.h +++ b/regint.h @@ -816,7 +816,7 @@ typedef st_data_t hash_data_type; typedef unsigned long hash_data_type; #endif -extern hash_table_type* onig_st_init_strend_table_with_size P_((int size)); +extern hash_table_type* onig_st_init_strend_table_with_size P_((st_index_t 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)); diff --git a/regparse.c b/regparse.c index b9667c6f670853..9f46b15cd49e6e 100644 --- a/regparse.c +++ b/regparse.c @@ -310,16 +310,19 @@ strcat_capa_from_static(UChar* dest, UChar* dest_end, #include "ruby/st.h" typedef struct { - UChar* s; - UChar* end; + const UChar* s; + const UChar* end; } st_str_end_key; static int -str_end_cmp(st_str_end_key* x, st_str_end_key* y) +str_end_cmp(st_data_t xp, st_data_t yp) { - UChar *p, *q; + const st_str_end_key *x, *y; + const UChar *p, *q; int c; + x = (const st_str_end_key *)xp; + y = (const st_str_end_key *)yp; if ((x->end - x->s) != (y->end - y->s)) return 1; @@ -336,10 +339,11 @@ str_end_cmp(st_str_end_key* x, st_str_end_key* y) } static st_index_t -str_end_hash(st_str_end_key* x) +str_end_hash(st_data_t xp) { - UChar *p; - int val = 0; + const st_str_end_key *x = (const st_str_end_key *)xp; + const UChar *p; + st_index_t val = 0; p = x->s; while (p < x->end) { @@ -350,7 +354,7 @@ str_end_hash(st_str_end_key* x) } extern hash_table_type* -onig_st_init_strend_table_with_size(int size) +onig_st_init_strend_table_with_size(st_index_t size) { static const struct st_hash_type hashType = { str_end_cmp, @@ -1430,7 +1434,7 @@ onig_node_str_cat(Node* node, const UChar* s, const UChar* end) if (NSTR(node)->capa > 0 || (len + addlen > NODE_STR_BUF_SIZE - 1)) { UChar* p; - int capa = len + addlen + NODE_STR_MARGIN; + ptrdiff_t capa = len + addlen + NODE_STR_MARGIN; if (capa <= NSTR(node)->capa) { onig_strcpy(NSTR(node)->s + len, s, end); @@ -2840,18 +2844,33 @@ fetch_name(OnigCodePoint start_code, UChar** src, UChar* end, } #endif /* USE_NAMED_GROUP */ +void onig_vsnprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, + UChar* pat, UChar* pat_end, const UChar *fmt, va_list args); + static void -CC_ESC_WARN(ScanEnv* env, UChar *c) +onig_syntax_warn(ScanEnv *env, const char *fmt, ...) +{ + va_list args; + UChar buf[WARN_BUFSIZE]; + va_start(args, fmt); + onig_vsnprintf_with_pattern(buf, WARN_BUFSIZE, env->enc, + env->pattern, env->pattern_end, + (const UChar *)fmt, args); + va_end(args); + if (env->sourcefile == NULL) + rb_warn((char *)buf); + else + rb_compile_warn(env->sourcefile, env->sourceline, (char *)buf); +} + +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); + onig_syntax_warn(env, "character class has '%s' without escape", c); } } @@ -2861,48 +2880,27 @@ 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); + onig_syntax_warn(env, "regular expression has '%s' without escape", c); } } static void CC_DUP_WARN(ScanEnv *env) { - UChar buf[WARN_BUFSIZE]; if (onig_warn == onig_null_warn || !RTEST(ruby_verbose)) return ; if (IS_SYNTAX_BV((env)->syntax, ONIG_SYN_WARN_CC_DUP) && !((env)->warnings_flag & ONIG_SYN_WARN_CC_DUP)) { (env)->warnings_flag |= ONIG_SYN_WARN_CC_DUP; - onig_snprintf_with_pattern(buf, WARN_BUFSIZE, env->enc, - env->pattern, env->pattern_end, - (UChar* )"character class has duplicated range"); - - if (env->sourcefile == NULL) - (*onig_warn)((char* )buf); - else - rb_compile_warn(env->sourcefile, env->sourceline, (char* )buf); + onig_syntax_warn(env, "character class has duplicated range"); } } static void UNKNOWN_ESC_WARN(ScanEnv *env, int c) { - UChar buf[WARN_BUFSIZE]; if (onig_warn == onig_null_warn || !RTEST(ruby_verbose)) return ; - - onig_snprintf_with_pattern(buf, WARN_BUFSIZE, env->enc, - env->pattern, env->pattern_end, - (UChar* )"Unknown escape \\%c is ignored", c); - - if (env->sourcefile == NULL) - (*onig_warn)((char* )buf); - else - rb_compile_warn(env->sourcefile, env->sourceline, (char* )buf); + onig_syntax_warn(env, "Unknown escape \\%c is ignored", c); } static UChar* @@ -3071,6 +3069,9 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) PUNFETCH; } } + else { + onig_syntax_warn(env, "invalid Unicode Property \\%c", c); + } break; case 'x': @@ -3584,8 +3585,10 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) } } } - else - PUNFETCH; + else { + PUNFETCH; + onig_syntax_warn(env, "invalid back reference"); + } } break; #endif @@ -3607,8 +3610,10 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) tok->u.call.name_end = name_end; tok->u.call.gnum = gnum; } - else - PUNFETCH; + else { + onig_syntax_warn(env, "invalid subexp call"); + PUNFETCH; + } } break; #endif @@ -3636,6 +3641,9 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) PUNFETCH; } } + else { + onig_syntax_warn(env, "invalid Unicode Property \\%c", c); + } break; default: diff --git a/ruby.c b/ruby.c index bcc49d4ef2ae63..a9632e153b53b8 100644 --- a/ruby.c +++ b/ruby.c @@ -147,10 +147,10 @@ usage(const char *name) "-rlibrary require the library, before executing your script", "-s enable some switch parsing for switches after script name", "-S look for the script using PATH environment variable", - "-T[level] turn on tainting checks", + "-T[level=1] turn on tainting checks", "-v print version number, then turn on verbose mode", "-w turn warnings on for your script", - "-W[level] set warning level; 0=silence, 1=medium, 2=verbose (default for level)", + "-W[level=2] set warning level; 0=silence, 1=medium, 2=verbose", "-x[directory] strip off text before #!ruby line and perhaps cd to directory", "--copyright print the copyright", "--version print the version", @@ -350,8 +350,8 @@ ruby_init_loadpath_safe(int safe_level) VALUE sopath; # else char libpath[MAXPATHLEN + 1]; - size_t baselen; # endif + size_t baselen; char *p; #if defined _WIN32 || defined __CYGWIN__ @@ -416,16 +416,13 @@ ruby_init_loadpath_safe(int safe_level) strlcpy(libpath, ".", sizeof(libpath)); p = libpath + 1; } - - baselen = p - libpath; - -#define BASEPATH() rb_str_buf_cat(rb_str_buf_new(baselen+len), libpath, baselen) #else rb_str_set_len(sopath, p - libpath); - -#define BASEPATH() rb_str_dup(sopath) #endif + baselen = p - libpath; +#define BASEPATH() rb_str_buf_cat(rb_str_buf_new(baselen+len), libpath, baselen) + #define RUBY_RELATIVE(path, len) rb_str_buf_cat(BASEPATH(), path, len) #else #define RUBY_RELATIVE(path, len) rubylib_mangled_path(path, len) @@ -497,7 +494,7 @@ process_sflag(int *sflag) VALUE v = *args++; char *s = StringValuePtr(v); char *p; - int hyphen = Qfalse; + int hyphen = FALSE; if (s[0] != '-') break; @@ -514,7 +511,7 @@ process_sflag(int *sflag) break; } if (*p == '-') { - hyphen = Qtrue; + hyphen = TRUE; } else if (*p != '_' && !ISALNUM(*p)) { VALUE name_error[2]; @@ -670,9 +667,9 @@ set_option_encoding_once(const char *type, VALUE *name, const char *e, long elen } #define set_internal_encoding_once(opt, e, elen) \ - set_option_encoding_once("default_intenal", &opt->intern.enc.name, e, elen) + set_option_encoding_once("default_internal", &opt->intern.enc.name, e, elen) #define set_external_encoding_once(opt, e, elen) \ - set_option_encoding_once("default_extenal", &opt->ext.enc.name, e, elen) + set_option_encoding_once("default_external", &opt->ext.enc.name, e, elen) #define set_source_encoding_once(opt, e, elen) \ set_option_encoding_once("source", &opt->src.enc.name, e, elen) @@ -695,17 +692,17 @@ proc_options(long argc, char **argv, struct cmdline_options *opt, int envopt) switch (*s) { case 'a': if (envopt) goto noenvopt; - opt->do_split = Qtrue; + opt->do_split = TRUE; s++; goto reswitch; case 'p': if (envopt) goto noenvopt; - opt->do_print = Qtrue; + opt->do_print = TRUE; /* through */ case 'n': if (envopt) goto noenvopt; - opt->do_loop = Qtrue; + opt->do_loop = TRUE; s++; goto reswitch; @@ -778,7 +775,7 @@ proc_options(long argc, char **argv, struct cmdline_options *opt, int envopt) case 'l': if (envopt) goto noenvopt; - opt->do_line = Qtrue; + opt->do_line = TRUE; rb_output_rs = rb_rs; s++; goto reswitch; @@ -786,7 +783,7 @@ proc_options(long argc, char **argv, struct cmdline_options *opt, int envopt) case 'S': if (envopt) goto noenvopt; forbid_setid("-S"); - opt->do_search = Qtrue; + opt->do_search = TRUE; s++; goto reswitch; @@ -828,7 +825,7 @@ proc_options(long argc, char **argv, struct cmdline_options *opt, int envopt) case 'x': if (envopt) goto noenvopt; - opt->xflag = Qtrue; + opt->xflag = TRUE; s++; if (*s && chdir(s) < 0) { rb_fatal("Can't chdir to %s", s); @@ -1341,8 +1338,6 @@ process_options(int argc, char **argv, struct cmdline_options *opt) } } ruby_init_gems(!(opt->disable & DISABLE_BIT(gems))); - rb_progname = opt->script_name; - rb_vm_set_progname(rb_progname); ruby_set_argv(argc, argv); process_sflag(&opt->sflag); @@ -1387,6 +1382,8 @@ process_options(int argc, char **argv, struct cmdline_options *opt) tree = load_file(parser, opt->script, 1, opt); }); } + rb_progname = opt->script_name; + rb_vm_set_progname(rb_progname); if (opt->dump & DUMP_BIT(yydebug)) return Qtrue; if (opt->ext.enc.index >= 0) { @@ -1513,7 +1510,7 @@ load_file_internal(VALUE arg) if (opt->xflag) { search_shebang: forbid_setid("-x"); - opt->xflag = Qfalse; + opt->xflag = FALSE; while (!NIL_P(line = rb_io_gets(f))) { line_start++; if (RSTRING_LEN(line) > 2 @@ -1584,7 +1581,7 @@ load_file_internal(VALUE arg) rb_funcall(f, set_encoding, 2, rb_enc_from_encoding(enc), rb_str_new_cstr("-")); tree = rb_parser_compile_file(parser, fname, f, line_start); rb_funcall(f, set_encoding, 1, rb_parser_encoding(parser)); - if (script && rb_parser_end_seen_p(parser)) { + if (script && tree && rb_parser_end_seen_p(parser)) { rb_define_global_const("DATA", f); } else if (f != rb_stdin) { diff --git a/signal.c b/signal.c index b1773bc4d5c21c..43ed80b85bc59c 100644 --- a/signal.c +++ b/signal.c @@ -286,6 +286,7 @@ esignal_signo(VALUE self) return rb_iv_get(self, "signo"); } +/* :nodoc: */ static VALUE interrupt_init(int argc, VALUE *argv, VALUE self) { @@ -325,6 +326,16 @@ ruby_default_signal(int sig) * produces: * * Ouch! + * + * If _signal_ is an integer but wrong for signal, + * Errno::EINVAL or +RangeError+ will be raised. + * Otherwise unless _signal_ is a +String+ or a +Symbol+, and a known + * signal name, +ArgumentError+ will be raised. + * + * Also, Errno::ESRCH or +RangeError+ for invalid _pid_, + * Errno::EPERM when failed because of no privilege, + * will be raised. In these cases, signals may have been sent to + * preceding processes. */ VALUE @@ -476,7 +487,7 @@ ruby_signal(int signum, sighandler_t handler) #endif if (sigaction(signum, &sigact, &old) < 0) { if (errno != 0 && errno != EINVAL) { - rb_bug("sigaction error.\n"); + rb_bug_errno("sigaction", errno); } } return old.sa_handler; @@ -595,7 +606,7 @@ sigsegv(int sig SIGINFO_ARG) } #endif if (segv_received) { - fprintf(stderr, "SEGV recieved in SEGV handler\n"); + fprintf(stderr, "SEGV received in SEGV handler\n"); exit(EXIT_FAILURE); } else { diff --git a/spec/README b/spec/README index 3ba87445e9bcc7..786aa5b7866252 100644 --- a/spec/README +++ b/spec/README @@ -25,6 +25,6 @@ and put it into this directory. $ make test-rubyspec :mspec command verifies the specified spec. - $ mspec {language|core|language} + $ mspec {language|core|library} or $ mspec spec/path/to/some_spec.rb diff --git a/sprintf.c b/sprintf.c index 11f97e5321c109..b5cad94fd752a3 100644 --- a/sprintf.c +++ b/sprintf.c @@ -430,7 +430,7 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt) rb_encoding *enc; const char *p, *end; char *buf; - int blen, bsiz; + long blen, bsiz; VALUE result; long scanned = 0; @@ -691,7 +691,7 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt) } /* need to adjust multi-byte string pos */ if ((flags&FWIDTH) && (width > slen)) { - width -= slen; + width -= (int)slen; if (!(flags&FMINUS)) { CHECK(width); while (width--) { @@ -775,7 +775,7 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt) bignum = 1; break; case T_STRING: - val = rb_str_to_inum(val, 0, Qtrue); + val = rb_str_to_inum(val, 0, TRUE); goto bin_retry; case T_BIGNUM: bignum = 1; @@ -851,6 +851,7 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt) } } } + len = (int)strlen(s); } else { if (sign) { @@ -893,10 +894,10 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt) } } } + len = rb_long2int(RSTRING_END(tmp) - s); } pos = -1; - len = strlen(s); if (dots) { prec -= 2; width -= 2; @@ -926,7 +927,7 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt) prefix = 0; } if (prefix) { - width -= strlen(prefix); + width -= (int)strlen(prefix); } if ((flags & (FZERO|FMINUS|FPREC)) == FZERO) { prec = width; @@ -947,7 +948,7 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt) } if (sc) PUSH(&sc, 1); if (prefix) { - int plen = strlen(prefix); + int plen = (int)strlen(prefix); PUSH(prefix, plen); } CHECK(prec - len); @@ -998,7 +999,7 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt) else { expr = "Inf"; } - need = strlen(expr); + need = (int)strlen(expr); if ((!isnan(fval) && fval < 0.0) || (flags & FPLUS)) need++; if ((flags & FWIDTH) && need < width) diff --git a/st.c b/st.c index 9326e6f1a59581..7a5509cbc90e7d 100644 --- a/st.c +++ b/st.c @@ -18,7 +18,7 @@ typedef struct st_table_entry st_table_entry; struct st_table_entry { - unsigned int hash; + st_index_t hash; st_data_t key; st_data_t record; st_table_entry *next; @@ -71,6 +71,7 @@ static void rehash(st_table *); #define EQUAL(table,x,y) ((x)==(y) || (*table->type->compare)((x),(y)) == 0) +/* remove cast to unsigned int in the future */ #define do_hash(key,table) (unsigned int)(st_index_t)(*(table)->type->hash)((key)) #define do_hash_bin(key,table) (do_hash(key, table)%(table)->num_bins) @@ -140,19 +141,27 @@ new_size(st_index_t size) } #ifdef HASH_LOG -static int collision = 0; +#ifdef HAVE_UNISTD_H +#include +#endif +static struct { + int all, total, num, str, strcase; +} collision; static int init_st = 0; static void stat_col(void) { - FILE *f = fopen("/tmp/col", "w"); - fprintf(f, "collision: %d\n", collision); + char fname[10+sizeof(long)*3]; + FILE *f = fopen((snprintf(fname, sizeof(fname), "/tmp/col%ld", (long)getpid()), fname), "w"); + fprintf(f, "collision: %d / %d (%6.2f)\n", collision.all, collision.total, + ((double)collision.all / (collision.total)) * 100); + fprintf(f, "num: %d, str: %d, strcase: %d\n", collision.num, collision.str, collision.strcase); fclose(f); } #endif -#define MAX_PACKED_NUMHASH ((st_index_t)5) +#define MAX_PACKED_NUMHASH (ST_DEFAULT_INIT_TABLE_SIZE/2) st_table* st_init_table_with_size(const struct st_hash_type *type, st_index_t size) @@ -160,6 +169,12 @@ st_init_table_with_size(const struct st_hash_type *type, st_index_t size) st_table *tbl; #ifdef HASH_LOG +# if HASH_LOG+0 < 0 + { + const char *e = getenv("ST_HASH_LOG"); + if (!e || !*e) init_st = 1; + } +# endif if (init_st == 0) { init_st = 1; atexit(stat_col); @@ -270,14 +285,31 @@ st_memsize(const st_table *table) ((ptr) != 0 && (ptr->hash != (hash_val) || !EQUAL((table), (key), (ptr)->key))) #ifdef HASH_LOG -#define COLLISION collision++ +static void +count_collision(const struct st_hash_type *type) +{ + collision.all++; + if (type == &type_numhash) { + collision.num++; + } + else if (type == &type_strhash) { + collision.strcase++; + } + else if (type == &type_strcasehash) { + collision.str++; + } +} +#define COLLISION (collision_check ? count_collision(table->type) : (void)0) +#define FOUND_ENTRY (collision_check ? collision.total++ : (void)0) #else #define COLLISION +#define FOUND_ENTRY #endif #define FIND_ENTRY(table, ptr, hash_val, bin_pos) do {\ bin_pos = hash_val%(table)->num_bins;\ ptr = (table)->bins[bin_pos];\ + FOUND_ENTRY;\ if (PTR_NOT_EQUAL(table, ptr, hash_val, key)) {\ COLLISION;\ while (PTR_NOT_EQUAL(table, ptr->next, hash_val, key)) {\ @@ -287,6 +319,8 @@ st_memsize(const st_table *table) }\ } while (0) +#define collision_check 0 + int st_lookup(st_table *table, register st_data_t key, st_data_t *value) { @@ -319,7 +353,7 @@ st_lookup(st_table *table, register st_data_t key, st_data_t *value) int st_get_key(st_table *table, register st_data_t key, st_data_t *result) { - unsigned int hash_val, bin_pos; + st_index_t hash_val, bin_pos; register st_table_entry *ptr; if (table->entries_packed) { @@ -345,10 +379,17 @@ st_get_key(st_table *table, register st_data_t key, st_data_t *result) } } +#undef collision_check +#define collision_check 1 + +#define MORE_PACKABLE_P(table) \ + ((st_index_t)((table)->num_entries+1) * 2 <= (table)->num_bins && \ + (table)->num_entries+1 <= MAX_PACKED_NUMHASH) + #define ADD_DIRECT(table, key, value, hash_val, bin_pos)\ do {\ st_table_entry *entry;\ - if (table->num_entries/(table->num_bins) > ST_DEFAULT_MAX_DENSITY) {\ + if (table->num_entries > ST_DEFAULT_MAX_DENSITY * table->num_bins) {\ rehash(table);\ bin_pos = hash_val % table->num_bins;\ }\ @@ -375,17 +416,19 @@ do {\ static void unpack_entries(register st_table *table) { - int i; + st_index_t i; struct st_table_entry *packed_bins[MAX_PACKED_NUMHASH*2]; - int num_entries = table->num_entries; - - memcpy(packed_bins, table->bins, sizeof(struct st_table_entry *) * num_entries*2); - table->entries_packed = 0; - table->num_entries = 0; - memset(table->bins, 0, sizeof(struct st_table_entry *) * table->num_bins); - for (i = 0; i < num_entries; i++) { - st_insert(table, (st_data_t)packed_bins[i*2], (st_data_t)packed_bins[i*2+1]); + st_table tmp_table = *table; + + memcpy(packed_bins, table->bins, sizeof(struct st_table_entry *) * table->num_entries*2); + table->bins = packed_bins; + tmp_table.entries_packed = 0; + tmp_table.num_entries = 0; + memset(tmp_table.bins, 0, sizeof(struct st_table_entry *) * tmp_table.num_bins); + for (i = 0; i < table->num_entries; i++) { + st_insert(&tmp_table, (st_data_t)packed_bins[i*2], (st_data_t)packed_bins[i*2+1]); } + *table = tmp_table; } int @@ -402,7 +445,7 @@ st_insert(register st_table *table, register st_data_t key, st_data_t value) return 1; } } - if ((table->num_entries+1) * 2 <= table->num_bins && table->num_entries+1 <= MAX_PACKED_NUMHASH) { + if (MORE_PACKABLE_P(table)) { i = table->num_entries++; table->bins[i*2] = (struct st_table_entry*)key; table->bins[i*2+1] = (struct st_table_entry*)value; @@ -441,7 +484,7 @@ st_insert2(register st_table *table, register st_data_t key, st_data_t value, return 1; } } - if ((table->num_entries+1) * 2 <= table->num_bins && table->num_entries+1 <= MAX_PACKED_NUMHASH) { + if (MORE_PACKABLE_P(table)) { i = table->num_entries++; table->bins[i*2] = (struct st_table_entry*)key; table->bins[i*2+1] = (struct st_table_entry*)value; @@ -473,7 +516,7 @@ st_add_direct(st_table *table, st_data_t key, st_data_t value) if (table->entries_packed) { int i; - if ((table->num_entries+1) * 2 <= table->num_bins && table->num_entries+1 <= MAX_PACKED_NUMHASH) { + if (MORE_PACKABLE_P(table)) { i = table->num_entries++; table->bins[i*2] = (struct st_table_entry*)key; table->bins[i*2+1] = (struct st_table_entry*)value; @@ -925,6 +968,7 @@ st_reverse_foreach(st_table *table, int (*func)(ANYARGS), st_data_t arg) */ #define FNV_32_PRIME 0x01000193 +#ifdef ST_USE_FNV1 static st_index_t strhash(st_data_t arg) { @@ -943,6 +987,259 @@ strhash(st_data_t arg) } return hval; } +#else + +#ifndef UNALIGNED_WORD_ACCESS +# if defined __i386__ || defined _M_IX86 +# define UNALIGNED_WORD_ACCESS 1 +# endif +#endif +#ifndef UNALIGNED_WORD_ACCESS +# define UNALIGNED_WORD_ACCESS 0 +#endif + +/* MurmurHash described in http://murmurhash.googlepages.com/ */ +#ifndef MURMUR +#define MURMUR 2 +#endif + +#if MURMUR == 1 +#define MurmurMagic 0xc6a4a793 +#elif MURMUR == 2 +#if SIZEOF_ST_INDEX_T > 4 +#define MurmurMagic 0xc6a4a7935bd1e995 +#else +#define MurmurMagic 0x5bd1e995 +#endif +#endif + +static inline st_index_t +murmur(st_index_t h, st_index_t k, int r) +{ + const st_index_t m = MurmurMagic; +#if MURMUR == 1 + h += k; + h *= m; + h ^= h >> r; +#elif MURMUR == 2 + k *= m; + k ^= k >> r; + k *= m; + + h *= m; + h ^= k; +#endif + return h; +} + +static inline st_index_t +murmur_finish(st_index_t h) +{ +#if MURMUR == 1 + h = murmur(h, 0, 10); + h = murmur(h, 0, 17); +#elif MURMUR == 2 + h ^= h >> 13; + h *= MurmurMagic; + h ^= h >> 15; +#endif + return h; +} + +#define murmur_step(h, k) murmur(h, k, 16) + +#if MURMUR == 1 +#define murmur1(h) murmur_step(h, 16) +#else +#define murmur1(h) murmur_step(h, 24) +#endif + +st_index_t +st_hash(const void *ptr, size_t len, st_index_t h) +{ + const char *data = ptr; + st_index_t t = 0; + + h += 0xdeadbeef; + +#define data_at(n) (st_index_t)((unsigned char)data[n]) +#define UNALIGNED_ADD_4 UNALIGNED_ADD(2); UNALIGNED_ADD(1); UNALIGNED_ADD(0) +#if SIZEOF_ST_INDEX_T > 4 +#define UNALIGNED_ADD_8 UNALIGNED_ADD(6); UNALIGNED_ADD(5); UNALIGNED_ADD(4); UNALIGNED_ADD(3); UNALIGNED_ADD_4 +#if SIZEOF_ST_INDEX_T > 8 +#define UNALIGNED_ADD_16 UNALIGNED_ADD(14); UNALIGNED_ADD(13); UNALIGNED_ADD(12); UNALIGNED_ADD(11); \ + UNALIGNED_ADD(10); UNALIGNED_ADD(9); UNALIGNED_ADD(8); UNALIGNED_ADD(7); UNALIGNED_ADD_8 +#define UNALIGNED_ADD_ALL UNALIGNED_ADD_16 +#endif +#define UNALIGNED_ADD_ALL UNALIGNED_ADD_8 +#else +#define UNALIGNED_ADD_ALL UNALIGNED_ADD_4 +#endif + if (len >= sizeof(st_index_t)) { +#if !UNALIGNED_WORD_ACCESS + int align = (int)((st_data_t)data % sizeof(st_index_t)); + if (align) { + st_index_t d = 0; + int sl, sr, pack; + + switch (align) { +#ifdef WORDS_BIGENDIAN +# define UNALIGNED_ADD(n) case SIZEOF_ST_INDEX_T - (n) - 1: \ + t |= data_at(n) << CHAR_BIT*(SIZEOF_ST_INDEX_T - (n) - 2) +#else +# define UNALIGNED_ADD(n) case SIZEOF_ST_INDEX_T - (n) - 1: \ + t |= data_at(n) << CHAR_BIT*(n) +#endif + UNALIGNED_ADD_ALL; +#undef UNALIGNED_ADD + } + +#ifdef WORDS_BIGENDIAN + t >>= (CHAR_BIT * align) - CHAR_BIT; +#else + t <<= (CHAR_BIT * align); +#endif + + data += sizeof(st_index_t)-align; + len -= sizeof(st_index_t)-align; + + sl = CHAR_BIT * (SIZEOF_ST_INDEX_T-align); + sr = CHAR_BIT * align; + + while (len >= sizeof(st_index_t)) { + d = *(st_index_t *)data; +#ifdef WORDS_BIGENDIAN + t = (t << sr) | (d >> sl); +#else + t = (t >> sr) | (d << sl); +#endif + h = murmur_step(h, t); + t = d; + data += sizeof(st_index_t); + len -= sizeof(st_index_t); + } + + pack = len < (size_t)align ? (int)len : align; + d = 0; + switch (pack) { +#ifdef WORDS_BIGENDIAN +# define UNALIGNED_ADD(n) case (n) + 1: \ + d |= data_at(n) << CHAR_BIT*(SIZEOF_ST_INDEX_T - (n) - 1) +#else +# define UNALIGNED_ADD(n) case (n) + 1: \ + d |= data_at(n) << CHAR_BIT*(n) +#endif + UNALIGNED_ADD_ALL; +#undef UNALIGNED_ADD + } +#ifdef WORDS_BIGENDIAN + t = (t << sr) | (d >> sl); +#else + t = (t >> sr) | (d << sl); +#endif + +#if MURMUR == 2 + if (len < (size_t)align) goto skip_tail; +#endif + h = murmur_step(h, t); + data += pack; + len -= pack; + } + else +#endif + { + do { + h = murmur_step(h, *(st_index_t *)data); + data += sizeof(st_index_t); + len -= sizeof(st_index_t); + } while (len >= sizeof(st_index_t)); + } + } + + t = 0; + switch (len) { +#ifdef WORDS_BIGENDIAN +# define UNALIGNED_ADD(n) case (n) + 1: \ + t |= data_at(n) << CHAR_BIT*(SIZEOF_ST_INDEX_T - (n) - 1) +#else +# define UNALIGNED_ADD(n) case (n) + 1: \ + t |= data_at(n) << CHAR_BIT*(n) +#endif + UNALIGNED_ADD_ALL; +#undef UNALIGNED_ADD +#if MURMUR == 1 + h = murmur_step(h, t); +#elif MURMUR == 2 +# if !UNALIGNED_WORD_ACCESS + skip_tail: +# endif + h ^= t; + h *= MurmurMagic; +#endif + } + + return murmur_finish(h); +} + +st_index_t +st_hash_uint32(st_index_t h, uint32_t i) +{ + return murmur_step(h + i, 16); +} + +st_index_t +st_hash_uint(st_index_t h, st_index_t i) +{ + st_index_t v = 0; + h += i; +#ifdef WORDS_BIGENDIAN +#if SIZEOF_ST_INDEX_T*CHAR_BIT > 12*8 + v = murmur1(v + (h >> 12*8)); +#endif +#if SIZEOF_ST_INDEX_T*CHAR_BIT > 8*8 + v = murmur1(v + (h >> 8*8)); +#endif +#if SIZEOF_ST_INDEX_T*CHAR_BIT > 4*8 + v = murmur1(v + (h >> 4*8)); +#endif +#endif + v = murmur1(v + h); +#ifndef WORDS_BIGENDIAN +#if SIZEOF_ST_INDEX_T*CHAR_BIT > 4*8 + v = murmur1(v + (h >> 4*8)); +#endif +#if SIZEOF_ST_INDEX_T*CHAR_BIT > 8*8 + v = murmur1(v + (h >> 8*8)); +#endif +#if SIZEOF_ST_INDEX_T*CHAR_BIT > 12*8 + v = murmur1(v + (h >> 12*8)); +#endif +#endif + return v; +} + +st_index_t +st_hash_end(st_index_t h) +{ + h = murmur_step(h, 10); + h = murmur_step(h, 17); + return h; +} + +#undef st_hash_start +st_index_t +st_hash_start(st_index_t h) +{ + return h; +} + +static st_index_t +strhash(st_data_t arg) +{ + register const char *string = (const char *)arg; + return st_hash(string, strlen(string), FNV1_32A_INIT); +} +#endif int st_strcasecmp(const char *s1, const char *s2) diff --git a/strftime.c b/strftime.c index 076822742b7732..0ffe6f2bbe1a25 100644 --- a/strftime.c +++ b/strftime.c @@ -496,7 +496,13 @@ rb_strftime(char *s, size_t maxsize, const char *format, const struct vtm *vtm, continue; case 'Y': /* year with century */ - FMTV('0', 1, "d", vtm->year); + if (FIXNUM_P(vtm->year)) { + long y = FIX2LONG(vtm->year); + FMT('0', 0 <= y ? 4 : 5, "ld", y); + } + else { + FMTV('0', 4, "d", vtm->year); + } continue; #ifdef MAILHEADER_EXT @@ -515,7 +521,7 @@ rb_strftime(char *s, size_t maxsize, const char *format, const struct vtm *vtm, * live without, but it would be a great help to those of * us that muck around with various message processors. */ - case 'z': /* time zone offset east of GMT e.g. -0600 */ + case 'z': /* time zone offset east of GMT e.g. -0600 */ if (precision < 4) precision = 4; NEEDS(precision + 1); if (gmt) { @@ -577,7 +583,7 @@ rb_strftime(char *s, size_t maxsize, const char *format, const struct vtm *vtm, continue; #endif /* MAILHEADER_EXT */ - case 'Z': /* time zone name or abbrevation */ + case 'Z': /* time zone name or abbreviation */ if (flags & BIT_OF(CHCASE)) { flags &= ~(BIT_OF(UPPER)|BIT_OF(CHCASE)); flags |= BIT_OF(LOWER); @@ -943,7 +949,7 @@ iso8601wknum(const struct tm *timeptr) * and that * timeptr->tm_wday MOD 7 == timeptr->tm_wday * from which it follows that. . . - */ + */ jan1day = timeptr->tm_wday - (timeptr->tm_yday % 7); if (jan1day < 0) jan1day += 7; diff --git a/string.c b/string.c index aa36c37d721156..a722ac14b07548 100644 --- a/string.c +++ b/string.c @@ -26,6 +26,8 @@ #include #endif +#define numberof(array) (int)(sizeof(array) / sizeof((array)[0])) + #undef rb_str_new_cstr #undef rb_tainted_str_new_cstr #undef rb_usascii_str_new_cstr @@ -334,10 +336,10 @@ rb_enc_str_asciionly_p(VALUE str) rb_encoding *enc = STR_ENC_GET(str); if (!rb_enc_asciicompat(enc)) - return Qfalse; + return FALSE; else if (rb_enc_str_coderange(str) == ENC_CODERANGE_7BIT) - return Qtrue; - return Qfalse; + return TRUE; + return FALSE; } static inline void @@ -572,6 +574,18 @@ rb_locale_str_new_cstr(const char *ptr) return rb_external_str_new_with_enc(ptr, strlen(ptr), rb_locale_encoding()); } +VALUE +rb_filesystem_str_new(const char *ptr, long len) +{ + return rb_external_str_new_with_enc(ptr, len, rb_filesystem_encoding()); +} + +VALUE +rb_filesystem_str_new_cstr(const char *ptr) +{ + return rb_external_str_new_with_enc(ptr, strlen(ptr), rb_filesystem_encoding()); +} + VALUE rb_str_export(VALUE str) { @@ -1159,6 +1173,7 @@ rb_str_times(VALUE str, VALUE times) { VALUE str2; long n, len; + char *ptr2; len = NUM2LONG(times); if (len < 0) { @@ -1169,16 +1184,17 @@ rb_str_times(VALUE str, VALUE times) } str2 = rb_str_new5(str, 0, len *= RSTRING_LEN(str)); + ptr2 = RSTRING_PTR(str2); if (len) { n = RSTRING_LEN(str); - memcpy(RSTRING_PTR(str2), RSTRING_PTR(str), n); + memcpy(ptr2, RSTRING_PTR(str), n); while (n <= len/2) { - memcpy(RSTRING_PTR(str2) + n, RSTRING_PTR(str2), n); + memcpy(ptr2 + n, ptr2, n); n *= 2; } - memcpy(RSTRING_PTR(str2) + n, RSTRING_PTR(str2), len-n); + memcpy(ptr2 + n, ptr2, len-n); } - RSTRING_PTR(str2)[RSTRING_LEN(str2)] = '\0'; + ptr2[RSTRING_LEN(str2)] = '\0'; OBJ_INFECT(str2, str); rb_enc_cr_str_copy_for_substr(str2, str); @@ -1205,7 +1221,7 @@ rb_str_format_m(VALUE str, VALUE arg) volatile VALUE tmp = rb_check_array_type(arg); if (!NIL_P(tmp)) { - return rb_str_format(RARRAY_LEN(tmp), RARRAY_PTR(tmp), str); + return rb_str_format(RARRAY_LENINT(tmp), RARRAY_PTR(tmp), str); } return rb_str_format(1, &arg, str); } @@ -1366,7 +1382,7 @@ rb_check_string_type(VALUE str) * String.try_convert(obj) -> string or nil * * Try to convert obj into a String, using to_str method. - * Returns converted regexp or nil if obj cannot be converted + * Returns converted string or nil if obj cannot be converted * for any reason. * * String.try_convert("str") # => str @@ -1452,7 +1468,7 @@ rb_str_offset(VALUE str, long pos) static char * str_utf8_nth(const char *p, const char *e, long nth) { - if ((int)SIZEOF_VALUE * 2 < nth) { + if ((int)SIZEOF_VALUE < e - p && (int)SIZEOF_VALUE * 2 < nth) { const VALUE *s, *t; const VALUE lowbits = sizeof(VALUE) - 1; s = (const VALUE*)(~lowbits & ((VALUE)p + lowbits)); @@ -1481,7 +1497,6 @@ static long str_utf8_offset(const char *p, const char *e, long nth) { const char *pp = str_utf8_nth(p, e, nth); - if (!pp) return e - p; return pp - p; } #endif @@ -1739,6 +1754,8 @@ str_buf_cat(VALUE str, const char *ptr, long len) return str; } +#define str_buf_cat2(str, ptr) str_buf_cat(str, (ptr), strlen(ptr)) + VALUE rb_str_buf_cat(VALUE str, const char *ptr, long len) { @@ -1974,257 +1991,10 @@ rb_str_concat(VALUE str1, VALUE str2) return rb_str_append(str1, str2); } -#ifndef UNALIGNED_WORD_ACCESS -# if defined __i386__ || defined _M_IX86 -# define UNALIGNED_WORD_ACCESS 1 -# endif -#endif -#ifndef UNALIGNED_WORD_ACCESS -# define UNALIGNED_WORD_ACCESS 0 -#endif - -/* MurmurHash described in http://murmurhash.googlepages.com/ */ -#ifndef MURMUR -#define MURMUR 2 -#endif - -#define MurmurMagic 0x7fd652ad - -static inline unsigned long -murmur(unsigned long h, unsigned long k, int r) -{ - const unsigned int m = MurmurMagic; -#if MURMUR == 1 - h += k; - h *= m; - h ^= h >> r; -#elif MURMUR == 2 - k *= m; - k ^= k >> r; - k *= m; - - h *= m; - h ^= k; -#endif - return h; -} -#define murmur16(h) murmur_step(h, 16) - -static inline unsigned long -murmur_finish(unsigned long h) -{ -#if MURMUR == 1 - h = murmur(h, 0, 10); - h = murmur(h, 0, 17); -#elif MURMUR == 2 - h ^= h >> 13; - h *= MurmurMagic; - h ^= h >> 15; -#endif - return h; -} - -#define murmur_step(h, k) murmur(h, k, 16) - -static st_index_t -hash(const unsigned char * data, size_t len, st_index_t h) -{ - uint32_t t = 0; - - h += 0xdeadbeef; - -#ifdef WORDS_BIGENDIAN -# define SHIFT_OFFSET(i) ((i)*CHAR_BIT) -#else -# define SHIFT_OFFSET(i) (32-(i)*CHAR_BIT) -#endif - if (len >= sizeof(uint32_t)) { -#if !UNALIGNED_WORD_ACCESS - int align = (int)((VALUE)data % sizeof(uint32_t)); - if (align) { - uint32_t d = 0; - int sl, sr, pack; - - switch (align) { -#ifdef WORDS_BIGENDIAN - case 1: t |= data[2]; - case 2: t |= data[1] << CHAR_BIT; - case 3: t |= data[0] << CHAR_BIT*2; -#else - case 1: t |= data[2] << CHAR_BIT*2; - case 2: t |= data[1] << CHAR_BIT; - case 3: t |= data[0]; -#endif - } - -#ifdef WORDS_BIGENDIAN - t >>= (CHAR_BIT * align) - CHAR_BIT; -#else - t <<= (CHAR_BIT * align); -#endif - - data += sizeof(uint32_t)-align; - len -= sizeof(uint32_t)-align; - - sl = CHAR_BIT * ((int)sizeof(uint32_t)-align); - sr = CHAR_BIT * align; - - while (len >= sizeof(uint32_t)) { - d = *(uint32_t *)data; -#ifdef WORDS_BIGENDIAN - t = (t << sr) | (d >> sl); -#else - t = (t >> sr) | (d << sl); -#endif - h = murmur_step(h, t); - t = d; - data += sizeof(uint32_t); - len -= sizeof(uint32_t); - } - - pack = len < (size_t)align ? (int)len : align; - d = 0; - switch (pack) { -#ifdef WORDS_BIGENDIAN - case 3: d |= data[2] << CHAR_BIT; - case 2: d |= data[1] << CHAR_BIT*2; - case 1: d |= data[0] << CHAR_BIT*3; -#else - case 3: d |= data[2] << CHAR_BIT*2; - case 2: d |= data[1] << CHAR_BIT; - case 1: d |= data[0]; -#endif - } -#ifdef WORDS_BIGENDIAN - t = (t << sr) | (d >> sl); -#else - t = (t >> sr) | (d << sl); -#endif - -#if MURMUR == 2 - if (len < (size_t)align) goto skip_tail; -#endif - h = murmur_step(h, t); - data += pack; - len -= pack; - } - else -#endif - { - do { - h = murmur_step(h, *(uint32_t *)data); - data += sizeof(uint32_t); - len -= sizeof(uint32_t); - } while (len >= sizeof(uint32_t)); - } - } - - t = 0; - switch (len) { -#ifdef WORDS_BIGENDIAN - case 3: - t |= data[2] << CHAR_BIT; - case 2: - t |= data[1] << CHAR_BIT*2; - case 1: - t |= data[0] << CHAR_BIT*3; -#else - case 3: - t |= data[2] << CHAR_BIT*2; - case 2: - t |= data[1] << CHAR_BIT; - case 1: - t |= data[0]; -#endif -#if MURMUR == 1 - h = murmur_step(h, t); -#elif MURMUR == 2 -# if !UNALIGNED_WORD_ACCESS - skip_tail: -# endif - h ^= t; - h *= MurmurMagic; -#endif - } - - return murmur_finish(h); -} - -st_index_t -rb_hash_uint32(st_index_t h, unsigned int i) -{ - return murmur_step(h + i, 16); -} - -st_index_t -rb_hash_uint(st_index_t h, st_index_t i) -{ - unsigned long v = 0; - h += i; -#ifdef WORDS_BIGENDIAN -#if SIZEOF_VALUE*CHAR_BIT > 12*8 - v = murmur16(v + (h >> 12*8)); -#endif -#if SIZEOF_VALUE*CHAR_BIT > 8*8 - v = murmur16(v + (h >> 8*8)); -#endif -#if SIZEOF_VALUE*CHAR_BIT > 4*8 - v = murmur16(v + (h >> 4*8)); -#endif -#endif - v = murmur16(v + h); -#ifndef WORDS_BIGENDIAN -#if SIZEOF_VALUE*CHAR_BIT > 4*8 - v = murmur16(v + (h >> 4*8)); -#endif -#if SIZEOF_VALUE*CHAR_BIT > 8*8 - v = murmur16(v + (h >> 8*8)); -#endif -#if SIZEOF_VALUE*CHAR_BIT > 12*8 - v = murmur16(v + (h >> 12*8)); -#endif -#endif - return v; -} - -st_index_t -rb_hash_end(st_index_t h) -{ - h = murmur_step(h, 10); - h = murmur_step(h, 17); - return h; -} - -st_index_t -rb_hash_start(st_index_t h) -{ - static int hashseed_init = 0; - static VALUE hashseed; - - if (!hashseed_init) { - hashseed = rb_genrand_int32(); -#if SIZEOF_VALUE*CHAR_BIT > 4*8 - hashseed <<= 4*8; - hashseed |= rb_genrand_int32(); -#endif -#if SIZEOF_VALUE*CHAR_BIT > 8*8 - hashseed <<= 8*8; - hashseed |= rb_genrand_int32(); -#endif -#if SIZEOF_VALUE*CHAR_BIT > 12*8 - hashseed <<= 12*8; - hashseed |= rb_genrand_int32(); -#endif - hashseed_init = 1; - } - - return hashseed + h; -} - st_index_t rb_memhash(const void *ptr, long len) { - return hash(ptr, len, rb_hash_start(0)); + return st_hash(ptr, len, rb_hash_start(0)); } st_index_t @@ -2272,23 +2042,23 @@ rb_str_comparable(VALUE str1, VALUE str2) int idx1, idx2; int rc1, rc2; - if (RSTRING_LEN(str1) == 0) return Qtrue; - if (RSTRING_LEN(str2) == 0) return Qtrue; + if (RSTRING_LEN(str1) == 0) return TRUE; + if (RSTRING_LEN(str2) == 0) return TRUE; idx1 = ENCODING_GET(str1); idx2 = ENCODING_GET(str2); - if (idx1 == idx2) return Qtrue; + if (idx1 == idx2) return TRUE; rc1 = rb_enc_str_coderange(str1); rc2 = rb_enc_str_coderange(str2); if (rc1 == ENC_CODERANGE_7BIT) { - if (rc2 == ENC_CODERANGE_7BIT) return Qtrue; + if (rc2 == ENC_CODERANGE_7BIT) return TRUE; if (rb_enc_asciicompat(rb_enc_from_index(idx2))) - return Qtrue; + return TRUE; } if (rc2 == ENC_CODERANGE_7BIT) { if (rb_enc_asciicompat(rb_enc_from_index(idx1))) - return Qtrue; + return TRUE; } - return Qfalse; + return FALSE; } int @@ -2353,7 +2123,7 @@ rb_str_equal(VALUE str1, VALUE str2) * call-seq: * str.eql?(other) => true or false * - * Two strings are equal if the have the same length and content. + * Two strings are equal if they have the same length and content. */ static VALUE @@ -2365,7 +2135,7 @@ rb_str_eql(VALUE str1, VALUE str2) /* * call-seq: - * str <=> other_str => -1, 0, +1 + * str <=> other_str => -1, 0, +1 or nil * * Comparison---Returns -1 if other_str is greater than, 0 if * other_str is equal to, and +1 if other_str is less than @@ -2416,7 +2186,7 @@ rb_str_cmp_m(VALUE str1, VALUE str2) /* * call-seq: - * str.casecmp(other_str) => -1, 0, +1 + * str.casecmp(other_str) => -1, 0, +1 or nil * * Case-insensitive version of String#<=>. * @@ -2797,9 +2567,10 @@ enum neighbor_char { }; static enum neighbor_char -enc_succ_char(char *p, int len, rb_encoding *enc) +enc_succ_char(char *p, long len, rb_encoding *enc) { - int i, l; + long i; + int l; while (1) { for (i = len-1; 0 <= i && (unsigned char)p[i] == 0xff; i--) p[i] = '\0'; @@ -2817,7 +2588,8 @@ enc_succ_char(char *p, int len, rb_encoding *enc) } } if (MBCLEN_INVALID_P(l) && i < len-1) { - int len2, l2; + long len2; + int l2; for (len2 = len-1; 0 < len2; len2--) { l2 = rb_enc_precise_mbclen(p, p+len2, enc); if (!MBCLEN_INVALID_P(l2)) @@ -2829,9 +2601,10 @@ enc_succ_char(char *p, int len, rb_encoding *enc) } static enum neighbor_char -enc_pred_char(char *p, int len, rb_encoding *enc) +enc_pred_char(char *p, long len, rb_encoding *enc) { - int i, l; + long i; + int l; while (1) { for (i = len-1; 0 <= i && (unsigned char)p[i] == 0; i--) p[i] = '\xff'; @@ -2849,7 +2622,8 @@ enc_pred_char(char *p, int len, rb_encoding *enc) } } if (MBCLEN_INVALID_P(l) && i < len-1) { - int len2, l2; + long len2; + int l2; for (len2 = len-1; 0 < len2; len2--) { l2 = rb_enc_precise_mbclen(p, p+len2, enc); if (!MBCLEN_INVALID_P(l2)) @@ -2870,7 +2644,7 @@ enc_pred_char(char *p, int len, rb_encoding *enc) character. */ static enum neighbor_char -enc_succ_alnum_char(char *p, int len, rb_encoding *enc, char *carry) +enc_succ_alnum_char(char *p, long len, rb_encoding *enc, char *carry) { enum neighbor_char ret; unsigned int c; @@ -2960,7 +2734,7 @@ rb_str_succ(VALUE orig) int c = -1; long l; char carry[ONIGENC_CODE_TO_MBC_MAXLEN] = "\1"; - int carry_pos = 0, carry_len = 1; + long carry_pos = 0, carry_len = 1; enum neighbor_char neighbor = NEIGHBOR_FOUND; str = rb_str_new5(orig, RSTRING_PTR(orig), RSTRING_LEN(orig)); @@ -3062,6 +2836,14 @@ rb_str_succ_bang(VALUE str) * * a8 a9 b0 b1 b2 b3 b4 b5 b6 * a8 a9 b0 b1 b2 b3 b4 b5 b6 + * + * If str and other_str contains only ascii numeric characters, + * both are recognized as decimal numbers. In addition, the width of + * string (e.g. leading zeros) is handled appropriately. + * + * "9".upto("11").to_a => ["9", "10", "11"] + * "25".upto("5").to_a => [] + * "07".upto("11").to_a => ["07", "08", "09", "10", "11"] */ static VALUE @@ -3098,8 +2880,10 @@ rb_str_upto(int argc, VALUE *argv, VALUE beg) if (ascii && ISDIGIT(RSTRING_PTR(beg)[0]) && ISDIGIT(RSTRING_PTR(end)[0])) { char *s, *send; VALUE b, e; + int width; s = RSTRING_PTR(beg); send = RSTRING_END(beg); + width = rb_long2int(send - s); while (s < send) { if (!ISDIGIT(*s)) goto no_digits; s++; @@ -3109,25 +2893,27 @@ rb_str_upto(int argc, VALUE *argv, VALUE beg) if (!ISDIGIT(*s)) goto no_digits; s++; } - b = rb_str_to_inum(beg, 10, Qfalse); - e = rb_str_to_inum(end, 10, Qfalse); + b = rb_str_to_inum(beg, 10, FALSE); + e = rb_str_to_inum(end, 10, FALSE); if (FIXNUM_P(b) && FIXNUM_P(e)) { long bi = FIX2LONG(b); long ei = FIX2LONG(e); - char buf[sizeof(long)*3+1]; + rb_encoding *usascii = rb_usascii_encoding(); while (bi <= ei) { if (excl && bi == ei) break; - sprintf(buf, "%ld", bi); - rb_yield(rb_usascii_str_new_cstr(buf)); + rb_yield(rb_enc_sprintf(usascii, "%.*ld", width, bi)); bi++; } } else { ID op = excl ? '<' : rb_intern("<="); + VALUE args[2], fmt = rb_obj_freeze(rb_usascii_str_new_cstr("%.*d")); + args[0] = INT2FIX(width); while (rb_funcall(b, op, 1, e)) { - rb_yield(rb_obj_as_string(b)); + args[1] = b; + rb_yield(rb_str_format(numberof(args), args, fmt)); b = rb_funcall(b, succ, 0, 0); } } @@ -3139,11 +2925,14 @@ rb_str_upto(int argc, VALUE *argv, VALUE beg) if (n > 0 || (excl && n == 0)) return beg; after_end = rb_funcall(end, succ, 0, 0); - current = beg; + current = rb_str_dup(beg); while (!rb_str_equal(current, after_end)) { + VALUE next = Qnil; + if (excl || !rb_str_equal(current, end)) + next = rb_funcall(current, succ, 0, 0); rb_yield(current); - if (!excl && rb_str_equal(current, end)) break; - current = rb_funcall(current, succ, 0, 0); + if (NIL_P(next)) break; + current = next; StringValue(current); if (excl && rb_str_equal(current, end)) break; if (RSTRING_LEN(current) > RSTRING_LEN(end) || RSTRING_LEN(current) == 0) @@ -3284,7 +3073,7 @@ rb_str_drop_bytes(VALUE str, long len) nlen = olen - len; if (nlen <= RSTRING_EMBED_LEN_MAX) { char *oldptr = ptr; - int fl = (RBASIC(str)->flags & (STR_NOEMBED|ELTS_SHARED)); + int fl = (int)(RBASIC(str)->flags & (STR_NOEMBED|ELTS_SHARED)); STR_SET_EMBED(str); STR_SET_EMBED_LEN(str, nlen); ptr = RSTRING(str)->as.ary; @@ -3648,9 +3437,11 @@ rb_str_sub_bang(int argc, VALUE *argv, VALUE str) struct re_registers *regs = RMATCH_REGS(match); long beg0 = BEG(0); long end0 = END(0); + char *p, *rp; + long len, rlen; if (iter || !NIL_P(hash)) { - char *p = RSTRING_PTR(str); long len = RSTRING_LEN(str); + p = RSTRING_PTR(str); len = RSTRING_LEN(str); if (iter) { repl = rb_obj_as_string(rb_yield(rb_reg_nth_match(0, match))); @@ -3668,9 +3459,9 @@ rb_str_sub_bang(int argc, VALUE *argv, VALUE str) enc = rb_enc_compatible(str, repl); if (!enc) { rb_encoding *str_enc = STR_ENC_GET(str); - if (coderange_scan(RSTRING_PTR(str), beg0, str_enc) != ENC_CODERANGE_7BIT || - coderange_scan(RSTRING_PTR(str)+end0, - RSTRING_LEN(str)-end0, str_enc) != ENC_CODERANGE_7BIT) { + p = RSTRING_PTR(str); len = RSTRING_LEN(str); + if (coderange_scan(p, beg0, str_enc) != ENC_CODERANGE_7BIT || + coderange_scan(p+end0, len-end0, str_enc) != ENC_CODERANGE_7BIT) { rb_raise(rb_eEncCompatError, "incompatible character encodings: %s and %s", rb_enc_name(str_enc), rb_enc_name(STR_ENC_GET(repl))); @@ -3690,18 +3481,19 @@ rb_str_sub_bang(int argc, VALUE *argv, VALUE str) cr = cr2; } plen = end0 - beg0; - if (RSTRING_LEN(repl) > plen) { - RESIZE_CAPA(str, RSTRING_LEN(str) + RSTRING_LEN(repl) - plen); + rp = RSTRING_PTR(repl); rlen = RSTRING_LEN(repl); + len = RSTRING_LEN(str); + if (rlen > plen) { + RESIZE_CAPA(str, len + rlen - plen); } - if (RSTRING_LEN(repl) != plen) { - memmove(RSTRING_PTR(str) + beg0 + RSTRING_LEN(repl), - RSTRING_PTR(str) + beg0 + plen, - RSTRING_LEN(str) - beg0 - plen); + p = RSTRING_PTR(str); + if (rlen != plen) { + memmove(p + beg0 + rlen, p + beg0 + plen, len - beg0 - plen); } - memcpy(RSTRING_PTR(str) + beg0, - RSTRING_PTR(repl), RSTRING_LEN(repl)); - STR_SET_LEN(str, RSTRING_LEN(str) + RSTRING_LEN(repl) - plen); - RSTRING_PTR(str)[RSTRING_LEN(str)] = '\0'; + memcpy(p + beg0, rp, rlen); + len += rlen - plen; + STR_SET_LEN(str, len); + RSTRING_PTR(str)[len] = '\0'; ENC_CODERANGE_SET(str, cr); if (tainted) OBJ_TAINT(str); if (untrusted) OBJ_UNTRUST(str); @@ -4110,7 +3902,7 @@ rb_str_reverse_bang(VALUE str) while (s < e) { c = *s; *s++ = *e; - *e-- = c; + *e-- = c; } } else { @@ -4185,7 +3977,7 @@ rb_str_to_i(int argc, VALUE *argv, VALUE str) if (base < 0) { rb_raise(rb_eArgError, "invalid radix %d", base); } - return rb_str_to_inum(str, base, Qfalse); + return rb_str_to_inum(str, base, FALSE); } @@ -4206,7 +3998,7 @@ rb_str_to_i(int argc, VALUE *argv, VALUE str) static VALUE rb_str_to_f(VALUE str) { - return DBL2NUM(rb_str_to_dbl(str, Qfalse)); + return DBL2NUM(rb_str_to_dbl(str, FALSE)); } @@ -4227,6 +4019,7 @@ rb_str_to_s(VALUE str) return str; } +#if 0 static void str_cat_char(VALUE str, unsigned int c, rb_encoding *enc) { @@ -4236,13 +4029,7 @@ str_cat_char(VALUE str, unsigned int c, rb_encoding *enc) rb_enc_mbcput(c, s, enc); rb_enc_str_buf_cat(str, s, n, enc); } - -static void -prefix_escape(VALUE str, unsigned int c, rb_encoding *enc) -{ - str_cat_char(str, '\\', enc); - str_cat_char(str, c, enc); -} +#endif /* * call-seq: @@ -4260,26 +4047,34 @@ VALUE rb_str_inspect(VALUE str) { rb_encoding *enc = STR_ENC_GET(str); - char *p, *pend; + const char *p, *pend, *prev; +#define CHAR_ESC_LEN 12 /* sizeof(\x{ hex of 32bit unsigned int }) */ + char buf[CHAR_ESC_LEN + 1]; VALUE result = rb_str_buf_new(0); + rb_encoding *resenc = rb_default_internal_encoding(); + int unicode_p = rb_enc_unicode_p(enc); + + if (resenc == NULL) resenc = rb_default_external_encoding(); + if (!rb_enc_asciicompat(resenc)) resenc = rb_usascii_encoding(); + rb_enc_associate(result, resenc); + str_buf_cat2(result, "\""); - if (!rb_enc_asciicompat(enc)) enc = rb_usascii_encoding(); - rb_enc_associate(result, enc); - str_cat_char(result, '"', enc); p = RSTRING_PTR(str); pend = RSTRING_END(str); + prev = p; while (p < pend) { unsigned int c, cc; int n; n = rb_enc_precise_mbclen(p, pend, enc); if (!MBCLEN_CHARFOUND_P(n)) { - p++; - n = 1; - goto escape_codepoint; - } + if (p > prev) str_buf_cat(result, prev, p - prev); + snprintf(buf, CHAR_ESC_LEN, "\\x%02X", *p & 0377); + str_buf_cat(result, buf, strlen(buf)); + prev = ++p; + continue; + } n = MBCLEN_CHARFOUND_LEN(n); - - c = rb_enc_codepoint_len(p, pend, &n, enc); + c = rb_enc_mbc_to_codepoint(p, pend, enc); p += n; if (c == '"'|| c == '\\' || (c == '#' && @@ -4287,51 +4082,60 @@ rb_str_inspect(VALUE str) MBCLEN_CHARFOUND_P(rb_enc_precise_mbclen(p,pend,enc)) && (cc = rb_enc_codepoint(p,pend,enc), (cc == '$' || cc == '@' || cc == '{')))) { - prefix_escape(result, c, enc); - } - else if (c == '\n') { - prefix_escape(result, 'n', enc); - } - else if (c == '\r') { - prefix_escape(result, 'r', enc); - } - else if (c == '\t') { - prefix_escape(result, 't', enc); - } - else if (c == '\f') { - prefix_escape(result, 'f', enc); - } - else if (c == '\013') { - prefix_escape(result, 'v', enc); - } - else if (c == '\010') { - prefix_escape(result, 'b', enc); - } - else if (c == '\007') { - prefix_escape(result, 'a', enc); + if (p - n > prev) str_buf_cat(result, prev, p - n - prev); + str_buf_cat2(result, "\\"); + prev = p - n; + continue; } - else if (c == 033) { - prefix_escape(result, 'e', enc); + switch (c) { + case '\n': cc = 'n'; break; + case '\r': cc = 'r'; break; + case '\t': cc = 't'; break; + case '\f': cc = 'f'; break; + case '\013': cc = 'v'; break; + case '\010': cc = 'b'; break; + case '\007': cc = 'a'; break; + case 033: cc = 'e'; break; + default: cc = 0; break; + } + if (cc) { + if (p - n > prev) str_buf_cat(result, prev, p - n - prev); + buf[0] = '\\'; + buf[1] = (char)cc; + str_buf_cat(result, buf, 2); + prev = p; + continue; } - else if (rb_enc_isprint(c, enc)) { - rb_enc_str_buf_cat(result, p-n, n, enc); + if ((enc == resenc && rb_enc_isprint(c, enc)) || + (rb_enc_isascii(c, enc) && ISPRINT(c))) { + continue; } else { - char buf[5]; - char *s; - char *q; - - escape_codepoint: - for (q = p-n; q < p; q++) { - s = buf; - sprintf(buf, "\\x%02X", *q & 0377); - while (*s) { - str_cat_char(result, *s++, enc); - } - } + if (p - n > prev) str_buf_cat(result, prev, p - n - prev); + if (unicode_p) { + if (c < 0x10000) { + snprintf(buf, CHAR_ESC_LEN, "\\u%04X", c); + } + else { + snprintf(buf, CHAR_ESC_LEN, "\\u{%X}", c); + } + str_buf_cat(result, buf, strlen(buf)); + } + else { + if (c < 0x100) { + snprintf(buf, CHAR_ESC_LEN, "\\x%02X", c); + } + else { + snprintf(buf, CHAR_ESC_LEN, "\\x{%X}", c); + } + str_buf_cat(result, buf, strlen(buf)); + } + prev = p; + continue; } } - str_cat_char(result, '"', enc); + if (p > prev) str_buf_cat(result, prev, p - prev); + str_buf_cat2(result, "\""); OBJ_INFECT(result, str); return result; @@ -4814,7 +4618,17 @@ trnext(struct tr *t, rb_encoding *enc) if (t->p < t->pend) { unsigned int c = rb_enc_codepoint_len(t->p, t->pend, &n, enc); t->p += n; - if (t->now > c) continue; + if (t->now > c) { + if (t->now < 0x80 && c < 0x80) { + rb_raise(rb_eArgError, + "invalid range \"%c-%c\" in string transliteration", + t->now, c); + } + else { + rb_raise(rb_eArgError, "invalid range in string transliteration"); + } + continue; /* not reached */ + } t->gen = 1; t->max = c; } @@ -4928,7 +4742,8 @@ tr_trans(VALUE str, VALUE src, VALUE repl, int sflag) str_modify_keep_cr(str); s = RSTRING_PTR(str); send = RSTRING_END(str); if (sflag) { - int offset, clen, tlen, max = RSTRING_LEN(str); + int clen, tlen; + long offset, max = RSTRING_LEN(str); unsigned int save = -1; char *buf = ALLOC_N(char, max), *t = buf; @@ -5007,7 +4822,7 @@ tr_trans(VALUE str, VALUE src, VALUE repl, int sflag) } else { int clen, tlen, max = (int)(RSTRING_LEN(str) * 1.2); - int offset; + long offset; char *buf = ALLOC_N(char, max), *t = buf; while (s < send) { @@ -5175,17 +4990,17 @@ static int tr_find(unsigned int c, char table[256], VALUE del, VALUE nodel) { if (c < 256) { - return table[c] ? Qtrue : Qfalse; + return table[c] != 0; } else { VALUE v = UINT2NUM(c); if (del && !NIL_P(rb_hash_lookup(del, v))) { if (!nodel || NIL_P(rb_hash_lookup(nodel, v))) { - return Qtrue; + return TRUE; } } - return Qfalse; + return FALSE; } } @@ -5670,7 +5485,7 @@ rb_str_split_m(int argc, VALUE *argv, VALUE str) c = rb_enc_codepoint_len(ptr, eptr, &n, enc); ptr += n; if (skip) { - if (rb_enc_isspace(c, enc)) { + if (rb_isspace(c)) { beg = ptr - bptr; } else { @@ -5679,7 +5494,7 @@ rb_str_split_m(int argc, VALUE *argv, VALUE str) if (!NIL_P(limit) && lim <= i) break; } } - else if (rb_enc_isspace(c, enc)) { + else if (rb_isspace(c)) { rb_ary_push(result, rb_str_subseq(str, beg, end-beg)); skip = 1; beg = ptr - bptr; @@ -5693,9 +5508,10 @@ rb_str_split_m(int argc, VALUE *argv, VALUE str) } else if (split_type == string) { char *ptr = RSTRING_PTR(str); + char *temp = ptr; char *eptr = RSTRING_END(str); char *sptr = RSTRING_PTR(spat); - int slen = RSTRING_LEN(spat); + long slen = RSTRING_LEN(spat); if (is_broken_string(str)) { rb_raise(rb_eArgError, "invalid byte sequence in %s", rb_enc_name(STR_ENC_GET(str))); @@ -5712,13 +5528,15 @@ rb_str_split_m(int argc, VALUE *argv, VALUE str) ptr = t; continue; } - rb_ary_push(result, rb_str_subseq(str, ptr - RSTRING_PTR(str), end)); + rb_ary_push(result, rb_str_subseq(str, ptr - temp, end)); ptr += end + slen; if (!NIL_P(limit) && lim <= ++i) break; } - beg = ptr - RSTRING_PTR(str); + beg = ptr - temp; } else { + char *ptr = RSTRING_PTR(str); + long len = RSTRING_LEN(str); long start = beg; long idx; int last_null = 0; @@ -5727,22 +5545,22 @@ rb_str_split_m(int argc, VALUE *argv, VALUE str) while ((end = rb_reg_search(spat, str, start, 0)) >= 0) { regs = RMATCH_REGS(rb_backref_get()); if (start == end && BEG(0) == END(0)) { - if (!RSTRING_PTR(str)) { + if (!ptr) { rb_ary_push(result, rb_str_new("", 0)); break; } else if (last_null == 1) { rb_ary_push(result, rb_str_subseq(str, beg, - rb_enc_fast_mbclen(RSTRING_PTR(str)+beg, - RSTRING_END(str), + rb_enc_fast_mbclen(ptr+beg, + ptr+len, enc))); beg = start; } else { - if (RSTRING_PTR(str)+start == RSTRING_END(str)) + if (ptr+start == ptr+len) start++; else - start += rb_enc_fast_mbclen(RSTRING_PTR(str)+start,RSTRING_END(str),enc); + start += rb_enc_fast_mbclen(ptr+start,ptr+len,enc); last_null = 1; continue; } @@ -5816,11 +5634,11 @@ rb_str_split(VALUE str, const char *sep0) * into paragraphs delimited by multiple successive newlines. * * print "Example one\n" - * "hello\nworld".each {|s| p s} + * "hello\nworld".each_line {|s| p s} * print "Example two\n" - * "hello\nworld".each('l') {|s| p s} + * "hello\nworld".each_line('l') {|s| p s} * print "Example three\n" - * "hello\n\n\nworld".each('') {|s| p s} + * "hello\n\n\nworld".each_line('') {|s| p s} * * produces: * @@ -6096,9 +5914,9 @@ chopped_length(VALUE str) if (beg > end) return 0; p = rb_enc_prev_char(beg, end, end, enc); if (!p) return 0; - if (p > beg && rb_enc_codepoint(p, end, enc) == '\n') { + if (p > beg && rb_enc_ascget(p, end, 0, enc) == '\n') { p2 = rb_enc_prev_char(beg, p, end, enc); - if (p2 && rb_enc_codepoint(p2, end, enc) == '\r') p = p2; + if (p2 && rb_enc_ascget(p2, end, 0, enc) == '\r') p = p2; } return p - beg; } @@ -6321,7 +6139,7 @@ rb_str_lstrip_bang(VALUE str) int n; unsigned int cc = rb_enc_codepoint_len(s, e, &n, enc); - if (!rb_enc_isspace(cc, enc)) break; + if (!rb_isspace(cc)) break; s += n; } @@ -6383,19 +6201,19 @@ rb_str_rstrip_bang(VALUE str) /* remove trailing spaces or '\0's */ if (single_byte_optimizable(str)) { unsigned char c; - while (s < t && ((c = *(t-1)) == '\0' || rb_enc_isspace(c, enc))) t--; + while (s < t && ((c = *(t-1)) == '\0' || ascii_isspace(c))) t--; } else { char *tp; while ((tp = rb_enc_prev_char(s, t, e, enc)) != NULL) { unsigned int c = rb_enc_codepoint(tp, e, enc); - if (c && !rb_enc_isspace(c, enc)) break; + if (c && !rb_isspace(c)) break; t = tp; } } if (t < e) { - int len = t-RSTRING_PTR(str); + long len = t-RSTRING_PTR(str); STR_SET_LEN(str, len); RSTRING_PTR(str)[len] = '\0'; @@ -6467,7 +6285,7 @@ scan_once(VALUE str, VALUE pat, long *start) { VALUE result, match; struct re_registers *regs; - long i; + int i; if (rb_reg_search(pat, str, *start, 0) >= 0) { match = rb_backref_get(); @@ -6585,7 +6403,7 @@ rb_str_hex(VALUE str) if (!rb_enc_asciicompat(enc)) { rb_raise(rb_eEncCompatError, "ASCII incompatible encoding: %s", rb_enc_name(enc)); } - return rb_str_to_inum(str, 16, Qfalse); + return rb_str_to_inum(str, 16, FALSE); } @@ -6611,7 +6429,7 @@ rb_str_oct(VALUE str) if (!rb_enc_asciicompat(enc)) { rb_raise(rb_eEncCompatError, "ASCII incompatible encoding: %s", rb_enc_name(enc)); } - return rb_str_to_inum(str, -8, Qfalse); + return rb_str_to_inum(str, -8, FALSE); } @@ -6681,25 +6499,10 @@ VALUE rb_str_intern(VALUE s) { VALUE str = RB_GC_GUARD(s); - VALUE sym; - ID id, id2; + ID id; id = rb_intern_str(str); - sym = ID2SYM(id); - id2 = SYM2ID(sym); - if (id != id2) { - const char *name = rb_id2name(id2); - - if (name) { - rb_raise(rb_eRuntimeError, "symbol table overflow (%s given for %s)", - name, RSTRING_PTR(str)); - } - else { - rb_raise(rb_eRuntimeError, "symbol table overflow (symbol %s)", - RSTRING_PTR(str)); - } - } - return sym; + return ID2SYM(id); } @@ -6945,11 +6748,11 @@ static VALUE rb_str_partition(VALUE str, VALUE sep) { long pos; - int regex = Qfalse; + int regex = FALSE; if (TYPE(sep) == T_REGEXP) { pos = rb_reg_search(sep, str, 0, 0); - regex = Qtrue; + regex = TRUE; } else { VALUE tmp; @@ -6995,11 +6798,11 @@ static VALUE rb_str_rpartition(VALUE str, VALUE sep) { long pos = RSTRING_LEN(str); - int regex = Qfalse; + int regex = FALSE; if (TYPE(sep) == T_REGEXP) { pos = rb_reg_search(sep, str, pos, 1); - regex = Qtrue; + regex = TRUE; } else { VALUE tmp; @@ -7206,10 +7009,10 @@ sym_printable(const char *s, const char *send, rb_encoding *enc) int n; int c = rb_enc_codepoint_len(s, send, &n, enc); - if (!rb_enc_isprint(c, enc)) return Qfalse; + if (!rb_enc_isprint(c, enc)) return FALSE; s += n; } - return Qtrue; + return TRUE; } /* @@ -7330,12 +7133,28 @@ sym_to_proc(VALUE sym) } } +/* + * call-seq: + * + * sym.succ + * + * Same as sym.to_s.succ.intern. + */ + static VALUE sym_succ(VALUE sym) { return rb_str_intern(rb_str_succ(rb_sym_to_s(sym))); } +/* + * call-seq: + * + * str <=> other => -1, 0, +1 or nil + * + * Compares _sym_ with _other_ in string form. + */ + static VALUE sym_cmp(VALUE sym, VALUE other) { @@ -7345,6 +7164,14 @@ sym_cmp(VALUE sym, VALUE other) return rb_str_cmp_m(rb_sym_to_s(sym), rb_sym_to_s(other)); } +/* + * call-seq: + * + * sym.casecmp(other) => -1, 0, +1 or nil + * + * Case-insensitive version of Symbol#<=>. + */ + static VALUE sym_casecmp(VALUE sym, VALUE other) { @@ -7354,54 +7181,118 @@ sym_casecmp(VALUE sym, VALUE other) return rb_str_casecmp(rb_sym_to_s(sym), rb_sym_to_s(other)); } +/* + * call-seq: + * sym =~ obj => fixnum or nil + * + * Returns sym.to_s =~ obj. + */ + static VALUE sym_match(VALUE sym, VALUE other) { return rb_str_match(rb_sym_to_s(sym), other); } +/* + * call-seq: + * sym[idx] => char + * sym[b, n] => char + * + * Returns sym.to_s[]. + */ + static VALUE sym_aref(int argc, VALUE *argv, VALUE sym) { return rb_str_aref_m(argc, argv, rb_sym_to_s(sym)); } +/* + * call-seq: + * sym.length => integer + * + * Same as sym.to_s.length. + */ + static VALUE sym_length(VALUE sym) { return rb_str_length(rb_id2str(SYM2ID(sym))); } +/* + * call-seq: + * sym.empty? => true or false + * + * Returns that _sym_ is :"" or not. + */ + static VALUE sym_empty(VALUE sym) { return rb_str_empty(rb_id2str(SYM2ID(sym))); } +/* + * call-seq: + * sym.upcase => symbol + * + * Same as sym.to_s.upcase.intern. + */ + static VALUE sym_upcase(VALUE sym) { return rb_str_intern(rb_str_upcase(rb_id2str(SYM2ID(sym)))); } +/* + * call-seq: + * sym.downcase => symbol + * + * Same as sym.to_s.downcase.intern. + */ + static VALUE sym_downcase(VALUE sym) { return rb_str_intern(rb_str_downcase(rb_id2str(SYM2ID(sym)))); } +/* + * call-seq: + * sym.capitalize => symbol + * + * Same as sym.to_s.capitalize.intern. + */ + static VALUE sym_capitalize(VALUE sym) { return rb_str_intern(rb_str_capitalize(rb_id2str(SYM2ID(sym)))); } +/* + * call-seq: + * sym.swapcase => symbol + * + * Same as sym.to_s.swapcase.intern. + */ + static VALUE sym_swapcase(VALUE sym) { return rb_str_intern(rb_str_swapcase(rb_id2str(SYM2ID(sym)))); } +/* + * call-seq: + * sym.encoding => encoding + * + * Returns the Encoding object that represents the encoding of _sym_. + */ + static VALUE sym_encoding(VALUE sym) { diff --git a/struct.c b/struct.c index 463fa392b5c0b3..fe3885f7a6da79 100644 --- a/struct.c +++ b/struct.c @@ -98,14 +98,17 @@ rb_struct_members_m(VALUE obj) VALUE rb_struct_getmember(VALUE obj, ID id) { - VALUE members, slot; - long i; + VALUE members, slot, *ptr, *ptr_members; + long i, len; + ptr = RSTRUCT_PTR(obj); members = rb_struct_members(obj); + ptr_members = RARRAY_PTR(members); slot = ID2SYM(id); - for (i=0; i"); OBJ_INFECT(str, s); @@ -588,14 +600,16 @@ rb_struct_init_copy(VALUE copy, VALUE s) static VALUE rb_struct_aref_id(VALUE s, ID id) { - VALUE members; + VALUE *ptr, members, *ptr_members; long i, len; + ptr = RSTRUCT_PTR(s); members = rb_struct_members(s); + ptr_members = RARRAY_PTR(members); len = RARRAY_LEN(members); for (i=0; i 0) { rb_raise(rb_eArgError, "wrong number of arguments (%d for 0)", argc); } + RETURN_ENUMERATOR(s, 0, 0); result = rb_ary_new(); for (i = 0; i < RSTRUCT_LEN(s); i++) { if (RTEST(rb_yield(RSTRUCT_PTR(s)[i]))) { @@ -768,6 +785,22 @@ rb_struct_select(int argc, VALUE *argv, VALUE s) return result; } +static VALUE +recursive_equal(VALUE s, VALUE s2, int recur) +{ + VALUE *ptr, *ptr2; + long i, len; + + if (recur) return Qtrue; /* Subtle! */ + ptr = RSTRUCT_PTR(s); + ptr2 = RSTRUCT_PTR(s2); + len = RSTRUCT_LEN(s); + for (i=0; i true or false @@ -788,8 +821,6 @@ rb_struct_select(int argc, VALUE *argv, VALUE s) static VALUE rb_struct_equal(VALUE s, VALUE s2) { - long i; - if (s == s2) return Qtrue; if (TYPE(s2) != T_STRUCT) return Qfalse; if (rb_obj_class(s) != rb_obj_class(s2)) return Qfalse; @@ -797,26 +828,24 @@ rb_struct_equal(VALUE s, VALUE s2) rb_bug("inconsistent struct"); /* should never happen */ } - for (i=0; i> ~ver~.mak ^ @echo^>^> ~tmp~.c #include "version.h" echo>> ~ver~.mak ^ @echo^>^> ~tmp~.c MAJOR = RUBY_VERSION_MAJOR echo>> ~ver~.mak ^ @echo^>^> ~tmp~.c MINOR = RUBY_VERSION_MINOR echo>> ~ver~.mak ^ @echo^>^> ~tmp~.c TEENY = RUBY_VERSION_TEENY -echo>> ~ver~.mak ^ @$(CPP) -I$(srcdir) ~tmp~.c ^| find "=" ^>^>~tmp~.mak +echo>> ~ver~.mak ^ @$(CPP) -I$(srcdir) -I$(srcdir)\include ~tmp~.c ^| find "=" ^>^>~tmp~.mak echo>> ~ver~.mak ^ @del /Q ~tmp~.c make -f ~ver~.mak diff --git a/symbian/missing-pips.c b/symbian/missing-pips.c index ed0d90de8b6f25..c5649fb45a81c8 100644 --- a/symbian/missing-pips.c +++ b/symbian/missing-pips.c @@ -8,41 +8,12 @@ char **environ = 0; typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); -int sigfillset(sigset_t *set); -int sigdelset(sigset_t *set, int signum); -int sigprocmask(int how, const sigset_t *set, sigset_t *oldset); -int raise(int sig); int kill(pid_t pid, int sig); int pthread_sigmask(int how, const sigset_t *set, sigset_t *oset); int execl(const char *path, const char *arg0, ... /*, (char *)0 */); int execv(const char *path, char *const argv[]); int pthread_kill(pthread_t thread, int sig); -sighandler_t signal(int signum, sighandler_t handler) -{ - return (sighandler_t)0; -} - -int sigfillset(sigset_t *set) -{ - return 0; -} - -int sigdelset(sigset_t *set, int signum) -{ - return 0; -} - -int sigprocmask(int how, const sigset_t *set, sigset_t *oldset) -{ - return 0; -} - -int raise(int sig) -{ - return 0; -} - int kill(pid_t pid, int sig) { return 0; @@ -69,18 +40,6 @@ int pthread_kill(pthread_t thread, int sig) } -int sigmask(int signum) { - return -1; -} - -int sigblock(int mask) { - return -1; -} - -int sigsetmask(int mask) { - return -1; -} - sighandler_t posix_signal(int signum, sighandler_t handler) { return signal((signum),(handler)); diff --git a/symbian/pre-build b/symbian/pre-build index 16a2248a5af117..e118f793e0e13e 100644 --- a/symbian/pre-build +++ b/symbian/pre-build @@ -36,6 +36,9 @@ vmtc.inc: $(srcdir)/template/vmtc.inc.tmpl vm.inc: $(srcdir)/template/vm.inc.tmpl +$(srcdir)/id.h: parse.h $(srcdir)/tool/generic_erb.rb $(srcdir)/template/id.h.tmpl + $(BASERUBY) $(srcdir)/tool/generic_erb.rb --output=$@ $(srcdir)/template/id.h.tmpl parse.h + node_name.inc: $(srcdir)/node.h $(BASERUBY) -n $(srcdir)/tool/node_name.rb $? > $@ @@ -61,6 +64,8 @@ $(srcdir)/revision.h: $(srcdir)/version.h $(srcdir)/ChangeLog incs: $(srcdir)/revision.h $(INSNS) node_name.inc known_errors.inc +ids: $(srcdir)/id.h + srcs: parse.c newline.c lex.c miniprelude.c lex.c: $(srcdir)\lex.c.blt @@ -68,11 +73,11 @@ lex.c: $(srcdir)\lex.c.blt socket_const: $(srcdir)/ext/socket/constants.h -MAKMAKE: incs srcs socket_const +MAKMAKE: incs srcs ids socket_const CLEAN : del $(INSNS) node_name.inc known_errors.inc - $(RM) parse.c parse.h newline.c lex.c miniprelude.c + $(RM) parse.c parse.h newline.c lex.c miniprelude.c $(srcdir)\revision.h $(srcdir)\id.h BLD LIB CLEANLIB RESOURCE FREEZE SAVESPACE RELEASABLES FINAL : diff --git a/symbian/setup b/symbian/setup index 52738ef76a41ab..06533cd66e7ff7 100644 --- a/symbian/setup +++ b/symbian/setup @@ -211,6 +211,8 @@ define ruby_mmp @echo>>$(1) SECUREID $(RUBY_UID) @echo>>$(1) CAPABILITY LocalServices NetworkServices ReadUserData UserEnvironment WriteUserData +@echo>>$(1) MACRO RUBY_EXPORT + @echo>>$(1) USERINCLUDE ..\$(subst /,\,$(arch_hdrdir)) @echo>>$(1) USERINCLUDE .. @@ -232,7 +234,6 @@ define ruby_mmp @echo>>$(1) SOURCEPATH ..\$(subst /,\,$(srcdir)) @echo>>$(1) SOURCE array.c @echo>>$(1) SOURCE bignum.c -@echo>>$(1) SOURCE blockinlining.c @echo>>$(1) SOURCE class.c @echo>>$(1) SOURCE compar.c @echo>>$(1) SOURCE compile.c @@ -344,6 +345,7 @@ define ext_mmp @echo>>$(1)$(2).mmp SYSTEMINCLUDE ..\$(subst /,\,$(srcdir))\missing @echo>>$(1)$(2).mmp SYSTEMINCLUDE \epoc32\include\stdapis +@echo>>$(1)$(2).mmp SYSTEMINCLUDE \epoc32\include @echo>>$(1)$(2).mmp SOURCEPATH ..\$(subst /,\,$(srcdir))\ext\$(2) @echo>>$(1)$(2).mmp SOURCE $(2).c $(4) @@ -369,7 +371,7 @@ define ruby_pkg @echo>>$(1) :"Symbian Research" -@echo>>$(1) (0x20013851), 1, 3, 0, {"Symbian OS PIPS"} +@echo>>$(1) (0x20013851), 1, 6, 0, {"Symbian OS PIPS"} @echo>>$(1) [0x101F7961], 0, 0, 0, {"S60ProductID"} diff --git a/template/Doxyfile.tmpl b/template/Doxyfile.tmpl index 0fd9462c69a039..34a42983ce998a 100644 --- a/template/Doxyfile.tmpl +++ b/template/Doxyfile.tmpl @@ -12,7 +12,7 @@ unless miniruby miniruby = './miniruby$(EXEEXT) -I$(srcdir)/lib -I$(EXTOUT)/common -I./- -r$(srcdir)/ext/purelib.rb' RbConfig.expand(miniruby, RbConfig::CONFIG.merge("srcdir"=>srcdir)) end -dot = RbConfig::CONFIG['DOT'] +dot = RbConfig::CONFIG['DOT'] || "" have_dot = dot.empty? ? "NO" : "YES" %> #--------------------------------------------------------------------------- diff --git a/template/insns_info.inc.tmpl b/template/insns_info.inc.tmpl index 1093e10d0a67a9..110e6b5181ff3a 100644 --- a/template/insns_info.inc.tmpl +++ b/template/insns_info.inc.tmpl @@ -49,29 +49,29 @@ insn_stack_increase(int depth, int insn, VALUE *opes) /* some utilities */ static int -insn_len(int insn) +insn_len(VALUE insn) { - return insn_len_info[insn]; + return insn_len_info[(int)insn]; } static const char * -insn_name(int insn) +insn_name(VALUE insn) { - return insn_name_info[insn]; + return insn_name_info[(int)insn]; } static const char * -insn_op_types(int insn) +insn_op_types(VALUE insn) { - return insn_operand_info[insn]; + return insn_operand_info[(int)insn]; } static int -insn_op_type(int insn, int pos) +insn_op_type(VALUE insn, long pos) { int len = insn_len(insn) - 1; if(pos < len){ - return insn_operand_info[insn][pos]; + return insn_operand_info[(int)insn][pos]; } else{ return 0; @@ -80,9 +80,9 @@ insn_op_type(int insn, int pos) #ifdef USE_INSN_RET_NUM static int -insn_ret_num(int insn) +insn_ret_num(VALUE insn) { - return insn_stack_push_num_info[insn]; + return insn_stack_push_num_info[(int)insn]; } #endif diff --git a/template/known_errors.inc.tmpl b/template/known_errors.inc.tmpl index c62114464f95a8..deb54e44d753f4 100644 --- a/template/known_errors.inc.tmpl +++ b/template/known_errors.inc.tmpl @@ -7,8 +7,8 @@ % error_names = ARGF.read.split(/\s+/) % error_names.each do |name| #ifdef <%=name%> - set_syserr(<%=name%>, "<%=name%>"); + defined_error("<%=name%>", <%=name%>) #else - set_syserr(0, "<%=name%>"); + undefined_error("<%=name%>") #endif % end diff --git a/test/bigdecimal/test_bigdecimal.rb b/test/bigdecimal/test_bigdecimal.rb index 7eecc1ade15de1..4d2a28514eefe9 100644 --- a/test/bigdecimal/test_bigdecimal.rb +++ b/test/bigdecimal/test_bigdecimal.rb @@ -61,7 +61,6 @@ def test_exception_underflow x = BigDecimal.new("0.1") 100.times do x *= x - break if x == false end end end @@ -71,7 +70,6 @@ def test_exception_overflow x = BigDecimal.new("10") 100.times do x *= x - break if x == false end end end @@ -219,7 +217,20 @@ def test_cmp assert_operator(1, :<, inf) end - def test_cmp_corece + def test_cmp_nan + n1 = BigDecimal.new("1") + BigDecimal.mode(BigDecimal::EXCEPTION_NaN, false) + assert_equal(nil, BigDecimal.new("NaN") <=> n1) + assert_equal(false, BigDecimal.new("NaN") > n1) + end + + def test_cmp_failing_coercion + n1 = BigDecimal.new("1") + assert_equal(nil, n1 <=> nil) + assert_raise(ArgumentError){n1 > nil} + end + + def test_cmp_coerce n1 = BigDecimal.new("1") n2 = BigDecimal.new("2") o1 = Object.new; def o1.coerce(x); [x, BigDecimal.new("1")]; end @@ -691,4 +702,8 @@ def test_ctov assert_equal(BigDecimal::SIGN_POSITIVE_ZERO, BigDecimal.new("1E-1" + "0" * 10000).sign) assert_equal(BigDecimal::SIGN_NEGATIVE_ZERO, BigDecimal.new("-1E-1" + "0" * 10000).sign) end + + def test_coerce + assert_equal(2, 1 + BigDecimal.new("1"), '[ruby-core:25697]') + end end diff --git a/test/bigdecimal/test_bigmath.rb b/test/bigdecimal/test_bigmath.rb new file mode 100644 index 00000000000000..2870664bcf1dfa --- /dev/null +++ b/test/bigdecimal/test_bigmath.rb @@ -0,0 +1,78 @@ +require "test/unit" +require "bigdecimal" +require "bigdecimal/math" + +class TestBigMath < Test::Unit::TestCase + include BigMath + N = 20 + PINF = BigDecimal("+Infinity") + MINF = BigDecimal("-Infinity") + NAN = BigDecimal("NaN") + + def test_const + assert_in_delta(Math::PI, PI(N)) + assert_in_delta(Math::E, E(N)) + end + + def test_sqrt + assert_in_delta(2**0.5, sqrt(BigDecimal("2"), N)) + assert_equal(10, sqrt(BigDecimal("100"), N)) + assert_equal(0.0, sqrt(BigDecimal("0"), N)) + assert_equal(0.0, sqrt(BigDecimal("-0"), N)) + assert_raise(FloatDomainError) {sqrt(BigDecimal("-1.0"), N)} + assert_raise(FloatDomainError) {sqrt(NAN, N)} + assert_raise(FloatDomainError) {sqrt(PINF, N)} + end + + def test_sin + assert_in_delta(0.0, sin(BigDecimal("0.0"), N)) + assert_in_delta(Math.sqrt(2.0) / 2, sin(PI(N) / 4, N)) + assert_in_delta(1.0, sin(PI(N) / 2, N)) + assert_in_delta(0.0, sin(PI(N) * 2, N)) + assert_in_delta(0.0, sin(PI(N), N)) + assert_in_delta(-1.0, sin(PI(N) / -2, N)) + assert_in_delta(0.0, sin(PI(N) * -2, N)) + assert_in_delta(0.0, sin(-PI(N), N)) + assert_in_delta(0.0, sin(PI(N) * 21, N)) + assert_in_delta(0.0, sin(PI(N) * 30, N)) + assert_in_delta(-1.0, sin(PI(N) * BigDecimal("301.5"), N)) + end + + def test_cos + assert_in_delta(1.0, cos(BigDecimal("0.0"), N)) + assert_in_delta(Math.sqrt(2.0) / 2, cos(PI(N) / 4, N)) + assert_in_delta(0.0, cos(PI(N) / 2, N)) + assert_in_delta(1.0, cos(PI(N) * 2, N)) + assert_in_delta(-1.0, cos(PI(N), N)) + assert_in_delta(0.0, cos(PI(N) / -2, N)) + assert_in_delta(1.0, cos(PI(N) * -2, N)) + assert_in_delta(-1.0, cos(-PI(N), N)) + assert_in_delta(-1.0, cos(PI(N) * 21, N)) + assert_in_delta(1.0, cos(PI(N) * 30, N)) + assert_in_delta(0.0, cos(PI(N) * BigDecimal("301.5"), N)) + end + + def test_atan + assert_equal(0.0, atan(BigDecimal("0.0"), N)) + assert_in_delta(Math::PI/4, atan(BigDecimal("1.0"), N)) + assert_in_delta(Math::PI/6, atan(sqrt(BigDecimal("3.0"), N) / 3, N)) + assert_in_delta(Math::PI/2, atan(PINF, N)) + end + + def test_exp + assert_in_epsilon(Math::E, exp(BigDecimal("1"), N)) + assert_in_epsilon(Math.exp(N), exp(BigDecimal("20"), N)) + assert_in_epsilon(Math.exp(40), exp(BigDecimal("40"), N)) + assert_in_epsilon(Math.exp(-N), exp(BigDecimal("-20"), N)) + assert_in_epsilon(Math.exp(-40), exp(BigDecimal("-40"), N)) + end + + def test_log + assert_in_delta(0.0, log(BigDecimal("1"), N)) + assert_in_delta(1.0, log(E(N), N)) + assert_in_delta(Math.log(2.0), log(BigDecimal("2"), N)) + assert_in_delta(2.0, log(E(N)*E(N), N)) + assert_in_delta(Math.log(42.0), log(BigDecimal("42"), N)) + assert_in_delta(Math.log(1e-42), log(BigDecimal("1e-42"), N)) + end +end diff --git a/test/cgi/test_cgi_multipart.rb b/test/cgi/test_cgi_multipart.rb index 86bbc0d28c3802..012f515647b546 100644 --- a/test/cgi/test_cgi_multipart.rb +++ b/test/cgi/test_cgi_multipart.rb @@ -179,11 +179,7 @@ def _test_multipart def _read(basename) filename = File.join(File.dirname(__FILE__), 'testdata', basename) - if RUBY_VERSION>="1.9" - s = File.open(filename, 'r:ascii-8bit') {|f| f.read() } - else - s = File.open(filename, 'rb') {|f| f.read() } - end + s = File.open(filename, 'rb') {|f| f.read() } return s end diff --git a/test/date/test_date_parse.rb b/test/date/test_date_parse.rb index c7a9a10ccc54c8..e9e0ae83fc3682 100644 --- a/test/date/test_date_parse.rb +++ b/test/date/test_date_parse.rb @@ -640,9 +640,7 @@ def test_parse__d_to_s end def test_parse_utf8 - h = DateTime._parse( -"Sun\xe3\x80\x80Aug 16 01:02:03 \xe6\x97\xa5\xe6\x9c\xac 2009". - force_encoding('utf-8')) + h = DateTime._parse("Sun\u{3000}Aug 16 01:02:03 \u{65e5}\u{672c} 2009") assert_equal(2009, h[:year]) assert_equal(8, h[:mon]) assert_equal(16, h[:mday]) @@ -650,8 +648,7 @@ def test_parse_utf8 assert_equal(1, h[:hour]) assert_equal(2, h[:min]) assert_equal(3, h[:sec]) - assert_equal("\xe6\x97\xa5\xe6\x9c\xac". - force_encoding('utf-8'), h[:zone]) + assert_equal("\u{65e5}\u{672c}", h[:zone]) end def test_parse__ex diff --git a/test/digest/test_digest_extend.rb b/test/digest/test_digest_extend.rb new file mode 100644 index 00000000000000..9b8eda03fa2473 --- /dev/null +++ b/test/digest/test_digest_extend.rb @@ -0,0 +1,145 @@ +require 'test/unit' +require 'digest' + +class TestDigestExtend < Test::Unit::TestCase + class MyDigest < Digest::Class + def initialize(*arg) + super + @buf = [] + end + + def initialize_copy(org) + @buf = org.buf.dup + end + + def update(arg) + @buf << arg + self + end + + alias << update + + def finish + (@buf.join.length % 256).chr + end + + def reset + @buf.clear + self + end + + protected + + def buf + @buf + end + end + + def test_digest_s_hexencode + assert_equal('', Digest.hexencode('')) + assert_equal('0102', Digest.hexencode("\1\2")) + assert_equal( + (0..0xff).to_a.map { |c| sprintf("%02x", c ) }.join, + Digest.hexencode((0..0xff).to_a.map { |c| c.chr }.join) + ) + end + + def test_class_reset + a = Digest::SHA1.new + base = a.to_s + assert_equal(base, a.reset.to_s) + b = a.new + assert_equal(base, b.to_s) + b.update('1') + assert_not_equal(base, b.to_s) + assert_equal(base, b.reset.to_s) + end + + def test_digest + assert_equal("\3", MyDigest.digest("foo")) + end + + def test_hexdigest + assert_equal("03", MyDigest.hexdigest("foo")) + end + + def test_context + digester = MyDigest.new + digester.update("foo") + assert_equal("\3", digester.digest) + digester.update("foobar") + assert_equal("\t", digester.digest) + digester.update("foo") + assert_equal("\f", digester.digest) + end + + def test_new + a = Digest::SHA1.new + b = a.new + obj = a.to_s + assert_equal(obj, a.to_s) + assert_equal(obj, b.to_s) + a.update('1') + assert_not_equal(obj, a.to_s) + assert_equal(obj, b.to_s) + end + + def test_digest_hexdigest + [:digest, :hexdigest].each do |m| + exp_1st = "\3"; exp_1st = Digest.hexencode(exp_1st) if m == :hexdigest + exp_2nd = "\6"; exp_2nd = Digest.hexencode(exp_2nd) if m == :hexdigest + digester = MyDigest.new + digester.update("foo") + obj = digester.send(m) + # digest w/o param does not reset the org digester. + assert_equal(exp_1st, obj) + digester.update("bar") + obj = digester.send(m) + assert_equal(exp_2nd, obj) + obj = digester.send(m, "baz") + # digest with param resets the org digester. + assert_equal(exp_1st, obj) + end + end + + def test_digest_hexdigest_bang + [:digest!, :hexdigest!].each do |m| + exp_1st = "\3"; exp_1st = Digest.hexencode(exp_1st) if m == :hexdigest! + digester = MyDigest.new + digester.update("foo") + obj = digester.send(m) # digest! always resets the org digester. + assert_equal(exp_1st, obj) + digester.update("bar") + obj = digester.send(m) + assert_equal(exp_1st, obj) + end + end + + def test_to_s + digester = MyDigest.new + digester.update("foo") + assert_equal("03", digester.to_s) + end + + def test_length + digester = MyDigest.new + assert_equal(2, digester.length) + assert_equal(2, digester.size) + end + + def test_digest_length # breaks MyDigest#digest_length + assert_equal(1, MyDigest.new.digest_length) + MyDigest.class_eval do + def digest_length + 2 + end + end + assert_equal(2, MyDigest.new.digest_length) + end + + def test_block_length + assert_raises(RuntimeError) do + MyDigest.new.block_length + end + end +end diff --git a/test/dl/test_callback.rb b/test/dl/test_callback.rb new file mode 100644 index 00000000000000..f3dd665febdd06 --- /dev/null +++ b/test/dl/test_callback.rb @@ -0,0 +1,32 @@ +require_relative 'test_base' +require_relative '../ruby/envutil' + +module DL + class TestCallback < TestBase + include DL + + def test_callback_with_string + called_with = nil + addr = set_callback(TYPE_VOID, 1) do |str| + called_with = dlunwrap(str) + end + func = CFunc.new(addr, TYPE_VOID, 'test') + + func.call([dlwrap('foo')]) + assert_equal 'foo', called_with + end + + def test_call_callback + called = false + + addr = set_callback(TYPE_VOID, 0) do + called = true + end + + func = CFunc.new(addr, TYPE_VOID, 'test') + func.call([]) + + assert called, 'function should be called' + end + end +end diff --git a/test/dl/test_cfunc.rb b/test/dl/test_cfunc.rb index 3e928257bdcc3b..28501f2c6d195d 100644 --- a/test/dl/test_cfunc.rb +++ b/test/dl/test_cfunc.rb @@ -9,6 +9,20 @@ def setup @cf = CFunc.new(@libc[@name], TYPE_VOIDP, @name) end + def test_ptr= + @cf.ptr = @libc['malloc'] + assert_equal @cf.ptr, @libc['malloc'] + end + + def test_ptr + assert_equal @cf.ptr, @libc[@name] + end + + def test_set_calltype + @cf.calltype = :foo + assert_equal :foo, @cf.calltype + end + def test_new_ptr_type_name assert_equal @name, @cf.name assert @cf.name.tainted?, 'name should be tainted' @@ -47,6 +61,7 @@ def test_inspect def test_to_i assert_equal @cf.to_i, @cf.ptr + assert_equal @libc[@name], @cf.to_i end def test_last_error diff --git a/test/dl/test_cptr.rb b/test/dl/test_cptr.rb index 55a53f97da9ace..64b78d134f0a0f 100644 --- a/test/dl/test_cptr.rb +++ b/test/dl/test_cptr.rb @@ -3,6 +3,132 @@ module DL class TestCPtr < TestBase + def test_malloc_free_func_int + free = CFunc.new(DL::RUBY_FREE, TYPE_VOID, 'free') + + ptr = CPtr.malloc(10, free.to_i) + assert_equal 10, ptr.size + assert_equal free.to_i, ptr.free.to_i + end + + def test_malloc_free_func + free = CFunc.new(DL::RUBY_FREE, TYPE_VOID, 'free') + + ptr = CPtr.malloc(10, free) + assert_equal 10, ptr.size + assert_equal free.to_i, ptr.free.to_i + end + + def test_to_str + str = "hello world" + ptr = CPtr[str] + + assert_equal 3, ptr.to_str(3).length + assert_equal str, ptr.to_str + + ptr[5] = 0 + assert_equal "hello\0world", ptr.to_str + end + + def test_to_s + str = "hello world" + ptr = CPtr[str] + + assert_equal 3, ptr.to_s(3).length + assert_equal str, ptr.to_s + + ptr[5] = 0 + assert_equal 'hello', ptr.to_s + end + + def test_minus + str = "hello world" + ptr = CPtr[str] + assert_equal ptr.to_s, (ptr + 3 - 3).to_s + end + + # TODO: what if the pointer size is 0? raise an exception? do we care? + def test_plus + str = "hello world" + ptr = CPtr[str] + new_str = ptr + 3 + assert_equal 'lo world', new_str.to_s + end + + def test_inspect + ptr = CPtr.new(0) + inspect = ptr.inspect + assert_match(/size=#{ptr.size}/, inspect) + assert_match(/free=#{sprintf("%#x", ptr.free.to_i)}/, inspect) + assert_match(/ptr=#{sprintf("%#x", ptr.to_i)}/, inspect) + end + + def test_to_ptr_string + str = "hello world" + ptr = CPtr[str] + assert ptr.tainted?, 'pointer should be tainted' + assert_equal str.length, ptr.size + assert_equal 'hello', ptr[0,5] + end + + def test_to_ptr_io + buf = CPtr.malloc(10) + File.open(__FILE__, 'r') do |f| + ptr = CPtr.to_ptr f + fread = CFunc.new(@libc['fread'], TYPE_VOID, 'fread') + fread.call([buf.to_i, DL::SIZEOF_CHAR, buf.size - 1, ptr.to_i]) + end + + File.open(__FILE__, 'r') do |f| + assert_equal f.read(9), buf.to_s + end + end + + def test_to_ptr_with_ptr + ptr = CPtr.new 0 + ptr2 = CPtr.to_ptr Struct.new(:to_ptr).new(ptr) + assert_equal ptr, ptr2 + + assert_raises(DL::DLError) do + CPtr.to_ptr Struct.new(:to_ptr).new(nil) + end + end + + def test_to_ptr_with_num + ptr = CPtr.new 0 + assert_equal ptr, CPtr[0] + end + + def test_equals + ptr = CPtr.new 0 + ptr2 = CPtr.new 0 + assert_equal ptr2, ptr + end + + def test_not_equals + ptr = CPtr.new 0 + assert_not_equal 10, ptr, '10 should not equal the pointer' + end + + def test_cmp + ptr = CPtr.new 0 + assert_nil(ptr <=> 10, '10 should not be comparable') + end + + def test_ref_ptr + ary = [0,1,2,4,5] + addr = CPtr.new(dlwrap(ary)) + assert_equal addr.to_i, addr.ref.ptr.to_i + + assert_equal addr.to_i, (+ (- addr)).to_i + end + + def test_to_value + ary = [0,1,2,4,5] + addr = CPtr.new(dlwrap(ary)) + assert_equal ary, addr.to_value + end + def test_free ptr = CPtr.malloc(4) assert_nil ptr.free @@ -16,18 +142,70 @@ def test_free= include DL @libc = dlopen(LIBC_SO) @libm = dlopen(LIBM_SO) - free = CFunc.new(@libc['free'], TYPE_VOID, 'free') + free = CFunc.new(DL::RUBY_FREE, TYPE_VOID, 'free') ptr = CPtr.malloc(4) ptr.free = free free.ptr ptr.free.ptr End - free = CFunc.new(@libc['free'], TYPE_VOID, 'free') + free = CFunc.new(DL::RUBY_FREE, TYPE_VOID, 'free') ptr = CPtr.malloc(4) ptr.free = free assert_equal free.ptr, ptr.free.ptr end + + def test_null? + ptr = CPtr.new(0) + assert ptr.null? + end + + def test_size + ptr = CPtr.malloc(4) + assert_equal 4, ptr.size + DL.free ptr.to_i + end + + def test_size= + ptr = CPtr.malloc(4) + ptr.size = 10 + assert_equal 10, ptr.size + DL.free ptr.to_i + end + + def test_aref_aset + check = Proc.new{|str,ptr| + assert_equal(str.size(), ptr.size()) + assert_equal(str, ptr.to_s()) + assert_equal(str[0,2], ptr.to_s(2)) + assert_equal(str[0,2], ptr[0,2]) + assert_equal(str[1,2], ptr[1,2]) + assert_equal(str[1,0], ptr[1,0]) + assert_equal(str[0].ord, ptr[0]) + assert_equal(str[1].ord, ptr[1]) + } + str = 'abc' + ptr = CPtr[str] + check.call(str, ptr) + + str[0] = "c" + assert_equal 'c'.ord, ptr[0] = "c".ord + check.call(str, ptr) + + str[0,2] = "aa" + assert_equal 'aa', ptr[0,2] = "aa" + check.call(str, ptr) + + ptr2 = CPtr['cdeeee'] + str[0,2] = "cd" + assert_equal ptr2, ptr[0,2] = ptr2 + check.call(str, ptr) + + ptr3 = CPtr['vvvv'] + str[0,2] = "vv" + assert_equal ptr3.to_i, ptr[0,2] = ptr3.to_i + check.call(str, ptr) + end end end diff --git a/test/dl/test_dl2.rb b/test/dl/test_dl2.rb index 5a9daba42a0f99..ac1414920fe019 100644 --- a/test/dl/test_dl2.rb +++ b/test/dl/test_dl2.rb @@ -3,6 +3,62 @@ module DL class TestDL < TestBase + # TODO: refactor test repetition + + def test_free_secure + assert_raises(SecurityError) do + Thread.new do + $SAFE = 4 + DL.free(0) + end.join + end + end + + def test_realloc + str = "abc" + ptr_id = DL.realloc(0, 4) + ptr = CPtr.new(ptr_id, 4) + + assert_equal ptr_id, ptr.to_i + + cfunc = CFunc.new(@libc['strcpy'], TYPE_VOIDP, 'strcpy') + x = cfunc.call([ptr_id,str].pack("l!p").unpack("l!*")) + assert_equal("abc\0", ptr[0,4]) + DL.free ptr_id + end + + def test_realloc_secure + assert_raises(SecurityError) do + Thread.new do + $SAFE = 4 + DL.realloc(0, 4) + end.join + end + end + + def test_malloc + str = "abc" + + ptr_id = DL.malloc(4) + ptr = CPtr.new(ptr_id, 4) + + assert_equal ptr_id, ptr.to_i + + cfunc = CFunc.new(@libc['strcpy'], TYPE_VOIDP, 'strcpy') + x = cfunc.call([ptr_id,str].pack("l!p").unpack("l!*")) + assert_equal("abc\0", ptr[0,4]) + DL.free ptr_id + end + + def test_malloc_security + assert_raises(SecurityError) do + Thread.new do + $SAFE = 4 + DL.malloc(4) + end.join + end + end + def test_call_int() cfunc = CFunc.new(@libc['atoi'], TYPE_INT, 'atoi') x = cfunc.call(["100"].pack("p").unpack("l!*")) @@ -86,27 +142,5 @@ def test_dlwrap() ary2 = dlunwrap(addr) assert_equal(ary, ary2) end - - def test_cptr() - check = Proc.new{|str,ptr| - assert_equal(str.size(), ptr.size()) - assert_equal(str, ptr.to_s()) - assert_equal(str[0,2], ptr.to_s(2)) - assert_equal(str[0,2], ptr[0,2]) - assert_equal(str[1,2], ptr[1,2]) - assert_equal(str[1,0], ptr[1,0]) - assert_equal(str[0].ord, ptr[0]) - assert_equal(str[1].ord, ptr[1]) - } - str = 'abc' - ptr = CPtr[str] - check.call(str, ptr) - str[0] = "c" - ptr[0] = "c".ord - check.call(str, ptr) - str[0,2] = "aa" - ptr[0,2] = "aa" - check.call(str, ptr) - end end end # module DL diff --git a/test/dl/test_func.rb b/test/dl/test_func.rb index 512c22851e0eb8..99953a448e3617 100644 --- a/test/dl/test_func.rb +++ b/test/dl/test_func.rb @@ -33,10 +33,10 @@ def test_atof() def test_strtod() f = Function.new(CFunc.new(@libc['strtod'], TYPE_DOUBLE, 'strtod'), [TYPE_VOIDP, TYPE_VOIDP]) - buff1 = "12.34" - buff2 = " " - r = f.call(buff1, buff2) - assert_match(12.00..13.00, r) + buff1 = CPtr["12.34"] + buff2 = buff1 + 4 + r = f.call(buff1, - buff2) + assert_in_delta(12.34, r, 0.001) end def test_qsort1() diff --git a/test/dl/test_handle.rb b/test/dl/test_handle.rb new file mode 100644 index 00000000000000..f2b1de3c20934e --- /dev/null +++ b/test/dl/test_handle.rb @@ -0,0 +1,136 @@ +require 'test_base' + +module DL + class TestHandle < TestBase + def test_to_i + handle = DL::Handle.new(LIBC_SO) + assert handle.to_i + end + + def test_static_sym_secure + assert_raises(SecurityError) do + Thread.new do + $SAFE = 2 + DL::Handle.sym('calloc') + end.join + end + end + + def test_static_sym_unknown + assert_raises(DL::DLError) { DL::Handle.sym('fooo') } + assert_raises(DL::DLError) { DL::Handle['fooo'] } + end + + def test_static_sym + assert DL::Handle.sym('dlopen') + assert_equal DL::Handle.sym('dlopen'), DL::Handle['dlopen'] + end + + def test_sym_closed_handle + handle = DL::Handle.new(LIBC_SO) + handle.close + assert_raises(DL::DLError) { handle.sym("calloc") } + assert_raises(DL::DLError) { handle["calloc"] } + end + + def test_sym_unknown + handle = DL::Handle.new(LIBC_SO) + assert_raises(DL::DLError) { handle.sym('fooo') } + assert_raises(DL::DLError) { handle['fooo'] } + end + + def test_sym_with_bad_args + handle = DL::Handle.new(LIBC_SO) + assert_raises(TypeError) { handle.sym(nil) } + assert_raises(TypeError) { handle[nil] } + end + + def test_sym_secure + assert_raises(SecurityError) do + Thread.new do + $SAFE = 2 + handle = DL::Handle.new(LIBC_SO) + handle.sym('calloc') + end.join + end + end + + def test_sym + handle = DL::Handle.new(LIBC_SO) + assert handle.sym('calloc') + assert handle['calloc'] + end + + def test_handle_close + handle = DL::Handle.new(LIBC_SO) + assert_equal 0, handle.close + end + + def test_handle_close_twice + handle = DL::Handle.new(LIBC_SO) + handle.close + assert_raises(DL::DLError) do + handle.close + end + end + + def test_dlopen_returns_handle + assert_instance_of DL::Handle, dlopen(LIBC_SO) + end + + def test_dlopen_safe + assert_raises(SecurityError) do + Thread.new do + $SAFE = 2 + dlopen(LIBC_SO) + end.join + end + end + + def test_initialize_safe + assert_raises(SecurityError) do + Thread.new do + $SAFE = 2 + DL::Handle.new(LIBC_SO) + end.join + end + end + + def test_initialize_noargs + handle = DL::Handle.new + assert handle['rb_str_new'] + end + + def test_initialize_flags + handle = DL::Handle.new(LIBC_SO, DL::RTLD_LAZY | DL::RTLD_GLOBAL) + assert handle['calloc'] + end + + def test_enable_close + handle = DL::Handle.new(LIBC_SO) + assert !handle.close_enabled?, 'close is enabled' + + handle.enable_close + assert handle.close_enabled?, 'close is not enabled' + end + + def test_disable_close + handle = DL::Handle.new(LIBC_SO) + + handle.enable_close + assert handle.close_enabled?, 'close is enabled' + handle.disable_close + assert !handle.close_enabled?, 'close is enabled' + end + + def test_NEXT + handle = DL::Handle::NEXT + assert handle['malloc'] + end + + def test_DEFAULT + handle = DL::Handle::DEFAULT + assert handle['malloc'] + end + end +end diff --git a/test/drb/drbtest.rb b/test/drb/drbtest.rb index e1d3aeedf21b51..c89f51f47b3d0e 100644 --- a/test/drb/drbtest.rb +++ b/test/drb/drbtest.rb @@ -2,13 +2,7 @@ require 'drb/drb' require 'drb/extservm' require 'timeout' -begin - loadpath = $:.dup - $:.replace($: | [File.expand_path("../ruby", File.dirname(__FILE__))]) - require 'envutil' -ensure - $:.replace(loadpath) -end +require_relative '../ruby/envutil' class DRbService @@manager = DRb::ExtServManager.new diff --git a/test/fileutils/test_fileutils.rb b/test/fileutils/test_fileutils.rb index 13df0fc1335613..7138698274a89f 100644 --- a/test/fileutils/test_fileutils.rb +++ b/test/fileutils/test_fileutils.rb @@ -1,7 +1,7 @@ # $Id$ require 'fileutils' -require 'fileasserts' +require_relative 'fileasserts' require 'pathname' require 'tmpdir' require 'test/unit' @@ -173,17 +173,11 @@ def test_pwd assert_equal Dir.pwd, pwd() cwd = Dir.pwd -if have_drive_letter? - cd('C:/') { - assert_equal 'C:/', pwd() + root = have_drive_letter? ? 'C:/' : '/' + cd(root) { + assert_equal root, pwd() } assert_equal cwd, pwd() -else - cd('/') { - assert_equal '/', pwd() - } - assert_equal cwd, pwd() -end end def test_cmp @@ -233,7 +227,10 @@ def test_cp assert_raise(ArgumentError) { cp 'tmp/cptmp', 'tmp/cptmp' } -if have_symlink? + end + + def test_cp_symlink + touch 'tmp/cptmp' # src==dest (2) symlink and its target File.symlink 'cptmp', 'tmp/cptmp_symlink' assert_raise(ArgumentError) { @@ -247,9 +244,11 @@ def test_cp assert_raise(Errno::ELOOP) { cp 'tmp/symlink', 'tmp/symlink' } -end + end if have_symlink? + def test_cp_pathname # pathname + touch 'tmp/cptmp' assert_nothing_raised { cp 'tmp/cptmp', Pathname.new('tmp/tmpdest') cp Pathname.new('tmp/cptmp'), 'tmp/tmpdest' @@ -287,8 +286,9 @@ def test_cp_r assert_directory 'tmp/cpr_dest/d' my_rm_rf 'tmp/cpr_src' my_rm_rf 'tmp/cpr_dest' + end -if have_symlink? + def test_cp_r_symlink # symlink in a directory mkdir 'tmp/cpr_src' ln_s 'SLdest', 'tmp/cpr_src/symlink' @@ -304,8 +304,9 @@ def test_cp_r assert_symlink 'tmp/cpr_dest2' # 2005-05-26: feature change assert_symlink 'tmp/cpr_dest2/symlink' assert_equal 'SLdest', File.readlink('tmp/cpr_dest2/symlink') -end + end if have_symlink? + def test_cp_r_pathname # pathname touch 'tmp/cprtmp' assert_nothing_raised { @@ -346,7 +347,10 @@ def test_mv assert_raise(ArgumentError) { mv 'tmp/cptmp', 'tmp/cptmp' } -if have_symlink? + end + + def test_mv_symlink + touch 'tmp/cptmp' # src==dest (2) symlink and its target File.symlink 'cptmp', 'tmp/cptmp_symlink' assert_raise(ArgumentError) { @@ -360,8 +364,9 @@ def test_mv assert_raise(Errno::ELOOP) { mv 'tmp/symlink', 'tmp/symlink' } -end + end if have_symlink? + def test_mv_pathname # pathname assert_nothing_raised { touch 'tmp/mvtmpsrc' @@ -403,14 +408,14 @@ def test_rm_f rm_f 'tmp/rmsrc' assert_file_not_exist 'tmp/rmsrc' end + end -if have_symlink? + def test_rm_symlink File.open('tmp/lnf_symlink_src', 'w') {|f| f.puts 'dummy' } File.symlink 'tmp/lnf_symlink_src', 'tmp/lnf_symlink_dest' rm_f 'tmp/lnf_symlink_dest' assert_file_not_exist 'tmp/lnf_symlink_dest' assert_file_exist 'tmp/lnf_symlink_src' -end rm_f 'notexistdatafile' rm_f 'tmp/notexistdatafile' @@ -418,7 +423,9 @@ def test_rm_f Dir.mkdir 'tmpdatadir' # rm_f 'tmpdatadir' Dir.rmdir 'tmpdatadir' + end if have_symlink? + def test_rm_f_2 Dir.mkdir 'tmp/tmpdir' File.open('tmp/tmpdir/a', 'w') {|f| f.puts 'dummy' } File.open('tmp/tmpdir/c', 'w') {|f| f.puts 'dummy' } @@ -426,7 +433,9 @@ def test_rm_f assert_file_not_exist 'tmp/tmpdir/a' assert_file_not_exist 'tmp/tmpdir/c' Dir.rmdir 'tmp/tmpdir' + end + def test_rm_pathname # pathname touch 'tmp/rmtmp1' touch 'tmp/rmtmp2' @@ -440,6 +449,11 @@ def test_rm_f assert_file_not_exist 'tmp/rmtmp2' assert_file_not_exist 'tmp/rmtmp3' assert_file_exist 'tmp/rmtmp4' + + # [ruby-dev:39345] + touch 'tmp/[rmtmp]' + rm_f 'tmp/[rmtmp]' + assert_file_not_exist 'tmp/[rmtmp]' end def test_rm_r @@ -480,16 +494,18 @@ def test_rm_r assert_file_not_exist 'tmp/tmpdir/a' assert_file_not_exist 'tmp/tmpdir/c' Dir.rmdir 'tmp/tmpdir' + end -if have_symlink? + def test_rm_r_symlink # [ruby-talk:94635] a symlink to the directory Dir.mkdir 'tmp/tmpdir' File.symlink '..', 'tmp/tmpdir/symlink_to_dir' rm_r 'tmp/tmpdir' assert_file_not_exist 'tmp/tmpdir' assert_file_exist 'tmp' -end + end if have_symlink? + def test_rm_r_pathname # pathname Dir.mkdir 'tmp/tmpdir1'; touch 'tmp/tmpdir1/tmp' Dir.mkdir 'tmp/tmpdir2'; touch 'tmp/tmpdir2/tmp' @@ -543,16 +559,18 @@ def test_remove_entry_secure assert_file_not_exist 'tmp/tmpdir/a' assert_file_not_exist 'tmp/tmpdir/c' Dir.rmdir 'tmp/tmpdir' + end -if have_symlink? + def test_remove_entry_secure_symlink # [ruby-talk:94635] a symlink to the directory Dir.mkdir 'tmp/tmpdir' File.symlink '..', 'tmp/tmpdir/symlink_to_dir' remove_entry_secure 'tmp/tmpdir' assert_file_not_exist 'tmp/tmpdir' assert_file_exist 'tmp' -end + end if have_symlink? + def test_remove_entry_secure_pathname # pathname Dir.mkdir 'tmp/tmpdir1'; touch 'tmp/tmpdir1/tmp' assert_nothing_raised { @@ -576,7 +594,6 @@ def test_with_big_file assert_file_not_exist 'tmp/mvdest' end -if have_hardlink? def test_ln TARGETS.each do |fname| ln fname, 'tmp/lndest' @@ -597,7 +614,10 @@ def test_ln assert_raise(Errno::EEXIST) { ln 'tmp/cptmp', 'tmp/cptmp' } -if have_symlink? + end if have_hardlink? + + def test_ln_symlink + touch 'tmp/cptmp' # src==dest (2) symlink and its target File.symlink 'cptmp', 'tmp/symlink' assert_raise(Errno::EEXIST) { @@ -613,8 +633,9 @@ def test_ln rescue => err assert_kind_of SystemCallError, err end -end + end if have_symlink? + def test_ln_pathname # pathname touch 'tmp/lntmp' assert_nothing_raised { @@ -622,10 +643,8 @@ def test_ln ln 'tmp/lntmp', Pathname.new('tmp/lndesttmp2') ln Pathname.new('tmp/lntmp'), Pathname.new('tmp/lndesttmp3') } - end -end + end if have_hardlink? -if have_symlink? def test_ln_s check_singleton :ln_s @@ -647,10 +666,8 @@ def test_ln_s ln_s 'lnsdest', Pathname.new('tmp/symlink_tmp2') ln_s Pathname.new('lnsdest'), Pathname.new('tmp/symlink_tmp3') } - end -end + end if have_symlink? -if have_symlink? def test_ln_sf check_singleton :ln_sf @@ -672,8 +689,7 @@ def test_ln_sf ln_sf 'lns_dest', Pathname.new('tmp/symlink_tmp2') ln_sf Pathname.new('lns_dest'), Pathname.new('tmp/symlink_tmp3') } - end -end + end if have_symlink? def test_mkdir check_singleton :mkdir @@ -695,20 +711,22 @@ def test_mkdir assert_directory 'tmp/tmp' assert_equal 0700, (File.stat('tmp/tmp').mode & 0777) if have_file_perm? Dir.rmdir 'tmp/tmp' + end -if have_file_perm? + def test_mkdir_file_perm mkdir 'tmp/tmp', :mode => 07777 assert_directory 'tmp/tmp' assert_equal 07777, (File.stat('tmp/tmp').mode & 07777) Dir.rmdir 'tmp/tmp' -end + end if have_file_perm? -if lf_in_path_allowed? + def test_mkdir_lf_in_path mkdir "tmp-first-line\ntmp-second-line" assert_directory "tmp-first-line\ntmp-second-line" Dir.rmdir "tmp-first-line\ntmp-second-line" -end + end if lf_in_path_allowed? + def test_mkdir_pathname # pathname assert_nothing_raised { mkdir Pathname.new('tmp/tmpdirtmp') @@ -766,15 +784,17 @@ def test_mkdir_p # (rm(1) try to chdir to parent directory, it fails to remove directory.) Dir.rmdir 'tmp/tmp' Dir.rmdir 'tmp' + end -if have_file_perm? + def test_mkdir_p_file_perm mkdir_p 'tmp/tmp/tmp', :mode => 07777 assert_directory 'tmp/tmp/tmp' assert_equal 07777, (File.stat('tmp/tmp/tmp').mode & 07777) Dir.rmdir 'tmp/tmp/tmp' Dir.rmdir 'tmp/tmp' -end + end if have_file_perm? + def test_mkdir_p_pathname # pathname assert_nothing_raised { mkdir_p Pathname.new('tmp/tmp/tmp') @@ -804,7 +824,10 @@ def test_install assert_raise(ArgumentError) { install 'tmp/cptmp', 'tmp/cptmp' } -if have_symlink? + end + + def test_install_symlink + touch 'tmp/cptmp' # src==dest (2) symlink and its target File.symlink 'cptmp', 'tmp/cptmp_symlink' assert_raise(ArgumentError) { @@ -819,8 +842,9 @@ def test_install # File#install invokes open(2), always ELOOP must be raised install 'tmp/symlink', 'tmp/symlink' } -end + end if have_symlink? + def test_install_pathname # pathname assert_nothing_raised { rm_f 'tmp/a'; touch 'tmp/a' @@ -840,7 +864,6 @@ def test_install } end -if have_file_perm? def test_chmod check_singleton :chmod @@ -849,7 +872,7 @@ def test_chmod assert_equal 0700, File.stat('tmp/a').mode & 0777 chmod 0500, 'tmp/a' assert_equal 0500, File.stat('tmp/a').mode & 0777 - end + end if have_file_perm? def test_chmod_R check_singleton :chmod_R @@ -867,18 +890,17 @@ def test_chmod_R assert_equal 0500, File.stat('tmp/dir/dir').mode & 0777 assert_equal 0500, File.stat('tmp/dir/dir/file').mode & 0777 chmod_R 0700, 'tmp/dir' # to remove - end + end if have_file_perm? # FIXME: How can I test this method? def test_chown check_singleton :chown - end + end if have_file_perm? # FIXME: How can I test this method? def test_chown_R check_singleton :chown_R - end -end + end if have_file_perm? def test_copy_entry check_singleton :copy_entry @@ -888,7 +910,9 @@ def test_copy_entry assert_same_file srcpath, destpath assert_equal File.stat(srcpath).ftype, File.stat(destpath).ftype end -if have_symlink? + end + + def test_copy_entry_symlink # root is a symlink File.symlink 'somewhere', 'tmp/symsrc' copy_entry 'tmp/symsrc', 'tmp/symdest' @@ -903,8 +927,7 @@ def test_copy_entry assert_not_symlink 'tmp/dirdest' assert_symlink 'tmp/dirdest/sym' assert_equal 'somewhere', File.readlink('tmp/dirdest/sym') -end - end + end if have_symlink? def test_copy_file check_singleton :copy_file @@ -945,13 +968,14 @@ def test_remove_file File.open('data/tmp', 'w') {|f| f.puts 'dummy' } remove_file 'data/tmp' assert_file_not_exist 'data/tmp' -if have_file_perm? + end + + def test_remove_file_file_perm File.open('data/tmp', 'w') {|f| f.puts 'dummy' } File.chmod 0, 'data/tmp' remove_file 'data/tmp' assert_file_not_exist 'data/tmp' -end - end + end if have_file_perm? def test_remove_dir check_singleton :remove_dir @@ -959,13 +983,14 @@ def test_remove_dir File.open('data/tmpdir/a', 'w') {|f| f.puts 'dummy' } remove_dir 'data/tmpdir' assert_file_not_exist 'data/tmpdir' -if have_file_perm? + end + + def test_remove_dir_file_perm Dir.mkdir 'data/tmpdir' File.chmod 0555, 'data/tmpdir' remove_dir 'data/tmpdir' assert_file_not_exist 'data/tmpdir' -end - end + end if have_file_perm? def test_compare_file check_singleton :compare_file diff --git a/test/fileutils/test_nowrite.rb b/test/fileutils/test_nowrite.rb index 369f8ca60828fb..4575d3e7af7e30 100644 --- a/test/fileutils/test_nowrite.rb +++ b/test/fileutils/test_nowrite.rb @@ -1,7 +1,7 @@ # $Id$ require 'fileutils' -require 'fileasserts' +require_relative 'fileasserts' require 'tmpdir' require 'test/unit' diff --git a/test/iconv/test_basic.rb b/test/iconv/test_basic.rb index 394d271bc18798..2575b22eb95931 100644 --- a/test/iconv/test_basic.rb +++ b/test/iconv/test_basic.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "utils.rb") +require File.expand_path("../utils.rb", __FILE__) class TestIconv::Basic < TestIconv def test_euc2sjis @@ -52,5 +52,8 @@ def test_invalid_arguments def test_unknown_encoding assert_raise(Iconv::InvalidEncoding) { Iconv.iconv("utf-8", "X-UKNOWN", "heh") } + assert_raise(Iconv::InvalidEncoding, '[ruby-dev:39487]') { + Iconv.iconv("X-UNKNOWN-1", "X-UNKNOWN-2") {break} + } end end if defined?(TestIconv) diff --git a/test/iconv/test_option.rb b/test/iconv/test_option.rb index b899ba2db19795..b210fa498a5df2 100644 --- a/test/iconv/test_option.rb +++ b/test/iconv/test_option.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "utils.rb") +require File.expand_path("../utils.rb", __FILE__) class TestIconv::Option < TestIconv def test_ignore_option @@ -40,4 +40,4 @@ def test_translit_option assert_equal(SJIS_STR, str) iconv.close end -end if defined?(TestIconv) +end if false and defined?(TestIconv) diff --git a/test/iconv/test_partial.rb b/test/iconv/test_partial.rb index aa4d0ba2503e68..a98960b070cfe0 100644 --- a/test/iconv/test_partial.rb +++ b/test/iconv/test_partial.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), "utils.rb") +require File.expand_path("../utils.rb", __FILE__) class TestIconv::Partial < TestIconv def test_partial_ascii diff --git a/test/json/test_json.rb b/test/json/test_json.rb index 53076095f7cd3a..ce90d6e62b23d4 100755 --- a/test/json/test_json.rb +++ b/test/json/test_json.rb @@ -94,30 +94,23 @@ def test_parse_simple_objects assert_equal({ "a" => 0.23 }, parse(' { "a" : 0.23 } ')) end - begin - require 'permutation' - def test_parse_more_complex_arrays - a = [ nil, false, true, "foßbar", [ "n€st€d", true ], { "nested" => true, "nۧt€ð2" => {} }] - perms = Permutation.for a - perms.each do |perm| - orig_ary = perm.project - json = pretty_generate(orig_ary) - assert_equal orig_ary, parse(json) - end + def test_parse_more_complex_arrays + a = [ nil, false, true, "foßbar", [ "n€st€d", true ], { "nested" => true, "nۧt€ð2" => {} }] + a.permutation.each do |perm| + orig_ary = a + json = pretty_generate(orig_ary) + assert_equal orig_ary, parse(json) end + end - def test_parse_complex_objects - a = [ nil, false, true, "foßbar", [ "n€st€d", true ], { "nested" => true, "nۧt€ð2" => {} }] - perms = Permutation.for a - perms.each do |perm| - s = "a" - orig_obj = perm.project.inject({}) { |h, x| h[s.dup] = x; s = s.succ; h } - json = pretty_generate(orig_obj) - assert_equal orig_obj, parse(json) - end + def test_parse_complex_objects + a = [ nil, false, true, "foßbar", [ "n€st€d", true ], { "nested" => true, "nۧt€ð2" => {} }] + a.permutation.each do |perm| + s = "a" + orig_obj = a.inject({}) { |h, x| h[s.dup] = x; s = s.succ; h } + json = pretty_generate(orig_obj) + assert_equal orig_obj, parse(json) end - rescue LoadError - warn "Skipping permutation tests." end def test_parse_arrays diff --git a/test/logger/test_logger.rb b/test/logger/test_logger.rb index a6c132d0f341cf..f83070c7f40f58 100644 --- a/test/logger/test_logger.rb +++ b/test/logger/test_logger.rb @@ -6,9 +6,9 @@ class TestLoggerSeverity < Test::Unit::TestCase def test_enum logger_levels = Logger.constants - levels = [:WARN, :UNKNOWN, :INFO, :FATAL, :DEBUG, :ERROR] + levels = ["WARN", "UNKNOWN", "INFO", "FATAL", "DEBUG", "ERROR"] Logger::Severity.constants.each do |level| - assert(levels.include?(level)) + assert(levels.include?(level.to_s)) assert(logger_levels.include?(level)) end assert_equal(levels.size, Logger::Severity.constants.size) @@ -21,16 +21,19 @@ class TestLogger < Test::Unit::TestCase def setup @logger = Logger.new(nil) + @filename = __FILE__ + ".#{$$}" end - def test_const_progname - assert %r!\Alogger\.rb/\S+\z! === Logger::ProgName + def teardown + unless $DEBUG + File.unlink(@filename) if File.exist?(@filename) + end end class Log attr_reader :label, :datetime, :pid, :severity, :progname, :msg def initialize(line) - /\A(\w+), \[([^#]*)#(\d+)\]\s+(\w+) -- (\w*): ([\x0-\xff]*)/n =~ line + /\A(\w+), \[([^#]*)#(\d+)\]\s+(\w+) -- (\w*): ([\x0-\xff]*)/ =~ line @label, @datetime, @pid, @severity, @progname, @msg = $1, $2, $3, $4, $5, $6 end end @@ -262,28 +265,56 @@ def test_lshift end class TestLogDevice < Test::Unit::TestCase - def d(log) - Logger::LogDevice.new(log) + class LogExcnRaiser + def write(*arg) + raise 'disk is full' + end + + def close + end + + def stat + Object.new + end + end + + def setup + @filename = __FILE__ + ".#{$$}" + end + + def teardown + unless $DEBUG + File.unlink(@filename) if File.exist?(@filename) + end + end + + def d(log, opt = {}) + Logger::LogDevice.new(log, opt) end def test_initialize logdev = d(STDERR) assert_equal(STDERR, logdev.dev) assert_nil(logdev.filename) - assert_raise(TypeError) do + assert_raises(TypeError) do d(nil) end # - filename = __FILE__ + ".#{$$}" + logdev = d(@filename) begin - logdev = d(filename) - assert(File.exist?(filename)) + assert(File.exist?(@filename)) assert(logdev.dev.sync) - assert_equal(filename, logdev.filename) + assert_equal(@filename, logdev.filename) + logdev.write('hello') ensure logdev.close - File.unlink(filename) end + # create logfile whitch is already exist. + logdev = d(@filename) + logdev.write('world') + logfile = File.read(@filename) + assert_equal(2, logfile.split(/\n/).size) + assert_match(/^helloworld$/, logfile) end def test_write @@ -295,6 +326,21 @@ def test_write msg = r.read r.close assert_equal("msg2\n\n", msg) + # + logdev = d(LogExcnRaiser.new) + class << (stderr = '') + alias write << + end + $stderr, stderr = stderr, $stderr + begin + assert_nothing_raised do + logdev.write('hello') + end + ensure + logdev.close + $stderr, stderr = stderr, $stderr + end + assert_equal "log writing failed. disk is full\n", stderr end def test_close @@ -377,4 +423,88 @@ def test_shifting_size File.unlink(logfile1) File.unlink(logfile2) end + + def test_shifting_age_variants + logger = Logger.new(@filename, 'daily') + logger.info('daily') + logger.close + logger = Logger.new(@filename, 'weekly') + logger.info('weekly') + logger.close + logger = Logger.new(@filename, 'monthly') + logger.info('monthly') + logger.close + end + + def test_shifting_age + # shift_age other than 'daily', 'weekly', and 'monthly' means 'everytime' + yyyymmdd = Time.now.strftime("%Y%m%d") + filename1 = @filename + ".#{yyyymmdd}" + filename2 = @filename + ".#{yyyymmdd}.1" + filename3 = @filename + ".#{yyyymmdd}.2" + begin + logger = Logger.new(@filename, 'now') + assert(File.exist?(@filename)) + assert(!File.exist?(filename1)) + assert(!File.exist?(filename2)) + assert(!File.exist?(filename3)) + logger.info("0" * 15) + assert(File.exist?(@filename)) + assert(File.exist?(filename1)) + assert(!File.exist?(filename2)) + assert(!File.exist?(filename3)) + logger.warn("0" * 15) + assert(File.exist?(@filename)) + assert(File.exist?(filename1)) + assert(File.exist?(filename2)) + assert(!File.exist?(filename3)) + logger.error("0" * 15) + assert(File.exist?(@filename)) + assert(File.exist?(filename1)) + assert(File.exist?(filename2)) + assert(File.exist?(filename3)) + ensure + [filename1, filename2, filename3].each do |filename| + File.unlink(filename) if File.exist?(filename) + end + end + end +end + + +class TestLoggerApplication < Test::Unit::TestCase + def setup + @app = Logger::Application.new('appname') + @filename = __FILE__ + ".#{$$}" + end + + def teardown + unless $DEBUG + File.unlink(@filename) if File.exist?(@filename) + end + end + + def test_initialize + app = Logger::Application.new('appname') + assert_equal('appname', app.appname) + end + + def test_start + @app.set_log(@filename) + @app.level = Logger::UNKNOWN + @app.start # logs FATAL log + assert_equal(1, File.read(@filename).split(/\n/).size) + end + + def test_logger + @app.level = Logger::WARN + @app.set_log(@filename) + assert_equal(Logger::WARN, @app.logger.level) + @app.logger = logger = Logger.new(STDOUT) + assert_equal(logger, @app.logger) + assert_equal(Logger::WARN, @app.logger.level) + @app.log = @filename + assert(logger != @app.logger) + assert_equal(Logger::WARN, @app.logger.level) + end end diff --git a/test/matrix/test_matrix.rb b/test/matrix/test_matrix.rb index 0850117b86f00b..8e0848de019f31 100644 --- a/test/matrix/test_matrix.rb +++ b/test/matrix/test_matrix.rb @@ -46,4 +46,102 @@ def test_hash assert_equal @m1.hash, @m2.hash assert_equal @m1.hash, @m3.hash end + + def test_rank + [ + [[0]], + [[0], [0]], + [[0, 0], [0, 0]], + [[0, 0], [0, 0], [0, 0]], + [[0, 0, 0]], + [[0, 0, 0], [0, 0, 0]], + [[0, 0, 0], [0, 0, 0], [0, 0, 0]], + [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]], + ].each do |rows| + assert_equal 0, Matrix[*rows].rank + end + + [ + [[1], [0]], + [[1, 0], [0, 0]], + [[1, 0], [1, 0]], + [[0, 0], [1, 0]], + [[1, 0], [0, 0], [0, 0]], + [[0, 0], [1, 0], [0, 0]], + [[0, 0], [0, 0], [1, 0]], + [[1, 0], [1, 0], [0, 0]], + [[0, 0], [1, 0], [1, 0]], + [[1, 0], [1, 0], [1, 0]], + [[1, 0, 0]], + [[1, 0, 0], [0, 0, 0]], + [[0, 0, 0], [1, 0, 0]], + [[1, 0, 0], [1, 0, 0]], + [[1, 0, 0], [1, 0, 0]], + [[1, 0, 0], [0, 0, 0], [0, 0, 0]], + [[0, 0, 0], [1, 0, 0], [0, 0, 0]], + [[0, 0, 0], [0, 0, 0], [1, 0, 0]], + [[1, 0, 0], [1, 0, 0], [0, 0, 0]], + [[0, 0, 0], [1, 0, 0], [1, 0, 0]], + [[1, 0, 0], [0, 0, 0], [1, 0, 0]], + [[1, 0, 0], [1, 0, 0], [1, 0, 0]], + [[1, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]], + [[1, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]], + [[1, 0, 0], [1, 0, 0], [0, 0, 0], [0, 0, 0]], + [[1, 0, 0], [0, 0, 0], [1, 0, 0], [0, 0, 0]], + [[1, 0, 0], [0, 0, 0], [0, 0, 0], [1, 0, 0]], + [[1, 0, 0], [1, 0, 0], [1, 0, 0], [0, 0, 0]], + [[1, 0, 0], [0, 0, 0], [1, 0, 0], [1, 0, 0]], + [[1, 0, 0], [1, 0, 0], [0, 0, 0], [1, 0, 0]], + [[1, 0, 0], [1, 0, 0], [1, 0, 0], [1, 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]], + ].each do |rows| + matrix = Matrix[*rows] + assert_equal 1, matrix.rank + assert_equal 1, matrix.transpose.rank + end + + [ + [[1, 0], [0, 1]], + [[1, 0], [0, 1], [0, 0]], + [[1, 0], [0, 1], [0, 1]], + [[1, 0], [0, 1], [1, 1]], + [[1, 0, 0], [0, 1, 0]], + [[1, 0, 0], [0, 0, 1]], + [[1, 0, 0], [0, 1, 0], [0, 0, 0]], + [[1, 0, 0], [0, 0, 1], [0, 0, 0]], + + [[1, 0, 0], [0, 0, 0], [0, 1, 0]], + [[1, 0, 0], [0, 0, 0], [0, 0, 1]], + + [[1, 0], [1, 1]], + [[1, 2], [1, 1]], + [[1, 2], [0, 1], [1, 1]], + ].each do |rows| + m = Matrix[*rows] + assert_equal 2, m.rank + assert_equal 2, m.transpose.rank + end + + [ + [[1, 0, 0], [0, 1, 0], [0, 0, 1]], + [[1, 1, 0], [0, 1, 1], [1, 0, 1]], + [[1, 1, 0], [0, 1, 1], [1, 0, 1]], + [[1, 1, 0], [0, 1, 1], [1, 0, 1], [0, 0, 0]], + [[1, 1, 0], [0, 1, 1], [1, 0, 1], [1, 1, 1]], + [[1, 1, 1], [1, 1, 2], [1, 3, 1], [4, 1, 1]], + ].each do |rows| + m = Matrix[*rows] + assert_equal 3, m.rank + assert_equal 3, m.transpose.rank + end + end end diff --git a/test/mkmf/base.rb b/test/mkmf/base.rb index 0a75744721ed64..1b5b89e17c2a25 100644 --- a/test/mkmf/base.rb +++ b/test/mkmf/base.rb @@ -5,8 +5,7 @@ $extout = '$(topdir)/'+RbConfig::CONFIG["EXTOUT"] RbConfig::CONFIG['topdir'] = CONFIG['topdir'] = File.expand_path(CONFIG['topdir']) RbConfig::CONFIG["extout"] = CONFIG["extout"] = $extout -RbConfig::CONFIG["cppflags"] << " -I." -CONFIG["cppflags"] << " -I." +$INCFLAGS << " -I." $extout_prefix = "$(extout)$(target_prefix)/" class TestMkmf < Test::Unit::TestCase diff --git a/test/monitor/test_monitor.rb b/test/monitor/test_monitor.rb index 064471eecb9535..973b3c2744f8e5 100644 --- a/test/monitor/test_monitor.rb +++ b/test/monitor/test_monitor.rb @@ -54,6 +54,32 @@ def test_synchronize assert_equal((1..10).to_a, ary) end + def test_killed_thread_in_synchronize + ary = [] + queue = Queue.new + t1 = Thread.start { + queue.pop + @monitor.synchronize { + ary << :t1 + } + } + t2 = Thread.start { + queue.pop + @monitor.synchronize { + ary << :t2 + } + } + @monitor.synchronize do + queue.enq(nil) + queue.enq(nil) + assert_equal([], ary) + t1.kill + t2.kill + ary << :main + end + assert_equal([:main], ary) + end + def test_try_enter queue1 = Queue.new queue2 = Queue.new @@ -97,6 +123,7 @@ def test_cond end def _test_timedwait + cond = @monitor.new_cond b = "foo" queue2 = Queue.new Thread.start do diff --git a/test/net/http/test_httpresponse.rb b/test/net/http/test_httpresponse.rb new file mode 100644 index 00000000000000..ab6fdd0ea95cf5 --- /dev/null +++ b/test/net/http/test_httpresponse.rb @@ -0,0 +1,40 @@ +require 'net/http' +require 'test/unit' +require 'stringio' + +class HTTPResponseTest < Test::Unit::TestCase + def test_singleline_header + io = dummy_io(< dr, + :ServerType => Thread, + :Logger => WEBrick::Log.new(NullLog), + :AccessLog => [[NullLog, ""]], + :BindAddress => '127.0.0.1', + :Port => 0}) + _, port, _, host = srv.listeners[0].addr + begin + th = srv.start + yield srv, dr, "http://#{host}:#{port}" + ensure + srv.shutdown + end + } + end + + def with_env(h) + begin + old = {} + h.each_key {|k| old[k] = ENV[k] } + h.each {|k, v| ENV[k] = v } + yield + ensure + h.each_key {|k| ENV[k] = old[k] } + end + end + + def setup + @proxies = %w[http_proxy ftp_proxy no_proxy] + @old_proxies = @proxies.map {|k| ENV[k] } + @proxies.each {|k| ENV[k] = nil } + end + + def teardown + @proxies.each_with_index {|k, i| ENV[k] = @old_proxies[i] } + end + + def test_200 + with_http {|srv, dr, url| + open("#{dr}/foo200", "w") {|f| f << "foo200" } + open("#{url}/foo200") {|f| + assert_equal("200", f.status[0]) + assert_equal("foo200", f.read) + } + } + end + + def test_200big + with_http {|srv, dr, url| + content = "foo200big"*10240 + open("#{dr}/foo200big", "w") {|f| f << content } + open("#{url}/foo200big") {|f| + assert_equal("200", f.status[0]) + assert_equal(content, f.read) + } + } + end + + def test_404 + with_http {|srv, dr, url| + exc = assert_raise(OpenURI::HTTPError) { open("#{url}/not-exist") {} } + assert_equal("404", exc.io.status[0]) + } + end + + def test_open_uri + with_http {|srv, dr, url| + open("#{dr}/foo_ou", "w") {|f| f << "foo_ou" } + u = URI("#{url}/foo_ou") + open(u) {|f| + assert_equal("200", f.status[0]) + assert_equal("foo_ou", f.read) + } + } + end + + def test_open_too_many_arg + assert_raise(ArgumentError) { open("http://192.0.2.1/tma", "r", 0666, :extra) {} } + end + + def test_read_timeout + TCPServer.open("127.0.0.1", 0) {|serv| + port = serv.addr[1] + th = Thread.new { + sock = serv.accept + begin + req = sock.gets("\r\n\r\n") + assert_match(%r{\AGET /foo/bar }, req) + sock.print "HTTP/1.0 200 OK\r\n" + sock.print "Content-Length: 4\r\n\r\n" + sleep 1 + sock.print "ab\r\n" + ensure + sock.close + end + } + begin + assert_raise(Timeout::Error) { URI("http://127.0.0.1:#{port}/foo/bar").read(:read_timeout=>0.01) } + ensure + Thread.kill(th) + th.join + end + } + end + + def test_invalid_option + assert_raise(ArgumentError) { open("http://127.0.0.1/", :invalid_option=>true) {} } + end + + def test_mode + with_http {|srv, dr, url| + open("#{dr}/mode", "w") {|f| f << "mode" } + open("#{url}/mode", "r") {|f| + assert_equal("200", f.status[0]) + assert_equal("mode", f.read) + } + open("#{url}/mode", "r", 0600) {|f| + assert_equal("200", f.status[0]) + assert_equal("mode", f.read) + } + assert_raise(ArgumentError) { open("#{url}/mode", "a") {} } + open("#{url}/mode", "r:us-ascii") {|f| + assert_equal(Encoding::US_ASCII, f.read.encoding) + } + open("#{url}/mode", "r:utf-8") {|f| + assert_equal(Encoding::UTF_8, f.read.encoding) + } + assert_raise(ArgumentError) { open("#{url}/mode", "r:invalid-encoding") {} } + } + end + + def test_without_block + with_http {|srv, dr, url| + open("#{dr}/without_block", "w") {|g| g << "without_block" } + begin + f = open("#{url}/without_block") + assert_equal("200", f.status[0]) + assert_equal("without_block", f.read) + ensure + f.close + end + } + end + + def test_header + myheader1 = 'barrrr' + myheader2 = nil + with_http {|srv, dr, url| + srv.mount_proc("/h/") {|req, res| myheader2 = req['myheader']; res.body = "foo" } + open("#{url}/h/", 'MyHeader'=>myheader1) {|f| + assert_equal("foo", f.read) + assert_equal(myheader1, myheader2) + } + } + end + + def test_multi_proxy_opt + assert_raise(ArgumentError) { + open("http://127.0.0.1/", :proxy_http_basic_authentication=>true, :proxy=>true) {} + } + end + + def test_non_http_proxy + assert_raise(RuntimeError) { + open("http://127.0.0.1/", :proxy=>URI("ftp://127.0.0.1/")) {} + } + end + + def test_proxy + with_http {|srv, dr, url| + log = '' + proxy = WEBrick::HTTPProxyServer.new({ + :ServerType => Thread, + :Logger => WEBrick::Log.new(NullLog), + :AccessLog => [[NullLog, ""]], + :ProxyAuthProc => lambda {|req, res| + log << req.request_line + }, + :BindAddress => '127.0.0.1', + :Port => 0}) + _, proxy_port, _, proxy_host = proxy.listeners[0].addr + proxy_url = "http://#{proxy_host}:#{proxy_port}/" + begin + th = proxy.start + open("#{dr}/proxy", "w") {|f| f << "proxy" } + open("#{url}/proxy", :proxy=>proxy_url) {|f| + assert_equal("200", f.status[0]) + assert_equal("proxy", f.read) + } + assert_match(/#{Regexp.quote url}/, log); log.clear + open("#{url}/proxy", :proxy=>URI(proxy_url)) {|f| + assert_equal("200", f.status[0]) + assert_equal("proxy", f.read) + } + assert_match(/#{Regexp.quote url}/, log); log.clear + open("#{url}/proxy", :proxy=>nil) {|f| + assert_equal("200", f.status[0]) + assert_equal("proxy", f.read) + } + assert_equal("", log); log.clear + assert_raise(ArgumentError) { + open("#{url}/proxy", :proxy=>:invalid) {} + } + assert_equal("", log); log.clear + with_env("http_proxy"=>proxy_url) { + # should not use proxy for 127.0.0.0/8. + open("#{url}/proxy") {|f| + assert_equal("200", f.status[0]) + assert_equal("proxy", f.read) + } + } + assert_equal("", log); log.clear + ensure + proxy.shutdown + end + } + end + + def test_proxy_http_basic_authentication + with_http {|srv, dr, url| + log = '' + proxy = WEBrick::HTTPProxyServer.new({ + :ServerType => Thread, + :Logger => WEBrick::Log.new(NullLog), + :AccessLog => [[NullLog, ""]], + :ProxyAuthProc => lambda {|req, res| + log << req.request_line + if req["Proxy-Authorization"] != "Basic #{['user:pass'].pack('m').chomp}" + raise WEBrick::HTTPStatus::ProxyAuthenticationRequired + end + }, + :BindAddress => '127.0.0.1', + :Port => 0}) + _, proxy_port, _, proxy_host = proxy.listeners[0].addr + proxy_url = "http://#{proxy_host}:#{proxy_port}/" + begin + th = proxy.start + open("#{dr}/proxy", "w") {|f| f << "proxy" } + exc = assert_raise(OpenURI::HTTPError) { open("#{url}/proxy", :proxy=>proxy_url) {} } + assert_equal("407", exc.io.status[0]) + assert_match(/#{Regexp.quote url}/, log); log.clear + open("#{url}/proxy", + :proxy_http_basic_authentication=>[proxy_url, "user", "pass"]) {|f| + assert_equal("200", f.status[0]) + assert_equal("proxy", f.read) + } + assert_match(/#{Regexp.quote url}/, log); log.clear + assert_raise(ArgumentError) { + open("#{url}/proxy", + :proxy_http_basic_authentication=>[true, "user", "pass"]) {} + } + assert_equal("", log); log.clear + ensure + proxy.shutdown + end + } + end + + def test_redirect + with_http {|srv, dr, url| + srv.mount_proc("/r1/") {|req, res| res.status = 301; res["location"] = "#{url}/r2"; res.body = "r1" } + srv.mount_proc("/r2/") {|req, res| res.body = "r2" } + srv.mount_proc("/to-file/") {|req, res| res.status = 301; res["location"] = "file:///foo" } + open("#{url}/r1/") {|f| + assert_equal("#{url}/r2", f.base_uri.to_s) + assert_equal("r2", f.read) + } + assert_raise(OpenURI::HTTPRedirect) { open("#{url}/r1/", :redirect=>false) {} } + assert_raise(RuntimeError) { open("#{url}/to-file/") {} } + } + end + + def test_redirect_loop + with_http {|srv, dr, url| + srv.mount_proc("/r1/") {|req, res| res.status = 301; res["location"] = "#{url}/r2"; res.body = "r1" } + srv.mount_proc("/r2/") {|req, res| res.status = 301; res["location"] = "#{url}/r1"; res.body = "r2" } + assert_raise(RuntimeError) { open("#{url}/r1/") {} } + } + end + + def test_redirect_relative + TCPServer.open("127.0.0.1", 0) {|serv| + port = serv.addr[1] + th = Thread.new { + sock = serv.accept + begin + req = sock.gets("\r\n\r\n") + assert_match(%r{\AGET /foo/bar }, req) + sock.print "HTTP/1.0 302 Found\r\n" + sock.print "Location: ../baz\r\n\r\n" + ensure + sock.close + end + sock = serv.accept + begin + req = sock.gets("\r\n\r\n") + assert_match(%r{\AGET /baz }, req) + sock.print "HTTP/1.0 200 OK\r\n" + sock.print "Content-Length: 4\r\n\r\n" + sock.print "ab\r\n" + ensure + sock.close + end + } + begin + content = URI("http://127.0.0.1:#{port}/foo/bar").read + assert_equal("ab\r\n", content) + ensure + Thread.kill(th) + th.join + end + } + end + + def test_redirect_invalid + TCPServer.open("127.0.0.1", 0) {|serv| + port = serv.addr[1] + th = Thread.new { + sock = serv.accept + begin + req = sock.gets("\r\n\r\n") + assert_match(%r{\AGET /foo/bar }, req) + sock.print "HTTP/1.0 302 Found\r\n" + sock.print "Location: ::\r\n\r\n" + ensure + sock.close + end + } + begin + assert_raise(OpenURI::HTTPError) { + URI("http://127.0.0.1:#{port}/foo/bar").read + } + ensure + Thread.kill(th) + th.join + end + } + end + + def test_redirect_auth + with_http {|srv, dr, url| + srv.mount_proc("/r1/") {|req, res| res.status = 301; res["location"] = "#{url}/r2" } + srv.mount_proc("/r2/") {|req, res| + if req["Authorization"] != "Basic #{['user:pass'].pack('m').chomp}" + raise WEBrick::HTTPStatus::Unauthorized + end + res.body = "r2" + } + exc = assert_raise(OpenURI::HTTPError) { open("#{url}/r2/") {} } + assert_equal("401", exc.io.status[0]) + open("#{url}/r2/", :http_basic_authentication=>['user', 'pass']) {|f| + assert_equal("r2", f.read) + } + exc = assert_raise(OpenURI::HTTPError) { open("#{url}/r1/", :http_basic_authentication=>['user', 'pass']) {} } + assert_equal("401", exc.io.status[0]) + } + end + + def test_userinfo + if "1.9.0" <= RUBY_VERSION + assert_raise(ArgumentError) { open("http://user:pass@127.0.0.1/") {} } + end + end + + def test_progress + with_http {|srv, dr, url| + content = "a" * 10000 + srv.mount_proc("/data/") {|req, res| res.body = content } + length = [] + progress = [] + open("#{url}/data/", + :content_length_proc => lambda {|n| length << n }, + :progress_proc => lambda {|n| progress << n } + ) {|f| + assert_equal(1, length.length) + assert_equal(content.length, length[0]) + assert_equal(content.length, progress.inject(&:+)) + assert_equal(content, f.read) + } + } + end + + def test_progress_chunked + with_http {|srv, dr, url| + content = "a" * 10000 + srv.mount_proc("/data/") {|req, res| res.body = content; res.chunked = true } + length = [] + progress = [] + open("#{url}/data/", + :content_length_proc => lambda {|n| length << n }, + :progress_proc => lambda {|n| progress << n } + ) {|f| + assert_equal(1, length.length) + assert_equal(nil, length[0]) + assert_equal(content.length, progress.inject(&:+)) + assert_equal(content, f.read) + } + } + end + + def test_uri_read + with_http {|srv, dr, url| + open("#{dr}/uriread", "w") {|f| f << "uriread" } + data = URI("#{url}/uriread").read + assert_equal("200", data.status[0]) + assert_equal("uriread", data) + } + end + + def test_encoding + with_http {|srv, dr, url| + content_u8 = "\u3042" + content_ej = "\xa2\xa4".force_encoding("euc-jp") + srv.mount_proc("/u8/") {|req, res| res.body = content_u8; res['content-type'] = 'text/plain; charset=utf-8' } + srv.mount_proc("/ej/") {|req, res| res.body = content_ej; res['content-type'] = 'TEXT/PLAIN; charset=EUC-JP' } + srv.mount_proc("/nc/") {|req, res| res.body = "aa"; res['content-type'] = 'Text/Plain' } + open("#{url}/u8/") {|f| + assert_equal(content_u8, f.read) + assert_equal("text/plain", f.content_type) + assert_equal("utf-8", f.charset) + } + open("#{url}/ej/") {|f| + assert_equal(content_ej, f.read) + assert_equal("text/plain", f.content_type) + assert_equal("euc-jp", f.charset) + } + open("#{url}/nc/") {|f| + assert_equal("aa", f.read) + assert_equal("text/plain", f.content_type) + assert_equal("iso-8859-1", f.charset) + assert_equal("unknown", f.charset { "unknown" }) + } + } + end + + def test_quoted_attvalue + with_http {|srv, dr, url| + content_u8 = "\u3042" + srv.mount_proc("/qu8/") {|req, res| res.body = content_u8; res['content-type'] = 'text/plain; charset="utf\-8"' } + open("#{url}/qu8/") {|f| + assert_equal(content_u8, f.read) + assert_equal("text/plain", f.content_type) + assert_equal("utf-8", f.charset) + } + } + end + + def test_last_modified + with_http {|srv, dr, url| + srv.mount_proc("/data/") {|req, res| res.body = "foo"; res['last-modified'] = 'Fri, 07 Aug 2009 06:05:04 GMT' } + open("#{url}/data/") {|f| + assert_equal("foo", f.read) + assert_equal(Time.utc(2009,8,7,6,5,4), f.last_modified) + } + } + end + + def test_content_encoding + with_http {|srv, dr, url| + content = "abc" * 10000 + Zlib::GzipWriter.wrap(StringIO.new(content_gz="".force_encoding("ascii-8bit"))) {|z| z.write content } + srv.mount_proc("/data/") {|req, res| res.body = content_gz; res['content-encoding'] = 'gzip' } + srv.mount_proc("/data2/") {|req, res| res.body = content_gz; res['content-encoding'] = 'gzip'; res.chunked = true } + srv.mount_proc("/noce/") {|req, res| res.body = content_gz } + open("#{url}/data/") {|f| + assert_equal ['gzip'], f.content_encoding + assert_equal(content_gz, f.read.force_encoding("ascii-8bit")) + } + open("#{url}/data2/") {|f| + assert_equal ['gzip'], f.content_encoding + assert_equal(content_gz, f.read.force_encoding("ascii-8bit")) + } + open("#{url}/noce/") {|f| + assert_equal [], f.content_encoding + assert_equal(content_gz, f.read.force_encoding("ascii-8bit")) + } + } + end + + # 192.0.2.0/24 is TEST-NET. [RFC3330] + + def test_find_proxy + assert_nil(URI("http://192.0.2.1/").find_proxy) + assert_nil(URI("ftp://192.0.2.1/").find_proxy) + with_env('http_proxy'=>'http://127.0.0.1:8080') { + assert_equal(URI('http://127.0.0.1:8080'), URI("http://192.0.2.1/").find_proxy) + assert_nil(URI("ftp://192.0.2.1/").find_proxy) + } + with_env('ftp_proxy'=>'http://127.0.0.1:8080') { + assert_nil(URI("http://192.0.2.1/").find_proxy) + assert_equal(URI('http://127.0.0.1:8080'), URI("ftp://192.0.2.1/").find_proxy) + } + with_env('REQUEST_METHOD'=>'GET') { + assert_nil(URI("http://192.0.2.1/").find_proxy) + } + with_env('CGI_HTTP_PROXY'=>'http://127.0.0.1:8080', 'REQUEST_METHOD'=>'GET') { + assert_equal(URI('http://127.0.0.1:8080'), URI("http://192.0.2.1/").find_proxy) + } + with_env('http_proxy'=>'http://127.0.0.1:8080', 'no_proxy'=>'192.0.2.2') { + assert_equal(URI('http://127.0.0.1:8080'), URI("http://192.0.2.1/").find_proxy) + assert_nil(URI("http://192.0.2.2/").find_proxy) + } + end + + def test_find_proxy_case_sensitive_env + with_env('http_proxy'=>'http://127.0.0.1:8080', 'REQUEST_METHOD'=>'GET') { + assert_equal(URI('http://127.0.0.1:8080'), URI("http://192.0.2.1/").find_proxy) + } + with_env('HTTP_PROXY'=>'http://127.0.0.1:8081', 'REQUEST_METHOD'=>'GET') { + assert_nil(nil, URI("http://192.0.2.1/").find_proxy) + } + with_env('http_proxy'=>'http://127.0.0.1:8080', 'HTTP_PROXY'=>'http://127.0.0.1:8081', 'REQUEST_METHOD'=>'GET') { + assert_equal(URI('http://127.0.0.1:8080'), URI("http://192.0.2.1/").find_proxy) + } + end + + def test_ftp_invalid_request + assert_raise(ArgumentError) { URI("ftp://127.0.0.1/").read } + assert_raise(ArgumentError) { URI("ftp://127.0.0.1/a%0Db").read } + assert_raise(ArgumentError) { URI("ftp://127.0.0.1/a%0Ab").read } + assert_raise(ArgumentError) { URI("ftp://127.0.0.1/a%0Db/f").read } + assert_raise(ArgumentError) { URI("ftp://127.0.0.1/a%0Ab/f").read } + assert_raise(URI::InvalidComponentError) { URI("ftp://127.0.0.1/d/f;type=x") } + end + + def test_ftp + TCPServer.open("127.0.0.1", 0) {|serv| + _, port, _, host = serv.addr + th = Thread.new { + s = serv.accept + begin + s.print "220 Test FTP Server\r\n" + assert_equal("USER anonymous\r\n", s.gets); s.print "331 name ok\r\n" + assert_match(/\APASS .*\r\n\z/, s.gets); s.print "230 logged in\r\n" + assert_equal("TYPE I\r\n", s.gets); s.print "200 type set to I\r\n" + assert_equal("CWD foo\r\n", s.gets); s.print "250 CWD successful\r\n" + assert_equal("PASV\r\n", s.gets) + TCPServer.open("127.0.0.1", 0) {|data_serv| + _, data_serv_port, _, data_serv_host = data_serv.addr + hi = data_serv_port >> 8 + lo = data_serv_port & 0xff + s.print "227 Entering Passive Mode (127,0,0,1,#{hi},#{lo}).\r\n" + assert_equal("RETR bar\r\n", s.gets); s.print "150 file okay\r\n" + data_sock = data_serv.accept + begin + data_sock << "content" + ensure + data_sock.close + end + s.print "226 transfer complete\r\n" + assert_nil(s.gets) + } + ensure + s.close if s + end + } + begin + content = URI("ftp://#{host}:#{port}/foo/bar").read + assert_equal("content", content) + ensure + Thread.kill(th) + th.join + end + } + end + + def test_ftp_active + TCPServer.open("127.0.0.1", 0) {|serv| + _, port, _, host = serv.addr + th = Thread.new { + s = serv.accept + begin + content = "content" + s.print "220 Test FTP Server\r\n" + assert_equal("USER anonymous\r\n", s.gets); s.print "331 name ok\r\n" + assert_match(/\APASS .*\r\n\z/, s.gets); s.print "230 logged in\r\n" + assert_equal("TYPE I\r\n", s.gets); s.print "200 type set to I\r\n" + assert_equal("CWD foo\r\n", s.gets); s.print "250 CWD successful\r\n" + assert(m = /\APORT 127,0,0,1,(\d+),(\d+)\r\n\z/.match(s.gets)) + active_port = m[1].to_i << 8 | m[2].to_i + TCPSocket.open("127.0.0.1", active_port) {|data_sock| + s.print "200 data connection opened\r\n" + assert_equal("RETR bar\r\n", s.gets); s.print "150 file okay\r\n" + begin + data_sock << content + ensure + data_sock.close + end + s.print "226 transfer complete\r\n" + assert_nil(s.gets) + } + ensure + s.close if s + end + } + begin + content = URI("ftp://#{host}:#{port}/foo/bar").read(:ftp_active_mode=>true) + assert_equal("content", content) + ensure + Thread.kill(th) + th.join + end + } + end + + def test_ftp_ascii + TCPServer.open("127.0.0.1", 0) {|serv| + _, port, _, host = serv.addr + th = Thread.new { + s = serv.accept + begin + content = "content" + s.print "220 Test FTP Server\r\n" + assert_equal("USER anonymous\r\n", s.gets); s.print "331 name ok\r\n" + assert_match(/\APASS .*\r\n\z/, s.gets); s.print "230 logged in\r\n" + assert_equal("TYPE I\r\n", s.gets); s.print "200 type set to I\r\n" + assert_equal("CWD /foo\r\n", s.gets); s.print "250 CWD successful\r\n" + assert_equal("TYPE A\r\n", s.gets); s.print "200 type set to A\r\n" + assert_equal("SIZE bar\r\n", s.gets); s.print "213 #{content.bytesize}\r\n" + assert_equal("PASV\r\n", s.gets) + TCPServer.open("127.0.0.1", 0) {|data_serv| + _, data_serv_port, _, data_serv_host = data_serv.addr + hi = data_serv_port >> 8 + lo = data_serv_port & 0xff + s.print "227 Entering Passive Mode (127,0,0,1,#{hi},#{lo}).\r\n" + assert_equal("RETR bar\r\n", s.gets); s.print "150 file okay\r\n" + data_sock = data_serv.accept + begin + data_sock << content + ensure + data_sock.close + end + s.print "226 transfer complete\r\n" + assert_nil(s.gets) + } + ensure + s.close if s + end + } + begin + length = [] + progress = [] + content = URI("ftp://#{host}:#{port}/%2Ffoo/b%61r;type=a").read( + :content_length_proc => lambda {|n| length << n }, + :progress_proc => lambda {|n| progress << n }) + assert_equal("content", content) + assert_equal([7], length) + assert_equal(7, progress.inject(&:+)) + ensure + Thread.kill(th) + th.join + end + } + end + + def test_ftp_over_http_proxy + TCPServer.open("127.0.0.1", 0) {|proxy_serv| + proxy_port = proxy_serv.addr[1] + th = Thread.new { + proxy_sock = proxy_serv.accept + begin + req = proxy_sock.gets("\r\n\r\n") + assert_match(%r{\AGET ftp://192.0.2.1/foo/bar }, req) + proxy_sock.print "HTTP/1.0 200 OK\r\n" + proxy_sock.print "Content-Length: 4\r\n\r\n" + proxy_sock.print "ab\r\n" + ensure + proxy_sock.close + end + } + begin + with_env('ftp_proxy'=>"http://127.0.0.1:#{proxy_port}") { + content = URI("ftp://192.0.2.1/foo/bar").read + assert_equal("ab\r\n", content) + } + ensure + Thread.kill(th) + th.join + end + } + end + + def test_ftp_over_http_proxy_auth + TCPServer.open("127.0.0.1", 0) {|proxy_serv| + proxy_port = proxy_serv.addr[1] + th = Thread.new { + proxy_sock = proxy_serv.accept + begin + req = proxy_sock.gets("\r\n\r\n") + assert_match(%r{\AGET ftp://192.0.2.1/foo/bar }, req) + assert_match(%r{Proxy-Authorization: Basic #{['proxy-user:proxy-password'].pack('m').chomp}\r\n}, req) + proxy_sock.print "HTTP/1.0 200 OK\r\n" + proxy_sock.print "Content-Length: 4\r\n\r\n" + proxy_sock.print "ab\r\n" + ensure + proxy_sock.close + end + } + begin + content = URI("ftp://192.0.2.1/foo/bar").read( + :proxy_http_basic_authentication => ["http://127.0.0.1:#{proxy_port}", "proxy-user", "proxy-password"]) + assert_equal("ab\r\n", content) + ensure + Thread.kill(th) + th.join + end + } + end + +end + diff --git a/test/open-uri/test_ssl.rb b/test/open-uri/test_ssl.rb new file mode 100644 index 00000000000000..048227082d0b1e --- /dev/null +++ b/test/open-uri/test_ssl.rb @@ -0,0 +1,314 @@ +require 'test/unit' +require 'open-uri' +require 'openssl' +require 'stringio' +require 'webrick' +require 'webrick/https' +require 'webrick/httpproxy' + +class TestOpenURISSL < Test::Unit::TestCase + + NullLog = Object.new + def NullLog.<<(arg) + end + + def with_https + Dir.mktmpdir {|dr| + srv = WEBrick::HTTPServer.new({ + :DocumentRoot => dr, + :ServerType => Thread, + :Logger => WEBrick::Log.new(NullLog), + :AccessLog => [[NullLog, ""]], + :SSLEnable => true, + :SSLCertificate => OpenSSL::X509::Certificate.new(SERVER_CERT), + :SSLPrivateKey => OpenSSL::PKey::RSA.new(SERVER_KEY), + :BindAddress => '127.0.0.1', + :Port => 0}) + _, port, _, host = srv.listeners[0].addr + begin + th = srv.start + yield srv, dr, "https://#{host}:#{port}" + ensure + srv.shutdown + end + } + end + + def setup + @proxies = %w[http_proxy https_proxy ftp_proxy no_proxy] + @old_proxies = @proxies.map {|k| ENV[k] } + @proxies.each {|k| ENV[k] = nil } + end + + def teardown + @proxies.each_with_index {|k, i| ENV[k] = @old_proxies[i] } + end + + def test_validation + with_https {|srv, dr, url| + cacert_filename = "#{dr}/cacert.pem" + open(cacert_filename, "w") {|f| f << CA_CERT } + open("#{dr}/data", "w") {|f| f << "ddd" } + open("#{url}/data", :ssl_ca_cert => cacert_filename) {|f| + assert_equal("200", f.status[0]) + assert_equal("ddd", f.read) + } + open("#{url}/data", :ssl_verify_mode => OpenSSL::SSL::VERIFY_NONE) {|f| + assert_equal("200", f.status[0]) + assert_equal("ddd", f.read) + } + assert_raise(OpenSSL::SSL::SSLError) { open("#{url}/data") {} } + } + end + + def test_proxy + with_https {|srv, dr, url| + cacert_filename = "#{dr}/cacert.pem" + open(cacert_filename, "w") {|f| f << CA_CERT } + cacert_directory = "#{dr}/certs" + Dir.mkdir cacert_directory + hashed_name = "%08x.0" % OpenSSL::X509::Certificate.new(CA_CERT).subject.hash + open("#{cacert_directory}/#{hashed_name}", "w") {|f| f << CA_CERT } + prxy = WEBrick::HTTPProxyServer.new({ + :ServerType => Thread, + :Logger => WEBrick::Log.new(NullLog), + :AccessLog => [[sio=StringIO.new, WEBrick::AccessLog::COMMON_LOG_FORMAT]], + :BindAddress => '127.0.0.1', + :Port => 0}) + _, p_port, _, p_host = prxy.listeners[0].addr + begin + th = prxy.start + open("#{dr}/proxy", "w") {|f| f << "proxy" } + open("#{url}/proxy", :proxy=>"http://#{p_host}:#{p_port}/", :ssl_ca_cert => cacert_filename) {|f| + assert_equal("200", f.status[0]) + assert_equal("proxy", f.read) + } + assert_match(%r[CONNECT #{url.sub(%r{\Ahttps://}, '')} ], sio.string) + sio.truncate(0); sio.rewind + open("#{url}/proxy", :proxy=>"http://#{p_host}:#{p_port}/", :ssl_ca_cert => cacert_directory) {|f| + assert_equal("200", f.status[0]) + assert_equal("proxy", f.read) + } + assert_match(%r[CONNECT #{url.sub(%r{\Ahttps://}, '')} ], sio.string) + sio.truncate(0); sio.rewind + ensure + prxy.shutdown + end + } + end + +end + +# mkdir demoCA demoCA/private demoCA/newcerts +# touch demoCA/index.txt +# echo 00 > demoCA/serial +# openssl req -new -keyout demoCA/private/cakey.pem -out demoCA/careq.pem +# openssl ca -out demoCA/cacert.pem -startdate 090101000000Z -enddate 491231235959Z -batch -keyfile demoCA/private/cakey.pem -selfsign -infiles demoCA/careq.pem + +# cp /etc/ssl/openssl.cnf openssl-server.cnf # Debian +# vi openssl-server.cnf # enable "nsCertType = server" +# mkdir server +# openssl genrsa -des3 -out server/server.key 1024 +# openssl rsa -in server/server.key -out server/servernopass.key +# openssl req -new -days 365 -key server/servernopass.key -out server/csr.pem +# openssl ca -config openssl-server.cnf -startdate 090101000000Z -enddate 491231235959Z -in server/csr.pem -keyfile demoCA/private/cakey.pem -cert demoCA/cacert.pem -out server/cert.pem + +# demoCA/cacert.pem => TestOpenURISSL::CA_CERT +# server/cert.pem => TestOpenURISSL::SERVER_CERT +# server/servernopass.key => TestOpenURISSL::SERVER_KEY + +TestOpenURISSL::CA_CERT = <<'End' +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 0 (0x0) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=JP, ST=Tokyo, O=RubyTest, CN=Ruby Test CA + Validity + Not Before: Jan 1 00:00:00 2009 GMT + Not After : Dec 31 23:59:59 2049 GMT + Subject: C=JP, ST=Tokyo, O=RubyTest, CN=Ruby Test CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (1024 bit) + Modulus (1024 bit): + 00:9f:58:19:39:bc:ea:0c:b8:c3:5d:12:a7:d8:20: + 6c:53:ac:91:34:c8:b4:db:3f:56:f6:75:b6:6c:23: + 80:23:6a:5f:b3:f6:9a:3e:00:b4:16:19:1c:9c:2c: + 8d:e8:53:d5:0b:f1:52:3f:7b:60:93:86:ae:89:ab: + 20:82:9a:b6:72:14:3c:4d:a9:0b:6c:34:79:9e:d3: + 14:82:6d:c9:3b:90:d9:5e:68:6f:8c:b5:d8:09:f4: + 6f:3b:22:9f:5e:81:9c:37:df:cf:90:36:65:57:dc: + ad:31:ca:8b:48:92:a7:3c:1e:42:e9:1c:4e:1e:cb: + 36:c1:44:4e:ab:9a:b2:73:6d + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE + Netscape Comment: + OpenSSL Generated Certificate + X509v3 Subject Key Identifier: + 24:6F:03:A3:EE:06:51:75:B2:BA:FC:3A:38:59:BF:ED:87:CD:E8:7F + X509v3 Authority Key Identifier: + keyid:24:6F:03:A3:EE:06:51:75:B2:BA:FC:3A:38:59:BF:ED:87:CD:E8:7F + + Signature Algorithm: sha1WithRSAEncryption + 13:eb:db:ca:cd:90:f2:09:9e:d9:72:70:5e:42:5d:11:84:ce: + 00:1d:c4:2f:41:d2:3e:16:e5:d4:97:1f:43:a9:a7:9c:fa:60: + c4:35:96:f2:f6:0d:13:6d:0f:36:dd:59:03:08:ee:2e:a6:df: + 9e:d8:6d:ca:72:8f:02:c2:2b:53:7b:12:7f:55:81:6c:9e:7d: + e7:40:7e:f8:f5:75:0d:4b:a0:8d:ee:a4:d9:e8:5f:06:c9:86: + 66:71:70:6c:41:81:6a:dd:a4:4f:a3:c1:ac:70:d4:78:1b:23: + 30:2f:a5:ef:98:ee:d4:62:80:fd:bf:d4:7a:9b:8e:2d:18:e5: + 00:46 +-----BEGIN CERTIFICATE----- +MIICfzCCAeigAwIBAgIBADANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJKUDEO +MAwGA1UECBMFVG9reW8xETAPBgNVBAoTCFJ1YnlUZXN0MRUwEwYDVQQDEwxSdWJ5 +IFRlc3QgQ0EwHhcNMDkwMTAxMDAwMDAwWhcNNDkxMjMxMjM1OTU5WjBHMQswCQYD +VQQGEwJKUDEOMAwGA1UECBMFVG9reW8xETAPBgNVBAoTCFJ1YnlUZXN0MRUwEwYD +VQQDEwxSdWJ5IFRlc3QgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJ9Y +GTm86gy4w10Sp9ggbFOskTTItNs/VvZ1tmwjgCNqX7P2mj4AtBYZHJwsjehT1Qvx +Uj97YJOGromrIIKatnIUPE2pC2w0eZ7TFIJtyTuQ2V5ob4y12An0bzsin16BnDff +z5A2ZVfcrTHKi0iSpzweQukcTh7LNsFETquasnNtAgMBAAGjezB5MAkGA1UdEwQC +MAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRl +MB0GA1UdDgQWBBQkbwOj7gZRdbK6/Do4Wb/th83ofzAfBgNVHSMEGDAWgBQkbwOj +7gZRdbK6/Do4Wb/th83ofzANBgkqhkiG9w0BAQUFAAOBgQAT69vKzZDyCZ7ZcnBe +Ql0RhM4AHcQvQdI+FuXUlx9Dqaec+mDENZby9g0TbQ823VkDCO4upt+e2G3Kco8C +witTexJ/VYFsnn3nQH749XUNS6CN7qTZ6F8GyYZmcXBsQYFq3aRPo8GscNR4GyMw +L6XvmO7UYoD9v9R6m44tGOUARg== +-----END CERTIFICATE----- +End + +TestOpenURISSL::SERVER_CERT = <<'End' +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 1 (0x1) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=JP, ST=Tokyo, O=RubyTest, CN=Ruby Test CA + Validity + Not Before: Jan 1 00:00:00 2009 GMT + Not After : Dec 31 23:59:59 2049 GMT + Subject: C=JP, ST=Tokyo, O=RubyTest, CN=127.0.0.1 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (1024 bit) + Modulus (1024 bit): + 00:bb:bd:74:69:53:58:50:24:79:f2:eb:db:8b:97: + e4:69:a4:dd:48:0c:40:35:62:42:b3:35:8c:96:2a: + 62:76:98:b5:2a:e0:f8:78:33:b6:ff:f8:55:bf:44: + 69:21:d7:b5:0e:bd:8a:dd:31:1b:88:d5:b4:5e:7a: + 82:e0:ba:99:6c:04:76:e9:ff:e6:f8:f5:06:8e:7e: + a4:db:db:eb:43:44:12:a7:ca:ca:2b:aa:5f:83:10: + e2:9e:35:55:e8:e8:af:be:c8:7d:bb:c2:d4:aa:c1: + 1c:57:0b:c0:0c:3a:1d:6e:23:a9:03:26:7c:ea:8c: + f0:86:61:ce:f1:ff:42:c7:23 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE + Netscape Cert Type: + SSL Server + Netscape Comment: + OpenSSL Generated Certificate + X509v3 Subject Key Identifier: + 7F:17:5A:58:88:96:E1:1F:44:EA:FF:AD:C6:2E:90:E2:95:32:DD:F0 + X509v3 Authority Key Identifier: + keyid:24:6F:03:A3:EE:06:51:75:B2:BA:FC:3A:38:59:BF:ED:87:CD:E8:7F + + Signature Algorithm: sha1WithRSAEncryption + 9a:34:99:ea:76:a2:ed:f0:f7:a7:75:3b:81:fb:75:57:93:c1: + 27:b6:1e:7a:38:67:95:be:58:42:9a:0a:dd:2b:23:fb:85:42: + 80:34:bf:b9:0e:9c:5e:5a:dc:2d:25:8c:68:02:a2:c7:7f:c0: + eb:f3:e0:61:e2:05:e5:7e:c1:e0:33:1c:76:65:23:2c:25:08: + f6:5a:11:b9:d4:f7:e3:80:bb:b0:ce:76:1a:56:22:af:e2:4a: + e1:7e:a4:60:f3:fd:9c:53:46:51:57:32:6b:05:53:80:5c:a5: + 61:93:87:ae:06:a8:a2:ba:4d:a1:b7:1b:0f:8f:82:0a:e8:b3: + ea:63 +-----BEGIN CERTIFICATE----- +MIICkTCCAfqgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJKUDEO +MAwGA1UECBMFVG9reW8xETAPBgNVBAoTCFJ1YnlUZXN0MRUwEwYDVQQDEwxSdWJ5 +IFRlc3QgQ0EwHhcNMDkwMTAxMDAwMDAwWhcNNDkxMjMxMjM1OTU5WjBEMQswCQYD +VQQGEwJKUDEOMAwGA1UECBMFVG9reW8xETAPBgNVBAoTCFJ1YnlUZXN0MRIwEAYD +VQQDEwkxMjcuMC4wLjEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALu9dGlT +WFAkefLr24uX5Gmk3UgMQDViQrM1jJYqYnaYtSrg+Hgztv/4Vb9EaSHXtQ69it0x +G4jVtF56guC6mWwEdun/5vj1Bo5+pNvb60NEEqfKyiuqX4MQ4p41Vejor77IfbvC +1KrBHFcLwAw6HW4jqQMmfOqM8IZhzvH/QscjAgMBAAGjgY8wgYwwCQYDVR0TBAIw +ADARBglghkgBhvhCAQEEBAMCBkAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2Vu +ZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBR/F1pYiJbhH0Tq/63GLpDilTLd +8DAfBgNVHSMEGDAWgBQkbwOj7gZRdbK6/Do4Wb/th83ofzANBgkqhkiG9w0BAQUF +AAOBgQCaNJnqdqLt8PendTuB+3VXk8Enth56OGeVvlhCmgrdKyP7hUKANL+5Dpxe +WtwtJYxoAqLHf8Dr8+Bh4gXlfsHgMxx2ZSMsJQj2WhG51PfjgLuwznYaViKv4krh +fqRg8/2cU0ZRVzJrBVOAXKVhk4euBqiiuk2htxsPj4IK6LPqYw== +-----END CERTIFICATE----- +End + +TestOpenURISSL::SERVER_KEY = <<'End' +Private-Key: (1024 bit) +modulus: + 00:bb:bd:74:69:53:58:50:24:79:f2:eb:db:8b:97: + e4:69:a4:dd:48:0c:40:35:62:42:b3:35:8c:96:2a: + 62:76:98:b5:2a:e0:f8:78:33:b6:ff:f8:55:bf:44: + 69:21:d7:b5:0e:bd:8a:dd:31:1b:88:d5:b4:5e:7a: + 82:e0:ba:99:6c:04:76:e9:ff:e6:f8:f5:06:8e:7e: + a4:db:db:eb:43:44:12:a7:ca:ca:2b:aa:5f:83:10: + e2:9e:35:55:e8:e8:af:be:c8:7d:bb:c2:d4:aa:c1: + 1c:57:0b:c0:0c:3a:1d:6e:23:a9:03:26:7c:ea:8c: + f0:86:61:ce:f1:ff:42:c7:23 +publicExponent: 65537 (0x10001) +privateExponent: + 00:af:3a:ec:17:0a:f5:d9:07:d2:d3:4c:15:c5:3b: + 66:b4:bc:6e:d5:ba:a9:8b:aa:45:3b:63:f5:ee:8b: + 6d:0f:e9:04:e0:1a:cf:8f:d2:25:32:d1:a5:a7:3a: + c1:2e:17:5a:25:82:00:c4:e7:fb:1d:42:ea:71:6c: + c4:0f:e1:db:23:ff:1e:d6:c8:d6:60:ca:2d:06:fc: + 54:3c:03:d4:09:96:bb:38:7a:22:a1:61:2c:f7:d0: + d0:90:6c:9f:61:ba:61:30:5a:aa:64:ad:43:3a:53: + 38:e8:ba:cc:8c:51:3e:68:3e:3a:6a:0f:5d:5d:e0: + d6:df:f2:54:93:d3:14:22:a1 +prime1: + 00:e8:ec:11:fe:e6:2b:23:21:29:d5:40:a6:11:ec: + 4c:ae:4d:08:2a:71:18:ac:d1:3e:40:2f:12:41:59: + 12:09:e2:f7:c2:d7:6b:0a:96:0a:06:e3:90:6a:4e: + b2:eb:25:b7:09:68:e9:13:ab:d0:5a:29:7a:e4:72: + 1a:ee:46:a0:8b +prime2: + 00:ce:57:5e:31:e9:c9:a8:5b:1f:55:af:67:e2:49: + 2a:af:90:b6:02:c0:32:2f:ca:ae:1e:de:47:81:73: + a8:f8:37:53:70:93:24:62:77:d4:b8:80:30:9f:65: + 26:20:46:ae:5a:65:6e:6d:af:68:4c:8d:e8:3c:f3: + d1:d1:d9:6e:c9 +exponent1: + 03:f1:02:b8:f2:82:26:5d:08:4d:30:83:de:e7:c5: + c0:69:53:4b:0c:90:e3:53:c3:1e:e8:ed:01:28:15: + b3:0f:21:2c:2d:e3:04:d1:d7:27:98:b0:37:ec:4f: + 00:c5:a9:9c:42:27:37:8a:ff:c2:96:d3:1a:8c:87: + c2:22:75:d3 +exponent2: + 6f:17:32:ab:84:c7:01:51:2d:e9:9f:ea:3a:36:52: + 38:fb:9c:42:96:df:6e:43:9c:c3:19:c1:3d:bc:db: + 77:e7:b1:90:a6:67:ac:6b:ff:a6:e5:bd:47:d3:d9: + 56:ff:36:d7:8c:4c:8b:d9:28:3a:2f:1c:9d:d4:57: + 5e:b7:c5:a1 +coefficient: + 45:50:47:66:56:e9:21:d9:40:0e:af:3f:f2:05:77: + ab:e7:08:40:97:88:2a:51:b3:7e:86:b0:b2:03:2e: + 6d:36:3f:46:42:97:7d:5a:a2:93:6c:05:c2:8b:8b: + 2d:af:d5:7d:75:e9:70:f0:2d:21:e3:b9:cf:4d:9a: + c4:97:e2:79 +-----BEGIN RSA PRIVATE KEY----- +MIICXAIBAAKBgQC7vXRpU1hQJHny69uLl+RppN1IDEA1YkKzNYyWKmJ2mLUq4Ph4 +M7b/+FW/RGkh17UOvYrdMRuI1bReeoLguplsBHbp/+b49QaOfqTb2+tDRBKnysor +ql+DEOKeNVXo6K++yH27wtSqwRxXC8AMOh1uI6kDJnzqjPCGYc7x/0LHIwIDAQAB +AoGBAK867BcK9dkH0tNMFcU7ZrS8btW6qYuqRTtj9e6LbQ/pBOAaz4/SJTLRpac6 +wS4XWiWCAMTn+x1C6nFsxA/h2yP/HtbI1mDKLQb8VDwD1AmWuzh6IqFhLPfQ0JBs +n2G6YTBaqmStQzpTOOi6zIxRPmg+OmoPXV3g1t/yVJPTFCKhAkEA6OwR/uYrIyEp +1UCmEexMrk0IKnEYrNE+QC8SQVkSCeL3wtdrCpYKBuOQak6y6yW3CWjpE6vQWil6 +5HIa7kagiwJBAM5XXjHpyahbH1WvZ+JJKq+QtgLAMi/Krh7eR4FzqPg3U3CTJGJ3 +1LiAMJ9lJiBGrlplbm2vaEyN6Dzz0dHZbskCQAPxArjygiZdCE0wg97nxcBpU0sM +kONTwx7o7QEoFbMPISwt4wTR1yeYsDfsTwDFqZxCJzeK/8KW0xqMh8IiddMCQG8X +MquExwFRLemf6jo2Ujj7nEKW325DnMMZwT2823fnsZCmZ6xr/6blvUfT2Vb/NteM +TIvZKDovHJ3UV163xaECQEVQR2ZW6SHZQA6vP/IFd6vnCECXiCpRs36GsLIDLm02 +P0ZCl31aopNsBcKLiy2v1X116XDwLSHjuc9NmsSX4nk= +-----END RSA PRIVATE KEY----- +End diff --git a/test/openssl/test_config.rb b/test/openssl/test_config.rb new file mode 100644 index 00000000000000..9578bb2547e8a6 --- /dev/null +++ b/test/openssl/test_config.rb @@ -0,0 +1,15 @@ +require 'openssl' +require "test/unit" + +class OpenSSL::TestConfig < Test::Unit::TestCase + def test_freeze + c = OpenSSL::Config.new + c['foo'] = [['key', 'value']] + c.freeze + + # [ruby-core:18377] + assert_raise(RuntimeError, /frozen/) do + c['foo'] = [['key', 'wrong']] + end + end +end diff --git a/test/openssl/test_pair.rb b/test/openssl/test_pair.rb index fb0662f50175e4..d25a59b74083c8 100644 --- a/test/openssl/test_pair.rb +++ b/test/openssl/test_pair.rb @@ -7,10 +7,7 @@ if defined?(OpenSSL) require 'socket' -dir = File.expand_path(__FILE__) -2.times {dir = File.dirname(dir)} -$:.replace([File.join(dir, "ruby")] | $:) -require 'ut_eof' +require_relative '../ruby/ut_eof' module SSLPair def server diff --git a/test/openssl/test_ssl.rb b/test/openssl/test_ssl.rb index 4688552cd3bc7b..e86b82110b39f7 100644 --- a/test/openssl/test_ssl.rb +++ b/test/openssl/test_ssl.rb @@ -1,18 +1,12 @@ begin require "openssl" - require File.join(File.dirname(__FILE__), "utils.rb") + require_relative "utils.rb" rescue LoadError end require "rbconfig" require "socket" require "test/unit" -begin - loadpath = $:.dup - $:.replace($: | [File.expand_path("../ruby", File.dirname(__FILE__))]) - require 'envutil' -ensure - $:.replace(loadpath) -end +require_relative '../ruby/envutil' if defined?(OpenSSL) diff --git a/test/rake/capture_stdout.rb b/test/rake/capture_stdout.rb new file mode 100644 index 00000000000000..f54ec42f69fe78 --- /dev/null +++ b/test/rake/capture_stdout.rb @@ -0,0 +1,24 @@ +require 'stringio' + +# Mix-in for capturing standard output. +module CaptureStdout + def capture_stdout + s = StringIO.new + oldstdout = $stdout + $stdout = s + yield + s.string + ensure + $stdout = oldstdout + end + + def capture_stderr + s = StringIO.new + oldstderr = $stderr + $stderr = s + yield + s.string + ensure + $stderr = oldstderr + end +end diff --git a/test/rake/check_expansion.rb b/test/rake/check_expansion.rb new file mode 100644 index 00000000000000..659cf71e51695f --- /dev/null +++ b/test/rake/check_expansion.rb @@ -0,0 +1,5 @@ +if ARGV[0] != ARGV[1] + exit 1 +else + exit 0 +end diff --git a/test/rake/check_no_expansion.rb b/test/rake/check_no_expansion.rb new file mode 100644 index 00000000000000..24f586a7f5c97b --- /dev/null +++ b/test/rake/check_no_expansion.rb @@ -0,0 +1,5 @@ +if ARGV[0] != ARGV[1] + exit 0 +else + exit 1 +end diff --git a/test/rake/contrib/test_ftp.rb b/test/rake/contrib/test_ftp.rb new file mode 100644 index 00000000000000..0346dd71ca3790 --- /dev/null +++ b/test/rake/contrib/test_ftp.rb @@ -0,0 +1,55 @@ +require 'date' +require 'time' +require 'test/unit' +require 'rake/contrib/ftptools' + +class Rake::TestFtpFile < Test::Unit::TestCase + class FakeDate + def self.today + Date.new(2003,10,3) + end + def self.now + Time.local(2003,10,3,12,00,00) + end + end + + def setup + Rake::FtpFile.class_eval { @date_class = FakeDate; @time_class = FakeDate } + end + + def test_general + file = Rake::FtpFile.new("here", "-rw-r--r-- 1 a279376 develop 121770 Mar 6 14:50 wiki.pl") + assert_equal "wiki.pl", file.name + assert_equal "here/wiki.pl", file.path + assert_equal "a279376", file.owner + assert_equal "develop", file.group + assert_equal 0644, file.mode + assert_equal 121770, file.size + assert_equal Time.mktime(2003,3,6,14,50,0,0), file.time + assert ! file.directory? + assert ! file.symlink? + end + + def test_far_date + file = Rake::FtpFile.new(".", "drwxr-xr-x 3 a279376 develop 4096 Nov 26 2001 vss") + assert_equal Time.mktime(2001,11,26,0,0,0,0), file.time + end + + def test_close_date + file = Rake::FtpFile.new(".", "drwxr-xr-x 3 a279376 develop 4096 Nov 26 15:35 vss") + assert_equal Time.mktime(2002,11,26,15,35,0,0), file.time + end + + def test_directory + file = Rake::FtpFile.new(".", "drwxrwxr-x 9 a279376 develop 4096 Mar 13 14:32 working") + assert file.directory? + assert !file.symlink? + end + + def test_symlink + file = Rake::FtpFile.new(".", "lrwxrwxrwx 1 a279376 develop 64 Mar 26 2002 xtrac -> /home/a279376/working/ics/development/java/com/fmr/fwp/ics/xtrac") + assert_equal 'xtrac', file.name + assert file.symlink? + assert !file.directory? + end +end diff --git a/test/rake/data/chains/Rakefile b/test/rake/data/chains/Rakefile new file mode 100644 index 00000000000000..31bdc2578d72e5 --- /dev/null +++ b/test/rake/data/chains/Rakefile @@ -0,0 +1,15 @@ +# -*- ruby -*- + +task :default => "play.app" + +file "play.scpt" => "base" do |t| + cp t.prerequisites.first, t.name +end + +rule ".app" => ".scpt" do |t| + cp t.source, t.name +end + +file 'base' do + touch 'base' +end diff --git a/test/rake/data/default/Rakefile b/test/rake/data/default/Rakefile new file mode 100644 index 00000000000000..22ed5e0ca9c9d5 --- /dev/null +++ b/test/rake/data/default/Rakefile @@ -0,0 +1,19 @@ +#!/usr/bin/env ruby + +if ENV['TESTTOPSCOPE'] + puts "TOPSCOPE" +end + +task :default do + puts "DEFAULT" +end + +task :other => [:default] do + puts "OTHER" +end + +task :task_scope do + if ENV['TESTTASKSCOPE'] + puts "TASKSCOPE" + end +end diff --git a/test/rake/data/dryrun/Rakefile b/test/rake/data/dryrun/Rakefile new file mode 100644 index 00000000000000..0a68a0d6062c51 --- /dev/null +++ b/test/rake/data/dryrun/Rakefile @@ -0,0 +1,22 @@ +# + +task :default => ["temp_main"] + +file "temp_main" => [:all_apps] do touch "temp_main" end + +task :all_apps => [:one, :two] +task :one => ["temp_one"] +task :two => ["temp_two"] + +file "temp_one" do |t| + touch "temp_one" +end +file "temp_two" do |t| + touch "temp_two" +end + +task :clean do + ["temp_one", "temp_two", "temp_main"].each do |file| + rm_f file + end +end diff --git a/test/rake/data/file_creation_task/Rakefile b/test/rake/data/file_creation_task/Rakefile new file mode 100644 index 00000000000000..94641b69723842 --- /dev/null +++ b/test/rake/data/file_creation_task/Rakefile @@ -0,0 +1,33 @@ +#!/usr/bin/env ruby + +N = 2 + +task :default => :run + +BUILD_DIR = 'build' +task :clean do + rm_rf 'build' + rm_rf 'src' +end + +task :run + +TARGET_DIR = 'build/copies' + +FileList['src/*'].each do |src| + directory TARGET_DIR + target = File.join TARGET_DIR, File.basename(src) + file target => [src, TARGET_DIR] do + cp src, target + # sleep 3 if src !~ /foo#{N-1}$/ # I'm commenting out this sleep, it doesn't seem to do anything. + end + task :run => target +end + +task :prep => :clean do + mkdir_p 'src' + N.times do |n| + puts "DBG: Touching src/foo#{n}" + touch "src/foo#{n}" + end +end diff --git a/test/rake/data/imports/Rakefile b/test/rake/data/imports/Rakefile new file mode 100644 index 00000000000000..6a60f612bcfa05 --- /dev/null +++ b/test/rake/data/imports/Rakefile @@ -0,0 +1,19 @@ +# -*- ruby -*- + +require 'rake/loaders/makefile' + +task :default + +task :other do + puts "OTHER" +end + +file "dynamic_deps" do |t| + open(t.name, "w") do |f| f.puts "puts 'DYNAMIC'" end +end + +import "dynamic_deps" +import "static_deps" +import "static_deps" +import "deps.mf" +puts "FIRST" diff --git a/test/rake/data/imports/deps.mf b/test/rake/data/imports/deps.mf new file mode 100644 index 00000000000000..04643d0d8e0dd8 --- /dev/null +++ b/test/rake/data/imports/deps.mf @@ -0,0 +1 @@ +default: other diff --git a/test/rake/data/multidesc/Rakefile b/test/rake/data/multidesc/Rakefile new file mode 100644 index 00000000000000..53424819224a31 --- /dev/null +++ b/test/rake/data/multidesc/Rakefile @@ -0,0 +1,17 @@ +#!/usr/bin/env ruby + +task :b + +desc "A" +task :a + +desc "B" +task :b + +desc "A2" +task :a + +task :c + +desc "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" +task :d diff --git a/test/rake/data/namespace/Rakefile b/test/rake/data/namespace/Rakefile new file mode 100644 index 00000000000000..6de98edae9024c --- /dev/null +++ b/test/rake/data/namespace/Rakefile @@ -0,0 +1,57 @@ +#!/usr/bin/env ruby + +desc "copy" +task :copy do + puts "COPY" +end + +namespace "nest" do + desc "nest copy" + task :copy do + puts "NEST COPY" + end + task :xx => :copy +end + +anon_ns = namespace do + desc "anonymous copy task" + task :copy do + puts "ANON COPY" + end +end + +desc "Top level task to run the anonymous version of copy" +task :anon => anon_ns[:copy] + +namespace "very" do + namespace "nested" do + task "run" => "rake:copy" + end +end + +namespace "a" do + desc "Run task in the 'a' namespace" + task "run" do + puts "IN A" + end +end + +namespace "b" do + desc "Run task in the 'b' namespace" + task "run" => "a:run" do + puts "IN B" + end +end + +namespace "file1" do + file "xyz.rb" do + puts "XYZ1" + end +end + +namespace "file2" do + file "xyz.rb" do + puts "XYZ2" + end +end + diff --git a/test/rake/data/rakelib/test1.rake b/test/rake/data/rakelib/test1.rake new file mode 100644 index 00000000000000..bb1c419b40af05 --- /dev/null +++ b/test/rake/data/rakelib/test1.rake @@ -0,0 +1,3 @@ +task :default do + puts "TEST1" +end diff --git a/test/rake/data/rbext/rakefile.rb b/test/rake/data/rbext/rakefile.rb new file mode 100644 index 00000000000000..670604d7335b17 --- /dev/null +++ b/test/rake/data/rbext/rakefile.rb @@ -0,0 +1,3 @@ +task :default do + puts "OK" +end diff --git a/test/rake/data/sample.mf b/test/rake/data/sample.mf new file mode 100644 index 00000000000000..778e9d456f7b8d --- /dev/null +++ b/test/rake/data/sample.mf @@ -0,0 +1,14 @@ +# Comments +a: a1 a2 a3 a4 +b: b1 b2 b3 \ + b4 b5 b6\ +# Mid: Comment +b7 + + a : a5 a6 a7 +c: c1 +d: d1 d2 \ + +e f : e1 f1 + +g\ 0: g1 g\ 2 g\ 3 g4 diff --git a/test/rake/data/statusreturn/Rakefile b/test/rake/data/statusreturn/Rakefile new file mode 100644 index 00000000000000..68023052f8f740 --- /dev/null +++ b/test/rake/data/statusreturn/Rakefile @@ -0,0 +1,8 @@ +#!/usr/bin/env ruby + +task :exit5 do + exit(5) +end + +task :normal do +end diff --git a/test/rake/data/unittest/Rakefile b/test/rake/data/unittest/Rakefile new file mode 100644 index 00000000000000..9c3b8ac11c8848 --- /dev/null +++ b/test/rake/data/unittest/Rakefile @@ -0,0 +1 @@ +# Empty Rakefile for Unit Test diff --git a/test/rake/data/unittest/subdir/.gitignore b/test/rake/data/unittest/subdir/.gitignore new file mode 100644 index 00000000000000..d6b7ef32c8478a --- /dev/null +++ b/test/rake/data/unittest/subdir/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/test/rake/filecreation.rb b/test/rake/filecreation.rb new file mode 100644 index 00000000000000..e4c6e347da72eb --- /dev/null +++ b/test/rake/filecreation.rb @@ -0,0 +1,30 @@ +module FileCreation + OLDFILE = "testdata/old" + NEWFILE = "testdata/new" + + def create_timed_files(oldfile, *newfiles) + return if File.exist?(oldfile) && newfiles.all? { |newfile| File.exist?(newfile) } + old_time = create_file(oldfile) + newfiles.each do |newfile| + while create_file(newfile) <= old_time + sleep(0.1) + File.delete(newfile) rescue nil + end + end + end + + def create_dir(dirname) + FileUtils.mkdir_p(dirname) unless File.exist?(dirname) + File.stat(dirname).mtime + end + + def create_file(name) + create_dir(File.dirname(name)) + FileUtils.touch(name) unless File.exist?(name) + File.stat(name).mtime + end + + def delete_file(name) + File.delete(name) rescue nil + end +end diff --git a/test/rake/in_environment.rb b/test/rake/in_environment.rb new file mode 100644 index 00000000000000..f0a340fac9a6e4 --- /dev/null +++ b/test/rake/in_environment.rb @@ -0,0 +1,30 @@ +module InEnvironment + private + + # Create an environment for a test. At the completion of the yielded + # block, the environment is restored to its original conditions. + def in_environment(settings) + original_settings = set_env(settings) + yield + ensure + set_env(original_settings) if original_settings + end + + # Set the environment according to the settings hash. + def set_env(settings) # :nodoc: + result = {} + settings.each do |k, v| + result[k] = ENV[k] + if k == 'PWD' + result[k] = Dir.pwd + Dir.chdir(v) + elsif v.nil? + ENV.delete(k) + else + ENV[k] = v + end + end + result + end + +end diff --git a/test/rake/rake_test_setup.rb b/test/rake/rake_test_setup.rb new file mode 100644 index 00000000000000..de94d56b404283 --- /dev/null +++ b/test/rake/rake_test_setup.rb @@ -0,0 +1,9 @@ +# Common setup for all test files. + +# require 'flexmock/test_unit' + +module TestMethods + def assert_exception(ex, msg=nil, &block) + assert_raise(ex, msg, &block) + end +end diff --git a/test/rake/reqfile.rb b/test/rake/reqfile.rb new file mode 100644 index 00000000000000..5372544b66b1fa --- /dev/null +++ b/test/rake/reqfile.rb @@ -0,0 +1,3 @@ +# For --require testing + +TESTING_REQUIRE << 1 diff --git a/test/rake/reqfile2.rb b/test/rake/reqfile2.rb new file mode 100644 index 00000000000000..65993907ac38a0 --- /dev/null +++ b/test/rake/reqfile2.rb @@ -0,0 +1,3 @@ +# For --require testing + +TESTING_REQUIRE << 2 diff --git a/test/rake/reqfile3.rb b/test/rake/reqfile3.rb new file mode 100644 index 00000000000000..11fc16b2ab7e50 --- /dev/null +++ b/test/rake/reqfile3.rb @@ -0,0 +1,3 @@ +# For --require testing + +TESTING_REQUIRE << 3 diff --git a/test/rake/shellcommand.rb b/test/rake/shellcommand.rb new file mode 100755 index 00000000000000..58db8a0871cd66 --- /dev/null +++ b/test/rake/shellcommand.rb @@ -0,0 +1,3 @@ +#!/usr/bin/env ruby + +exit((ARGV[0] || "0").to_i) diff --git a/test/rake/test_application.rb b/test/rake/test_application.rb new file mode 100644 index 00000000000000..77f9859b242221 --- /dev/null +++ b/test/rake/test_application.rb @@ -0,0 +1,687 @@ +require 'test/unit' +require 'rake' +require_relative 'capture_stdout' +require_relative 'in_environment' + +TESTING_REQUIRE = [ ] + +###################################################################### +class Rake::TestApplication < Test::Unit::TestCase + include CaptureStdout + include InEnvironment + BASEDIR = File.dirname(__FILE__) + + def defmock(*names, &block) + class << (@mock ||= Object.new); self; end.class_eval do + names.each do |name| + define_method(name, block) + end + end + @mock + end + + def setup + @app = Rake::Application.new + @app.options.rakelib = [] + end + + def test_constant_warning + err = capture_stderr do @app.instance_eval { const_warning("Task") } end + assert_match(/warning/i, err) + assert_match(/deprecated/i, err) + assert_match(/Task/i, err) + end + + def test_display_tasks + @app.options.show_task_pattern = // + @app.last_description = "COMMENT" + @app.define_task(Rake::Task, "t") + out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end + assert_match(/^rake t/, out) + assert_match(/# COMMENT/, out) + end + + def test_display_tasks_with_long_comments + in_environment('RAKE_COLUMNS' => '80') do + @app.options.show_task_pattern = // + @app.last_description = "1234567890" * 8 + @app.define_task(Rake::Task, "t") + out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end + assert_match(/^rake t/, out) + assert_match(/# 12345678901234567890123456789012345678901234567890123456789012345\.\.\./, out) + end + end + + def test_display_tasks_with_task_name_wider_than_tty_display + in_environment('RAKE_COLUMNS' => '80') do + @app.options.show_task_pattern = // + description = "something short" + task_name = "task name" * 80 + @app.last_description = "something short" + @app.define_task(Rake::Task, task_name ) + out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end + # Ensure the entire task name is output and we end up showing no description + assert_match(/rake #{task_name} # .../, out) + end + end + + def test_display_tasks_with_very_long_task_name_to_a_non_tty_shows_name_and_comment + @app.options.show_task_pattern = // + @app.tty_output = false + description = "something short" + task_name = "task name" * 80 + @app.last_description = "something short" + @app.define_task(Rake::Task, task_name ) + out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end + # Ensure the entire task name is output and we end up showing no description + assert_match(/rake #{task_name} # #{description}/, out) + end + + def test_display_tasks_with_long_comments_to_a_non_tty_shows_entire_comment + @app.options.show_task_pattern = // + @app.tty_output = false + @app.last_description = "1234567890" * 8 + @app.define_task(Rake::Task, "t") + out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end + assert_match(/^rake t/, out) + assert_match(/# #{@app.last_description}/, out) + end + + def test_display_tasks_with_long_comments_to_a_non_tty_with_columns_set_truncates_comments + in_environment("RAKE_COLUMNS" => '80') do + @app.options.show_task_pattern = // + @app.tty_output = false + @app.last_description = "1234567890" * 8 + @app.define_task(Rake::Task, "t") + out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end + assert_match(/^rake t/, out) + assert_match(/# 12345678901234567890123456789012345678901234567890123456789012345\.\.\./, out) + end + end + + def test_display_tasks_with_full_descriptions + @app.options.show_task_pattern = // + @app.options.full_description = true + @app.last_description = "COMMENT" + @app.define_task(Rake::Task, "t") + out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end + assert_match(/^rake t$/, out) + assert_match(/^ {4}COMMENT$/, out) + end + + def test_finding_rakefile + in_environment("PWD" => File.join(BASEDIR, "data/unittest")) do + assert_match(/Rakefile/i, @app.instance_eval { have_rakefile }) + end + end + + def test_not_finding_rakefile + @app.instance_eval { @rakefiles = ['NEVER_FOUND'] } + assert( ! @app.instance_eval do have_rakefile end ) + assert_nil @app.rakefile + end + + def test_load_rakefile + in_environment("PWD" => File.join(BASEDIR, "data/unittest")) do + @app.instance_eval do + handle_options + options.silent = true + load_rakefile + end + assert_equal "rakefile", @app.rakefile.downcase + assert_match(%r(unittest$), Dir.pwd) + end + end + + def test_load_rakefile_from_subdir + in_environment("PWD" => File.join(BASEDIR, "data/unittest/subdir")) do + @app.instance_eval do + handle_options + options.silent = true + load_rakefile + end + assert_equal "rakefile", @app.rakefile.downcase + assert_match(%r(unittest$), Dir.pwd) + end + end + + def test_load_rakefile_not_found + in_environment("PWD" => "/", "RAKE_SYSTEM" => 'not_exist') do + @app.instance_eval do + handle_options + options.silent = true + end + ex = assert_raise(RuntimeError) do + @app.instance_eval do raw_load_rakefile end + end + assert_match(/no rakefile found/i, ex.message) + end + end + + def test_load_from_system_rakefile + system_dir = File.expand_path('../data/default', __FILE__) + in_environment('RAKE_SYSTEM' => system_dir) do + @app.options.rakelib = [] + @app.instance_eval do + handle_options + options.silent = true + options.load_system = true + options.rakelib = [] + load_rakefile + end + assert_equal system_dir, @app.system_dir + assert_nil @app.rakefile + end + end + + def test_windows + assert ! (@app.windows? && @app.unix?) + end + + def test_loading_imports + args = [] + mock = defmock(:load) {|*a| args << a} + @app.instance_eval do + add_loader("dummy", mock) + add_import("x.dummy") + load_imports + end + assert_equal([["x.dummy"]], args) + end + + def test_building_imported_files_on_demand + args = [] + callback = false + mock = defmock(:load) {|*a| args << a} + @app.instance_eval do + intern(Rake::Task, "x.dummy").enhance do callback = true end + add_loader("dummy", mock) + add_import("x.dummy") + load_imports + end + assert_equal([["x.dummy"]], args) + assert(callback) + end + + def test_handle_options_should_strip_options_from_ARGV + assert !@app.options.trace + + valid_option = '--trace' + ARGV.clear + ARGV << valid_option + + @app.handle_options + + assert !ARGV.include?(valid_option) + assert @app.options.trace + end + + def test_good_run + ran = false + ARGV.clear + ARGV << '--rakelib=""' + @app.options.silent = true + @app.instance_eval do + intern(Rake::Task, "default").enhance { ran = true } + end + in_environment("PWD" => File.join(BASEDIR, "data/default")) do + @app.run + end + assert ran + end + + def test_display_task_run + ran = false + ARGV.clear + ARGV << '-f' << '-s' << '--tasks' << '--rakelib=""' + @app.last_description = "COMMENT" + @app.define_task(Rake::Task, "default") + out = capture_stdout { @app.run } + assert @app.options.show_tasks + assert ! ran + assert_match(/rake default/, out) + assert_match(/# COMMENT/, out) + end + + def test_display_prereqs + ran = false + ARGV.clear + ARGV << '-f' << '-s' << '--prereqs' << '--rakelib=""' + @app.last_description = "COMMENT" + t = @app.define_task(Rake::Task, "default") + t.enhance([:a, :b]) + @app.define_task(Rake::Task, "a") + @app.define_task(Rake::Task, "b") + out = capture_stdout { @app.run } + assert @app.options.show_prereqs + assert ! ran + assert_match(/rake a$/, out) + assert_match(/rake b$/, out) + assert_match(/rake default\n( *(a|b)\n){2}/m, out) + end + + def test_bad_run + @app.intern(Rake::Task, "default").enhance { fail } + ARGV.clear + ARGV << '-f' << '-s' << '--rakelib=""' + assert_raise(SystemExit) { + err = capture_stderr { @app.run } + assert_match(/see full trace/, err) + } + ensure + ARGV.clear + end + + def test_bad_run_with_trace + @app.intern(Rake::Task, "default").enhance { fail } + ARGV.clear + ARGV << '-f' << '-s' << '-t' + assert_raise(SystemExit) { + err = capture_stderr { capture_stdout { @app.run } } + assert_no_match(/see full trace/, err) + } + ensure + ARGV.clear + end + + def test_run_with_bad_options + @app.intern(Rake::Task, "default").enhance { fail } + ARGV.clear + ARGV << '-f' << '-s' << '--xyzzy' + assert_raise(SystemExit) { + err = capture_stderr { capture_stdout { @app.run } } + } + ensure + ARGV.clear + end +end + + +###################################################################### +class Rake::TestApplicationOptions < Test::Unit::TestCase + include CaptureStdout + + def setup + clear_argv + RakeFileUtils.verbose_flag = false + RakeFileUtils.nowrite_flag = false + TESTING_REQUIRE.clear + end + + def teardown + clear_argv + RakeFileUtils.verbose_flag = false + RakeFileUtils.nowrite_flag = false + end + + def clear_argv + while ! ARGV.empty? + ARGV.pop + end + end + + def test_default_options + opts = command_line + assert_nil opts.classic_namespace + assert_nil opts.dryrun + assert_nil opts.full_description + assert_nil opts.ignore_system + assert_nil opts.load_system + assert_nil opts.nosearch + assert_equal ['rakelib'], opts.rakelib + assert_nil opts.show_prereqs + assert_nil opts.show_task_pattern + assert_nil opts.show_tasks + assert_nil opts.silent + assert_nil opts.trace + assert_equal ['rakelib'], opts.rakelib + assert ! RakeFileUtils.verbose_flag + assert ! RakeFileUtils.nowrite_flag + end + + def test_dry_run + flags('--dry-run', '-n') do |opts| + assert opts.dryrun + assert opts.trace + assert RakeFileUtils.verbose_flag + assert RakeFileUtils.nowrite_flag + end + end + + def test_describe + flags('--describe') do |opts| + assert opts.full_description + assert opts.show_tasks + assert_equal(//.to_s, opts.show_task_pattern.to_s) + end + end + + def test_describe_with_pattern + flags('--describe=X') do |opts| + assert opts.full_description + assert opts.show_tasks + assert_equal(/X/.to_s, opts.show_task_pattern.to_s) + end + end + + def test_execute + $xyzzy = 0 + flags('--execute=$xyzzy=1', '-e $xyzzy=1') do |opts| + assert_equal 1, $xyzzy + assert_equal :exit, @exit + $xyzzy = 0 + end + end + + def test_execute_and_continue + $xyzzy = 0 + flags('--execute-continue=$xyzzy=1', '-E $xyzzy=1') do |opts| + assert_equal 1, $xyzzy + assert_not_equal :exit, @exit + $xyzzy = 0 + end + end + + def test_execute_and_print + $xyzzy = 0 + flags('--execute-print=$xyzzy="pugh"', '-p $xyzzy="pugh"') do |opts| + assert_equal 'pugh', $xyzzy + assert_equal :exit, @exit + assert_match(/^pugh$/, @out) + $xyzzy = 0 + end + end + + def test_help + flags('--help', '-H', '-h') do |opts| + assert_match(/\Arake/, @out) + assert_match(/\boptions\b/, @out) + assert_match(/\btargets\b/, @out) + assert_equal :exit, @exit + assert_equal :exit, @exit + end + end + + def test_libdir + flags(['--libdir', 'xx'], ['-I', 'xx'], ['-Ixx']) do |opts| + $:.include?('xx') + end + ensure + $:.delete('xx') + end + + def test_rakefile + flags(['--rakefile', 'RF'], ['--rakefile=RF'], ['-f', 'RF'], ['-fRF']) do |opts| + assert_equal ['RF'], @app.instance_eval { @rakefiles } + end + end + + def test_rakelib + flags(['--rakelibdir', 'A:B:C'], ['--rakelibdir=A:B:C'], ['-R', 'A:B:C'], ['-RA:B:C']) do |opts| + assert_equal ['A', 'B', 'C'], opts.rakelib + end + end + + def test_require + flags(['--require', File.expand_path('../reqfile', __FILE__)], + "-r#{File.expand_path('../reqfile2', __FILE__)}", + "-r#{File.expand_path('../reqfile3', __FILE__)}") do |opts| + end + assert TESTING_REQUIRE.include?(1) + assert TESTING_REQUIRE.include?(2) + assert TESTING_REQUIRE.include?(3) + assert_equal 3, TESTING_REQUIRE.size + end + + def test_missing_require + ex = assert_raise(LoadError) do + flags(['--require', File.expand_path('../missing', __FILE__)]) do |opts| + end + end + assert_match(/no such file/, ex.message) + assert_match(/#{File.basename(File.dirname(__FILE__))}\/missing/, ex.message) + end + + def test_prereqs + flags('--prereqs', '-P') do |opts| + assert opts.show_prereqs + end + end + + def test_quiet + flags('--quiet', '-q') do |opts| + assert ! RakeFileUtils.verbose_flag + assert ! opts.silent + end + end + + def test_no_search + flags('--nosearch', '--no-search', '-N') do |opts| + assert opts.nosearch + end + end + + def test_silent + flags('--silent', '-s') do |opts| + assert ! RakeFileUtils.verbose_flag + assert opts.silent + end + end + + def test_system + flags('--system', '-g') do |opts| + assert opts.load_system + end + end + + def test_no_system + flags('--no-system', '-G') do |opts| + assert opts.ignore_system + end + end + + def test_trace + flags('--trace', '-t') do |opts| + assert opts.trace + assert RakeFileUtils.verbose_flag + assert ! RakeFileUtils.nowrite_flag + end + end + + def test_trace_rules + flags('--rules') do |opts| + assert opts.trace_rules + end + end + + def test_tasks + flags('--tasks', '-T') do |opts| + assert opts.show_tasks + assert_equal(//.to_s, opts.show_task_pattern.to_s) + end + flags(['--tasks', 'xyz'], ['-Txyz']) do |opts| + assert opts.show_tasks + assert_equal(/xyz/, opts.show_task_pattern) + end + end + + def test_verbose + flags('--verbose', '-V') do |opts| + assert RakeFileUtils.verbose_flag + assert ! opts.silent + end + end + + def test_version + flags('--version', '-V') do |opts| + assert_match(/\bversion\b/, @out) + assert_match(/\b#{RAKEVERSION}\b/, @out) + assert_equal :exit, @exit + end + end + + def test_classic_namespace + flags(['--classic-namespace'], ['-C', '-T', '-P', '-n', '-s', '-t']) do |opts| + assert opts.classic_namespace + assert_equal opts.show_tasks, $show_tasks + assert_equal opts.show_prereqs, $show_prereqs + assert_equal opts.trace, $trace + assert_equal opts.dryrun, $dryrun + assert_equal opts.silent, $silent + end + end + + def test_bad_option + capture_stderr do + ex = assert_raise(OptionParser::InvalidOption) do + flags('--bad-option') + end + if ex.message =~ /^While/ # Ruby 1.9 error message + assert_match(/while parsing/i, ex.message) + else # Ruby 1.8 error message + assert_match(/(invalid|unrecognized) option/i, ex.message) + assert_match(/--bad-option/, ex.message) + end + end + end + + def test_task_collection + command_line("a", "b") + assert_equal ["a", "b"], @tasks.sort + end + + def test_default_task_collection + command_line() + assert_equal ["default"], @tasks + end + + def test_environment_definition + ENV.delete('TESTKEY') + command_line("a", "TESTKEY=12") + assert_equal ["a"], @tasks.sort + assert '12', ENV['TESTKEY'] + end + + private + + def flags(*sets) + sets.each do |set| + ARGV.clear + @out = capture_stdout { + @exit = catch(:system_exit) { opts = command_line(*set) } + } + yield(@app.options) if block_given? + end + end + + def command_line(*options) + options.each do |opt| ARGV << opt end + @app = Rake::Application.new + def @app.exit(*args) + throw :system_exit, :exit + end + @app.instance_eval do + handle_options + collect_tasks + end + @tasks = @app.top_level_tasks + @app.options + end +end + +class Rake::TestTaskArgumentParsing < Test::Unit::TestCase + def setup + @app = Rake::Application.new + end + + def test_name_only + name, args = @app.parse_task_string("name") + assert_equal "name", name + assert_equal [], args + end + + def test_empty_args + name, args = @app.parse_task_string("name[]") + assert_equal "name", name + assert_equal [], args + end + + def test_one_argument + name, args = @app.parse_task_string("name[one]") + assert_equal "name", name + assert_equal ["one"], args + end + + def test_two_arguments + name, args = @app.parse_task_string("name[one,two]") + assert_equal "name", name + assert_equal ["one", "two"], args + end + + def test_can_handle_spaces_between_args + name, args = @app.parse_task_string("name[one, two,\tthree , \tfour]") + assert_equal "name", name + assert_equal ["one", "two", "three", "four"], args + end + + def test_keeps_embedded_spaces + name, args = @app.parse_task_string("name[a one ana, two]") + assert_equal "name", name + assert_equal ["a one ana", "two"], args + end + +end + +class Rake::TestTaskArgumentParsing < Test::Unit::TestCase + include InEnvironment + + def test_terminal_width_using_env + app = Rake::Application.new + in_environment('RAKE_COLUMNS' => '1234') do + assert_equal 1234, app.terminal_width + end + end + + def test_terminal_width_using_stty + app = Rake::Application.new + def app.unix?() true end + def app.dynamic_width_stty() 1235 end + def app.dynamic_width_tput() 0 end + in_environment('RAKE_COLUMNS' => nil) do + assert_equal 1235, app.terminal_width + end + end + + def test_terminal_width_using_tput + app = Rake::Application.new + def app.unix?() true end + def app.dynamic_width_stty() 0 end + def app.dynamic_width_tput() 1236 end + in_environment('RAKE_COLUMNS' => nil) do + assert_equal 1236, app.terminal_width + end + end + + def test_terminal_width_using_hardcoded_80 + app = Rake::Application.new + def app.unix?() false end + in_environment('RAKE_COLUMNS' => nil) do + assert_equal 80, app.terminal_width + end + end + + def test_terminal_width_with_failure + app = Rake::Application.new + called = false + class << app; self; end.class_eval do + define_method(:unix?) {|*a| + called = a + raise RuntimeError + } + end + in_environment('RAKE_COLUMNS' => nil) do + assert_equal 80, app.terminal_width + end + assert_equal([], called) + end +end diff --git a/test/rake/test_clean.rb b/test/rake/test_clean.rb new file mode 100644 index 00000000000000..0e8b81c2c7a920 --- /dev/null +++ b/test/rake/test_clean.rb @@ -0,0 +1,12 @@ +require 'test/unit' +require 'rake/clean' + +class Rake::TestClean < Test::Unit::TestCase + include Rake + def test_clean + assert Task['clean'], "Should define clean" + assert Task['clobber'], "Should define clobber" + assert Task['clobber'].prerequisites.include?("clean"), + "Clobber should require clean" + end +end diff --git a/test/rake/test_definitions.rb b/test/rake/test_definitions.rb new file mode 100644 index 00000000000000..164958ecd51282 --- /dev/null +++ b/test/rake/test_definitions.rb @@ -0,0 +1,81 @@ +require 'test/unit' +require 'fileutils' +require 'rake' +require_relative 'filecreation' + +###################################################################### +class Rake::TestDefinitions < Test::Unit::TestCase + include Rake + + EXISTINGFILE = "testdata/existing" + + def setup + Task.clear + end + + def test_task + done = false + task :one => [:two] do done = true end + task :two + task :three => [:one, :two] + check_tasks(:one, :two, :three) + assert done, "Should be done" + end + + def test_file_task + done = false + file "testdata/one" => "testdata/two" do done = true end + file "testdata/two" + file "testdata/three" => ["testdata/one", "testdata/two"] + check_tasks("testdata/one", "testdata/two", "testdata/three") + assert done, "Should be done" + end + + def check_tasks(n1, n2, n3) + t = Task[n1] + assert Task === t, "Should be a Task" + assert_equal n1.to_s, t.name + assert_equal [n2.to_s], t.prerequisites.collect{|n| n.to_s} + t.invoke + t2 = Task[n2] + assert_equal FileList[], t2.prerequisites + t3 = Task[n3] + assert_equal [n1.to_s, n2.to_s], t3.prerequisites.collect{|n|n.to_s} + end + + def test_incremental_definitions + runs = [] + task :t1 => [:t2] do runs << "A"; 4321 end + task :t1 => [:t3] do runs << "B"; 1234 end + task :t1 => [:t3] + task :t2 + task :t3 + Task[:t1].invoke + assert_equal ["A", "B"], runs + assert_equal ["t2", "t3"], Task[:t1].prerequisites + end + + def test_missing_dependencies + task :x => ["testdata/missing"] + assert_raise(RuntimeError) { Task[:x].invoke } + end + + def test_implicit_file_dependencies + runs = [] + create_existing_file + task :y => [EXISTINGFILE] do |t| runs << t.name end + Task[:y].invoke + assert_equal runs, ['y'] + end + + private # ---------------------------------------------------------- + + def create_existing_file + Dir.mkdir File.dirname(EXISTINGFILE) unless + File.exist?(File.dirname(EXISTINGFILE)) + open(EXISTINGFILE, "w") do |f| f.puts "HI" end unless + File.exist?(EXISTINGFILE) + end + +end + diff --git a/test/rake/test_earlytime.rb b/test/rake/test_earlytime.rb new file mode 100644 index 00000000000000..a228146679410e --- /dev/null +++ b/test/rake/test_earlytime.rb @@ -0,0 +1,33 @@ +require 'test/unit' +require 'rake' + +class Rake::TestEarlyTime < Test::Unit::TestCase + def test_create + early = Rake::EarlyTime.instance + time = Time.mktime(1970, 1, 1, 0, 0, 0) + assert early <= Time.now + assert early < Time.now + assert early != Time.now + assert Time.now > early + assert Time.now >= early + assert Time.now != early + end + + def test_equality + early = Rake::EarlyTime.instance + assert_equal early, early, "two early times should be equal" + end + + def test_original_time_compare_is_not_messed_up + t1 = Time.mktime(1970, 1, 1, 0, 0, 0) + t2 = Time.now + assert t1 < t2 + assert t2 > t1 + assert t1 == t1 + assert t2 == t2 + end + + def test_to_s + assert_equal "", Rake::EARLY.to_s + end +end diff --git a/test/rake/test_extension.rb b/test/rake/test_extension.rb new file mode 100644 index 00000000000000..94348aafa626a7 --- /dev/null +++ b/test/rake/test_extension.rb @@ -0,0 +1,61 @@ +require 'test/unit' +require 'rake' +require 'stringio' + +###################################################################### +class Rake::TestExtension < Test::Unit::TestCase + + module Redirect + def error_redirect + old_err = $stderr + result = StringIO.new + $stderr = result + yield + result + ensure + $stderr = old_err + end + end + + class Sample + extend Redirect + + def duplicate_method + :original + end + + OK_ERRS = error_redirect do + rake_extension("a") do + def ok_method + end + end + end + + + DUP_ERRS = error_redirect do + rake_extension("duplicate_method") do + def duplicate_method + :override + end + end + end + end + + def test_methods_actually_exist + sample = Sample.new + sample.ok_method + sample.duplicate_method + end + + def test_no_warning_when_defining_ok_method + assert_equal "", Sample::OK_ERRS.string + end + + def test_extension_complains_when_a_method_that_is_present + assert_match(/warning:/i, Sample::DUP_ERRS.string) + assert_match(/already exists/i, Sample::DUP_ERRS.string) + assert_match(/duplicate_method/i, Sample::DUP_ERRS.string) + assert_equal :original, Sample.new.duplicate_method + end + +end diff --git a/test/rake/test_file_creation_task.rb b/test/rake/test_file_creation_task.rb new file mode 100644 index 00000000000000..1f2af90399ee7c --- /dev/null +++ b/test/rake/test_file_creation_task.rb @@ -0,0 +1,60 @@ +require 'test/unit' +require 'fileutils' +require 'rake' +require_relative 'filecreation' + +###################################################################### +class Rake::TestFileCreationTask < Test::Unit::TestCase + include Rake + include FileCreation + + DUMMY_DIR = 'testdata/dummy_dir' + + def setup + Task.clear + end + + def teardown + FileUtils.rm_rf DUMMY_DIR + end + + def test_file_needed + create_dir DUMMY_DIR + fc_task = Task[DUMMY_DIR] + assert_equal DUMMY_DIR, fc_task.name + FileUtils.rm_rf fc_task.name + assert fc_task.needed?, "file should be needed" + FileUtils.mkdir fc_task.name + assert_equal nil, fc_task.prerequisites.collect{|n| Task[n].timestamp}.max + assert ! fc_task.needed?, "file should not be needed" + end + + def test_directory + directory DUMMY_DIR + fc_task = Task[DUMMY_DIR] + assert_equal DUMMY_DIR, fc_task.name + assert FileCreationTask === fc_task + end + + def test_no_retriggers_on_filecreate_task + create_timed_files(OLDFILE, NEWFILE) + t1 = Rake.application.intern(FileCreationTask, OLDFILE).enhance([NEWFILE]) + t2 = Rake.application.intern(FileCreationTask, NEWFILE) + assert ! t2.needed?, "Should not need to build new file" + assert ! t1.needed?, "Should not need to rebuild old file because of new" + end + + def test_no_retriggers_on_file_task + create_timed_files(OLDFILE, NEWFILE) + t1 = Rake.application.intern(FileCreationTask, OLDFILE).enhance([NEWFILE]) + t2 = Rake.application.intern(FileCreationTask, NEWFILE) + assert ! t2.needed?, "Should not need to build new file" + assert ! t1.needed?, "Should not need to rebuild old file because of new" + end + + def test_very_early_timestamp + t1 = Rake.application.intern(FileCreationTask, OLDFILE) + assert t1.timestamp < Time.now + assert t1.timestamp < Time.now - 1000000 + end +end diff --git a/test/rake/test_file_task.rb b/test/rake/test_file_task.rb new file mode 100644 index 00000000000000..1b0c0a561487f5 --- /dev/null +++ b/test/rake/test_file_task.rb @@ -0,0 +1,139 @@ +require 'test/unit' +require 'fileutils' +require 'rake' +require_relative 'filecreation' + +###################################################################### +class Rake::TestFileTask < Test::Unit::TestCase + include Rake + include FileCreation + + def setup + Task.clear + @runs = Array.new + FileUtils.rm_f NEWFILE + FileUtils.rm_f OLDFILE + end + + def test_file_need + name = "testdata/dummy" + file name + ftask = Task[name] + assert_equal name.to_s, ftask.name + File.delete(ftask.name) rescue nil + assert ftask.needed?, "file should be needed" + open(ftask.name, "w") { |f| f.puts "HI" } + assert_equal nil, ftask.prerequisites.collect{|n| Task[n].timestamp}.max + assert ! ftask.needed?, "file should not be needed" + File.delete(ftask.name) rescue nil + end + + def test_file_times_new_depends_on_old + create_timed_files(OLDFILE, NEWFILE) + + t1 = Rake.application.intern(FileTask, NEWFILE).enhance([OLDFILE]) + t2 = Rake.application.intern(FileTask, OLDFILE) + assert ! t2.needed?, "Should not need to build old file" + assert ! t1.needed?, "Should not need to rebuild new file because of old" + end + + def test_file_times_old_depends_on_new + create_timed_files(OLDFILE, NEWFILE) + + t1 = Rake.application.intern(FileTask,OLDFILE).enhance([NEWFILE]) + t2 = Rake.application.intern(FileTask, NEWFILE) + assert ! t2.needed?, "Should not need to build new file" + preq_stamp = t1.prerequisites.collect{|t| Task[t].timestamp}.max + assert_equal t2.timestamp, preq_stamp + assert t1.timestamp < preq_stamp, "T1 should be older" + assert t1.needed?, "Should need to rebuild old file because of new" + end + + def test_file_depends_on_task_depend_on_file + create_timed_files(OLDFILE, NEWFILE) + + file NEWFILE => [:obj] do |t| @runs << t.name end + task :obj => [OLDFILE] do |t| @runs << t.name end + file OLDFILE do |t| @runs << t.name end + + Task[:obj].invoke + Task[NEWFILE].invoke + assert ! @runs.include?(NEWFILE) + end + + def test_existing_file_depends_on_non_existing_file + create_file(OLDFILE) + delete_file(NEWFILE) + file NEWFILE + file OLDFILE => NEWFILE + assert_nothing_raised do Task[OLDFILE].invoke end + end + + # I have currently disabled this test. I'm not convinced that + # deleting the file target on failure is always the proper thing to + # do. I'm willing to hear input on this topic. + def ztest_file_deletes_on_failure + task :obj + file NEWFILE => [:obj] do |t| + FileUtils.touch NEWFILE + fail "Ooops" + end + assert Task[NEWFILE] + begin + Task[NEWFILE].invoke + rescue Exception + end + assert( ! File.exist?(NEWFILE), "NEWFILE should be deleted") + end + +end + +###################################################################### +class Rake::TestDirectoryTask < Test::Unit::TestCase + include Rake + + def setup + rm_rf "testdata", :verbose=>false + end + + def teardown + rm_rf "testdata", :verbose=>false + end + + def test_directory + desc "DESC" + directory "testdata/a/b/c" + assert_equal FileCreationTask, Task["testdata"].class + assert_equal FileCreationTask, Task["testdata/a"].class + assert_equal FileCreationTask, Task["testdata/a/b/c"].class + assert_nil Task["testdata"].comment + assert_equal "DESC", Task["testdata/a/b/c"].comment + assert_nil Task["testdata/a/b"].comment + verbose(false) { + Task['testdata/a/b'].invoke + } + assert File.exist?("testdata/a/b") + assert ! File.exist?("testdata/a/b/c") + end + + if Rake::Win32.windows? + def test_directory_win32 + desc "WIN32 DESC" + FileUtils.mkdir_p("testdata") + Dir.chdir("testdata") do + directory 'c:/testdata/a/b/c' + assert_equal FileCreationTask, Task['c:/testdata'].class + assert_equal FileCreationTask, Task['c:/testdata/a'].class + assert_equal FileCreationTask, Task['c:/testdata/a/b/c'].class + assert_nil Task['c:/testdata'].comment + assert_equal "WIN32 DESC", Task['c:/testdata/a/b/c'].comment + assert_nil Task['c:/testdata/a/b'].comment + verbose(false) { + Task['c:/testdata/a/b'].invoke + } + assert File.exist?('c:/testdata/a/b') + assert ! File.exist?('c:/testdata/a/b/c') + end + end + end +end diff --git a/test/rake/test_filelist.rb b/test/rake/test_filelist.rb new file mode 100644 index 00000000000000..08456a4da8629d --- /dev/null +++ b/test/rake/test_filelist.rb @@ -0,0 +1,625 @@ +require 'test/unit' +require 'tmpdir' +require 'rake' + +require_relative 'capture_stdout' + +class Rake::TestFileList < Test::Unit::TestCase + FileList = Rake::FileList + include CaptureStdout + + def setup + @oldwd = Dir.pwd + @tmpwd = Dir.mktmpdir + Dir.chdir(@tmpwd) + create_test_data + end + + def teardown +# FileList.select_default_ignore_patterns + FileUtils.rm_rf("testdata") + Dir.chdir(@oldwd) + FileUtils.rm_rf(@tmpwd) + end + + def test_delgating_methods_do_not_include_to_a_or_to_ary + assert ! FileList::DELEGATING_METHODS.include?("to_a"), "should not include to_a" + assert ! FileList::DELEGATING_METHODS.include?(:to_a), "should not include to_a" + assert ! FileList::DELEGATING_METHODS.include?("to_ary"), "should not include to_ary" + assert ! FileList::DELEGATING_METHODS.include?(:to_ary), "should not include to_ary" + end + + def test_create + fl = FileList.new + assert_equal 0, fl.size + end + + def test_create_with_args + fl = FileList.new("testdata/*.c", "x") + assert_equal ["testdata/abc.c", "testdata/x.c", "testdata/xyz.c", "x"].sort, + fl.sort + end + + def test_create_with_block + fl = FileList.new { |f| f.include("x") } + assert_equal ["x"], fl.resolve + end + + def test_create_with_brackets + fl = FileList["testdata/*.c", "x"] + assert_equal ["testdata/abc.c", "testdata/x.c", "testdata/xyz.c", "x"].sort, + fl.sort + end + + def test_create_with_brackets_and_filelist + fl = FileList[FileList["testdata/*.c", "x"]] + assert_equal ["testdata/abc.c", "testdata/x.c", "testdata/xyz.c", "x"].sort, + fl.sort + end + + def test_include_with_another_array + fl = FileList.new.include(["x", "y", "z"]) + assert_equal ["x", "y", "z"].sort, fl.sort + end + + def test_include_with_another_filelist + fl = FileList.new.include(FileList["testdata/*.c", "x"]) + assert_equal ["testdata/abc.c", "testdata/x.c", "testdata/xyz.c", "x"].sort, + fl.sort + end + + def test_append + fl = FileList.new + fl << "a.rb" << "b.rb" + assert_equal ['a.rb', 'b.rb'], fl + end + + def test_add_many + fl = FileList.new + fl.include %w(a d c) + fl.include('x', 'y') + assert_equal ['a', 'd', 'c', 'x', 'y'], fl + assert_equal ['a', 'd', 'c', 'x', 'y'], fl.resolve + end + + def test_add_return + f = FileList.new + g = f << "x" + assert_equal f.object_id, g.object_id + h = f.include("y") + assert_equal f.object_id, h.object_id + end + + def test_match + fl = FileList.new + fl.include(File.expand_path('../test*.rb', __FILE__)) + assert fl.include?(__FILE__) + assert fl.size > 3 + fl.each { |fn| assert_match(/\.rb$/, fn) } + end + + def test_add_matching + fl = FileList.new + fl << "a.java" + fl.include(File.dirname(__FILE__)+"/*.rb") + assert_equal "a.java", fl[0] + assert fl.size > 2 + assert fl.include?(__FILE__) + end + + def test_multiple_patterns + create_test_data + fl = FileList.new + fl.include('*.c', '*xist*') + assert_equal [], fl + fl.include('testdata/*.c', 'testdata/*xist*') + assert_equal [ + 'testdata/x.c', 'testdata/xyz.c', 'testdata/abc.c', 'testdata/existing' + ].sort, fl.sort + end + + def test_square_bracket_pattern + fl = FileList.new + fl.include("testdata/abc.[ch]") + assert fl.size == 2 + assert fl.include?("testdata/abc.c") + assert fl.include?("testdata/abc.h") + end + + def test_curly_bracket_pattern + fl = FileList.new + fl.include("testdata/abc.{c,h}") + assert fl.size == 2 + assert fl.include?("testdata/abc.c") + assert fl.include?("testdata/abc.h") + end + + def test_reject + fl = FileList.new + fl.include %w(testdata/x.c testdata/abc.c testdata/xyz.c testdata/existing) + fl.reject! { |fn| fn =~ %r{/x} } + assert_equal [ + 'testdata/abc.c', 'testdata/existing' + ], fl + end + + def test_exclude + fl = FileList['testdata/x.c', 'testdata/abc.c', 'testdata/xyz.c', 'testdata/existing'] + fl.each { |fn| touch fn, :verbose => false } + x = fl.exclude(%r{/x.+\.}) + assert_equal FileList, x.class + assert_equal %w(testdata/x.c testdata/abc.c testdata/existing), fl + assert_equal fl.object_id, x.object_id + fl.exclude('testdata/*.c') + assert_equal ['testdata/existing'], fl + fl.exclude('testdata/existing') + assert_equal [], fl + end + + def test_excluding_via_block + fl = FileList['testdata/a.c', 'testdata/b.c', 'testdata/xyz.c'] + fl.exclude { |fn| fn.pathmap('%n') == 'xyz' } + assert fl.exclude?("xyz.c"), "Should exclude xyz.c" + assert_equal ['testdata/a.c', 'testdata/b.c'], fl + end + + def test_exclude_return_on_create + fl = FileList['testdata/*'].exclude(/.*\.[hcx]$/) + assert_equal ['testdata/existing', 'testdata/cfiles'].sort, fl.sort + assert_equal FileList, fl.class + end + + def test_exclude_with_string_return_on_create + fl = FileList['testdata/*'].exclude('testdata/abc.c') + assert_equal %w(testdata/existing testdata/cfiles testdata/x.c testdata/abc.h testdata/abc.x testdata/xyz.c).sort, fl.sort + assert_equal FileList, fl.class + end + + def test_default_exclude + fl = FileList.new + fl.clear_exclude + fl.include("**/*~", "**/*.bak", "**/core") + assert fl.member?("testdata/core"), "Should include core" + assert fl.member?("testdata/x.bak"), "Should include .bak files" + end + + def test_unique + fl = FileList.new + fl << "x.c" << "a.c" << "b.rb" << "a.c" + assert_equal ['x.c', 'a.c', 'b.rb', 'a.c'], fl + fl.uniq! + assert_equal ['x.c', 'a.c', 'b.rb'], fl + end + + def test_to_string + fl = FileList.new + fl << "a.java" << "b.java" + assert_equal "a.java b.java", fl.to_s + assert_equal "a.java b.java", "#{fl}" + end + + def test_to_array + fl = FileList['a.java', 'b.java'] + assert_equal ['a.java', 'b.java'], fl.to_a + assert_equal Array, fl.to_a.class + assert_equal ['a.java', 'b.java'], fl.to_ary + assert_equal Array, fl.to_ary.class + end + + def test_to_s_pending + fl = FileList['testdata/abc.*'] + result = fl.to_s + assert_match(%r{testdata/abc\.c}, result) + assert_match(%r{testdata/abc\.h}, result) + assert_match(%r{testdata/abc\.x}, result) + assert_match(%r{(testdata/abc\..\b ?){2}}, result) + end + + def test_inspect_pending + fl = FileList['testdata/abc.*'] + result = fl.inspect + assert_match(%r{"testdata/abc\.c"}, result) + assert_match(%r{"testdata/abc\.h"}, result) + assert_match(%r{"testdata/abc\.x"}, result) + assert_match(%r|^\[("testdata/abc\..", ){2}"testdata/abc\.."\]$|, result) + end + + def test_sub + fl = FileList["testdata/*.c"] + f2 = fl.sub(/\.c$/, ".o") + assert_equal FileList, f2.class + assert_equal ["testdata/abc.o", "testdata/x.o", "testdata/xyz.o"].sort, + f2.sort + f3 = fl.gsub(/\.c$/, ".o") + assert_equal FileList, f3.class + assert_equal ["testdata/abc.o", "testdata/x.o", "testdata/xyz.o"].sort, + f3.sort + end + + def test_claim_to_be_a_kind_of_array + fl = FileList['testdata/*.c'] + assert fl.is_a?(Array) + assert fl.kind_of?(Array) + end + + def test_claim_to_be_a_kind_of_filelist + fl = FileList['testdata/*.c'] + assert fl.is_a?(FileList) + assert fl.kind_of?(FileList) + end + + def test_claim_to_be_a_filelist_instance + fl = FileList['testdata/*.c'] + assert fl.instance_of?(FileList) + end + + def test_dont_claim_to_be_an_array_instance + fl = FileList['testdata/*.c'] + assert ! fl.instance_of?(Array) + end + + def test_sub! + f = "x/a.c" + fl = FileList[f, "x/b.c"] + res = fl.sub!(/\.c$/, ".o") + assert_equal ["x/a.o", "x/b.o"].sort, fl.sort + assert_equal "x/a.c", f + assert_equal fl.object_id, res.object_id + end + + def test_sub_with_block + fl = FileList["src/org/onestepback/a.java", "src/org/onestepback/b.java"] +# The block version doesn't work the way I want it to ... +# f2 = fl.sub(%r{^src/(.*)\.java$}) { |x| "classes/" + $1 + ".class" } + f2 = fl.sub(%r{^src/(.*)\.java$}, "classes/\\1.class") + assert_equal [ + "classes/org/onestepback/a.class", + "classes/org/onestepback/b.class" + ].sort, + f2.sort + end + + def test_string_ext + assert_equal "one.net", "one.two".ext("net") + assert_equal "one.net", "one.two".ext(".net") + assert_equal "one.net", "one".ext("net") + assert_equal "one.net", "one".ext(".net") + assert_equal "one.two.net", "one.two.c".ext(".net") + assert_equal "one/two.net", "one/two.c".ext(".net") + assert_equal "one.x/two.net", "one.x/two.c".ext(".net") + assert_equal "one.x/two.net", "one.x/two".ext(".net") + assert_equal ".onerc.net", ".onerc.dot".ext("net") + assert_equal ".onerc.net", ".onerc".ext("net") + assert_equal ".a/.onerc.net", ".a/.onerc".ext("net") + assert_equal "one", "one.two".ext('') + assert_equal "one", "one.two".ext + assert_equal ".one", ".one.two".ext + assert_equal ".one", ".one".ext + assert_equal ".", ".".ext("c") + assert_equal "..", "..".ext("c") + # These only need to work in windows + if Rake::Win32.windows? + assert_equal "one.x\\two.net", "one.x\\two.c".ext(".net") + assert_equal "one.x\\two.net", "one.x\\two".ext(".net") + end + end + + def test_filelist_ext + assert_equal FileList['one.c', '.one.c'], + FileList['one.net', '.one'].ext('c') + end + + def test_gsub + create_test_data + fl = FileList["testdata/*.c"] + f2 = fl.gsub(/a/, "A") + assert_equal ["testdAtA/Abc.c", "testdAtA/x.c", "testdAtA/xyz.c"].sort, + f2.sort + end + + def test_gsub! + create_test_data + f = FileList["testdata/*.c"] + f.gsub!(/a/, "A") + assert_equal ["testdAtA/Abc.c", "testdAtA/x.c", "testdAtA/xyz.c"].sort, + f.sort + end + + def test_egrep_with_output + files = FileList[File.expand_path('../test*.rb', __FILE__)] + the_line_number = __LINE__ + 1 + out = capture_stdout do files.egrep(/PUGH/) end + assert_match(/:#{the_line_number}:/, out) + end + + def test_egrep_with_block + files = FileList[File.expand_path('../test*.rb', __FILE__)] + found = false + the_line_number = __LINE__ + 1 + files.egrep(/XYZZY/) do |fn, ln, line | + assert_equal __FILE__, fn + assert_equal the_line_number, ln + assert_match(/files\.egrep/, line) + found = true + end + assert found, "should have found a matching line" + end + + def test_existing + fl = FileList['testdata/abc.c', 'testdata/notthere.c'] + assert_equal ["testdata/abc.c"], fl.existing + assert fl.existing.is_a?(FileList) + end + + def test_existing! + fl = FileList['testdata/abc.c', 'testdata/notthere.c'] + result = fl.existing! + assert_equal ["testdata/abc.c"], fl + assert_equal fl.object_id, result.object_id + end + + def test_ignore_special + f = FileList['testdata/*'] + assert ! f.include?("testdata/CVS"), "Should not contain CVS" + assert ! f.include?("testdata/.svn"), "Should not contain .svn" + assert ! f.include?("testdata/.dummy"), "Should not contain dot files" + assert ! f.include?("testdata/x.bak"), "Should not contain .bak files" + assert ! f.include?("testdata/x~"), "Should not contain ~ files" + assert ! f.include?("testdata/core"), "Should not contain core files" + end + + def test_clear_ignore_patterns + f = FileList['testdata/*', 'testdata/.svn'] + f.clear_exclude + assert f.include?("testdata/abc.c") + assert f.include?("testdata/xyz.c") + assert f.include?("testdata/CVS") + assert f.include?("testdata/.svn") + assert f.include?("testdata/x.bak") + assert f.include?("testdata/x~") + end + + def test_exclude_with_alternate_file_seps + fl = FileList.new + assert fl.exclude?("x/CVS/y") + assert fl.exclude?("x\\CVS\\y") + assert fl.exclude?("x/.svn/y") + assert fl.exclude?("x\\.svn\\y") + assert fl.exclude?("x/core") + assert fl.exclude?("x\\core") + end + + def test_add_default_exclude_list + fl = FileList.new + fl.exclude(/~\d+$/) + assert fl.exclude?("x/CVS/y") + assert fl.exclude?("x\\CVS\\y") + assert fl.exclude?("x/.svn/y") + assert fl.exclude?("x\\.svn\\y") + assert fl.exclude?("x/core") + assert fl.exclude?("x\\core") + assert fl.exclude?("x/abc~1") + end + + def test_basic_array_functions + f = FileList['b', 'c', 'a'] + assert_equal 'b', f.first + assert_equal 'b', f[0] + assert_equal 'a', f.last + assert_equal 'a', f[2] + assert_equal 'a', f[-1] + assert_equal ['a', 'b', 'c'], f.sort + f.sort! + assert_equal ['a', 'b', 'c'], f + end + + def test_flatten + assert_equal ['a', 'testdata/x.c', 'testdata/xyz.c', 'testdata/abc.c'].sort, + ['a', FileList['testdata/*.c']].flatten.sort + end + + def test_clone_and_dup + a = FileList['a', 'b', 'c'] + c = a.clone + d = a.dup + a << 'd' + assert_equal ['a', 'b', 'c', 'd'], a + assert_equal ['a', 'b', 'c'], c + assert_equal ['a', 'b', 'c'], d + end + + def test_dup_and_clone_replicate_taint + a = FileList['a', 'b', 'c'] + a.taint + c = a.clone + d = a.dup + assert c.tainted?, "Clone should be tainted" + assert d.tainted?, "Dup should be tainted" + end + + def test_duped_items_will_thaw + a = FileList['a', 'b', 'c'] + a.freeze + d = a.dup + d << 'more' + assert_equal ['a', 'b', 'c', 'more'], d + end + + def test_cloned_items_stay_frozen + a = FileList['a', 'b', 'c'] + a.freeze + c = a.clone + assert_raise(TypeError, RuntimeError) do + c << 'more' + end + end + + def test_array_comparisons + fl = FileList['b', 'b'] + a = ['b', 'a'] + b = ['b', 'b'] + c = ['b', 'c'] + assert_equal( 1, fl <=> a ) + assert_equal( 0, fl <=> b ) + assert_equal( -1, fl <=> c ) + assert_equal( -1, a <=> fl ) + assert_equal( 0, b <=> fl ) + assert_equal( 1, c <=> fl ) + end + + def test_array_equality + a = FileList['a', 'b'] + b = ['a', 'b'] + assert a == b + assert b == a +# assert a.eql?(b) +# assert b.eql?(a) + assert ! a.equal?(b) + assert ! b.equal?(a) + end + + def test_enumeration_methods + a = FileList['a', 'b'] + b = a.collect { |it| it.upcase } + assert_equal ['A', 'B'], b + assert_equal FileList, b.class + + b = a.map { |it| it.upcase } + assert_equal ['A', 'B'], b + assert_equal FileList, b.class + + b = a.sort + assert_equal ['a', 'b'], b + assert_equal FileList, b.class + + b = a.sort_by { |it| it } + assert_equal ['a', 'b'], b + assert_equal FileList, b.class + + b = a.find_all { |it| it == 'b'} + assert_equal ['b'], b + assert_equal FileList, b.class + + b = a.select { |it| it.size == 1 } + assert_equal ['a', 'b'], b + assert_equal FileList, b.class + + b = a.reject { |it| it == 'b' } + assert_equal ['a'], b + assert_equal FileList, b.class + + b = a.grep(/./) + assert_equal ['a', 'b'], b + assert_equal FileList, b.class + + b = a.partition { |it| it == 'b' } + assert_equal [['b'], ['a']], b + assert_equal Array, b.class + assert_equal FileList, b[0].class + assert_equal FileList, b[1].class + + b = a.zip(['x', 'y']).to_a + assert_equal [['a', 'x'], ['b', 'y']], b + assert_equal Array, b.class + assert_equal Array, b[0].class + assert_equal Array, b[1].class + end + + def test_array_operators + a = ['a', 'b'] + b = ['c', 'd'] + f = FileList['x', 'y'] + g = FileList['w', 'z'] + + r = f + g + assert_equal ['x', 'y', 'w', 'z'], r + assert_equal FileList, r.class + + r = a + g + assert_equal ['a', 'b', 'w', 'z'], r + assert_equal Array, r.class + + r = f + b + assert_equal ['x', 'y', 'c', 'd'], r + assert_equal FileList, r.class + + r = FileList['w', 'x', 'y', 'z'] - f + assert_equal ['w', 'z'], r + assert_equal FileList, r.class + + r = FileList['w', 'x', 'y', 'z'] & f + assert_equal ['x', 'y'], r + assert_equal FileList, r.class + + r = f * 2 + assert_equal ['x', 'y', 'x', 'y'], r + assert_equal FileList, r.class + + r = f * ',' + assert_equal 'x,y', r + assert_equal String, r.class + + r = f | ['a', 'x'] + assert_equal ['a', 'x', 'y'].sort, r.sort + assert_equal FileList, r.class + end + + def test_other_array_returning_methods + f = FileList['a', nil, 'b'] + r = f.compact + assert_equal ['a', 'b'], r + assert_equal FileList, r.class + + f = FileList['a', 'b'] + r = f.concat(['x', 'y']) + assert_equal ['a', 'b', 'x', 'y'], r + assert_equal FileList, r.class + + f = FileList['a', ['b', 'c'], FileList['d', 'e']] + r = f.flatten + assert_equal ['a', 'b', 'c', 'd', 'e'], r + assert_equal FileList, r.class + + f = FileList['a', 'b', 'a'] + r = f.uniq + assert_equal ['a', 'b'], r + assert_equal FileList, r.class + + f = FileList['a', 'b', 'c', 'd'] + r = f.values_at(1,3) + assert_equal ['b', 'd'], r + assert_equal FileList, r.class + end + + def test_file_utils_can_use_filelists + cfiles = FileList['testdata/*.c'] + + cp cfiles, @cdir, :verbose => false + + assert File.exist?(File.join(@cdir, 'abc.c')) + assert File.exist?(File.join(@cdir, 'xyz.c')) + assert File.exist?(File.join(@cdir, 'x.c')) + end + + def create_test_data + verbose(false) do + + mkdir "testdata" unless File.exist? "testdata" + mkdir "testdata/CVS" rescue nil + mkdir "testdata/.svn" rescue nil + @cdir = "testdata/cfiles" + mkdir @cdir rescue nil + touch "testdata/.dummy" + touch "testdata/x.bak" + touch "testdata/x~" + touch "testdata/core" + touch "testdata/x.c" + touch "testdata/xyz.c" + touch "testdata/abc.c" + touch "testdata/abc.h" + touch "testdata/abc.x" + touch "testdata/existing" + end + end + +end diff --git a/test/rake/test_fileutils.rb b/test/rake/test_fileutils.rb new file mode 100644 index 00000000000000..1664ec80c3dd4b --- /dev/null +++ b/test/rake/test_fileutils.rb @@ -0,0 +1,262 @@ +require 'rake' +require 'test/unit' +require_relative 'filecreation' +require 'fileutils' +require 'stringio' + +class Rake::TestFileUtils < Test::Unit::TestCase + include FileCreation + BASEDIR = File.dirname(__FILE__) + ShellCommand = "#{BASEDIR}/shellcommand.rb" + ENV_RUBY = ENV['RUBY'] + + def setup + if ruby = ENV_RUBY + @oldruby = FileUtils.class_eval {remove_const :RUBY} + FileUtils.class_eval {const_set(:RUBY, ruby)} + else + @oldruby = nil + end + end + + def teardown + FileUtils.rm_rf("testdata") + FileUtils::LN_SUPPORTED[0] = true + if @oldruby + ruby = @oldruby + FileUtils.class_eval {remove_const :RUBY} + FileUtils.class_eval {const_set(:RUBY, ruby)} + end + end + + def test_rm_one_file + create_file("testdata/a") + FileUtils.rm_rf "testdata/a" + assert ! File.exist?("testdata/a") + end + + def test_rm_two_files + create_file("testdata/a") + create_file("testdata/b") + FileUtils.rm_rf ["testdata/a", "testdata/b"] + assert ! File.exist?("testdata/a") + assert ! File.exist?("testdata/b") + end + + def test_rm_filelist + list = Rake::FileList.new << "testdata/a" << "testdata/b" + list.each { |fn| create_file(fn) } + FileUtils.rm_r list + assert ! File.exist?("testdata/a") + assert ! File.exist?("testdata/b") + end + + def test_ln + create_dir("testdata") + open("testdata/a", "w") { |f| f.puts "TEST_LN" } + RakeFileUtils.safe_ln("testdata/a", "testdata/b", :verbose => false) + assert_equal "TEST_LN\n", open("testdata/b") { |f| f.read } + end + + class BadLink + include RakeFileUtils + attr_reader :cp_args + def initialize(klass) + @failure_class = klass + end + def cp(*args) + @cp_args = args + end + def ln(*args) + fail @failure_class, "ln not supported" + end + public :safe_ln + end + + def test_safe_ln_failover_to_cp_on_standard_error + FileUtils::LN_SUPPORTED[0] = true + c = BadLink.new(StandardError) + c.safe_ln "a", "b" + assert_equal ['a', 'b'], c.cp_args + c.safe_ln "x", "y" + assert_equal ['x', 'y'], c.cp_args + end + + def test_safe_ln_failover_to_cp_on_not_implemented_error + FileUtils::LN_SUPPORTED[0] = true + c = BadLink.new(NotImplementedError) + c.safe_ln "a", "b" + assert_equal ['a', 'b'], c.cp_args + end + + def test_safe_ln_fails_on_script_error + FileUtils::LN_SUPPORTED[0] = true + c = BadLink.new(ScriptError) + assert_raise(ScriptError) do c.safe_ln "a", "b" end + end + + def test_verbose + verbose true + assert_equal true, verbose + verbose false + assert_equal false, verbose + verbose(true) { + assert_equal true, verbose + } + assert_equal false, verbose + end + + def test_nowrite + nowrite true + assert_equal true, nowrite + nowrite false + assert_equal false, nowrite + nowrite(true){ + assert_equal true, nowrite + } + assert_equal false, nowrite + end + + def test_file_utils_methods_are_available_at_top_level + create_file("testdata/a") + verbose(false) do + rm_rf "testdata/a" + end + assert ! File.exist?("testdata/a") + end + + def test_fileutils_methods_dont_leak + obj = Object.new + assert_raise(NoMethodError) { obj.copy } # from FileUtils + assert_raise(NoMethodError) { obj.ruby } # from RubyFileUtils + end + + def test_sh + verbose(false) { sh %{#{RUBY} #{ShellCommand}} } + assert true, "should not fail" + end + + # If the :sh method is invoked directly from a test unit instance + # (under mini/test), the mini/test version of fail is invoked rather + # than the kernel version of fail. So we run :sh from within a + # non-test class to avoid the problem. + class Sh + include FileUtils + def run(*args) + sh(*args) + end + def self.run(*args) + new.run(*args) + end + end + + def test_sh_with_a_single_string_argument + ENV['RAKE_TEST_SH'] = 'someval' + verbose(false) { + sh %{#{RUBY} #{BASEDIR}/check_expansion.rb #{env_var} someval} + } + end + + def test_sh_with_multiple_arguments + ENV['RAKE_TEST_SH'] = 'someval' + verbose(false) { + Sh.run RUBY, File.expand_path('../check_no_expansion.rb', __FILE__), env_var, 'someval' + } + end + + def test_sh_failure + assert_raise(RuntimeError) { + verbose(false) { Sh.run "#{RUBY} #{File.expand_path('../shellcommand.rb', __FILE__)} 1" } + } + end + + def test_sh_special_handling + count = 0 + verbose(false) { + sh(%{#{RUBY} #{ShellCommand}}) do |ok, res| + assert(ok) + assert_equal 0, res.exitstatus + count += 1 + end + sh(%{#{RUBY} #{ShellCommand} 1}) do |ok, res| + assert(!ok) + assert_equal 1, res.exitstatus + count += 1 + end + } + assert_equal 2, count, "Block count should be 2" + end + + def test_sh_noop + verbose(false) { sh %{#{ShellCommand} 1}, :noop=>true } + assert true, "should not fail" + end + + def test_sh_bad_option + ex = assert_raise(ArgumentError) { + verbose(false) { sh %{#{ShellCommand}}, :bad_option=>true } + } + assert_match(/bad_option/, ex.message) + end + + def test_sh_verbose + out = redirect_stderr { + verbose(true) { + sh %{#{ShellCommand}}, :noop=>true + } + } + assert_match(/^#{Regexp.quote(ShellCommand)}$/o, out) + end + + def test_sh_no_verbose + out = redirect_stderr { + verbose(false) { + sh %{#{ShellCommand}}, :noop=>true + } + } + assert_equal '', out + end + + def test_ruby_with_a_single_string_argument + ENV['RAKE_TEST_SH'] = 'someval' + verbose(false) { + ruby %{#{BASEDIR}/check_expansion.rb #{env_var} someval} + } + end + + def test_ruby_with_multiple_arguments + ENV['RAKE_TEST_SH'] = 'someval' + verbose(false) { + ruby "#{BASEDIR}/check_no_expansion.rb", env_var, 'someval' + } + end + + def test_split_all + assert_equal ['a'], RakeFileUtils.split_all('a') + assert_equal ['..'], RakeFileUtils.split_all('..') + assert_equal ['/'], RakeFileUtils.split_all('/') + assert_equal ['a', 'b'], RakeFileUtils.split_all('a/b') + assert_equal ['/', 'a', 'b'], RakeFileUtils.split_all('/a/b') + assert_equal ['..', 'a', 'b'], RakeFileUtils.split_all('../a/b') + end + + private + + def redirect_stderr + old_err = $stderr + $stderr = StringIO.new + yield + $stderr.string + ensure + $stderr = old_err + end + + def windows? + ! File::ALT_SEPARATOR.nil? + end + + def env_var + windows? ? '%RAKE_TEST_SH%' : '$RAKE_TEST_SH' + end + +end diff --git a/test/rake/test_invocation_chain.rb b/test/rake/test_invocation_chain.rb new file mode 100644 index 00000000000000..2b064937739300 --- /dev/null +++ b/test/rake/test_invocation_chain.rb @@ -0,0 +1,75 @@ +require 'test/unit' +require 'rake' + +###################################################################### +class Rake::TestAnEmptyInvocationChain < Test::Unit::TestCase + + def setup + @empty = Rake::InvocationChain::EMPTY + end + + def test_should_be_able_to_add_members + assert_nothing_raised do + @empty.append("A") + end + end + + def test_to_s + assert_equal "TOP", @empty.to_s + end +end + +###################################################################### +class Rake::TestAnInvocationChainWithOneMember < Test::Unit::TestCase + + def setup + @empty = Rake::InvocationChain::EMPTY + @first_member = "A" + @chain = @empty.append(@first_member) + end + + def test_should_report_first_member_as_a_member + assert @chain.member?(@first_member) + end + + def test_should_fail_when_adding_original_member + ex = assert_raise RuntimeError do + @chain.append(@first_member) + end + assert_match(/circular +dependency/i, ex.message) + assert_match(/A.*=>.*A/, ex.message) + end + + def test_to_s + assert_equal "TOP => A", @chain.to_s + end + +end + +###################################################################### +class Rake::TestAnInvocationChainWithMultipleMember < Test::Unit::TestCase + + def setup + @first_member = "A" + @second_member = "B" + ch = Rake::InvocationChain::EMPTY.append(@first_member) + @chain = ch.append(@second_member) + end + + def test_should_report_first_member_as_a_member + assert @chain.member?(@first_member) + end + + def test_should_report_second_member_as_a_member + assert @chain.member?(@second_member) + end + + def test_should_fail_when_adding_original_member + ex = assert_raise RuntimeError do + @chain.append(@first_member) + end + assert_match(/A.*=>.*B.*=>.*A/, ex.message) + end +end + + diff --git a/test/rake/test_makefile_loader.rb b/test/rake/test_makefile_loader.rb new file mode 100644 index 00000000000000..15933b1f9bb133 --- /dev/null +++ b/test/rake/test_makefile_loader.rb @@ -0,0 +1,24 @@ +require 'test/unit' +require 'rake' +require 'rake/loaders/makefile' + +class Rake::TestMakefileLoader < Test::Unit::TestCase + include Rake + + def test_parse + Task.clear + loader = Rake::MakefileLoader.new + loader.load("#{File.dirname(__FILE__)}/data/sample.mf") + %w(a b c d).each do |t| + assert Task.task_defined?(t), "#{t} should be a defined task" + end + assert_equal %w(a1 a2 a3 a4 a5 a6 a7).sort, Task['a'].prerequisites.sort + assert_equal %w(b1 b2 b3 b4 b5 b6 b7).sort, Task['b'].prerequisites.sort + assert_equal %w(c1).sort, Task['c'].prerequisites.sort + assert_equal %w(d1 d2).sort, Task['d'].prerequisites.sort + assert_equal %w(e1 f1).sort, Task['e'].prerequisites.sort + assert_equal %w(e1 f1).sort, Task['f'].prerequisites.sort + assert_equal ["g1", "g 2", "g 3", "g4"].sort, Task['g 0'].prerequisites.sort + assert_equal 7, Task.tasks.size + end +end diff --git a/test/rake/test_multitask.rb b/test/rake/test_multitask.rb new file mode 100644 index 00000000000000..9711e7e77ec505 --- /dev/null +++ b/test/rake/test_multitask.rb @@ -0,0 +1,43 @@ +require 'test/unit' +require 'rake' + +###################################################################### +class Rake::TestMultiTask < Test::Unit::TestCase + include Rake + + def setup + Task.clear + @runs = Array.new + end + + def test_running_multitasks + task :a do 3.times do |i| @runs << "A#{i}"; sleep 0.01; end end + task :b do 3.times do |i| @runs << "B#{i}"; sleep 0.01; end end + multitask :both => [:a, :b] + Task[:both].invoke + assert_equal 6, @runs.size + assert @runs.index("A0") < @runs.index("A1") + assert @runs.index("A1") < @runs.index("A2") + assert @runs.index("B0") < @runs.index("B1") + assert @runs.index("B1") < @runs.index("B2") + end + + def test_all_multitasks_wait_on_slow_prerequisites + task :slow do 3.times do |i| @runs << "S#{i}"; sleep 0.05 end end + task :a => [:slow] do 3.times do |i| @runs << "A#{i}"; sleep 0.01 end end + task :b => [:slow] do 3.times do |i| @runs << "B#{i}"; sleep 0.01 end end + multitask :both => [:a, :b] + Task[:both].invoke + assert_equal 9, @runs.size + assert @runs.index("S0") < @runs.index("S1") + assert @runs.index("S1") < @runs.index("S2") + assert @runs.index("S2") < @runs.index("A0") + assert @runs.index("S2") < @runs.index("B0") + assert @runs.index("A0") < @runs.index("A1") + assert @runs.index("A1") < @runs.index("A2") + assert @runs.index("B0") < @runs.index("B1") + assert @runs.index("B1") < @runs.index("B2") + end +end + + diff --git a/test/rake/test_namespace.rb b/test/rake/test_namespace.rb new file mode 100644 index 00000000000000..bd513b6a10b0c1 --- /dev/null +++ b/test/rake/test_namespace.rb @@ -0,0 +1,44 @@ +require 'test/unit' +require 'rake' + +class Rake::TestNameSpace < Test::Unit::TestCase + + class TM + include Rake::TaskManager + end + + def test_namespace_creation + mgr = TM.new + ns = Rake::NameSpace.new(mgr, []) + assert_not_nil ns + end + + def test_namespace_lookup + mgr = TM.new + ns = mgr.in_namespace("n") do + mgr.define_task(Rake::Task, "t") + end + + assert_not_nil ns["t"] + assert_equal mgr["n:t"], ns["t"] + end + + def test_namespace_reports_tasks_it_owns + mgr = TM.new + nns = nil + ns = mgr.in_namespace("n") do + mgr.define_task(Rake::Task, :x) + mgr.define_task(Rake::Task, :y) + nns = mgr.in_namespace("nn") do + mgr.define_task(Rake::Task, :z) + end + end + mgr.in_namespace("m") do + mgr.define_task(Rake::Task, :x) + end + + assert_equal ["n:nn:z", "n:x", "n:y"], + ns.tasks.map { |tsk| tsk.name } + assert_equal ["n:nn:z"], nns.tasks.map {|t| t.name} + end +end diff --git a/test/rake/test_package_task.rb b/test/rake/test_package_task.rb new file mode 100644 index 00000000000000..68037390dacbee --- /dev/null +++ b/test/rake/test_package_task.rb @@ -0,0 +1,105 @@ +require 'test/unit' +require 'rake/packagetask' + +class Rake::TestPackageTask < Test::Unit::TestCase + include Rake + + def test_create + pkg = Rake::PackageTask.new("pkgr", "1.2.3") { |p| + p.package_files << "install.rb" + p.package_files.include( + '[A-Z]*', + 'bin/**/*', + 'lib/**/*.rb', + 'test/**/*.rb', + 'doc/**/*', + 'build/rubyapp.rb', + '*.blurb') + p.package_files.exclude(/\bCVS\b/) + p.package_files.exclude(/~$/) + p.package_dir = 'pkg' + p.need_tar = true + p.need_tar_gz = true + p.need_tar_bz2 = true + p.need_zip = true + } + assert_equal "pkg", pkg.package_dir + assert pkg.package_files.include?("bin/rake") + assert "pkgr", pkg.name + assert "1.2.3", pkg.version + assert Task[:package] + assert Task['pkg/pkgr-1.2.3.tgz'] + assert Task['pkg/pkgr-1.2.3.tar.gz'] + assert Task['pkg/pkgr-1.2.3.tar.bz2'] + assert Task['pkg/pkgr-1.2.3.zip'] + assert Task["pkg/pkgr-1.2.3"] + assert Task[:clobber_package] + assert Task[:repackage] + end + + def test_missing_version + assert_raise(RuntimeError) { + pkg = Rake::PackageTask.new("pkgr") { |p| } + } + end + + def test_no_version + pkg = Rake::PackageTask.new("pkgr", :noversion) { |p| } + assert "pkgr", pkg.send(:package_name) + end + + def test_clone + pkg = Rake::PackageTask.new("x", :noversion) + p2 = pkg.clone + pkg.package_files << "y" + p2.package_files << "x" + assert_equal ["y"], pkg.package_files + assert_equal ["x"], p2.package_files + end +end + + +require 'rake/gempackagetask' + +class Rake::TestGemPackageTask < Test::Unit::TestCase + def test_gem_package + gem = Gem::Specification.new do |g| + g.name = "pkgr" + g.version = "1.2.3" + g.files = FileList["x"].resolve + end + pkg = Rake::GemPackageTask.new(gem) do |p| + p.package_files << "y" + end + assert_equal ["x", "y"], pkg.package_files + assert_equal "pkgr-1.2.3.gem", pkg.gem_file + end + + def test_gem_package_with_current_platform + gem = Gem::Specification.new do |g| + g.name = "pkgr" + g.version = "1.2.3" + g.files = FileList["x"].resolve + g.platform = Gem::Platform::CURRENT + end + pkg = Rake::GemPackageTask.new(gem) do |p| + p.package_files << "y" + end + assert_equal ["x", "y"], pkg.package_files + assert_match(/^pkgr-1\.2\.3-(\S+)\.gem$/, pkg.gem_file) + end + + def test_gem_package_with_ruby_platform + gem = Gem::Specification.new do |g| + g.name = "pkgr" + g.version = "1.2.3" + g.files = FileList["x"].resolve + g.platform = Gem::Platform::RUBY + end + pkg = Rake::GemPackageTask.new(gem) do |p| + p.package_files << "y" + end + assert_equal ["x", "y"], pkg.package_files + assert_equal "pkgr-1.2.3.gem", pkg.gem_file + end +end diff --git a/test/rake/test_pathmap.rb b/test/rake/test_pathmap.rb new file mode 100644 index 00000000000000..257529ab87b55e --- /dev/null +++ b/test/rake/test_pathmap.rb @@ -0,0 +1,207 @@ +require 'test/unit' +require 'rake' + +# ==================================================================== +class Rake::TestPathMap < Test::Unit::TestCase + + def test_returns_self_with_no_args + assert_equal "abc.rb", "abc.rb".pathmap + end + + def test_s_returns_file_separator + sep = File::ALT_SEPARATOR || File::SEPARATOR + assert_equal sep, "abc.rb".pathmap("%s") + assert_equal sep, "".pathmap("%s") + assert_equal "a#{sep}b", "a/b".pathmap("%d%s%f") + end + + def test_f_returns_basename + assert_equal "abc.rb", "abc.rb".pathmap("%f") + assert_equal "abc.rb", "this/is/a/dir/abc.rb".pathmap("%f") + assert_equal "abc.rb", "/this/is/a/dir/abc.rb".pathmap("%f") + end + + def test_n_returns_basename_without_extension + assert_equal "abc", "abc.rb".pathmap("%n") + assert_equal "abc", "abc".pathmap("%n") + assert_equal "abc", "this/is/a/dir/abc.rb".pathmap("%n") + assert_equal "abc", "/this/is/a/dir/abc.rb".pathmap("%n") + assert_equal "abc", "/this/is/a/dir/abc".pathmap("%n") + end + + def test_d_returns_dirname + assert_equal ".", "abc.rb".pathmap("%d") + assert_equal "/", "/abc".pathmap("%d") + assert_equal "this/is/a/dir", "this/is/a/dir/abc.rb".pathmap("%d") + assert_equal "/this/is/a/dir", "/this/is/a/dir/abc.rb".pathmap("%d") + end + + def test_9d_returns_partial_dirname + assert_equal "this/is", "this/is/a/dir/abc.rb".pathmap("%2d") + assert_equal "this", "this/is/a/dir/abc.rb".pathmap("%1d") + assert_equal ".", "this/is/a/dir/abc.rb".pathmap("%0d") + assert_equal "dir", "this/is/a/dir/abc.rb".pathmap("%-1d") + assert_equal "a/dir", "this/is/a/dir/abc.rb".pathmap("%-2d") + assert_equal "this/is/a/dir", "this/is/a/dir/abc.rb".pathmap("%100d") + assert_equal "this/is/a/dir", "this/is/a/dir/abc.rb".pathmap("%-100d") + end + + def test_x_returns_extension + assert_equal "", "abc".pathmap("%x") + assert_equal ".rb", "abc.rb".pathmap("%x") + assert_equal ".rb", "abc.xyz.rb".pathmap("%x") + assert_equal "", ".depends".pathmap("%x") + assert_equal "", "dir/.depends".pathmap("%x") + end + + def test_X_returns_everything_but_extension + assert_equal "abc", "abc".pathmap("%X") + assert_equal "abc", "abc.rb".pathmap("%X") + assert_equal "abc.xyz", "abc.xyz.rb".pathmap("%X") + assert_equal "ab.xyz", "ab.xyz.rb".pathmap("%X") + assert_equal "a.xyz", "a.xyz.rb".pathmap("%X") + assert_equal "abc", "abc.rb".pathmap("%X") + assert_equal "ab", "ab.rb".pathmap("%X") + assert_equal "a", "a.rb".pathmap("%X") + assert_equal ".depends", ".depends".pathmap("%X") + assert_equal "a/dir/.depends", "a/dir/.depends".pathmap("%X") + assert_equal "/.depends", "/.depends".pathmap("%X") + end + + def test_p_returns_entire_pathname + assert_equal "abc.rb", "abc.rb".pathmap("%p") + assert_equal "this/is/a/dir/abc.rb", "this/is/a/dir/abc.rb".pathmap("%p") + assert_equal "/this/is/a/dir/abc.rb", "/this/is/a/dir/abc.rb".pathmap("%p") + end + + def test_dash_returns_empty_string + assert_equal "", "abc.rb".pathmap("%-") + assert_equal "abc.rb", "abc.rb".pathmap("%X%-%x") + end + + def test_percent_percent_returns_percent + assert_equal "a%b", "".pathmap("a%%b") + end + + def test_undefined_percent_causes_error + ex = assert_raise(ArgumentError) { + "dir/abc.rb".pathmap("%z") + } + end + + def test_pattern_returns_substitutions + assert_equal "bin/org/osb", + "src/org/osb/Xyz.java".pathmap("%{src,bin}d") + end + + def test_pattern_can_use_backreferences + assert_equal "dir/hi/is", "dir/this/is".pathmap("%{t(hi)s,\\1}p") + end + + def test_pattern_with_star_replacement_string_uses_block + assert_equal "src/ORG/osb", + "src/org/osb/Xyz.java".pathmap("%{/org,*}d") { |d| d.upcase } + assert_equal "Xyz.java", + "src/org/osb/Xyz.java".pathmap("%{.*,*}f") { |f| f.capitalize } + end + + def test_pattern_with_no_replacement_nor_block_substitutes_empty_string + assert_equal "bc.rb", "abc.rb".pathmap("%{a}f") + end + + def test_pattern_works_with_certain_valid_operators + assert_equal "dir/xbc.rb", "dir/abc.rb".pathmap("%{a,x}p") + assert_equal "d1r", "dir/abc.rb".pathmap("%{i,1}d") + assert_equal "xbc.rb", "dir/abc.rb".pathmap("%{a,x}f") + assert_equal ".Rb", "dir/abc.rb".pathmap("%{r,R}x") + assert_equal "xbc", "dir/abc.rb".pathmap("%{a,x}n") + end + + def test_multiple_patterns + assert_equal "this/is/b/directory/abc.rb", + "this/is/a/dir/abc.rb".pathmap("%{a,b;dir,\\0ectory}p") + end + + def test_partial_directory_selection_works_with_patterns + assert_equal "this/is/a/long", + "this/is/a/really/long/path/ok.rb".pathmap("%{/really/,/}5d") + end + + def test_pattern_with_invalid_operator + ex = assert_raise(ArgumentError) do + "abc.xyz".pathmap("%{src,bin}z") + end + assert_match(/unknown.*pathmap.*spec.*z/i, ex.message) + end + + def test_works_with_windows_separators + if File::ALT_SEPARATOR + assert_equal "abc", 'dir\abc.rb'.pathmap("%n") + assert_equal 'this\is\a\dir', + 'this\is\a\dir\abc.rb'.pathmap("%d") + end + end + + def test_complex_patterns + sep = "".pathmap("%s") + assert_equal "dir/abc.rb", "dir/abc.rb".pathmap("%d/%n%x") + assert_equal "./abc.rb", "abc.rb".pathmap("%d/%n%x") + assert_equal "Your file extension is '.rb'", + "dir/abc.rb".pathmap("Your file extension is '%x'") + assert_equal "bin/org/onstepback/proj/A.class", + "src/org/onstepback/proj/A.java".pathmap("%{src,bin}d/%n.class") + assert_equal "src_work/bin/org/onstepback/proj/A.class", + "src_work/src/org/onstepback/proj/A.java".pathmap('%{\bsrc\b,bin}X.class') + assert_equal ".depends.bak", ".depends".pathmap("%X.bak") + assert_equal "d#{sep}a/b/c#{sep}file.txt", "a/b/c/d/file.txt".pathmap("%-1d%s%3d%s%f") + end +end + +class Rake::TestPathMapExplode < Test::Unit::TestCase + def setup + String.class_eval { public :pathmap_explode } + end + + def teardown + String.class_eval { protected :pathmap_explode } + end + + def test_explode + assert_equal ['a'], 'a'.pathmap_explode + assert_equal ['a', 'b'], 'a/b'.pathmap_explode + assert_equal ['a', 'b', 'c'], 'a/b/c'.pathmap_explode + assert_equal ['/', 'a'], '/a'.pathmap_explode + assert_equal ['/', 'a', 'b'], '/a/b'.pathmap_explode + assert_equal ['/', 'a', 'b', 'c'], '/a/b/c'.pathmap_explode + if File::ALT_SEPARATOR + assert_equal ['c:.', 'a'], 'c:a'.pathmap_explode + assert_equal ['c:.', 'a', 'b'], 'c:a/b'.pathmap_explode + assert_equal ['c:.', 'a', 'b', 'c'], 'c:a/b/c'.pathmap_explode + assert_equal ['c:/', 'a'], 'c:/a'.pathmap_explode + assert_equal ['c:/', 'a', 'b'], 'c:/a/b'.pathmap_explode + assert_equal ['c:/', 'a', 'b', 'c'], 'c:/a/b/c'.pathmap_explode + end + end +end + +class Rake::TestPathMapPartial < Test::Unit::TestCase + def test_pathmap_partial + @path = "1/2/file" + def @path.call(n) + pathmap_partial(n) + end + assert_equal("1", @path.call(1)) + assert_equal("1/2", @path.call(2)) + assert_equal("1/2", @path.call(3)) + assert_equal(".", @path.call(0)) + assert_equal("2", @path.call(-1)) + assert_equal("1/2", @path.call(-2)) + assert_equal("1/2", @path.call(-3)) + end +end + +class Rake::TestFileListPathMap < Test::Unit::TestCase + def test_file_list_supports_pathmap + assert_equal ['a', 'b'], FileList['dir/a.rb', 'dir/b.rb'].pathmap("%n") + end +end diff --git a/test/rake/test_pseudo_status.rb b/test/rake/test_pseudo_status.rb new file mode 100644 index 00000000000000..8bafd5f80abc73 --- /dev/null +++ b/test/rake/test_pseudo_status.rb @@ -0,0 +1,23 @@ +require 'test/unit' +require 'rake' + +require_relative 'capture_stdout' + +class Rake::TestPseudoStatus < Test::Unit::TestCase + def test_with_zero_exit_status + s = Rake::PseudoStatus.new + assert_equal 0, s.exitstatus + assert_equal 0, s.to_i + assert_equal 0, s >> 8 + assert ! s.stopped? + assert s.exited? + end + def test_with_99_exit_status + s = Rake::PseudoStatus.new(99) + assert_equal 99, s.exitstatus + assert_equal 25344, s.to_i + assert_equal 99, s >> 8 + assert ! s.stopped? + assert s.exited? + end +end diff --git a/test/rake/test_rake.rb b/test/rake/test_rake.rb new file mode 100644 index 00000000000000..52230fe148e64d --- /dev/null +++ b/test/rake/test_rake.rb @@ -0,0 +1,39 @@ +require 'test/unit' +require 'rake' + +class Rake::TestRake < Test::Unit::TestCase + def test_each_dir_parent + assert_equal ['a'], alldirs('a') + assert_equal ['a/b', 'a'], alldirs('a/b') + assert_equal ['/a/b', '/a', '/'], alldirs('/a/b') + if File.dirname("c:/foo") == "c:" + # Under Unix + assert_equal ['c:/a/b', 'c:/a', 'c:'], alldirs('c:/a/b') + assert_equal ['c:a/b', 'c:a'], alldirs('c:a/b') + else + # Under Windows + assert_equal ['c:/a/b', 'c:/a', 'c:/'], alldirs('c:/a/b') + assert_equal ['c:a/b', 'c:a'], alldirs('c:a/b') + end + end + + def alldirs(fn) + result = [] + Rake.each_dir_parent(fn) { |d| result << d } + result + end + + def test_can_override_application + old_app = Rake.application + fake_app = Object.new + Rake.application = fake_app + assert_equal fake_app, Rake.application + ensure + Rake.application = old_app + end + + def test_original_dir_reports_current_dir + assert_equal Dir.pwd, Rake.original_dir + end + +end diff --git a/test/rake/test_rdoc_task.rb b/test/rake/test_rdoc_task.rb new file mode 100644 index 00000000000000..362c2c6800110d --- /dev/null +++ b/test/rake/test_rdoc_task.rb @@ -0,0 +1,84 @@ +require 'test/unit' +require 'rake/rdoctask' + +class Rake::TestRDocTask < Test::Unit::TestCase + include Rake + + def setup + Task.clear + end + + def test_tasks_creation + Rake::RDocTask.new + assert Task[:rdoc] + assert Task[:clobber_rdoc] + assert Task[:rerdoc] + end + + def test_tasks_creation_with_custom_name_symbol + rd = Rake::RDocTask.new(:rdoc_dev) + assert Task[:rdoc_dev] + assert Task[:clobber_rdoc_dev] + assert Task[:rerdoc_dev] + assert_equal :rdoc_dev, rd.name + end + + def test_tasks_creation_with_custom_name_string + rd = Rake::RDocTask.new("rdoc_dev") + assert Task[:rdoc_dev] + assert Task[:clobber_rdoc_dev] + assert Task[:rerdoc_dev] + assert_equal "rdoc_dev", rd.name + end + + def test_tasks_creation_with_custom_name_hash + options = { :rdoc => "rdoc", :clobber_rdoc => "rdoc:clean", :rerdoc => "rdoc:force" } + rd = Rake::RDocTask.new(options) + assert Task[:"rdoc"] + assert Task[:"rdoc:clean"] + assert Task[:"rdoc:force"] + assert_raises(RuntimeError) { Task[:clobber_rdoc] } + assert_equal options, rd.name + end + + def test_tasks_creation_with_custom_name_hash_will_use_default_if_an_option_isnt_given + rd = Rake::RDocTask.new(:clobber_rdoc => "rdoc:clean") + assert Task[:rdoc] + assert Task[:"rdoc:clean"] + assert Task[:rerdoc] + end + + def test_tasks_creation_with_custom_name_hash_raises_exception_if_invalid_option_given + assert_raises(ArgumentError) do + Rake::RDocTask.new(:foo => "bar") + end + + begin + Rake::RDocTask.new(:foo => "bar") + rescue ArgumentError => e + assert_match(/foo/, e.message) + end + end + + def test_inline_source_is_enabled_by_default + rd = Rake::RDocTask.new + assert rd.option_list.include?('--inline-source') + end + + def test_inline_source_option_is_only_appended_if_option_not_already_given + rd = Rake::RDocTask.new + rd.options << '--inline-source' + assert_equal 1, rd.option_list.grep('--inline-source').size + + rd = Rake::RDocTask.new + rd.options << '-S' + assert_equal 1, rd.option_list.grep('-S').size + assert_equal 0, rd.option_list.grep('--inline-source').size + end + + def test_inline_source_option_can_be_disabled + rd = Rake::RDocTask.new + rd.inline_source = false + assert !rd.option_list.include?('--inline-source') + end +end diff --git a/test/rake/test_require.rb b/test/rake/test_require.rb new file mode 100644 index 00000000000000..8e6e2e9d5be1f8 --- /dev/null +++ b/test/rake/test_require.rb @@ -0,0 +1,32 @@ +require 'test/unit' +require 'rake' + +# ==================================================================== +class Rake::TestRequire < Test::Unit::TestCase + RakeLibDir = File.dirname(__FILE__) + '/data/rakelib' + + def test_can_load_rake_library + app = Rake::Application.new + assert app.instance_eval { + rake_require("test1", [RakeLibDir], []) + } + end + + def test_wont_reload_rake_library + app = Rake::Application.new + assert ! app.instance_eval { + rake_require("test2", [RakeLibDir], ['test2']) + } + end + + def test_throws_error_if_library_not_found + app = Rake::Application.new + ex = assert_raise(LoadError) { + assert app.instance_eval { + rake_require("testx", [RakeLibDir], []) + } + } + assert_match(/x/, ex.message) + end +end + diff --git a/test/rake/test_rules.rb b/test/rake/test_rules.rb new file mode 100644 index 00000000000000..6e4f22424dafde --- /dev/null +++ b/test/rake/test_rules.rb @@ -0,0 +1,345 @@ +require 'test/unit' +require 'fileutils' +require 'rake' +require_relative 'filecreation' + +###################################################################### +class Rake::TestRules < Test::Unit::TestCase + include Rake + include FileCreation + + SRCFILE = "testdata/abc.c" + SRCFILE2 = "testdata/xyz.c" + FTNFILE = "testdata/abc.f" + OBJFILE = "testdata/abc.o" + FOOFILE = "testdata/foo" + DOTFOOFILE = "testdata/.foo" + + def setup + Task.clear + @runs = [] + end + + def teardown + FileList['testdata/*'].uniq.each do |f| rm_r(f, :verbose=>false) end + end + + def test_multiple_rules1 + create_file(FTNFILE) + delete_file(SRCFILE) + delete_file(OBJFILE) + rule(/\.o$/ => ['.c']) do @runs << :C end + rule(/\.o$/ => ['.f']) do @runs << :F end + t = Task[OBJFILE] + t.invoke + Task[OBJFILE].invoke + assert_equal [:F], @runs + end + + def test_multiple_rules2 + create_file(FTNFILE) + delete_file(SRCFILE) + delete_file(OBJFILE) + rule(/\.o$/ => ['.f']) do @runs << :F end + rule(/\.o$/ => ['.c']) do @runs << :C end + Task[OBJFILE].invoke + assert_equal [:F], @runs + end + + def test_create_with_source + create_file(SRCFILE) + rule(/\.o$/ => ['.c']) do |t| + @runs << t.name + assert_equal OBJFILE, t.name + assert_equal SRCFILE, t.source + end + Task[OBJFILE].invoke + assert_equal [OBJFILE], @runs + end + + def test_single_dependent + create_file(SRCFILE) + rule(/\.o$/ => '.c') do |t| + @runs << t.name + end + Task[OBJFILE].invoke + assert_equal [OBJFILE], @runs + end + + def test_rule_can_be_created_by_string + create_file(SRCFILE) + rule '.o' => ['.c'] do |t| + @runs << t.name + end + Task[OBJFILE].invoke + assert_equal [OBJFILE], @runs + end + + def test_rule_prereqs_can_be_created_by_string + create_file(SRCFILE) + rule '.o' => '.c' do |t| + @runs << t.name + end + Task[OBJFILE].invoke + assert_equal [OBJFILE], @runs + end + + def test_plain_strings_as_dependents_refer_to_files + create_file(SRCFILE) + rule '.o' => SRCFILE do |t| + @runs << t.name + end + Task[OBJFILE].invoke + assert_equal [OBJFILE], @runs + end + + def test_file_names_beginning_with_dot_can_be_tricked_into_refering_to_file + verbose(false) do + chdir("testdata") do + create_file('.foo') + rule '.o' => "./.foo" do |t| + @runs << t.name + end + Task[OBJFILE].invoke + assert_equal [OBJFILE], @runs + end + end + end + + def test_file_names_beginning_with_dot_can_be_wrapped_in_lambda + verbose(false) do + chdir("testdata") do + create_file(".foo") + rule '.o' => lambda{".foo"} do |t| + @runs << "#{t.name} - #{t.source}" + end + Task[OBJFILE].invoke + assert_equal ["#{OBJFILE} - .foo"], @runs + end + end + end + + def test_file_names_containing_percent_can_be_wrapped_in_lambda + verbose(false) do + chdir("testdata") do + create_file("foo%x") + rule '.o' => lambda{"foo%x"} do |t| + @runs << "#{t.name} - #{t.source}" + end + Task[OBJFILE].invoke + assert_equal ["#{OBJFILE} - foo%x"], @runs + end + end + end + + def test_non_extension_rule_name_refers_to_file + verbose(false) do + chdir("testdata") do + create_file("abc.c") + rule "abc" => '.c' do |t| + @runs << t.name + end + Task["abc"].invoke + assert_equal ["abc"], @runs + end + end + end + + def test_pathmap_automatically_applies_to_name + verbose(false) do + chdir("testdata") do + create_file("zzabc.c") + rule ".o" => 'zz%{x,a}n.c' do |t| + @runs << "#{t.name} - #{t.source}" + end + Task["xbc.o"].invoke + assert_equal ["xbc.o - zzabc.c"], @runs + end + end + end + + def test_plain_strings_are_just_filenames + verbose(false) do + chdir("testdata") do + create_file("plainname") + rule ".o" => 'plainname' do |t| + @runs << "#{t.name} - #{t.source}" + end + Task["xbc.o"].invoke + assert_equal ["xbc.o - plainname"], @runs + end + end + end + + def test_rule_runs_when_explicit_task_has_no_actions + create_file(SRCFILE) + create_file(SRCFILE2) + delete_file(OBJFILE) + rule '.o' => '.c' do |t| + @runs << t.source + end + file OBJFILE => [SRCFILE2] + Task[OBJFILE].invoke + assert_equal [SRCFILE], @runs + end + + def test_close_matches_on_name_do_not_trigger_rule + create_file("testdata/x.c") + rule '.o' => ['.c'] do |t| + @runs << t.name + end + assert_raise(RuntimeError) { Task['testdata/x.obj'].invoke } + assert_raise(RuntimeError) { Task['testdata/x.xyo'].invoke } + end + + def test_rule_rebuilds_obj_when_source_is_newer + create_timed_files(OBJFILE, SRCFILE) + rule(/\.o$/ => ['.c']) do + @runs << :RULE + end + Task[OBJFILE].invoke + assert_equal [:RULE], @runs + end + + def test_rule_with_two_sources_runs_if_both_sources_are_present + create_timed_files(OBJFILE, SRCFILE, SRCFILE2) + rule OBJFILE => [lambda{SRCFILE}, lambda{SRCFILE2}] do + @runs << :RULE + end + Task[OBJFILE].invoke + assert_equal [:RULE], @runs + end + + def test_rule_with_two_sources_but_one_missing_does_not_run + create_timed_files(OBJFILE, SRCFILE) + delete_file(SRCFILE2) + rule OBJFILE => [lambda{SRCFILE}, lambda{SRCFILE2}] do + @runs << :RULE + end + Task[OBJFILE].invoke + assert_equal [], @runs + end + + def test_rule_with_two_sources_builds_both_sources + task 'x.aa' + task 'x.bb' + rule '.a' => '.aa' do + @runs << "A" + end + rule '.b' => '.bb' do + @runs << "B" + end + rule ".c" => ['.a', '.b'] do + @runs << "C" + end + Task["x.c"].invoke + assert_equal ["A", "B", "C"], @runs.sort + end + + def test_second_rule_runs_when_first_rule_doesnt + create_timed_files(OBJFILE, SRCFILE) + delete_file(SRCFILE2) + rule OBJFILE => [lambda{SRCFILE}, lambda{SRCFILE2}] do + @runs << :RULE1 + end + rule OBJFILE => [lambda{SRCFILE}] do + @runs << :RULE2 + end + Task[OBJFILE].invoke + assert_equal [:RULE2], @runs + end + + def test_second_rule_doest_run_if_first_triggers + create_timed_files(OBJFILE, SRCFILE, SRCFILE2) + rule OBJFILE => [lambda{SRCFILE}, lambda{SRCFILE2}] do + @runs << :RULE1 + end + rule OBJFILE => [lambda{SRCFILE}] do + @runs << :RULE2 + end + Task[OBJFILE].invoke + assert_equal [:RULE1], @runs + end + + def test_second_rule_doest_run_if_first_triggers_with_reversed_rules + create_timed_files(OBJFILE, SRCFILE, SRCFILE2) + rule OBJFILE => [lambda{SRCFILE}] do + @runs << :RULE1 + end + rule OBJFILE => [lambda{SRCFILE}, lambda{SRCFILE2}] do + @runs << :RULE2 + end + Task[OBJFILE].invoke + assert_equal [:RULE1], @runs + end + + def test_rule_with_proc_dependent_will_trigger + ran = false + mkdir_p("testdata/src/jw") + create_file("testdata/src/jw/X.java") + rule %r(classes/.*\.class) => [ + proc { |fn| fn.pathmap("%{classes,testdata/src}d/%n.java") } + ] do |task| + assert_equal task.name, 'classes/jw/X.class' + assert_equal task.source, 'testdata/src/jw/X.java' + @runs << :RULE + end + Task['classes/jw/X.class'].invoke + assert_equal [:RULE], @runs + ensure + rm_r("testdata/src", :verbose=>false) rescue nil + end + + def test_proc_returning_lists_are_flattened_into_prereqs + ran = false + mkdir_p("testdata/flatten") + create_file("testdata/flatten/a.txt") + task 'testdata/flatten/b.data' do |t| + ran = true + touch t.name, :verbose => false + end + rule '.html' => + proc { |fn| + [ + fn.ext("txt"), + "testdata/flatten/b.data" + ] + } do |task| + end + Task['testdata/flatten/a.html'].invoke + assert ran, "Should have triggered flattened dependency" + ensure + rm_r("testdata/flatten", :verbose=>false) rescue nil + end + + def test_recursive_rules_will_work_as_long_as_they_terminate + actions = [] + create_file("testdata/abc.xml") + rule '.y' => '.xml' do actions << 'y' end + rule '.c' => '.y' do actions << 'c'end + rule '.o' => '.c' do actions << 'o'end + rule '.exe' => '.o' do actions << 'exe'end + Task["testdata/abc.exe"].invoke + assert_equal ['y', 'c', 'o', 'exe'], actions + end + + def test_recursive_rules_that_dont_terminate_will_overflow + create_file("testdata/a.a") + prev = 'a' + ('b'..'z').each do |letter| + rule ".#{letter}" => ".#{prev}" do |t| puts "#{t.name}" end + prev = letter + end + ex = assert_raise(Rake::RuleRecursionOverflowError) { + Task["testdata/a.z"].invoke + } + assert_match(/a\.z => testdata\/a.y/, ex.message) + end + + def test_rules_with_bad_dependents_will_fail + rule "a" => [ 1 ] do |t| puts t.name end + assert_raise(RuntimeError) do Task['a'].invoke end + end + +end + diff --git a/test/rake/test_task_arguments.rb b/test/rake/test_task_arguments.rb new file mode 100644 index 00000000000000..deb5f19ea2ba4e --- /dev/null +++ b/test/rake/test_task_arguments.rb @@ -0,0 +1,87 @@ +require 'test/unit' +require 'rake' + +###################################################################### +class Rake::TestTaskArguments < Test::Unit::TestCase + def teardown + ENV.delete('rev') + ENV.delete('VER') + end + + def test_empty_arg_list_is_empty + ta = Rake::TaskArguments.new([], []) + assert_equal({}, ta.to_hash) + end + + def test_multiple_values_in_args + ta = Rake::TaskArguments.new([:a, :b, :c], [:one, :two, :three]) + assert_equal({:a => :one, :b => :two, :c => :three}, ta.to_hash) + end + + def test_to_s + ta = Rake::TaskArguments.new([:a, :b, :c], [1, 2, 3]) + assert_equal ta.to_hash.inspect, ta.to_s + assert_equal ta.to_hash.inspect, ta.inspect + end + + def test_enumerable_behavior + ta = Rake::TaskArguments.new([:a, :b, :c], [1, 2 ,3]) + assert_equal [10, 20, 30], ta.collect { |k,v| v * 10 }.sort + end + + def test_named_args + ta = Rake::TaskArguments.new(["aa", "bb"], [1, 2]) + assert_equal 1, ta.aa + assert_equal 1, ta[:aa] + assert_equal 1, ta["aa"] + assert_equal 2, ta.bb + assert_nil ta.cc + end + + def test_args_knows_its_names + ta = Rake::TaskArguments.new(["aa", "bb"], [1, 2]) + assert_equal ["aa", "bb"], ta.names + end + + def test_extra_names_are_nil + ta = Rake::TaskArguments.new(["aa", "bb", "cc"], [1, 2]) + assert_nil ta.cc + end + + def test_args_can_reference_env_values + ta = Rake::TaskArguments.new(["aa"], [1]) + ENV['rev'] = "1.2" + ENV['VER'] = "2.3" + assert_equal "1.2", ta.rev + assert_equal "2.3", ta.ver + end + + def test_creating_new_argument_scopes + parent = Rake::TaskArguments.new(['p'], [1]) + child = parent.new_scope(['c', 'p']) + assert_equal({:p=>1}, child.to_hash) + assert_equal 1, child.p + assert_equal 1, child["p"] + assert_equal 1, child[:p] + assert_nil child.c + end + + def test_child_hides_parent_arg_names + parent = Rake::TaskArguments.new(['aa'], [1]) + child = Rake::TaskArguments.new(['aa'], [2], parent) + assert_equal 2, child.aa + end + + def test_default_arguments_values_can_be_merged + ta = Rake::TaskArguments.new(["aa", "bb"], [nil, "original_val"]) + ta.with_defaults({ :aa => 'default_val' }) + assert_equal 'default_val', ta[:aa] + assert_equal 'original_val', ta[:bb] + end + + def test_default_arguements_that_dont_match_names_are_ignored + ta = Rake::TaskArguments.new(["aa", "bb"], [nil, "original_val"]) + ta.with_defaults({ "cc" => "default_val" }) + assert_nil ta[:cc] + end +end diff --git a/test/rake/test_task_manager.rb b/test/rake/test_task_manager.rb new file mode 100644 index 00000000000000..94c30d9c823e66 --- /dev/null +++ b/test/rake/test_task_manager.rb @@ -0,0 +1,170 @@ +require 'test/unit' +require 'rake' + +class Rake::TestTaskManager < Test::Unit::TestCase + class TaskManager + include Rake::TaskManager + end + + def setup + @tm = TaskManager.new + end + + def test_create_task_manager + assert_not_nil @tm + assert_equal [], @tm.tasks + end + + def test_define_task + t = @tm.define_task(Rake::Task, :t) + assert_equal "t", t.name + assert_equal @tm, t.application + end + + def test_name_lookup + t = @tm.define_task(Rake::Task, :t) + assert_equal t, @tm[:t] + end + + def test_namespace_task_create + @tm.in_namespace("x") do + t = @tm.define_task(Rake::Task, :t) + assert_equal "x:t", t.name + end + assert_equal ["x:t"], @tm.tasks.collect { |t| t.name } + end + + def test_anonymous_namespace + anon_ns = @tm.in_namespace(nil) do + t = @tm.define_task(Rake::Task, :t) + assert_equal "_anon_1:t", t.name + end + task = anon_ns[:t] + assert_equal "_anon_1:t", task.name + end + + def test_create_filetask_in_namespace + @tm.in_namespace("x") do + t = @tm.define_task(Rake::FileTask, "fn") + assert_equal "fn", t.name + end + assert_equal ["fn"], @tm.tasks.collect { |t| t.name } + end + + def test_namespace_yields_same_namespace_as_returned + yielded_namespace = nil + returned_namespace = @tm.in_namespace("x") do |ns| + yielded_namespace = ns + end + assert_equal returned_namespace, yielded_namespace + end + + def test_name_lookup_with_implicit_file_tasks + t = @tm["README"] + assert_equal "README", t.name + assert Rake::FileTask === t + end + + def test_name_lookup_with_nonexistent_task + assert_raise(RuntimeError) { + t = @tm["DOES NOT EXIST"] + } + end + + def test_name_lookup_in_multiple_scopes + aa = nil + bb = nil + xx = @tm.define_task(Rake::Task, :xx) + top_z = @tm.define_task(Rake::Task, :z) + @tm.in_namespace("a") do + aa = @tm.define_task(Rake::Task, :aa) + mid_z = @tm.define_task(Rake::Task, :z) + @tm.in_namespace("b") do + bb = @tm.define_task(Rake::Task, :bb) + bot_z = @tm.define_task(Rake::Task, :z) + + assert_equal ["a", "b"], @tm.current_scope + + assert_equal bb, @tm["a:b:bb"] + assert_equal aa, @tm["a:aa"] + assert_equal xx, @tm["xx"] + assert_equal bot_z, @tm["z"] + assert_equal mid_z, @tm["^z"] + assert_equal top_z, @tm["^^z"] + assert_equal top_z, @tm["rake:z"] + end + + assert_equal ["a"], @tm.current_scope + + assert_equal bb, @tm["a:b:bb"] + assert_equal aa, @tm["a:aa"] + assert_equal xx, @tm["xx"] + assert_equal bb, @tm["b:bb"] + assert_equal aa, @tm["aa"] + assert_equal mid_z, @tm["z"] + assert_equal top_z, @tm["^z"] + assert_equal top_z, @tm["rake:z"] + end + + assert_equal [], @tm.current_scope + + assert_equal [], xx.scope + assert_equal ['a'], aa.scope + assert_equal ['a', 'b'], bb.scope + end + + def test_lookup_with_explicit_scopes + t1, t2, t3, s = (0...4).collect { nil } + t1 = @tm.define_task(Rake::Task, :t) + @tm.in_namespace("a") do + t2 = @tm.define_task(Rake::Task, :t) + s = @tm.define_task(Rake::Task, :s) + @tm.in_namespace("b") do + t3 = @tm.define_task(Rake::Task, :t) + end + end + assert_equal t1, @tm[:t, []] + assert_equal t2, @tm[:t, ["a"]] + assert_equal t3, @tm[:t, ["a", "b"]] + assert_equal s, @tm[:s, ["a", "b"]] + assert_equal s, @tm[:s, ["a"]] + end + + def test_correctly_scoped_prerequisites_are_invoked + values = [] + @tm = Rake::Application.new + @tm.define_task(Rake::Task, :z) do values << "top z" end + @tm.in_namespace("a") do + @tm.define_task(Rake::Task, :z) do values << "next z" end + @tm.define_task(Rake::Task, :x => :z) + end + + @tm["a:x"].invoke + assert_equal ["next z"], values + end + +end + +class Rake::TestTaskManagerArgumentResolution < Test::Unit::TestCase + TaskManager = Rake::TestTaskManager::TaskManager + + def test_good_arg_patterns + assert_equal [:t, [], []], task(:t) + assert_equal [:t, [], [:x]], task(:t => :x) + assert_equal [:t, [], [:x, :y]], task(:t => [:x, :y]) + + assert_equal [:t, [:a, :b], []], task(:t, :a, :b) + assert_equal [:t, [], [:x]], task(:t, :needs => :x) + assert_equal [:t, [:a, :b], [:x]], task(:t, :a, :b, :needs => :x) + assert_equal [:t, [:a, :b], [:x, :y]], task(:t, :a, :b, :needs => [:x, :y]) + + assert_equal [:t, [:a, :b], []], task(:t, [:a, :b]) + assert_equal [:t, [:a, :b], [:x]], task(:t, [:a, :b] => :x) + assert_equal [:t, [:a, :b], [:x, :y]], task(:t, [:a, :b] => [:x, :y]) + end + + def task(*args) + tm = TaskManager.new + tm.resolve_args(args) + end +end diff --git a/test/rake/test_tasklib.rb b/test/rake/test_tasklib.rb new file mode 100644 index 00000000000000..c8b9cecdb28243 --- /dev/null +++ b/test/rake/test_tasklib.rb @@ -0,0 +1,10 @@ +require 'test/unit' +require 'rake/tasklib' + + +class Rake::TestTaskLib < Test::Unit::TestCase + def test_paste + tl = Rake::TaskLib.new + assert_equal :ab, tl.paste(:a, :b) + end +end diff --git a/test/rake/test_tasks.rb b/test/rake/test_tasks.rb new file mode 100644 index 00000000000000..a042ec4fc28d21 --- /dev/null +++ b/test/rake/test_tasks.rb @@ -0,0 +1,369 @@ +require 'test/unit' +require 'fileutils' +require 'rake' +require_relative 'filecreation' +require_relative 'capture_stdout' + +###################################################################### +class Rake::TestTasks < Test::Unit::TestCase + include CaptureStdout + include Rake + + def setup + Task.clear + end + + def test_create + arg = nil + t = task(:name) { |task| arg = task; 1234 } + assert_equal "name", t.name + assert_equal [], t.prerequisites + assert t.needed? + t.execute(0) + assert_equal t, arg + assert_nil t.source + assert_equal [], t.sources + end + + def test_inspect + t = task(:foo, :needs => [:bar, :baz]) + assert_equal " [bar, baz]>", t.inspect + end + + def test_invoke + runlist = [] + t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 } + t2 = task(:t2) { |t| runlist << t.name } + t3 = task(:t3) { |t| runlist << t.name } + assert_equal ["t2", "t3"], t1.prerequisites + t1.invoke + assert_equal ["t2", "t3", "t1"], runlist + end + + def test_invoke_with_circular_dependencies + runlist = [] + t1 = task(:t1 => [:t2]) { |t| runlist << t.name; 3321 } + t2 = task(:t2 => [:t1]) { |t| runlist << t.name } + assert_equal ["t2"], t1.prerequisites + assert_equal ["t1"], t2.prerequisites + ex = assert_raise RuntimeError do + t1.invoke + end + assert_match(/circular dependency/i, ex.message) + assert_match(/t1 => t2 => t1/, ex.message) + end + + def test_dry_run_prevents_actions + Rake.application.options.dryrun = true + runlist = [] + t1 = task(:t1) { |t| runlist << t.name; 3321 } + out = capture_stdout { t1.invoke } + assert_match(/execute .*t1/i, out) + assert_match(/dry run/i, out) + assert_no_match(/invoke/i, out) + assert_equal [], runlist + ensure + Rake.application.options.dryrun = false + end + + def test_tasks_can_be_traced + Rake.application.options.trace = true + t1 = task(:t1) + out = capture_stdout { + t1.invoke + } + assert_match(/invoke t1/i, out) + assert_match(/execute t1/i, out) + ensure + Rake.application.options.trace = false + end + + def test_no_double_invoke + runlist = [] + t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 } + t2 = task(:t2 => [:t3]) { |t| runlist << t.name } + t3 = task(:t3) { |t| runlist << t.name } + t1.invoke + assert_equal ["t3", "t2", "t1"], runlist + end + + def test_can_double_invoke_with_reenable + runlist = [] + t1 = task(:t1) { |t| runlist << t.name } + t1.invoke + t1.reenable + t1.invoke + assert_equal ["t1", "t1"], runlist + end + + def test_clear + t = task("t" => "a") { } + t.clear + assert t.prerequisites.empty?, "prerequisites should be empty" + assert t.actions.empty?, "actions should be empty" + end + + def test_clear_prerequisites + t = task("t" => ["a", "b"]) + assert_equal ['a', 'b'], t.prerequisites + t.clear_prerequisites + assert_equal [], t.prerequisites + end + + def test_clear_actions + t = task("t") { } + t.clear_actions + assert t.actions.empty?, "actions should be empty" + end + + def test_find + task :tfind + assert_equal "tfind", Task[:tfind].name + ex = assert_raise(RuntimeError) { Task[:leaves] } + assert_equal "Don't know how to build task 'leaves'", ex.message + end + + def test_defined + assert ! Task.task_defined?(:a) + task :a + assert Task.task_defined?(:a) + end + + def test_multi_invocations + runs = [] + p = proc do |t| runs << t.name end + task({:t1=>[:t2,:t3]}, &p) + task({:t2=>[:t3]}, &p) + task(:t3, &p) + Task[:t1].invoke + assert_equal ["t1", "t2", "t3"], runs.sort + end + + def test_task_list + task :t2 + task :t1 => [:t2] + assert_equal ["t1", "t2"], Task.tasks.collect {|t| t.name} + end + + def test_task_gives_name_on_to_s + task :abc + assert_equal "abc", Task[:abc].to_s + end + + def test_symbols_can_be_prerequisites + task :a => :b + assert_equal ["b"], Task[:a].prerequisites + end + + def test_strings_can_be_prerequisites + task :a => "b" + assert_equal ["b"], Task[:a].prerequisites + end + + def test_arrays_can_be_prerequisites + task :a => ["b", "c"] + assert_equal ["b", "c"], Task[:a].prerequisites + end + + def test_filelists_can_be_prerequisites + task :a => FileList.new.include("b", "c") + assert_equal ["b", "c"], Task[:a].prerequisites + end + + def test_investigation_output + t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 } + task(:t2) + task(:t3) + out = t1.investigation + assert_match(/class:\s*Rake::Task/, out) + assert_match(/needed:\s*true/, out) + assert_match(/pre-requisites:\s*--t[23]/, out) + end + + + def test_extended_comments + desc %{ + This is a comment. + + And this is the extended comment. + name -- Name of task to execute. + rev -- Software revision to use. + } + t = task(:t, :name, :rev) + assert_equal "[name,rev]", t.arg_description + assert_equal "This is a comment.", t.comment + assert_match(/^\s*name -- Name/, t.full_comment) + assert_match(/^\s*rev -- Software/, t.full_comment) + assert_match(/\A\s*This is a comment\.$/, t.full_comment) + end + + def test_multiple_comments + desc "line one" + t = task(:t) + desc "line two" + task(:t) + assert_equal "line one / line two", t.comment + end + + def test_settable_comments + t = task(:t) + t.comment = "HI" + assert_equal "HI", t.comment + end +end + +###################################################################### +class Rake::TestTaskWithArguments < Test::Unit::TestCase + include CaptureStdout + include Rake + + def setup + Task.clear + end + + def test_no_args_given + t = task :t + assert_equal [], t.arg_names + end + + def test_args_given + t = task :t, :a, :b + assert_equal [:a, :b], t.arg_names + end + + def test_name_and_needs + t = task(:t => [:pre]) + assert_equal "t", t.name + assert_equal [], t.arg_names + assert_equal ["pre"], t.prerequisites + end + + def test_name_and_explicit_needs + t = task(:t, :needs => [:pre]) + assert_equal "t", t.name + assert_equal [], t.arg_names + assert_equal ["pre"], t.prerequisites + end + + def test_name_args_and_explicit_needs + t = task(:t, :x, :y, :needs => [:pre]) + assert_equal "t", t.name + assert_equal [:x, :y], t.arg_names + assert_equal ["pre"], t.prerequisites + end + + def test_illegal_keys_in_task_name_hash + assert_raise RuntimeError do + t = task(:t, :x, :y => 1, :needs => [:pre]) + end + end + + def test_arg_list_is_empty_if_no_args_given + t = task(:t) { |tt, args| assert_equal({}, args.to_hash) } + t.invoke(1, 2, 3) + end + + def test_tasks_can_access_arguments_as_hash + t = task :t, :a, :b, :c do |tt, args| + assert_equal({:a => 1, :b => 2, :c => 3}, args.to_hash) + assert_equal 1, args[:a] + assert_equal 2, args[:b] + assert_equal 3, args[:c] + assert_equal 1, args.a + assert_equal 2, args.b + assert_equal 3, args.c + end + t.invoke(1, 2, 3) + end + + def test_actions_of_various_arity_are_ok_with_args + notes = [] + t = task(:t, :x) do + notes << :a + end + t.enhance do | | + notes << :b + end + t.enhance do |task| + notes << :c + assert_kind_of Task, task + end + t.enhance do |t2, args| + notes << :d + assert_equal t, t2 + assert_equal({:x => 1}, args.to_hash) + end + assert_nothing_raised do t.invoke(1) end + assert_equal [:a, :b, :c, :d], notes + end + + def test_arguments_are_passed_to_block + t = task(:t, :a, :b) { |tt, args| + assert_equal( { :a => 1, :b => 2 }, args.to_hash ) + } + t.invoke(1, 2) + end + + def test_extra_parameters_are_ignored + t = task(:t, :a) { |tt, args| + assert_equal 1, args.a + assert_nil args.b + } + t.invoke(1, 2) + end + + def test_arguments_are_passed_to_all_blocks + counter = 0 + t = task :t, :a + task :t do |tt, args| + assert_equal 1, args.a + counter += 1 + end + task :t do |tt, args| + assert_equal 1, args.a + counter += 1 + end + t.invoke(1) + assert_equal 2, counter + end + + def test_block_with_no_parameters_is_ok + t = task(:t) { } + t.invoke(1, 2) + end + + def test_name_with_args + desc "T" + t = task(:tt, :a, :b) + assert_equal "tt", t.name + assert_equal "T", t.comment + assert_equal "[a,b]", t.arg_description + assert_equal "tt[a,b]", t.name_with_args + assert_equal [:a, :b],t.arg_names + end + + def test_named_args_are_passed_to_prereqs + value = nil + pre = task(:pre, :rev) { |t, args| value = args.rev } + t = task(:t, :name, :rev, :needs => [:pre]) + t.invoke("bill", "1.2") + assert_equal "1.2", value + end + + def test_args_not_passed_if_no_prereq_names + pre = task(:pre) { |t, args| + assert_equal({}, args.to_hash) + assert_equal "bill", args.name + } + t = task(:t, :name, :rev, :needs => [:pre]) + t.invoke("bill", "1.2") + end + + def test_args_not_passed_if_no_arg_names + pre = task(:pre, :rev) { |t, args| + assert_equal({}, args.to_hash) + } + t = task(:t, :needs => [:pre]) + t.invoke("bill", "1.2") + end +end diff --git a/test/rake/test_test_task.rb b/test/rake/test_test_task.rb new file mode 100644 index 00000000000000..a0dc7a0717f896 --- /dev/null +++ b/test/rake/test_test_task.rb @@ -0,0 +1,81 @@ +require 'tmpdir' +require 'test/unit' +require 'rake/testtask' + +class Rake::TestTestTask < Test::Unit::TestCase + include Rake + + def setup + @oldwd = Dir.pwd + @tmpwd = Dir.mktmpdir + Dir.chdir(@tmpwd) + Task.clear + ENV.delete('TEST') + open('install.rb', 'w') {} + end + + def teardown + FileUtils.rm_rf("testdata") + Dir.chdir(@oldwd) + FileUtils.rm_rf(@tmpwd) + end + + def test_no_task + assert ! Task.task_defined?(:test) + end + + def test_defaults + tt = Rake::TestTask.new do |t| end + assert_not_nil tt + assert_equal :test, tt.name + assert_equal ['lib'], tt.libs + assert_equal 'test/test*.rb', tt.pattern + assert_equal false, tt.verbose + assert Task.task_defined?(:test) + end + + def test_non_defaults + tt = Rake::TestTask.new(:example) do |t| + t.libs = ['src', 'ext'] + t.pattern = 'test/tc_*.rb' + t.verbose = true + end + assert_not_nil tt + assert_equal :example, tt.name + assert_equal ['src', 'ext'], tt.libs + assert_equal 'test/tc_*.rb', tt.pattern + assert_equal true, tt.verbose + assert Task.task_defined?(:example) + end + + def test_pattern + tt = Rake::TestTask.new do |t| + t.pattern = '*.rb' + end + assert_equal ['install.rb'], tt.file_list.to_a + end + + def test_env_test + ENV['TEST'] = 'testfile.rb' + tt = Rake::TestTask.new do |t| + t.pattern = '*' + end + assert_equal ["testfile.rb"], tt.file_list.to_a + end + + def test_test_files + tt = Rake::TestTask.new do |t| + t.test_files = FileList['a.rb', 'b.rb'] + end + assert_equal ["a.rb", 'b.rb'], tt.file_list.to_a + end + + def test_both_pattern_and_test_files + tt = Rake::TestTask.new do |t| + t.test_files = FileList['a.rb', 'b.rb'] + t.pattern = '*.rb' + end + assert_equal ['a.rb', 'b.rb', 'install.rb'], tt.file_list.to_a + end + +end diff --git a/test/rake/test_top_level_functions.rb b/test/rake/test_top_level_functions.rb new file mode 100644 index 00000000000000..12a8cd1e36f393 --- /dev/null +++ b/test/rake/test_top_level_functions.rb @@ -0,0 +1,91 @@ +require 'test/unit' +require_relative 'capture_stdout' +require 'rake' + +class Rake::TestTopLevelFunctions < Test::Unit::TestCase + include CaptureStdout + + def setup + super + @app = Rake.application + Rake.application = @mock = Object.new + end + + def teardown + Rake.application = @app + super + end + + def defmock(sym, &block) + class << @mock; self; end.class_eval do + define_method(sym, block) + end + end + + def test_namespace + args = [] + defmock(:in_namespace) {|a, *| args << a} + namespace "xyz" do end + assert_equal(["xyz"], args) + end + + def test_import + args = [] + defmock(:add_import) {|a| args << a} + import('x', 'y', 'z') + assert_equal(['x', 'y', 'z'], args) + end + + def test_when_writing + out = capture_stdout do + when_writing("NOTWRITING") do + puts "WRITING" + end + end + assert_equal "WRITING\n", out + end + + def test_when_not_writing + RakeFileUtils.nowrite_flag = true + out = capture_stdout do + when_writing("NOTWRITING") do + puts "WRITING" + end + end + assert_equal "DRYRUN: NOTWRITING\n", out + ensure + RakeFileUtils.nowrite_flag = false + end + + def test_missing_constants_task + args = [] + defmock(:const_warning) {|a| args << a} + Object.const_missing(:Task) + assert_equal([:Task], args) + end + + def test_missing_constants_file_task + args = [] + defmock(:const_warning) {|a| args << a} + Object.const_missing(:FileTask) + assert_equal([:FileTask], args) + end + + def test_missing_constants_file_creation_task + args = [] + defmock(:const_warning) {|a| args << a} + Object.const_missing(:FileCreationTask) + assert_equal([:FileCreationTask], args) + end + + def test_missing_constants_rake_app + args = [] + defmock(:const_warning) {|a| args << a} + Object.const_missing(:RakeApp) + assert_equal([:RakeApp], args) + end + + def test_missing_other_constant + assert_raise(NameError) do Object.const_missing(:Xyz) end + end +end diff --git a/test/rake/test_win32.rb b/test/rake/test_win32.rb new file mode 100644 index 00000000000000..07db16c140ff1a --- /dev/null +++ b/test/rake/test_win32.rb @@ -0,0 +1,68 @@ +require 'test/unit' +require_relative 'in_environment' + +require 'rake' + +class Rake::TestWin32 < Test::Unit::TestCase + include InEnvironment + + Win32 = Rake::Win32 + + def test_win32_system_dir_uses_home_if_defined + in_environment('RAKE_SYSTEM' => nil, 'HOME' => 'C:\\HP') do + assert_equal "C:/HP/Rake", Win32.win32_system_dir + end + end + + def test_win32_system_dir_uses_homedrive_homepath_when_no_home_defined + in_environment( + 'RAKE_SYSTEM' => nil, + 'HOME' => nil, + 'HOMEDRIVE' => "C:", + 'HOMEPATH' => "\\HP" + ) do + assert_equal "C:/HP/Rake", Win32.win32_system_dir + end + end + + def test_win32_system_dir_uses_appdata_when_no_home_or_home_combo + in_environment( + 'RAKE_SYSTEM' => nil, + 'HOME' => nil, + 'HOMEDRIVE' => nil, + 'HOMEPATH' => nil, + 'APPDATA' => "C:\\Documents and Settings\\HP\\Application Data" + ) do + assert_equal "C:/Documents and Settings/HP/Application Data/Rake", Win32.win32_system_dir + end + end + + def test_win32_system_dir_fallback_to_userprofile_otherwise + in_environment( + 'RAKE_SYSTEM' => nil, + 'HOME' => nil, + 'HOMEDRIVE' => nil, + 'HOMEPATH' => nil, + 'APPDATA' => nil, + 'USERPROFILE' => "C:\\Documents and Settings\\HP" + ) do + assert_equal "C:/Documents and Settings/HP/Rake", Win32.win32_system_dir + end + end + + def test_win32_system_dir_nil_of_no_env_vars + in_environment( + 'RAKE_SYSTEM' => nil, + 'HOME' => nil, + 'HOMEDRIVE' => nil, + "HOMEPATH" => nil, + 'APPDATA' => nil, + "USERPROFILE" => nil + ) do + assert_raise(Rake::Win32::Win32HomeError) do + Win32.win32_system_dir + end + end + end + +end if Rake::Win32.windows? diff --git a/test/rexml/test_document.rb b/test/rexml/test_document.rb index 0261e80b74a7ef..a35fce7dcaf145 100644 --- a/test/rexml/test_document.rb +++ b/test/rexml/test_document.rb @@ -2,6 +2,25 @@ require "test/unit" class REXML::TestDocument < Test::Unit::TestCase + def test_version_attributes_to_s + doc = REXML::Document.new(<<-eoxml) + + + + eoxml + + string = doc.to_s + assert_match('xmlns:sodipodi', string) + assert_match('xmlns:inkscape', string) + assert_match('sodipodi:version', string) + assert_match('inkscape:version', string) + end + def test_new doc = REXML::Document.new(< diff --git a/test/ripper/dummyparser.rb b/test/ripper/dummyparser.rb index 483ac0d013c2d5..ec8800b17be5b5 100644 --- a/test/ripper/dummyparser.rb +++ b/test/ripper/dummyparser.rb @@ -13,7 +13,15 @@ def initialize(name, *nodes) attr_reader :children def to_s - "#{@name}(#{@children.map {|n| n.to_s }.join(',')})" + "#{@name}(#{Node.trim_nil(@children).map {|n| n.to_s }.join(',')})" + end + + def self.trim_nil(list) + if !list.empty? and list.last.nil? + list = list[0...-1] + list.pop while !list.empty? and list.last.nil? + end + list end end @@ -34,14 +42,23 @@ def prepend(items) end def to_s - '[' + @list.join(',') + ']' + "[#{@list.join(',')}]" end end class DummyParser < Ripper + def hook(name) + class << self; self; end.class_eval do + define_method(name) do |*a, &b| + result = super(*a, &b) + yield(*a) + result + end + end + self + end def on_program(stmts) - $thru_program = true stmts end @@ -58,22 +75,10 @@ def on_void_stmt Node.new('void') end - def on_BEGIN(stmts) - Node.new('BEGIN', stmts) - end - - def on_END(stmts) - Node.new('END', stmts) - end - def on_var_ref(name) Node.new('ref', name) end - def on_alias(a, b) - Node.new('alias', a, b) - end - def on_var_alias(a, b) Node.new('valias', a, b) end @@ -82,18 +87,6 @@ def on_alias_error(a) Node.new('aliaserr', a) end - def on_aref(a, b) - Node.new('aref', a, b) - end - - def on_aref_field(a, b) - Node.new('aref_field', a, b) - end - - def on_arg_ambiguous - Node.new('arg_ambiguous') - end - def on_arg_paren(args) args end @@ -135,6 +128,47 @@ def on_method_add_block(m, b) on_args_add_block(m.children, b) m end + + def on_paren(params) + params + end + + def on_brace_block(params, code) + Node.new('block', params, code) + end + + def on_block_var(params, shadow) + params + end + + def on_rest_param(var) + "*#{var}" + end + + def on_blockarg(var) + "&#{var}" + end + + def on_params(required, optional, rest, more, block) + args = NodeList.new + + required.each do |req| + args.push(req) + end if required + + optional.each do |var, val| + args.push("#{var}=#{val}") + end if optional + + args.push(rest) if rest + + more.each do |m| + args.push(m) + end if more + + args.push(block) if block + args + end def on_assoc_new(a, b) Node.new('assoc', a, b) @@ -148,424 +182,9 @@ def on_assoclist_from_args(a) Node.new('assocs', *a.list) end - ######## untested - - def on_array(a) - Node.new('array', a) - end - - def on_assign(a, b) - Node.new('assign', a, b) - end - - def on_assign_error(a) - Node.new('assign_error', a) - end - - def on_begin(a) - Node.new('begin', a) - end - - def on_binary(a, b, c) - Node.new('binary', a, b, c) - end - - def on_block_var(a) - Node.new('block_var', a) - end - - def on_bodystmt(a, b, c, d) - Node.new('bodystmt', a, b, c, d) - end - - def on_brace_block(a, b) - Node.new('brace_block', a, b) - end - - def on_break(a) - Node.new('break', a) - end - - def on_call(a, b, c) - Node.new('call', a, b, c) - end - - def on_case(a, b) - Node.new('case', a, b) - end - - def on_class(a, b, c) - Node.new('class', a, b, c) - end - - def on_class_name_error(a) - Node.new('class_name_error', a) - end - - def on_command(a, b) - Node.new('command', a, b) - end - - def on_command_call(a, b, c, d) - Node.new('command_call', a, b, c, d) - end - - def on_const_ref(a) - Node.new('const_ref', a) - end - - def on_constpath_field(a, b) - Node.new('constpath_field', a, b) - end - - def on_constpath_ref(a, b) - Node.new('constpath_ref', a, b) - end - - def on_def(a, b, c) - Node.new('def', a, b, c) - end - - def on_defined(a) - Node.new('defined', a) - end - - def on_defs(a, b, c, d, e) - Node.new('defs', a, b, c, d, e) - end - - def on_do_block(a, b) - Node.new('do_block', a, b) - end - - def on_dot2(a, b) - Node.new('dot2', a, b) - end - - def on_dot3(a, b) - Node.new('dot3', a, b) - end - - def on_dyna_symbol(a) - Node.new('dyna_symbol', a) - end - - def on_else(a) - Node.new('else', a) - end - - def on_elsif(a, b, c) - Node.new('elsif', a, b, c) - end - - def on_ensure(a) - Node.new('ensure', a) - end - - def on_fcall(a) - Node.new('fcall', a) - end - - def on_field(a, b, c) - Node.new('field', a, b, c) - end - - def on_for(a, b, c) - Node.new('for', a, b, c) - end - - def on_hash(a) - Node.new('hash', a) - end - - def on_if(a, b, c) - Node.new('if', a, b, c) - end - - def on_if_mod(a, b) - Node.new('if_mod', a, b) - end - - def on_ifop(a, b, c) - Node.new('ifop', a, b, c) - end - - def on_iter_block(a, b) - Node.new('iter_block', a, b) - end - - def on_massign(a, b) - Node.new('massign', a, b) - end - - def on_mlhs_add(a, b) - Node.new('mlhs_add', a, b) - end - - def on_mlhs_add_star(a, b) - Node.new('mlhs_add_star', a, b) - end - - def on_mlhs_new - Node.new('mlhs_new') - end - - def on_mlhs_paren(a) - Node.new('mlhs_paren', a) - end - - def on_module(a, b) - Node.new('module', a, b) - end - - def on_mrhs_add(a, b) - Node.new('mrhs_add', a, b) - end - - def on_mrhs_add_star(a, b) - Node.new('mrhs_add_star', a, b) - end - - def on_mrhs_new - Node.new('mrhs_new') - end - - def on_mrhs_new_from_arglist(a) - Node.new('mrhs_new_from_arglist', a) - end - - def on_next(a) - Node.new('next', a) - end - - def on_opassign(a, b, c) - Node.new('opassign', a, b, c) - end - - def on_param_error(a) - Node.new('param_error', a) - end - - def on_params(a, b, c, d) - Node.new('params', a, b, c, d) - end - - def on_paren(a) - Node.new('paren', a) - end - - def on_parse_error(a) - Node.new('parse_error', a) - end - - def on_qwords_add(a, b) - Node.new('qwords_add', a, b) - end - - def on_qwords_new - Node.new('qwords_new') - end - - def on_redo - Node.new('redo') - end - - def on_regexp_literal(a) - Node.new('regexp_literal', a) - end - - def on_rescue(a, b, c, d) - Node.new('rescue', a, b, c, d) - end - - def on_rescue_mod(a, b) - Node.new('rescue_mod', a, b) - end - - def on_restparam(a) - Node.new('restparam', a) - end - - def on_retry - Node.new('retry') - end - - def on_return(a) - Node.new('return', a) - end - - def on_return0 - Node.new('return0') - end - - def on_sclass(a, b) - Node.new('sclass', a, b) - end - - def on_sp(a) - Node.new('space', a) - end - - def on_string_add(a, b) - Node.new('string_add', a, b) - end - - def on_string_concat(a, b) - Node.new('string_concat', a, b) - end - - def on_string_content - Node.new('string_content') - end - - def on_string_dvar(a) - Node.new('string_dvar', a) - end - - def on_string_embexpr(a) - Node.new('string_embexpr', a) - end - - def on_string_literal(a) - Node.new('string_literal', a) - end - - def on_super(a) - Node.new('super', a) - end - - def on_symbol(a) - Node.new('symbol', a) - end - - def on_symbol_literal(a) - Node.new('symbol_literal', a) - end - - def on_topconst_field(a) - Node.new('topconst_field', a) - end - - def on_topconst_ref(a) - Node.new('topconst_ref', a) - end - - def on_unary(a, b) - Node.new('unary', a, b) - end - - def on_undef(a) - Node.new('undef', a) - end - - def on_unless(a, b, c) - Node.new('unless', a, b, c) - end - - def on_unless_mod(a, b) - Node.new('unless_mod', a, b) - end - - def on_until_mod(a, b) - Node.new('until_mod', a, b) - end - - def on_var_field(a) - Node.new('var_field', a) - end - - def on_when(a, b, c) - Node.new('when', a, b, c) - end - - def on_while(a, b) - Node.new('while', a, b) - end - - def on_while_mod(a, b) - Node.new('while_mod', a, b) - end - - def on_word_add(a, b) - Node.new('word_add', a, b) - end - - def on_word_new - Node.new('word_new') - end - - def on_words_add(a, b) - Node.new('words_add', a, b) - end - - def on_words_new - Node.new('words_new') - end - - def on_xstring_add(a, b) - Node.new('xstring_add', a, b) - end - - def on_xstring_literal(a) - Node.new('xstring_literal', a) - end - - def on_xstring_new - Node.new('xstring_new') - end - - def on_yield(a) - Node.new('yield', a) - end - - def on_yield0 - Node.new('yield0') - end - - def on_zsuper - Node.new('zsuper') - end - - def on_backref(a) - a - end - def on_comma(a) - a - end - def on_gvar(a) - a - end - def on_ident(a) - a - end - def on_int(a) - a - end - def on_kw(a) - a - end - def on_lbrace(a) - a - end - def on_rbrace(a) - a - end - def on_lbracket(a) - a - end - def on_rbracket(a) - a - end - def on_lparen(a) - a - end - def on_rparen(a) - a - end - def on_op(a) - a - end - def on_semicolon(a) - a + (Ripper::PARSER_EVENTS.map(&:to_s) - instance_methods(false).map {|n|n.to_s.sub(/^on_/, '')}).each do |event| + define_method(:"on_#{event}") do |*args| + Node.new(event, *args) + end end end diff --git a/test/ripper/test_files.rb b/test/ripper/test_files.rb index f30ee8ad2ad4ef..42475ed2d8a291 100644 --- a/test/ripper/test_files.rb +++ b/test/ripper/test_files.rb @@ -1,8 +1,10 @@ begin - -require 'ripper' -require 'find' -require 'test/unit' + require 'ripper' + require 'find' + require 'test/unit' + ripper_test = true +rescue LoadError +end class TestRipper_Generic < Test::Unit::TestCase SRCDIR = File.dirname(File.dirname(File.dirname(File.expand_path(__FILE__)))) @@ -21,8 +23,4 @@ def test_parse_files assert_nothing_raised("ripper failed to parse: #{n.inspect}") { Parser.new(File.read(n)).parse } } end -end - -rescue LoadError -end - +end if ripper_test diff --git a/test/ripper/test_filter.rb b/test/ripper/test_filter.rb index 4e9ee88dd8c55b..b398ebe5edaaa8 100644 --- a/test/ripper/test_filter.rb +++ b/test/ripper/test_filter.rb @@ -1,7 +1,9 @@ begin - -require 'ripper' -require 'test/unit' + require 'ripper' + require 'test/unit' + ripper_test = true +rescue LoadError +end class TestRipper_Filter < Test::Unit::TestCase @@ -21,34 +23,60 @@ def filename File.expand_path(__FILE__) end - def test_filter_filename + def test_filter_filename_unset data = {} - Filter.new(File.read(filename)).parse(data) + filter = Filter.new(File.read(filename)) + filter.parse(data) assert_equal('-', data[:filename], "[ruby-dev:37856]") + assert_equal('-', filter.filename) + end + def test_filter_filename data = {} - Filter.new(File.read(filename), filename).parse(data) + filter = Filter.new(File.read(filename), filename) + assert_equal(filename, filter.filename) + filter.parse(data) assert_equal(filename, data[:filename]) + assert_equal(filename, filter.filename) end def test_filter_lineno data = {} - Filter.new(File.read(filename)).parse(data) + src = File.read(filename) + src_lines = src.count("\n") + filter = Filter.new(src) + assert_equal(nil, filter.lineno) + filter.parse(data) assert_equal(1, data[:lineno]) + assert_equal(src_lines, filter.lineno) + end + + def test_filter_lineno_set + data = {} + src = File.read(filename) + src_lines = src.count("\n") + filter = Filter.new(src, '-', 100) + assert_equal(nil, filter.lineno) + filter.parse(data) + assert_equal(100, data[:lineno]) + assert_equal(src_lines+100-1, filter.lineno) end def test_filter_column data = {} - Filter.new(File.read(filename)).parse(data) + src = File.read(filename) + last_columns = src[/(.*)\Z/].size + filter = Filter.new(src) + assert_equal(nil, filter.column) + filter.parse(data) assert_equal(0, data[:column]) + assert_equal(last_columns, filter.column) end def test_filter_token data = {} - Filter.new(File.read(filename)).parse(data) + filter = Filter.new(File.read(filename)) + filter.parse(data) assert_equal("begin", data[:token]) end -end - -rescue LoadError -end +end if ripper_test diff --git a/test/ripper/test_parser_events.rb b/test/ripper/test_parser_events.rb index fa640a37ecf7a1..6b37ff4da97ae3 100644 --- a/test/ripper/test_parser_events.rb +++ b/test/ripper/test_parser_events.rb @@ -1,7 +1,10 @@ begin - -require 'dummyparser' -require 'test/unit' + require_relative 'dummyparser' + require_relative '../ruby/envutil' + require 'test/unit' + ripper_test = true +rescue LoadError +end class TestRipper_ParserEvents < Test::Unit::TestCase @@ -16,15 +19,16 @@ def test_event_coverage end =end - def parse(str) - DummyParser.new(str).parse.to_s + def parse(str, nm = nil, &bl) + dp = DummyParser.new(str) + dp.hook(nm, &bl) if nm + dp.parse.to_s end - $thru_program = false - def test_program - assert_equal '[void()]', parse('') - assert_equal true, $thru_program + thru_program = false + assert_equal '[void()]', parse('', :on_program) {thru_program = true} + assert_equal true, thru_program end def test_stmts_new @@ -104,11 +108,11 @@ def test_aref_field assert_equal '[assign(aref_field(ref(a),[1]),2)]', parse('a[1]=2') end -=begin def test_arg_ambiguous - assert_equal true, $thru__arg_ambiguous + thru_arg_ambiguous = false + parse('m //', :on_arg_ambiguous) {thru_arg_ambiguous = true} + assert_equal true, thru_arg_ambiguous end -=end def test_array # array literal assert_equal '[array([1,2,3])]', parse('[1,2,3]') @@ -118,27 +122,161 @@ def test_assign # generic assignment assert_equal '[assign(var_field(v),1)]', parse('v=1') end -=begin def test_assign_error - assert_equal true, $thru__assign_error + thru_assign_error = false + parse('$` = 1', :on_assign_error) {thru_assign_error = true} + assert_equal true, thru_assign_error + thru_assign_error = false + parse('$`, _ = 1', :on_assign_error) {thru_assign_error = true} + assert_equal true, thru_assign_error + + thru_assign_error = false + parse('self::X = 1', :on_assign_error) {thru_assign_error = true} + assert_equal false, thru_assign_error + parse('def m\n self::X = 1\nend', :on_assign_error) {thru_assign_error = true} + assert_equal true, thru_assign_error + + thru_assign_error = false + parse('X = 1', :on_assign_error) {thru_assign_error = true} + assert_equal false, thru_assign_error + parse('def m\n X = 1\nend', :on_assign_error) {thru_assign_error = true} + assert_equal true, thru_assign_error + + thru_assign_error = false + parse('::X = 1', :on_assign_error) {thru_assign_error = true} + assert_equal false, thru_assign_error + parse('def m\n ::X = 1\nend', :on_assign_error) {thru_assign_error = true} + assert_equal true, thru_assign_error end def test_begin - assert_equal true, $thru__begin + thru_begin = false + parse('begin end', :on_begin) {thru_begin = true} + assert_equal true, thru_begin end def test_binary - assert_equal true, $thru__binary + thru_binary = nil + %w"and or + - * / % ** | ^ & <=> > >= < <= == === != =~ !~ << >> && ||".each do |op| + thru_binary = false + parse("a #{op} b", :on_binary) {thru_binary = true} + assert_equal true, thru_binary + end end def test_block_var - assert_equal true, $thru__block_var + thru_block_var = false + parse("proc{||}", :on_block_var) {thru_block_var = true} + assert_equal true, thru_block_var + thru_block_var = false + parse("proc{| |}", :on_block_var) {thru_block_var = true} + assert_equal true, thru_block_var + thru_block_var = false + parse("proc{|x|}", :on_block_var) {thru_block_var = true} + assert_equal true, thru_block_var + thru_block_var = false + parse("proc{|;y|}", :on_block_var) {thru_block_var = true} + assert_equal true, thru_block_var + thru_block_var = false + parse("proc{|x;y|}", :on_block_var) {thru_block_var = true} + assert_equal true, thru_block_var + + thru_block_var = false + parse("proc do || end", :on_block_var) {thru_block_var = true} + assert_equal true, thru_block_var + thru_block_var = false + parse("proc do | | end", :on_block_var) {thru_block_var = true} + assert_equal true, thru_block_var + thru_block_var = false + parse("proc do |x| end", :on_block_var) {thru_block_var = true} + assert_equal true, thru_block_var + thru_block_var = false + parse("proc do |;y| end", :on_block_var) {thru_block_var = true} + assert_equal true, thru_block_var + thru_block_var = false + parse("proc do |x;y| end", :on_block_var) {thru_block_var = true} + assert_equal true, thru_block_var end def test_bodystmt - assert_equal true, $thru__bodystmt + thru_bodystmt = false + parse("class X\nend", :on_bodystmt) {thru_bodystmt = true} + assert_equal true, thru_bodystmt + end + + def test_call + bug2233 = '[ruby-core:26165]' + tree = nil + + thru_call = false + assert_nothing_raised { + tree = parse("self.foo", :on_call) {thru_call = true} + } + assert_equal true, thru_call + assert_equal "[call(ref(self),.,foo)]", tree + thru_call = false + assert_nothing_raised(bug2233) { + tree = parse("foo.()", :on_call) {thru_call = true} + } + assert_equal true, thru_call + assert_equal "[call(ref(foo),.,call,[])]", tree + end + + def test_heredoc + bug1921 = '[ruby-core:24855]' + thru_heredoc_beg = false + tree = parse("<in_c, STDOUT=>out_c, STDERR=>err_c) - in_c.close - out_c.close - err_c.close - in_p.write test_stdin - in_p.close - th_stdout = Thread.new { out_p.read } - th_stderr = Thread.new { err_p.read } - if th_stdout.join(10) && th_stderr.join(10) - stdout = th_stdout.value - stderr = th_stderr.value - else - flunk("timeout") - end - out_p.close - err_p.close - Process.wait pid + def assert_in_out_err(args, test_stdin = "", test_stdout = [], test_stderr = [], message = nil, opt={}) + stdout, stderr, status = EnvUtil.invoke_ruby(args, test_stdin, true, true, opt) if block_given? yield(stdout.lines.map {|l| l.chomp }, stderr.lines.map {|l| l.chomp }) else @@ -152,23 +193,14 @@ def assert_in_out_err(args, test_stdin = "", test_stdout = "", test_stderr = "", assert_equal(test_stderr, stderr.lines.map {|l| l.chomp }, message) end end - ensure - env.each_pair {|lc, v| - if v - ENV[lc] = v - else - ENV.delete(lc) - end - } if env - in_c.close if in_c && !in_c.closed? - in_p.close if in_p && !in_p.closed? - out_c.close if out_c && !out_c.closed? - out_p.close if out_p && !out_p.closed? - err_c.close if err_c && !err_c.closed? - err_p.close if err_p && !err_p.closed? - (th_stdout.kill; th_stdout.join) if th_stdout - (th_stderr.kill; th_stderr.join) if th_stderr end + + def assert_ruby_status(args, test_stdin="", message=nil, opt={}) + stdout, stderr, status = EnvUtil.invoke_ruby(args, test_stdin, false, false, opt) + m = message ? "#{message} (#{status.inspect})" : "ruby exit stauts is not success: #{status.inspect}" + assert(status.success?, m) + end + end end end diff --git a/test/ruby/marshaltestlib.rb b/test/ruby/marshaltestlib.rb index 8c55a086af58aa..3c8f1228a35ffe 100644 --- a/test/ruby/marshaltestlib.rb +++ b/test/ruby/marshaltestlib.rb @@ -286,8 +286,8 @@ def test_string_subclass_extend o = "abc" o.extend(Mod1) str = MyString.new(o, "c") - marshal_equal(str) { |o| - assert(o.instance_eval { @v }).kind_of?(Mod1) + marshal_equal(str) { |v| + assert(v.instance_eval { @v }).kind_of?(Mod1) } end diff --git a/test/ruby/test_alias.rb b/test/ruby/test_alias.rb index 7f8a32c529cd97..babd7635770cfb 100644 --- a/test/ruby/test_alias.rb +++ b/test/ruby/test_alias.rb @@ -77,4 +77,12 @@ class << x end assert_equal("ABC", x.try(:upcase), '[ruby-dev:38824]') end + + def test_special_const_alias + assert_raise(TypeError) do + 1.instance_eval do + alias to_string to_s + end + end + end end diff --git a/test/ruby/test_argf.rb b/test/ruby/test_argf.rb index 6f6622e66b4f4c..a1f260147ea2a9 100644 --- a/test/ruby/test_argf.rb +++ b/test/ruby/test_argf.rb @@ -6,17 +6,17 @@ class TestArgf < Test::Unit::TestCase def setup - @t1 = Tempfile.new("foo") + @t1 = Tempfile.new("argf-foo") @t1.binmode @t1.puts "1" @t1.puts "2" @t1.close - @t2 = Tempfile.new("bar") + @t2 = Tempfile.new("argf-bar") @t2.binmode @t2.puts "3" @t2.puts "4" @t2.close - @t3 = Tempfile.new("baz") + @t3 = Tempfile.new("argf-baz") @t3.binmode @t3.puts "5" @t3.puts "6" @@ -28,11 +28,12 @@ def teardown @tmps.each {|t| bak = t.path + ".bak" File.unlink bak if File.file? bak + t.close(true) } end def make_tempfile - t = Tempfile.new("foo") + t = Tempfile.new("argf-qux") t.puts "foo" t.puts "bar" t.puts "baz" @@ -414,11 +415,11 @@ def test_eof end end - t1 = Tempfile.new("foo") + t1 = Tempfile.new("argf-foo") t1.binmode t1.puts "foo" t1.close - t2 = Tempfile.new("bar") + t2 = Tempfile.new("argf-bar") t2.binmode t2.puts "bar" t2.close diff --git a/test/ruby/test_array.rb b/test/ruby/test_array.rb index 2723b37c6a3594..0797190447181a 100644 --- a/test/ruby/test_array.rb +++ b/test/ruby/test_array.rb @@ -1224,6 +1224,18 @@ def test_to_ary if (@cls == Array) assert_equal(a_id, a.to_ary.__id__) end + + o = Object.new + def o.to_ary + [4, 5] + end + assert_equal([1, 2, 3, 4, 5], a.concat(o)) + + o = Object.new + def o.to_ary + foo_bar() + end + assert_match(/foo_bar/, assert_raise(NoMethodError) {a.concat(o)}.message) end def test_to_s @@ -1572,7 +1584,8 @@ def o.==(x); :foo; end def test_hash2 a = [] a << a - assert_raise(ArgumentError) { a.hash } + assert_equal([[a]].hash, a.hash) + assert_not_equal([a, a].hash, a.hash) # Implementation dependent end def test_flatten2 @@ -1599,7 +1612,7 @@ def test_sample srand(0) a = (1..18).to_a (0..20).each do |n| - 10000.times do + 100.times do b = a.sample(n) assert_equal([n, 18].min, b.uniq.size) assert_equal(a, (a | b).sort) @@ -1607,7 +1620,7 @@ def test_sample end h = Hash.new(0) - 10000.times do + 1000.times do a.sample(n).each {|x| h[x] += 1 } end assert_operator(h.values.min * 2, :>=, h.values.max) if n != 0 diff --git a/test/ruby/test_assignment.rb b/test/ruby/test_assignment.rb index b82cee81d13070..e38b20b2857a7b 100644 --- a/test/ruby/test_assignment.rb +++ b/test/ruby/test_assignment.rb @@ -77,6 +77,14 @@ def test_assign a,b,*c = *[*[]]; assert_equal([nil,nil,[]], [a,b,c]) a,b,*c = *[*[1]]; assert_equal([1,nil,[]], [a,b,c]) a,b,*c = *[*[1,2]]; assert_equal([1,2,[]], [a,b,c]) + + bug2050 = '[ruby-core:25629]' + a = Hash.new {[]} + b = [1, 2] + assert_equal([1, 2, 3], a[:x] += [*b, 3], bug2050) + assert_equal([1, 2, 3], a[:x], bug2050) + assert_equal([1, 2, 3, [1, 2, 3]], a[:x] <<= [*b, 3], bug2050) + assert_equal([1, 2, 3, [1, 2, 3]], a[:x], bug2050) end def test_yield diff --git a/test/ruby/test_case.rb b/test/ruby/test_case.rb index 0123e7422ff574..f9f16d55a2afd7 100644 --- a/test/ruby/test_case.rb +++ b/test/ruby/test_case.rb @@ -46,6 +46,13 @@ def test_case else assert(false) end + + case "+" + when *%w/. +/ + assert(true) + else + assert(false) + end end def test_deoptimization diff --git a/test/ruby/test_class.rb b/test/ruby/test_class.rb index bc0f79a681d667..a1f087ad63267b 100644 --- a/test/ruby/test_class.rb +++ b/test/ruby/test_class.rb @@ -105,14 +105,72 @@ def test_module_function end end + def test_method_redefinition + feature2155 = '[ruby-dev:39400]' + + line = __LINE__+4 + stderr = EnvUtil.verbose_warning do + Class.new do + def foo; end + def foo; end + end + end + assert_match(/:#{line}: warning: method redefined; discarding old foo/, stderr) + assert_match(/:#{line-1}: warning: previous definition of foo/, stderr, feature2155) + + stderr = EnvUtil.verbose_warning do + Class.new do + def foo; end + alias bar foo + def foo; end + end + end + assert_equal("", stderr) + + stderr = EnvUtil.verbose_warning do + Class.new do + def foo; end + alias bar foo + alias bar foo + end + end + assert_equal("", stderr) + + line = __LINE__+4 + stderr = EnvUtil.verbose_warning do + Class.new do + define_method(:foo) do end + def foo; end + end + end + assert_match(/:#{line}: warning: method redefined; discarding old foo/, stderr) + assert_match(/:#{line-1}: warning: previous definition of foo/, stderr, feature2155) + + stderr = EnvUtil.verbose_warning do + Class.new do + define_method(:foo) do end + alias bar foo + alias bar foo + end + end + assert_equal("", stderr) + + stderr = EnvUtil.verbose_warning do + Class.new do + def foo; end + undef foo + end + end + assert_equal("", stderr) + end + def test_check_inheritable assert_raise(TypeError) { Class.new(Object.new) } o = Object.new c = class << o; self; end assert_raise(TypeError) { Class.new(c) } - - assert_nothing_raised { Class.new(Class) } # is it OK? + assert_raise(TypeError) { Class.new(Class) } assert_raise(TypeError) { eval("class Foo < Class; end") } end diff --git a/test/ruby/test_comparable.rb b/test/ruby/test_comparable.rb index e558b190f0ce9c..00ce6b485a6e09 100644 --- a/test/ruby/test_comparable.rb +++ b/test/ruby/test_comparable.rb @@ -5,54 +5,60 @@ def setup @o = Object.new @o.extend(Comparable) end + def cmp(b) + class << @o; self; end.class_eval { + undef :<=> + define_method(:<=>, b) + } + end def test_equal - def @o.<=>(x); 0; end + cmp->(x) do 0; end assert_equal(true, @o == nil) - def @o.<=>(x); 1; end + cmp->(x) do 1; end assert_equal(false, @o == nil) - def @o.<=>(x); raise; end + cmp->(x) do raise; end assert_equal(false, @o == nil) end def test_gt - def @o.<=>(x); 1; end + cmp->(x) do 1; end assert_equal(true, @o > nil) - def @o.<=>(x); 0; end + cmp->(x) do 0; end assert_equal(false, @o > nil) - def @o.<=>(x); -1; end + cmp->(x) do -1; end assert_equal(false, @o > nil) end def test_ge - def @o.<=>(x); 1; end + cmp->(x) do 1; end assert_equal(true, @o >= nil) - def @o.<=>(x); 0; end + cmp->(x) do 0; end assert_equal(true, @o >= nil) - def @o.<=>(x); -1; end + cmp->(x) do -1; end assert_equal(false, @o >= nil) end def test_lt - def @o.<=>(x); 1; end + cmp->(x) do 1; end assert_equal(false, @o < nil) - def @o.<=>(x); 0; end + cmp->(x) do 0; end assert_equal(false, @o < nil) - def @o.<=>(x); -1; end + cmp->(x) do -1; end assert_equal(true, @o < nil) end def test_le - def @o.<=>(x); 1; end + cmp->(x) do 1; end assert_equal(false, @o <= nil) - def @o.<=>(x); 0; end + cmp->(x) do 0; end assert_equal(true, @o <= nil) - def @o.<=>(x); -1; end + cmp->(x) do -1; end assert_equal(true, @o <= nil) end def test_between - def @o.<=>(x); 0 <=> x end + cmp->(x) do 0 <=> x end assert_equal(false, @o.between?(1, 2)) assert_equal(false, @o.between?(-2, -1)) assert_equal(true, @o.between?(-1, 1)) diff --git a/test/ruby/test_complex.rb b/test/ruby/test_complex.rb index 6885294f84a5c2..6706b5b39f6576 100644 --- a/test/ruby/test_complex.rb +++ b/test/ruby/test_complex.rb @@ -9,7 +9,8 @@ def setup if @rational @keiju = Rational.instance_variable_get('@RCS_ID') end - @unify = $".grep(/mathn/).size != 0 + seps = [File::SEPARATOR, File::ALT_SEPARATOR].compact.map{|x| Regexp.escape(x)}.join("|") + @unify = $".grep(/(?:^|#{seps})mathn(?:\.(?:rb|so))?/).size != 0 end def test_compsub diff --git a/test/ruby/test_dir.rb b/test/ruby/test_dir.rb index 0ea28f55d8c5ad..eb315d3d85b21d 100644 --- a/test/ruby/test_dir.rb +++ b/test/ruby/test_dir.rb @@ -161,6 +161,11 @@ def test_glob Dir.glob(File.join(@root, '{\{\},a}'))) assert_equal([], Dir.glob(File.join(@root, '['))) assert_equal([], Dir.glob(File.join(@root, '[a-\\'))) + + d = "\u{3042}\u{3044}".encode("utf-16le") + assert_raise(Encoding::CompatibilityError) {Dir.glob(d)} + m = Class.new {define_method(:to_path) {d}} + assert_raise(Encoding::CompatibilityError) {Dir.glob(m.new)} end def test_foreach diff --git a/test/ruby/test_dir_m17n.rb b/test/ruby/test_dir_m17n.rb new file mode 100644 index 00000000000000..59feb2b089ced5 --- /dev/null +++ b/test/ruby/test_dir_m17n.rb @@ -0,0 +1,193 @@ +require 'test/unit' +require 'tmpdir' +require_relative 'envutil' + +class TestDir_M17N < Test::Unit::TestCase + def with_tmpdir + Dir.mktmpdir {|dir| + Dir.chdir(dir) { + yield dir + } + } + end + + ## UTF-8 default_external, no default_internal + + def test_filename_extutf8 + with_tmpdir {|d| + assert_ruby_status(%w[-EUTF-8], <<-'EOS', nil, :chdir=>d) + filename = "\u3042" + File.open(filename, "w") {} + ents = Dir.entries(".") + exit ents.include?(filename) + EOS + } + end + + def test_filename_extutf8_invalid + with_tmpdir {|d| + assert_ruby_status(%w[-EASCII-8BIT], <<-'EOS', nil, :chdir=>d) + filename = "\xff".force_encoding("ASCII-8BIT") # invalid byte sequence as UTF-8 + File.open(filename, "w") {} + ents = Dir.entries(".") + exit ents.include?(filename) + EOS + assert_ruby_status(%w[-EUTF-8], <<-'EOS', nil, :chdir=>d) + filename = "\xff".force_encoding("UTF-8") # invalid byte sequence as UTF-8 + File.open(filename, "w") {} + ents = Dir.entries(".") + exit ents.include?(filename) + EOS + } + end + + def test_filename_as_bytes_extutf8 + with_tmpdir {|d| + assert_ruby_status(%w[-EUTF-8], <<-'EOS', nil, :chdir=>d) + filename = "\xc2\xa1".force_encoding("utf-8") + File.open(filename, "w") {} + ents = Dir.entries(".") + exit ents.include?(filename) + EOS + assert_ruby_status(%w[-EUTF-8], <<-'EOS', nil, :chdir=>d) + filename = "\xc2\xa1".force_encoding("euc-jp") + begin + open(filename) {} + exit true + rescue Errno::ENOENT + exit false + end + EOS + assert_ruby_status(%w[-EUTF-8], <<-'EOS', nil, :chdir=>d) + filename1 = "\xc2\xa1".force_encoding("utf-8") + filename2 = "\xc2\xa1".force_encoding("euc-jp") + filename3 = filename1.encode("euc-jp") + filename4 = filename2.encode("utf-8") + s1 = File.stat(filename1) rescue nil + s2 = File.stat(filename2) rescue nil + s3 = File.stat(filename3) rescue nil + s4 = File.stat(filename4) rescue nil + exit (s1 && s2 && !s3 && !s4) ? true : false + EOS + } + end + + ## UTF-8 default_external, EUC-JP default_internal + + def test_filename_extutf8_inteucjp_representable + with_tmpdir {|d| + assert_ruby_status(%w[-EUTF-8], <<-'EOS', nil, :chdir=>d) + filename = "\u3042" + File.open(filename, "w") {} + ents = Dir.entries(".") + exit ents.include?(filename) + EOS + assert_ruby_status(%w[-EUTF-8:EUC-JP], <<-'EOS', nil, :chdir=>d) + filename = "\xA4\xA2".force_encoding("euc-jp") + ents = Dir.entries(".") + exit ents.include?(filename) + EOS + assert_ruby_status(%w[-EUTF-8:EUC-JP], <<-'EOS', nil, :chdir=>d) + filename = "\xA4\xA2".force_encoding("euc-jp") + begin + open(filename) {} + exit true + rescue Errno::ENOENT + exit false + end + EOS + } + end + + def test_filename_extutf8_inteucjp_unrepresentable + with_tmpdir {|d| + assert_ruby_status(%w[-EUTF-8], <<-'EOS', nil, :chdir=>d) + filename1 = "\u2661" # WHITE HEART SUIT which is not representable in EUC-JP + filename2 = "\u3042" # HIRAGANA LETTER A which is representable in EUC-JP + File.open(filename1, "w") {} + File.open(filename2, "w") {} + ents = Dir.entries(".") + exit ents.include?(filename1) && ents.include?(filename2) + EOS + assert_ruby_status(%w[-EUTF-8:EUC-JP], <<-'EOS', nil, :chdir=>d) + filename1 = "\u2661" # WHITE HEART SUIT which is not representable in EUC-JP + filename2 = "\xA4\xA2".force_encoding("euc-jp") # HIRAGANA LETTER A in EUC-JP + ents = Dir.entries(".") + exit ents.include?(filename1) && ents.include?(filename2) + EOS + assert_ruby_status(%w[-EUTF-8:EUC-JP], <<-'EOS', nil, :chdir=>d) + filename1 = "\u2661" # WHITE HEART SUIT which is not representable in EUC-JP + filename2 = "\u3042" # HIRAGANA LETTER A which is representable in EUC-JP + filename3 = "\xA4\xA2".force_encoding("euc-jp") # HIRAGANA LETTER A in EUC-JP + s1 = File.stat(filename1) rescue nil + s2 = File.stat(filename2) rescue nil + s3 = File.stat(filename3) rescue nil + exit (s1 && s2 && s3) ? true : false + EOS + } + end + + ## others + + def test_filename_bytes_euc_jp + with_tmpdir {|d| + assert_ruby_status(%w[-EEUC-JP], <<-'EOS', nil, :chdir=>d) + filename = "\xA4\xA2".force_encoding("euc-jp") + File.open(filename, "w") {} + ents = Dir.entries(".") + ents.each {|e| e.force_encoding("ASCII-8BIT") } + exit ents.include?(filename.force_encoding("ASCII-8BIT")) + EOS + } + end + + def test_filename_euc_jp + with_tmpdir {|d| + assert_ruby_status(%w[-EEUC-JP], <<-'EOS', nil, :chdir=>d) + filename = "\xA4\xA2".force_encoding("euc-jp") + File.open(filename, "w") {} + ents = Dir.entries(".") + exit ents.include?(filename) + EOS + assert_ruby_status(%w[-EASCII-8BIT], <<-'EOS', nil, :chdir=>d) + filename = "\xA4\xA2" + ents = Dir.entries(".") + exit ents.include?(filename) + EOS + } + end + + def test_filename_utf8_raw_name + with_tmpdir {|d| + assert_ruby_status(%w[-EUTF-8], <<-'EOS', nil, :chdir=>d) + filename = "\u3042".force_encoding("utf-8") + File.open(filename, "w") {} + ents = Dir.entries(".") + exit ents.include?(filename) + EOS + assert_ruby_status(%w[-EASCII-8BIT], <<-'EOS', nil, :chdir=>d) + filename = "\u3042".force_encoding("ASCII-8BIT") + ents = Dir.entries(".") + exit ents.include?(filename) + EOS + } + end + + def test_filename_ext_euc_jp_and_int_utf_8 + with_tmpdir {|d| + assert_ruby_status(%w[-EEUC-JP], <<-'EOS', nil, :chdir=>d) + filename = "\xA4\xA2".force_encoding("euc-jp") + File.open(filename, "w") {} + ents = Dir.entries(".") + exit ents.include?(filename) + EOS + assert_ruby_status(%w[-EEUC-JP:UTF-8], <<-'EOS', nil, :chdir=>d) + filename = "\u3042" + ents = Dir.entries(".") + exit ents.include?(filename) + EOS + } + end + +end + diff --git a/test/ruby/test_econv.rb b/test/ruby/test_econv.rb index 5fce12da84a117..11f5bad2adb0f1 100644 --- a/test/ruby/test_econv.rb +++ b/test/ruby/test_econv.rb @@ -399,7 +399,7 @@ def test_universal_newline src << "abc\r\ndef"; check_ec("abc\ndef", "", :source_buffer_empty, *a) src << "ghi\njkl"; check_ec("abc\ndefghi\njkl", "", :source_buffer_empty, *a) src << "mno\rpqr"; check_ec("abc\ndefghi\njklmno\npqr", "", :source_buffer_empty, *a) - src << "stu\r"; check_ec("abc\ndefghi\njklmno\npqrstu\n", "", :source_buffer_empty, *a) + src << "stu\r"; check_ec("abc\ndefghi\njklmno\npqrstu", "", :source_buffer_empty, *a) src << "\nvwx"; check_ec("abc\ndefghi\njklmno\npqrstu\nvwx", "", :source_buffer_empty, *a) src << "\nyz"; check_ec("abc\ndefghi\njklmno\npqrstu\nvwx\nyz", "", :source_buffer_empty, *a) end @@ -410,11 +410,25 @@ def test_universal_newline2 src << "abc\r\ndef"; check_ec("abc\ndef", "", :source_buffer_empty, *a) src << "ghi\njkl"; check_ec("abc\ndefghi\njkl", "", :source_buffer_empty, *a) src << "mno\rpqr"; check_ec("abc\ndefghi\njklmno\npqr", "", :source_buffer_empty, *a) - src << "stu\r"; check_ec("abc\ndefghi\njklmno\npqrstu\n", "", :source_buffer_empty, *a) + src << "stu\r"; check_ec("abc\ndefghi\njklmno\npqrstu", "", :source_buffer_empty, *a) src << "\nvwx"; check_ec("abc\ndefghi\njklmno\npqrstu\nvwx", "", :source_buffer_empty, *a) src << "\nyz"; check_ec("abc\ndefghi\njklmno\npqrstu\nvwx\nyz", "", :source_buffer_empty, *a) end + def test_universal_newline3 + ec = Encoding::Converter.new("", "", universal_newline: true) + a = ["", src="", ec, nil, 50, :partial_input=>true] + src << "abc\r\ndef"; check_ec("abc\ndef", "", :source_buffer_empty, *a) + src << "ghi\njkl"; check_ec("abc\ndefghi\njkl", "", :source_buffer_empty, *a) + src << "mno\rpqr"; check_ec("abc\ndefghi\njklmno\npqr", "", :source_buffer_empty, *a) + src << "stu\r"; check_ec("abc\ndefghi\njklmno\npqrstu", "", :source_buffer_empty, *a) + src << "\nvwx"; check_ec("abc\ndefghi\njklmno\npqrstu\nvwx", "", :source_buffer_empty, *a) + src << "\nyz"; check_ec("abc\ndefghi\njklmno\npqrstu\nvwx\nyz", "", :source_buffer_empty, *a) + src << "\r"; check_ec("abc\ndefghi\njklmno\npqrstu\nvwx\nyz", "", :source_buffer_empty, *a) + a[-1] = nil + src << ""; check_ec("abc\ndefghi\njklmno\npqrstu\nvwx\nyz\n", "", :finished, *a) + end + def test_crlf_newline ec = Encoding::Converter.new("UTF-8", "EUC-JP", crlf_newline: true) assert_econv("abc\r\ndef", :finished, 50, ec, "abc\ndef", "") diff --git a/test/ruby/test_encoding.rb b/test/ruby/test_encoding.rb index d0477cf850732e..44419242d27c14 100644 --- a/test/ruby/test_encoding.rb +++ b/test/ruby/test_encoding.rb @@ -1,4 +1,5 @@ require 'test/unit' +require_relative 'envutil' class TestEncoding < Test::Unit::TestCase @@ -37,6 +38,17 @@ def test_singleton def test_find assert_raise(ArgumentError) { Encoding.find("foobarbazqux") } + assert_nothing_raised{Encoding.find("locale")} + assert_nothing_raised{Encoding.find("filesystem")} + + if /(?:ms|dar)win/ !~ RUBY_PLATFORM + # Unix's filesystem encoding is default_external + assert_ruby_status(%w[-EUTF-8:EUC-JP], <<-'EOS') + exit Encoding.find("filesystem") == Encoding::UTF_8 + Encoding.default_external = Encoding::EUC_JP + exit Encoding.find("filesystem") == Encoding::EUC_JP + EOS + end end def test_dummy_p diff --git a/test/ruby/test_enum.rb b/test/ruby/test_enum.rb index 10695ccba56467..4b71f5b6cc186c 100644 --- a/test/ruby/test_enum.rb +++ b/test/ruby/test_enum.rb @@ -35,6 +35,17 @@ def test_count assert_equal(3, @obj.count {|x| x % 2 == 1 }) assert_equal(2, @obj.count(1) {|x| x % 2 == 1 }) assert_raise(ArgumentError) { @obj.count(0, 1) } + + if RUBY_ENGINE == "ruby" + en = Class.new { + include Enumerable + alias :size :count + def each + yield 1 + end + } + assert_equal(1, en.new.count, '[ruby-core:24794]') + end end def test_find @@ -315,4 +326,78 @@ def each ensure $, = ofs end + + def test_chunk + e = [].chunk {|elt| true } + assert_equal([], e.to_a) + + e = @obj.chunk {|elt| elt & 2 == 0 ? false : true } + assert_equal([[false, [1]], [true, [2, 3]], [false, [1]], [true, [2]]], e.to_a) + + e = @obj.chunk(acc: 0) {|elt, h| h[:acc] += elt; h[:acc].even? } + assert_equal([[false, [1,2]], [true, [3]], [false, [1,2]]], e.to_a) + assert_equal([[false, [1,2]], [true, [3]], [false, [1,2]]], e.to_a) # this tests h is duplicated. + + hs = [{}] + e = [:foo].chunk(hs[0]) {|elt, h| + hs << h + true + } + assert_equal([[true, [:foo]]], e.to_a) + assert_equal([[true, [:foo]]], e.to_a) + assert_equal([{}, {}, {}], hs) + assert_not_same(hs[0], hs[1]) + assert_not_same(hs[0], hs[2]) + assert_not_same(hs[1], hs[2]) + + e = @obj.chunk {|elt| elt < 3 ? :_alone : true } + assert_equal([[:_alone, [1]], + [:_alone, [2]], + [true, [3]], + [:_alone, [1]], + [:_alone, [2]]], e.to_a) + + e = @obj.chunk {|elt| elt == 3 ? :_separator : true } + assert_equal([[true, [1, 2]], + [true, [1, 2]]], e.to_a) + + e = @obj.chunk {|elt| elt == 3 ? nil : true } + assert_equal([[true, [1, 2]], + [true, [1, 2]]], e.to_a) + + e = @obj.chunk {|elt| :_foo } + assert_raise(RuntimeError) { e.to_a } + end + + def test_slice_before + e = [].slice_before {|elt| true } + assert_equal([], e.to_a) + + e = @obj.slice_before {|elt| elt.even? } + assert_equal([[1], [2,3,1], [2]], e.to_a) + + e = @obj.slice_before {|elt| elt.odd? } + assert_equal([[1,2], [3], [1,2]], e.to_a) + + e = @obj.slice_before(acc: 0) {|elt, h| h[:acc] += elt; h[:acc].even? } + assert_equal([[1,2], [3,1,2]], e.to_a) + assert_equal([[1,2], [3,1,2]], e.to_a) # this tests h is duplicated. + + hs = [{}] + e = [:foo].slice_before(hs[0]) {|elt, h| + hs << h + true + } + assert_equal([[:foo]], e.to_a) + assert_equal([[:foo]], e.to_a) + assert_equal([{}, {}, {}], hs) + assert_not_same(hs[0], hs[1]) + assert_not_same(hs[0], hs[2]) + assert_not_same(hs[1], hs[2]) + + ss = %w[abc defg h ijk l mno pqr st u vw xy z] + assert_equal([%w[abc defg h], %w[ijk l], %w[mno], %w[pqr st u vw xy z]], + ss.slice_before(/\A...\z/).to_a) + end + end diff --git a/test/ruby/test_file_exhaustive.rb b/test/ruby/test_file_exhaustive.rb index 881edb57accbb3..e7d60960b838e7 100644 --- a/test/ruby/test_file_exhaustive.rb +++ b/test/ruby/test_file_exhaustive.rb @@ -3,6 +3,13 @@ require "tmpdir" class TestFileExhaustive < Test::Unit::TestCase + def assert_incompatible_encoding + d = "\u{3042}\u{3044}".encode("utf-16le") + assert_raise(Encoding::CompatibilityError) {yield d} + m = Class.new {define_method(:to_path) {d}} + assert_raise(Encoding::CompatibilityError) {yield m.new} + end + def setup @dir = Dir.mktmpdir("rubytest-file") File.chown(-1, Process.gid, @dir) @@ -388,6 +395,8 @@ def test_expand_path assert_kind_of(String, File.expand_path("~")) assert_raise(ArgumentError) { File.expand_path("~foo_bar_baz_unknown_user_wahaha") } assert_raise(ArgumentError) { File.expand_path("~foo_bar_baz_unknown_user_wahaha", "/") } + + assert_incompatible_encoding {|d| File.expand_path(d)} end def test_basename @@ -412,11 +421,14 @@ def test_basename assert_equal(basename, File.basename(@file + ".", ".*")) assert_equal(basename, File.basename(@file + "::$DATA", ".*")) end + + assert_incompatible_encoding {|d| File.basename(d)} end def test_dirname assert(@file.start_with?(File.dirname(@file))) assert_equal(".", File.dirname("")) + assert_incompatible_encoding {|d| File.dirname(d)} end def test_extname @@ -440,6 +452,8 @@ def test_extname end end end + + assert_incompatible_encoding {|d| File.extname(d)} end def test_split diff --git a/test/ruby/test_integer.rb b/test/ruby/test_integer.rb index 232a7fae30eef2..b3dd11d55ada9f 100644 --- a/test/ruby/test_integer.rb +++ b/test/ruby/test_integer.rb @@ -71,6 +71,19 @@ def test_Integer assert_equal(0377, Integer("0_3_7_7")) } assert_raise(ArgumentError, "[ruby-core:14139]") {Integer("0__3_7_7")} + assert_equal(1234, Integer(1234)) + assert_equal(1, Integer(1.234)) + + # base argument + assert_equal(1234, Integer("1234", 10)) + assert_equal(668, Integer("1234", 8)) + assert_equal(4660, Integer("1234", 16)) + assert_equal(49360, Integer("1234", 36)) + # decimal, not octal + assert_equal(1234, Integer("01234", 10)) + assert_raise(ArgumentError) { Integer("0x123", 10) } + assert_raise(ArgumentError) { Integer(1234, 10) } + assert_raise(ArgumentError) { Integer(12.34, 10) } end def test_int_p diff --git a/test/ruby/test_io.rb b/test/ruby/test_io.rb index 8b1714b01ec32d..0052a9263c6d24 100644 --- a/test/ruby/test_io.rb +++ b/test/ruby/test_io.rb @@ -1167,6 +1167,21 @@ def test_close_security_error end end + def test_pos + t = make_tempfile + + open(t.path, IO::RDWR|IO::CREAT|IO::TRUNC, 0600) do |f| + f.write "Hello" + assert_equal(5, f.pos) + end + open(t.path, IO::RDWR|IO::CREAT|IO::TRUNC, 0600) do |f| + f.sync = true + f.read + f.write "Hello" + assert_equal(5, f.pos) + end + end + def test_sysseek t = make_tempfile @@ -1286,6 +1301,15 @@ def test_reopen assert_equal("bar\n", f.gets, '[ruby-core:24240]') } end + + open(__FILE__) do |f| + f2 = open(t.path) + f.reopen(f2) + assert_equal("foo\n", f.gets) + assert_equal("bar\n", f.gets) + f.reopen(f2) + assert_equal("baz\n", f.gets, '[ruby-dev:39479]') + end end def test_foreach diff --git a/test/ruby/test_io_m17n.rb b/test/ruby/test_io_m17n.rb index 6f5e686c42e69d..deacd0b36d7076 100644 --- a/test/ruby/test_io_m17n.rb +++ b/test/ruby/test_io_m17n.rb @@ -220,33 +220,27 @@ def test_io_new_enc end def test_s_pipe_invalid - r, w = IO.pipe("utf-8", "euc-jp", :invalid=>:replace) - w << "\x80" - w.close - assert_equal("?", r.read) - ensure - r.close if r && !r.closed? - w.close if w && !w.closed? + with_pipe("utf-8", "euc-jp", :invalid=>:replace) {|r, w| + w << "\x80" + w.close + assert_equal("?", r.read) + } end def test_s_pipe_undef - r, w = IO.pipe("utf-8:euc-jp", :undef=>:replace) - w << "\ufffd" - w.close - assert_equal("?", r.read) - ensure - r.close if r && !r.closed? - w.close if w && !w.closed? + with_pipe("utf-8:euc-jp", :undef=>:replace) {|r, w| + w << "\ufffd" + w.close + assert_equal("?", r.read) + } end def test_s_pipe_undef_replace_string - r, w = IO.pipe("utf-8:euc-jp", :undef=>:replace, :replace=>"X") - w << "\ufffd" - w.close - assert_equal("X", r.read) - ensure - r.close if r && !r.closed? - w.close if w && !w.closed? + with_pipe("utf-8:euc-jp", :undef=>:replace, :replace=>"X") {|r, w| + w << "\ufffd" + w.close + assert_equal("X", r.read) + } end def test_dup @@ -564,6 +558,12 @@ def test_pipe assert_equal(eucjp, r.read) } + with_pipe("UTF-8") {|r,w| + w << "a" * 1023 + "\u3042" + "a" * 1022 + w.close + assert_equal(true, r.read.valid_encoding?) + } + with_pipe("UTF-8:EUC-JP") {|r,w| assert_equal(Encoding::UTF_8, r.external_encoding) assert_equal(Encoding::EUC_JP, r.internal_encoding) @@ -572,6 +572,11 @@ def test_pipe assert_equal(eucjp, r.read) } + e = assert_raise(ArgumentError) {with_pipe("UTF-8", "UTF-8".encode("UTF-32BE")) {}} + assert_match(/invalid name encoding/, e.message) + e = assert_raise(ArgumentError) {with_pipe("UTF-8".encode("UTF-32BE")) {}} + assert_match(/invalid name encoding/, e.message) + ENCS.each {|enc| with_pipe(enc) {|r, w| w << "\xc2\xa1" @@ -1506,7 +1511,6 @@ def test_binmode assert_equal("a", f.getc) assert_equal("\n", f.getc) f.binmode - assert_equal("\n", f.getc) assert_equal("b", f.getc) assert_equal("\r", f.getc) assert_equal("\n", f.getc) @@ -1526,7 +1530,6 @@ def test_binmode2 assert_equal("a", f.getc) assert_equal("\n", f.getc) f.binmode - assert_equal("\n", f.getc) assert_equal("b", f.getc) assert_equal("\r", f.getc) assert_equal("\n", f.getc) diff --git a/test/ruby/test_literal.rb b/test/ruby/test_literal.rb index 52f77049408674..e251197c79e5ba 100644 --- a/test/ruby/test_literal.rb +++ b/test/ruby/test_literal.rb @@ -211,6 +211,16 @@ def test_integer } } } + bug2407 = '[ruby-dev:39798]' + head.each {|h| + if /^0/ =~ h + begin + eval("#{h}_") + rescue SyntaxError => e + assert_match(/numeric literal without digits\Z/, e.message, bug2407) + end + end + } end def test_float diff --git a/test/ruby/test_m17n.rb b/test/ruby/test_m17n.rb index 78d98ac4410262..e5c0acb034b583 100644 --- a/test/ruby/test_m17n.rb +++ b/test/ruby/test_m17n.rb @@ -201,10 +201,10 @@ def test_string_inspect assert_equal('"\xFC\x80\x80\x80\x80 "', u("\xfc\x80\x80\x80\x80 ").inspect) - assert_equal(e("\"\\xA1\x8f\xA1\xA1\""), e("\xa1\x8f\xa1\xa1").inspect) + assert_equal("\"\\xA1\\x{8FA1A1}\"", e("\xa1\x8f\xa1\xa1").inspect) assert_equal('"\x81."', s("\x81.").inspect) - assert_equal(s("\"\x81@\""), s("\x81@").inspect) + assert_equal(s('"\x{8140}"'), s("\x81@").inspect) assert_equal('"\xFC"', u("\xfc").inspect) end @@ -646,40 +646,40 @@ def test_union_2 def test_dynamic_ascii_regexp assert_warning(%r{regexp match /.../n against to}) { - assert_regexp_generic_ascii(/#{}/n) + assert_regexp_generic_ascii(/#{ }/n) } - assert_regexp_fixed_ascii8bit(/#{}\xc2\xa1/n) - assert_regexp_fixed_ascii8bit(/\xc2\xa1#{}/n) + assert_regexp_fixed_ascii8bit(/#{ }\xc2\xa1/n) + assert_regexp_fixed_ascii8bit(/\xc2\xa1#{ }/n) assert_nothing_raised { s1, s2 = a('\xc2'), a('\xa1'); /#{s1}#{s2}/ } end def test_dynamic_eucjp_regexp - assert_regexp_fixed_eucjp(/#{}/e) - assert_regexp_fixed_eucjp(/#{}\xc2\xa1/e) - assert_regexp_fixed_eucjp(/\xc2\xa1#{}/e) - assert_raise(SyntaxError) { eval('/\xc2#{}/e') } - assert_raise(SyntaxError) { eval('/#{}\xc2/e') } - assert_raise(SyntaxError) { eval('/\xc2#{}\xa1/e') } + assert_regexp_fixed_eucjp(/#{ }/e) + assert_regexp_fixed_eucjp(/#{ }\xc2\xa1/e) + assert_regexp_fixed_eucjp(/\xc2\xa1#{ }/e) + assert_raise(SyntaxError) { eval('/\xc2#{ }/e') } + assert_raise(SyntaxError) { eval('/#{ }\xc2/e') } + assert_raise(SyntaxError) { eval('/\xc2#{ }\xa1/e') } assert_raise(ArgumentError) { s1, s2 = e('\xc2'), e('\xa1'); /#{s1}#{s2}/ } end def test_dynamic_sjis_regexp - assert_regexp_fixed_sjis(/#{}/s) - assert_regexp_fixed_sjis(/#{}\xc2\xa1/s) - assert_regexp_fixed_sjis(/\xc2\xa1#{}/s) - assert_raise(SyntaxError) { eval('/\x81#{}/s') } - assert_raise(SyntaxError) { eval('/#{}\x81/s') } - assert_raise(SyntaxError) { eval('/\x81#{}\xa1/s') } + assert_regexp_fixed_sjis(/#{ }/s) + assert_regexp_fixed_sjis(/#{ }\xc2\xa1/s) + assert_regexp_fixed_sjis(/\xc2\xa1#{ }/s) + assert_raise(SyntaxError) { eval('/\x81#{ }/s') } + assert_raise(SyntaxError) { eval('/#{ }\x81/s') } + assert_raise(SyntaxError) { eval('/\x81#{ }\xa1/s') } assert_raise(ArgumentError) { s1, s2 = s('\x81'), s('\xa1'); /#{s1}#{s2}/ } end def test_dynamic_utf8_regexp - assert_regexp_fixed_utf8(/#{}/u) - assert_regexp_fixed_utf8(/#{}\xc2\xa1/u) - assert_regexp_fixed_utf8(/\xc2\xa1#{}/u) - assert_raise(SyntaxError) { eval('/\xc2#{}/u') } - assert_raise(SyntaxError) { eval('/#{}\xc2/u') } - assert_raise(SyntaxError) { eval('/\xc2#{}\xa1/u') } + assert_regexp_fixed_utf8(/#{ }/u) + assert_regexp_fixed_utf8(/#{ }\xc2\xa1/u) + assert_regexp_fixed_utf8(/\xc2\xa1#{ }/u) + assert_raise(SyntaxError) { eval('/\xc2#{ }/u') } + assert_raise(SyntaxError) { eval('/#{ }\xc2/u') } + assert_raise(SyntaxError) { eval('/\xc2#{ }\xa1/u') } assert_raise(ArgumentError) { s1, s2 = u('\xc2'), u('\xa1'); /#{s1}#{s2}/ } end @@ -712,23 +712,23 @@ def test_regexp_mixed_unicode assert_raise(SyntaxError) { eval(s(%{/\\u{6666}\\xc2\\xa1/})) } assert_nothing_raised { eval(u(%{/\\u{6666}\\xc2\\xa1/})) } - assert_raise(SyntaxError) { eval(a(%{/\xc2\xa1#{}\\u{6666}/})) } - assert_raise(SyntaxError) { eval(e(%{/\xc2\xa1#{}\\u{6666}/})) } - assert_raise(SyntaxError) { eval(s(%{/\xc2\xa1#{}\\u{6666}/})) } - assert_nothing_raised { eval(u(%{/\xc2\xa1#{}\\u{6666}/})) } - assert_raise(SyntaxError) { eval(a(%{/\\u{6666}#{}\xc2\xa1/})) } - assert_raise(SyntaxError) { eval(e(%{/\\u{6666}#{}\xc2\xa1/})) } - assert_raise(SyntaxError) { eval(s(%{/\\u{6666}#{}\xc2\xa1/})) } - assert_nothing_raised { eval(u(%{/\\u{6666}#{}\xc2\xa1/})) } - - assert_raise(SyntaxError) { eval(a(%{/\\xc2\\xa1#{}\\u{6666}/})) } - assert_raise(SyntaxError) { eval(e(%{/\\xc2\\xa1#{}\\u{6666}/})) } - assert_raise(SyntaxError) { eval(s(%{/\\xc2\\xa1#{}\\u{6666}/})) } - assert_nothing_raised { eval(u(%{/\\xc2\\xa1#{}\\u{6666}/})) } - assert_raise(SyntaxError) { eval(a(%{/\\u{6666}#{}\\xc2\\xa1/})) } - assert_raise(SyntaxError) { eval(e(%{/\\u{6666}#{}\\xc2\\xa1/})) } - assert_raise(SyntaxError) { eval(s(%{/\\u{6666}#{}\\xc2\\xa1/})) } - assert_nothing_raised { eval(u(%{/\\u{6666}#{}\\xc2\\xa1/})) } + assert_raise(SyntaxError) { eval(a(%{/\xc2\xa1#{ }\\u{6666}/})) } + assert_raise(SyntaxError) { eval(e(%{/\xc2\xa1#{ }\\u{6666}/})) } + assert_raise(SyntaxError) { eval(s(%{/\xc2\xa1#{ }\\u{6666}/})) } + assert_nothing_raised { eval(u(%{/\xc2\xa1#{ }\\u{6666}/})) } + assert_raise(SyntaxError) { eval(a(%{/\\u{6666}#{ }\xc2\xa1/})) } + assert_raise(SyntaxError) { eval(e(%{/\\u{6666}#{ }\xc2\xa1/})) } + assert_raise(SyntaxError) { eval(s(%{/\\u{6666}#{ }\xc2\xa1/})) } + assert_nothing_raised { eval(u(%{/\\u{6666}#{ }\xc2\xa1/})) } + + assert_raise(SyntaxError) { eval(a(%{/\\xc2\\xa1#{ }\\u{6666}/})) } + assert_raise(SyntaxError) { eval(e(%{/\\xc2\\xa1#{ }\\u{6666}/})) } + assert_raise(SyntaxError) { eval(s(%{/\\xc2\\xa1#{ }\\u{6666}/})) } + assert_nothing_raised { eval(u(%{/\\xc2\\xa1#{ }\\u{6666}/})) } + assert_raise(SyntaxError) { eval(a(%{/\\u{6666}#{ }\\xc2\\xa1/})) } + assert_raise(SyntaxError) { eval(e(%{/\\u{6666}#{ }\\xc2\\xa1/})) } + assert_raise(SyntaxError) { eval(s(%{/\\u{6666}#{ }\\xc2\\xa1/})) } + assert_nothing_raised { eval(u(%{/\\u{6666}#{ }\\xc2\\xa1/})) } end def test_str_allocate @@ -756,30 +756,16 @@ def test_sprintf_c end def test_sprintf_p - assert_strenc('""', 'ASCII-8BIT', a("%p") % a("")) - assert_strenc('""', 'EUC-JP', e("%p") % e("")) - assert_strenc('""', 'Windows-31J', s("%p") % s("")) - assert_strenc('""', 'UTF-8', u("%p") % u("")) - - assert_strenc('"a"', 'ASCII-8BIT', a("%p") % a("a")) - assert_strenc('"a"', 'EUC-JP', e("%p") % e("a")) - assert_strenc('"a"', 'Windows-31J', s("%p") % s("a")) - assert_strenc('"a"', 'UTF-8', u("%p") % u("a")) - - assert_strenc('"\xC2\xA1"', 'ASCII-8BIT', a("%p") % a("\xc2\xa1")) - assert_strenc("\"\xC2\xA1\"", 'EUC-JP', e("%p") % e("\xc2\xa1")) - #assert_strenc("\"\xC2\xA1\"", 'Windows-31J', s("%p") % s("\xc2\xa1")) - assert_strenc("\"\xC2\xA1\"", 'UTF-8', u("%p") % u("\xc2\xa1")) - - assert_strenc('"\xC2\xA1"', 'ASCII-8BIT', "%10p" % a("\xc2\xa1")) - assert_strenc(" \"\xC2\xA1\"", 'EUC-JP', "%10p" % e("\xc2\xa1")) - #assert_strenc(" \"\xC2\xA1\"", 'Windows-31J', "%10p" % s("\xc2\xa1")) - assert_strenc(" \"\xC2\xA1\"", 'UTF-8', "%10p" % u("\xc2\xa1")) - - assert_strenc('"\x00"', 'ASCII-8BIT', a("%p") % a("\x00")) - assert_strenc('"\x00"', 'EUC-JP', e("%p") % e("\x00")) - assert_strenc('"\x00"', 'Windows-31J', s("%p") % s("\x00")) - assert_strenc('"\x00"', 'UTF-8', u("%p") % u("\x00")) + enc = "".inspect.encoding + Encoding.list.each do |e| + format = "%p".force_encoding(e) + ['', 'a', "\xC2\xA1", "\x00"].each do |s| + s.force_encoding(e) + assert_strenc(s.inspect, enc, format % s) + end + s = "\xC2\xA1".force_encoding(e) + assert_strenc('%10s' % s.inspect, enc, "%10p" % s) + end end def test_sprintf_s @@ -881,6 +867,11 @@ def test_str_aref_substr assert_equal(nil, u("\xc2\xa1\xc2\xa2\xc2\xa3")[u("\xa1\xc2")]) assert_raise(Encoding::CompatibilityError) { u("\xc2\xa1\xc2\xa2\xc2\xa3")[a("\xa1\xc2")] } assert_nil(e("\xa1\xa2\xa3\xa4")[e("\xa2\xa3")]) + + bug2379 = '[ruby-core:26787]' + assert_equal("\u{439}", "\u{439}"[0, 30], bug2379) + assert_equal("\u{439}", "a\u{439}"[1, 30], bug2379) + assert_equal("\u{439}", "a\u{439}bcdefghijklmnop"[1, 1][0, 1], bug2379) end def test_aset @@ -1176,8 +1167,8 @@ def test_array_to_s assert_equal(Encoding::US_ASCII, [].to_s.encoding) assert_equal(Encoding::US_ASCII, [nil].to_s.encoding) assert_equal(Encoding::US_ASCII, [1].to_s.encoding) - assert_equal(Encoding::US_ASCII, [""].to_s.encoding) - assert_equal(Encoding::US_ASCII, ["a"].to_s.encoding) + assert_equal("".inspect.encoding, [""].to_s.encoding) + assert_equal("a".inspect.encoding, ["a"].to_s.encoding) assert_equal(Encoding::US_ASCII, [nil,1,"","a","\x20",[]].to_s.encoding) end @@ -1232,30 +1223,30 @@ def test_magic_comment_at_various_positions def test_regexp_usascii assert_regexp_usascii_literal('//', Encoding::US_ASCII) - assert_regexp_usascii_literal('/#{}/', Encoding::US_ASCII) + assert_regexp_usascii_literal('/#{ }/', Encoding::US_ASCII) assert_regexp_usascii_literal('/#{"a"}/', Encoding::US_ASCII) assert_regexp_usascii_literal('/#{%q"\x80"}/', Encoding::ASCII_8BIT) assert_regexp_usascii_literal('/#{"\x80"}/', nil, SyntaxError) assert_regexp_usascii_literal('/a/', Encoding::US_ASCII) - assert_regexp_usascii_literal('/a#{}/', Encoding::US_ASCII) + assert_regexp_usascii_literal('/a#{ }/', Encoding::US_ASCII) assert_regexp_usascii_literal('/a#{"a"}/', Encoding::US_ASCII) assert_regexp_usascii_literal('/a#{%q"\x80"}/', Encoding::ASCII_8BIT) assert_regexp_usascii_literal('/a#{"\x80"}/', nil, SyntaxError) assert_regexp_usascii_literal('/\x80/', Encoding::ASCII_8BIT) - assert_regexp_usascii_literal('/\x80#{}/', Encoding::ASCII_8BIT) + assert_regexp_usascii_literal('/\x80#{ }/', Encoding::ASCII_8BIT) assert_regexp_usascii_literal('/\x80#{"a"}/', Encoding::ASCII_8BIT) assert_regexp_usascii_literal('/\x80#{%q"\x80"}/', Encoding::ASCII_8BIT) assert_regexp_usascii_literal('/\x80#{"\x80"}/', nil, SyntaxError) assert_regexp_usascii_literal('/\u1234/', Encoding::UTF_8) - assert_regexp_usascii_literal('/\u1234#{}/', Encoding::UTF_8) + assert_regexp_usascii_literal('/\u1234#{ }/', Encoding::UTF_8) assert_regexp_usascii_literal('/\u1234#{"a"}/', Encoding::UTF_8) assert_regexp_usascii_literal('/\u1234#{%q"\x80"}/', nil, SyntaxError) assert_regexp_usascii_literal('/\u1234#{"\x80"}/', nil, SyntaxError) assert_regexp_usascii_literal('/\u1234\x80/', nil, SyntaxError) - assert_regexp_usascii_literal('/\u1234#{}\x80/', nil, RegexpError) + assert_regexp_usascii_literal('/\u1234#{ }\x80/', nil, RegexpError) end def test_gbk diff --git a/test/ruby/test_m17n_comb.rb b/test/ruby/test_m17n_comb.rb index 2d43a56ab24c3d..57a8b16dfa1fe2 100644 --- a/test/ruby/test_m17n_comb.rb +++ b/test/ruby/test_m17n_comb.rb @@ -727,15 +727,6 @@ def test_str_chop STRINGS.each {|s| s = s.dup desc = "#{encdump s}.chop" - if !s.valid_encoding? - #assert_raise(ArgumentError, desc) { s.chop } - begin - s.chop - rescue ArgumentError - e = $! - end - next if e - end t = nil assert_nothing_raised(desc) { t = s.chop } assert(t.valid_encoding?) if s.valid_encoding? @@ -1354,7 +1345,7 @@ def test_str_succ STRINGS.each {|s0| next if s0.empty? s = s0.dup - n = 1000 + n = 300 h = {} n.times {|i| if h[s] diff --git a/test/ruby/test_marshal.rb b/test/ruby/test_marshal.rb index 172bfbb3f78a0e..0b37b7ab173ada 100644 --- a/test/ruby/test_marshal.rb +++ b/test/ruby/test_marshal.rb @@ -32,8 +32,8 @@ def fact(n) end def test_marshal - x = [1, 2, 3, [4,5,"foo"], {1=>"bar"}, 2.5, fact(30)] - assert_equal x, Marshal.load(Marshal.dump(x)) + a = [1, 2, 3, [4,5,"foo"], {1=>"bar"}, 2.5, fact(30)] + assert_equal a, Marshal.load(Marshal.dump(a)) [[1,2,3,4], [81, 2, 118, 3146]].each { |w,x,y,z| obj = (x.to_f + y.to_f / z.to_f) * Math.exp(w.to_f / (x.to_f + y.to_f / z.to_f)) @@ -200,8 +200,114 @@ def test_symbol end ClassUTF8 = eval("class R\u{e9}sum\u{e9}; self; end") + + iso_8859_1 = Encoding::ISO_8859_1 + + structISO8859_1 = Struct.new("r\xe9sum\xe9".force_encoding(iso_8859_1).intern) + const_set("R\xe9sum\xe9".force_encoding(iso_8859_1), structISO8859_1) + structISO8859_1.name + StructISO8859_1 = structISO8859_1 + classISO8859_1 = Class.new do + attr_accessor "r\xe9sum\xe9".force_encoding(iso_8859_1) + eval("def initialize(x) @r\xe9sum\xe9 = x; end".force_encoding(iso_8859_1)) + end + const_set("R\xe9sum\xe92".force_encoding(iso_8859_1), classISO8859_1) + classISO8859_1.name + ClassISO8859_1 = classISO8859_1 + def test_class_nonascii a = ClassUTF8.new assert_instance_of(ClassUTF8, Marshal.load(Marshal.dump(a)), '[ruby-core:24790]') + + bug1932 = '[ruby-core:24882]' + + a = StructISO8859_1.new(10) + assert_nothing_raised(bug1932) do + assert_equal(a, Marshal.load(Marshal.dump(a)), bug1932) + end + a.__send__("#{StructISO8859_1.members[0]}=", a) + assert_nothing_raised(bug1932) do + assert_equal(a, Marshal.load(Marshal.dump(a)), bug1932) + end + + a = ClassISO8859_1.new(10) + assert_nothing_raised(bug1932) do + b = Marshal.load(Marshal.dump(a)) + assert_equal(ClassISO8859_1, b.class, bug1932) + assert_equal(a.instance_variables, b.instance_variables, bug1932) + a.instance_variables.each do |i| + assert_equal(a.instance_variable_get(i), b.instance_variable_get(i), bug1932) + end + end + a.__send__(a.methods(true).grep(/=\z/)[0], a) + assert_nothing_raised(bug1932) do + b = Marshal.load(Marshal.dump(a)) + assert_equal(ClassISO8859_1, b.class, bug1932) + assert_equal(a.instance_variables, b.instance_variables, bug1932) + assert_equal(b, b.instance_variable_get(a.instance_variables[0]), bug1932) + end + end + + def test_regexp + assert_equal(/\\u/, Marshal.load("\004\b/\b\\\\u\000")) + assert_equal(/u/, Marshal.load("\004\b/\a\\u\000")) + assert_equal(/u/, Marshal.load("\004\bI/\a\\u\000\006:\016@encoding\"\vEUC-JP")) + + bug2109 = '[ruby-core:25625]' + a = "\x82\xa0".force_encoding(Encoding::Windows_31J) + b = "\x82\xa2".force_encoding(Encoding::Windows_31J) + c = [/#{a}/, /#{b}/] + assert_equal(c, Marshal.load(Marshal.dump(c)), bug2109) + end + + class DumpTest + def marshal_dump + @@block.call(:marshal_dump) + end + + def dump_each(&block) + @@block = block + Marshal.dump(self) + end + end + + class LoadTest + def marshal_dump + nil + end + def marshal_load(obj) + @@block.call(:marshal_load) + end + def self.load_each(m, &block) + @@block = block + Marshal.load(m) + end + end + + def test_context_switch + o = DumpTest.new + e = o.enum_for(:dump_each) + assert_equal(:marshal_dump, e.next) + GC.start + assert(true, '[ruby-dev:39425]') + assert_raise(StopIteration) {e.next} + + o = LoadTest.new + m = Marshal.dump(o) + e = LoadTest.enum_for(:load_each, m) + assert_equal(:marshal_load, e.next) + GC.start + assert(true, '[ruby-dev:39425]') + assert_raise(StopIteration) {e.next} + end + + def test_dump_buffer + bug2390 = '[ruby-dev:39744]' + w = "" + def w.write(str) + self << str.to_s + end + Marshal.dump(Object.new, w) + assert_not_empty(w, bug2390) end end diff --git a/test/ruby/test_math.rb b/test/ruby/test_math.rb index c62466d33c33da..5b49291df005b3 100644 --- a/test/ruby/test_math.rb +++ b/test/ruby/test_math.rb @@ -2,6 +2,7 @@ class TestMath < Test::Unit::TestCase def assert_infinity(a, *rest) + rest = ["not infinity"] if rest.empty? assert(!a.finite?, *rest) end @@ -197,8 +198,8 @@ def test_gamma # no SEGV [ruby-core:25257] 31.upto(65) do |i| i = 1 << i - assert_infinity(Math.gamma(i)) - assert_infinity(Math.gamma(i-1)) + assert_infinity(Math.gamma(i), "Math.gamma(#{i}) should be INF") + assert_infinity(Math.gamma(i-1), "Math.gamma(#{i-1}) should be INF") end end diff --git a/test/ruby/test_module.rb b/test/ruby/test_module.rb index c001c5507cbf36..92b2f7b56108cf 100644 --- a/test/ruby/test_module.rb +++ b/test/ruby/test_module.rb @@ -55,7 +55,7 @@ def test_GT_0 end def test_CMP_0 - assert_equal -1, (String <=> Object) + assert_equal(-1, (String <=> Object)) assert_equal 1, (Object <=> String) assert_nil(Array <=> String) end @@ -528,10 +528,10 @@ def test_undef class << o; self; end.instance_eval { undef_method(:foo) } end - %w(object_id __send__ initialize).each do |m| - assert_in_out_err([], <<-INPUT, [], /warning: undefining `#{m}' may cause serious problems$/) + %w(object_id __send__ initialize).each do |n| + assert_in_out_err([], <<-INPUT, [], /warning: undefining `#{n}' may cause serious problems$/) $VERBOSE = false - Class.new.instance_eval { undef_method(:#{m}) } + Class.new.instance_eval { undef_method(:#{n}) } INPUT end end @@ -755,4 +755,127 @@ def test_nonascii_name c = eval("class C\u{df}; self; end") assert_equal("TestModule::C\u{df}", c.name, '[ruby-core:24600]') end + + def test_method_added + memo = [] + mod = Module.new do + mod = self + (class << self ; self ; end).class_eval do + define_method :method_added do |sym| + memo << sym + memo << mod.instance_methods(false) + memo << (mod.instance_method(sym) rescue nil) + end + end + def f + end + alias g f + attr_reader :a + attr_writer :a + end + assert_equal :f, memo.shift + assert_equal [:f], memo.shift, '[ruby-core:25536]' + assert_equal mod.instance_method(:f), memo.shift + assert_equal :g, memo.shift + assert_equal [:f, :g], memo.shift + assert_equal mod.instance_method(:f), memo.shift + assert_equal :a, memo.shift + assert_equal [:f, :g, :a], memo.shift + assert_equal mod.instance_method(:a), memo.shift + assert_equal :a=, memo.shift + assert_equal [:f, :g, :a, :a=], memo.shift + assert_equal mod.instance_method(:a=), memo.shift + end + + def test_method_redefinition + feature2155 = '[ruby-dev:39400]' + + line = __LINE__+4 + stderr = EnvUtil.verbose_warning do + Module.new do + def foo; end + def foo; end + end + end + assert_match(/:#{line}: warning: method redefined; discarding old foo/, stderr) + assert_match(/:#{line-1}: warning: previous definition of foo/, stderr, feature2155) + + stderr = EnvUtil.verbose_warning do + Module.new do + def foo; end + alias bar foo + def foo; end + end + end + assert_equal("", stderr) + + stderr = EnvUtil.verbose_warning do + Module.new do + def foo; end + alias bar foo + alias bar foo + end + end + assert_equal("", stderr) + + line = __LINE__+4 + stderr = EnvUtil.verbose_warning do + Module.new do + define_method(:foo) do end + def foo; end + end + end + assert_match(/:#{line}: warning: method redefined; discarding old foo/, stderr) + assert_match(/:#{line-1}: warning: previous definition of foo/, stderr, feature2155) + + stderr = EnvUtil.verbose_warning do + Module.new do + define_method(:foo) do end + alias bar foo + alias barf oo + end + end + assert_equal("", stderr) + + stderr = EnvUtil.verbose_warning do + Module.new do + module_function + def foo; end + module_function :foo + end + end + assert_equal("", stderr, '[ruby-dev:39397]') + + stderr = EnvUtil.verbose_warning do + Module.new do + def foo; end + undef foo + end + end + assert_equal("", stderr) + end + + def test_protected_singleton_method + klass = Class.new + x = klass.new + class << x + protected + + def foo + end + end + assert_raise(NoMethodError) do + x.foo + end + klass.send(:define_method, :bar) do + x.foo + end + assert_nothing_raised do + x.bar + end + y = klass.new + assert_raise(NoMethodError) do + y.bar + end + end end diff --git a/test/ruby/test_object.rb b/test/ruby/test_object.rb index eff463f3077a59..e90ca3b6d94c5c 100644 --- a/test/ruby/test_object.rb +++ b/test/ruby/test_object.rb @@ -265,6 +265,26 @@ def test_remove_method c.instance_eval { remove_method(:foo) } end + c = Class.new do + def meth1; "meth" end + end + d = Class.new(c) do + alias meth2 meth1 + end + o1 = c.new + assert_respond_to(o1, :meth1) + assert_equal("meth", o1.meth1) + o2 = d.new + assert_respond_to(o2, :meth1) + assert_equal("meth", o2.meth1) + assert_respond_to(o2, :meth2) + assert_equal("meth", o2.meth2) + d.class_eval do + remove_method :meth2 + end + bug2202 = '[ruby-core:26074]' + assert_raise(NoMethodError, bug2202) {o2.meth2} + %w(object_id __send__ initialize).each do |m| assert_in_out_err([], <<-INPUT, %w(:ok), /warning: removing `#{m}' may cause serious problems$/) $VERBOSE = false @@ -304,10 +324,84 @@ def foo; end end end + def test_respond_to_missing + c = Class.new do + def respond_to_missing?(id, priv=false) + if id == :foobar + true + else + false + end + end + def method_missing(id,*args) + if id == :foobar + return [:foo, *args] + else + super + end + end + end + + foo = c.new + assert_equal([:foo], foo.foobar); + assert_equal([:foo, 1], foo.foobar(1)); + assert_equal([:foo, 1, 2, 3, 4, 5], foo.foobar(1, 2, 3, 4, 5)); + assert(foo.respond_to?(:foobar)) + assert_equal(false, foo.respond_to?(:foobarbaz)) + assert_raise(NoMethodError) do + foo.foobarbaz + end + + foobar = foo.method(:foobar) + assert_equal(-1, foobar.arity); + assert_equal([:foo], foobar.call); + assert_equal([:foo, 1], foobar.call(1)); + assert_equal([:foo, 1, 2, 3, 4, 5], foobar.call(1, 2, 3, 4, 5)); + assert_equal(foobar, foo.method(:foobar)) + assert_not_equal(foobar, c.new.method(:foobar)) + + c = Class.new(c) + assert_equal(false, c.method_defined?(:foobar)) + assert_raise(NameError, '[ruby-core:25748]') do + c.instance_method(:foobar) + end + + m = Module.new + assert_equal(false, m.method_defined?(:foobar)) + assert_raise(NameError, '[ruby-core:25748]') do + m.instance_method(:foobar) + end + end + def test_send_with_no_arguments assert_raise(ArgumentError) { 1.send } end + def test_no_superclass_method + bug2312 = '[ruby-dev:39581]' + + o = Object.new + e = assert_raise(NoMethodError) { + o.method(:__send__).call(:never_defined_test_no_superclass_method) + } + m1 = e.message + assert_no_match(/no superclass method/, m1, bug2312) + e = assert_raise(NoMethodError) { + o.method(:__send__).call(:never_defined_test_no_superclass_method) + } + assert_equal(m1, e.message, bug2312) + e = assert_raise(NoMethodError) { + o.never_defined_test_no_superclass_method + } + assert_equal(m1, e.message, bug2312) + end + + def test_superclass_method + bug2312 = '[ruby-dev:39581]' + assert_in_out_err(["-e", "module Enumerable;undef min;end; (1..2).min{}"], + [], [], /no superclass method/, bug2312) + end + def test_specific_eval_with_wrong_arguments assert_raise(ArgumentError) do 1.instance_eval("foo") { foo } diff --git a/test/ruby/test_proc.rb b/test/ruby/test_proc.rb index 5a00fdb1239283..6c2bae4c41cfff 100644 --- a/test/ruby/test_proc.rb +++ b/test/ruby/test_proc.rb @@ -144,6 +144,7 @@ def block def test_method_to_proc b = block() assert_equal "OK", b.call + assert_instance_of(Binding, b.binding, '[ruby-core:25589]') end def test_curry diff --git a/test/ruby/test_process.rb b/test/ruby/test_process.rb index 4e6097bbc152c4..06d2529597905c 100644 --- a/test/ruby/test_process.rb +++ b/test/ruby/test_process.rb @@ -110,21 +110,21 @@ def test_rlimit_value with_tmpchdir do s = run_in_child(<<-'End') cur, max = Process.getrlimit(:NOFILE) - Process.setrlimit(:NOFILE, max-10) + Process.setrlimit(:NOFILE, [max-10, cur].min) begin Process.setrlimit(:NOFILE, :INFINITY) rescue Errno::EPERM - exit 1 + exit false end End assert_not_equal(0, s.exitstatus) s = run_in_child(<<-'End') cur, max = Process.getrlimit(:NOFILE) - Process.setrlimit(:NOFILE, max-10) + Process.setrlimit(:NOFILE, [max-10, cur].min) begin Process.setrlimit(:NOFILE, "INFINITY") rescue Errno::EPERM - exit 1 + exit false end End assert_not_equal(0, s.exitstatus) @@ -1136,7 +1136,10 @@ def test_wait_and_sigchild pid = fork { sleep 1; exit } Thread.start { raise } Process.wait pid - sleep 2 + 5.times do + sleep 1 + break unless signal_received.empty? + end assert_equal [true], signal_received, " [ruby-core:19744]" rescue NotImplementedError, ArgumentError ensure diff --git a/test/ruby/test_range.rb b/test/ruby/test_range.rb index 69eba884553627..e0ff2738360ce6 100644 --- a/test/ruby/test_range.rb +++ b/test/ruby/test_range.rb @@ -1,5 +1,6 @@ require 'test/unit' require 'delegate' +require 'timeout' class TestRange < Test::Unit::TestCase def test_range_string @@ -14,6 +15,7 @@ def test_range_numeric_string assert_equal(["6", "7", "8"], ("6".."8").to_a, "[ruby-talk:343187]") assert_equal(["6", "7"], ("6"..."8").to_a) assert_equal(["9", "10"], ("9".."10").to_a) + assert_equal(["09", "10"], ("09".."10").to_a, "[ruby-dev:39361]") assert_equal(["9", "10"], (SimpleDelegator.new("9").."10").to_a) assert_equal(["9", "10"], ("9"..SimpleDelegator.new("10")).to_a) end @@ -293,4 +295,37 @@ def test_cyclic_range_inspect o.instance_eval { initialize(o, 1) } assert_equal("(... .. ...)..1", o.inspect) end + + def test_comparison_when_recursive + x = CyclicRange.allocate; x.send(:initialize, x, 1) + y = CyclicRange.allocate; y.send(:initialize, y, 1) + Timeout.timeout(1) { + assert x == y + assert x.eql? y + } + + z = CyclicRange.allocate; z.send(:initialize, z, :another) + Timeout.timeout(1) { + assert x != z + assert !x.eql?(z) + } + + x = CyclicRange.allocate + y = CyclicRange.allocate + x.send(:initialize, y, 1) + y.send(:initialize, x, 1) + Timeout.timeout(1) { + assert x == y + assert x.eql?(y) + } + + x = CyclicRange.allocate + z = CyclicRange.allocate + x.send(:initialize, z, 1) + z.send(:initialize, x, :other) + Timeout.timeout(1) { + assert x != z + assert !x.eql?(z) + } + end end diff --git a/test/ruby/test_rational.rb b/test/ruby/test_rational.rb index 274a6eb33f1c14..705f712bd398e7 100644 --- a/test/ruby/test_rational.rb +++ b/test/ruby/test_rational.rb @@ -9,7 +9,8 @@ def setup if @complex @keiju = Complex.instance_variable_get('@RCS_ID') end - @unify = $".grep(/mathn/).size != 0 + seps = [File::SEPARATOR, File::ALT_SEPARATOR].compact.map{|x| Regexp.escape(x)}.join("|") + @unify = $".grep(/(?:^|#{seps})mathn(?:\.(?:rb|so))?/).size != 0 end def test_ratsub diff --git a/test/ruby/test_regexp.rb b/test/ruby/test_regexp.rb index cdbe277ba84110..4f8a1a6c77f166 100644 --- a/test/ruby/test_regexp.rb +++ b/test/ruby/test_regexp.rb @@ -472,6 +472,10 @@ def test_taint /foo/.match("foo") end.value assert(m.tainted?) + assert_nothing_raised('[ruby-core:26137]') { + m = proc {$SAFE = 4; /#{}/o}.call + } + assert(m.tainted?) end def check(re, ss, fs = []) @@ -586,7 +590,7 @@ def test_parse_kg failcheck('()\g<-2>') check(/\A(?.)(?.)\k\z/, %w(aba abb), %w(abc .. ....)) check(/\A(?.)(?.)\k\z/i, %w(aba ABa abb ABb), %w(abc .. ....)) - check(/\k\g/, "kg") + check('\k\g', "kg") failcheck('(.\g<1>)') failcheck('(.\g<2>)') failcheck('(?=\g<1>)') @@ -745,6 +749,7 @@ def test_unicode assert_match(/^\u3042{0}\p{Any}$/, "a") assert_match(/^\u3042{0}\p{Any}$/, "\u3041") assert_match(/^\u3042{0}\p{Any}$/, "\0") + assert_match(/^\p{Lo}{4}$/u, "\u3401\u4E01\u{20001}\u{2A701}") assert_no_match(/^\u3042{0}\p{Any}$/, "\0\0") assert_no_match(/^\u3042{0}\p{Any}$/, "") assert_raise(SyntaxError) { eval('/^\u3042{0}\p{' + "\u3042" + '}$/') } diff --git a/test/ruby/test_require.rb b/test/ruby/test_require.rb index b2cdae3fda4032..510da8e272478f 100644 --- a/test/ruby/test_require.rb +++ b/test/ruby/test_require.rb @@ -247,6 +247,8 @@ def test_tainted_loadpath def test_relative require 'tmpdir' + load_path = $:.dup + $:.delete(".") Dir.mktmpdir do |tmp| Dir.chdir(tmp) do Dir.mkdir('x') @@ -258,8 +260,12 @@ def test_relative assert_raise(LoadError) {require('x/t.rb')} File.unlink(*Dir.glob('x/*')) Dir.rmdir("#{tmp}/x") + $:.replace(load_path) + load_path = nil assert(!require('tmpdir')) end end + ensure + $:.replace(load_path) if load_path end end diff --git a/test/ruby/test_rubyoptions.rb b/test/ruby/test_rubyoptions.rb index 14352052c9437e..d4143cffb818a0 100644 --- a/test/ruby/test_rubyoptions.rb +++ b/test/ruby/test_rubyoptions.rb @@ -281,14 +281,43 @@ def test_sflag /invalid name for global variable - -# \(NameError\)/) end + def test_assignment_in_conditional + t = Tempfile.new(["test_ruby_test_rubyoption", ".rb"]) + t.puts "if a = 1" + t.puts "end" + t.puts "0.times do" + t.puts " if b = 2" + t.puts " end" + t.puts "end" + t.close + err = ["#{t.path}:1: warning: found = in conditional, should be ==", + "#{t.path}:4: warning: found = in conditional, should be =="] + err = /\A(#{Regexp.quote(t.path)}):1(: warning: found = in conditional, should be ==)\n\1:4\2\Z/ + bug2136 = '[ruby-dev:39363]' + assert_in_out_err(["-w", t.path], "", [], err, bug2136) + assert_in_out_err(["-wr", t.path, "-e", ""], "", [], err, bug2136) + ensure + t.close(true) if t + end + def test_indentation_check t = Tempfile.new(["test_ruby_test_rubyoption", ".rb"]) t.puts "begin" t.puts " end" t.close - assert_in_out_err(["-w", t.path], "", [], /:2: warning: mismatched indentations at 'end' with 'begin' at 1/) - assert_in_out_err(["-wr", t.path, "-e", ""], "", [], /:2: warning: mismatched indentations at 'end' with 'begin' at 1/) + err = ["#{t.path}:2: warning: mismatched indentations at 'end' with 'begin' at 1"] + assert_in_out_err(["-w", t.path], "", [], err) + assert_in_out_err(["-wr", t.path, "-e", ""], "", [], err) ensure t.close(true) if t end + + def test_notfound + notexist = "./notexist.rb" + rubybin = Regexp.quote(EnvUtil.rubybin) + pat = /\A#{rubybin}:.* -- #{Regexp.quote(notexist)} \(LoadError\)\Z/ + assert_equal(false, File.exist?(notexist)) + assert_in_out_err(["-r", notexist, "-ep"], "", [], pat) + assert_in_out_err([notexist], "", [], pat) + end end diff --git a/test/ruby/test_signal.rb b/test/ruby/test_signal.rb index 9414b6539e30a6..1ecf5401ab29df 100644 --- a/test/ruby/test_signal.rb +++ b/test/ruby/test_signal.rb @@ -17,7 +17,10 @@ def test_signal x = 0 oldtrap = Signal.trap(:INT) {|sig| x = 2 } Process.kill :INT, Process.pid - sleep 0.1 + 10.times do + break if 2 == x + sleep 0.1 + end assert_equal 2, x Signal.trap(:INT) { raise "Interrupt" } diff --git a/test/ruby/test_string.rb b/test/ruby/test_string.rb index 36968cae3f1a31..27360e76c1604a 100644 --- a/test/ruby/test_string.rb +++ b/test/ruby/test_string.rb @@ -1139,8 +1139,11 @@ def test_squeeze! def test_strip assert_equal(S("x"), S(" x ").strip) assert_equal(S("x"), S(" \n\r\t x \t\r\n\n ").strip) - assert_equal(S(""), S("\xa0".force_encoding("iso-8859-1")).strip) - assert_equal(S("a"), S("a\xa0".force_encoding("iso-8859-1")).strip) + + assert_equal("0b0 ".force_encoding("UTF-16BE"), + "\x00 0b0 ".force_encoding("UTF-16BE").strip) + assert_equal("0\x000b0 ".force_encoding("UTF-16BE"), + "0\x000b0 ".force_encoding("UTF-16BE").strip) end def test_strip! @@ -1405,6 +1408,18 @@ def test_to_str a = S("me") assert_equal("me", a.to_s) assert_equal(a.__id__, a.to_s.__id__) if @cls == String + + o = Object.new + def o.to_str + "at" + end + assert_equal("meat", a.concat(o)) + + o = Object.new + def o.to_str + foo_bar() + end + assert_match(/foo_bar/, assert_raise(NoMethodError) {a.concat(o)}.message) end def test_tr @@ -1574,6 +1589,30 @@ def test_upto assert_equal(676, count) end + def test_upto_numeric + a = S("00") + start = S("00") + count = 0 + assert_equal(S("00"), a.upto(S("23")) {|s| + assert_equal(start, s, "[ruby-dev:39361]") + assert_equal(Encoding::US_ASCII, s.encoding) + start.succ! + count += 1 + }) + assert_equal(24, count, "[ruby-dev:39361]") + end + + def test_upto_nonalnum + first = S("\u3041") + last = S("\u3093") + count = 0 + assert_equal(first, first.upto(last) {|s| + count += 1 + s.replace(last) + }) + assert_equal(83, count, "[ruby-dev:39626]") + end + def test_mod_check assert_raise(RuntimeError) { s = "" diff --git a/test/ruby/test_struct.rb b/test/ruby/test_struct.rb index b6a77a9fb7e8c5..49dcdb45b25331 100644 --- a/test/ruby/test_struct.rb +++ b/test/ruby/test_struct.rb @@ -1,4 +1,5 @@ require 'test/unit' +require 'timeout' class TestStruct < Test::Unit::TestCase def test_struct @@ -219,4 +220,33 @@ def test_nonascii a = struct_test.new(42) assert_equal("#", a.inspect, '[ruby-core:24849]') end + + def test_comparison_when_recursive + klass1 = Struct.new(:a, :b, :c) + + x = klass1.new(1, 2, nil); x.c = x + y = klass1.new(1, 2, nil); y.c = y + Timeout.timeout(1) { + assert x == y + assert x.eql? y + } + + z = klass1.new(:something, :other, nil); z.c = z + Timeout.timeout(1) { + assert x != z + assert !x.eql?(z) + } + + x.c = y; y.c = x + Timeout.timeout(1) { + assert x == y + assert x.eql?(y) + } + + x.c = z; z.c = x + Timeout.timeout(1) { + assert x != z + assert !x.eql?(z) + } + end end diff --git a/test/ruby/test_thread.rb b/test/ruby/test_thread.rb index d0c35d8273ebb3..bae1f0038aedd0 100644 --- a/test/ruby/test_thread.rb +++ b/test/ruby/test_thread.rb @@ -30,7 +30,7 @@ def teardown def test_mutex_synchronize m = Mutex.new r = 0 - max = 100 + max = 10 (1..max).map{ Thread.new{ i=0 @@ -108,7 +108,7 @@ def test_local_barrier $:.unshift File.join(File.dirname(dir), 'ruby') require 'envutil' $:.shift - 10.times { + 3.times { result = `#{EnvUtil.rubybin} #{lbtest}` assert(!$?.coredump?, '[ruby-dev:30653]') assert_equal("exit.", result[/.*\Z/], '[ruby-dev:30653]') @@ -124,6 +124,10 @@ def test_priority assert_equal(-1, t1.priority) assert_equal(-3, t2.priority) sleep 0.5 + 5.times do + break if c1 > c2 + sleep 0.1 + end t1.kill t2.kill assert(c1 > c2, "[ruby-dev:33124]") @@ -311,11 +315,9 @@ def test_status_and_stop_p assert(c.stop?) d.kill - assert_equal("aborting", d.status) - assert(!d.stop?) + assert_equal(["aborting", false], [d.status, d.stop?]) - assert_equal("run", e.status) - assert(!e.stop?) + assert_equal(["run", false], [e.status, e.stop?]) ensure a.kill if a @@ -450,13 +452,17 @@ def test_mutex_trylock m.unlock end - def test_recursive_error - o = Object.new - def o.inspect - Thread.current[:__recursive_key__][:inspect] = nil + def test_recursive_outer + arr = [] + obj = Struct.new(:foo, :visited).new(arr, false) + arr << obj + def obj.hash + self[:visited] = true super + raise "recursive_outer should short circuit intermediate calls" end - assert_raise(TypeError) { [o].inspect } + assert_nothing_raised {arr.hash} + assert(obj[:visited]) end end diff --git a/test/ruby/test_transcode.rb b/test/ruby/test_transcode.rb index cd956e134bd9c1..2cc23bae8fc673 100644 --- a/test/ruby/test_transcode.rb +++ b/test/ruby/test_transcode.rb @@ -1867,7 +1867,12 @@ def test_Big5_Hkscs #assert_raise(Encoding::UndefinedConversionError) { "\xF9\xD6".encode("utf-8", 'Big5-HKSCS') } check_both_ways("\u795E\u6797\u7FA9\u535A", "\xAF\xAB\xAA\x4C\xB8\x71\xB3\xD5", 'Big5-HKSCS') # ç¥žæž—ç¾©åš end - + + def + test_Big5_UAO + check_both_ways("\u4e17", "\x81\x40", 'Big5-UAO') # 丗 + end + def test_nothing_changed a = "James".force_encoding("US-ASCII") b = a.encode("Shift_JIS") diff --git a/test/ruby/test_undef.rb b/test/ruby/test_undef.rb new file mode 100644 index 00000000000000..e1c98076c0fe90 --- /dev/null +++ b/test/ruby/test_undef.rb @@ -0,0 +1,37 @@ +require 'test/unit' + +class TestUndef < Test::Unit::TestCase + class Undef0 + def foo + "foo" + end + undef foo + end + + class Undef1 + def bar + "bar" + end + end + + class Undef2 < Undef1 + undef bar + end + + def test_undef + x = Undef0.new + assert_raise(NoMethodError) { x.foo } + y = Undef1.new + assert_equal "bar", y.bar + z = Undef2.new + assert_raise(NoMethodError) { z.foo } + end + + def test_special_const_undef + assert_raise(TypeError) do + 1.instance_eval do + undef to_s + end + end + end +end diff --git a/test/rubygems/gem_installer_test_case.rb b/test/rubygems/gem_installer_test_case.rb index 0f1a1e2e6a53fa..eeb328e7c4275b 100644 --- a/test/rubygems/gem_installer_test_case.rb +++ b/test/rubygems/gem_installer_test_case.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/installer' class Gem::Installer diff --git a/test/rubygems/gem_package_tar_test_case.rb b/test/rubygems/gem_package_tar_test_case.rb index 8a21df6de2a4ab..462fa088480cd6 100644 --- a/test/rubygems/gem_package_tar_test_case.rb +++ b/test/rubygems/gem_package_tar_test_case.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/package' class TarTestCase < RubyGemTestCase diff --git a/test/rubygems/gemutilities.rb b/test/rubygems/gemutilities.rb index 365b9d21f9f539..43334f51e15c2c 100644 --- a/test/rubygems/gemutilities.rb +++ b/test/rubygems/gemutilities.rb @@ -34,7 +34,7 @@ require 'rdoc/rdoc' -require File.join(File.expand_path(File.dirname(__FILE__)), 'mockgemui') +require_relative 'mockgemui' module Gem def self.searcher=(searcher) @@ -77,6 +77,11 @@ def setup Gem.ensure_gem_subdirectories @gemhome + if ruby = ENV['RUBY'] + Gem.class_eval {ruby, @ruby = @ruby, ruby} + @orig_ruby = ruby + end + @orig_ENV_HOME = ENV['HOME'] ENV['HOME'] = @userhome Gem.instance_variable_set :@user_home, nil @@ -153,6 +158,10 @@ def teardown Gem.clear_paths + if ruby = @orig_ruby + Gem.class_eval {@ruby = @ruby} + end + if @orig_ENV_HOME then ENV['HOME'] = @orig_ENV_HOME else diff --git a/test/rubygems/test_config.rb b/test/rubygems/test_config.rb index d57bbe73534b16..306562f585a98b 100644 --- a/test/rubygems/test_config.rb +++ b/test/rubygems/test_config.rb @@ -4,7 +4,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rbconfig' require 'rubygems' diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb index 3c5eed3a045716..e18004c4eac709 100644 --- a/test/rubygems/test_gem.rb +++ b/test/rubygems/test_gem.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems' require 'rubygems/gem_openssl' require 'rubygems/installer' @@ -266,6 +266,8 @@ def test_ensure_ssl_available def test_self_find_files discover_path = File.join 'lib', 'foo', 'discover.rb' + cwd = File.expand_path('..', __FILE__) + $LOAD_PATH.unshift(cwd.dup) foo1 = quick_gem 'foo', '1' do |s| s.files << discover_path @@ -289,12 +291,14 @@ def test_self_find_files Gem.searcher = nil expected = [ - File.expand_path('foo/discover.rb', File.dirname(__FILE__)), + File.expand_path('../foo/discover.rb', __FILE__), File.join(foo2.full_gem_path, discover_path), File.join(foo1.full_gem_path, discover_path), ] assert_equal expected, Gem.find_files('foo/discover') + ensure + assert_equal(cwd, $LOAD_PATH.shift) end def test_self_latest_load_paths diff --git a/test/rubygems/test_gem_builder.rb b/test/rubygems/test_gem_builder.rb index acddeddad14a96..23895c45fa2035 100644 --- a/test/rubygems/test_gem_builder.rb +++ b/test/rubygems/test_gem_builder.rb @@ -4,7 +4,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/builder' class TestGemBuilder < RubyGemTestCase diff --git a/test/rubygems/test_gem_command.rb b/test/rubygems/test_gem_command.rb index 7a48c842b82ec8..2fb1bb1ca5bd7c 100644 --- a/test/rubygems/test_gem_command.rb +++ b/test/rubygems/test_gem_command.rb @@ -5,7 +5,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/command' class Gem::Command diff --git a/test/rubygems/test_gem_command_manager.rb b/test/rubygems/test_gem_command_manager.rb index 40ca8573538a7c..6cba52d3e247bd 100644 --- a/test/rubygems/test_gem_command_manager.rb +++ b/test/rubygems/test_gem_command_manager.rb @@ -4,7 +4,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/command_manager' class TestGemCommandManager < RubyGemTestCase diff --git a/test/rubygems/test_gem_commands_build_command.rb b/test/rubygems/test_gem_commands_build_command.rb index b9e02ce76ec99f..32e66465d819d4 100644 --- a/test/rubygems/test_gem_commands_build_command.rb +++ b/test/rubygems/test_gem_commands_build_command.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/commands/build_command' require 'rubygems/format' diff --git a/test/rubygems/test_gem_commands_cert_command.rb b/test/rubygems/test_gem_commands_cert_command.rb index 43124f2c40d82d..23c48439fc9d90 100644 --- a/test/rubygems/test_gem_commands_cert_command.rb +++ b/test/rubygems/test_gem_commands_cert_command.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/commands/cert_command' diff --git a/test/rubygems/test_gem_commands_check_command.rb b/test/rubygems/test_gem_commands_check_command.rb index 3199ac71ac81ef..43ac98234169a6 100644 --- a/test/rubygems/test_gem_commands_check_command.rb +++ b/test/rubygems/test_gem_commands_check_command.rb @@ -4,7 +4,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/commands/check_command' class TestGemCommandsCheckCommand < RubyGemTestCase diff --git a/test/rubygems/test_gem_commands_contents_command.rb b/test/rubygems/test_gem_commands_contents_command.rb index a40be4e3fbde2b..e0284c8d5cfddd 100644 --- a/test/rubygems/test_gem_commands_contents_command.rb +++ b/test/rubygems/test_gem_commands_contents_command.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/commands/contents_command' class TestGemCommandsContentsCommand < RubyGemTestCase diff --git a/test/rubygems/test_gem_commands_dependency_command.rb b/test/rubygems/test_gem_commands_dependency_command.rb index ebf713c36e3082..2452189d72e613 100644 --- a/test/rubygems/test_gem_commands_dependency_command.rb +++ b/test/rubygems/test_gem_commands_dependency_command.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/commands/dependency_command' class TestGemCommandsDependencyCommand < RubyGemTestCase diff --git a/test/rubygems/test_gem_commands_environment_command.rb b/test/rubygems/test_gem_commands_environment_command.rb index 0640543f52a107..21bacb11af2d2e 100644 --- a/test/rubygems/test_gem_commands_environment_command.rb +++ b/test/rubygems/test_gem_commands_environment_command.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/commands/environment_command' class TestGemCommandsEnvironmentCommand < RubyGemTestCase diff --git a/test/rubygems/test_gem_commands_fetch_command.rb b/test/rubygems/test_gem_commands_fetch_command.rb index 08cca0970f9b86..fe60680a67686e 100644 --- a/test/rubygems/test_gem_commands_fetch_command.rb +++ b/test/rubygems/test_gem_commands_fetch_command.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/package' require 'rubygems/security' require 'rubygems/commands/fetch_command' diff --git a/test/rubygems/test_gem_commands_generate_index_command.rb b/test/rubygems/test_gem_commands_generate_index_command.rb index d038bd6d5ebc56..0952530e7fd09e 100644 --- a/test/rubygems/test_gem_commands_generate_index_command.rb +++ b/test/rubygems/test_gem_commands_generate_index_command.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/indexer' require 'rubygems/commands/generate_index_command' diff --git a/test/rubygems/test_gem_commands_install_command.rb b/test/rubygems/test_gem_commands_install_command.rb index d9ee8098a50dee..d7bc20d6ae6596 100644 --- a/test/rubygems/test_gem_commands_install_command.rb +++ b/test/rubygems/test_gem_commands_install_command.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/commands/install_command' class TestGemCommandsInstallCommand < RubyGemTestCase diff --git a/test/rubygems/test_gem_commands_list_command.rb b/test/rubygems/test_gem_commands_list_command.rb index db3fe90baf33f0..e9de62f3d03cee 100644 --- a/test/rubygems/test_gem_commands_list_command.rb +++ b/test/rubygems/test_gem_commands_list_command.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/commands/list_command' class TestGemCommandsListCommand < RubyGemTestCase diff --git a/test/rubygems/test_gem_commands_lock_command.rb b/test/rubygems/test_gem_commands_lock_command.rb index e5d8dbe7b045b6..11d1c4fe8a057d 100644 --- a/test/rubygems/test_gem_commands_lock_command.rb +++ b/test/rubygems/test_gem_commands_lock_command.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/commands/lock_command' class TestGemCommandsLockCommand < RubyGemTestCase diff --git a/test/rubygems/test_gem_commands_mirror_command.rb b/test/rubygems/test_gem_commands_mirror_command.rb index f9a3b2254557b0..167d36f8c60b03 100644 --- a/test/rubygems/test_gem_commands_mirror_command.rb +++ b/test/rubygems/test_gem_commands_mirror_command.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/indexer' require 'rubygems/commands/mirror_command' diff --git a/test/rubygems/test_gem_commands_outdated_command.rb b/test/rubygems/test_gem_commands_outdated_command.rb index 7ea3d8d2be5240..8b0d8fe6f0a424 100644 --- a/test/rubygems/test_gem_commands_outdated_command.rb +++ b/test/rubygems/test_gem_commands_outdated_command.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/commands/outdated_command' class TestGemCommandsOutdatedCommand < RubyGemTestCase diff --git a/test/rubygems/test_gem_commands_pristine_command.rb b/test/rubygems/test_gem_commands_pristine_command.rb index 54b3d775943fea..e5cdbbc52ff98f 100644 --- a/test/rubygems/test_gem_commands_pristine_command.rb +++ b/test/rubygems/test_gem_commands_pristine_command.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/commands/pristine_command' class TestGemCommandsPristineCommand < RubyGemTestCase diff --git a/test/rubygems/test_gem_commands_query_command.rb b/test/rubygems/test_gem_commands_query_command.rb index 228d0b3946e4d7..c47e5bf6133d17 100644 --- a/test/rubygems/test_gem_commands_query_command.rb +++ b/test/rubygems/test_gem_commands_query_command.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/commands/query_command' class TestGemCommandsQueryCommand < RubyGemTestCase diff --git a/test/rubygems/test_gem_commands_server_command.rb b/test/rubygems/test_gem_commands_server_command.rb index 64ecbeb1f05006..5b4faae06e32b0 100644 --- a/test/rubygems/test_gem_commands_server_command.rb +++ b/test/rubygems/test_gem_commands_server_command.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/commands/server_command' class TestGemCommandsServerCommand < RubyGemTestCase diff --git a/test/rubygems/test_gem_commands_sources_command.rb b/test/rubygems/test_gem_commands_sources_command.rb index d58b35e740635c..77df59b16d7f9d 100644 --- a/test/rubygems/test_gem_commands_sources_command.rb +++ b/test/rubygems/test_gem_commands_sources_command.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/commands/sources_command' class TestGemCommandsSourcesCommand < RubyGemTestCase diff --git a/test/rubygems/test_gem_commands_specification_command.rb b/test/rubygems/test_gem_commands_specification_command.rb index 3f936a64ea0776..49b82f986a259e 100644 --- a/test/rubygems/test_gem_commands_specification_command.rb +++ b/test/rubygems/test_gem_commands_specification_command.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/commands/specification_command' class TestGemCommandsSpecificationCommand < RubyGemTestCase diff --git a/test/rubygems/test_gem_commands_stale_command.rb b/test/rubygems/test_gem_commands_stale_command.rb index d38e54179aa2ee..0bc7fc2734881d 100644 --- a/test/rubygems/test_gem_commands_stale_command.rb +++ b/test/rubygems/test_gem_commands_stale_command.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/commands/stale_command' class TestGemCommandsStaleCommand < RubyGemTestCase diff --git a/test/rubygems/test_gem_commands_uninstall_command.rb b/test/rubygems/test_gem_commands_uninstall_command.rb index b1b7a568683d3d..a6ac23812b7335 100644 --- a/test/rubygems/test_gem_commands_uninstall_command.rb +++ b/test/rubygems/test_gem_commands_uninstall_command.rb @@ -1,6 +1,5 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require File.join(File.expand_path(File.dirname(__FILE__)), - 'gem_installer_test_case') +require_relative 'gemutilities' +require_relative 'gem_installer_test_case' require 'rubygems/commands/uninstall_command' class TestGemCommandsUninstallCommand < GemInstallerTestCase diff --git a/test/rubygems/test_gem_commands_unpack_command.rb b/test/rubygems/test_gem_commands_unpack_command.rb index 6e53acbc54e35c..821ff576bae028 100644 --- a/test/rubygems/test_gem_commands_unpack_command.rb +++ b/test/rubygems/test_gem_commands_unpack_command.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/commands/unpack_command' class TestGemCommandsUnpackCommand < RubyGemTestCase diff --git a/test/rubygems/test_gem_commands_update_command.rb b/test/rubygems/test_gem_commands_update_command.rb index 4d7592a4c07791..89498977366b02 100644 --- a/test/rubygems/test_gem_commands_update_command.rb +++ b/test/rubygems/test_gem_commands_update_command.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/commands/update_command' class TestGemCommandsUpdateCommand < RubyGemTestCase diff --git a/test/rubygems/test_gem_config_file.rb b/test/rubygems/test_gem_config_file.rb index fdae7faa323d79..1dd0d448ff1c4f 100644 --- a/test/rubygems/test_gem_config_file.rb +++ b/test/rubygems/test_gem_config_file.rb @@ -4,7 +4,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/config_file' class TestGemConfigFile < RubyGemTestCase diff --git a/test/rubygems/test_gem_dependency.rb b/test/rubygems/test_gem_dependency.rb index 7b8c7bb45d5f5e..acaa3a8c4eb1b7 100644 --- a/test/rubygems/test_gem_dependency.rb +++ b/test/rubygems/test_gem_dependency.rb @@ -4,7 +4,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/version' class TestGemDependency < RubyGemTestCase diff --git a/test/rubygems/test_gem_dependency_installer.rb b/test/rubygems/test_gem_dependency_installer.rb index 2fea37adcc39cb..76d541bb8145e3 100644 --- a/test/rubygems/test_gem_dependency_installer.rb +++ b/test/rubygems/test_gem_dependency_installer.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/dependency_installer' class TestGemDependencyInstaller < RubyGemTestCase diff --git a/test/rubygems/test_gem_dependency_list.rb b/test/rubygems/test_gem_dependency_list.rb index ddceb35256a819..d8066c92384145 100644 --- a/test/rubygems/test_gem_dependency_list.rb +++ b/test/rubygems/test_gem_dependency_list.rb @@ -4,7 +4,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/dependency_list' class TestGemDependencyList < RubyGemTestCase diff --git a/test/rubygems/test_gem_digest.rb b/test/rubygems/test_gem_digest.rb index 13613c96a8e731..6bce4e4537fb12 100755 --- a/test/rubygems/test_gem_digest.rb +++ b/test/rubygems/test_gem_digest.rb @@ -4,7 +4,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require "rubygems/digest/md5" require "rubygems/digest/sha1" require "rubygems/digest/sha2" diff --git a/test/rubygems/test_gem_doc_manager.rb b/test/rubygems/test_gem_doc_manager.rb index bcedb87b56707d..051c9263079e40 100644 --- a/test/rubygems/test_gem_doc_manager.rb +++ b/test/rubygems/test_gem_doc_manager.rb @@ -4,7 +4,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/doc_manager' class TestGemDocManager < RubyGemTestCase diff --git a/test/rubygems/test_gem_ext_configure_builder.rb b/test/rubygems/test_gem_ext_configure_builder.rb index 8f8525f5fd53f5..451aa4cb6195ba 100644 --- a/test/rubygems/test_gem_ext_configure_builder.rb +++ b/test/rubygems/test_gem_ext_configure_builder.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/ext' class TestGemExtConfigureBuilder < RubyGemTestCase diff --git a/test/rubygems/test_gem_ext_ext_conf_builder.rb b/test/rubygems/test_gem_ext_ext_conf_builder.rb index e815a6555f098c..84af0730a00d3b 100644 --- a/test/rubygems/test_gem_ext_ext_conf_builder.rb +++ b/test/rubygems/test_gem_ext_ext_conf_builder.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/ext' class TestGemExtExtConfBuilder < RubyGemTestCase diff --git a/test/rubygems/test_gem_ext_rake_builder.rb b/test/rubygems/test_gem_ext_rake_builder.rb index 18d74c382a8892..243852b86fb8c3 100644 --- a/test/rubygems/test_gem_ext_rake_builder.rb +++ b/test/rubygems/test_gem_ext_rake_builder.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/ext' class TestGemExtRakeBuilder < RubyGemTestCase diff --git a/test/rubygems/test_gem_format.rb b/test/rubygems/test_gem_format.rb index d09ab6ce19ddd2..d9ddf0be92dc88 100644 --- a/test/rubygems/test_gem_format.rb +++ b/test/rubygems/test_gem_format.rb @@ -4,8 +4,8 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require File.join(File.expand_path(File.dirname(__FILE__)), 'simple_gem') +require_relative 'gemutilities' +require_relative 'simple_gem' require 'rubygems/format' class TestGemFormat < RubyGemTestCase diff --git a/test/rubygems/test_gem_gem_path_searcher.rb b/test/rubygems/test_gem_gem_path_searcher.rb index 5737c0b2263b63..8a08ed8d06a213 100644 --- a/test/rubygems/test_gem_gem_path_searcher.rb +++ b/test/rubygems/test_gem_gem_path_searcher.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/gem_path_searcher' class Gem::GemPathSearcher diff --git a/test/rubygems/test_gem_gem_runner.rb b/test/rubygems/test_gem_gem_runner.rb index 24a45e428121b9..5c3b03d4735928 100644 --- a/test/rubygems/test_gem_gem_runner.rb +++ b/test/rubygems/test_gem_gem_runner.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/gem_runner' class TestGemGemRunner < RubyGemTestCase diff --git a/test/rubygems/test_gem_indexer.rb b/test/rubygems/test_gem_indexer.rb index a48acbbfe636d2..7d721d028d5bdc 100644 --- a/test/rubygems/test_gem_indexer.rb +++ b/test/rubygems/test_gem_indexer.rb @@ -4,7 +4,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/indexer' diff --git a/test/rubygems/test_gem_install_update_options.rb b/test/rubygems/test_gem_install_update_options.rb index fb77678d0de952..9be8cde7cf8525 100644 --- a/test/rubygems/test_gem_install_update_options.rb +++ b/test/rubygems/test_gem_install_update_options.rb @@ -1,5 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), - 'gem_installer_test_case') +require_relative 'gem_installer_test_case' require 'rubygems/install_update_options' require 'rubygems/command' diff --git a/test/rubygems/test_gem_installer.rb b/test/rubygems/test_gem_installer.rb index 00f22e403d4180..76a7fc1d57b730 100644 --- a/test/rubygems/test_gem_installer.rb +++ b/test/rubygems/test_gem_installer.rb @@ -4,8 +4,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), - 'gem_installer_test_case') +require_relative 'gem_installer_test_case' class TestGemInstaller < GemInstallerTestCase @@ -70,7 +69,7 @@ def test_build_extensions_extconf_bad #{Gem.ruby}: No such file or directory -- extconf.rb (LoadError) EOF - assert_match %r%#{Regexp.escape Gem.ruby} extconf.rb%, + assert_match %r%#{Regexp.escape Gem.ruby} extconf\.rb%, File.read(gem_make_out) assert_match %r%#{Regexp.escape Gem.ruby}: No such file%, File.read(gem_make_out) diff --git a/test/rubygems/test_gem_local_remote_options.rb b/test/rubygems/test_gem_local_remote_options.rb index 3dd390ecfdb4f9..05083f5d070074 100644 --- a/test/rubygems/test_gem_local_remote_options.rb +++ b/test/rubygems/test_gem_local_remote_options.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/local_remote_options' require 'rubygems/command' diff --git a/test/rubygems/test_gem_package_tar_header.rb b/test/rubygems/test_gem_package_tar_header.rb index 5ad1a793b54460..16804452b71d70 100644 --- a/test/rubygems/test_gem_package_tar_header.rb +++ b/test/rubygems/test_gem_package_tar_header.rb @@ -4,8 +4,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), - 'gem_package_tar_test_case') +require_relative 'gem_package_tar_test_case' require 'rubygems/package' class TestGemPackageTarHeader < TarTestCase diff --git a/test/rubygems/test_gem_package_tar_input.rb b/test/rubygems/test_gem_package_tar_input.rb index 8f8a193876dc59..2459802b121834 100644 --- a/test/rubygems/test_gem_package_tar_input.rb +++ b/test/rubygems/test_gem_package_tar_input.rb @@ -4,8 +4,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), - 'gem_package_tar_test_case') +require_relative 'gem_package_tar_test_case' require 'rubygems/package/tar_input' class TestGemPackageTarInput < TarTestCase diff --git a/test/rubygems/test_gem_package_tar_output.rb b/test/rubygems/test_gem_package_tar_output.rb index 31f02c67a6e721..4a07208368861d 100644 --- a/test/rubygems/test_gem_package_tar_output.rb +++ b/test/rubygems/test_gem_package_tar_output.rb @@ -4,8 +4,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), - 'gem_package_tar_test_case') +require_relative 'gem_package_tar_test_case' require 'rubygems/package/tar_output' class TestGemPackageTarOutput < TarTestCase diff --git a/test/rubygems/test_gem_package_tar_reader.rb b/test/rubygems/test_gem_package_tar_reader.rb index 69620888782f25..e5b7850e5694ff 100644 --- a/test/rubygems/test_gem_package_tar_reader.rb +++ b/test/rubygems/test_gem_package_tar_reader.rb @@ -4,8 +4,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), - 'gem_package_tar_test_case') +require_relative 'gem_package_tar_test_case' require 'rubygems/package' class TestGemPackageTarReader < TarTestCase diff --git a/test/rubygems/test_gem_package_tar_reader_entry.rb b/test/rubygems/test_gem_package_tar_reader_entry.rb index 66f885b2505548..bb154a7b6bbf09 100644 --- a/test/rubygems/test_gem_package_tar_reader_entry.rb +++ b/test/rubygems/test_gem_package_tar_reader_entry.rb @@ -4,8 +4,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), - 'gem_package_tar_test_case') +require_relative 'gem_package_tar_test_case' require 'rubygems/package' class TestGemPackageTarReaderEntry < TarTestCase diff --git a/test/rubygems/test_gem_package_tar_writer.rb b/test/rubygems/test_gem_package_tar_writer.rb index 4c2b475bf11edb..0adc595ad014f8 100644 --- a/test/rubygems/test_gem_package_tar_writer.rb +++ b/test/rubygems/test_gem_package_tar_writer.rb @@ -4,8 +4,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), - 'gem_package_tar_test_case') +require_relative 'gem_package_tar_test_case' require 'rubygems/package/tar_writer' class TestTarWriter < TarTestCase diff --git a/test/rubygems/test_gem_package_task.rb b/test/rubygems/test_gem_package_task.rb index aed4f05b8311d4..a8334ce4e8c460 100644 --- a/test/rubygems/test_gem_package_task.rb +++ b/test/rubygems/test_gem_package_task.rb @@ -19,7 +19,7 @@ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems' require 'rubygems/package_task' diff --git a/test/rubygems/test_gem_platform.rb b/test/rubygems/test_gem_platform.rb index aa23533a39dd59..60ceb3141b67bd 100644 --- a/test/rubygems/test_gem_platform.rb +++ b/test/rubygems/test_gem_platform.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/platform' require 'rbconfig' diff --git a/test/rubygems/test_gem_remote_fetcher.rb b/test/rubygems/test_gem_remote_fetcher.rb index 465443c901c0c3..e29fe604817220 100644 --- a/test/rubygems/test_gem_remote_fetcher.rb +++ b/test/rubygems/test_gem_remote_fetcher.rb @@ -4,7 +4,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'webrick' require 'zlib' require 'rubygems/remote_fetcher' diff --git a/test/rubygems/test_gem_requirement.rb b/test/rubygems/test_gem_requirement.rb index e1399bdaff91ef..e64c90cb768384 100644 --- a/test/rubygems/test_gem_requirement.rb +++ b/test/rubygems/test_gem_requirement.rb @@ -4,7 +4,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/version' class TestGemRequirement < RubyGemTestCase diff --git a/test/rubygems/test_gem_server.rb b/test/rubygems/test_gem_server.rb index d929c04c074a9d..5a380d008ec4f2 100644 --- a/test/rubygems/test_gem_server.rb +++ b/test/rubygems/test_gem_server.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/server' require 'stringio' diff --git a/test/rubygems/test_gem_source_index.rb b/test/rubygems/test_gem_source_index.rb index 0983089cd95687..9cfde0b0a938a9 100644 --- a/test/rubygems/test_gem_source_index.rb +++ b/test/rubygems/test_gem_source_index.rb @@ -4,7 +4,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/source_index' require 'rubygems/config_file' diff --git a/test/rubygems/test_gem_source_info_cache.rb b/test/rubygems/test_gem_source_info_cache.rb index 237c1efea81319..f712f138c1290b 100644 --- a/test/rubygems/test_gem_source_info_cache.rb +++ b/test/rubygems/test_gem_source_info_cache.rb @@ -4,7 +4,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/source_info_cache' class Gem::SourceIndex diff --git a/test/rubygems/test_gem_source_info_cache_entry.rb b/test/rubygems/test_gem_source_info_cache_entry.rb index e1d61b8f6f55dc..e05a05f69c6e91 100644 --- a/test/rubygems/test_gem_source_info_cache_entry.rb +++ b/test/rubygems/test_gem_source_info_cache_entry.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/source_info_cache_entry' class TestGemSourceInfoCacheEntry < RubyGemTestCase diff --git a/test/rubygems/test_gem_spec_fetcher.rb b/test/rubygems/test_gem_spec_fetcher.rb index 972289f2333b60..42bf6926c2bac9 100644 --- a/test/rubygems/test_gem_spec_fetcher.rb +++ b/test/rubygems/test_gem_spec_fetcher.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/spec_fetcher' class TestGemSpecFetcher < RubyGemTestCase diff --git a/test/rubygems/test_gem_specification.rb b/test/rubygems/test_gem_specification.rb index e18b0f73ef003d..332e81279134e2 100644 --- a/test/rubygems/test_gem_specification.rb +++ b/test/rubygems/test_gem_specification.rb @@ -5,7 +5,7 @@ #++ require 'stringio' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/specification' class TestGemSpecification < RubyGemTestCase diff --git a/test/rubygems/test_gem_stream_ui.rb b/test/rubygems/test_gem_stream_ui.rb index ffab8844cfbc91..886f53a60d77c8 100644 --- a/test/rubygems/test_gem_stream_ui.rb +++ b/test/rubygems/test_gem_stream_ui.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/user_interaction' class TestGemStreamUI < RubyGemTestCase diff --git a/test/rubygems/test_gem_uninstaller.rb b/test/rubygems/test_gem_uninstaller.rb index 2b026e9c4cb21a..d12ef032b941c4 100644 --- a/test/rubygems/test_gem_uninstaller.rb +++ b/test/rubygems/test_gem_uninstaller.rb @@ -1,5 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), - 'gem_installer_test_case') +require_relative 'gem_installer_test_case' require 'rubygems/uninstaller' class TestGemUninstaller < GemInstallerTestCase diff --git a/test/rubygems/test_gem_validator.rb b/test/rubygems/test_gem_validator.rb index 77fdf2181a981d..529c93ae1a187d 100644 --- a/test/rubygems/test_gem_validator.rb +++ b/test/rubygems/test_gem_validator.rb @@ -4,8 +4,8 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require File.join(File.expand_path(File.dirname(__FILE__)), 'simple_gem') +require_relative 'gemutilities' +require_relative 'simple_gem' require 'rubygems/validator' class TestGemValidator < RubyGemTestCase diff --git a/test/rubygems/test_gem_version.rb b/test/rubygems/test_gem_version.rb index d87245f92bbd2a..dfd3845e4225cf 100644 --- a/test/rubygems/test_gem_version.rb +++ b/test/rubygems/test_gem_version.rb @@ -4,7 +4,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/version' class TestGemVersion < RubyGemTestCase diff --git a/test/rubygems/test_gem_version_option.rb b/test/rubygems/test_gem_version_option.rb index 1a47e9ce15a713..af0b7bf662f702 100644 --- a/test/rubygems/test_gem_version_option.rb +++ b/test/rubygems/test_gem_version_option.rb @@ -1,4 +1,4 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/command' require 'rubygems/version_option' diff --git a/test/rubygems/test_kernel.rb b/test/rubygems/test_kernel.rb index 9dd63b85d758d3..0b2e8026a89c98 100644 --- a/test/rubygems/test_kernel.rb +++ b/test/rubygems/test_kernel.rb @@ -4,7 +4,7 @@ # See LICENSE.txt for permissions. #++ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') +require_relative 'gemutilities' require 'rubygems/package' class TestKernel < RubyGemTestCase diff --git a/test/scanf/test_scanfio.rb b/test/scanf/test_scanfio.rb index c8740aed434ead..969a8ad7731bae 100644 --- a/test/scanf/test_scanfio.rb +++ b/test/scanf/test_scanfio.rb @@ -7,13 +7,14 @@ require "scanf" -class TestScanfIO +class TestScanfIO < Test::Unit::TestCase def test_io fh = File.new(File.join(File.dirname(__FILE__), "data.txt"), "r") assert_equal(0, fh.pos) assert_equal(["this", "is"], fh.scanf("%s%s")) - assert_equal([33, "littel"], fh.scanf("%da fun%s")) - #p fh.pos + assert_equal([33, "little"], fh.scanf("%da fun%s")) + ensure + fh.close end end diff --git a/test/stringio/test_stringio.rb b/test/stringio/test_stringio.rb index 570f180fc7827c..63647683ca9a58 100644 --- a/test/stringio/test_stringio.rb +++ b/test/stringio/test_stringio.rb @@ -1,9 +1,6 @@ require 'test/unit' require 'stringio' -dir = File.expand_path(__FILE__) -2.times {dir = File.dirname(dir)} -$:.replace([File.join(dir, "ruby")] | $:) -require 'ut_eof' +require_relative '../ruby/ut_eof' class TestStringIO < Test::Unit::TestCase include TestEOF @@ -90,6 +87,28 @@ def o.to_s; "baz"; end f.close unless f.closed? end + def test_write_nonblock + s = "" + f = StringIO.new(s, "w") + f.write_nonblock("foo") + f.close + assert_equal("foo", s) + + f = StringIO.new(s, File::WRONLY) + f.write_nonblock("bar") + f.close + assert_equal("bar", s) + + f = StringIO.new(s, "a") + o = Object.new + def o.to_s; "baz"; end + f.write_nonblock(o) + f.close + assert_equal("barbaz", s) + ensure + f.close unless f.closed? + end + def test_mode_error f = StringIO.new("", "r") assert_raise(IOError) { f.write("foo") } @@ -385,9 +404,30 @@ def test_putc end def test_read - f = StringIO.new("1234") + f = StringIO.new("\u3042\u3044") assert_raise(ArgumentError) { f.read(-1) } assert_raise(ArgumentError) { f.read(1, 2, 3) } + assert_equal("\u3042\u3044", f.read) + f.rewind + assert_equal("\u3042\u3044".force_encoding(Encoding::ASCII_8BIT), f.read(f.size)) + end + + def test_readpartial + f = StringIO.new("\u3042\u3044") + assert_raise(ArgumentError) { f.readpartial(-1) } + assert_raise(ArgumentError) { f.readpartial(1, 2, 3) } + assert_equal("\u3042\u3044", f.readpartial) + f.rewind + assert_equal("\u3042\u3044".force_encoding(Encoding::ASCII_8BIT), f.readpartial(f.size)) + end + + def test_read_nonblock + f = StringIO.new("\u3042\u3044") + assert_raise(ArgumentError) { f.read_nonblock(-1) } + assert_raise(ArgumentError) { f.read_nonblock(1, 2, 3) } + assert_equal("\u3042\u3044", f.read_nonblock) + f.rewind + assert_equal("\u3042\u3044".force_encoding(Encoding::ASCII_8BIT), f.read_nonblock(f.size)) end def test_size diff --git a/test/test_delegate.rb b/test/test_delegate.rb index 0b4c117ebdc12d..aecabe147d6450 100644 --- a/test/test_delegate.rb +++ b/test/test_delegate.rb @@ -29,4 +29,26 @@ def test_simpledelegator_class simple=SimpleDelegator.new([]) assert_equal(SimpleDelegator,simple.class) end + + class Object + def m + :o + end + end + + class Foo + def m + :m + end + end + + class Bar < DelegateClass(Foo) + end + + def test_override + assert_equal(:o, Object.new.m) + assert_equal(:m, Foo.new.m) + assert_equal(:m, SimpleDelegator.new(Foo.new).m) + assert_equal(:m, Bar.new(Foo.new).m) + end end diff --git a/test/test_mathn.rb b/test/test_mathn.rb new file mode 100644 index 00000000000000..d0bf03760dbc45 --- /dev/null +++ b/test/test_mathn.rb @@ -0,0 +1,10 @@ +require 'test/unit' +require_relative 'ruby/envutil' + +# mathn redefines too much. It must be isolated to child processes. +class TestMathn < Test::Unit::TestCase + def test_power + assert_in_out_err ['-r', 'mathn', '-e', '1**2'], [], [], [], '[ruby-core:25740]' + assert_in_out_err ['-r', 'mathn', '-e', '(1<<126)**2'], [], [], [], '[ruby-core:25740]' + end +end diff --git a/test/test_open-uri.rb b/test/test_open-uri.rb deleted file mode 100644 index 9d9bfd77f02f00..00000000000000 --- a/test/test_open-uri.rb +++ /dev/null @@ -1,151 +0,0 @@ -require 'test/unit' -require 'open-uri' -require 'webrick' -require 'webrick/httpproxy' - -class TestOpenURI < Test::Unit::TestCase - - def with_http - Dir.mktmpdir {|dr| - srv = WEBrick::HTTPServer.new({ - :DocumentRoot => dr, - :ServerType => Thread, - :Logger => WEBrick::Log.new(StringIO.new("")), - :AccessLog => [[StringIO.new(""), ""]], - :BindAddress => '127.0.0.1', - :Port => 0}) - _, port, _, host = srv.listeners[0].addr - begin - th = srv.start - yield dr, "http://#{host}:#{port}" - ensure - srv.shutdown - end - } - end - - def test_200 - with_http {|dr, url| - open("#{dr}/foo200", "w") {|f| f << "foo200" } - open("#{url}/foo200") {|f| - assert_equal("200", f.status[0]) - assert_equal("foo200", f.read) - } - } - end - - def test_404 - with_http {|dr, url| - exc = assert_raise(OpenURI::HTTPError) { open("#{url}/not-exist") {} } - assert_equal("404", exc.io.status[0]) - } - end - - def test_open_uri - with_http {|dr, url| - open("#{dr}/foo_ou", "w") {|f| f << "foo_ou" } - u = URI("#{url}/foo_ou") - open(u) {|f| - assert_equal("200", f.status[0]) - assert_equal("foo_ou", f.read) - } - } - end - - def test_invalid_option - assert_raise(ArgumentError) { open("http://127.0.0.1/", :invalid_option=>true) {} } - end - - def test_mode - with_http {|dr, url| - open("#{dr}/mode", "w") {|f| f << "mode" } - open("#{url}/mode", "r") {|f| - assert_equal("200", f.status[0]) - assert_equal("mode", f.read) - } - open("#{url}/mode", "r", 0600) {|f| - assert_equal("200", f.status[0]) - assert_equal("mode", f.read) - } - assert_raise(ArgumentError) { open("#{url}/mode", "a") {} } - } - end - - def test_without_block - with_http {|dr, url| - open("#{dr}/without_block", "w") {|g| g << "without_block" } - begin - f = open("#{url}/without_block") - assert_equal("200", f.status[0]) - assert_equal("without_block", f.read) - ensure - f.close - end - } - end - - def test_multi_proxy_opt - assert_raise(ArgumentError) { - open("http://127.0.0.1/", :proxy_http_basic_authentication=>true, :proxy=>true) {} - } - end - - def test_proxy - with_http {|dr, url| - prxy = WEBrick::HTTPProxyServer.new({ - :ServerType => Thread, - :Logger => WEBrick::Log.new(StringIO.new("")), - :AccessLog => [[StringIO.new(""), ""]], - :BindAddress => '127.0.0.1', - :Port => 0}) - _, p_port, _, p_host = prxy.listeners[0].addr - begin - th = prxy.start - open("#{dr}/proxy", "w") {|f| f << "proxy" } - open("#{url}/proxy", :proxy=>"http://#{p_host}:#{p_port}/") {|f| - assert_equal("200", f.status[0]) - assert_equal("proxy", f.read) - } - ensure - prxy.shutdown - end - } - end - - def test_proxy_http_basic_authentication - with_http {|dr, url| - prxy = WEBrick::HTTPProxyServer.new({ - :ServerType => Thread, - :Logger => WEBrick::Log.new(StringIO.new("")), - :AccessLog => [[StringIO.new(""), ""]], - :ProxyAuthProc => lambda {|req, res| - if req["Proxy-Authorization"] != "Basic #{['user:pass'].pack('m').chomp}" - raise WEBrick::HTTPStatus::ProxyAuthenticationRequired - end - }, - :BindAddress => '127.0.0.1', - :Port => 0}) - _, p_port, _, p_host = prxy.listeners[0].addr - p_url = "http://#{p_host}:#{p_port}/" - begin - th = prxy.start - open("#{dr}/proxy", "w") {|f| f << "proxy" } - exc = assert_raise(OpenURI::HTTPError) { open("#{url}/proxy", :proxy=>p_url) {} } - assert_equal("407", exc.io.status[0]) - open("#{url}/proxy", - :proxy_http_basic_authentication=>[p_url, "user", "pass"]) {|f| - assert_equal("200", f.status[0]) - assert_equal("proxy", f.read) - } - assert_raise(ArgumentError) { - open("#{url}/proxy", - :proxy_http_basic_authentication=>[true, "user", "pass"]) {} - } - ensure - prxy.shutdown - end - } - end - -end - diff --git a/test/test_pp.rb b/test/test_pp.rb index 1809770049d0d2..fe65287d88bd6d 100644 --- a/test/test_pp.rb +++ b/test/test_pp.rb @@ -1,6 +1,9 @@ require 'pp' +require 'delegate' require 'test/unit' +module PPTestModule + class PPTest < Test::Unit::TestCase def test_list0123_12 assert_equal("[0, 1, 2, 3]\n", PP.pp([0,1,2,3], '', 12)) @@ -104,7 +107,6 @@ def a.to_s() "aaa" end a.instance_eval { @a = nil } result = PP.pp(a, '') assert_equal("#{a.inspect}\n", result) - assert_match(/\A#\n\z/m, result) a = 1.0 a.instance_eval { @a = nil } result = PP.pp(a, '') @@ -178,3 +180,13 @@ def test_hash assert_equal("[1#{', 1'*99}]", PP.singleline_pp([1]*100, '')) end end + +class PPDelegateTest < Test::Unit::TestCase + class A < DelegateClass(Array); end + + def test_delegate + assert_equal("[]\n", A.new([]).pretty_inspect, "[ruby-core:25804]") + end +end + +end diff --git a/test/test_prettyprint.rb b/test/test_prettyprint.rb index 42178e7d03d9f9..1d6b75a569a25d 100644 --- a/test/test_prettyprint.rb +++ b/test/test_prettyprint.rb @@ -1,6 +1,8 @@ require 'prettyprint' require 'test/unit' +module PrettyPrintTest + class WadlerExample < Test::Unit::TestCase # :nodoc: def setup @tree = Tree.new("aaaa", Tree.new("bbbbb", Tree.new("ccc"), @@ -513,3 +515,5 @@ def test_27 end end + +end diff --git a/test/test_prime.rb b/test/test_prime.rb index 307d53afb359ee..b4962bafcf68b5 100644 --- a/test/test_prime.rb +++ b/test/test_prime.rb @@ -1,6 +1,7 @@ require 'test/unit' require 'prime' require 'stringio' +require 'timeout' class TestPrime < Test::Unit::TestCase # The first 100 prime numbers @@ -143,4 +144,29 @@ def test_prime? assert !-4.prime? end end + + def test_eratosthenes_works_fine_after_timeout + sieve = Prime::EratosthenesSieve.instance + sieve.send(:initialize) + begin + # simulates that Timeout.timeout interrupts Prime::EratosthenesSieve#extend_table + def sieve.Integer(n) + n = super(n) + sleep 10 if /extend_table/ =~ caller.first + return n + end + + begin + Timeout.timeout(0.5) { Prime.each(7*37){} } + flunk("timeout expected") + rescue Timeout::Error + end + ensure + class << sieve + remove_method :Integer + end + end + + refute_includes Prime.each(7*37).to_a, 7*37, "[ruby-dev:39465]" + end end diff --git a/test/test_syslog.rb b/test/test_syslog.rb index 7b3efb85aa7c3c..e9fc375c9026aa 100644 --- a/test/test_syslog.rb +++ b/test/test_syslog.rb @@ -6,10 +6,6 @@ # If in doubt, ask your admin. require 'test/unit' - -# Prepend current directory to load path for testing. -$:.unshift('.') - require 'syslog' class TestSyslog < Test::Unit::TestCase diff --git a/test/test_tempfile.rb b/test/test_tempfile.rb index 9a90d605eeae6c..073a11e15ae9f4 100644 --- a/test/test_tempfile.rb +++ b/test/test_tempfile.rb @@ -3,6 +3,11 @@ require_relative 'ruby/envutil' class TestTempfile < Test::Unit::TestCase + def initialize(*) + super + @tempfile = nil + end + def tempfile(*args, &block) t = Tempfile.new(*args, &block) @tempfile = (t unless block) @@ -45,13 +50,13 @@ def test_saves_in_given_directory def test_basename t = tempfile("foo") - assert_match /^foo/, File.basename(t.path) + assert_match(/^foo/, File.basename(t.path)) end def test_basename_with_suffix t = tempfile(["foo", ".txt"]) - assert_match /^foo/, File.basename(t.path) - assert_match /\.txt$/, File.basename(t.path) + assert_match(/^foo/, File.basename(t.path)) + assert_match(/\.txt$/, File.basename(t.path)) end def test_unlink @@ -284,5 +289,14 @@ def test_tempfile_encoding_ascii8bit2 t.rewind assert_equal(Encoding::ASCII_8BIT,t.read.encoding) end + + def test_binmode + t = tempfile("TEST", mode: IO::BINARY) + if IO::BINARY.nonzero? + assert(t.binmode?) + else + assert_equal(0600, t.stat.mode & 0777) + end + end end diff --git a/test/test_time.rb b/test/test_time.rb index 2a22c6069fc255..7cb75ab6c890d0 100644 --- a/test/test_time.rb +++ b/test/test_time.rb @@ -188,6 +188,15 @@ def test_encode_xmlschema end assert_equal(249, Time.xmlschema("2008-06-05T23:49:23.000249+09:00").usec) + + assert_equal("10000-01-01T00:00:00Z", Time.utc(10000).xmlschema) + assert_equal("9999-01-01T00:00:00Z", Time.utc(9999).xmlschema) + assert_equal("0001-01-01T00:00:00Z", Time.utc(1).xmlschema) # 1 AD + assert_equal("0000-01-01T00:00:00Z", Time.utc(0).xmlschema) # 1 BC + assert_equal("-0001-01-01T00:00:00Z", Time.utc(-1).xmlschema) # 2 BC + assert_equal("-0004-01-01T00:00:00Z", Time.utc(-4).xmlschema) # 5 BC + assert_equal("-9999-01-01T00:00:00Z", Time.utc(-9999).xmlschema) + assert_equal("-10000-01-01T00:00:00Z", Time.utc(-10000).xmlschema) end def test_completion diff --git a/test/webrick/utils.rb b/test/webrick/utils.rb index 82df9cde69e712..ebc936cb2c0967 100644 --- a/test/webrick/utils.rb +++ b/test/webrick/utils.rb @@ -1,10 +1,4 @@ -begin - loadpath = $:.dup - $:.replace($: | [File.expand_path("../ruby", File.dirname(__FILE__))]) - require 'envutil' -ensure - $:.replace(loadpath) -end +require_relative '../ruby/envutil' require "webrick" begin require "webrick/https" diff --git a/test/yaml/test_array.rb b/test/yaml/test_array.rb new file mode 100644 index 00000000000000..95ff94b9590f79 --- /dev/null +++ b/test/yaml/test_array.rb @@ -0,0 +1,18 @@ +require 'test/unit' +require 'yaml' + +module YAML + class TestArray < Test::Unit::TestCase + def setup + @list = [{ :a => 'b' }, 'foo'] + end + + def test_to_yaml + assert_equal @list, YAML.load(@list.to_yaml) + end + + def test_dump + assert_equal @list, YAML.load(YAML.dump(@list)) + end + end +end diff --git a/test/yaml/test_boolean.rb b/test/yaml/test_boolean.rb new file mode 100644 index 00000000000000..006e73b79d226f --- /dev/null +++ b/test/yaml/test_boolean.rb @@ -0,0 +1,37 @@ +require 'test/unit' +require 'yaml' + +module YAML + ### + # Test booleans from YAML spec: + # http://yaml.org/type/bool.html + class TestBoolean < Test::Unit::TestCase + %w{ yes Yes YES true True TRUE on On ON }.each do |truth| + define_method(:"test_#{truth}") do + assert_equal true, YAML.load("--- #{truth}") + end + end + + %w{ no No NO false False FALSE off Off OFF }.each do |truth| + define_method(:"test_#{truth}") do + assert_equal false, YAML.load("--- #{truth}") + end + end + + ### + # YAML spec says "y" and "Y" may be used as true, but Syck treats them + # as literal strings + def test_y + assert_equal "y", YAML.load("--- y") + assert_equal "Y", YAML.load("--- Y") + end + + ### + # YAML spec says "n" and "N" may be used as false, but Syck treats them + # as literal strings + def test_y + assert_equal "n", YAML.load("--- n") + assert_equal "N", YAML.load("--- N") + end + end +end diff --git a/test/yaml/test_class.rb b/test/yaml/test_class.rb new file mode 100644 index 00000000000000..9ea9db30966871 --- /dev/null +++ b/test/yaml/test_class.rb @@ -0,0 +1,18 @@ +require 'test/unit' +require 'yaml' + +module YAML + class TestClass < Test::Unit::TestCase + def test_to_yaml + assert_raises(::TypeError) do + TestClass.to_yaml + end + end + + def test_dump + assert_raises(::TypeError) do + YAML.dump TestClass + end + end + end +end diff --git a/test/yaml/test_exception.rb b/test/yaml/test_exception.rb new file mode 100644 index 00000000000000..f9354ffe2b90ac --- /dev/null +++ b/test/yaml/test_exception.rb @@ -0,0 +1,46 @@ +require 'test/unit' +require 'yaml' + +module YAML + class TestException < Test::Unit::TestCase + class Wups < Exception + attr_reader :foo, :bar + def initialize *args + super + @foo = 1 + @bar = 2 + end + end + + def setup + @wups = Wups.new + end + + def test_to_yaml + w = YAML.load(@wups.to_yaml) + assert_equal @wups, w + assert_equal 1, w.foo + assert_equal 2, w.bar + end + + def test_dump + w = YAML.load(@wups.to_yaml) + assert_equal @wups, w + assert_equal 1, w.foo + assert_equal 2, w.bar + end + + def test_to_yaml_properties + class << @wups + def to_yaml_properties + [:@foo] + end + end + + w = YAML.load(YAML.dump(@wups)) + assert_equal @wups, w + assert_equal 1, w.foo + assert_nil w.bar + end + end +end diff --git a/test/yaml/test_hash.rb b/test/yaml/test_hash.rb new file mode 100644 index 00000000000000..afcdcaca7b87f0 --- /dev/null +++ b/test/yaml/test_hash.rb @@ -0,0 +1,18 @@ +require 'test/unit' +require 'yaml' + +module YAML + class TestHash < Test::Unit::TestCase + def setup + @hash = { :a => 'b' } + end + + def test_to_yaml + assert_equal @hash, YAML.load(@hash.to_yaml) + end + + def test_dump + assert_equal @hash, YAML.load(YAML.dump(@hash)) + end + end +end diff --git a/test/yaml/test_null.rb b/test/yaml/test_null.rb new file mode 100644 index 00000000000000..e6b29550e41e5f --- /dev/null +++ b/test/yaml/test_null.rb @@ -0,0 +1,20 @@ +require 'test/unit' +require 'yaml' + +module YAML + ### + # Test null from YAML spec: + # http://yaml.org/type/null.html + class TestNull < Test::Unit::TestCase + def test_null_list + assert_equal [nil] * 5, YAML.load(<<-eoyml) +--- +- ~ +- null +- +- Null +- NULL + eoyml + end + end +end diff --git a/test/yaml/test_omap.rb b/test/yaml/test_omap.rb new file mode 100644 index 00000000000000..d1d30e9e938386 --- /dev/null +++ b/test/yaml/test_omap.rb @@ -0,0 +1,56 @@ +require 'test/unit' +require 'yaml' + +module YAML + class TestOmap < Test::Unit::TestCase + def test_keys + map = YAML::Omap.new + map['foo'] = 'bar' + assert_equal 'bar', map['foo'] + end + + def test_order + map = YAML::Omap.new + map['a'] = 'b' + map['b'] = 'c' + assert_equal [%w{a b}, %w{b c}], map.to_a + end + + def test_square + list = [["a", "b"], ["b", "c"]] + map = YAML::Omap[*list.flatten] + assert_equal list, map.to_a + assert_equal 'b', map['a'] + assert_equal 'c', map['b'] + end + + def test_to_yaml + map = YAML::Omap['a', 'b', 'c', 'd'] + yaml = map.to_yaml + assert_match('!omap', yaml) + assert_match('- a: b', yaml) + assert_match('- c: d', yaml) + end + + def test_round_trip + list = [["a", "b"], ["b", "c"]] + map = YAML::Omap[*list.flatten] + loaded = YAML.load(YAML.dump(map)) + + assert_equal map, loaded + assert_equal list, loaded.to_a + end + + ### + # FIXME: Syck should also support !!omap as shorthand + def test_load + list = [["a", "b"], ["c", "d"]] + map = YAML.load(<<-eoyml) +--- !omap +- a: b +- c: d + eoyml + assert_equal list, map.to_a + end + end +end diff --git a/test/yaml/test_string.rb b/test/yaml/test_string.rb new file mode 100644 index 00000000000000..26229a62f5a2ee --- /dev/null +++ b/test/yaml/test_string.rb @@ -0,0 +1,45 @@ +require 'test/unit' +require 'yaml' + +module YAML + class TestString < Test::Unit::TestCase + def test_binary_string_null + string = "\x00" + yml = YAML.dump string + assert_match(/binary/, yml) + assert_equal string, YAML.load(yml) + end + + def test_binary_string + string = binary_string + yml = YAML.dump string + assert_match(/binary/, yml) + assert_equal string, YAML.load(yml) + end + + def test_non_binary_string + string = binary_string(0.29) + yml = YAML.dump string + refute_match(/binary/, yml) + assert_equal string, YAML.load(yml) + end + + def test_string_with_ivars + food = "is delicious" + ivar = "on rock and roll" + food.instance_variable_set(:@we_built_this_city, ivar) + + str = YAML.load YAML.dump food + assert_equal ivar, food.instance_variable_get(:@we_built_this_city) + end + + def binary_string percentage = 0.31, length = 100 + string = '' + (percentage * length).to_i.times do |i| + string << "\b" + end + string << 'a' * (length - string.length) + string + end + end +end diff --git a/test/yaml/test_symbol.rb b/test/yaml/test_symbol.rb new file mode 100644 index 00000000000000..c5358aa19d323a --- /dev/null +++ b/test/yaml/test_symbol.rb @@ -0,0 +1,22 @@ +require 'test/unit' +require 'yaml' + +module YAML + class TestSymbol < Test::Unit::TestCase + def test_to_yaml + assert_equal :a, YAML.load(:a.to_yaml) + end + + def test_dump + assert_equal :a, YAML.load(YAML.dump(:a)) + end + + def test_stringy + assert_equal :"1", YAML.load(YAML.dump(:"1")) + end + + def test_load_quoted + assert_equal :"1", YAML.load("--- :'1'\n") + end + end +end diff --git a/test/yaml/test_yaml_properties.rb b/test/yaml/test_yaml_properties.rb new file mode 100644 index 00000000000000..48bb878a01ef8d --- /dev/null +++ b/test/yaml/test_yaml_properties.rb @@ -0,0 +1,64 @@ +require 'test/unit' +require 'yaml' + +module YAML + class TestYamlProperties < Test::Unit::TestCase + class Foo + attr_reader :a, :b, :c + def initialize + @a = 1 + @b = 2 + @c = 3 + end + + def to_yaml_properties + [:@a, :@b] + end + end + + def test_object_dump_yaml_properties + foo = YAML.load(YAML.dump(Foo.new)) + assert_equal 1, foo.a + assert_equal 2, foo.b + assert_nil foo.c + end + + class Bar < Struct.new(:foo, :bar) + attr_reader :baz + def initialize *args + super + @baz = 'hello' + end + + def to_yaml_properties + [] + end + end + + def test_struct_dump_yaml_properties + bar = YAML.load(YAML.dump(Bar.new('a', 'b'))) + assert_equal 'a', bar.foo + assert_equal 'b', bar.bar + assert_nil bar.baz + end + + def test_string_dump + string = "okonomiyaki" + class << string + def to_yaml_properties + [:@tastes] + end + end + + string.instance_variable_set(:@tastes, 'delicious') + v = YAML.load YAML.dump string + assert_equal 'delicious', v.instance_variable_get(:@tastes) + end + + def test_string_load + str = YAML.load("--- !str \nstr: okonomiyaki\n:@tastes: delicious\n") + assert_equal 'okonomiyaki', str + assert_equal 'delicious', str.instance_variable_get(:@tastes) + end + end +end diff --git a/thread.c b/thread.c index b1873d40e56ce7..9c6ec5b73d499a 100644 --- a/thread.c +++ b/thread.c @@ -9,7 +9,7 @@ **********************************************************************/ /* - YARV Thread Desgin + YARV Thread Design model 1: Userlevel Thread Same as traditional ruby thread. @@ -97,13 +97,17 @@ static void set_unblock_function(rb_thread_t *th, rb_unblock_function_t *func, v struct rb_unblock_callback *old); static void reset_unblock_function(rb_thread_t *th, const struct rb_unblock_callback *old); -static inline void blocking_region_begin(rb_thread_t *th, struct rb_blocking_region_buffer *region, - rb_unblock_function_t *func, void *arg); static inline void blocking_region_end(rb_thread_t *th, struct rb_blocking_region_buffer *region); +#define RB_GC_SAVE_MACHINE_CONTEXT(th) \ + do { \ + rb_gc_save_machine_context(th); \ + SET_MACHINE_STACK_END(&(th)->machine_stack_end); \ + } while (0) + #define GVL_UNLOCK_BEGIN() do { \ rb_thread_t *_th_stored = GET_THREAD(); \ - rb_gc_save_machine_context(_th_stored); \ + RB_GC_SAVE_MACHINE_CONTEXT(_th_stored); \ native_mutex_unlock(&_th_stored->vm->global_vm_lock) #define GVL_UNLOCK_END() \ @@ -118,6 +122,17 @@ static inline void blocking_region_end(rb_thread_t *th, struct rb_blocking_regio GVL_UNLOCK_END(); \ } while(0); +#define blocking_region_begin(th, region, func, arg) \ + do { \ + (region)->prev_status = (th)->status; \ + (th)->blocking_region_buffer = (region); \ + set_unblock_function((th), (func), (arg), &(region)->oldubf); \ + (th)->status = THREAD_STOPPED; \ + thread_debug("enter blocking region (%p)\n", (void *)(th)); \ + RB_GC_SAVE_MACHINE_CONTEXT(th); \ + native_mutex_unlock(&(th)->vm->global_vm_lock); \ + } while (0) + #define BLOCKING_REGION(exec, ubf, ubfarg) do { \ rb_thread_t *__th = GET_THREAD(); \ struct rb_blocking_region_buffer __region; \ @@ -143,16 +158,32 @@ void rb_thread_debug(const char *fmt, ...); # if THREAD_DEBUG < 0 static int rb_thread_debug_enabled; +/* + * call-seq: + * Thread.DEBUG => num + * + * Returns the thread debug level. Available only if compiled with + * THREAD_DEBUG=-1. + */ + static VALUE rb_thread_s_debug(void) { return INT2NUM(rb_thread_debug_enabled); } +/* + * call-seq: + * Thread.DEBUG = num + * + * Sets the thread debug level. Available only if compiled with + * THREAD_DEBUG=-1. + */ + static VALUE rb_thread_s_debug_set(VALUE self, VALUE val) { - rb_thread_debug_enabled = RTEST(val); + rb_thread_debug_enabled = RTEST(val) ? NUM2INT(val) : 0; return val; } # else @@ -292,6 +323,7 @@ typedef struct rb_mutex_struct } mutex_t; static void rb_mutex_unlock_all(mutex_t *mutex, rb_thread_t *th); +static void rb_mutex_abandon_all(mutex_t *mutexes); void rb_thread_terminate_all(void) @@ -349,6 +381,7 @@ thread_cleanup_func(void *th_ptr) rb_mutex_unlock_all(th->keeping_mutexes, th); th->keeping_mutexes = NULL; } + th->locking_mutex = Qfalse; thread_cleanup_func_before_exec(th_ptr); native_thread_destroy(th); } @@ -389,7 +422,7 @@ thread_start_func_2(rb_thread_t *th, VALUE *stack_start, VALUE *register_stack_s TH_PUSH_TAG(th); if ((state = EXEC_TAG()) == 0) { SAVE_ROOT_JMPBUF(th, { - if (th->first_proc) { + if (!th->first_func) { GetProcPtr(th->first_proc, proc); th->errinfo = Qnil; th->local_lfp = proc->block.lfp; @@ -398,7 +431,7 @@ thread_start_func_2(rb_thread_t *th, VALUE *stack_start, VALUE *register_stack_s (int)RARRAY_LEN(args), RARRAY_PTR(args), 0); } else { - th->value = (*th->first_func)((void *)th->first_args); + th->value = (*th->first_func)((void *)args); } }); } @@ -449,7 +482,7 @@ thread_start_func_2(rb_thread_t *th, VALUE *stack_start, VALUE *register_stack_s st_delete_wrap(th->vm->living_threads, th->self); } - /* wake up joinning threads */ + /* wake up joining threads */ join_th = th->join_list_head; while (join_th) { if (join_th == main_th) errinfo = Qnil; @@ -481,6 +514,7 @@ static VALUE thread_create_core(VALUE thval, VALUE args, VALUE (*fn)(ANYARGS)) { rb_thread_t *th; + int err; if (OBJ_FROZEN(GET_THREAD()->thgroup)) { rb_raise(rb_eThreadError, @@ -499,10 +533,16 @@ thread_create_core(VALUE thval, VALUE args, VALUE (*fn)(ANYARGS)) native_mutex_initialize(&th->interrupt_lock); /* kick thread */ st_insert(th->vm->living_threads, thval, (st_data_t) th->thread_id); - native_thread_create(th); + err = native_thread_create(th); + if (err) { + st_delete_wrap(th->vm->living_threads, th->self); + th->status = THREAD_KILLED; + rb_raise(rb_eThreadError, "can't create Thread (%d)", err); + } return thval; } +/* :nodoc: */ static VALUE thread_s_new(int argc, VALUE *argv, VALUE klass) { @@ -533,6 +573,7 @@ thread_start(VALUE klass, VALUE args) return thread_create_core(rb_thread_alloc(klass), args, 0); } +/* :nodoc: */ static VALUE thread_initialize(VALUE thread, VALUE args) { @@ -942,7 +983,7 @@ rb_thread_schedule_rec(int sched_depth) thread_debug("rb_thread_schedule/switch start\n"); - rb_gc_save_machine_context(th); + RB_GC_SAVE_MACHINE_CONTEXT(th); native_mutex_unlock(&th->vm->global_vm_lock); { native_thread_yield(); @@ -965,18 +1006,6 @@ rb_thread_schedule(void) } /* blocking region */ -static inline void -blocking_region_begin(rb_thread_t *th, struct rb_blocking_region_buffer *region, - rb_unblock_function_t *func, void *arg) -{ - region->prev_status = th->status; - th->blocking_region_buffer = region; - set_unblock_function(th, func, arg, ®ion->oldubf); - th->status = THREAD_STOPPED; - thread_debug("enter blocking region (%p)\n", (void *)th); - rb_gc_save_machine_context(th); - native_mutex_unlock(&th->vm->global_vm_lock); -} static inline void blocking_region_end(rb_thread_t *th, struct rb_blocking_region_buffer *region) @@ -1017,10 +1046,10 @@ rb_thread_blocking_region_end(struct rb_blocking_region_buffer *region) * (1) release GVL. * Other Ruby threads may run in parallel. * (2) call func with data1. - * (3) aquire GVL. + * (3) acquire GVL. * Other Ruby threads can not run in parallel any more. * - * If another thread interrupts this thread (Thread#kill, signal deliverly, + * If another thread interrupts this thread (Thread#kill, signal delivery, * VM-shutdown request, and so on), `ubf()' is called (`ubf()' means * "un-blocking function"). `ubf()' should interrupt `func()' execution. * @@ -1031,9 +1060,10 @@ rb_thread_blocking_region_end(struct rb_blocking_region_buffer *region) * * RUBY_UBF_IO: ubf for IO operation * * RUBY_UBF_PROCESS: ubf for process operation * - * NOTE: You can not execute most of Ruby C API and touch Ruby objects - * in `func()' and `ubf()' because current thread doesn't acquire - * GVL (cause synchronization problem). If you need to do it, + * NOTE: You can not execute most of Ruby C API and touch Ruby + * objects in `func()' and `ubf()', including raising an + * exception, because current thread doesn't acquire GVL + * (cause synchronization problem). If you need to do it, * read source code of C APIs and confirm by yourself. * * NOTE: In short, this API is difficult to use safely. I recommend you @@ -1135,7 +1165,7 @@ rb_thread_call_with_gvl(void *(*func)(void *), void *data1) blocking_region_end(th, brb); /* enter to Ruby world: You can access Ruby values, methods and so on. */ r = (*func)(data1); - /* levae from Ruby world: You can not access Ruby values, etc. */ + /* leave from Ruby world: You can not access Ruby values, etc. */ blocking_region_begin(th, brb, prev_unblock.func, prev_unblock.arg); return r; } @@ -1365,7 +1395,9 @@ rb_thread_fd_close(int fd) /* * call-seq: - * thr.raise(exception) + * thr.raise + * thr.raise(string) + * thr.raise(exception [, string [, array]]) * * Raises an exception (see Kernel::raise) from thr. The * caller does not have to be thr. @@ -1634,6 +1666,13 @@ rb_thread_main(void) return GET_THREAD()->vm->main_thread->self; } +/* + * call-seq: + * Thread.main => thread + * + * Returns the main thread. + */ + static VALUE rb_thread_s_main(VALUE klass) { @@ -2503,7 +2542,7 @@ int rb_thread_fd_writable(int fd) { rb_thread_wait_fd_rw(fd, 0); - return Qtrue; + return TRUE; } int @@ -2571,7 +2610,6 @@ rb_gc_set_stack_end(VALUE **stack_end_p) void rb_gc_save_machine_context(rb_thread_t *th) { - SET_MACHINE_STACK_END(&th->machine_stack_end); FLUSH_REGISTER_WINDOWS; #ifdef __ia64 th->machine_register_stack_end = rb_ia64_bsp(); @@ -2623,15 +2661,14 @@ void rb_thread_stop_timer_thread(void) { if (timer_thread_id && native_stop_timer_thread()) { - native_thread_join(timer_thread_id); - timer_thread_id = 0; + native_reset_timer_thread(); } } void rb_thread_reset_timer_thread(void) { - timer_thread_id = 0; + native_reset_timer_thread(); } void @@ -2673,6 +2710,7 @@ rb_thread_atfork_internal(int (*atfork)(st_data_t, st_data_t, st_data_t)) VALUE thval = th->self; vm->main_thread = th; + native_mutex_reinitialize_atfork(&th->vm->global_vm_lock); st_foreach(vm->living_threads, atfork, (st_data_t)th); st_clear(vm->living_threads); st_insert(vm->living_threads, thval, (st_data_t)th->thread_id); @@ -2688,6 +2726,10 @@ terminate_atfork_i(st_data_t key, st_data_t val, st_data_t current_th) GetThreadPtr(thval, th); if (th != (rb_thread_t *)current_th) { + if (th->keeping_mutexes) { + rb_mutex_abandon_all(th->keeping_mutexes); + } + th->keeping_mutexes = NULL; thread_cleanup_func(th); } return ST_CONTINUE; @@ -3249,6 +3291,19 @@ rb_mutex_unlock_all(mutex_t *mutexes, rb_thread_t *th) } } +static void +rb_mutex_abandon_all(mutex_t *mutexes) +{ + mutex_t *mutex; + + while (mutexes) { + mutex = mutexes; + mutexes = mutex->next_mutex; + mutex->th = 0; + mutex->next_mutex = 0; + } +} + static VALUE rb_mutex_sleep_forever(VALUE time) { @@ -3379,42 +3434,18 @@ rb_barrier_destroy(VALUE self) /* variables for recursive traversals */ static ID recursive_key; -static VALUE -recursive_check(VALUE hash, VALUE obj, VALUE paired_obj) -{ - if (NIL_P(hash) || TYPE(hash) != T_HASH) { - return Qfalse; - } - else { - VALUE sym = ID2SYM(rb_frame_this_func()); - VALUE list = rb_hash_aref(hash, sym); - VALUE pair_list; - - if (NIL_P(list) || TYPE(list) != T_HASH) - return Qfalse; - pair_list = rb_hash_lookup2(list, obj, Qundef); - if (pair_list == Qundef) - return Qfalse; - if (paired_obj) { - if (TYPE(pair_list) != T_HASH) { - if (pair_list != paired_obj) - return Qfalse; - } - else { - if (NIL_P(rb_hash_lookup(pair_list, paired_obj))) - return Qfalse; - } - } - return Qtrue; - } -} +/* + * Returns the current "recursive list" used to detect recursion. + * This list is a hash table, unique for the current thread and for + * the current __callee__. + */ static VALUE -recursive_push(VALUE hash, VALUE obj, VALUE paired_obj) +recursive_list_access(void) { - VALUE list, sym, pair_list; - - sym = ID2SYM(rb_frame_this_func()); + volatile VALUE hash = rb_thread_local_aref(rb_thread_current(), recursive_key); + VALUE sym = ID2SYM(rb_frame_this_func()); + VALUE list; if (NIL_P(hash) || TYPE(hash) != T_HASH) { hash = rb_hash_new(); OBJ_UNTRUST(hash); @@ -3429,6 +3460,48 @@ recursive_push(VALUE hash, VALUE obj, VALUE paired_obj) OBJ_UNTRUST(list); rb_hash_aset(hash, sym, list); } + return list; +} + +/* + * Returns Qtrue iff obj_id (or the pair ) is already + * in the recursion list. + * Assumes the recursion list is valid. + */ + +static VALUE +recursive_check(VALUE list, VALUE obj_id, VALUE paired_obj_id) +{ + VALUE pair_list = rb_hash_lookup2(list, obj_id, Qundef); + if (pair_list == Qundef) + return Qfalse; + if (paired_obj_id) { + if (TYPE(pair_list) != T_HASH) { + if (pair_list != paired_obj_id) + return Qfalse; + } + else { + if (NIL_P(rb_hash_lookup(pair_list, paired_obj_id))) + return Qfalse; + } + } + return Qtrue; +} + +/* + * Pushes obj_id (or the pair ) in the recursion list. + * For a single obj_id, it sets list[obj_id] to Qtrue. + * For a pair, it sets list[obj_id] to paired_obj_id if possible, + * otherwise list[obj_id] becomes a hash like: + * {paired_obj_id_1 => true, paired_obj_id_2 => true, ... } + * Assumes the recursion list is valid. + */ + +static void +recursive_push(VALUE list, VALUE obj, VALUE paired_obj) +{ + VALUE pair_list; + if (!paired_obj) { rb_hash_aset(list, obj, Qtrue); } @@ -3445,33 +3518,24 @@ recursive_push(VALUE hash, VALUE obj, VALUE paired_obj) } rb_hash_aset(pair_list, paired_obj, Qtrue); } - return hash; } +/* + * Pops obj_id (or the pair ) from the recursion list. + * For a pair, if list[obj_id] is a hash, then paired_obj_id is + * removed from the hash and no attempt is made to simplify + * list[obj_id] from {only_one_paired_id => true} to only_one_paired_id + * Assumes the recursion list is valid. + */ + static void -recursive_pop(VALUE hash, VALUE obj, VALUE paired_obj) +recursive_pop(VALUE list, VALUE obj, VALUE paired_obj) { - VALUE list, sym, pair_list, symname, thrname; - - sym = ID2SYM(rb_frame_this_func()); - if (NIL_P(hash) || TYPE(hash) != T_HASH) { - symname = rb_inspect(sym); - thrname = rb_inspect(rb_thread_current()); - rb_raise(rb_eTypeError, "invalid inspect_tbl hash for %s in %s", - StringValuePtr(symname), StringValuePtr(thrname)); - } - list = rb_hash_aref(hash, sym); - if (NIL_P(list) || TYPE(list) != T_HASH) { - symname = rb_inspect(sym); - thrname = rb_inspect(rb_thread_current()); - rb_raise(rb_eTypeError, "invalid inspect_tbl list for %s in %s", - StringValuePtr(symname), StringValuePtr(thrname)); - } if (paired_obj) { - pair_list = rb_hash_lookup2(list, obj, Qundef); + VALUE pair_list = rb_hash_lookup2(list, obj, Qundef); if (pair_list == Qundef) { - symname = rb_inspect(sym); - thrname = rb_inspect(rb_thread_current()); + VALUE symname = rb_inspect(ID2SYM(rb_frame_this_func())); + VALUE thrname = rb_inspect(rb_thread_current()); rb_raise(rb_eTypeError, "invalid inspect_tbl pair_list for %s in %s", StringValuePtr(symname), StringValuePtr(thrname)); } @@ -3485,42 +3549,113 @@ recursive_pop(VALUE hash, VALUE obj, VALUE paired_obj) rb_hash_delete(list, obj); } +struct exec_recursive_params { + VALUE (*func) (VALUE, VALUE, int); + VALUE list; + VALUE obj; + VALUE objid; + VALUE pairid; + VALUE arg; +}; + +static VALUE +exec_recursive_i(VALUE tag, struct exec_recursive_params *p) +{ + VALUE result = Qundef; + int state; + + recursive_push(p->list, p->objid, p->pairid); + PUSH_TAG(); + if ((state = EXEC_TAG()) == 0) { + result = (*p->func)(p->obj, p->arg, FALSE); + } + POP_TAG(); + recursive_pop(p->list, p->objid, p->pairid); + if (state) + JUMP_TAG(state); + return result; +} + +/* + * Calls func(obj, arg, recursive), where recursive is non-zero if the + * current method is called recursively on obj, or on the pair + * If outer is 0, then the innermost func will be called with recursive set + * to Qtrue, otherwise the outermost func will be called. In the latter case, + * all inner func are short-circuited by throw. + * Implementation details: the value thrown is the recursive list which is + * proper to the current method and unlikely to be catched anywhere else. + * list[recursive_key] is used as a flag for the outermost call. + */ + static VALUE -exec_recursive(VALUE (*func) (VALUE, VALUE, int), VALUE obj, VALUE pairid, VALUE arg) +exec_recursive(VALUE (*func) (VALUE, VALUE, int), VALUE obj, VALUE pairid, VALUE arg, int outer) { - volatile VALUE hash = rb_thread_local_aref(rb_thread_current(), recursive_key); - VALUE objid = rb_obj_id(obj); + struct exec_recursive_params p; + int outermost; + p.list = recursive_list_access(); + p.objid = rb_obj_id(obj); + outermost = outer && !recursive_check(p.list, ID2SYM(recursive_key), 0); - if (recursive_check(hash, objid, pairid)) { - return (*func) (obj, arg, Qtrue); + if (recursive_check(p.list, p.objid, pairid)) { + if (outer && !outermost) { + rb_throw_obj(p.list, p.list); + } + return (*func)(obj, arg, TRUE); } else { VALUE result = Qundef; - int state; - - hash = recursive_push(hash, objid, pairid); - PUSH_TAG(); - if ((state = EXEC_TAG()) == 0) { - result = (*func) (obj, arg, Qfalse); + p.func = func; + p.obj = obj; + p.pairid = pairid; + p.arg = arg; + + if (outermost) { + recursive_push(p.list, ID2SYM(recursive_key), 0); + result = rb_catch_obj(p.list, exec_recursive_i, (VALUE)&p); + recursive_pop(p.list, ID2SYM(recursive_key), 0); + if (result == p.list) { + result = (*func)(obj, arg, TRUE); + } + } + else { + result = exec_recursive_i(0, &p); } - POP_TAG(); - recursive_pop(hash, objid, pairid); - if (state) - JUMP_TAG(state); return result; } } +/* + * Calls func(obj, arg, recursive), where recursive is non-zero if the + * current method is called recursively on obj + */ + VALUE rb_exec_recursive(VALUE (*func) (VALUE, VALUE, int), VALUE obj, VALUE arg) { - return exec_recursive(func, obj, 0, arg); + return exec_recursive(func, obj, 0, arg, 0); } +/* + * Calls func(obj, arg, recursive), where recursive is non-zero if the + * current method is called recursively on the ordered pair + */ + VALUE rb_exec_recursive_paired(VALUE (*func) (VALUE, VALUE, int), VALUE obj, VALUE paired_obj, VALUE arg) { - return exec_recursive(func, obj, rb_obj_id(paired_obj), arg); + return exec_recursive(func, obj, rb_obj_id(paired_obj), arg, 0); +} + +/* + * If recursion is detected on the current method and obj, the outermost + * func will be called with (obj, arg, Qtrue). All inner func will be + * short-circuited using throw. + */ + +VALUE +rb_exec_recursive_outer(VALUE (*func) (VALUE, VALUE, int), VALUE obj, VALUE arg) +{ + return exec_recursive(func, obj, 0, arg, 1); } /* tracer */ @@ -3772,6 +3907,14 @@ thread_add_trace_func(rb_thread_t *th, VALUE trace) rb_threadptr_add_event_hook(th, call_trace_func, RUBY_EVENT_ALL, trace); } +/* + * call-seq: + * thr.add_trace_func(proc) => proc + * + * Adds _proc_ as a handler for tracing. + * See Thread#set_trace_func and +set_trace_func+. + */ + static VALUE thread_add_trace_func_m(VALUE obj, VALUE trace) { @@ -3781,6 +3924,16 @@ thread_add_trace_func_m(VALUE obj, VALUE trace) return trace; } +/* + * call-seq: + * thr.set_trace_func(proc) => proc + * thr.set_trace_func(nil) => nil + * + * Establishes _proc_ on _thr_ as the handler for tracing, or + * disables tracing if the parameter is +nil+. + * See +set_trace_func+. + */ + static VALUE thread_set_trace_func_m(VALUE obj, VALUE trace) { @@ -3881,14 +4034,15 @@ call_trace_func(rb_event_flag_t event, VALUE proc, VALUE self, ID id, VALUE klas args.self = self; args.id = id; args.klass = klass; - ruby_suppress_tracing(call_trace_proc, (VALUE)&args, Qfalse); + ruby_suppress_tracing(call_trace_proc, (VALUE)&args, FALSE); } VALUE ruby_suppress_tracing(VALUE (*func)(VALUE, int), VALUE arg, int always) { rb_thread_t *th = GET_THREAD(); - int state, raised, tracing; + int state, tracing; + volatile int raised; VALUE result = Qnil; if ((tracing = th->tracing) != 0 && !always) { @@ -3920,6 +4074,13 @@ ruby_suppress_tracing(VALUE (*func)(VALUE, int), VALUE arg, int always) VALUE rb_thread_backtrace(VALUE thval); +/* + * call-seq: + * thr.backtrace => array + * + * Returns the current back trace of the _thr_. + */ + static VALUE rb_thread_backtrace_m(VALUE thval) { @@ -4040,7 +4201,7 @@ ruby_native_thread_p(void) { rb_thread_t *th = ruby_thread_from_native(); - return th ? Qtrue : Qfalse; + return th != 0; } static int diff --git a/thread_pthread.c b/thread_pthread.c index a4e7f25d75b9c6..6d011b81bef721 100644 --- a/thread_pthread.c +++ b/thread_pthread.c @@ -34,7 +34,7 @@ native_mutex_lock(pthread_mutex_t *lock) { int r; if ((r = pthread_mutex_lock(lock)) != 0) { - rb_bug("pthread_mutex_lock: %d", r); + rb_bug_errno("pthread_mutex_lock", r); } } @@ -43,7 +43,7 @@ native_mutex_unlock(pthread_mutex_t *lock) { int r; if ((r = pthread_mutex_unlock(lock)) != 0) { - rb_bug("native_mutex_unlock return non-zero: %d", r); + rb_bug_errno("pthread_mutex_unlock", r); } } @@ -56,7 +56,7 @@ native_mutex_trylock(pthread_mutex_t *lock) return EBUSY; } else { - rb_bug("native_mutex_trylock return non-zero: %d", r); + rb_bug_errno("pthread_mutex_trylock", r); } } return 0; @@ -67,16 +67,18 @@ native_mutex_initialize(pthread_mutex_t *lock) { int r = pthread_mutex_init(lock, 0); if (r != 0) { - rb_bug("native_mutex_initialize return non-zero: %d", r); + rb_bug_errno("pthread_mutex_init", r); } } +#define native_mutex_reinitialize_atfork(lock) native_mutex_initialize(lock) + static void native_mutex_destroy(pthread_mutex_t *lock) { int r = pthread_mutex_destroy(lock); if (r != 0) { - rb_bug("native_mutex_destroy return non-zero: %d", r); + rb_bug_errno("pthread_mutex_destroy", r); } } @@ -85,7 +87,7 @@ native_cond_initialize(pthread_cond_t *cond) { int r = pthread_cond_init(cond, 0); if (r != 0) { - rb_bug("native_cond_initialize return non-zero: %d", r); + rb_bug_errno("pthread_cond_init", r); } } @@ -94,7 +96,7 @@ native_cond_destroy(pthread_cond_t *cond) { int r = pthread_cond_destroy(cond); if (r != 0) { - rb_bug("native_cond_destroy return non-zero: %d", r); + rb_bug_errno("pthread_cond_destroy", r); } } @@ -302,7 +304,7 @@ ruby_init_stack(volatile VALUE *addr } #define CHECK_ERR(expr) \ - {int err = (expr); if (err) {rb_bug("err: %d - %s", err, #expr);}} + {int err = (expr); if (err) {rb_bug_errno(#expr, err);}} static int native_thread_init_stack(rb_thread_t *th) @@ -455,6 +457,24 @@ use_cached_thread(rb_thread_t *th) return result; } +enum { +#ifdef __SYMBIAN32__ + RUBY_STACK_MIN_LIMIT = 64 * 1024, /* 64KB: Let's be slightly more frugal on mobile platform */ +#else + RUBY_STACK_MIN_LIMIT = 512 * 1024, /* 512KB */ +#endif + RUBY_STACK_SPACE_LIMIT = 1024 * 1024 +}; + +#ifdef PTHREAD_STACK_MIN +#define RUBY_STACK_MIN ((RUBY_STACK_MIN_LIMIT < PTHREAD_STACK_MIN) ? \ + PTHREAD_STACK_MIN * 2 : RUBY_STACK_MIN_LIMIT) +#else +#define RUBY_STACK_MIN (RUBY_STACK_MIN_LIMIT) +#endif +#define RUBY_STACK_SPACE (RUBY_STACK_MIN/5 > RUBY_STACK_SPACE_LIMIT ? \ + RUBY_STACK_SPACE_LIMIT : RUBY_STACK_MIN/5) + static int native_thread_create(rb_thread_t *th) { @@ -465,20 +485,9 @@ native_thread_create(rb_thread_t *th) } else { pthread_attr_t attr; -#ifdef __SYMBIAN32__ - size_t stack_size = 64 * 1024; /* 64KB: Let's be slightly more frugal on mobile platform */ -#else - size_t stack_size = 512 * 1024; /* 512KB */ -#endif - size_t space; + const size_t stack_size = RUBY_STACK_MIN; + const size_t space = RUBY_STACK_SPACE; -#ifdef PTHREAD_STACK_MIN - if (stack_size < PTHREAD_STACK_MIN) { - stack_size = PTHREAD_STACK_MIN * 2; - } -#endif - space = stack_size/5; - if (space > 1024*1024) space = 1024*1024; th->machine_stack_maxsize = stack_size - space; #ifdef __ia64 th->machine_stack_maxsize /= 2; @@ -504,11 +513,6 @@ native_thread_create(rb_thread_t *th) if (!err) { pthread_cond_init(&th->native_thread_data.sleep_cond, 0); } - else { - st_delete_wrap(th->vm->living_threads, th->self); - th->status = THREAD_KILLED; - rb_raise(rb_eThreadError, "can't create Thread (%d)", err); - } } return err; } @@ -617,7 +621,7 @@ native_sleep(rb_thread_t *th, struct timeval *tv) thread_debug("native_sleep: pthread_cond_wait start\n"); r = pthread_cond_wait(&th->native_thread_data.sleep_cond, &th->interrupt_lock); - if (r) rb_bug("pthread_cond_wait: %d", r); + if (r) rb_bug_errno("pthread_cond_wait", r); thread_debug("native_sleep: pthread_cond_wait end\n"); } else { @@ -626,7 +630,7 @@ native_sleep(rb_thread_t *th, struct timeval *tv) (unsigned long)ts.tv_sec, ts.tv_nsec); r = pthread_cond_timedwait(&th->native_thread_data.sleep_cond, &th->interrupt_lock, &ts); - if (r && r != ETIMEDOUT) rb_bug("pthread_cond_timedwait: %d", r); + if (r && r != ETIMEDOUT) rb_bug_errno("pthread_cond_timedwait", r); thread_debug("native_sleep: pthread_cond_timedwait end (%d)\n", r); } @@ -759,7 +763,7 @@ thread_timer(void *dummy) else if (err == 0 || err == EINTR) { if (rb_signal_buff_size() == 0) break; } - else rb_bug("thread_timer/timedwait: %d", err); + else rb_bug_errno("thread_timer/timedwait", err); #if !defined(__CYGWIN__) && !defined(__SYMBIAN32__) if (signal_thread_list_anchor.next) { @@ -816,9 +820,18 @@ native_stop_timer_thread(void) native_cond_signal(&timer_thread_cond); } native_mutex_unlock(&timer_thread_lock); + if (stopped) { + native_thread_join(timer_thread_id); + } return stopped; } +static void +native_reset_timer_thread(void) +{ + timer_thread_id = 0; +} + #ifdef HAVE_SIGALTSTACK int ruby_stack_overflowed_p(const rb_thread_t *th, const void *addr) diff --git a/thread_win32.c b/thread_win32.c index f404a4f312c6a2..6bb29a1a406eec 100644 --- a/thread_win32.c +++ b/thread_win32.c @@ -176,9 +176,11 @@ w32_resume_thread(HANDLE handle) #ifdef HAVE__BEGINTHREADEX #define start_thread (HANDLE)_beginthreadex +#define thread_errno errno typedef unsigned long (_stdcall *w32_thread_start_func)(void*); #else #define start_thread CreateThread +#define thread_errno rb_w32_map_errno(GetLastError()) typedef LPTHREAD_START_ROUTINE w32_thread_start_func; #endif @@ -324,6 +326,8 @@ native_mutex_initialize(rb_thread_lock_t *lock) #endif } +#define native_mutex_reinitialize_atfork(lock) (void)(lock) + static void native_mutex_destroy(rb_thread_lock_t *lock) { @@ -479,8 +483,7 @@ native_thread_create(rb_thread_t *th) th->thread_id = w32_create_thread(stack_size, thread_start_func_1, th); if ((th->thread_id) == 0) { - st_delete_wrap(th->vm->living_threads, th->self); - rb_raise(rb_eThreadError, "can't create Thread (%d)", errno); + return thread_errno; } w32_resume_thread(th->thread_id); @@ -564,10 +567,21 @@ native_stop_timer_thread(void) { int stopped = --system_working <= 0; if (stopped) { + SetEvent(timer_thread_lock); + native_thread_join(timer_thread_id); CloseHandle(timer_thread_lock); timer_thread_lock = 0; } return stopped; } +static void +native_reset_timer_thread(void) +{ + if (timer_thread_id) { + CloseHandle(timer_thread_id); + timer_thread_id = 0; + } +} + #endif /* THREAD_SYSTEM_DEPENDENT_IMPLEMENTATION */ diff --git a/time.c b/time.c index b12dbdcc52ed0a..8d64388090edc0 100644 --- a/time.c +++ b/time.c @@ -51,7 +51,7 @@ typedef unsigned LONG_LONG unsigned_time_t; VALUE rb_cTime; static VALUE time_utc_offset _((VALUE)); -static long obj2long(VALUE obj); +static int obj2int(VALUE obj); static VALUE obj2vint(VALUE obj); static int month_arg(VALUE arg); static void validate_utc_offset(VALUE utc_offset); @@ -381,7 +381,7 @@ gmtimexv_noleapsecond(VALUE timexv, struct vtm *vtm) /* 30 years including 7 leap days (1972, 1976, ... 1996), * 31 days in January 2000 and - * 29 days in Febrary 2000 + * 29 days in February 2000 * from 1970-01-01 to 2000-02-29 */ if (30*365+7+31+29-1 <= n) { /* 2000-02-29 or after */ @@ -456,7 +456,8 @@ gmtime_with_leapsecond(const time_t *timep, struct tm *result) /* 4.4BSD counts leap seconds only with localtime, not with gmtime. */ struct tm *t; int sign; - long gmtoff, gmtoff_sec, gmtoff_min, gmtoff_hour, gmtoff_day; + int gmtoff_sec, gmtoff_min, gmtoff_hour, gmtoff_day; + long gmtoff; t = localtime_r(timep, result); if (t == NULL) return NULL; @@ -470,11 +471,11 @@ gmtime_with_leapsecond(const time_t *timep, struct tm *result) sign = -1; gmtoff = t->tm_gmtoff; } - gmtoff_sec = gmtoff % 60; + gmtoff_sec = (int)(gmtoff % 60); gmtoff = gmtoff / 60; - gmtoff_min = gmtoff % 60; + gmtoff_min = (int)(gmtoff % 60); gmtoff = gmtoff / 60; - gmtoff_hour = gmtoff; + gmtoff_hour = (int)gmtoff; /* <= 12 */ gmtoff_sec *= sign; gmtoff_min *= sign; @@ -638,7 +639,7 @@ timegmxv(struct vtm *vtm) return add(timexv, rb_time_magnify(INT2NUM(number_of_leap_seconds_known))); } - tm.tm_year = NUM2LONG(vtm->year) - 1900; + tm.tm_year = rb_long2int(NUM2LONG(vtm->year) - 1900); tm.tm_mon = vtm->mon - 1; tm.tm_mday = vtm->mday; tm.tm_hour = vtm->hour; @@ -877,7 +878,7 @@ timelocalxv(struct vtm *vtm) long l = FIX2LONG(vtm->year) - 1900; if (l < INT_MIN || INT_MAX < l) goto no_localtime; - tm.tm_year = l; + tm.tm_year = (int)l; } else { v = sub(vtm->year, INT2FIX(1900)); @@ -1338,8 +1339,8 @@ utc_offset_arg(VALUE arg) !ISDIGIT(s[4]) || !ISDIGIT(s[5])) rb_raise(rb_eArgError, "\"+HH:MM\" or \"-HH:MM\" expected for utc_offset"); - n = strtol(s+1, NULL, 10) * 3600; - n += strtol(s+4, NULL, 10) * 60; + n = (s[1] * 10 + s[2] - '0' * 11) * 3600; + n += (s[4] * 10 + s[5] - '0' * 11) * 60; if (s[0] == '-') n = -n; return INT2FIX(n); @@ -1367,11 +1368,11 @@ time_init_1(int argc, VALUE *argv, VALUE time) vtm.mon = NIL_P(v[1]) ? 1 : month_arg(v[1]); - vtm.mday = NIL_P(v[2]) ? 1 : obj2long(v[2]); + vtm.mday = NIL_P(v[2]) ? 1 : obj2int(v[2]); - vtm.hour = NIL_P(v[3]) ? 0 : obj2long(v[3]); + vtm.hour = NIL_P(v[3]) ? 0 : obj2int(v[3]); - vtm.min = NIL_P(v[4]) ? 0 : obj2long(v[4]); + vtm.min = NIL_P(v[4]) ? 0 : obj2int(v[4]); vtm.sec = 0; vtm.subsecx = INT2FIX(0); @@ -1637,7 +1638,7 @@ time_timeval(VALUE num, int interval) struct timeval rb_time_interval(VALUE num) { - return time_timeval(num, Qtrue); + return time_timeval(num, TRUE); } struct timeval @@ -1654,7 +1655,7 @@ rb_time_timeval(VALUE time) t.tv_usec = (TYPEOF_TIMEVAL_TV_USEC)(ts.tv_nsec / 1000); return t; } - return time_timeval(time, Qfalse); + return time_timeval(time, FALSE); } struct timespec @@ -1668,7 +1669,7 @@ rb_time_timespec(VALUE time) t = timexv2timespec(tobj->timexv); return t; } - return time_timespec(time, Qfalse); + return time_timespec(time, FALSE); } /* @@ -1738,21 +1739,21 @@ static const char months[][4] = { "jul", "aug", "sep", "oct", "nov", "dec", }; -static long -obj2long(VALUE obj) +static int +obj2int(VALUE obj) { if (TYPE(obj) == T_STRING) { - obj = rb_str_to_inum(obj, 10, Qfalse); + obj = rb_str_to_inum(obj, 10, FALSE); } - return NUM2LONG(obj); + return NUM2INT(obj); } static VALUE obj2vint(VALUE obj) { if (TYPE(obj) == T_STRING) { - obj = rb_str_to_inum(obj, 10, Qfalse); + obj = rb_str_to_inum(obj, 10, FALSE); } else { obj = rb_to_int(obj); @@ -1761,27 +1762,27 @@ obj2vint(VALUE obj) return obj; } -static long +static int obj2subsecx(VALUE obj, VALUE *subsecx) { VALUE subsec; if (TYPE(obj) == T_STRING) { - obj = rb_str_to_inum(obj, 10, Qfalse); + obj = rb_str_to_inum(obj, 10, FALSE); *subsecx = INT2FIX(0); - return NUM2LONG(obj); + return NUM2INT(obj); } divmodv(num_exact(obj), INT2FIX(1), &obj, &subsec); *subsecx = rb_time_magnify(subsec); - return NUM2LONG(obj); + return NUM2INT(obj); } static long usec2subsecx(VALUE obj) { if (TYPE(obj) == T_STRING) { - obj = rb_str_to_inum(obj, 10, Qfalse); + obj = rb_str_to_inum(obj, 10, FALSE); } return mulquo(num_exact(obj), INT2FIX(TIME_SCALE), INT2FIX(1000000)); @@ -1806,12 +1807,12 @@ month_arg(VALUE arg) char c = RSTRING_PTR(s)[0]; if ('0' <= c && c <= '9') { - mon = obj2long(s); + mon = obj2int(s); } } } else { - mon = obj2long(arg); + mon = obj2int(arg); } return mon; } @@ -1886,15 +1887,15 @@ time_arg(int argc, VALUE *argv, struct vtm *vtm) vtm->mday = 1; } else { - vtm->mday = obj2long(v[2]); + vtm->mday = obj2int(v[2]); } - vtm->hour = NIL_P(v[3])?0:obj2long(v[3]); + vtm->hour = NIL_P(v[3])?0:obj2int(v[3]); - vtm->min = NIL_P(v[4])?0:obj2long(v[4]); + vtm->min = NIL_P(v[4])?0:obj2int(v[4]); if (!NIL_P(v[6]) && argc == 7) { - vtm->sec = NIL_P(v[5])?0:obj2long(v[5]); + vtm->sec = NIL_P(v[5])?0:obj2int(v[5]); vtm->subsecx = usec2subsecx(v[6]); } else { @@ -2308,7 +2309,7 @@ time_utc_or_local(int argc, VALUE *argv, int utc_p, VALUE klass) static VALUE time_s_mkutc(int argc, VALUE *argv, VALUE klass) { - return time_utc_or_local(argc, argv, Qtrue, klass); + return time_utc_or_local(argc, argv, TRUE, klass); } /* @@ -2339,7 +2340,7 @@ time_s_mkutc(int argc, VALUE *argv, VALUE klass) static VALUE time_s_mktime(int argc, VALUE *argv, VALUE klass) { - return time_utc_or_local(argc, argv, Qfalse, klass); + return time_utc_or_local(argc, argv, FALSE, klass); } /* @@ -2488,7 +2489,7 @@ time_subsec(VALUE time) /* * call-seq: - * time <=> other_time => -1, 0, +1 + * time <=> other_time => -1, 0, +1 or nil * * Comparison---Compares time with other_time. * @@ -2947,17 +2948,19 @@ time_minus(VALUE time1, VALUE time2) * time.succ => new_time * * Return a new time object, one second later than time. + * Time#succ is obsolete since 1.9.2 for time is not a discrete value. * * t = Time.now #=> 2007-11-19 08:23:57 -0600 * t.succ #=> 2007-11-19 08:23:58 -0600 */ -static VALUE -time_succ(VALUE time) +VALUE +rb_time_succ(VALUE time) { struct time_object *tobj; struct time_object *tobj2; + rb_warn("Time#succ is obsolete; use time + 1"); GetTimeval(time, tobj); time = time_new_timexv(rb_cTime, add(tobj->timexv, INT2FIX(TIME_SCALE))); GetTimeval(time, tobj2); @@ -2965,11 +2968,8 @@ time_succ(VALUE time) return time; } -VALUE -rb_time_succ(VALUE time) -{ - return time_succ(time); -} +#define time_succ rb_time_succ + /* * call-seq: @@ -3401,11 +3401,11 @@ rb_strftime(char *s, size_t maxsize, const char *format, int gmt); #define SMALLBUF 100 -static int +static size_t rb_strftime_alloc(char **buf, const char *format, struct vtm *vtm, VALUE timev, int gmt) { - int size, len, flen; + size_t size, len, flen; (*buf)[0] = '\0'; flen = strlen(format); @@ -3426,10 +3426,10 @@ rb_strftime_alloc(char **buf, const char *format, * if the buffer is 1024 times bigger than the length of the * format string, it's not failing for lack of room. */ - if (len > 0 || size >= 1024 * flen) return len; + if (len > 0 || size >= 1024 * flen) break; xfree(*buf); } - /* not reached */ + return len; } static VALUE @@ -3554,7 +3554,7 @@ time_strftime(VALUE time, VALUE format) } else { len = rb_strftime_alloc(&buf, RSTRING_PTR(format), - &tobj->vtm, rb_time_unmagnify(tobj->timexv), TIME_UTC_P(tobj)); + &tobj->vtm, rb_time_unmagnify(tobj->timexv), TIME_UTC_P(tobj)); } str = rb_str_new(buf, len); if (buf != buffer) xfree(buf); @@ -3587,7 +3587,7 @@ time_mdump(VALUE time) if (FIXNUM_P(vtm.year)) { year = FIX2LONG(vtm.year); if (year < 1900 || 1900+0xffff < year) - rb_raise(rb_eArgError, "year too big to marshal: %ld", year); + rb_raise(rb_eArgError, "year too big to marshal: %ld UTC", year); } else { rb_raise(rb_eArgError, "year too big to marshal"); @@ -3630,16 +3630,16 @@ time_mdump(VALUE time) * However it can be longer. * Extra digits are ignored for loading. */ - unsigned char buf[2]; - int len = sizeof(buf); - buf[1] = (nsec % 10) << 4; + char buf[2]; + int len = (int)sizeof(buf); + buf[1] = (char)((nsec % 10) << 4); nsec /= 10; - buf[0] = nsec % 10; + buf[0] = (char)(nsec % 10); nsec /= 10; - buf[0] |= (nsec % 10) << 4; + buf[0] |= (char)((nsec % 10) << 4); if (buf[1] == 0) len = 1; - rb_ivar_set(str, id_submicro, rb_str_new((char *)buf, len)); + rb_ivar_set(str, id_submicro, rb_str_new(buf, len)); } if (!rb_equal(subnano, INT2FIX(0))) { rb_ivar_set(str, id_subnano, subnano); @@ -3717,14 +3717,14 @@ time_mload(VALUE time, VALUE str) } else { p &= ~(1UL<<31); - gmt = (p >> 30) & 0x1; - - vtm.year = INT2FIX(((p >> 14) & 0xffff) + 1900); - vtm.mon = ((p >> 10) & 0xf) + 1; - vtm.mday = (p >> 5) & 0x1f; - vtm.hour = p & 0x1f; - vtm.min = (s >> 26) & 0x3f; - vtm.sec = (s >> 20) & 0x3f; + gmt = (int)((p >> 30) & 0x1); + + vtm.year = INT2FIX(((int)(p >> 14) & 0xffff) + 1900); + vtm.mon = ((int)(p >> 10) & 0xf) + 1; + vtm.mday = (int)(p >> 5) & 0x1f; + vtm.hour = (int) p & 0x1f; + vtm.min = (int)(s >> 26) & 0x3f; + vtm.sec = (int)(s >> 20) & 0x3f; vtm.utc_offset = INT2FIX(0); vtm.yday = vtm.wday = 0; vtm.isdst = 0; diff --git a/tool/config.guess b/tool/config.guess index 5186e37f4495ed..da8331460888af 100755 --- a/tool/config.guess +++ b/tool/config.guess @@ -4,7 +4,7 @@ # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. -timestamp='2008-08-10' +timestamp='2009-04-27' # 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 @@ -324,6 +324,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in 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 ;; @@ -331,7 +334,20 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + 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 @@ -796,7 +812,7 @@ EOF x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; - EM64T | authenticamd) + EM64T | authenticamd | genuineintel) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) @@ -935,6 +951,9 @@ EOF if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-gnu + exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in @@ -985,9 +1004,6 @@ EOF a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. @@ -1102,8 +1118,11 @@ EOF 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 i386. - echo i386-pc-msdosdjgpp + # 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 @@ -1141,6 +1160,16 @@ EOF 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 ;; @@ -1216,10 +1245,7 @@ EOF BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; - BeMac:Haiku:*:*) - echo powerpc-apple-haiku - exit ;; - BePC:Haiku:*:*) + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; SX-4:SUPER-UX:*:*) @@ -1330,6 +1356,9 @@ EOF i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 @@ -1490,9 +1519,9 @@ This script, last modified $timestamp, has failed to recognize the operating system you are using. It is advised that you download the most up to date version of the config scripts from - http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD and - http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD If the version you run ($0) is already up to date, please send the following data and any information you think might be diff --git a/tool/config.sub b/tool/config.sub index 6759825a5b7fcf..a39437d0158ed7 100755 --- a/tool/config.sub +++ b/tool/config.sub @@ -4,7 +4,7 @@ # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. -timestamp='2008-01-16' +timestamp='2009-04-17' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -122,6 +122,7 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` @@ -249,13 +250,16 @@ case $basic_machine in | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ + | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore | mep \ + | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ - | mips64vr | mips64vrel \ + | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ @@ -268,6 +272,7 @@ case $basic_machine in | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ + | moxie \ | mt \ | msp430 \ | nios | nios2 \ @@ -277,7 +282,7 @@ case $basic_machine in | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | score \ - | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | 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 \ @@ -286,7 +291,7 @@ case $basic_machine in | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ - | z8k) + | z8k | z80) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) @@ -329,14 +334,17 @@ case $basic_machine in | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ + | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ - | mips64vr-* | mips64vrel-* \ + | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ @@ -358,20 +366,20 @@ case $basic_machine in | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | 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-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ - | z8k-*) + | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) @@ -439,6 +447,10 @@ case $basic_machine in basic_machine=m68k-apollo os=-bsd ;; + aros) + basic_machine=i386-pc + os=-aros + ;; aux) basic_machine=m68k-apple os=-aux @@ -459,6 +471,10 @@ case $basic_machine in basic_machine=c90-cray os=-unicos ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; convex-c1) basic_machine=c1-convex os=-bsd @@ -526,6 +542,10 @@ case $basic_machine in basic_machine=m88k-motorola os=-sysv3 ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp @@ -1128,6 +1148,10 @@ case $basic_machine in basic_machine=z8k-unknown os=-sim ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; none) basic_machine=none-none os=-none @@ -1166,7 +1190,7 @@ case $basic_machine in we32k) basic_machine=we32k-att ;; - sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) + 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) @@ -1238,8 +1262,9 @@ case $os in -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ + | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ @@ -1248,7 +1273,7 @@ case $os in | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ + | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ @@ -1388,6 +1413,9 @@ case $os in -zvmoe) os=-zvmoe ;; + -dicos*) + os=-dicos + ;; -none) ;; *) diff --git a/tool/enc-unicode.rb b/tool/enc-unicode.rb index 8429bcc1787534..b7f5bb57e7d442 100755 --- a/tool/enc-unicode.rb +++ b/tool/enc-unicode.rb @@ -2,9 +2,16 @@ # Creates the data structures needed by Onigurma to map Unicode codepoints to # property names and POSIX character classes - -unless ARGV.size == 2 - $stderr.puts "Usage: #{$0} UnicodeData.txt Scripts.txt" +# +# To use this, get UnicodeData.txt, Scripts.txt, PropList.txt from unicode.org. +# (http://unicode.org/Public/UNIDATA/) +# And run following command. +# ruby1.9 tool/enc-unicode.rb data_dir > enc/unicode/name2ctype.kwd +# You can get source file for gperf. +# After this, simply make ruby. + +unless ARGV.size == 1 + $stderr.puts "Usage: #{$0} data_directory" exit(1) end @@ -17,10 +24,11 @@ def pair_codepoints(codepoints) # codepoints with property _property_. Note: It is intended that some ranges # will begin with the value with which they end, e.g. 0x0020 -> 0x0020 - codepoints = codepoints.uniq.sort + codepoints.sort! last_cp = codepoints.first pairs = [[last_cp, nil]] codepoints[1..-1].each do |codepoint| + next if last_cp == codepoint # If the current codepoint does not follow directly on from the last # codepoint, the last codepoint represents the end of the current range, @@ -39,176 +47,193 @@ def pair_codepoints(codepoints) def parse_unicode_data(file) last_cp = 0 - data = {'Cn' => []} + data = {'Any' => (0x0000..0x10ffff).to_a, 'Assigned' => [], + 'ASCII' => (0..0x007F).to_a, 'NEWLINE' => [0x0a], 'Cn' => []} + beg_cp = nil IO.foreach(file) do |line| fields = line.split(';') cp = fields[0].to_i(16) + case fields[1] + when /\A<(.*),\s*First>\z/ + beg_cp = cp + next + when /\A<(.*),\s*Last>\z/ + cps = (beg_cp..cp).to_a + else + beg_cp = cp + cps = [cp] + end + # The Cn category represents unassigned characters. These are not listed in # UnicodeData.txt so we must derive them by looking for 'holes' in the range # of listed codepoints. We increment the last codepoint seen and compare it # with the current codepoint. If the current codepoint is less than # last_cp.next we have found a hole, so we add the missing codepoint to the # Cn category. - while ((last_cp = last_cp.next) < cp) - data['Cn'] << last_cp - end + data['Cn'].concat((last_cp.next...beg_cp).to_a) + + # Assigned - Defined in unicode.c; interpreted as every character in the + # Unicode range minus the unassigned characters + data['Assigned'].concat(cps) # The third field denotes the 'General' category, e.g. Lu - (data[fields[2]] ||= []) << cp + (data[fields[2]] ||= []).concat(cps) # The 'Major' category is the first letter of the 'General' category, e.g. # 'Lu' -> 'L' - (data[fields[2][0,1]] ||= []) << cp + (data[fields[2][0,1]] ||= []).concat(cps) last_cp = cp end - # General Category property - gcps = %w[Any Assigned] - gcps.concat data.keys.sort - # The last Cn codepoint should be 0x10ffff. If it's not, append the missing # codepoints to Cn and C - cn_remainder = (data['Cn'].last.next..0x10ffff).to_a + cn_remainder = (last_cp.next..0x10ffff).to_a data['Cn'] += cn_remainder data['C'] += cn_remainder - # We now derive the character classes (POSIX brackets), e.g. [[:alpha:]] - # - - # alnum Letter | Mark | Decimal_Number - data['Alnum'] = data['L'] + data['M'] + data['Nd'] - - # alpha Letter | Mark - data['Alpha'] = data['L'] + data['M'] - - # ascii 0000 - 007F - data['ASCII'] = (0..0x007F).to_a - - # blank Space_Separator | 0009 - data['Blank'] = data['Zs'] + [0x0009] - - # cntrl Control - data['Cntrl'] = data['Cc'] + # Define General Category properties + gcps = data.keys.sort - POSIX_NAMES - # digit Decimal_Number - data['Digit'] = data['Nd'] - - # lower Lowercase_Letter - data['Lower'] = data['Ll'] - - # punct Connector_Punctuation | Dash_Punctuation | Close_Punctuation | - # Final_Punctuation | Initial_Punctuation | Other_Punctuation | - # Open_Punctuation - # NOTE: This definition encompasses the entire P category, and the current - # mappings agree, but we explcitly declare this way to marry it with the above - # definition. - data['Punct'] = data['Pc'] + data['Pd'] + data['Pe'] + data['Pf'] + - data['Pi'] + data['Po'] + data['Ps'] - - # space Space_Separator | Line_Separator | Paragraph_Separator | - # 0009 | 000A | 000B | 000C | 000D | 0085 - data['Space'] = data['Zs'] + data['Zl'] + data['Zp'] + - [0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x0085] + # Returns General Category Property names and the data + [gcps, data] +end - # upper Uppercase_Letter - data['Upper'] = data['Lu'] +def define_posix_props(data) + # We now derive the character classes (POSIX brackets), e.g. [[:alpha:]] + # - # xdigit 0030 - 0039 | 0041 - 0046 | 0061 - 0066 - # (0-9, a-f, A-F) + data['Alpha'] = data['Alphabetic'] + data['Upper'] = data['Uppercase'] + data['Lower'] = data['Lowercase'] + data['Punct'] = data['Punctuation'] + data['Digit'] = data['Decimal_Number'] data['XDigit'] = (0x0030..0x0039).to_a + (0x0041..0x0046).to_a + (0x0061..0x0066).to_a - - # word Letter | Mark | Decimal_Number | Connector_Punctuation - data['Word'] = data['L'] + data['M'] + data['Nd'] + data['Pc'] - - # graph [[:^space:]] && ^Control && ^Unassigned && ^Surrogate - data['Graph'] = data['L'] + data['M'] + data['N'] + data['P'] + data['S'] - data['Graph'] -= data['Space'] - data['C'] - - # print [[:graph:]] | [[:space:]] - data['Print'] = data['Graph'] + data['Space'] - - # NEWLINE - This was defined in unicode.c - data['NEWLINE'] = [0x000a] - - # Any - Defined in unicode.c - data['Any'] = (0x0000..0x10ffff).to_a - - # Assigned - Defined in unicode.c; interpreted as every character in the - # Unicode range minus the unassigned characters - data['Assigned'] = data['Any'] - data['Cn'] - - # Returns General Category Property names and the data - [gcps, data] + data['Alnum'] = data['Alpha'] + data['Digit'] + data['Space'] = data['White_Space'] + data['Blank'] = data['White_Space'] - [0x0A, 0x0B, 0x0C, 0x0D, 0x85] - + data['Line_Separator'] - data['Paragraph_Separator'] + data['Cntrl'] = data['Cc'] + data['Word'] = data['Alpha'] + data['Mark'] + data['Digit'] + data['Connector_Punctuation'] + data['Graph'] = data['Any'] - data['Space'] - data['Cntrl'] - + data['Surrogate'] - data['Unassigned'] + data['Print'] = data['Graph'] + data['Blank'] - data['Cntrl'] end - -def parse_scripts(file) - script = nil - data = [] +def parse_scripts(data) + files = [ + {fn: 'DerivedCoreProperties.txt', title: 'Derived Property'}, + {fn: 'Scripts.txt', title: 'Script'}, + {fn: 'PropList.txt', title: 'Binary Property'} + ] + current = nil + cps = [] names = [] - IO.foreach(file) do |line| - if /^# Total code points: / =~ line - make_const(script, pair_codepoints(data), 'Script') - names << script - data = [] - elsif /^([[:xdigit:]]+)(?:..([[:xdigit:]]+))?\s*;\s*(\w+)/ =~ line - script = $3 - $2 ? data.concat(($1.to_i(16)..$2.to_i(16)).to_a) : data.push($1.to_i(16)) + files.each do |file| + IO.foreach(get_file(file[:fn])) do |line| + if /^# Total code points: / =~ line + data[current] = cps + make_const(current, cps, file[:title]) + names << current + cps = [] + elsif /^(\h+)(?:..(\h+))?\s*;\s*(\w+)/ =~ line + current = $3 + $2 ? cps.concat(($1.to_i(16)..$2.to_i(16)).to_a) : cps.push($1.to_i(16)) + end end end names end +def parse_aliases(data) + kv = {} + IO.foreach(get_file('PropertyAliases.txt')) do |line| + next unless /^(\w+)\s*; (\w+)/ =~ line + data[$1] = data[$2] + kv[normalize_propname($1)] = normalize_propname($2) + end + IO.foreach(get_file('PropertyValueAliases.txt')) do |line| + next unless /^(sc|gc)\s*; (\w+)\s*; (\w+)(?:\s*; (\w+))?/ =~ line + if $1 == 'gc' + data[$3] = data[$2] + data[$4] = data[$2] + kv[normalize_propname($3)] = normalize_propname($2) + kv[normalize_propname($4)] = normalize_propname($2) if $4 + else + data[$2] = data[$3] + data[$4] = data[$3] + kv[normalize_propname($2)] = normalize_propname($3) + kv[normalize_propname($4)] = normalize_propname($3) if $4 + end + end + kv +end + +$const_cache = {} # make_const(property, pairs, name): Prints a 'static const' structure for a # given property, group of paired codepoints, and a human-friendly name for # the group -def make_const(prop, pairs, name) +def make_const(prop, data, name) puts "\n/* '#{prop}': #{name} */" - puts "static const OnigCodePoint CR_#{prop}[] = {" - # The first element of the constant is the number of pairs of codepoints - puts "\t#{pairs.size}," - pairs.each do |pair| - pair.map! { |c| c == 0 ? '0x0000' : sprintf("%0#6x", c) } - puts "\t#{pair.first}, #{pair.last}," + if origprop = $const_cache.key(data) + puts "#define CR_#{prop} CR_#{origprop}" + else + $const_cache[prop] = data + pairs = pair_codepoints(data) + puts "static const OnigCodePoint CR_#{prop}[] = {" + # The first element of the constant is the number of pairs of codepoints + puts "\t#{pairs.size}," + pairs.each do |pair| + pair.map! { |c| c == 0 ? '0x0000' : sprintf("%0#6x", c) } + puts "\t#{pair.first}, #{pair.last}," + end + puts "}; /* CR_#{prop} */" end - puts "}; /* CR_#{prop} */" end def normalize_propname(name) name = name.downcase - name.gsub!(/[- _]/, '') + name.delete!('- _') name end -puts '%{' -gcps, data = parse_unicode_data(ARGV[0]) -POSIX_NAMES.each do |name| - make_const(name, pair_codepoints(data[name]), "[[:#{name}:]]") +def get_file(name) + File.join(ARGV[0], name) end + + +# Write Data +puts '%{' +props, data = parse_unicode_data(get_file('UnicodeData.txt')) print "\n#ifdef USE_UNICODE_PROPERTIES" -gcps.each do |name| +props.each do |name| category = case name.size when 1 then 'Major Category' when 2 then 'General Category' else '-' end - make_const(name, pair_codepoints(data[name]), category) + make_const(name, data[name], category) end -scripts = parse_scripts(ARGV[1]) -puts "#endif /* USE_UNICODE_PROPERTIES */" +props.concat parse_scripts(data) +puts '#endif /* USE_UNICODE_PROPERTIES */' +aliases = parse_aliases(data) +define_posix_props(data) +POSIX_NAMES.each do |name| + make_const(name, data[name], "[[:#{name}:]]") +end +puts(<<'__HEREDOC') -puts "\n\nstatic const OnigCodePoint* const CodeRanges[] = {" +static const OnigCodePoint* const CodeRanges[] = { +__HEREDOC POSIX_NAMES.each{|name|puts" CR_#{name},"} puts "#ifdef USE_UNICODE_PROPERTIES" -gcps.each{|name|puts" CR_#{name},"} -scripts.each{|name|puts" CR_#{name},"} -puts "#endif /* USE_UNICODE_PROPERTIES */" -puts "};" +props.each{|name|puts" CR_#{name},"} puts(<<'__HEREDOC') +#endif /* USE_UNICODE_PROPERTIES */ +}; struct uniname2ctype_struct { int name, ctype; }; @@ -219,12 +244,27 @@ def normalize_propname(name) %% __HEREDOC i = -1 -POSIX_NAMES.each {|name|puts"%-21s %3d" % [normalize_propname(name)+',', i+=1]} +name_to_index = {} +POSIX_NAMES.each do |name| + i += 1 + name = normalize_propname(name) + name_to_index[name] = i + puts"%-40s %3d" % [name + ',', i] +end puts "#ifdef USE_UNICODE_PROPERTIES" -gcps.each{|name|puts"%-21s %3d" % [normalize_propname(name)+',', i+=1]} -scripts.each{|name|puts"%-21s %3d" % [normalize_propname(name)+',', i+=1]} -puts "#endif /* USE_UNICODE_PROPERTIES */\n" +props.each do |name| + i += 1 + name = normalize_propname(name) + name_to_index[name] = i + puts "%-40s %3d" % [name + ',', i] +end +aliases.each_pair do |k, v| + next if name_to_index[k] + next unless v = name_to_index[v] + puts "%-40s %3d" % [k + ',', v] +end puts(<<'__HEREDOC') +#endif /* USE_UNICODE_PROPERTIES */ %% static int uniname2ctype(const UChar *name, unsigned int len) diff --git a/tool/instruction.rb b/tool/instruction.rb index 088505d638fd6e..a82ac2ccc031ad 100755 --- a/tool/instruction.rb +++ b/tool/instruction.rb @@ -63,12 +63,12 @@ def sp_increase_c_expr rets.any?{|t, v| v == '...'}) # user definision raise "no sp increase definition" if @sp_inc.nil? - ret = "rb_num_t inc = 0;\n" + ret = "int inc = 0;\n" @opes.each_with_index{|(t, v), i| if t == 'rb_num_t' && ((re = /\b#{v}\b/n) =~ @sp_inc || @defopes.any?{|t, val| re =~ val}) - ret << " #{t} #{v} = FIX2INT(opes[#{i}]);\n" + ret << " int #{v} = FIX2INT(opes[#{i}]);\n" end } @defopes.each_with_index{|((t, var), val), i| @@ -317,10 +317,10 @@ def add_opt_operand insn_name, opts defv << [opes[i], e] } - make_insn_operand_optimiized(insn, ninsn, nopes, defv) + make_insn_operand_optimized(insn, ninsn, nopes, defv) end - def make_insn_operand_optimiized orig_insn, name, opes, defopes + def make_insn_operand_optimized orig_insn, name, opes, defopes comm = orig_insn.comm.dup comm[:c] = 'optimize' add_insn insn = Instruction.new( @@ -684,6 +684,9 @@ def make_header_prepare_stack insn push_ba = insn.pushsc raise "unsupport" if push_ba[0].size > 0 && push_ba[1].size > 0 + n = 0 + push_ba.each {|pushs| n += pushs.length} + commit " CHECK_STACK_OVERFLOW(REG_CFP, #{n});" if n > 0 push_ba.each{|pushs| pushs.each{|r| commit " PUSH(SCREG(#{r}));" @@ -816,13 +819,22 @@ def make_header_defines insn commit " #define LABEL_IS_SC(lab) LABEL_##lab##_###{insn.sc.size == 0 ? 't' : 'f'}" end + def each_footer_stack_val insn + insn.rets.reverse_each{|v| + break if v[1] == '...' + yield v + } + end + def make_footer_stack_val insn comment " /* push stack val */" - insn.rets.reverse_each{|v| - if v[1] == '...' - break - end + n = 0 + each_footer_stack_val(insn){|v| + n += 1 unless v[2] + } + commit " CHECK_STACK_OVERFLOW(REG_CFP, #{n});" if n > 0 + each_footer_stack_val(insn){|v| if v[2] commit " SCREG(#{v[2]}) = #{v[1]};" else diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb index 9607539a4d390c..4263cdaced41ef 100755 --- a/tool/rbinstall.rb +++ b/tool/rbinstall.rb @@ -1,8 +1,13 @@ #!./miniruby -load "./rbconfig.rb" -include RbConfig -$".unshift File.expand_path("./rbconfig.rb") +begin + load "./rbconfig.rb" +rescue LoadError + CONFIG = Hash.new {""} +else + include RbConfig + $".unshift File.expand_path("./rbconfig.rb") +end srcdir = File.expand_path('../..', __FILE__) unless defined?(CROSS_COMPILING) and CROSS_COMPILING @@ -35,7 +40,7 @@ def parse_args(argv = ARGV) $cmdtype = ('bat' if File::ALT_SEPARATOR == '\\') mflags = [] opt = OptionParser.new - opt.on('-n') {$dryrun = true} + opt.on('-n', '--dry-run') {$dryrun = true} opt.on('--dest-dir=DIR') {|dir| $destdir = dir} opt.on('--extout=DIR') {|dir| $extout = (dir unless dir.empty?)} opt.on('--make=COMMAND') {|make| $make = make} @@ -46,8 +51,7 @@ def parse_args(argv = ARGV) end $mflags.concat(v) end - opt.on('-i', '--install=TYPE', - [:local, :bin, :"bin-arch", :"bin-comm", :lib, :man, :ext, :"ext-arch", :"ext-comm", :rdoc, :capi]) do |ins| + opt.on('-i', '--install=TYPE', $install_procs.keys) do |ins| $install << ins end opt.on('--data-mode=OCTAL-MODE', OptionParser::OctalInteger) do |mode| @@ -78,7 +82,12 @@ def parse_args(argv = ARGV) else raise OptionParser::InvalidArgument, v end - end rescue abort [$!.message, opt].join("\n") + end rescue abort "#{$!.message}\n#{opt.help}" + + unless defined?(RbConfig) + puts opt.help + exit + end $make, *rest = Shellwords.shellwords($make) $mflags.unshift(*rest) unless rest.empty? @@ -118,13 +127,6 @@ def $mflags.defined?(var) $script_mode ||= $prog_mode end -parse_args() - -include FileUtils -include FileUtils::NoWrite if $dryrun -@fileutils_output = STDOUT -@fileutils_label = '' - $install_procs = Hash.new {[]} def install?(*types, &block) $install_procs[:all] <<= block @@ -282,7 +284,6 @@ def prepare(mesg, basedir, subdirs=nil) rubyw_install_name = CONFIG["rubyw_install_name"] goruby_install_name = "go" + ruby_install_name -version = CONFIG["ruby_version"] bindir = CONFIG["bindir"] libdir = CONFIG["libdir"] archhdrdir = rubyhdrdir = CONFIG["rubyhdrdir"] @@ -336,30 +337,27 @@ def prepare(mesg, basedir, subdirs=nil) end end -if $extout - extout = "#$extout" - install?(:ext, :arch, :'ext-arch') do - prepare "extension objects", archlibdir - noinst = %w[-*] | (CONFIG["no_install_files"] || "").split - install_recursive("#{extout}/#{CONFIG['arch']}", archlibdir, :no_install => noinst, :mode => $prog_mode, :strip => $strip) - prepare "extension objects", sitearchlibdir - prepare "extension objects", vendorarchlibdir - end - install?(:ext, :arch, :'ext-arch') do - prepare "extension headers", archhdrdir - install_recursive("#{extout}/include/#{CONFIG['arch']}", archhdrdir, :glob => "*.h", :mode => $data_mode) - end - install?(:ext, :comm, :'ext-comm') do - prepare "extension scripts", rubylibdir - install_recursive("#{extout}/common", rubylibdir, :mode => $data_mode) - prepare "extension scripts", sitelibdir - prepare "extension scripts", vendorlibdir - end - install?(:ext, :comm, :'ext-comm') do - hdrdir = rubyhdrdir + "/ruby" - prepare "extension headers", hdrdir - install_recursive("#{extout}/include/ruby", hdrdir, :glob => "*.h", :mode => $data_mode) - end +install?(:ext, :arch, :'ext-arch') do + prepare "extension objects", archlibdir + noinst = %w[-*] | (CONFIG["no_install_files"] || "").split + install_recursive("#{$extout}/#{CONFIG['arch']}", archlibdir, :no_install => noinst, :mode => $prog_mode, :strip => $strip) + prepare "extension objects", sitearchlibdir + prepare "extension objects", vendorarchlibdir +end +install?(:ext, :arch, :'ext-arch') do + prepare "extension headers", archhdrdir + install_recursive("#{$extout}/include/#{CONFIG['arch']}", archhdrdir, :glob => "*.h", :mode => $data_mode) +end +install?(:ext, :comm, :'ext-comm') do + prepare "extension scripts", rubylibdir + install_recursive("#{$extout}/common", rubylibdir, :mode => $data_mode) + prepare "extension scripts", sitelibdir + prepare "extension scripts", vendorlibdir +end +install?(:ext, :comm, :'ext-comm') do + hdrdir = rubyhdrdir + "/ruby" + prepare "extension headers", hdrdir + install_recursive("#{$extout}/include/ruby", hdrdir, :glob => "*.h", :mode => $data_mode) end install?(:doc, :rdoc) do @@ -533,6 +531,13 @@ def prepare(mesg, basedir, subdirs=nil) end end +parse_args() + +include FileUtils +include FileUtils::NoWrite if $dryrun +@fileutils_output = STDOUT +@fileutils_label = '' + $install << :local << :ext if $install.empty? $install.each do |inst| if !(procs = $install_procs[inst]) || procs.empty? diff --git a/tool/transcode-tblgen.rb b/tool/transcode-tblgen.rb index a4bd766c2e0893..19d4fe0927effc 100755 --- a/tool/transcode-tblgen.rb +++ b/tool/transcode-tblgen.rb @@ -670,7 +670,7 @@ def transcode_generated_code "\#define TRANSCODE_TABLE_INFO " + "#{OUTPUT_PREFIX}byte_array, #{TRANSCODE_GENERATED_BYTES_CODE.length}, " + "#{OUTPUT_PREFIX}word_array, #{TRANSCODE_GENERATED_WORDS_CODE.length}, " + - "sizeof(unsigned int)\n" + + "((int)sizeof(unsigned int))\n" + TRANSCODE_GENERATED_TRANSCODER_CODE end diff --git a/transcode.c b/transcode.c index bc67d3ed08480b..b45d2397ab12d3 100644 --- a/transcode.c +++ b/transcode.c @@ -55,15 +55,15 @@ typedef struct rb_transcoding { unsigned char next_byte; unsigned int output_index; - int recognized_len; /* already interpreted */ - int readagain_len; /* not yet interpreted */ + ssize_t recognized_len; /* already interpreted */ + ssize_t readagain_len; /* not yet interpreted */ union { unsigned char ary[8]; /* max_input <= sizeof(ary) */ unsigned char *ptr; /* length: max_input */ } readbuf; /* recognized_len + readagain_len used */ - int writebuf_off; - int writebuf_len; + ssize_t writebuf_off; + ssize_t writebuf_len; union { unsigned char ary[8]; /* max_output <= sizeof(ary) */ unsigned char *ptr; /* length: max_output */ @@ -76,20 +76,20 @@ typedef struct rb_transcoding { } state; } rb_transcoding; #define TRANSCODING_READBUF(tc) \ - ((tc)->transcoder->max_input <= sizeof((tc)->readbuf.ary) ? \ + ((tc)->transcoder->max_input <= (int)sizeof((tc)->readbuf.ary) ? \ (tc)->readbuf.ary : \ (tc)->readbuf.ptr) #define TRANSCODING_WRITEBUF(tc) \ - ((tc)->transcoder->max_output <= sizeof((tc)->writebuf.ary) ? \ + ((tc)->transcoder->max_output <= (int)sizeof((tc)->writebuf.ary) ? \ (tc)->writebuf.ary : \ (tc)->writebuf.ptr) #define TRANSCODING_WRITEBUF_SIZE(tc) \ - ((tc)->transcoder->max_output <= sizeof((tc)->writebuf.ary) ? \ + ((tc)->transcoder->max_output <= (int)sizeof((tc)->writebuf.ary) ? \ sizeof((tc)->writebuf.ary) : \ (size_t)(tc)->transcoder->max_output) -#define TRANSCODING_STATE_EMBED_MAX sizeof(union rb_transcoding_state_t) +#define TRANSCODING_STATE_EMBED_MAX ((int)sizeof(union rb_transcoding_state_t)) #define TRANSCODING_STATE(tc) \ - ((tc)->transcoder->state_size <= sizeof((tc)->state) ? \ + ((tc)->transcoder->state_size <= (int)sizeof((tc)->state) ? \ (tc)->state.ary : \ (tc)->state.ptr) @@ -362,7 +362,7 @@ load_transcoder_entry(transcoder_entry_t *entry) if (entry->lib) { const char *lib = entry->lib; - int len = strlen(lib); + size_t len = strlen(lib); char path[sizeof(transcoder_lib_prefix) + MAX_TRANSCODER_LIBNAME_LEN]; entry->lib = NULL; @@ -428,7 +428,7 @@ transcode_restartable0(const unsigned char **in_pos, unsigned char **out_pos, { const rb_transcoder *tr = tc->transcoder; int unitlen = tr->input_unit_length; - int readagain_len = 0; + ssize_t readagain_len = 0; const unsigned char *inchar_start; const unsigned char *in_p; @@ -563,7 +563,7 @@ transcode_restartable0(const unsigned char **in_pos, unsigned char **out_pos, SUSPEND(econv_source_buffer_empty, 5); } next_byte = (unsigned char)*in_p++; - next_table = next_info; + next_table = (unsigned int)next_info; goto follow_byte; case ZERObt: /* drop input */ continue; @@ -665,8 +665,8 @@ transcode_restartable0(const unsigned char **in_pos, unsigned char **out_pos, } } else { - int invalid_len; /* including the last byte which causes invalid */ - int discard_len; + ssize_t invalid_len; /* including the last byte which causes invalid */ + ssize_t discard_len; invalid_len = tc->recognized_len + (in_p - inchar_start); discard_len = ((invalid_len - 1) / unitlen) * unitlen; readagain_len = invalid_len - discard_len; @@ -674,6 +674,8 @@ transcode_restartable0(const unsigned char **in_pos, unsigned char **out_pos, goto invalid; case UNDEF: goto undef; + default: + rb_raise(rb_eRuntimeError, "unknown transcoding instruction"); } continue; @@ -761,10 +763,10 @@ rb_transcoding_open_by_transcoder(const rb_transcoder *tr, int flags) tc->readagain_len = 0; tc->writebuf_len = 0; tc->writebuf_off = 0; - if (sizeof(tc->readbuf.ary) < tr->max_input) { + if ((int)sizeof(tc->readbuf.ary) < tr->max_input) { tc->readbuf.ptr = xmalloc(tr->max_input); } - if (sizeof(tc->writebuf.ary) < tr->max_output) { + if ((int)sizeof(tc->writebuf.ary) < tr->max_output) { tc->writebuf.ptr = xmalloc(tr->max_output); } return tc; @@ -791,9 +793,9 @@ rb_transcoding_close(rb_transcoding *tc) } if (TRANSCODING_STATE_EMBED_MAX < tr->state_size) xfree(tc->state.ptr); - if (sizeof(tc->readbuf.ary) < tr->max_input) + if ((int)sizeof(tc->readbuf.ary) < tr->max_input) xfree(tc->readbuf.ptr); - if (sizeof(tc->writebuf.ary) < tr->max_output) + if ((int)sizeof(tc->writebuf.ary) < tr->max_output) xfree(tc->writebuf.ptr); xfree(tc); } @@ -807,10 +809,10 @@ rb_transcoding_memsize(rb_transcoding *tc) if (TRANSCODING_STATE_EMBED_MAX < tr->state_size) { size += tr->state_size; } - if (sizeof(tc->readbuf.ary) < tr->max_input) { + if ((int)sizeof(tc->readbuf.ary) < tr->max_input) { size += tr->max_input; } - if (sizeof(tc->writebuf.ary) < tr->max_output) { + if ((int)sizeof(tc->writebuf.ary) < tr->max_output) { size += tr->max_output; } return size; @@ -1091,8 +1093,8 @@ trans_sweep(rb_econv_t *ec, } else { if (te->out_buf_start != te->out_data_start) { - int len = te->out_data_end - te->out_data_start; - int off = te->out_data_start - te->out_buf_start; + ssize_t len = te->out_data_end - te->out_data_start; + ssize_t off = te->out_data_start - te->out_buf_start; MEMMOVE(te->out_buf_start, te->out_data_start, unsigned char, len); te->out_data_start = te->out_buf_start; te->out_data_end -= off; @@ -1708,7 +1710,10 @@ rb_econv_putbackable(rb_econv_t *ec) { if (ec->num_trans == 0) return 0; - return ec->elems[0].tc->readagain_len; +#if SIZEOF_SIZE_T > SIZEOF_INT + if (ec->elems[0].tc->readagain_len > INT_MAX) return INT_MAX; +#endif + return (int)ec->elems[0].tc->readagain_len; } void @@ -2113,7 +2118,7 @@ make_econv_exception(rb_econv_t *ec) static void more_output_buffer( VALUE destination, - unsigned char *(*resize_destination)(VALUE, int, int), + unsigned char *(*resize_destination)(VALUE, size_t, size_t), int max_output, unsigned char **out_start_ptr, unsigned char **out_pos, @@ -2213,7 +2218,7 @@ static void transcode_loop(const unsigned char **in_pos, unsigned char **out_pos, const unsigned char *in_stop, unsigned char *out_stop, VALUE destination, - unsigned char *(*resize_destination)(VALUE, int, int), + unsigned char *(*resize_destination)(VALUE, size_t, size_t), const char *src_encoding, const char *dst_encoding, int ecflags, @@ -2258,7 +2263,7 @@ static void transcode_loop(const unsigned char **in_pos, unsigned char **out_pos, const unsigned char *in_stop, unsigned char *out_stop, VALUE destination, - unsigned char *(*resize_destination)(VALUE, int, int), + unsigned char *(*resize_destination)(VALUE, size_t, size_t), const char *src_encoding, const char *dst_encoding, int ecflags, @@ -2331,7 +2336,7 @@ transcode_loop(const unsigned char **in_pos, unsigned char **out_pos, */ static unsigned char * -str_transcoding_resize(VALUE destination, int len, int new_len) +str_transcoding_resize(VALUE destination, size_t len, size_t new_len) { rb_str_resize(destination, new_len); return (unsigned char *)RSTRING_PTR(destination); @@ -2893,7 +2898,7 @@ decorate_convpath(VALUE convpath, int ecflags) if (num_decorators == -1) return -1; - len = n = RARRAY_LEN(convpath); + len = n = RARRAY_LENINT(convpath); if (n != 0) { VALUE pair = RARRAY_PTR(convpath)[n-1]; if (TYPE(pair) == T_ARRAY) { @@ -3031,7 +3036,7 @@ rb_econv_init_by_convpath(VALUE self, VALUE convpath, rb_encoding *senc = 0, *denc = 0; const char *sname, *dname; - ec = rb_econv_alloc(RARRAY_LEN(convpath)); + ec = rb_econv_alloc(RARRAY_LENINT(convpath)); DATA_PTR(self) = ec; for (i = 0; i < RARRAY_LEN(convpath); i++) { @@ -3314,7 +3319,7 @@ econv_destination_encoding(VALUE self) * * The result is an array of conversions. * - * ec = Encoding::Converter.new("ISo-8859-1", "EUC-JP", crlf_newline: true) + * ec = Encoding::Converter.new("ISO-8859-1", "EUC-JP", crlf_newline: true) * p ec.convpath * #=> [[#, #], * # [#, #], diff --git a/transcode_data.h b/transcode_data.h index 8b320c39eb362e..7362275cbe88a1 100644 --- a/transcode_data.h +++ b/transcode_data.h @@ -69,7 +69,7 @@ typedef enum { asciicompat_converter, /* ASCII-compatible -> ASCII-compatible */ asciicompat_decoder, /* ASCII-incompatible -> ASCII-compatible */ asciicompat_encoder /* ASCII-compatible -> ASCII-incompatible */ - /* ASCII-incompatible -> ASCII-incompatible is intentionally ommitted. */ + /* ASCII-incompatible -> ASCII-incompatible is intentionally omitted. */ } rb_transcoder_asciicompat_type_t; typedef struct rb_transcoder rb_transcoder; diff --git a/util.c b/util.c index d6b06402d5258b..5ebc5f3e87ed06 100644 --- a/util.c +++ b/util.c @@ -291,7 +291,7 @@ ruby_add_suffix(VALUE str, const char *suffix) while ((*t = *s) && *s != '.') { baselen++; if (*s == '\\' || *s == '/') baselen = 0; - s++; t++; + s++; t++; } p = t; @@ -309,7 +309,7 @@ ruby_add_suffix(VALUE str, const char *suffix) ext[++extlen] = '\0'; } else if (baselen < 8) { - *p++ = *suffix; + *p++ = *suffix; } else if (ext[3] != *suffix) { ext[3] = *suffix; @@ -443,7 +443,7 @@ ruby_qsort(void* base, const size_t nel, const size_t size, { register char *l, *r, *m; /* l,r:left,right group m:median point */ register int t, eq_l, eq_r; /* eq_l: all items in left group are equal to S */ - char *L = base; /* left end of curren region */ + char *L = base; /* left end of current region */ char *R = (char*)base + size*(nel-1); /* right end of current region */ size_t chklim = 63; /* threshold of ordering element check */ stack_node stack[32], *top = stack; /* 32 is enough for 32bit CPU */ @@ -2280,7 +2280,7 @@ ruby_strtod(const char *s00, char **se) #ifdef Honor_FLT_ROUNDS /* round correctly FLT_ROUNDS = 2 or 3 */ if (sign) { - rv = -rv; + dval(rv) = -dval(rv); sign = 0; } #endif @@ -2296,7 +2296,7 @@ ruby_strtod(const char *s00, char **se) #ifdef Honor_FLT_ROUNDS /* round correctly FLT_ROUNDS = 2 or 3 */ if (sign) { - rv = -rv; + dval(rv) = -dval(rv); sign = 0; } #endif @@ -2324,7 +2324,7 @@ ruby_strtod(const char *s00, char **se) #ifdef Honor_FLT_ROUNDS /* round correctly FLT_ROUNDS = 2 or 3 */ if (sign) { - rv = -rv; + dval(rv) = -dval(rv); sign = 0; } #endif @@ -2791,11 +2791,11 @@ ruby_strtod(const char *s00, char **se) #ifdef Check_FLT_ROUNDS switch (Rounding) { case 2: /* towards +infinity */ - aadj1 -= 0.5; + dval(aadj1) -= 0.5; break; case 0: /* towards 0 */ case 3: /* towards -infinity */ - aadj1 += 0.5; + dval(aadj1) += 0.5; } #else if (Flt_Rounds == 0) @@ -2840,7 +2840,7 @@ ruby_strtod(const char *s00, char **se) if ((word0(rv) & Exp_mask) <= P*Exp_msk1) { dval(rv0) = dval(rv); word0(rv) += P*Exp_msk1; - adj = aadj1 * ulp(dval(rv)); + adj = dval(aadj1) * ulp(dval(rv)); dval(rv) += adj; #ifdef IBM if ((word0(rv) & Exp_mask) < P*Exp_msk1) @@ -2858,7 +2858,7 @@ ruby_strtod(const char *s00, char **se) word0(rv) -= P*Exp_msk1; } else { - adj = aadj1 * ulp(dval(rv)); + adj = dval(aadj1) * ulp(dval(rv)); dval(rv) += adj; } #else /*Sudden_Underflow*/ @@ -2870,11 +2870,11 @@ ruby_strtod(const char *s00, char **se) * example: 1.2e-307 . */ if (y <= (P-1)*Exp_msk1 && aadj > 1.) { - aadj1 = (double)(int)(aadj + 0.5); + dval(aadj1) = (double)(int)(aadj + 0.5); if (!dsign) - aadj1 = -aadj1; + dval(aadj1) = -dval(aadj1); } - adj = aadj1 * ulp(dval(rv)); + adj = dval(aadj1) * ulp(dval(rv)); dval(rv) += adj; #endif /*Sudden_Underflow*/ #endif /*Avoid_Underflow*/ diff --git a/variable.c b/variable.c index ea7dfbb0da04d6..b3f62444d28347 100644 --- a/variable.c +++ b/variable.c @@ -784,7 +784,7 @@ rb_alias_variable(ID name1, ID name2) entry2 = rb_global_entry(name2); if (!st_lookup(rb_global_tbl, (st_data_t)name1, &data1)) { - entry1 = ALLOC(struct global_entry); + entry1 = ALLOC(struct global_entry); entry1->id = name1; st_add_direct(rb_global_tbl, name1, (st_data_t)entry1); } @@ -1023,13 +1023,13 @@ ivar_get(VALUE obj, ID id, int warn) VALUE rb_ivar_get(VALUE obj, ID id) { - return ivar_get(obj, id, Qtrue); + return ivar_get(obj, id, TRUE); } VALUE rb_attr_get(VALUE obj, ID id) { - return ivar_get(obj, id, Qfalse); + return ivar_get(obj, id, FALSE); } VALUE @@ -1565,19 +1565,19 @@ rb_const_get_0(VALUE klass, ID id, int exclude, int recurse) VALUE rb_const_get_from(VALUE klass, ID id) { - return rb_const_get_0(klass, id, Qtrue, Qtrue); + return rb_const_get_0(klass, id, TRUE, TRUE); } VALUE rb_const_get(VALUE klass, ID id) { - return rb_const_get_0(klass, id, Qfalse, Qtrue); + return rb_const_get_0(klass, id, FALSE, TRUE); } VALUE rb_const_get_at(VALUE klass, ID id) { - return rb_const_get_0(klass, id, Qtrue, Qfalse); + return rb_const_get_0(klass, id, TRUE, FALSE); } /* @@ -1596,8 +1596,6 @@ rb_mod_remove_const(VALUE mod, VALUE name) VALUE val; st_data_t v, n = id; - rb_vm_change_state(); - if (!rb_is_const_id(id)) { rb_name_error(id, "`%s' is not allowed as a constant name", rb_id2name(id)); } @@ -1605,21 +1603,23 @@ rb_mod_remove_const(VALUE mod, VALUE name) rb_raise(rb_eSecurityError, "Insecure: can't remove constant"); if (OBJ_FROZEN(mod)) rb_error_frozen("class/module"); - if (RCLASS_IV_TBL(mod) && st_delete(RCLASS_IV_TBL(mod), &n, &v)) { - val = (VALUE)v; - if (val == Qundef) { - autoload_delete(mod, id); - val = Qnil; + if (!RCLASS_IV_TBL(mod) || !st_delete(RCLASS_IV_TBL(mod), &n, &v)) { + if (rb_const_defined_at(mod, id)) { + rb_name_error(id, "cannot remove %s::%s", + rb_class2name(mod), rb_id2name(id)); } - return val; + rb_name_error(id, "constant %s::%s not defined", + rb_class2name(mod), rb_id2name(id)); } - if (rb_const_defined_at(mod, id)) { - rb_name_error(id, "cannot remove %s::%s", - rb_class2name(mod), rb_id2name(id)); + + rb_vm_change_state(); + + val = (VALUE)v; + if (val == Qundef) { + autoload_delete(mod, id); + val = Qnil; } - rb_name_error(id, "constant %s::%s not defined", - rb_class2name(mod), rb_id2name(id)); - return Qnil; /* not reached */ + return val; } static int @@ -1728,8 +1728,8 @@ rb_const_defined_0(VALUE klass, ID id, int exclude, int recurse) while (tmp) { if (RCLASS_IV_TBL(tmp) && st_lookup(RCLASS_IV_TBL(tmp), (st_data_t)id, &value)) { if ((VALUE)value == Qundef && !autoload_node((VALUE)klass, id, 0)) - return Qfalse; - return Qtrue; + return (int)Qfalse; + return (int)Qtrue; } if (!recurse && klass != rb_cObject) break; tmp = RCLASS_SUPER(tmp); @@ -1739,25 +1739,25 @@ rb_const_defined_0(VALUE klass, ID id, int exclude, int recurse) tmp = rb_cObject; goto retry; } - return Qfalse; + return (int)Qfalse; } int rb_const_defined_from(VALUE klass, ID id) { - return rb_const_defined_0(klass, id, Qtrue, Qtrue); + return rb_const_defined_0(klass, id, TRUE, TRUE); } int rb_const_defined(VALUE klass, ID id) { - return rb_const_defined_0(klass, id, Qfalse, Qtrue); + return rb_const_defined_0(klass, id, FALSE, TRUE); } int rb_const_defined_at(VALUE klass, ID id) { - return rb_const_defined_0(klass, id, Qtrue, Qfalse); + return rb_const_defined_0(klass, id, TRUE, FALSE); } static void @@ -1802,7 +1802,7 @@ rb_const_set(VALUE klass, ID id, VALUE val) rb_raise(rb_eTypeError, "no class/module to define constant %s", rb_id2name(id)); } - mod_av_set(klass, id, val, Qtrue); + mod_av_set(klass, id, val, TRUE); } void @@ -1884,7 +1884,7 @@ rb_cvar_set(VALUE klass, ID id, VALUE val) else { target = tmp; } - mod_av_set(target, id, val, Qfalse); + mod_av_set(target, id, val, FALSE); } VALUE diff --git a/version.c b/version.c index ba2020d9b6dffb..40fecc7eae5e7b 100644 --- a/version.c +++ b/version.c @@ -53,7 +53,8 @@ const char ruby_initial_load_paths[] = #ifdef RUBY_THIN_ARCHLIB RUBY_THIN_ARCHLIB "\0" #endif - RUBY_ARCHLIB "\0"; + RUBY_ARCHLIB "\0" + ""; void Init_version(void) diff --git a/version.h b/version.h index 561c271e57ac3a..94d638dc5d2f91 100644 --- a/version.h +++ b/version.h @@ -1,5 +1,5 @@ #define RUBY_VERSION "1.9.2" -#define RUBY_RELEASE_DATE "2009-09-11" +#define RUBY_RELEASE_DATE "2009-12-02" #define RUBY_PATCHLEVEL -1 #define RUBY_BRANCH_NAME "trunk" @@ -7,8 +7,8 @@ #define RUBY_VERSION_MINOR 9 #define RUBY_VERSION_TEENY 1 #define RUBY_RELEASE_YEAR 2009 -#define RUBY_RELEASE_MONTH 9 -#define RUBY_RELEASE_DAY 11 +#define RUBY_RELEASE_MONTH 12 +#define RUBY_RELEASE_DAY 2 #include "ruby/version.h" diff --git a/vm.c b/vm.c index d886f4c83b6e7d..fa028fd1871d63 100644 --- a/vm.c +++ b/vm.c @@ -25,6 +25,8 @@ #include "vm_method.c" #include "vm_eval.c" +#include + #define BUFSIZE 0x100 #define PROCDEBUG 0 @@ -41,6 +43,8 @@ char ruby_vm_redefined_flag[BOP_LAST_]; rb_thread_t *ruby_current_thread = 0; rb_vm_t *ruby_current_vm = 0; +static void thread_free(void *ptr); + VALUE rb_insns_name_array(void); void vm_analysis_operand(int insn, int n, VALUE op); @@ -88,7 +92,7 @@ vm_set_top_stack(rb_thread_t * th, VALUE iseqval) th->top_self, 0, iseq->iseq_encoded, th->cfp->sp, 0, iseq->local_size); - CHECK_STACK_OVERFLOW(th->cfp, iseq->stack_max); + CHECK_STACK_OVERFLOW(th->cfp, iseq->stack_max); } static void @@ -377,19 +381,26 @@ vm_make_env_each(rb_thread_t * const th, rb_control_frame_t * const cfp, } static int -collect_local_variables_in_env(rb_env_t * const env, const VALUE ary) +collect_local_variables_in_iseq(rb_iseq_t *iseq, const VALUE ary) { int i; - for (i = 0; i < env->block.iseq->local_table_size; i++) { - ID lid = env->block.iseq->local_table[i]; + if (!iseq) return 0; + for (i = 0; i < iseq->local_table_size; i++) { + ID lid = iseq->local_table[i]; if (rb_is_local_id(lid)) { rb_ary_push(ary, ID2SYM(lid)); } } - if (env->prev_envval) { - rb_env_t *prevenv; - GetEnvPtr(env->prev_envval, prevenv); - collect_local_variables_in_env(prevenv, ary); + return 1; +} + +static int +collect_local_variables_in_env(rb_env_t * env, const VALUE ary) +{ + + while (collect_local_variables_in_iseq(env->block.iseq, ary), + env->prev_envval) { + GetEnvPtr(env->prev_envval, env); } return 0; } @@ -512,7 +523,9 @@ invoke_block_from_c(rb_thread_t *th, const rb_block_t *block, VALUE self, int argc, const VALUE *argv, const rb_block_t *blockptr, const NODE *cref) { - if (BUILTIN_TYPE(block->iseq) != T_NODE) { + if (SPECIAL_CONST_P(block->iseq)) + return Qnil; + else if (BUILTIN_TYPE(block->iseq) != T_NODE) { const rb_iseq_t *iseq = block->iseq; const rb_control_frame_t *cfp; int i, opt_pc, arg_size = iseq->arg_size; @@ -718,7 +731,7 @@ vm_backtrace_each(rb_thread_t *th, int lev, rb_backtrace_iter_func *iter, void * cfp -= 2; while (lev-- >= 0) { if (++limit_cfp >= cfp) { - return Qfalse; + return FALSE; } } limit_cfp = RUBY_VM_NEXT_CONTROL_FRAME(limit_cfp); @@ -739,7 +752,7 @@ vm_backtrace_each(rb_thread_t *th, int lev, rb_backtrace_iter_func *iter, void * } cfp = RUBY_VM_NEXT_CONTROL_FRAME(cfp); } - return Qtrue; + return TRUE; } static int @@ -1464,21 +1477,37 @@ rb_vm_mark(void *ptr) RUBY_MARK_LEAVE("vm"); } -static void -vm_free(void *ptr) +#define vm_free 0 + +int +ruby_vm_destruct(void *ptr) { RUBY_FREE_ENTER("vm"); if (ptr) { - rb_vm_t *vmobj = ptr; - - st_free_table(vmobj->living_threads); - vmobj->living_threads = 0; - /* TODO: MultiVM Instance */ - /* VM object should not be cleaned by GC */ - /* ruby_xfree(ptr); */ - /* ruby_current_vm = 0; */ + rb_vm_t *vm = ptr; + rb_thread_t *th = vm->main_thread; +#if defined(ENABLE_VM_OBJSPACE) && ENABLE_VM_OBJSPACE + struct rb_objspace *objspace = vm->objspace; +#endif + rb_gc_force_recycle(vm->self); + vm->main_thread = 0; + if (th) { + thread_free(th); + } + if (vm->living_threads) { + st_free_table(vm->living_threads); + vm->living_threads = 0; + } + ruby_xfree(vm); + ruby_current_vm = 0; +#if defined(ENABLE_VM_OBJSPACE) && ENABLE_VM_OBJSPACE + if (objspace) { + rb_objspace_free(objspace); + } +#endif } RUBY_FREE_LEAVE("vm"); + return 0; } static size_t @@ -1660,8 +1689,6 @@ thread_free(void *ptr) static size_t thread_memsize(const void *ptr) { - RUBY_FREE_ENTER("thread"); - if (ptr) { const rb_thread_t *th = ptr; size_t size = sizeof(rb_thread_t); diff --git a/vm_core.h b/vm_core.h index 9728e98a6b16ce..3d0f239f54a828 100644 --- a/vm_core.h +++ b/vm_core.h @@ -31,6 +31,21 @@ #error "unsupported thread type" #endif +#ifndef ENABLE_VM_OBJSPACE +#ifdef _WIN32 +/* + * TODO: object space indenpendent st_table. + * socklist needs st_table in rb_w32_sysinit(), before object space + * initialization. + * It is too early now to change st_hash_type, since it breaks binary + * compatibility. + */ +#define ENABLE_VM_OBJSPACE 0 +#else +#define ENABLE_VM_OBJSPACE 1 +#endif +#endif + #include #include @@ -110,11 +125,13 @@ typedef struct rb_compile_option_struct { } rb_compile_option_t; struct iseq_inline_cache_entry { - long ic_vmstat; + VALUE ic_vmstat; VALUE ic_class; - VALUE ic_value; - rb_method_entry_t *ic_method; -#define ic_index ic_vmstat + union { + VALUE value; + rb_method_entry_t *method; + long index; + } ic_value; }; #if 1 @@ -237,6 +254,11 @@ enum ruby_special_exceptions { #define GetVMPtr(obj, ptr) \ GetCoreDataFromValue(obj, rb_vm_t, ptr) +#if defined(ENABLE_VM_OBJSPACE) && ENABLE_VM_OBJSPACE +struct rb_objspace; +void rb_objspace_free(struct rb_objspace *); +#endif + typedef struct rb_vm_struct { VALUE self; @@ -449,7 +471,7 @@ VALUE rb_iseq_new_with_bopt(NODE*, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE); VALUE rb_iseq_new_with_opt(NODE*, VALUE, VALUE, VALUE, VALUE, VALUE, const rb_compile_option_t*); VALUE rb_iseq_compile(VALUE src, VALUE file, VALUE line); VALUE rb_iseq_disasm(VALUE self); -VALUE rb_iseq_disasm_insn(VALUE str, VALUE *iseqval, int pos, rb_iseq_t *iseq, VALUE child); +int rb_iseq_disasm_insn(VALUE str, VALUE *iseqval, size_t pos, rb_iseq_t *iseq, VALUE child); const char *ruby_node_name(int node); int rb_iseq_first_lineno(rb_iseq_t *iseq); @@ -594,8 +616,9 @@ void *rb_thread_call_with_gvl(void *(*func)(void *), void *data1); int ruby_thread_has_gvl_p(void); VALUE rb_make_backtrace(void); typedef int rb_backtrace_iter_func(void *, VALUE, int, VALUE); -VALUE rb_backtrace_each(rb_backtrace_iter_func *iter, void *arg); +int rb_backtrace_each(rb_backtrace_iter_func *iter, void *arg); rb_control_frame_t *rb_vm_get_ruby_level_next_cfp(rb_thread_t *th, rb_control_frame_t *cfp); +VALUE rb_name_err_mesg_new(VALUE obj, VALUE mesg, VALUE recv, VALUE method); NOINLINE(void rb_gc_save_machine_context(rb_thread_t *)); diff --git a/vm_dump.c b/vm_dump.c index 3addd9ee327ffe..c9c621fe0e08bb 100644 --- a/vm_dump.c +++ b/vm_dump.c @@ -20,11 +20,12 @@ static void control_frame_dump(rb_thread_t *th, rb_control_frame_t *cfp) { - int pc = -1, bp = -1, line = 0; + ptrdiff_t pc = -1, bp = -1; ptrdiff_t lfp = cfp->lfp - th->stack; ptrdiff_t dfp = cfp->dfp - th->stack; char lfp_in_heap = ' ', dfp_in_heap = ' '; char posbuf[MAX_POSBUF+1]; + int line = 0; int nopos = 0; const char *magic, *iseq_name = "-", *selfstr = "-", *biseq_name = "-"; @@ -124,9 +125,9 @@ control_frame_dump(rb_thread_t *th, rb_control_frame_t *cfp) fprintf(stderr, "p:---- "); } else { - fprintf(stderr, "p:%04d ", pc); + fprintf(stderr, "p:%04"PRIdPTRDIFF" ", pc); } - fprintf(stderr, "s:%04"PRIdPTRDIFF" b:%04d ", (cfp->sp - th->stack), bp); + fprintf(stderr, "s:%04"PRIdPTRDIFF" b:%04"PRIdPTRDIFF" ", (cfp->sp - th->stack), bp); fprintf(stderr, lfp_in_heap == ' ' ? "l:%06"PRIdPTRDIFF" " : "l:%06"PRIxPTRDIFF" ", lfp % 10000); fprintf(stderr, dfp_in_heap == ' ' ? "d:%06"PRIdPTRDIFF" " : "d:%06"PRIxPTRDIFF" ", dfp % 10000); fprintf(stderr, "%-6s", magic); @@ -329,10 +330,10 @@ void rb_vmdebug_debug_print_register(rb_thread_t *th) { rb_control_frame_t *cfp = th->cfp; - int pc = -1; - int lfp = cfp->lfp - th->stack; - int dfp = cfp->dfp - th->stack; - int cfpi; + ptrdiff_t pc = -1; + ptrdiff_t lfp = cfp->lfp - th->stack; + ptrdiff_t dfp = cfp->dfp - th->stack; + ptrdiff_t cfpi; if (RUBY_VM_NORMAL_ISEQ_P(cfp->iseq)) { pc = cfp->pc - cfp->iseq->iseq_encoded; @@ -344,7 +345,7 @@ rb_vmdebug_debug_print_register(rb_thread_t *th) dfp = -1; cfpi = ((rb_control_frame_t *)(th->stack + th->stack_size)) - cfp; - fprintf(stderr, " [PC] %04d, [SP] %04"PRIdPTRDIFF", [LFP] %04d, [DFP] %04d, [CFP] %04d\n", + fprintf(stderr, " [PC] %04"PRIdPTRDIFF", [SP] %04"PRIdPTRDIFF", [LFP] %04"PRIdPTRDIFF", [DFP] %04"PRIdPTRDIFF", [CFP] %04"PRIdPTRDIFF"\n", pc, (cfp->sp - th->stack), lfp, dfp, cfpi); } @@ -363,10 +364,12 @@ rb_vmdebug_debug_print_pre(rb_thread_t *th, rb_control_frame_t *cfp) if (iseq != 0 && VM_FRAME_TYPE(cfp) != VM_FRAME_MAGIC_FINISH) { VALUE *seq = iseq->iseq; - int pc = cfp->pc - iseq->iseq_encoded; + ptrdiff_t pc = cfp->pc - iseq->iseq_encoded; printf("%3"PRIdPTRDIFF" ", VM_CFP_CNT(th, cfp)); - rb_iseq_disasm_insn(0, seq, pc, iseq, 0); + if (pc >= 0) { + rb_iseq_disasm_insn(0, seq, (size_t)pc, iseq, 0); + } } #if VMDEBUG > 3 diff --git a/vm_eval.c b/vm_eval.c index 97466a0cd218d3..549b28becc9bfa 100644 --- a/vm_eval.c +++ b/vm_eval.c @@ -21,14 +21,16 @@ static NODE *vm_cref_push(rb_thread_t *th, VALUE klass, int noex); static VALUE vm_exec(rb_thread_t *th); static void vm_set_eval_stack(rb_thread_t * th, VALUE iseqval, const NODE *cref); static int vm_collect_local_variables_in_heap(rb_thread_t *th, VALUE *dfp, VALUE ary); -static VALUE send_internal(int argc, const VALUE *argv, VALUE recv, int scope); typedef enum call_type { CALL_PUBLIC, CALL_FCALL, CALL_VCALL, + CALL_TYPE_MAX } call_type; +static VALUE send_internal(int argc, const VALUE *argv, VALUE recv, call_type scope); + static inline VALUE vm_call0(rb_thread_t* th, VALUE recv, VALUE id, int argc, const VALUE *argv, const rb_method_entry_t *me) @@ -104,16 +106,24 @@ vm_call0(rb_thread_t* th, VALUE recv, VALUE id, int argc, const VALUE *argv, case VM_METHOD_TYPE_ZSUPER: { klass = RCLASS_SUPER(klass); if (!klass || !(me = rb_method_entry(klass, id))) { - return method_missing(recv, id, argc, argv, 0); + return method_missing(recv, id, argc, argv, NOEX_SUPER); } RUBY_VM_CHECK_INTS(); if (!(def = me->def)) return Qnil; goto again; } + case VM_METHOD_TYPE_MISSING: { + VALUE new_args = rb_ary_new4(argc, argv); + + RB_GC_GUARD(new_args); + rb_ary_unshift(new_args, ID2SYM(id)); + return rb_funcall2(recv, idMethodMissing, + argc+1, RARRAY_PTR(new_args)); + } case VM_METHOD_TYPE_OPTIMIZED: { switch (def->body.optimize_type) { case OPTIMIZED_METHOD_TYPE_SEND: - val = send_internal(argc, argv, recv, NOEX_NOSUPER | NOEX_PRIVATE); + val = send_internal(argc, argv, recv, CALL_FCALL); break; case OPTIMIZED_METHOD_TYPE_CALL: { rb_proc_t *proc; @@ -167,7 +177,7 @@ vm_call_super(rb_thread_t *th, int argc, const VALUE *argv) me = rb_method_entry(klass, id); if (!me) { - return method_missing(recv, id, argc, argv, 0); + return method_missing(recv, id, argc, argv, NOEX_SUPER); } return vm_call0(th, recv, id, argc, argv, me); @@ -191,6 +201,10 @@ stack_check(void) } } +static inline rb_method_entry_t *rb_search_method_entry(VALUE recv, ID mid); +static inline int rb_method_call_status(rb_thread_t *th, rb_method_entry_t *me, call_type scope, VALUE self); +#define NOEX_OK NOEX_NOSUPER + /*! * \internal * calls the specified method. @@ -209,44 +223,166 @@ static inline VALUE rb_call0(VALUE recv, ID mid, int argc, const VALUE *argv, call_type scope, VALUE self) { - VALUE klass = CLASS_OF(recv); - rb_method_entry_t *me; - struct cache_entry *ent; + rb_method_entry_t *me = rb_search_method_entry(recv, mid); rb_thread_t *th = GET_THREAD(); - ID oid; - int noex; + int call_status = rb_method_call_status(th, me, scope, self); - if (!klass) { - const char *adj = "terminated"; - if (!IMMEDIATE_P(recv) && RBASIC(recv)->flags != 0) - adj = "hidden"; - rb_raise(rb_eNotImpError, - "method `%s' called on %s object (%p)", - rb_id2name(mid), adj, (void *)recv); - } - - /* is it in the method cache? */ - ent = cache + EXPR1(klass, mid); - - if (ent->mid == mid && ent->klass == klass) { - me = ent->me; - if (UNDEFINED_METHOD_ENTRY_P(me)) { - return method_missing(recv, mid, argc, argv, - scope == CALL_VCALL ? NOEX_VCALL : 0); - } - klass = me->klass; + if (call_status != NOEX_OK) { + return method_missing(recv, mid, argc, argv, call_status); } - else if ((me = rb_method_entry_without_cache(klass, mid)) != 0 && me->def) { - klass = me->klass; + stack_check(); + return vm_call0(th, recv, mid, argc, argv, me); +} + +struct rescue_funcall_args { + VALUE recv; + VALUE sym; + int argc; + VALUE *argv; +}; + +static VALUE +check_funcall_exec(struct rescue_funcall_args *args) +{ + VALUE new_args = rb_ary_new4(args->argc, args->argv); + + RB_GC_GUARD(new_args); + rb_ary_unshift(new_args, args->sym); + return rb_funcall2(args->recv, idMethodMissing, + args->argc+1, RARRAY_PTR(new_args)); +} + +static VALUE +check_funcall_failed(struct rescue_funcall_args *args, VALUE e) +{ + if (rb_respond_to(args->recv, SYM2ID(args->sym))) { + rb_exc_raise(e); } - else { - if (scope == 3) { - return method_missing(recv, mid, argc, argv, NOEX_SUPER); + return Qundef; +} + +static VALUE +check_funcall(VALUE recv, ID mid, int argc, VALUE *argv) +{ + rb_method_entry_t *me = rb_search_method_entry(recv, mid); + rb_thread_t *th = GET_THREAD(); + int call_status = rb_method_call_status(th, me, CALL_FCALL, Qundef); + + if (call_status != NOEX_OK) { + if (rb_method_basic_definition_p(CLASS_OF(recv), idMethodMissing)) { + return Qundef; + } + else { + struct rescue_funcall_args args; + + args.recv = recv; + args.sym = ID2SYM(mid); + args.argc = argc; + args.argv = argv; + return rb_rescue2(check_funcall_exec, (VALUE)&args, + check_funcall_failed, (VALUE)&args, + rb_eNoMethodError, (VALUE)0); } - return method_missing(recv, mid, argc, argv, - scope == CALL_VCALL ? NOEX_VCALL : 0); } + stack_check(); + return vm_call0(th, recv, mid, argc, argv, me); +} + +VALUE +rb_check_funcall(VALUE recv, ID mid, int argc, VALUE *argv) +{ + return check_funcall(recv, mid, argc, argv); +} +static const char * +rb_type_str(enum ruby_value_type type) +{ +#define type_case(t) case t: return #t; + switch (type) { + type_case(T_NONE) + type_case(T_OBJECT) + type_case(T_CLASS) + type_case(T_MODULE) + type_case(T_FLOAT) + type_case(T_STRING) + type_case(T_REGEXP) + type_case(T_ARRAY) + type_case(T_HASH) + type_case(T_STRUCT) + type_case(T_BIGNUM) + type_case(T_FILE) + type_case(T_DATA) + type_case(T_MATCH) + type_case(T_COMPLEX) + type_case(T_RATIONAL) + type_case(T_NIL) + type_case(T_TRUE) + type_case(T_FALSE) + type_case(T_SYMBOL) + type_case(T_FIXNUM) + type_case(T_UNDEF) + type_case(T_NODE) + type_case(T_ICLASS) + type_case(T_ZOMBIE) + default: return NULL; + } +#undef type_case +} + +static inline rb_method_entry_t * +rb_search_method_entry(VALUE recv, ID mid) +{ + VALUE klass = CLASS_OF(recv); + + if (!klass) { + VALUE flags, klass; + if (IMMEDIATE_P(recv)) { + rb_raise(rb_eNotImpError, + "method `%s' called on unexpected immediate object (%p)", + rb_id2name(mid), (void *)recv); + } + flags = RBASIC(recv)->flags; + klass = RBASIC(recv)->klass; + if (flags == 0) { + rb_raise(rb_eNotImpError, + "method `%s' called on terminated object" + " (%p flags=0x%"PRIxVALUE" klass=0x%"PRIxVALUE")", + rb_id2name(mid), (void *)recv, flags, klass); + } + else { + int type = BUILTIN_TYPE(recv); + const char *typestr = rb_type_str(type); + if (typestr && T_OBJECT <= type && type < T_NIL) + rb_raise(rb_eNotImpError, + "method `%s' called on hidden %s object" + " (%p flags=0x%"PRIxVALUE" klass=0x%"PRIxVALUE")", + rb_id2name(mid), typestr, (void *)recv, flags, klass); + if (typestr) + rb_raise(rb_eNotImpError, + "method `%s' called on unexpected %s object" + " (%p flags=0x%"PRIxVALUE" klass=0x%"PRIxVALUE")", + rb_id2name(mid), typestr, (void *)recv, flags, klass); + else + rb_raise(rb_eNotImpError, + "method `%s' called on broken T_???" "(0x%02x) object" + " (%p flags=0x%"PRIxVALUE" klass=0x%"PRIxVALUE")", + rb_id2name(mid), type, (void *)recv, flags, klass); + } + } + return rb_method_entry(klass, mid); +} + +static inline int +rb_method_call_status(rb_thread_t *th, rb_method_entry_t *me, call_type scope, VALUE self) +{ + VALUE klass; + ID oid; + int noex; + + if (UNDEFINED_METHOD_ENTRY_P(me)) { + return scope == CALL_VCALL ? NOEX_VCALL : 0; + } + klass = me->klass; oid = me->def->original_id; noex = me->flag; @@ -254,7 +390,7 @@ rb_call0(VALUE recv, ID mid, int argc, const VALUE *argv, /* receiver specified form for private method */ if (UNLIKELY(noex)) { if (((noex & NOEX_MASK) & NOEX_PRIVATE) && scope == CALL_PUBLIC) { - return method_missing(recv, mid, argc, argv, NOEX_PRIVATE); + return NOEX_PRIVATE; } /* self must be kind of a specified form for protected method */ @@ -268,19 +404,18 @@ rb_call0(VALUE recv, ID mid, int argc, const VALUE *argv, if (self == Qundef) { self = th->cfp->self; } - if (!rb_obj_is_kind_of(self, rb_class_real(defined_class))) { - return method_missing(recv, mid, argc, argv, NOEX_PROTECTED); + if (!rb_obj_is_kind_of(self, defined_class)) { + return NOEX_PROTECTED; } } if (NOEX_SAFE(noex) > th->safe_level) { - rb_raise(rb_eSecurityError, "calling insecure method: %s", rb_id2name(mid)); + rb_raise(rb_eSecurityError, "calling insecure method: %s", + rb_id2name(me->called_id)); } } } - - stack_check(); - return vm_call0(th, recv, mid, argc, argv, me); + return NOEX_OK; } @@ -382,9 +517,16 @@ raise_method_missing(rb_thread_t *th, int argc, const VALUE *argv, VALUE obj, { int n = 0; + VALUE mesg; VALUE args[3]; - args[n++] = rb_funcall(rb_const_get(exc, rb_intern("message")), '!', - 3, rb_str_new2(format), obj, argv[0]); + + mesg = rb_const_get(exc, rb_intern("message")); + if (rb_method_basic_definition_p(CLASS_OF(mesg), '!')) { + args[n++] = rb_name_err_mesg_new(mesg, rb_str_new2(format), obj, argv[0]); + } + else { + args[n++] = rb_funcall(mesg, '!', 3, rb_str_new2(format), obj, argv[0]); + } args[n++] = argv[0]; if (exc == rb_eNoMethodError) { args[n++] = rb_ary_new4(argc - 1, argv + 1); @@ -425,6 +567,9 @@ method_missing(VALUE obj, ID id, int argc, const VALUE *argv, int call_status) nargv[0] = ID2SYM(id); MEMCPY(nargv + 1, argv, VALUE, argc); + if (rb_method_basic_definition_p(CLASS_OF(obj) , idMethodMissing)) { + raise_method_missing(th, argc+1, nargv, obj, call_status | NOEX_MISSING); + } result = rb_funcall2(obj, idMethodMissing, argc + 1, nargv); if (argv_ary) rb_ary_clear(argv_ary); return result; @@ -519,7 +664,7 @@ rb_funcall3(VALUE recv, ID mid, int argc, const VALUE *argv) } static VALUE -send_internal(int argc, const VALUE *argv, VALUE recv, int scope) +send_internal(int argc, const VALUE *argv, VALUE recv, call_type scope) { VALUE vid; VALUE self = RUBY_VM_PREVIOUS_CONTROL_FRAME(GET_THREAD()->cfp)->self; @@ -556,7 +701,7 @@ send_internal(int argc, const VALUE *argv, VALUE recv, int scope) VALUE rb_f_send(int argc, VALUE *argv, VALUE recv) { - return send_internal(argc, argv, recv, NOEX_NOSUPER | NOEX_PRIVATE); + return send_internal(argc, argv, recv, CALL_FCALL); } /* @@ -573,7 +718,7 @@ rb_f_send(int argc, VALUE *argv, VALUE recv) VALUE rb_f_public_send(int argc, VALUE *argv, VALUE recv) { - return send_internal(argc, argv, recv, NOEX_PUBLIC); + return send_internal(argc, argv, recv, CALL_PUBLIC); } /* yield */ @@ -889,11 +1034,10 @@ eval_string(VALUE self, VALUE src, VALUE scope, const char *file, int line) * eval(string [, binding [, filename [,lineno]]]) => obj * * Evaluates the Ruby expression(s) in string. If - * binding is given, the evaluation is performed in its - * context. The binding may be a Binding object or a - * Proc object. If the optional filename and - * lineno parameters are present, they will be used when - * reporting syntax errors. + * binding is given, which must be a Binding + * object, the evaluation is performed in its context. If the + * optional filename and lineno parameters are + * present, they will be used when reporting syntax errors. * * def getBinding(str) * return binding @@ -1264,6 +1408,12 @@ rb_throw(const char *tag, VALUE val) rb_throw_obj(ID2SYM(rb_intern(tag)), val); } +static VALUE +catch_i(VALUE tag, VALUE data) +{ + return rb_yield_0(1, &tag); +} + /* * call-seq: * catch([arg]) {|tag| block } => obj @@ -1296,7 +1446,7 @@ rb_throw(const char *tag, VALUE val) * * when _arg_ is given, +catch+ yields it as is, or when no * _arg_ is given, +catch+ assigns a new unique object to - * +throw+. this is usefull for nested +catch+. _arg_ can + * +throw+. this is useful for nested +catch+. _arg_ can * be an arbitrary object, not only Symbol. * */ @@ -1305,10 +1455,6 @@ static VALUE rb_f_catch(int argc, VALUE *argv) { VALUE tag; - int state; - volatile VALUE val = Qnil; /* OK */ - rb_thread_t *th = GET_THREAD(); - rb_control_frame_t *saved_cfp = th->cfp; if (argc == 0) { tag = rb_obj_alloc(rb_cObject); @@ -1316,12 +1462,31 @@ rb_f_catch(int argc, VALUE *argv) else { rb_scan_args(argc, argv, "01", &tag); } + return rb_catch_obj(tag, catch_i, 0); +} + +VALUE +rb_catch(const char *tag, VALUE (*func)(), VALUE data) +{ + VALUE vtag = tag ? ID2SYM(rb_intern(tag)) : rb_obj_alloc(rb_cObject); + return rb_catch_obj(vtag, func, data); +} + +VALUE +rb_catch_obj(VALUE tag, VALUE (*func)(), VALUE data) +{ + int state; + volatile VALUE val = Qnil; /* OK */ + rb_thread_t *th = GET_THREAD(); + rb_control_frame_t *saved_cfp = th->cfp; + PUSH_TAG(); th->tag->tag = tag; if ((state = EXEC_TAG()) == 0) { - val = rb_yield_0(1, &tag); + /* call with argc=1, argv = [tag], block = Qnil to insure compatibility */ + val = (*func)(tag, data, 1, &tag, Qnil); } else if (state == TAG_THROW && RNODE(th->errinfo)->u1.value == tag) { th->cfp = saved_cfp; @@ -1336,33 +1501,6 @@ rb_f_catch(int argc, VALUE *argv) return val; } -static VALUE -catch_null_i(VALUE dmy) -{ - return rb_funcall(Qnil, rb_intern("catch"), 0, 0); -} - -static VALUE -catch_i(VALUE tag) -{ - return rb_funcall(Qnil, rb_intern("catch"), 1, tag); -} - -VALUE -rb_catch(const char *tag, VALUE (*func)(), VALUE data) -{ - if (!tag) { - return rb_iterate(catch_null_i, 0, func, data); - } - return rb_iterate(catch_i, ID2SYM(rb_intern(tag)), func, data); -} - -VALUE -rb_catch_obj(VALUE tag, VALUE (*func)(), VALUE data) -{ - return rb_iterate((VALUE (*)_((VALUE)))catch_i, tag, func, data); -} - /* * call-seq: * caller(start=1) => array @@ -1411,7 +1549,7 @@ print_backtrace(void *arg, VALUE file, int line, VALUE method) { fprintf((FILE *)arg, "\tfrom %s:%d:in `%s'\n", RSTRING_PTR(file), line, RSTRING_PTR(method)); - return Qfalse; + return FALSE; } void @@ -1445,7 +1583,7 @@ rb_thread_backtrace(VALUE thval) return vm_backtrace(th, 0); } -VALUE +int rb_backtrace_each(rb_backtrace_iter_func *iter, void *arg) { return vm_backtrace_each(GET_THREAD(), -1, iter, arg); diff --git a/vm_exec.c b/vm_exec.c index 51b8a0f1426cb6..d7f9addfd46539 100644 --- a/vm_exec.c +++ b/vm_exec.c @@ -14,10 +14,10 @@ #if VMDEBUG > 0 #define DECL_SC_REG(type, r, reg) register type reg_##r -#elif __GNUC__ && __x86_64__ +#elif __GNUC__ && __x86_64__ && !__clang__ #define DECL_SC_REG(type, r, reg) register type reg_##r __asm__("r" reg) -#elif __GNUC__ && __i386__ +#elif __GNUC__ && __i386__ && !__clang__ #define DECL_SC_REG(type, r, reg) register type reg_##r __asm__("e" reg) #else diff --git a/vm_insnhelper.c b/vm_insnhelper.c index b00b2464dd1370..a05574f1db77f0 100644 --- a/vm_insnhelper.c +++ b/vm_insnhelper.c @@ -26,9 +26,13 @@ vm_push_frame(rb_thread_t * th, const rb_iseq_t * iseq, const VALUE *pc, VALUE *sp, VALUE *lfp, int local_size) { - rb_control_frame_t * const cfp = th->cfp = th->cfp - 1; + rb_control_frame_t * const cfp = th->cfp - 1; int i; + if ((void *)(sp + local_size) >= (void *)cfp) { + rb_exc_raise(sysstack_error); + } + th->cfp = cfp; /* setup vm value stack */ /* nil initialize */ @@ -527,6 +531,14 @@ vm_call_method(rb_thread_t *th, rb_control_frame_t *cfp, cfp->sp -= 1; break; } + case VM_METHOD_TYPE_MISSING:{ + VALUE *argv = ALLOCA_N(VALUE, num+1); + argv[0] = ID2SYM(me->def->original_id); + MEMCPY(argv+1, cfp->sp - num, VALUE, num); + cfp->sp += - num - 1; + val = rb_funcall2(recv, rb_intern("method_missing"), num+1, argv); + break; + } case VM_METHOD_TYPE_BMETHOD:{ VALUE *argv = ALLOCA_N(VALUE, num); MEMCPY(argv, cfp->sp - num, VALUE, num); @@ -611,7 +623,7 @@ vm_call_method(rb_thread_t *th, rb_control_frame_t *cfp, defined_class = RBASIC(defined_class)->klass; } - if (!rb_obj_is_kind_of(cfp->self, rb_class_real(defined_class))) { + if (!rb_obj_is_kind_of(cfp->self, defined_class)) { val = vm_method_missing(th, id, recv, num, blockptr, NOEX_PROTECTED); } else { @@ -778,7 +790,7 @@ vm_yield_setup_block_args(rb_thread_t *th, const rb_iseq_t * iseq, int argc = orig_argc; const int m = iseq->argc; VALUE ary, arg0; - rb_num_t opt_pc = 0; + int opt_pc = 0; th->mark_stack_len = argc; @@ -1024,7 +1036,7 @@ vm_getspecial(rb_thread_t *th, VALUE *lfp, VALUE key, rb_num_t type) } } else { - val = rb_reg_nth_match(type >> 1, backref); + val = rb_reg_nth_match((int)(type >> 1), backref); } } return val; @@ -1196,7 +1208,7 @@ vm_getivar(VALUE obj, ID id, IC ic) VALUE klass = RBASIC(obj)->klass; if (ic->ic_class == klass) { - long index = ic->ic_index; + long index = ic->ic_value.index; long len = ROBJECT_NUMIV(obj); VALUE *ptr = ROBJECT_IVPTR(obj); @@ -1212,11 +1224,11 @@ vm_getivar(VALUE obj, ID id, IC ic) if (iv_index_tbl) { if (st_lookup(iv_index_tbl, id, &index)) { - if (index < len) { + if ((long)index < len) { val = ptr[index]; } ic->ic_class = klass; - ic->ic_index = index; + ic->ic_value.index = index; } } } @@ -1250,7 +1262,7 @@ vm_setivar(VALUE obj, ID id, VALUE val, IC ic) st_data_t index; if (ic->ic_class == klass) { - long index = ic->ic_index; + long index = ic->ic_value.index; long len = ROBJECT_NUMIV(obj); VALUE *ptr = ROBJECT_IVPTR(obj); @@ -1264,7 +1276,7 @@ vm_setivar(VALUE obj, ID id, VALUE val, IC ic) if (iv_index_tbl && st_lookup(iv_index_tbl, (st_data_t)id, &index)) { ic->ic_class = klass; - ic->ic_index = index; + ic->ic_value.index = index; } /* fall through */ } @@ -1282,12 +1294,12 @@ vm_method_search(VALUE id, VALUE klass, IC ic) #if OPT_INLINE_METHOD_CACHE if (LIKELY(klass == ic->ic_class) && LIKELY(GET_VM_STATE_VERSION() == ic->ic_vmstat)) { - me = ic->ic_method; + me = ic->ic_value.method; } else { me = rb_method_entry(klass, id); ic->ic_class = klass; - ic->ic_method = me; + ic->ic_value.method = me; ic->ic_vmstat = GET_VM_STATE_VERSION(); } #else @@ -1519,7 +1531,7 @@ vm_expandarray(rb_control_frame_t *cfp, VALUE ary, rb_num_t num, int flag) rb_num_t space_size = num + is_splat; VALUE *base = cfp->sp, *ptr; volatile VALUE tmp_ary; - long len; + rb_num_t len; if (TYPE(ary) != T_ARRAY) { ary = rb_ary_to_ary(ary); @@ -1529,11 +1541,11 @@ vm_expandarray(rb_control_frame_t *cfp, VALUE ary, rb_num_t num, int flag) tmp_ary = ary; ptr = RARRAY_PTR(ary); - len = RARRAY_LEN(ary); + len = (rb_num_t)RARRAY_LEN(ary); if (flag & 0x02) { /* post: ..., nil ,ary[-1], ..., ary[0..-num] # top */ - long i = 0, j; + rb_num_t i = 0, j; if (len < num) { for (i=0; iobj))) { arg->label = FIX2INT((VALUE)data); diff --git a/vm_method.c b/vm_method.c index 1091eadbcd9688..9e5418afc3ee3f 100644 --- a/vm_method.c +++ b/vm_method.c @@ -8,9 +8,9 @@ static void rb_vm_check_redefinition_opt_method(const rb_method_entry_t *me); -static ID object_id; +static ID object_id, respond_to_missing; static ID removed, singleton_removed, undefined, singleton_undefined; -static ID added, singleton_added; +static ID added, singleton_added, attached; struct cache_entry { /* method hash table. */ ID mid; /* method's id */ @@ -141,6 +141,8 @@ rb_free_method_entry(rb_method_entry_t *me) xfree(me); } +static int rb_method_definition_eq(const rb_method_definition_t *d1, const rb_method_definition_t *d2); + static rb_method_entry_t * rb_add_method_def(VALUE klass, ID mid, rb_method_type_t type, rb_method_definition_t *def, rb_method_flag_t noex) { @@ -152,7 +154,7 @@ rb_add_method_def(VALUE klass, ID mid, rb_method_type_t type, rb_method_definiti klass = rb_cObject; } if (rb_safe_level() >= 4 && - (klass == rb_cObject || !OBJ_UNTRUSTED(klass))) { + (klass == rb_cObject || !OBJ_UNTRUSTED(klass))) { rb_raise(rb_eSecurityError, "Insecure: can't define method"); } if (!FL_TEST(klass, FL_SINGLETON) && @@ -165,7 +167,7 @@ rb_add_method_def(VALUE klass, ID mid, rb_method_type_t type, rb_method_definiti type == VM_METHOD_TYPE_CFUNC && mid == rb_intern("allocate")) { rb_warn("defining %s.allocate is deprecated; use rb_define_alloc_func()", - rb_class2name(rb_iv_get(klass, "__attached__"))); + rb_class2name(rb_ivar_get(klass, attached))); mid = ID_ALLOCATOR; } if (OBJ_FROZEN(klass)) { @@ -179,13 +181,34 @@ rb_add_method_def(VALUE klass, ID mid, rb_method_type_t type, rb_method_definiti rb_method_entry_t *old_me = (rb_method_entry_t *)data; rb_method_definition_t *old_def = old_me->def; - if (old_def == def) return old_me; + if (rb_method_definition_eq(old_def, def)) return old_me; rb_vm_check_redefinition_opt_method(old_me); if (RTEST(ruby_verbose) && + type != VM_METHOD_TYPE_UNDEF && old_def->alias_count == 0 && - old_def->type != VM_METHOD_TYPE_UNDEF) { + old_def->type != VM_METHOD_TYPE_UNDEF && + old_def->type != VM_METHOD_TYPE_ZSUPER) { + extern rb_iseq_t *rb_proc_get_iseq(VALUE proc, int *is_proc); + rb_iseq_t *iseq = 0; + rb_warning("method redefined; discarding old %s", rb_id2name(mid)); + switch (old_def->type) { + case VM_METHOD_TYPE_ISEQ: + iseq = old_def->body.iseq; + break; + case VM_METHOD_TYPE_BMETHOD: + iseq = rb_proc_get_iseq(old_def->body.proc, 0); + break; + default: + break; + } + if (iseq && !NIL_P(iseq->filename)) { + int line = iseq->insn_info_table ? rb_iseq_first_lineno(iseq) : 0; + rb_compile_warning(RSTRING_PTR(iseq->filename), line, + "previous definition of %s was here", + rb_id2name(old_def->original_id)); + } } rb_free_method_entry(old_me); } @@ -212,16 +235,26 @@ rb_add_method_def(VALUE klass, ID mid, rb_method_type_t type, rb_method_definiti st_insert(mtbl, mid, (st_data_t) me); + return me; +} + +#define CALL_METHOD_HOOK(klass, hook, mid) do { \ + const VALUE arg = ID2SYM(mid); \ + VALUE recv_class = klass; \ + ID hook_id = hook; \ + if (FL_TEST(klass, FL_SINGLETON)) { \ + recv_class = rb_ivar_get(klass, attached); \ + hook_id = singleton_##hook; \ + } \ + rb_funcall2(recv_class, hook_id, 1, &arg); \ + } while (0) + +static void +method_added(VALUE klass, ID mid) +{ if (mid != ID_ALLOCATOR && ruby_running) { - if (FL_TEST(klass, FL_SINGLETON)) { - rb_funcall(rb_iv_get(klass, "__attached__"), singleton_added, 1, ID2SYM(mid)); - } - else { - rb_funcall(klass, added, 1, ID2SYM(mid)); - } + CALL_METHOD_HOOK(klass, added, mid); } - - return me; } rb_method_entry_t * @@ -260,6 +293,7 @@ rb_add_method(VALUE klass, ID mid, rb_method_type_t type, void *opts, rb_method_ default: rb_bug("rb_add_method: unsupported method type (%d)\n", type); } + method_added(klass, mid); return me; } @@ -267,7 +301,9 @@ rb_method_entry_t * rb_add_method_me(VALUE klass, ID mid, const rb_method_entry_t *me, rb_method_flag_t noex) { rb_method_type_t type = me->def ? me->def->type : VM_METHOD_TYPE_UNDEF; - return rb_add_method_def(klass, mid, type, me->def, noex); + rb_method_entry_t *newme = rb_add_method_def(klass, mid, type, me->def, noex); + method_added(klass, mid); + return newme; } void @@ -361,8 +397,8 @@ rb_method_entry(VALUE klass, ID id) return rb_get_method_entry(klass, id); } -void -rb_remove_method_id(VALUE klass, ID mid) +static void +remove_method(VALUE klass, ID mid) { st_data_t data; rb_method_entry_t *me = 0; @@ -379,33 +415,26 @@ rb_remove_method_id(VALUE klass, ID mid) rb_warn("removing `%s' may cause serious problems", rb_id2name(mid)); } - if (st_lookup(RCLASS_M_TBL(klass), mid, &data)) { - me = (rb_method_entry_t *)data; - if (!me || (me->def && me->def->type == VM_METHOD_TYPE_UNDEF)) { - me = 0; - } - else { - st_delete(RCLASS_M_TBL(klass), &mid, &data); - } - } - if (!me) { + if (!st_lookup(RCLASS_M_TBL(klass), mid, &data) || + !(me = (rb_method_entry_t *)data) || + (!me->def || me->def->type == VM_METHOD_TYPE_UNDEF)) { rb_name_error(mid, "method `%s' not defined in %s", rb_id2name(mid), rb_class2name(klass)); } + st_delete(RCLASS_M_TBL(klass), &mid, &data); rb_vm_check_redefinition_opt_method(me); rb_clear_cache_for_undef(klass, mid); rb_free_method_entry(me); - if (FL_TEST(klass, FL_SINGLETON)) { - rb_funcall(rb_iv_get(klass, "__attached__"), singleton_removed, 1, ID2SYM(mid)); - } - else { - rb_funcall(klass, removed, 1, ID2SYM(mid)); - } + CALL_METHOD_HOOK(klass, removed, mid); } -#define remove_method(klass, mid) rb_remove_method_id(klass, mid) +void +rb_remove_method_id(VALUE klass, ID mid) +{ + remove_method(klass, mid); +} void rb_remove_method(VALUE klass, const char *name) @@ -448,7 +477,7 @@ rb_enable_super(VALUE klass, const char *name) } static void -rb_export_method(VALUE klass, ID name, ID noex) +rb_export_method(VALUE klass, ID name, rb_method_flag_t noex) { rb_method_entry_t *me; @@ -483,15 +512,17 @@ rb_method_boundp(VALUE klass, ID id, int ex) rb_method_entry_t *me = rb_method_entry(klass, id); if (me != 0) { - if (ex && (me->flag & NOEX_PRIVATE)) { - return Qfalse; + if ((ex & ~NOEX_RESPONDS) && (me->flag & NOEX_PRIVATE)) { + return FALSE; } - if (!me->def || me->def->type == VM_METHOD_TYPE_NOTIMPLEMENTED) { - return Qfalse; + if (!me->def) return 0; + if (me->def->type == VM_METHOD_TYPE_NOTIMPLEMENTED) { + if (ex & NOEX_RESPONDS) return 2; + return 0; } - return Qtrue; + return 1; } - return Qfalse; + return 0; } void @@ -543,6 +574,9 @@ rb_undef(VALUE klass, ID id) { rb_method_entry_t *me; + if (NIL_P(klass)) { + rb_raise(rb_eTypeError, "no class to undef method"); + } if (rb_vm_cbase() == rb_cObject && klass == rb_cObject) { rb_secure(4); } @@ -561,7 +595,7 @@ rb_undef(VALUE klass, ID id) VALUE c = klass; if (FL_TEST(c, FL_SINGLETON)) { - VALUE obj = rb_iv_get(klass, "__attached__"); + VALUE obj = rb_ivar_get(klass, attached); switch (TYPE(obj)) { case T_MODULE: @@ -579,12 +613,7 @@ rb_undef(VALUE klass, ID id) rb_add_method(klass, id, VM_METHOD_TYPE_UNDEF, 0, NOEX_PUBLIC); - if (FL_TEST(klass, FL_SINGLETON)) { - rb_funcall(rb_iv_get(klass, "__attached__"), singleton_undefined, 1, ID2SYM(id)); - } - else { - rb_funcall(klass, undefined, 1, ID2SYM(id)); - } + CALL_METHOD_HOOK(klass, undefined, id); } /* @@ -669,13 +698,17 @@ rb_mod_undef_method(int argc, VALUE *argv, VALUE mod) static VALUE rb_mod_method_defined(VALUE mod, VALUE mid) { - return rb_method_boundp(mod, rb_to_id(mid), 1); + if (!rb_method_boundp(mod, rb_to_id(mid), 1)) { + return Qfalse; + } + return Qtrue; + } #define VISI_CHECK(x,f) (((x)&NOEX_MASK) == (f)) static VALUE -check_definition(VALUE mod, VALUE mid, rb_method_flag_t noex) +check_definition(VALUE mod, ID mid, rb_method_flag_t noex) { const rb_method_entry_t *me; me = rb_method_entry(mod, mid); @@ -785,10 +818,14 @@ rb_mod_protected_method_defined(VALUE mod, VALUE mid) int rb_method_entry_eq(const rb_method_entry_t *m1, const rb_method_entry_t *m2) { - const rb_method_definition_t *d1 = m1->def, *d2 = m2->def; - if (!d1) { - return !d2; - } + return rb_method_definition_eq(m1->def, m2->def); +} + +static int +rb_method_definition_eq(const rb_method_definition_t *d1, const rb_method_definition_t *d2) +{ + if (d1 == d2) return 1; + if (!d1 || !d2) return 0; if (d1->type != d2->type) { return 0; } @@ -803,7 +840,9 @@ rb_method_entry_eq(const rb_method_entry_t *m1, const rb_method_entry_t *m2) case VM_METHOD_TYPE_IVAR: return d1->body.attr_id == d2->body.attr_id; case VM_METHOD_TYPE_BMETHOD: - return d1->body.proc == d2->body.proc; + return RTEST(rb_equal(d1->body.proc, d2->body.proc)); + case VM_METHOD_TYPE_MISSING: + return d1->original_id == d2->original_id; case VM_METHOD_TYPE_ZSUPER: case VM_METHOD_TYPE_NOTIMPLEMENTED: case VM_METHOD_TYPE_UNDEF: @@ -811,7 +850,7 @@ rb_method_entry_eq(const rb_method_entry_t *m1, const rb_method_entry_t *m2) case VM_METHOD_TYPE_OPTIMIZED: return d1->body.optimize_type == d2->body.optimize_type; default: - rb_bug("rb_add_method: unsupported method type (%d)\n", d1->type); + rb_bug("rb_method_entry_eq: unsupported method type (%d)\n", d1->type); return 0; } } @@ -820,7 +859,10 @@ void rb_alias(VALUE klass, ID name, ID def) { rb_method_entry_t *orig_me; - VALUE singleton = 0; + + if (NIL_P(klass)) { + rb_raise(rb_eTypeError, "no class to make alias"); + } rb_frozen_class_p(klass); if (klass == rb_cObject) { @@ -835,22 +877,8 @@ rb_alias(VALUE klass, ID name, ID def) rb_print_undef(klass, def, 0); } } - if (FL_TEST(klass, FL_SINGLETON)) { - singleton = rb_iv_get(klass, "__attached__"); - } rb_add_method_me(klass, name, orig_me, orig_me->flag); - - if (!ruby_running) return; - - rb_clear_cache_by_id(name); - - if (singleton) { - rb_funcall(singleton, singleton_added, 1, ID2SYM(name)); - } - else { - rb_funcall(klass, added, 1, ID2SYM(name)); - } } /* @@ -892,7 +920,7 @@ secure_visibility(VALUE self) } static void -set_method_visibility(VALUE self, int argc, VALUE *argv, ID ex) +set_method_visibility(VALUE self, int argc, VALUE *argv, rb_method_flag_t ex) { int i; secure_visibility(self); @@ -1127,30 +1155,41 @@ rb_method_basic_definition_p(VALUE klass, ID id) return 0; } +static inline int +basic_obj_respond_to(VALUE obj, ID id, int pub) +{ + VALUE klass = CLASS_OF(obj); + + switch (rb_method_boundp(klass, id, pub|NOEX_RESPONDS)) { + case 2: + return FALSE; + case 0: + return RTEST(rb_funcall(obj, respond_to_missing, 2, ID2SYM(id), pub ? Qfalse : Qtrue)); + default: + return TRUE; + } +} + int rb_obj_respond_to(VALUE obj, ID id, int priv) { VALUE klass = CLASS_OF(obj); if (rb_method_basic_definition_p(klass, idRespond_to)) { - return rb_method_boundp(klass, id, !priv); + return basic_obj_respond_to(obj, id, !RTEST(priv)); } else { - VALUE args[2]; - int n = 0; - args[n++] = ID2SYM(id); - if (priv) - args[n++] = Qtrue; - return RTEST(rb_funcall2(obj, idRespond_to, n, args)); + return RTEST(rb_funcall(obj, idRespond_to, priv ? 2 : 1, ID2SYM(id), Qtrue)); } } int rb_respond_to(VALUE obj, ID id) { - return rb_obj_respond_to(obj, id, Qfalse); + return rb_obj_respond_to(obj, id, FALSE); } + /* * call-seq: * obj.respond_to?(symbol, include_private=false) => true or false @@ -1162,6 +1201,9 @@ rb_respond_to(VALUE obj, ID id) * If the method is not implemented, * as Process.fork on Windows, File.lchmod on GNU/Linux, etc., * false is returned. + * + * If the method is not defined, respond_to_missing? + * method is called and the result is returned. */ static VALUE @@ -1172,9 +1214,23 @@ obj_respond_to(int argc, VALUE *argv, VALUE obj) rb_scan_args(argc, argv, "11", &mid, &priv); id = rb_to_id(mid); - if (rb_method_boundp(CLASS_OF(obj), id, !RTEST(priv))) { + if (basic_obj_respond_to(obj, id, !RTEST(priv))) return Qtrue; - } + return Qfalse; +} + +/* + * call-seq: + * obj.respond_to_missing?(symbol, include_private) => true or false + * + * Hook method to return whether the _obj_ can respond to _id_ method + * or not. + * + * See #respond_to?. + */ +static VALUE +obj_respond_to_missing(VALUE obj, VALUE priv) +{ return Qfalse; } @@ -1185,6 +1241,7 @@ Init_eval_method(void) #define rb_intern(str) rb_intern_const(str) rb_define_method(rb_mKernel, "respond_to?", obj_respond_to, -1); + rb_define_method(rb_mKernel, "respond_to_missing?", obj_respond_to_missing, 2); rb_define_private_method(rb_cModule, "remove_method", rb_mod_remove_method, -1); rb_define_private_method(rb_cModule, "undef_method", rb_mod_undef_method, -1); @@ -1211,5 +1268,7 @@ Init_eval_method(void) singleton_removed = rb_intern("singleton_method_removed"); undefined = rb_intern("method_undefined"); singleton_undefined = rb_intern("singleton_method_undefined"); + attached = rb_intern("__attached__"); + respond_to_missing = rb_intern("respond_to_missing?"); } diff --git a/win32/Makefile.sub b/win32/Makefile.sub index 416921403efc6b..a27cfba707944b 100644 --- a/win32/Makefile.sub +++ b/win32/Makefile.sub @@ -116,8 +116,12 @@ PLATFORM = mswin32 !if !defined(RT) !error RT not defined. Retry from configure pass. !endif +!ifdef NTVER +ARCHDEFS = -D_WIN32_WINNT=$(NTVER) $(ARCHDEFS) +!endif arch = $(ARCH)-$(PLATFORM) +sitearch = $(ARCH)-$(RT) !if !defined(ruby_version) ruby_version = $(MAJOR).$(MINOR).$(TEENY) !endif @@ -150,8 +154,28 @@ TESTUI = console !ifndef TESTS TESTS = !endif -!ifndef RDOCTARGET -RDOCTARGET = install-doc +!ifndef CAPITARGET +! ifdef DOXYGEN +CAPITARGET = capi +! else +CAPITARGET = nodoc +! endif +!endif +!ifndef DOCTARGETS +! if "$(RDOCTARGET)" == "rdoc" || "$(RDOCTARGET)" == "" +DOCTARGETS = $(DOCTARGETS) rdoc +! endif +! if "$(CAPITARGET)" == "capi" +DOCTARGETS = $(DOCTARGETS) capi +! endif +!endif +!ifndef INSTALLDOC +! if "$(DOCTARGETS)" != "" +INSTALLDOC = all +! else +INSTALLDOC = nodoc +DOCTARGETS = nodoc +! endif !endif OUTFLAG = -Fe @@ -205,9 +229,9 @@ XCFLAGS = -DRUBY_EXPORT -I. -I$(arch_hdrdir) -I$(hdrdir) -I$(srcdir) -I$(srcdir) !if $(MSC_VER) >= 1400 # Prevents VC++ 2005 (cl ver 14) warnings MANIFESTTOOL = mt -nologo -LDSHARED_0 = @$(MINIRUBY) -run -e wait_writable -- -n 10 $@ -LDSHARED_1 = $(MANIFESTTOOL) -manifest $(@).manifest -outputresource:$(@);2 -LDSHARED_2 = @$(RM) $(@:/=\).manifest +LDSHARED_0 = @if exist $(@).manifest $(MINIRUBY) -run -e wait_writable -- -n 10 $@ +LDSHARED_1 = @if exist $(@).manifest $(MANIFESTTOOL) -manifest $(@).manifest -outputresource:$(@);2 +LDSHARED_2 = @if exist $(@).manifest @$(RM) $(@:/=\).manifest !endif CPPFLAGS = $(DEFS) $(ARCHDEFS) $(CPPFLAGS) @@ -218,6 +242,7 @@ LIBRUBY_LDSHARED = $(LDSHARED) LIBRUBY_DLDFLAGS = $(EXTLDFLAGS) -implib:dummy.lib -def:$(RUBYDEF) EXEEXT = .exe +EXECUTABLE_EXTS = ".exe",".com",".cmd",".bat" !if !defined(PROGRAM) PROGRAM=$(RUBY_INSTALL_NAME)$(EXEEXT) !endif @@ -234,6 +259,11 @@ RUNRUBY = .\$(PROGRAM) -I$(srcdir)/lib -I"$(EXTOUT)/$(arch)" !endif MINIRUBY = $(MINIRUBY) $(MINIRUBYOPT) RUNRUBY = $(RUNRUBY) "$(srcdir)/tool/runruby.rb" --extout="$(EXTOUT)" $(RUNRUBYOPT) -- +!if $(CROSS_COMPILING) +XRUBY = $(MINIRUBY) +!else +XRUBY = $(RUNRUBY) +!endif !ifndef RUBY RUBY = ruby !endif @@ -370,6 +400,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub !if "$(ENABLE_WIN95)" == "yes" && "$(MACHINE)" == "x86" #define WIN95 1 !endif +#define RT_VER $(RT_VER) #define STDC_HEADERS 1 #define HAVE_SYS_TYPES_H 1 #define HAVE_SYS_STAT_H 1 @@ -402,7 +433,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub !endif #define SIZEOF_FLOAT 4 #define SIZEOF_DOUBLE 8 -!if $(MSC_VER) >= 1400 +!if $(RT_VER) >= 80 #define SIZEOF_TIME_T 8 #define TIMET2NUM(v) LL2NUM(v) #define NUM2TIMET(v) NUM2LL(v) @@ -533,6 +564,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub #define DEFAULT_KCODE KCODE_NONE #define LOAD_RELATIVE 1 #define DLEXT ".so" +#define EXECUTABLE_EXTS $(EXECUTABLE_EXTS) #define RUBY_LIB_VERSION_STYLE 3 /* full */ #define RUBY_LIB_PREFIX "/lib/$(RUBY_BASE_NAME)" #define RUBY_LIB RUBY_LIB_PREFIX"/"RUBY_LIB_VERSION @@ -541,6 +573,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub #define RUBY_VENDOR_LIB RUBY_LIB_PREFIX"/vendor_ruby" #define RUBY_VENDOR_LIB2 RUBY_VENDOR_LIB"/"RUBY_LIB_VERSION #define RUBY_PLATFORM "$(arch)" +#define RUBY_SITEARCH "$(sitearch)" #define RUBY_COREDLL "$(RT)" #define RUBY_ARCHLIB RUBY_LIB"/"RUBY_ARCH #define RUBY_SITE_ARCHLIB RUBY_SITE_LIB2"/"RUBY_SITEARCH @@ -595,9 +628,10 @@ s,@localstatedir@,/var,;t t s,@libdir@,$${exec_prefix}/lib,;t t s,@includedir@,$${prefix}/include,;t t s,@oldincludedir@,/usr/include,;t t -s,@infodir@,$${prefix}/info,;t t -s,@mandir@,$${prefix}/man,;t t -s,@ridir@,$${prefix}/share/ri,;t t +s,@infodir@,$${datadir}/info,;t t +s,@mandir@,$${datadir}/man,;t t +s,@ridir@,$${datadir}/ri,;t t +s,@docdir@,$${datadir}/doc/$${RUBY_BASE_NAME},;t t s,@build@,$(CPU)-pc-$(PLATFORM),;t t s,@build_alias@,$(CPU)-$(PLATFORM),;t t s,@build_cpu@,$(CPU),;t t @@ -630,6 +664,7 @@ s,@LIBOBJS@,$(LIBOBJS),;t t s,@ALLOCA@,$(ALLOCA),;t t s,@DEFAULT_KCODE@,$(DEFAULT_KCODE),;t t s,@EXEEXT@,.exe,;t t +s,@EXECUTABLE_EXTS@,$(EXECUTABLE_EXTS),;t t s,@OBJEXT@,$(OBJEXT),;t t s,@XCFLAGS@,$(XCFLAGS),;t t s,@XLDFLAGS@,$(XLDFLAGS),;t t @@ -675,9 +710,9 @@ s,@RPATHFLAG@,,;t t s,@LIBARG@,%s.lib,;t t s,@LINK_SO@,$$(LDSHARED) -Fe$$(@) $$(OBJS) $$(LIBS) $$(LOCAL_LIBS) -link $$(DLDFLAGS) -implib:$$(*F:.so=)-$$(arch).lib -pdb:$$(*F:.so=)-$$(arch).pdb -def:$$(DEFFILE),;t t !if $(MSC_VER) >= 1400 -s,@LINK_SO@,@$$(RUBY) -run -e wait_writable -- -n 10 $$(@),;t t -s,@LINK_SO@,$(MANIFESTTOOL) -manifest $$(@).manifest -outputresource:$$(@);2,;t t -s,@LINK_SO@,@$$(RM) $$(@:/=\).manifest,;t t +s,@LINK_SO@,@if exist $$(@).manifest $$(RUBY) -run -e wait_writable -- -n 10 $$(@),;t t +s,@LINK_SO@,@if exist $$(@).manifest $(MANIFESTTOOL) -manifest $$(@).manifest -outputresource:$$(@);2,;t t +s,@LINK_SO@,@if exist $$(@).manifest $$(RM) $$(@:/=\).manifest,;t t !endif s,@COMPILE_C@,$$(CC) $$(INCFLAGS) $$(CFLAGS) $$(CPPFLAGS) $$(COUTFLAG)$$(@) -c -Tc$$(<:\=/),;t t s,@COMPILE_CXX@,$$(CXX) $$(INCFLAGS) $$(CXXFLAGS) $$(CPPFLAGS) $$(COUTFLAG)$$(@) -c -Tp$$(<:\=/),;t t @@ -709,7 +744,7 @@ s,@try_header@,try_compile,;t t miniruby: miniruby$(EXEEXT) miniruby$(EXEEXT): - @echo. $(LIBS) + @echo $(LIBS) $(PURIFY) $(CC) $(MAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(DMYEXT) $(LIBS) -Fe$@ -link $(LDFLAGS) @$(RM) miniruby.lib miniruby.exp miniruby.exe -v @@ -745,7 +780,7 @@ $(LIBRUBY): $(RUBYDEF) $(AR) $(ARFLAGS)$@ -def:$(RUBYDEF) $(LIBRUBY_SO): $(LIBRUBY_A) $(DLDOBJS) $(RUBYDEF) $(RUBY_SO_NAME).res - @echo. $(DLDOBJS) + @echo $(DLDOBJS) @-$(PRE_LIBRUBY_UPDATE) $(LDSHARED) $(MAINOBJ) $(DLDOBJS) $(LIBRUBY_A) \ $(RUBY_SO_NAME).res $(LIBS) -Fe$@ -link $(LDFLAGS) \ @@ -855,7 +890,7 @@ lex.c: {$(srcdir)}lex.c.blt copy $(?:/=\) $@ enc/unicode/name2ctype.h: {$(srcdir)}enc/unicode/name2ctype.h.blt - @md $(@D:/=\) + @if not exist $(@D:/=\) md $(@D:/=\) copy $(?:/=\) $(@:/=\) $(OBJS): {$(hdrdir)/ruby}win32.h @@ -871,7 +906,9 @@ INSNS = opt_sc.inc optinsn.inc optunifs.inc insns.inc insns_info.inc \ !ifdef insns make_insns_rules: @type << -$(insns): $$(srcdir)/insns.def {$$(VPATH)}vm_opts.h $$(srcdir)/defs/opt_operand.def $$(srcdir)/defs/opt_insn_unif.def +$(insns): $$(srcdir)/insns.def {$$(VPATH)}vm_opts.h \ + $$(srcdir)/defs/opt_operand.def $$(srcdir)/defs/opt_insn_unif.def \ + $$(srcdir)/tool/instruction.rb $$(srcdir)/tool/insns2vm.rb @$$(RM) $$(PROGRAM) $$(BASERUBY) -Ks $$(srcdir)/tool/insns2vm.rb $$(INSNS2VMOPT) $(insns) diff --git a/win32/configure.bat b/win32/configure.bat index 8c157927e429fa..ad002665285eb0 100755 --- a/win32/configure.bat +++ b/win32/configure.bat @@ -32,6 +32,7 @@ if "%1" == "--path" goto :path if "%1" == "--with-baseruby" goto :baseruby if "%1" == "-h" goto :help if "%1" == "--help" goto :help +if "%1" == "--with-ntver" goto :ntver echo>>confargs.tmp %1 \ shift goto :loop @@ -88,12 +89,12 @@ goto :loop shift goto :loop :enable-rdoc - echo>> ~tmp~.mak "RDOCTARGET=install-doc" \ + echo>> ~tmp~.mak "RDOCTARGET=rdoc" \ echo>>confargs.tmp %1 \ shift goto :loop :disable-rdoc - echo>> ~tmp~.mak "RDOCTARGET=install-nodoc" \ + echo>> ~tmp~.mak "RDOCTARGET=nodoc" \ echo>>confargs.tmp %1 \ shift goto :loop @@ -107,6 +108,12 @@ goto :loop echo>>confargs.tmp %1 \ shift goto :loop +:ntver + echo>> ~tmp~.mak "NTVER=%2" \ + echo>>confargs.tmp %1=%2 \ + shift + shift +goto :loop :extout echo>> ~tmp~.mak "EXTOUT=%2" \ echo>>confargs.tmp %1=%2 \ @@ -137,7 +144,8 @@ goto :loop echo --with-baseruby=RUBY use RUBY as baseruby [ruby] echo --with-static-linked-ext link external modules statically echo --disable-install-doc do not install rdoc indexes during install - echo --enable-win95 enable win95 support + echo --disable-win95 disable win95 support + echo --with-ntver=0xXXXX target NT version (shouldn't use with old SDK) del *.tmp del ~tmp~.mak goto :exit @@ -161,5 +169,8 @@ if exist pathlist.tmp echo>>~setup~.mak LIB = $(pathlist:;=/lib;) type>>~setup~.mak ~tmp~.mak del *.tmp > nul del ~tmp~.mak > nul -nmake -alf ~setup~.mak +echo>>~setup~.mak @if exist Makefile.old del Makefile.old +echo>>~setup~.mak @if exist Makefile ren Makefile Makefile.old +echo>>~setup~.mak @ren Makefile.new Makefile +nmake -alf ~setup~.mak MAKEFILE=Makefile.new :exit diff --git a/win32/mkexports.rb b/win32/mkexports.rb index 36c04d8e4dc667..6ef20eab69e1ef 100755 --- a/win32/mkexports.rb +++ b/win32/mkexports.rb @@ -144,7 +144,7 @@ def each_line(objs, &block) def each_export(objs) objdump(objs) do |l| next if /@.*@/ =~ l - yield $2, !$1 if /\s(?:(T)|[[:upper:]])\s_((?!Init_|DllMain@).*)$/ =~ l + yield $2, !$1 if /\s(?:(T)|[[:upper:]])\s_((?!Init_|.*_threadptr_|DllMain@).*)$/ =~ l end end end diff --git a/win32/setup.mak b/win32/setup.mak index c900fe0d9fbd4c..b6fb6acad365a1 100644 --- a/win32/setup.mak +++ b/win32/setup.mak @@ -55,6 +55,9 @@ EXTOUT = $(EXTOUT) !if defined(BASERUBY) BASERUBY = $(BASERUBY) !endif +!if defined(NTVER) +NTVER = $(NTVER) +!endif << !if !defined(BASERUBY) @for %I in (ruby.exe) do @echo BASERUBY = %~s$$PATH:I >> $(MAKEFILE) @@ -73,12 +76,13 @@ BASERUBY = $(BASERUBY) @echo TARGET_OS = mswin64 >>$(MAKEFILE) -runtime-: nul - @$(CC) -MD < nul + $(CC) -MD < nul #include #include #include #include #include +#include #ifndef MAXPATHLEN # define MAXPATHLEN 1024 #endif @@ -127,8 +131,10 @@ runtime_name() } else { printf("PLATFORM = $$(TARGET_OS)\n"); + ver = "60"; } printf("RT = %s\n", base); + printf("RT_VER = %s\n", ver); return 1; } diff --git a/win32/win32.c b/win32/win32.c index 1d6a4a68e488fe..7a815506325d53 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -253,7 +253,7 @@ GetCurrentThreadHandle(void) i = 0; \ else { \ DWORD err = GetLastError(); \ - if (err == ERROR_LOCK_VIOLATION) \ + if (err == ERROR_LOCK_VIOLATION || err == ERROR_IO_PENDING) \ errno = EWOULDBLOCK; \ else if (err == ERROR_NOT_LOCKED) \ i = 0; \ @@ -501,7 +501,7 @@ init_func(void) static void init_stdhandle(void); -#if _MSC_VER >= 1400 +#if RT_VER >= 80 static void invalid_parameter(const wchar_t *expr, const wchar_t *func, const wchar_t *file, unsigned int line, uintptr_t dummy) { @@ -575,7 +575,7 @@ StartSockets(void) void rb_w32_sysinit(int *argc, char ***argv) { -#if _MSC_VER >= 1400 +#if RT_VER >= 80 static void set_pioinfo_extra(void); _CrtSetReportMode(_CRT_ASSERT, 0); @@ -1054,7 +1054,7 @@ rb_w32_spawn(int mode, const char *cmd, const char *prog) cmd = tmp; } else { - int len = 0, quote = (*cmd == '"') ? '"' : 0; + int len = 0, quote = (*cmd == '"') ? '"' : (*cmd == '\'') ? '\'' : 0; for (prog = cmd + !!quote;; prog = CharNext(prog)) { if (!*prog) { len = prog - cmd; @@ -1882,7 +1882,7 @@ typedef struct { int lockinitflag; CRITICAL_SECTION lock; #endif -#if _MSC_VER >= 1400 +#if RT_VER >= 80 char textmode; char pipech2[2]; #endif @@ -1903,7 +1903,7 @@ EXTERN_C _CRTIMP ioinfo * __pioinfo[]; #define _osfile(i) (_pioinfo(i)->osfile) #define _pipech(i) (_pioinfo(i)->pipech) -#if _MSC_VER >= 1400 +#if RT_VER >= 80 static size_t pioinfo_extra = 0; /* workaround for VC++8 SP1 */ static void @@ -2065,9 +2065,6 @@ char * rb_w32_strerror(int e) { static char buffer[512]; -#if !defined __MINGW32__ - extern int sys_nerr; -#endif DWORD source = 0; char *p; @@ -2783,7 +2780,7 @@ overlapped_socket_io(BOOL input, int fd, char *buf, int len, int flags, errno = map_errno(err); r = -1; } - CloseHandle(&wol.hEvent); + CloseHandle(wol.hEvent); } return r; @@ -2871,8 +2868,10 @@ recvmsg(int fd, struct msghdr *msg, int flags) DWORD dmy; WSAIoctl(s, SIO_GET_EXTENSION_FUNCTION_POINTER, &guid, sizeof(guid), &pWSARecvMsg, sizeof(pWSARecvMsg), &dmy, NULL, NULL); - if (!pWSARecvMsg) - rb_notimplement(); + if (!pWSARecvMsg) { + errno = ENOSYS; + return -1; + } } msghdr_to_wsamsg(msg, &wsamsg); @@ -2927,7 +2926,7 @@ recvmsg(int fd, struct msghdr *msg, int flags) errno = map_errno(err); len = -1; } - CloseHandle(&wol.hEvent); + CloseHandle(wol.hEvent); } if (ret == SOCKET_ERROR) return -1; @@ -2962,8 +2961,10 @@ sendmsg(int fd, const struct msghdr *msg, int flags) DWORD dmy; WSAIoctl(s, SIO_GET_EXTENSION_FUNCTION_POINTER, &guid, sizeof(guid), &pWSASendMsg, sizeof(pWSASendMsg), &dmy, NULL, NULL); - if (!pWSASendMsg) - rb_notimplement(); + if (!pWSASendMsg) { + errno = ENOSYS; + return -1; + } } msghdr_to_wsamsg(msg, &wsamsg); @@ -3017,7 +3018,7 @@ sendmsg(int fd, const struct msghdr *msg, int flags) errno = map_errno(err); len = -1; } - CloseHandle(&wol.hEvent); + CloseHandle(wol.hEvent); } return len; @@ -3710,7 +3711,7 @@ link(const char *from, const char *to) if (hKernel) { pCreateHardLink = (BOOL (WINAPI *)(LPCTSTR, LPCTSTR, LPSECURITY_ATTRIBUTES))GetProcAddress(hKernel, "CreateHardLinkA"); if (!pCreateHardLink) { - rb_notimplement(); + myerrno = ENOSYS; } } else { @@ -4054,6 +4055,20 @@ rb_w32_stati64(const char *path, struct stati64 *st) return ret; } +int +rb_w32_access(const char *path, int mode) +{ + struct stati64 stat; + if (rb_w32_stati64(path, &stat) != 0) + return -1; + mode <<= 6; + if ((stat.st_mode & mode) != mode) { + errno = EACCES; + return -1; + } + return 0; +} + static int rb_chsize(HANDLE h, off_t size) { @@ -4412,13 +4427,12 @@ rb_w32_free_environ(char **env) free(env); } -#undef getpid rb_pid_t rb_w32_getpid(void) { rb_pid_t pid; - pid = getpid(); + pid = GetCurrentProcessId(); (void)IfWin95(pid = -pid, 0); @@ -5239,3 +5253,17 @@ rb_w32_fsopen(const char *path, const char *mode, int shflags) return f; } #endif + +#if defined(_MSC_VER) && RT_VER <= 60 +extern long _ftol(double); +long +_ftol2(double d) +{ + return _ftol(d); +} +long +_ftol2_sse(double d) +{ + return _ftol(d); +} +#endif