diff --git a/src/regex/__init__.py b/src/regex/__init__.py index 3f417f9156..aba61ad388 100644 --- a/src/regex/__init__.py +++ b/src/regex/__init__.py @@ -76,9 +76,21 @@ The special characters are: (? Matches the text matched by the group named name. \G Matches the empty string, but only at the position where the search started. + \K Keeps only what follows for the entire match. \L Named list. The list is provided as a keyword argument. \m Matches the empty string, but only at the start of a word. \M Matches the empty string, but only at the end of a word. @@ -188,6 +201,8 @@ these flags can also be set within an RE: when matching a bytestring. B b BESTMATCH Find the best fuzzy match (default is first). D DEBUG Print the parsed pattern. + E e ENHANCEMATCH Attempt to improve the fit after finding the first + fuzzy match. F f FULLCASE Use full case-folding when performing case-insensitive matching in Unicode. I i IGNORECASE Perform case-insensitive matching. @@ -196,8 +211,7 @@ these flags can also be set within an RE: M m MULTILINE "^" matches the beginning of lines (after a newline) as well as the string. "$" matches the end of lines (before a newline) as well as the end of the string. - E e ENHANCEMATCH Attempt to improve the fit after finding the first - fuzzy match. + P p POSIX Perform POSIX-standard matching (leftmost longest). R r REVERSE Searches backwards. S s DOTALL "." matches any character at all, including the newline. @@ -221,11 +235,11 @@ __all__ = ["compile", "escape", "findall", "finditer", "fullmatch", "match", "purge", "search", "split", "splititer", "sub", "subf", "subfn", "subn", "template", "Scanner", "A", "ASCII", "B", "BESTMATCH", "D", "DEBUG", "E", "ENHANCEMATCH", "S", "DOTALL", "F", "FULLCASE", "I", "IGNORECASE", "L", - "LOCALE", "M", "MULTILINE", "R", "REVERSE", "T", "TEMPLATE", "U", "UNICODE", - "V0", "VERSION0", "V1", "VERSION1", "X", "VERBOSE", "W", "WORD", "error", - "Regex"] + "LOCALE", "M", "MULTILINE", "P", "POSIX", "R", "REVERSE", "T", "TEMPLATE", + "U", "UNICODE", "V0", "VERSION0", "V1", "VERSION1", "X", "VERBOSE", "W", + "WORD", "error", "Regex"] -__version__ = "2.4.66" +__version__ = "2.4.105" # -------------------------------------------------------------------- # Public interface. @@ -341,50 +355,27 @@ def template(pattern, flags=0): def escape(pattern, special_only=False): "Escape all non-alphanumeric characters or special characters in pattern." - if isinstance(pattern, unicode): - s = [] - if special_only: - for c in pattern: - if c in _METACHARS: - s.append(u"\\") - s.append(c) - elif c == u"\x00": - s.append(u"\\000") - else: - s.append(c) - else: - for c in pattern: - if c in _ALNUM: - s.append(c) - elif c == u"\x00": - s.append(u"\\000") - else: - s.append(u"\\") - s.append(c) - - return u"".join(s) + s = [] + if special_only: + for c in pattern: + if c in _METACHARS: + s.append("\\") + s.append(c) + elif c == "\x00": + s.append("\\000") + else: + s.append(c) else: - s = [] - if special_only: - for c in pattern: - if c in _METACHARS: - s.append("\\") - s.append(c) - elif c == "\x00": - s.append("\\000") - else: - s.append(c) - else: - for c in pattern: - if c in _ALNUM: - s.append(c) - elif c == "\x00": - s.append("\\000") - else: - s.append("\\") - s.append(c) + for c in pattern: + if c in _ALNUM: + s.append(c) + elif c == "\x00": + s.append("\\000") + else: + s.append("\\") + s.append(c) - return "".join(s) + return pattern[ : 0].join(s) # -------------------------------------------------------------------- # Internals. @@ -478,10 +469,10 @@ def _compile(pattern, flags=0, kwargs={}): # Set the default version in the core code in case it has been changed. _regex_core.DEFAULT_VERSION = DEFAULT_VERSION - caught_exception = None global_flags = flags while True: + caught_exception = None try: source = _Source(pattern) info = _Info(global_flags, source.char_type, kwargs) @@ -522,15 +513,23 @@ def _compile(pattern, flags=0, kwargs={}): # Remember whether this pattern as an inline locale flag. _locale_sensitive[locale_key] = info.inline_locale + # Fix the group references. + caught_exception = None + try: + parsed.fix_groups(pattern, reverse, False) + except error, e: + caught_exception = e + + if caught_exception: + raise error(caught_exception.msg, caught_exception.pattern, + caught_exception.pos) + # Should we print the parsed pattern? if flags & DEBUG: parsed.dump(indent=0, reverse=reverse) - # Fix the group references. - parsed.fix_groups(pattern, reverse, False) - # Optimise the parsed pattern. - parsed = parsed.optimise(info) + parsed = parsed.optimise(info, reverse) parsed = parsed.pack_characters(info) # Get the required string. @@ -680,10 +679,10 @@ Regex = compile # Register myself for pickling. import copy_reg as _copy_reg -def _pickle(p): - return _compile, (p.pattern, p.flags) +def _pickle(pattern): + return _regex.compile, pattern._pickled_data -_copy_reg.pickle(_pattern_type, _pickle, _compile) +_copy_reg.pickle(_pattern_type, _pickle) if not hasattr(str, "format"): # Strings don't have the .format method (below Python 2.6). diff --git a/src/regex/_regex.c b/src/regex/_regex.c index 9097a46fb2..84cec8413e 100644 --- a/src/regex/_regex.c +++ b/src/regex/_regex.c @@ -75,15 +75,15 @@ typedef RE_UINT32 RE_CODE; /* Unlimited repeat count. */ #define RE_UNLIMITED (~(RE_CODE)0) -/* The status of a node. */ -typedef unsigned short RE_STATUS_T; +/* The status of a . */ +typedef RE_UINT32 RE_STATUS_T; /* Whether to match concurrently, i.e. release the GIL while matching. */ #define RE_CONC_NO 0 #define RE_CONC_YES 1 #define RE_CONC_DEFAULT 2 -/* the side that could truncate in a partial match. +/* The side that could truncate in a partial match. * * The values RE_PARTIAL_LEFT and RE_PARTIAL_RIGHT are also used as array * indexes, so they need to be 0 and 1. @@ -103,6 +103,7 @@ typedef unsigned short RE_STATUS_T; #define RE_MODULE "regex" /* Error codes. */ +#define RE_ERROR_INITIALISING 2 /* Initialising object. */ #define RE_ERROR_SUCCESS 1 /* Successful match. */ #define RE_ERROR_FAILURE 0 /* Unsuccessful match. */ #define RE_ERROR_ILLEGAL -1 /* Illegal code. */ @@ -126,6 +127,9 @@ typedef unsigned short RE_STATUS_T; /* The maximum number of backtrack entries to allocate. */ #define RE_MAX_BACKTRACK_ALLOC (1024 * 1024) +/* The number of atomic entries per allocated block. */ +#define RE_ATOMIC_BLOCK_SIZE 64 + /* The initial maximum capacity of the guard block. */ #define RE_INIT_GUARDS_BLOCK_SIZE 16 @@ -181,6 +185,8 @@ typedef unsigned short RE_STATUS_T; #define RE_STATUS_FUZZY (RE_FUZZY_OP << RE_STATUS_SHIFT) #define RE_STATUS_REVERSE (RE_REVERSE_OP << RE_STATUS_SHIFT) #define RE_STATUS_REQUIRED (RE_REQUIRED_OP << RE_STATUS_SHIFT) +#define RE_STATUS_HAS_GROUPS 0x10000 +#define RE_STATUS_HAS_REPEATS 0x20000 /* The different error types for fuzzy matching. */ #define RE_FUZZY_SUB 0 @@ -190,23 +196,27 @@ typedef unsigned short RE_STATUS_T; #define RE_FUZZY_COUNT 3 /* The various values in a FUZZY node. */ -#define RE_FUZZY_VAL_MAX_SUB 1 -#define RE_FUZZY_VAL_MAX_INS 2 -#define RE_FUZZY_VAL_MAX_DEL 3 -#define RE_FUZZY_VAL_MAX_ERR 4 -#define RE_FUZZY_VAL_SUB_COST 5 -#define RE_FUZZY_VAL_INS_COST 6 -#define RE_FUZZY_VAL_DEL_COST 7 -#define RE_FUZZY_VAL_MAX_COST 8 - #define RE_FUZZY_VAL_MAX_BASE 1 +#define RE_FUZZY_VAL_MAX_SUB (RE_FUZZY_VAL_MAX_BASE + RE_FUZZY_SUB) +#define RE_FUZZY_VAL_MAX_INS (RE_FUZZY_VAL_MAX_BASE + RE_FUZZY_INS) +#define RE_FUZZY_VAL_MAX_DEL (RE_FUZZY_VAL_MAX_BASE + RE_FUZZY_DEL) +#define RE_FUZZY_VAL_MAX_ERR (RE_FUZZY_VAL_MAX_BASE + RE_FUZZY_ERR) + #define RE_FUZZY_VAL_COST_BASE 5 +#define RE_FUZZY_VAL_SUB_COST (RE_FUZZY_VAL_COST_BASE + RE_FUZZY_SUB) +#define RE_FUZZY_VAL_INS_COST (RE_FUZZY_VAL_COST_BASE + RE_FUZZY_INS) +#define RE_FUZZY_VAL_DEL_COST (RE_FUZZY_VAL_COST_BASE + RE_FUZZY_DEL) +#define RE_FUZZY_VAL_MAX_COST (RE_FUZZY_VAL_COST_BASE + RE_FUZZY_ERR) /* The various values in an END_FUZZY node. */ -#define RE_FUZZY_VAL_MIN_SUB 1 -#define RE_FUZZY_VAL_MIN_INS 2 -#define RE_FUZZY_VAL_MIN_DEL 3 -#define RE_FUZZY_VAL_MIN_ERR 4 +#define RE_FUZZY_VAL_MIN_BASE 1 +#define RE_FUZZY_VAL_MIN_SUB (RE_FUZZY_VAL_MIN_BASE + RE_FUZZY_SUB) +#define RE_FUZZY_VAL_MIN_INS (RE_FUZZY_VAL_MIN_BASE + RE_FUZZY_INS) +#define RE_FUZZY_VAL_MIN_DEL (RE_FUZZY_VAL_MIN_BASE + RE_FUZZY_DEL) +#define RE_FUZZY_VAL_MIN_ERR (RE_FUZZY_VAL_MIN_BASE + RE_FUZZY_ERR) + +/* The maximum number of errors when trying to improve a fuzzy match. */ +#define RE_MAX_ERRORS 10 /* The flags which will be set for full Unicode case folding. */ #define RE_FULL_CASE_FOLDING (RE_FLAG_UNICODE | RE_FLAG_FULLCASE | RE_FLAG_IGNORECASE) @@ -334,8 +344,13 @@ typedef struct RE_BacktrackData { size_t capture_change; } group_call; struct { + Py_ssize_t match_pos; + } keep; + struct { + struct RE_Node* node; size_t capture_change; BOOL too_few_errors; + BOOL inside; } lookaround; struct { RE_Position position; @@ -358,6 +373,32 @@ typedef struct RE_BacktrackBlock { size_t count; } RE_BacktrackBlock; +/* Storage for atomic data. */ +typedef struct RE_AtomicData { + RE_BacktrackBlock* current_backtrack_block; + size_t backtrack_count; + struct RE_Node* node; + RE_BacktrackData* backtrack; + struct RE_SavedGroups* saved_groups; + struct RE_SavedRepeats* saved_repeats; + struct RE_GroupCallFrame* call_frame; + Py_ssize_t slice_start; + Py_ssize_t slice_end; + Py_ssize_t text_pos; + BOOL is_lookaround; + BOOL has_groups; + BOOL has_repeats; +} RE_AtomicData; + +/* Storage for atomic data is allocated in blocks for speed. */ +typedef struct RE_AtomicBlock { + RE_AtomicData items[RE_ATOMIC_BLOCK_SIZE]; + struct RE_AtomicBlock* previous; + struct RE_AtomicBlock* next; + size_t capacity; + size_t count; +} RE_AtomicBlock; + /* Storage for saved groups. */ typedef struct RE_SavedGroups { struct RE_SavedGroups* previous; @@ -426,7 +467,7 @@ typedef struct RE_GuardList { size_t last_low; } RE_GuardList; -/* Info about a group in a context. */ +/* Info about a group. */ typedef struct RE_GroupData { RE_GroupSpan span; size_t capture_count; @@ -539,11 +580,17 @@ typedef struct RE_State { RE_BacktrackBlock* current_backtrack_block; Py_ssize_t backtrack_allocated; RE_BacktrackData* backtrack; + RE_AtomicBlock* current_atomic_block; /* Storage for saved capture groups. */ RE_SavedGroups* first_saved_groups; RE_SavedGroups* current_saved_groups; RE_SavedRepeats* first_saved_repeats; RE_SavedRepeats* current_saved_repeats; + /* Info about the best POSIX match (leftmost longest). */ + Py_ssize_t best_match_pos; + Py_ssize_t best_text_pos; + RE_GroupData* best_match_groups; + /* Miscellaneous. */ Py_ssize_t min_width; /* The minimum width of the string to match (assuming it's not a fuzzy pattern). */ RE_EncodingTable* encoding; /* The 'encoding' of the string being searched. */ RE_LocaleInfo* locale_info; /* Info about the locale, if needed. */ @@ -553,10 +600,11 @@ typedef struct RE_State { PyThread_type_lock lock; /* A lock for accessing the state across threads. */ RE_FuzzyInfo fuzzy_info; /* Info about fuzzy matching. */ size_t total_fuzzy_counts[RE_FUZZY_COUNT]; /* Totals for fuzzy matching. */ + size_t best_fuzzy_counts[RE_FUZZY_COUNT]; /* Best totals for fuzzy matching. */ RE_FuzzyGuards* fuzzy_guards; /* The guards for a fuzzy match. */ size_t total_errors; /* The total number of errors of a fuzzy match. */ - size_t total_cost; /* The total cost of a fuzzy match. */ - size_t max_cost; /* The maximum permitted fuzzy cost. */ + size_t max_errors; /* The maximum permitted number of errors. */ + size_t fewest_errors; /* The fewest errors so far of an enhanced fuzzy match. */ /* The group call stack. */ RE_GroupCallFrame* first_group_call_frame; RE_GroupCallFrame* current_group_call_frame; @@ -577,6 +625,7 @@ typedef struct RE_State { BOOL is_multithreaded; /* Whether to release the GIL while matching. */ BOOL too_few_errors; /* Whether there were too few fuzzy errors. */ BOOL match_all; /* Whether to match all of the string ('fullmatch'). */ + BOOL found_match; /* Whether a POSIX match has been found. */ } RE_State; /* Storage for the regex state and thread state. @@ -597,6 +646,7 @@ typedef struct PatternObject { PyObject_HEAD PyObject* pattern; /* Pattern source (or None). */ Py_ssize_t flags; /* Flags used when compiling pattern source. */ + PyObject* packed_code_list; PyObject* weakreflist; /* List of weak references */ /* Nodes into which the regular expression is compiled. */ RE_Node* start_node; @@ -632,7 +682,10 @@ typedef struct PatternObject { RE_GroupData* groups_storage; RE_RepeatData* repeats_storage; size_t fuzzy_count; /* The number of fuzzy sections. */ + /* Additional info. */ Py_ssize_t req_offset; /* The offset to the required string. */ + PyObject* required_chars; + Py_ssize_t req_flags; RE_Node* req_string; /* The required string. */ BOOL is_fuzzy; /* Whether it's a fuzzy pattern. */ BOOL do_search_start; /* Whether to do an initial search. */ @@ -702,6 +755,8 @@ typedef struct RE_CompileArgs { BOOL has_captures; /* Whether the pattern has capture groups. */ BOOL is_fuzzy; /* Whether the pattern (or some part of it) is fuzzy. */ BOOL within_fuzzy; /* Whether the subpattern is within a fuzzy section. */ + BOOL has_groups; /* Whether the subpattern contains captures. */ + BOOL has_repeats; /* Whether the subpattern contains repeats. */ } RE_CompileArgs; /* The string slices which will be concatenated to make the result string of @@ -711,12 +766,12 @@ typedef struct RE_CompileArgs { * of them. Empty strings aren't recorded, so if 'list' and 'item' are both * NULL then the result is an empty string. */ -typedef struct JoinInfo { +typedef struct RE_JoinInfo { PyObject* list; /* The list of slices if there are more than 2 of them. */ PyObject* item; /* The slice if there is only 1 of them. */ BOOL reversed; /* Whether the slices have been found in reverse order. */ BOOL is_unicode; /* Whether the string is Unicode. */ -} JoinInfo; +} RE_JoinInfo; /* Info about fuzzy matching. */ typedef struct { @@ -733,33 +788,39 @@ typedef struct { BOOL permit_insertion; } RE_FuzzyData; +typedef struct RE_BestEntry { + Py_ssize_t match_pos; + Py_ssize_t text_pos; +} RE_BestEntry; + +typedef struct RE_BestList { + size_t capacity; + size_t count; + RE_BestEntry* entries; +} RE_BestList; + +/* A stack of guard checks. */ +typedef struct RE_Check { + RE_Node* node; + RE_STATUS_T result; +} RE_Check; + +typedef struct RE_CheckStack { + Py_ssize_t capacity; + Py_ssize_t count; + RE_Check* items; +} RE_CheckStack; + +/* A stack of nodes. */ +typedef struct RE_NodeStack { + Py_ssize_t capacity; + Py_ssize_t count; + RE_Node** items; +} RE_NodeStack; + /* Function types for getting info from a MatchObject. */ typedef PyObject* (*RE_GetByIndexFunc)(MatchObject* self, Py_ssize_t index); -#if defined(PYPY_VERSION) -/* PyPy does not define PyLong_FromUnicode, so include our own implementation. - */ -Py_LOCAL_INLINE(PyObject*) PyLong_FromUnicode(Py_UNICODE *u, Py_ssize_t length, - int base) { - PyObject* result; - char* buffer = (char*)PyMem_MALLOC(length + 1); - - if (buffer == NULL) - return NULL; - - if (PyUnicode_EncodeDecimal(u, length, buffer, NULL)) { - PyMem_FREE(buffer); - - return NULL; - } - - result = PyLong_FromString(buffer, NULL, base); - PyMem_FREE(buffer); - - return result; -} - -#endif /* Returns the magnitude of a 'Py_ssize_t' value. */ Py_LOCAL_INLINE(Py_ssize_t) abs_ssize_t(Py_ssize_t x) { return x >= 0 ? x : -x; @@ -1143,10 +1204,10 @@ Py_LOCAL_INLINE(BOOL) locale_has_property(RE_LocaleInfo* locale_info, RE_CODE switch (property >> 16) { case RE_PROP_ALNUM >> 16: - v = locale_isalnum(locale_info, ch); + v = locale_isalnum(locale_info, ch) != 0; break; case RE_PROP_ALPHA >> 16: - v = locale_isalpha(locale_info, ch); + v = locale_isalpha(locale_info, ch) != 0; break; case RE_PROP_ANY >> 16: v = 1; @@ -1189,10 +1250,10 @@ Py_LOCAL_INLINE(BOOL) locale_has_property(RE_LocaleInfo* locale_info, RE_CODE } break; case RE_PROP_GRAPH >> 16: - v = locale_isgraph(locale_info, ch); + v = locale_isgraph(locale_info, ch) != 0; break; case RE_PROP_LOWER >> 16: - v = locale_islower(locale_info, ch); + v = locale_islower(locale_info, ch) != 0; break; case RE_PROP_POSIX_ALNUM >> 16: v = re_get_posix_alnum(ch) != 0; @@ -1207,16 +1268,16 @@ Py_LOCAL_INLINE(BOOL) locale_has_property(RE_LocaleInfo* locale_info, RE_CODE v = re_get_posix_xdigit(ch) != 0; break; case RE_PROP_PRINT >> 16: - v = locale_isprint(locale_info, ch); + v = locale_isprint(locale_info, ch) != 0; break; case RE_PROP_SPACE >> 16: - v = locale_isspace(locale_info, ch); + v = locale_isspace(locale_info, ch) != 0; break; case RE_PROP_UPPER >> 16: - v = locale_isupper(locale_info, ch); + v = locale_isupper(locale_info, ch) != 0; break; case RE_PROP_WORD >> 16: - v = ch == '_' || locale_isalnum(locale_info, ch); + v = ch == '_' || locale_isalnum(locale_info, ch) != 0; break; case RE_PROP_XDIGIT >> 16: v = re_get_hex_digit(ch) != 0; @@ -1503,7 +1564,10 @@ static BOOL unicode_at_default_boundary(RE_State* state, Py_ssize_t text_pos) { Py_ssize_t pos_p1; int prop_p1; - /* Break at the start and end of the text. */ + /* Break at the start and end of the text, unless the text is empty. */ + if (state->text_length == 0) + return FALSE; + /* WB1 */ if (text_pos <= 0) return TRUE; @@ -1523,12 +1587,21 @@ static BOOL unicode_at_default_boundary(RE_State* state, Py_ssize_t text_pos) { return FALSE; /* Otherwise break before and after Newlines (including CR and LF). */ - /* WB3a and WB3b */ + /* WB3a */ if (prop_m1 == RE_BREAK_NEWLINE || prop_m1 == RE_BREAK_CR || prop_m1 == - RE_BREAK_LF || prop == RE_BREAK_NEWLINE || prop == RE_BREAK_CR || prop == RE_BREAK_LF) return TRUE; + /* WB3b */ + if (prop == RE_BREAK_NEWLINE || prop == RE_BREAK_CR || prop == RE_BREAK_LF) + return TRUE; + + /* Don't break within emoji zwj sequences. */ + /* WB3c */ + if (prop_m1 == RE_BREAK_ZWJ && (prop == RE_BREAK_GLUEAFTERZWJ || prop == + RE_BREAK_EBASEGAZ)) + return FALSE; + /* WB4 */ /* Get the property of the previous character, ignoring Format and Extend * characters. @@ -1537,7 +1610,8 @@ static BOOL unicode_at_default_boundary(RE_State* state, Py_ssize_t text_pos) { prop_m1 = RE_BREAK_OTHER; while (pos_m1 >= 0) { prop_m1 = (int)re_get_word_break(char_at(state->text, pos_m1)); - if (prop_m1 != RE_BREAK_EXTEND && prop_m1 != RE_BREAK_FORMAT) + if (prop_m1 != RE_BREAK_EXTEND && prop_m1 != RE_BREAK_FORMAT && prop_m1 + != RE_BREAK_ZWJ) break; --pos_m1; @@ -1550,7 +1624,8 @@ static BOOL unicode_at_default_boundary(RE_State* state, Py_ssize_t text_pos) { prop_m2 = RE_BREAK_OTHER; while (pos_m2 >= 0) { prop_m2 = (int)re_get_word_break(char_at(state->text, pos_m2)); - if (prop_m2 != RE_BREAK_EXTEND && prop_m2 != RE_BREAK_FORMAT) + if (prop_m2 != RE_BREAK_EXTEND && prop_m2 != RE_BREAK_FORMAT && prop_m2 + != RE_BREAK_ZWJ) break; --pos_m2; @@ -1563,7 +1638,8 @@ static BOOL unicode_at_default_boundary(RE_State* state, Py_ssize_t text_pos) { prop_p0 = prop; while (pos_p0 < state->text_length) { prop_p0 = (int)re_get_word_break(char_at(state->text, pos_p0)); - if (prop_p0 != RE_BREAK_EXTEND && prop_p0 != RE_BREAK_FORMAT) + if (prop_p0 != RE_BREAK_EXTEND && prop_p0 != RE_BREAK_FORMAT && prop_p0 + != RE_BREAK_ZWJ) break; ++pos_p0; @@ -1576,7 +1652,8 @@ static BOOL unicode_at_default_boundary(RE_State* state, Py_ssize_t text_pos) { prop_p1 = RE_BREAK_OTHER; while (pos_p1 < state->text_length) { prop_p1 = (int)re_get_word_break(char_at(state->text, pos_p1)); - if (prop_p1 != RE_BREAK_EXTEND && prop_p1 != RE_BREAK_FORMAT) + if (prop_p1 != RE_BREAK_EXTEND && prop_p1 != RE_BREAK_FORMAT && prop_p1 + != RE_BREAK_ZWJ) break; ++pos_p1; @@ -1601,19 +1678,23 @@ static BOOL unicode_at_default_boundary(RE_State* state, Py_ssize_t text_pos) { prop_p0 == RE_BREAK_SINGLEQUOTE) && (prop_p1 == RE_BREAK_ALETTER || prop_p1 == RE_BREAK_HEBREWLETTER)) return FALSE; + /* WB7 */ if ((prop_m2 == RE_BREAK_ALETTER || prop_m2 == RE_BREAK_HEBREWLETTER) && (prop_m1 == RE_BREAK_MIDLETTER || prop_m1 == RE_BREAK_MIDNUMLET || prop_m1 == RE_BREAK_SINGLEQUOTE) && (prop_p0 == RE_BREAK_ALETTER || prop_p0 == RE_BREAK_HEBREWLETTER)) return FALSE; + /* WB7a */ if (prop_m1 == RE_BREAK_HEBREWLETTER && prop_p0 == RE_BREAK_SINGLEQUOTE) return FALSE; + /* WB7b */ if (prop_m1 == RE_BREAK_HEBREWLETTER && prop_p0 == RE_BREAK_DOUBLEQUOTE && prop_p1 == RE_BREAK_HEBREWLETTER) return FALSE; + /* WB7c */ if (prop_m2 == RE_BREAK_HEBREWLETTER && prop_m1 == RE_BREAK_DOUBLEQUOTE && prop_p0 == RE_BREAK_HEBREWLETTER) @@ -1625,10 +1706,12 @@ static BOOL unicode_at_default_boundary(RE_State* state, Py_ssize_t text_pos) { /* WB8 */ if (prop_m1 == RE_BREAK_NUMERIC && prop_p0 == RE_BREAK_NUMERIC) return FALSE; + /* WB9 */ if ((prop_m1 == RE_BREAK_ALETTER || prop_m1 == RE_BREAK_HEBREWLETTER) && prop_p0 == RE_BREAK_NUMERIC) return FALSE; + /* WB10 */ if (prop_m1 == RE_BREAK_NUMERIC && (prop_p0 == RE_BREAK_ALETTER || prop_p0 == RE_BREAK_HEBREWLETTER)) @@ -1640,6 +1723,7 @@ static BOOL unicode_at_default_boundary(RE_State* state, Py_ssize_t text_pos) { == RE_BREAK_MIDNUMLET || prop_m1 == RE_BREAK_SINGLEQUOTE) && prop_p0 == RE_BREAK_NUMERIC) return FALSE; + /* WB12 */ if (prop_m1 == RE_BREAK_NUMERIC && (prop_p0 == RE_BREAK_MIDNUM || prop_p0 == RE_BREAK_MIDNUMLET || prop_p0 == RE_BREAK_SINGLEQUOTE) && prop_p1 == @@ -1657,20 +1741,44 @@ static BOOL unicode_at_default_boundary(RE_State* state, Py_ssize_t text_pos) { prop_m1 == RE_BREAK_NUMERIC || prop_m1 == RE_BREAK_KATAKANA || prop_m1 == RE_BREAK_EXTENDNUMLET) && prop_p0 == RE_BREAK_EXTENDNUMLET) return FALSE; + /* WB13b */ if (prop_m1 == RE_BREAK_EXTENDNUMLET && (prop_p0 == RE_BREAK_ALETTER || prop_p0 == RE_BREAK_HEBREWLETTER || prop_p0 == RE_BREAK_NUMERIC || prop_p0 == RE_BREAK_KATAKANA)) return FALSE; - /* Don't break between regional indicator symbols. */ - /* WB13c */ - if (prop_m1 == RE_BREAK_REGIONALINDICATOR && prop_p0 == - RE_BREAK_REGIONALINDICATOR) + /* Don't break within emoji modifier sequences. */ + /* WB14 */ + if ((prop_m1 == RE_BREAK_EBASE || prop_m1 == RE_BREAK_EBASEGAZ) && prop_p0 + == RE_BREAK_EMODIFIER) return FALSE; + /* Don't break within emoji flag sequences. That is, don't break between + * regional indicator (RI) symbols if there is an odd number of RI + * characters before the break point. + */ + /* WB15 and WB16 */ + prop = (int)re_get_word_break(char_at(state->text, text_pos)); + if (prop == RE_BREAK_REGIONALINDICATOR) { + Py_ssize_t pos; + + pos = text_pos - 1; + while (pos >= 0) { + prop = (int)re_get_word_break(char_at(state->text, pos)); + if (prop != RE_BREAK_REGIONALINDICATOR) + break; + + --pos; + } + ++pos; + + if ((text_pos - pos) % 2 != 0) + return FALSE; + } + /* Otherwise, break everywhere (including around ideographs). */ - /* WB14 */ + /* WB999 */ return TRUE; } @@ -1837,6 +1945,10 @@ static BOOL unicode_at_grapheme_boundary(RE_State* state, Py_ssize_t text_pos) int prop; int prop_m1; + /* Break at the start and end of text, unless the text is empty. */ + if (state->text_length == 0) + return FALSE; + /* Break at the start and end of the text. */ /* GB1 */ if (text_pos <= 0) @@ -1858,10 +1970,14 @@ static BOOL unicode_at_grapheme_boundary(RE_State* state, Py_ssize_t text_pos) return FALSE; /* Otherwise break before and after controls (including CR and LF). */ - /* GB4 and GB5 */ + /* GB4 */ if (prop_m1 == RE_GBREAK_CONTROL || prop_m1 == RE_GBREAK_CR || prop_m1 == - RE_GBREAK_LF || prop == RE_GBREAK_CONTROL || prop == RE_GBREAK_CR || prop - == RE_GBREAK_LF) + RE_GBREAK_LF) + return TRUE; + + /* GB5 */ + if (prop == RE_GBREAK_CONTROL || prop == RE_GBREAK_CR || prop == + RE_GBREAK_LF) return TRUE; /* Don't break Hangul syllable sequences. */ @@ -1869,24 +1985,20 @@ static BOOL unicode_at_grapheme_boundary(RE_State* state, Py_ssize_t text_pos) if (prop_m1 == RE_GBREAK_L && (prop == RE_GBREAK_L || prop == RE_GBREAK_V || prop == RE_GBREAK_LV || prop == RE_GBREAK_LVT)) return FALSE; + /* GB7 */ if ((prop_m1 == RE_GBREAK_LV || prop_m1 == RE_GBREAK_V) && (prop == RE_GBREAK_V || prop == RE_GBREAK_T)) return FALSE; + /* GB8 */ if ((prop_m1 == RE_GBREAK_LVT || prop_m1 == RE_GBREAK_T) && (prop == RE_GBREAK_T)) return FALSE; - /* Don't break between regional indicator symbols. */ - /* GB8a */ - if (prop_m1 == RE_GBREAK_REGIONALINDICATOR && prop == - RE_GBREAK_REGIONALINDICATOR) - return FALSE; - /* Don't break just before Extend characters. */ /* GB9 */ - if (prop == RE_GBREAK_EXTEND) + if (prop == RE_GBREAK_EXTEND || prop == RE_GBREAK_ZWJ) return FALSE; /* Don't break before SpacingMarks, or after Prepend characters. */ @@ -1898,8 +2010,57 @@ static BOOL unicode_at_grapheme_boundary(RE_State* state, Py_ssize_t text_pos) if (prop_m1 == RE_GBREAK_PREPEND) return FALSE; - /* Otherwise, break everywhere. */ + /* Don't break within emoji modifier sequences or emoji zwj sequences. */ /* GB10 */ + if (prop == RE_GBREAK_EMODIFIER) { + Py_ssize_t pos; + + pos = text_pos - 1; + while (pos >= 0) { + int prev_prop; + + prev_prop = (int)re_get_grapheme_cluster_break(char_at(state->text, + pos)); + if (prev_prop != RE_GBREAK_EXTEND) { + if (prev_prop == RE_GBREAK_EBASE || prev_prop == + RE_GBREAK_EBASEGAZ) + return FALSE; + break; + } + --pos; + } + } + + /* GB11 */ + if (prop_m1 == RE_GBREAK_ZWJ && (prop == RE_GBREAK_GLUEAFTERZWJ || prop == + RE_GBREAK_EBASEGAZ)) + return FALSE; + + /* Don't break within emoji flag sequences. That is, don't break between + * regional indicator (RI) symbols if there is an odd number of RI + * characters before the break point. + */ + /* GB12 and GB13 */ + if (prop == RE_GBREAK_REGIONALINDICATOR) { + Py_ssize_t pos; + + pos = text_pos - 1; + while (pos >= 0) { + prop = (int)re_get_grapheme_cluster_break(char_at(state->text, + pos)); + if (prop != RE_GBREAK_REGIONALINDICATOR) + break; + + --pos; + } + ++pos; + + if ((text_pos - pos) % 2 != 0) + return FALSE; + } + + /* Otherwise, break everywhere. */ + /* GB999 */ return TRUE; } @@ -2039,6 +2200,8 @@ Py_LOCAL_INLINE(PyObject*) get_object(char* module_name, char* object_name); Py_LOCAL_INLINE(void) set_error(int status, PyObject* object) { TRACE(("<>\n")) + PyErr_Clear(); + if (!error_exception) error_exception = get_object("_" RE_MODULE "_core", "error"); @@ -2696,17 +2859,24 @@ Py_LOCAL_INLINE(void) reset_guard_list(RE_GuardList* guard_list) { guard_list->last_text_pos = -1; } -/* Initialises the state for a match. */ -Py_LOCAL_INLINE(void) init_match(RE_State* state) { +/* Clears the groups. */ +Py_LOCAL_INLINE(void) clear_groups(RE_State* state) { size_t i; - /* Reset the backtrack. */ - state->current_backtrack_block = &state->backtrack_block; - state->current_backtrack_block->count = 0; - state->current_saved_groups = state->first_saved_groups; - state->backtrack = NULL; - state->search_anchor = state->text_pos; - state->match_pos = state->text_pos; + for (i = 0; i < state->pattern->true_group_count; i++) { + RE_GroupData* group; + + group = &state->groups[i]; + group->span.start = -1; + group->span.end = -1; + group->capture_count = 0; + group->current_capture = -1; + } +} + +/* Resets the various guards. */ +Py_LOCAL_INLINE(void) reset_guards(RE_State* state) { + size_t i; /* Reset the guards for the repeats. */ for (i = 0; i < state->pattern->repeat_count; i++) { @@ -2720,27 +2890,50 @@ Py_LOCAL_INLINE(void) init_match(RE_State* state) { reset_guard_list(&state->fuzzy_guards[i].tail_guard_list); } - for (i = 0; i < state->pattern->true_group_count; i++) { - RE_GroupData* group; - - group = &state->groups[i]; - group->span.start = -1; - group->span.end = -1; - group->capture_count = 0; - group->current_capture = -1; - } - /* Reset the guards for the group calls. */ for (i = 0; i < state->pattern->call_ref_info_count; i++) reset_guard_list(&state->group_call_guard_list[i]); +} + +/* Initialises the state for a match. */ +Py_LOCAL_INLINE(void) init_match(RE_State* state) { + RE_AtomicBlock* current; + + /* Reset the backtrack. */ + state->current_backtrack_block = &state->backtrack_block; + state->current_backtrack_block->count = 0; + state->current_saved_groups = state->first_saved_groups; + state->backtrack = NULL; + state->search_anchor = state->text_pos; + state->match_pos = state->text_pos; + + /* Reset the atomic stack. */ + current = state->current_atomic_block; + if (current) { + while (current->previous) + current = current->previous; + + state->current_atomic_block = current; + state->current_atomic_block->count = 0; + } + + /* Clear the groups. */ + clear_groups(state); + + /* Reset the guards. */ + reset_guards(state); /* Clear the counts and cost for matching. */ - memset(state->fuzzy_info.counts, 0, sizeof(state->fuzzy_info.counts)); + if (state->pattern->is_fuzzy) { + memset(state->fuzzy_info.counts, 0, sizeof(state->fuzzy_info.counts)); + memset(state->total_fuzzy_counts, 0, + sizeof(state->total_fuzzy_counts)); + } + state->fuzzy_info.total_cost = 0; - memset(state->total_fuzzy_counts, 0, sizeof(state->total_fuzzy_counts)); state->total_errors = 0; - state->total_cost = 0; state->too_few_errors = FALSE; + state->found_match = FALSE; state->capture_change = 0; state->iterations = 0; } @@ -2811,6 +3004,69 @@ Py_LOCAL_INLINE(void) discard_backtrack(RE_State* state) { state->current_backtrack_block = current->previous; } +/* Pushes a new empty entry onto the atomic stack. */ +Py_LOCAL_INLINE(RE_AtomicData*) push_atomic(RE_SafeState* safe_state) { + RE_State* state; + RE_AtomicBlock* current; + + state = safe_state->re_state; + + current = state->current_atomic_block; + if (!current || current->count >= current->capacity) { + /* The current block is full. */ + if (current && current->next) + /* Advance to the next block. */ + current = current->next; + else { + /* Add a new block. */ + RE_AtomicBlock* next; + + next = (RE_AtomicBlock*)safe_alloc(safe_state, + sizeof(RE_AtomicBlock)); + if (!next) + return NULL; + + next->previous = current; + next->next = NULL; + next->capacity = RE_ATOMIC_BLOCK_SIZE; + + current = next; + } + + current->count = 0; + state->current_atomic_block = current; + } + + return ¤t->items[current->count++]; +} + +/* Pops the top entry from the atomic stack. */ +Py_LOCAL_INLINE(RE_AtomicData*) pop_atomic(RE_SafeState* safe_state) { + RE_State* state; + RE_AtomicBlock* current; + RE_AtomicData* atomic; + + state = safe_state->re_state; + + current = state->current_atomic_block; + atomic = ¤t->items[--current->count]; + if (current->count == 0 && current->previous) + state->current_atomic_block = current->previous; + + return atomic; +} + +/* Gets the top entry from the atomic stack. */ +Py_LOCAL_INLINE(RE_AtomicData*) top_atomic(RE_SafeState* safe_state) { + RE_State* state; + RE_AtomicBlock* current; + + state = safe_state->re_state; + + current = state->current_atomic_block; + return ¤t->items[current->count - 1]; +} + /* Copies a repeat guard list. */ Py_LOCAL_INLINE(BOOL) copy_guard_data(RE_SafeState* safe_state, RE_GuardList* dst, RE_GuardList* src) { @@ -3054,7 +3310,7 @@ Py_LOCAL_INLINE(RE_Node*) locate_test_start(RE_Node* node) { return node; return node->nonstring.next_2.node; case RE_OP_LOOKAROUND: - node = node->next_1.node; + node = node->nonstring.next_2.node; break; default: if (is_firstset(node)) { @@ -5990,8 +6246,8 @@ Py_LOCAL_INLINE(Py_ssize_t) string_search_fld(RE_SafeState* safe_state, f_pos = 0; } - if (same_char_ign(encoding, locale_info, values[s_pos], folded[f_pos])) - { + if (s_pos < length && same_char_ign(encoding, locale_info, + values[s_pos], folded[f_pos])) { ++s_pos; ++f_pos; @@ -6065,8 +6321,8 @@ Py_LOCAL_INLINE(Py_ssize_t) string_search_fld_rev(RE_SafeState* safe_state, f_pos = 0; } - if (same_char_ign(encoding, locale_info, values[length - s_pos - 1], - folded[folded_len - f_pos - 1])) { + if (s_pos < length && same_char_ign(encoding, locale_info, + values[length - s_pos - 1], folded[folded_len - f_pos - 1])) { ++s_pos; ++f_pos; @@ -6700,8 +6956,10 @@ Py_LOCAL_INLINE(int) try_match_STRING(RE_State* state, RE_NextNode* next, for (s_pos = 0; s_pos < length; s_pos++) { if (text_pos + s_pos >= state->slice_end) { - if (state->partial_side == RE_PARTIAL_RIGHT) + if (state->partial_side == RE_PARTIAL_RIGHT) { + next_position->text_pos = text_pos; return RE_ERROR_PARTIAL; + } return RE_ERROR_FAILURE; } @@ -6748,8 +7006,13 @@ Py_LOCAL_INLINE(int) try_match_STRING_FLD(RE_State* state, RE_NextNode* next, if (f_pos >= folded_len) { /* Fetch and casefold another character. */ if (text_pos >= state->slice_end) { - if (state->partial_side == RE_PARTIAL_RIGHT) + if (state->partial_side == RE_PARTIAL_RIGHT) { + if (next->match_step == 0) + next_position->text_pos = start_pos; + else + next_position->text_pos = text_pos; return RE_ERROR_PARTIAL; + } return RE_ERROR_FAILURE; } @@ -6816,8 +7079,13 @@ Py_LOCAL_INLINE(int) try_match_STRING_FLD_REV(RE_State* state, RE_NextNode* if (f_pos >= folded_len) { /* Fetch and casefold another character. */ if (text_pos <= state->slice_start) { - if (state->partial_side == RE_PARTIAL_LEFT) + if (state->partial_side == RE_PARTIAL_LEFT) { + if (next->match_step == 0) + next_position->text_pos = start_pos; + else + next_position->text_pos = text_pos; return RE_ERROR_PARTIAL; + } return RE_ERROR_FAILURE; } @@ -6868,8 +7136,10 @@ Py_LOCAL_INLINE(int) try_match_STRING_IGN(RE_State* state, RE_NextNode* next, for (s_pos = 0; s_pos < length; s_pos++) { if (text_pos + s_pos >= state->slice_end) { - if (state->partial_side == RE_PARTIAL_RIGHT) + if (state->partial_side == RE_PARTIAL_RIGHT) { + next_position->text_pos = text_pos; return RE_ERROR_PARTIAL; + } return RE_ERROR_FAILURE; } @@ -6905,8 +7175,10 @@ Py_LOCAL_INLINE(int) try_match_STRING_IGN_REV(RE_State* state, RE_NextNode* for (s_pos = 0; s_pos < length; s_pos++) { if (text_pos - s_pos <= state->slice_start) { - if (state->partial_side == RE_PARTIAL_LEFT) + if (state->partial_side == RE_PARTIAL_LEFT) { + next_position->text_pos = text_pos; return RE_ERROR_PARTIAL; + } return RE_ERROR_FAILURE; } @@ -6936,8 +7208,10 @@ Py_LOCAL_INLINE(int) try_match_STRING_REV(RE_State* state, RE_NextNode* next, for (s_pos = 0; s_pos < length; s_pos++) { if (text_pos - s_pos <= state->slice_start) { - if (state->partial_side == RE_PARTIAL_LEFT) + if (state->partial_side == RE_PARTIAL_LEFT) { + next_position->text_pos = text_pos; return RE_ERROR_PARTIAL; + } return RE_ERROR_FAILURE; } @@ -6992,12 +7266,6 @@ Py_LOCAL_INLINE(int) try_match(RE_State* state, RE_NextNode* next, Py_ssize_t case RE_OP_BOUNDARY: status = try_match_BOUNDARY(state, test, text_pos); break; - case RE_OP_BRANCH: - status = try_match(state, &test->next_1, text_pos, next_position); - if (status == RE_ERROR_FAILURE) - status = try_match(state, &test->nonstring.next_2, text_pos, - next_position); - break; case RE_OP_CHARACTER: status = try_match_CHARACTER(state, test, text_pos); break; @@ -7766,7 +8034,6 @@ again: return RE_ERROR_FAILURE; break; case RE_OP_ANY_ALL: - break; case RE_OP_ANY_ALL_REV: break; case RE_OP_ANY_REV: @@ -8177,7 +8444,7 @@ again: start_pos = match_many_SET(state, test, start_pos, state->slice_end, FALSE); - if (start_pos >= state->text_length) { + if (start_pos >= state->text_length) { if (state->partial_side == RE_PARTIAL_RIGHT) { new_position->text_pos = start_pos; return RE_ERROR_PARTIAL; @@ -8194,7 +8461,7 @@ again: start_pos = match_many_SET_IGN(state, test, start_pos, state->slice_end, FALSE); - if (start_pos >= state->text_length) { + if (start_pos >= state->text_length) { if (state->partial_side == RE_PARTIAL_RIGHT) { new_position->text_pos = start_pos; return RE_ERROR_PARTIAL; @@ -8211,7 +8478,7 @@ again: start_pos = match_many_SET_IGN_REV(state, test, start_pos, state->slice_start, FALSE); - if (start_pos <= 0) { + if (start_pos <= 0) { if (state->partial_side == RE_PARTIAL_LEFT) { new_position->text_pos = start_pos; return RE_ERROR_PARTIAL; @@ -8228,7 +8495,7 @@ again: start_pos = match_many_SET_REV(state, test, start_pos, state->slice_start, FALSE); - if (start_pos <= 0) { + if (start_pos <= 0) { if (state->partial_side == RE_PARTIAL_LEFT) { new_position->text_pos = start_pos; return RE_ERROR_PARTIAL; @@ -8482,6 +8749,11 @@ again: int status; status = try_match(state, &test->next_1, text_pos, new_position); + if (status == RE_ERROR_PARTIAL) { + new_position->node = node; + new_position->text_pos = start_pos; + return status; + } if (status < 0) return status; @@ -8697,8 +8969,6 @@ Py_LOCAL_INLINE(BOOL) push_repeats(RE_SafeState* safe_state) { if (!new_block) return FALSE; - memset(new_block, 0, sizeof(RE_SavedRepeats)); - new_block->repeats = (RE_RepeatData*)safe_alloc(safe_state, repeat_count * sizeof(RE_RepeatData)); if (!new_block->repeats) { @@ -8751,22 +9021,20 @@ Py_LOCAL_INLINE(void) pop_repeats(RE_State* state) { state->current_saved_repeats = current->previous; } -/* Saves state info before a recusive call by 'basic_match'. */ -Py_LOCAL_INLINE(void) save_info(RE_State* state, RE_Info* info) { - info->backtrack_count = state->current_backtrack_block->count; - info->current_backtrack_block = state->current_backtrack_block; - info->current_saved_groups = state->current_saved_groups; - info->must_advance = state->must_advance; - info->current_group_call_frame = state->current_group_call_frame; -} +/* Drops the repeats for backtracking. */ +Py_LOCAL_INLINE(void) drop_repeats(RE_State* state) { + PatternObject* pattern; + size_t repeat_count; + RE_SavedRepeats* current; -/* Restores state info after a recusive call by 'basic_match'. */ -Py_LOCAL_INLINE(void) restore_info(RE_State* state, RE_Info* info) { - state->current_group_call_frame = info->current_group_call_frame; - state->must_advance = info->must_advance; - state->current_saved_groups = info->current_saved_groups; - state->current_backtrack_block = info->current_backtrack_block; - state->current_backtrack_block->count = info->backtrack_count; + pattern = state->pattern; + + repeat_count = pattern->repeat_count; + if (repeat_count == 0) + return; + + current = state->current_saved_repeats; + state->current_saved_repeats = current->previous; } /* Inserts a new span in a guard list. */ @@ -8818,24 +9086,31 @@ Py_LOCAL_INLINE(BOOL) is_guarded(RE_GuardList* guard_list, Py_ssize_t text_pos) size_t high; /* Is this position in the guard list? */ - low = 0; - high = guard_list->count; - while (low < high) { - size_t mid; - RE_GuardSpan* span; + if (guard_list->count == 0 || text_pos < guard_list->spans[0].low) + guard_list->last_low = 0; + else if (text_pos > guard_list->spans[guard_list->count - 1].high) + guard_list->last_low = guard_list->count; + else { + low = 0; + high = guard_list->count; + while (low < high) { + size_t mid; + RE_GuardSpan* span; - mid = (low + high) / 2; - span = &guard_list->spans[mid]; - if (text_pos < span->low) - high = mid; - else if (text_pos > span->high) - low = mid + 1; - else - return span->protect; + mid = (low + high) / 2; + span = &guard_list->spans[mid]; + if (text_pos < span->low) + high = mid; + else if (text_pos > span->high) + low = mid + 1; + else + return span->protect; + } + + guard_list->last_low = low; } guard_list->last_text_pos = text_pos; - guard_list->last_low = low; return FALSE; } @@ -8969,64 +9244,28 @@ Py_LOCAL_INLINE(BOOL) is_repeat_guarded(RE_SafeState* safe_state, size_t index, return is_guarded(guard_list, text_pos); } -/* Resets the guards inside atomic subpatterns and lookarounds. */ -Py_LOCAL_INLINE(void) reset_guards(RE_State* state, RE_CODE* values) { - PatternObject* pattern; - size_t repeat_count; - - pattern = state->pattern; - repeat_count = pattern->repeat_count; - - if (values) { - size_t i; - - for (i = 1; i <= values[0]; i++) { - size_t index; - - index = values[i]; - - if (index < repeat_count) { - reset_guard_list(&state->repeats[index].body_guard_list); - reset_guard_list(&state->repeats[index].tail_guard_list); - } else { - index -= repeat_count; - - reset_guard_list(&state->fuzzy_guards[index].body_guard_list); - reset_guard_list(&state->fuzzy_guards[index].tail_guard_list); - } - } - } else { - size_t index; - size_t fuzzy_count; - - for (index = 0; index < repeat_count; index++) { - reset_guard_list(&state->repeats[index].body_guard_list); - reset_guard_list(&state->repeats[index].tail_guard_list); - } - - fuzzy_count = pattern->fuzzy_count; - - for (index = 0; index < fuzzy_count; index++) { - reset_guard_list(&state->fuzzy_guards[index].body_guard_list); - reset_guard_list(&state->fuzzy_guards[index].tail_guard_list); - } - } -} - /* Builds a Unicode string. */ -Py_LOCAL_INLINE(PyObject*) build_unicode_value(void* buffer, Py_ssize_t len, - Py_ssize_t buffer_charsize) { +Py_LOCAL_INLINE(PyObject*) build_unicode_value(void* buffer, Py_ssize_t start, + Py_ssize_t end, Py_ssize_t buffer_charsize) { + Py_ssize_t len; + + buffer = (void*)((RE_UINT8*)buffer + start * buffer_charsize); + len = end - start; + return PyUnicode_FromUnicode(buffer, len); } /* Builds a bytestring. Returns NULL if any member is too wide. */ -Py_LOCAL_INLINE(PyObject*) build_bytes_value(void* buffer, Py_ssize_t len, - Py_ssize_t buffer_charsize) -{ +Py_LOCAL_INLINE(PyObject*) build_bytes_value(void* buffer, Py_ssize_t start, + Py_ssize_t end, Py_ssize_t buffer_charsize) { + Py_ssize_t len; Py_UCS1* byte_buffer; Py_ssize_t i; PyObject* result; + buffer = (void*)((RE_UINT8*)buffer + start * buffer_charsize); + len = end - start; + if (buffer_charsize == 1) return Py_BuildValue("s#", buffer, len); @@ -9061,11 +9300,10 @@ Py_LOCAL_INLINE(int) string_set_contains(RE_State* state, PyObject* string_set, int status; if (state->is_unicode) - string = build_unicode_value(state->point_to(state->text, first), last - - first, state->charsize); + string = build_unicode_value(state->text, first, last, + state->charsize); else - string = build_bytes_value(state->point_to(state->text, first), last - - first, state->charsize); + string = build_bytes_value(state->text, first, last, state->charsize); if (!string) return RE_ERROR_INTERNAL; @@ -9077,8 +9315,8 @@ Py_LOCAL_INLINE(int) string_set_contains(RE_State* state, PyObject* string_set, /* Looks for a string in a string set, ignoring case. */ Py_LOCAL_INLINE(int) string_set_contains_ign(RE_State* state, PyObject* - string_set, void* buffer, Py_ssize_t index, Py_ssize_t len, Py_ssize_t - buffer_charsize) { + string_set, void* buffer, Py_ssize_t first, Py_ssize_t last, Py_ssize_t + index, Py_ssize_t buffer_charsize) { Py_UCS4 (*char_at)(void* text, Py_ssize_t pos); void (*set_char_at)(void* text, Py_ssize_t pos, Py_UCS4 ch); RE_EncodingTable* encoding; @@ -9110,11 +9348,11 @@ Py_LOCAL_INLINE(int) string_set_contains_ign(RE_State* state, PyObject* possible_turkic = encoding->possible_turkic; /* Look for a possible Turkic 'I'. */ - while (index < len && !possible_turkic(locale_info, char_at(buffer, + while (index < last && !possible_turkic(locale_info, char_at(buffer, index))) ++index; - if (index < len) { + if (index < last) { /* Possible Turkic 'I'. */ int count; int i; @@ -9129,8 +9367,8 @@ Py_LOCAL_INLINE(int) string_set_contains_ign(RE_State* state, PyObject* set_char_at(buffer, index, codepoints[i]); /* Recurse for the remainder of the string. */ - status = string_set_contains_ign(state, string_set, buffer, index + - 1, len, buffer_charsize); + status = string_set_contains_ign(state, string_set, buffer, first, + last, index + 1, buffer_charsize); if (status != 0) return status; } @@ -9142,9 +9380,9 @@ Py_LOCAL_INLINE(int) string_set_contains_ign(RE_State* state, PyObject* int status; if (state->is_unicode) - string = build_unicode_value(buffer, len, buffer_charsize); + string = build_unicode_value(buffer, first, last, buffer_charsize); else - string = build_bytes_value(buffer, len, buffer_charsize); + string = build_bytes_value(buffer, first, last, buffer_charsize); if (!string) return RE_ERROR_MEMORY; @@ -9527,7 +9765,7 @@ Py_LOCAL_INLINE(int) string_set_match_fld_fwdrev(RE_SafeState* safe_state, /* Is the text we have a partial match? */ status = string_set_contains_ign(state, string_set, folded, first, - last, folded_charsize); + last, first, folded_charsize); if (status < 0) goto finished; @@ -9557,7 +9795,7 @@ Py_LOCAL_INLINE(int) string_set_match_fld_fwdrev(RE_SafeState* safe_state, while (len >= min_len) { if (end_of_fold[len]) { status = string_set_contains_ign(state, string_set, folded, first, - last, folded_charsize); + last, first, folded_charsize); if (status == 1) { /* Advance past the match. */ @@ -9681,7 +9919,7 @@ Py_LOCAL_INLINE(int) string_set_match_ign_fwdrev(RE_SafeState* safe_state, } if (reverse) { - first = f_pos; + first = f_pos + 1; last = max_len; } else { first = 0; @@ -9710,7 +9948,7 @@ Py_LOCAL_INLINE(int) string_set_match_ign_fwdrev(RE_SafeState* safe_state, /* Is the text we have a partial match? */ status = string_set_contains_ign(state, string_set, folded, first, - last, folded_charsize); + last, first, folded_charsize); if (status < 0) goto finished; @@ -9739,7 +9977,7 @@ Py_LOCAL_INLINE(int) string_set_match_ign_fwdrev(RE_SafeState* safe_state, */ while (len >= min_len) { status = string_set_contains_ign(state, string_set, folded, first, - last, folded_charsize); + last, first, folded_charsize); if (status == 1) { /* Advance past the match. */ @@ -9781,7 +10019,7 @@ Py_LOCAL_INLINE(BOOL) any_error_permitted(RE_State* state) { return fuzzy_info->total_cost <= values[RE_FUZZY_VAL_MAX_COST] && fuzzy_info->counts[RE_FUZZY_ERR] < values[RE_FUZZY_VAL_MAX_ERR] && - state->total_cost <= state->max_cost; + state->total_errors <= state->max_errors; } /* Checks whether this additional fuzzy error is permitted. */ @@ -9794,8 +10032,8 @@ Py_LOCAL_INLINE(BOOL) this_error_permitted(RE_State* state, int fuzzy_type) { return fuzzy_info->total_cost + values[RE_FUZZY_VAL_COST_BASE + fuzzy_type] <= values[RE_FUZZY_VAL_MAX_COST] && fuzzy_info->counts[fuzzy_type] < - values[RE_FUZZY_VAL_MAX_BASE + fuzzy_type] && state->total_cost + - values[RE_FUZZY_VAL_COST_BASE + fuzzy_type] <= state->max_cost; + values[RE_FUZZY_VAL_MAX_BASE + fuzzy_type] && state->total_errors + 1 <= + state->max_errors; } /* Checks whether we've reachsd the end of the text during a fuzzy partial @@ -9929,7 +10167,7 @@ found: ++fuzzy_info->counts[RE_FUZZY_ERR]; fuzzy_info->total_cost += values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; ++state->total_errors; - state->total_cost += values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; + ++state->capture_change; *text_pos = data.new_text_pos; *node = data.new_node; @@ -9963,7 +10201,6 @@ Py_LOCAL_INLINE(int) retry_fuzzy_match_item(RE_SafeState* safe_state, BOOL fuzzy_info->total_cost -= values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; --state->total_errors; - state->total_cost -= values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; } /* Permit insertion except initially when searching (it's better just to @@ -9997,7 +10234,7 @@ found: ++fuzzy_info->counts[RE_FUZZY_ERR]; fuzzy_info->total_cost += values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; ++state->total_errors; - state->total_cost += values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; + ++state->capture_change; *text_pos = data.new_text_pos; *node = data.new_node; @@ -10079,7 +10316,6 @@ Py_LOCAL_INLINE(int) retry_fuzzy_insert(RE_SafeState* safe_state, Py_ssize_t* fuzzy_info->counts[RE_FUZZY_ERR] -= count; fuzzy_info->total_cost -= values[RE_FUZZY_VAL_INS_COST] * count; state->total_errors -= count; - state->total_cost -= values[RE_FUZZY_VAL_INS_COST] * count; state->too_few_errors = bt_data->fuzzy_insert.too_few_errors; discard_backtrack(state); @@ -10093,7 +10329,7 @@ Py_LOCAL_INLINE(int) retry_fuzzy_insert(RE_SafeState* safe_state, Py_ssize_t* ++fuzzy_info->counts[RE_FUZZY_ERR]; fuzzy_info->total_cost += values[RE_FUZZY_VAL_INS_COST]; ++state->total_errors; - state->total_cost += values[RE_FUZZY_VAL_INS_COST]; + ++state->capture_change; /* Check whether there are too few errors. */ state->too_few_errors = bt_data->fuzzy_insert.too_few_errors; @@ -10170,7 +10406,7 @@ found: ++fuzzy_info->counts[RE_FUZZY_ERR]; fuzzy_info->total_cost += values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; ++state->total_errors; - state->total_cost += values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; + ++state->capture_change; *text_pos = data.new_text_pos; *string_pos = data.new_string_pos; @@ -10205,7 +10441,6 @@ Py_LOCAL_INLINE(int) retry_fuzzy_match_string(RE_SafeState* safe_state, BOOL --fuzzy_info->counts[RE_FUZZY_ERR]; fuzzy_info->total_cost -= values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; --state->total_errors; - state->total_cost -= values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; /* Permit insertion except initially when searching (it's better just to * start searching one character later). @@ -10236,7 +10471,7 @@ found: ++fuzzy_info->counts[RE_FUZZY_ERR]; fuzzy_info->total_cost += values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; ++state->total_errors; - state->total_cost += values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; + ++state->capture_change; *text_pos = data.new_text_pos; *node = new_node; @@ -10355,7 +10590,7 @@ found: ++fuzzy_info->counts[RE_FUZZY_ERR]; fuzzy_info->total_cost += values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; ++state->total_errors; - state->total_cost += values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; + ++state->capture_change; *text_pos = new_text_pos; *string_pos = data.new_string_pos; @@ -10394,7 +10629,6 @@ Py_LOCAL_INLINE(int) retry_fuzzy_match_string_fld(RE_SafeState* safe_state, --fuzzy_info->counts[RE_FUZZY_ERR]; fuzzy_info->total_cost -= values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; --state->total_errors; - state->total_cost -= values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; /* Permit insertion except initially when searching (it's better just to * start searching one character later). @@ -10431,7 +10665,7 @@ found: ++fuzzy_info->counts[RE_FUZZY_ERR]; fuzzy_info->total_cost += values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; ++state->total_errors; - state->total_cost += values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; + ++state->capture_change; *text_pos = new_text_pos; *node = new_node; @@ -10556,7 +10790,7 @@ found: ++fuzzy_info->counts[RE_FUZZY_ERR]; fuzzy_info->total_cost += values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; ++state->total_errors; - state->total_cost += values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; + ++state->capture_change; *text_pos = new_text_pos; *group_pos = new_group_pos; @@ -10598,7 +10832,6 @@ Py_LOCAL_INLINE(int) retry_fuzzy_match_group_fld(RE_SafeState* safe_state, BOOL --fuzzy_info->counts[RE_FUZZY_ERR]; fuzzy_info->total_cost -= values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; --state->total_errors; - state->total_cost -= values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; /* Permit insertion except initially when searching (it's better just to * start searching one character later). @@ -10629,7 +10862,7 @@ found: ++fuzzy_info->counts[RE_FUZZY_ERR]; fuzzy_info->total_cost += values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; ++state->total_errors; - state->total_cost += values[RE_FUZZY_VAL_COST_BASE + data.fuzzy_type]; + ++state->capture_change; *text_pos = new_text_pos; *node = new_node; @@ -10652,9 +10885,6 @@ Py_LOCAL_INLINE(Py_ssize_t) locate_required_string(RE_SafeState* safe_state, state = safe_state->re_state; pattern = state->pattern; - /* We haven't matched the required string yet. */ - state->req_pos = -1; - if (!pattern->req_string) /* There isn't a required string, so start matching from the current * position. @@ -10677,8 +10907,15 @@ Py_LOCAL_INLINE(Py_ssize_t) locate_required_string(RE_SafeState* safe_state, limit = state->slice_end; } - found_pos = string_search(safe_state, pattern->req_string, - state->text_pos, limit, &is_partial); + if (state->req_pos < 0 || state->text_pos > state->req_pos) + /* First time or already passed it. */ + found_pos = string_search(safe_state, pattern->req_string, + state->text_pos, limit, &is_partial); + else { + found_pos = state->req_pos; + is_partial = FALSE; + } + if (found_pos < 0) /* The required string wasn't found. */ return -1; @@ -10714,8 +10951,15 @@ Py_LOCAL_INLINE(Py_ssize_t) locate_required_string(RE_SafeState* safe_state, limit = state->slice_end; } - found_pos = string_search_fld(safe_state, pattern->req_string, - state->text_pos, limit, &end_pos, &is_partial); + if (state->req_pos < 0 || state->text_pos > state->req_pos) + /* First time or already passed it. */ + found_pos = string_search_fld(safe_state, pattern->req_string, + state->text_pos, limit, &end_pos, &is_partial); + else { + found_pos = state->req_pos; + is_partial = FALSE; + } + if (found_pos < 0) /* The required string wasn't found. */ return -1; @@ -10750,8 +10994,15 @@ Py_LOCAL_INLINE(Py_ssize_t) locate_required_string(RE_SafeState* safe_state, limit = state->slice_start; } - found_pos = string_search_fld_rev(safe_state, pattern->req_string, - state->text_pos, limit, &end_pos, &is_partial); + if (state->req_pos < 0 || state->text_pos < state->req_pos) + /* First time or already passed it. */ + found_pos = string_search_fld_rev(safe_state, pattern->req_string, + state->text_pos, limit, &end_pos, &is_partial); + else { + found_pos = state->req_pos; + is_partial = FALSE; + } + if (found_pos < 0) /* The required string wasn't found. */ return -1; @@ -10786,8 +11037,15 @@ Py_LOCAL_INLINE(Py_ssize_t) locate_required_string(RE_SafeState* safe_state, limit = state->slice_end; } - found_pos = string_search_ign(safe_state, pattern->req_string, - state->text_pos, limit, &is_partial); + if (state->req_pos < 0 || state->text_pos > state->req_pos) + /* First time or already passed it. */ + found_pos = string_search_ign(safe_state, pattern->req_string, + state->text_pos, limit, &is_partial); + else { + found_pos = state->req_pos; + is_partial = FALSE; + } + if (found_pos < 0) /* The required string wasn't found. */ return -1; @@ -10823,8 +11081,15 @@ Py_LOCAL_INLINE(Py_ssize_t) locate_required_string(RE_SafeState* safe_state, limit = state->slice_start; } - found_pos = string_search_ign_rev(safe_state, pattern->req_string, - state->text_pos, limit, &is_partial); + if (state->req_pos < 0 || state->text_pos < state->req_pos) + /* First time or already passed it. */ + found_pos = string_search_ign_rev(safe_state, pattern->req_string, + state->text_pos, limit, &is_partial); + else { + found_pos = state->req_pos; + is_partial = FALSE; + } + if (found_pos < 0) /* The required string wasn't found. */ return -1; @@ -10860,8 +11125,15 @@ Py_LOCAL_INLINE(Py_ssize_t) locate_required_string(RE_SafeState* safe_state, limit = state->slice_start; } - found_pos = string_search_rev(safe_state, pattern->req_string, - state->text_pos, limit, &is_partial); + if (state->req_pos < 0 || state->text_pos < state->req_pos) + /* First time or already passed it. */ + found_pos = string_search_rev(safe_state, pattern->req_string, + state->text_pos, limit, &is_partial); + else { + found_pos = state->req_pos; + is_partial = FALSE; + } + if (found_pos < 0) /* The required string wasn't found. */ return -1; @@ -10954,13 +11226,244 @@ Py_LOCAL_INLINE(int) match_one(RE_State* state, RE_Node* node, Py_ssize_t return FALSE; } +/* Tests whether 2 nodes contains the same values. */ +Py_LOCAL_INLINE(BOOL) same_values(RE_Node* node_1, RE_Node* node_2) { + size_t i; + + if (node_1->value_count != node_2->value_count) + return FALSE; + + for (i = 0; i < node_1->value_count; i++) { + if (node_1->values[i] != node_2->values[i]) + return FALSE; + } + + return TRUE; +} + +/* Tests whether 2 nodes are equivalent (both string-like in the same way). */ +Py_LOCAL_INLINE(BOOL) equivalent_nodes(RE_Node* node_1, RE_Node* node_2) { + switch (node_1->op) { + case RE_OP_CHARACTER: + case RE_OP_STRING: + switch (node_2->op) { + case RE_OP_CHARACTER: + case RE_OP_STRING: + return same_values(node_1, node_2); + } + break; + case RE_OP_CHARACTER_IGN: + case RE_OP_STRING_IGN: + switch (node_2->op) { + case RE_OP_CHARACTER_IGN: + case RE_OP_STRING_IGN: + return same_values(node_1, node_2); + } + break; + case RE_OP_CHARACTER_IGN_REV: + case RE_OP_STRING_IGN_REV: + switch (node_2->op) { + case RE_OP_CHARACTER_IGN_REV: + case RE_OP_STRING_IGN_REV: + return same_values(node_1, node_2); + } + break; + case RE_OP_CHARACTER_REV: + case RE_OP_STRING_REV: + switch (node_2->op) { + case RE_OP_CHARACTER_REV: + case RE_OP_STRING_REV: + return same_values(node_1, node_2); + } + break; + } + + return FALSE; +} + +/* Prunes the backtracking. */ +Py_LOCAL_INLINE(void) prune_backtracking(RE_State* state) { + RE_AtomicBlock* current; + + current = state->current_atomic_block; + if (current && current->count > 0) { + /* In an atomic group or a lookaround. */ + RE_AtomicData* atomic; + + /* Discard any backtracking info from inside the atomic group or + * lookaround. + */ + atomic = ¤t->items[current->count - 1]; + state->current_backtrack_block = atomic->current_backtrack_block; + state->current_backtrack_block->count = atomic->backtrack_count; + } else { + /* In the outermost pattern. */ + while (state->current_backtrack_block->previous) + state->current_backtrack_block = + state->current_backtrack_block->previous; + + /* Keep the bottom FAILURE on the backtracking stack. */ + state->current_backtrack_block->count = 1; + } +} + +/* Saves the match as the best POSIX match (leftmost longest) found so far. */ +Py_LOCAL_INLINE(BOOL) save_best_match(RE_SafeState* safe_state) { + RE_State* state; + size_t group_count; + size_t g; + + state = safe_state->re_state; + + state->best_match_pos = state->match_pos; + state->best_text_pos = state->text_pos; + state->found_match = TRUE; + + memmove(state->best_fuzzy_counts, state->total_fuzzy_counts, + sizeof(state->total_fuzzy_counts)); + + group_count = state->pattern->true_group_count; + if (group_count == 0) + return TRUE; + + acquire_GIL(safe_state); + + if (!state->best_match_groups) { + /* Allocate storage for the groups of the best match. */ + state->best_match_groups = (RE_GroupData*)re_alloc(group_count * + sizeof(RE_GroupData)); + if (!state->best_match_groups) + goto error; + + memset(state->best_match_groups, 0, group_count * + sizeof(RE_GroupData)); + + for (g = 0; g < group_count; g++) { + RE_GroupData* best; + RE_GroupData* group; + + best = &state->best_match_groups[g]; + group = &state->groups[g]; + + best->capture_capacity = group->capture_capacity; + best->captures = (RE_GroupSpan*)re_alloc(best->capture_capacity * + sizeof(RE_GroupSpan)); + if (!best->captures) + goto error; + } + } + + /* Copy the group spans and captures. */ + for (g = 0; g < group_count; g++) { + RE_GroupData* best; + RE_GroupData* group; + + best = &state->best_match_groups[g]; + group = &state->groups[g]; + + best->span = group->span; + best->capture_count = group->capture_count; + + if (best->capture_count < best->capture_capacity) { + /* We need more space for the captures. */ + re_dealloc(best->captures); + best->captures = (RE_GroupSpan*)re_alloc(best->capture_capacity * + sizeof(RE_GroupSpan)); + if (!best->captures) + goto error; + } + + /* Copy the captures for this group. */ + memmove(best->captures, group->captures, group->capture_count * + sizeof(RE_GroupSpan)); + } + + release_GIL(safe_state); + + return TRUE; + +error: + release_GIL(safe_state); + + return FALSE; +} + +/* Restores the best match for a POSIX match (leftmost longest). */ +Py_LOCAL_INLINE(void) restore_best_match(RE_SafeState* safe_state) { + RE_State* state; + size_t group_count; + size_t g; + + state = safe_state->re_state; + + if (!state->found_match) + return; + + state->match_pos = state->best_match_pos; + state->text_pos = state->best_text_pos; + + memmove(state->total_fuzzy_counts, state->best_fuzzy_counts, + sizeof(state->total_fuzzy_counts)); + + group_count = state->pattern->true_group_count; + if (group_count == 0) + return; + + /* Copy the group spans and captures. */ + for (g = 0; g < group_count; g++) { + RE_GroupData* group; + RE_GroupData* best; + + group = &state->groups[g]; + best = &state->best_match_groups[g]; + + group->span = best->span; + group->capture_count = best->capture_count; + + /* Copy the captures for this group. */ + memmove(group->captures, best->captures, best->capture_count * + sizeof(RE_GroupSpan)); + } +} + +/* Checks whether the new match is better than the current match for a POSIX + * match (leftmost longest) and saves it if it is. + */ +Py_LOCAL_INLINE(BOOL) check_posix_match(RE_SafeState* safe_state) { + RE_State* state; + Py_ssize_t best_length; + Py_ssize_t new_length; + + state = safe_state->re_state; + + if (!state->found_match) + return save_best_match(safe_state); + + /* Check the overall match. */ + if (state->reverse) { + /* We're searching backwards. */ + best_length = state->match_pos - state->best_text_pos; + new_length = state->match_pos - state->text_pos; + } else { + /* We're searching forwards. */ + best_length = state->best_text_pos - state->match_pos; + new_length = state->text_pos - state->match_pos; + } + + if (new_length > best_length) + /* It's a longer match. */ + return save_best_match(safe_state); + + return TRUE; +} + /* Performs a depth-first match or search from the context. */ -Py_LOCAL_INLINE(int) basic_match(RE_SafeState* safe_state, RE_Node* start_node, - BOOL search, BOOL recursive_call) { +Py_LOCAL_INLINE(int) basic_match(RE_SafeState* safe_state, BOOL search) { RE_State* state; RE_EncodingTable* encoding; RE_LocaleInfo* locale_info; PatternObject* pattern; + RE_Node* start_node; RE_NextNode start_pair; Py_UCS4 (*char_at)(void* text, Py_ssize_t pos); Py_ssize_t pattern_step; /* The overall step of the pattern (forwards or backwards). */ @@ -10977,13 +11480,11 @@ Py_LOCAL_INLINE(int) basic_match(RE_SafeState* safe_state, RE_Node* start_node, encoding = state->encoding; locale_info = state->locale_info; pattern = state->pattern; + start_node = pattern->start_node; /* Look beyond any initial group node. */ start_pair.node = start_node; - if (recursive_call) - start_pair.test = locate_test_start(start_node); - else - start_pair.test = pattern->start_test; + start_pair.test = pattern->start_test; /* Is the pattern anchored to the start or end of the string? */ switch (start_pair.test->op) { @@ -11013,6 +11514,11 @@ Py_LOCAL_INLINE(int) basic_match(RE_SafeState* safe_state, RE_Node* start_node, pattern_step = state->reverse ? -1 : 1; string_pos = -1; do_search_start = pattern->do_search_start; + state->fewest_errors = state->max_errors; + + if (do_search_start && pattern->req_string && + equivalent_nodes(start_pair.test, pattern->req_string)) + do_search_start = FALSE; /* Add a backtrack entry for failure. */ if (!add_backtrack(safe_state, RE_OP_FAILURE)) @@ -11033,7 +11539,7 @@ start_match: /* Locate the required string, if there's one, unless this is a recursive * call of 'basic_match'. */ - if (!pattern->req_string || recursive_call) + if (!pattern->req_string || state->text_pos < state->req_pos) found_pos = state->text_pos; else { found_pos = locate_required_string(safe_state, search); @@ -11053,7 +11559,10 @@ next_match_1: * avoid the overhead of the call subsequently. */ status = search_start(safe_state, &start_pair, &new_position, 0); - if (status != RE_ERROR_SUCCESS) + if (status == RE_ERROR_PARTIAL) { + state->match_pos = new_position.text_pos; + return status; + } else if (status != RE_ERROR_SUCCESS) return status; node = new_position.node; @@ -11102,7 +11611,7 @@ next_match_2: !state->must_advance) { BOOL success; - if (state->match_all && !recursive_call) { + if (state->match_all) { /* We want to match all of the slice. */ if (state->reverse) success = state->text_pos == state->slice_start; @@ -11265,10 +11774,9 @@ advance: } else goto backtrack; break; - case RE_OP_ATOMIC: /* Atomic subpattern. */ + case RE_OP_ATOMIC: /* Start of an atomic group. */ { - RE_Info info; - int status; + RE_AtomicData* atomic; TRACE(("%s\n", re_op_text[node->op])) if (!add_backtrack(safe_state, RE_OP_ATOMIC)) @@ -11276,25 +11784,22 @@ advance: state->backtrack->atomic.too_few_errors = state->too_few_errors; state->backtrack->atomic.capture_change = state->capture_change; - /* Save the groups. */ - if (!push_groups(safe_state)) + atomic = push_atomic(safe_state); + if (!atomic) + return RE_ERROR_MEMORY; + atomic->backtrack_count = state->current_backtrack_block->count; + atomic->current_backtrack_block = state->current_backtrack_block; + atomic->is_lookaround = FALSE; + atomic->has_groups = (node->status & RE_STATUS_HAS_GROUPS) != 0; + atomic->has_repeats = (node->status & RE_STATUS_HAS_REPEATS) != 0; + atomic->call_frame = state->current_group_call_frame; + + /* Save the groups and repeats. */ + if (atomic->has_groups && !push_groups(safe_state)) return RE_ERROR_MEMORY; - save_info(state, &info); - - state->must_advance = FALSE; - - status = basic_match(safe_state, node->nonstring.next_2.node, - FALSE, TRUE); - if (status < 0) - return status; - - reset_guards(state, node->values); - - restore_info(state, &info); - - if (status != RE_ERROR_SUCCESS) - goto backtrack; + if (atomic->has_repeats && !push_repeats(safe_state)) + return RE_ERROR_MEMORY; node = node->next_1.node; break; @@ -11449,6 +11954,54 @@ advance: } else goto backtrack; break; + case RE_OP_CONDITIONAL: /* Start of a conditional subpattern. */ + { + RE_AtomicData* conditional; + TRACE(("%s %d\n", re_op_text[node->op], node->match)) + + if (!add_backtrack(safe_state, RE_OP_CONDITIONAL)) + return RE_ERROR_BACKTRACKING; + state->backtrack->lookaround.too_few_errors = + state->too_few_errors; + state->backtrack->lookaround.capture_change = + state->capture_change; + state->backtrack->lookaround.inside = TRUE; + state->backtrack->lookaround.node = node; + + conditional = push_atomic(safe_state); + if (!conditional) + return RE_ERROR_MEMORY; + conditional->backtrack_count = + state->current_backtrack_block->count; + conditional->current_backtrack_block = + state->current_backtrack_block; + conditional->slice_start = state->slice_start; + conditional->slice_end = state->slice_end; + conditional->text_pos = state->text_pos; + conditional->node = node; + conditional->backtrack = state->backtrack; + conditional->is_lookaround = TRUE; + conditional->has_groups = (node->status & RE_STATUS_HAS_GROUPS) != + 0; + conditional->has_repeats = (node->status & RE_STATUS_HAS_REPEATS) + != 0; + + /* Save the groups and repeats. */ + if (conditional->has_groups && !push_groups(safe_state)) + return RE_ERROR_MEMORY; + + if (conditional->has_repeats && !push_repeats(safe_state)) + return RE_ERROR_MEMORY; + + conditional->saved_groups = state->current_saved_groups; + conditional->saved_repeats = state->current_saved_repeats; + + state->slice_start = 0; + state->slice_end = state->text_length; + + node = node->next_1.node; + break; + } case RE_OP_DEFAULT_BOUNDARY: /* On a default word boundary. */ TRACE(("%s %d\n", re_op_text[node->op], node->match)) @@ -11511,6 +12064,66 @@ advance: } else goto backtrack; break; + case RE_OP_END_ATOMIC: /* End of an atomic group. */ + { + RE_AtomicData* atomic; + TRACE(("%s\n", re_op_text[node->op])) + + /* Discard any backtracking info from inside the atomic group. */ + atomic = top_atomic(safe_state); + state->current_backtrack_block = atomic->current_backtrack_block; + state->current_backtrack_block->count = atomic->backtrack_count; + + node = node->next_1.node; + break; + } + case RE_OP_END_CONDITIONAL: /* End of a conditional subpattern. */ + { + RE_AtomicData* conditional; + TRACE(("%s\n", re_op_text[node->op])) + + conditional = pop_atomic(safe_state); + while (!conditional->is_lookaround) { + if (conditional->has_repeats) + drop_repeats(state); + + if (conditional->has_groups) + drop_groups(state); + + conditional = pop_atomic(safe_state); + } + state->text_pos = conditional->text_pos; + state->slice_end = conditional->slice_end; + state->slice_start = conditional->slice_start; + + /* Discard any backtracking info from inside the lookaround. */ + state->current_backtrack_block = + conditional->current_backtrack_block; + state->current_backtrack_block->count = + conditional->backtrack_count; + state->current_saved_groups = conditional->saved_groups; + state->current_saved_repeats = conditional->saved_repeats; + + /* It's a positive lookaround that's succeeded. We're now going to + * leave the lookaround. + */ + conditional->backtrack->lookaround.inside = FALSE; + + if (conditional->node->match) { + /* It's a positive lookaround that's succeeded. + * + * Go to the 'true' branch. + */ + node = node->next_1.node; + } else { + /* It's a negative lookaround that's succeeded. + * + * Go to the 'false' branch. + */ + node = node->nonstring.next_2.node; + } + break; + } case RE_OP_END_FUZZY: /* End of fuzzy matching. */ TRACE(("%s\n", re_op_text[node->op])) @@ -11563,6 +12176,12 @@ advance: changed = rp_data->capture_change != state->capture_change || state->text_pos != rp_data->start; + /* Additional checks are needed if there's fuzzy matching. */ + if (changed && state->pattern->is_fuzzy && rp_data->count >= + node->values[1]) + changed = !(node->step == 1 ? state->text_pos >= + state->slice_end : state->text_pos <= state->slice_start); + /* The counts are of type size_t, so the format needs to specify * that. */ @@ -11588,7 +12207,7 @@ advance: try_tail = (!changed || rp_data->count >= node->values[1]) && !is_repeat_guarded(safe_state, index, state->text_pos, RE_STATUS_TAIL); - if(try_tail) { + if (try_tail) { tail_status = try_match(state, &node->nonstring.next_2, state->text_pos, &next_tail_position); if (tail_status < 0) @@ -11728,6 +12347,12 @@ advance: changed = rp_data->capture_change != state->capture_change || state->text_pos != rp_data->start; + /* Additional checks are needed if there's fuzzy matching. */ + if (changed && state->pattern->is_fuzzy && rp_data->count >= + node->values[1]) + changed = !(node->step == 1 ? state->text_pos >= + state->slice_end : state->text_pos <= state->slice_start); + /* The counts are of type size_t, so the format needs to specify * that. */ @@ -11830,6 +12455,60 @@ advance: } break; } + case RE_OP_END_LOOKAROUND: /* End of a lookaround subpattern. */ + { + RE_AtomicData* lookaround; + + lookaround = pop_atomic(safe_state); + while (!lookaround->is_lookaround) { + if (lookaround->has_repeats) + drop_repeats(state); + + if (lookaround->has_groups) + drop_groups(state); + + lookaround = pop_atomic(safe_state); + } + state->text_pos = lookaround->text_pos; + state->slice_end = lookaround->slice_end; + state->slice_start = lookaround->slice_start; + + /* Discard any backtracking info from inside the lookaround. */ + state->current_backtrack_block = + lookaround->current_backtrack_block; + state->current_backtrack_block->count = + lookaround->backtrack_count; + state->current_saved_groups = lookaround->saved_groups; + state->current_saved_repeats = lookaround->saved_repeats; + + if (lookaround->node->match) { + /* It's a positive lookaround that's succeeded. We're now going + * to leave the lookaround. + */ + lookaround->backtrack->lookaround.inside = FALSE; + + node = node->next_1.node; + } else { + /* It's a negative lookaround that's succeeded. The groups and + * certain flags may have changed. We need to restore them and + * then backtrack. + */ + if (lookaround->has_repeats) + pop_repeats(state); + + if (lookaround->has_groups) + pop_groups(state); + + state->too_few_errors = + lookaround->backtrack->lookaround.too_few_errors; + state->capture_change = + lookaround->backtrack->lookaround.capture_change; + + discard_backtrack(state); + goto backtrack; + } + break; + } case RE_OP_END_OF_LINE: /* At the end of a line. */ TRACE(("%s\n", re_op_text[node->op])) @@ -11952,6 +12631,8 @@ advance: } else goto backtrack; break; + case RE_OP_FAILURE: /* Failure. */ + goto backtrack; case RE_OP_FUZZY: /* Fuzzy matching. */ { RE_FuzzyInfo* fuzzy_info; @@ -12149,17 +12830,19 @@ advance: goto backtrack; } - /* Record the backtracking info. */ - if (!add_backtrack(safe_state, RE_OP_GREEDY_REPEAT_ONE)) - return RE_ERROR_BACKTRACKING; - bt_data = state->backtrack; - bt_data->repeat.position.node = node; - bt_data->repeat.index = index; - bt_data->repeat.text_pos = rp_data->start; - bt_data->repeat.count = rp_data->count; + if (count > node->values[1]) { + /* Record the backtracking info. */ + if (!add_backtrack(safe_state, RE_OP_GREEDY_REPEAT_ONE)) + return RE_ERROR_BACKTRACKING; + bt_data = state->backtrack; + bt_data->repeat.position.node = node; + bt_data->repeat.index = index; + bt_data->repeat.text_pos = rp_data->start; + bt_data->repeat.count = rp_data->count; - rp_data->start = state->text_pos; - rp_data->count = count; + rp_data->start = state->text_pos; + rp_data->count = count; + } /* Advance into the tail. */ state->text_pos += (Py_ssize_t)count * node->step; @@ -12213,7 +12896,6 @@ advance: } case RE_OP_GROUP_EXISTS: /* Capture group exists. */ { - RE_GroupData* group; TRACE(("%s %d\n", re_op_text[node->op], node->values[0])) /* Capture group indexes are 1-based (excluding group 0, which is @@ -12221,12 +12903,24 @@ advance: * * Check whether the captured text, if any, exists at this position * in the string. + * + * A group index of 0, however, means that it's a DEFINE, which we + * should skip. */ - group = &state->groups[node->values[0] - 1]; - if (group->current_capture >= 0) - node = node->next_1.node; - else + if (node->values[0] == 0) + /* Skip past the body. */ node = node->nonstring.next_2.node; + else { + RE_GroupData* group; + + group = &state->groups[node->values[0] - 1]; + if (group->current_capture >= 0) + /* The 'true' branch. */ + node = node->next_1.node; + else + /* The 'false' branch. */ + node = node->nonstring.next_2.node; + } break; } case RE_OP_GROUP_RETURN: /* Group return. */ @@ -12261,6 +12955,19 @@ advance: pop_group_return(state); break; } + case RE_OP_KEEP: /* Keep. */ + { + RE_BacktrackData* bt_data; + TRACE(("%s\n", re_op_text[node->op])) + + if (!add_backtrack(safe_state, RE_OP_KEEP)) + return RE_ERROR_BACKTRACKING; + bt_data = state->backtrack; + bt_data->keep.match_pos = state->match_pos; + state->match_pos = state->text_pos; + node = node->next_1.node; + break; + } case RE_OP_LAZY_REPEAT: /* Lazy repeat. */ { RE_CODE index; @@ -12310,7 +13017,7 @@ advance: body_status = RE_ERROR_FAILURE; try_tail = node->values[1] == 0; - if(try_tail) { + if (try_tail) { tail_status = try_match(state, &node->nonstring.next_2, state->text_pos, &next_tail_position); if (tail_status < 0) @@ -12422,86 +13129,50 @@ advance: node = node->next_1.node; break; } - case RE_OP_LOOKAROUND: /* Lookaround. */ + case RE_OP_LOOKAROUND: /* Start of a lookaround subpattern. */ { - RE_Info info; - size_t capture_change; - Py_ssize_t saved_slice_start; - Py_ssize_t saved_slice_end; - Py_ssize_t saved_text_pos; - BOOL too_few_errors; - int status; + RE_AtomicData* lookaround; TRACE(("%s %d\n", re_op_text[node->op], node->match)) - /* Save the groups. */ - if (!push_groups(safe_state)) + if (!add_backtrack(safe_state, RE_OP_LOOKAROUND)) + return RE_ERROR_BACKTRACKING; + state->backtrack->lookaround.too_few_errors = + state->too_few_errors; + state->backtrack->lookaround.capture_change = + state->capture_change; + state->backtrack->lookaround.inside = TRUE; + state->backtrack->lookaround.node = node; + + lookaround = push_atomic(safe_state); + if (!lookaround) + return RE_ERROR_MEMORY; + lookaround->backtrack_count = + state->current_backtrack_block->count; + lookaround->current_backtrack_block = + state->current_backtrack_block; + lookaround->slice_start = state->slice_start; + lookaround->slice_end = state->slice_end; + lookaround->text_pos = state->text_pos; + lookaround->node = node; + lookaround->backtrack = state->backtrack; + lookaround->is_lookaround = TRUE; + lookaround->has_groups = (node->status & RE_STATUS_HAS_GROUPS) != + 0; + lookaround->has_repeats = (node->status & RE_STATUS_HAS_REPEATS) != + 0; + + /* Save the groups and repeats. */ + if (lookaround->has_groups && !push_groups(safe_state)) return RE_ERROR_MEMORY; - capture_change = state->capture_change; + if (lookaround->has_repeats && !push_repeats(safe_state)) + return RE_ERROR_MEMORY; - /* Save the other info. */ - save_info(state, &info); + lookaround->saved_groups = state->current_saved_groups; + lookaround->saved_repeats = state->current_saved_repeats; - saved_slice_start = state->slice_start; - saved_slice_end = state->slice_end; - saved_text_pos = state->text_pos; state->slice_start = 0; state->slice_end = state->text_length; - state->must_advance = FALSE; - - too_few_errors = state->too_few_errors; - - status = basic_match(safe_state, node->nonstring.next_2.node, - FALSE, TRUE); - if (status < 0) - return status; - - reset_guards(state, node->values + 1); - - state->text_pos = saved_text_pos; - state->slice_end = saved_slice_end; - state->slice_start = saved_slice_start; - - /* Restore the other info. */ - restore_info(state, &info); - - if (node->match) { - /* It's a positive lookaround. */ - if (status == RE_ERROR_SUCCESS) { - /* It succeeded, so the groups and certain flags may have - * changed. - */ - if (!add_backtrack(safe_state, RE_OP_LOOKAROUND)) - return RE_ERROR_BACKTRACKING; - - /* We'll restore the groups and flags on backtracking. */ - state->backtrack->lookaround.too_few_errors = - too_few_errors; - state->backtrack->lookaround.capture_change = - capture_change; - } else { - /* It failed, so the groups and certain flags haven't - * changed. - */ - drop_groups(state); - goto backtrack; - } - } else { - /* It's a negative lookaround. */ - if (status == RE_ERROR_SUCCESS) { - /* It succeeded, so the groups and certain flags may have - * changed. We need to restore them. - */ - pop_groups(state); - state->too_few_errors = too_few_errors; - state->capture_change = capture_change; - goto backtrack; - } else - /* It failed, so the groups and certain flags haven't - * changed. - */ - drop_groups(state); - } node = node->next_1.node; break; @@ -12600,6 +13271,13 @@ advance: } else goto backtrack; break; + case RE_OP_PRUNE: /* Prune the backtracking. */ + TRACE(("%s\n", re_op_text[node->op])) + + prune_backtracking(state); + + node = node->next_1.node; + break; case RE_OP_RANGE: /* A range. */ TRACE(("%s %d %d %d\n", re_op_text[node->op], node->match, node->values[0], node->values[1])) @@ -12817,8 +13495,10 @@ advance: gfolded_pos = 0; } - if (folded_pos < folded_len && folded[folded_pos] == - gfolded[gfolded_pos]) { + if (folded_pos < folded_len && same_char_ign(encoding, + locale_info, + folded[folded_pos], + gfolded[gfolded_pos])) { ++folded_pos; ++gfolded_pos; } else if (node->status & RE_STATUS_FUZZY) { @@ -12920,8 +13600,9 @@ advance: gfolded_pos = gfolded_len; } - if (folded_pos > 0 && folded[folded_pos - 1] == - gfolded[gfolded_pos - 1]) { + if (folded_pos > 0 && same_char_ign(encoding, locale_info, + folded[folded_pos - 1], + gfolded[gfolded_pos - 1])) { --folded_pos; --gfolded_pos; } else if (node->status & RE_STATUS_FUZZY) { @@ -13251,6 +13932,17 @@ advance: } else goto backtrack; break; + case RE_OP_SKIP: /* Skip the part of the text already matched. */ + TRACE(("%s\n", re_op_text[node->op])) + + if (node->status & RE_STATUS_REVERSE) + state->slice_end = state->text_pos; + else + state->slice_start = state->text_pos; + + prune_backtracking(state); + node = node->next_1.node; + break; case RE_OP_START_GROUP: /* Start of a capture group. */ { RE_CODE private_index; @@ -13467,13 +14159,17 @@ advance: state->partial_side == RE_PARTIAL_RIGHT) return RE_ERROR_PARTIAL; - folded_len = full_case_fold(locale_info, - char_at(state->text, state->text_pos), folded); + if (state->text_pos < state->slice_end) + folded_len = full_case_fold(locale_info, + char_at(state->text, state->text_pos), folded); + else + folded_len = 0; + folded_pos = 0; } - if (same_char_ign(encoding, locale_info, - folded[folded_pos], values[string_pos])) { + if (folded_pos < folded_len && same_char_ign(encoding, + locale_info, folded[folded_pos], values[string_pos])) { ++string_pos; ++folded_pos; @@ -13493,7 +14189,7 @@ advance: goto backtrack; } - if (folded_pos >= folded_len) + if (folded_pos >= folded_len && folded_len > 0) ++state->text_pos; } else { string_pos = -1; @@ -13515,7 +14211,7 @@ advance: goto backtrack; } - if (folded_pos >= folded_len) + if (folded_pos >= folded_len && folded_len > 0) ++state->text_pos; } } @@ -13574,13 +14270,18 @@ advance: RE_PARTIAL_LEFT) return RE_ERROR_PARTIAL; - folded_len = full_case_fold(locale_info, - char_at(state->text, state->text_pos - 1), folded); + if (state->text_pos > state->slice_start) + folded_len = full_case_fold(locale_info, + char_at(state->text, state->text_pos - 1), + folded); + else + folded_len = 0; + folded_pos = folded_len; } - if (same_char_ign(encoding, locale_info, folded[folded_pos - - 1], values[string_pos - 1])) { + if (folded_pos > 0 && same_char_ign(encoding, locale_info, + folded[folded_pos - 1], values[string_pos - 1])) { --string_pos; --folded_pos; @@ -13600,7 +14301,7 @@ advance: goto backtrack; } - if (folded_pos <= 0) + if (folded_pos <= 0 && folded_len > 0) --state->text_pos; } else { string_pos = -1; @@ -13622,7 +14323,7 @@ advance: goto backtrack; } - if (folded_pos <= 0) + if (folded_pos <= 0 && folded_len > 0) --state->text_pos; } } @@ -13881,7 +14582,7 @@ advance: if (state->text_pos == state->search_anchor && state->must_advance) goto backtrack; - if (state->match_all && !recursive_call) { + if (state->match_all) { /* We want to match all of the slice. */ if (state->reverse) { if (state->text_pos != state->slice_start) @@ -13892,6 +14593,16 @@ advance: } } + if (state->pattern->flags & RE_FLAG_POSIX) { + /* If we're looking for a POSIX match, check whether this one + * is better and then keep looking. + */ + if (!check_posix_match(safe_state)) + return RE_ERROR_MEMORY; + + goto backtrack; + } + return RE_ERROR_SUCCESS; default: /* Illegal opcode! */ TRACE(("UNKNOWN OP %d\n", node->op)) @@ -13957,15 +14668,27 @@ backtrack: if (node) goto advance; break; - case RE_OP_ATOMIC: /* Atomic subpattern. */ + case RE_OP_ATOMIC: /* Start of an atomic group. */ + { + RE_AtomicData* atomic; TRACE(("%s\n", re_op_text[bt_data->op])) - /* Restore the groups and certain flags and then backtrack. */ - pop_groups(state); + /* Backtrack to the start of an atomic group. */ + atomic = pop_atomic(safe_state); + + if (atomic->has_repeats) + pop_repeats(state); + + if (atomic->has_groups) + pop_groups(state); + state->too_few_errors = bt_data->atomic.too_few_errors; state->capture_change = bt_data->atomic.capture_change; + state->current_group_call_frame = atomic->call_frame; + discard_backtrack(state); break; + } case RE_OP_BODY_END: { RE_RepeatData* rp_data; @@ -14028,11 +14751,73 @@ backtrack: discard_backtrack(state); goto advance; case RE_OP_CALL_REF: /* A group call ref. */ + case RE_OP_GROUP_CALL: /* Group call. */ TRACE(("%s\n", re_op_text[bt_data->op])) pop_group_return(state); discard_backtrack(state); break; + case RE_OP_CONDITIONAL: /* Conditional subpattern. */ + { + TRACE(("%s\n", re_op_text[bt_data->op])) + + if (bt_data->lookaround.inside) { + /* Backtracked to the start of a lookaround. */ + RE_AtomicData* conditional; + + conditional = pop_atomic(safe_state); + state->text_pos = conditional->text_pos; + state->slice_end = conditional->slice_end; + state->slice_start = conditional->slice_start; + state->current_backtrack_block = + conditional->current_backtrack_block; + state->current_backtrack_block->count = + conditional->backtrack_count; + + /* Restore the groups and repeats and certain flags. */ + if (conditional->has_repeats) + pop_repeats(state); + + if (conditional->has_groups) + pop_groups(state); + + state->too_few_errors = bt_data->lookaround.too_few_errors; + state->capture_change = bt_data->lookaround.capture_change; + + if (bt_data->lookaround.node->match) { + /* It's a positive lookaround that's failed. + * + * Go to the 'false' branch. + */ + node = bt_data->lookaround.node->nonstring.next_2.node; + } else { + /* It's a negative lookaround that's failed. + * + * Go to the 'true' branch. + */ + node = bt_data->lookaround.node->nonstring.next_2.node; + } + + discard_backtrack(state); + + goto advance; + } else { + /* Backtracked to a lookaround. If it's a positive lookaround + * that succeeded, we need to restore the groups; if it's a + * negative lookaround that failed, it would have completely + * backtracked inside and already restored the groups. We also + * need to restore certain flags. + */ + if (bt_data->lookaround.node->match) + pop_groups(state); + + state->too_few_errors = bt_data->lookaround.too_few_errors; + state->capture_change = bt_data->lookaround.capture_change; + + discard_backtrack(state); + } + break; + } case RE_OP_END_FUZZY: /* End of fuzzy matching. */ TRACE(("%s\n", re_op_text[bt_data->op])) @@ -14091,20 +14876,30 @@ backtrack: discard_backtrack(state); break; } - case RE_OP_FAILURE: + case RE_OP_FAILURE: /* Failure. */ { - Py_ssize_t end_pos; TRACE(("%s\n", re_op_text[bt_data->op])) + /* Have we been looking for a POSIX match? */ + if (state->found_match) { + restore_best_match(safe_state); + return RE_OP_SUCCESS; + } + /* Do we have to advance? */ if (!search) return RE_ERROR_FAILURE; /* Can we advance? */ state->text_pos = state->match_pos; - end_pos = state->reverse ? state->slice_start : state->slice_end; - if (state->text_pos == end_pos) - return RE_ERROR_FAILURE; + + if (state->reverse) { + if (state->text_pos <= state->slice_start) + return RE_ERROR_FAILURE; + } else { + if (state->text_pos >= state->slice_end) + return RE_ERROR_FAILURE; + } /* Skip over any repeated leading characters. */ switch (start_node->op) { @@ -14127,8 +14922,26 @@ backtrack: } } - /* Advance and try to match again. */ - state->text_pos += pattern_step; + /* Advance and try to match again. e also need to check whether we + * need to skip. + */ + if (state->reverse) { + if (state->text_pos > state->slice_end) + state->text_pos = state->slice_end; + else + --state->text_pos; + } else { + if (state->text_pos < state->slice_start) + state->text_pos = state->slice_start; + else + ++state->text_pos; + } + + /* Clear the groups. */ + clear_groups(state); + + /* Reset the guards. */ + reset_guards(state); goto start_match; } @@ -14199,7 +15012,16 @@ backtrack: RE_STATUS_TAIL, TRUE)) return RE_ERROR_MEMORY; - if (count == node->values[1]) { + /* A (*SKIP) might have change the size of the slice. */ + if (step > 0) { + if (limit < state->slice_start) + limit = state->slice_start; + } else { + if (limit > state->slice_end) + limit = state->slice_end; + } + + if (pos == limit) { /* We've backtracked the repeat as far as we can. */ rp_data->start = bt_data->repeat.text_pos; rp_data->count = bt_data->repeat.count; @@ -14651,12 +15473,6 @@ backtrack: } break; } - case RE_OP_GROUP_CALL: /* Group call. */ - TRACE(("%s\n", re_op_text[bt_data->op])) - - pop_group_return(state); - discard_backtrack(state); - break; case RE_OP_GROUP_RETURN: /* Group return. */ { RE_Node* return_node; @@ -14678,6 +15494,12 @@ backtrack: discard_backtrack(state); break; } + case RE_OP_KEEP: /* Keep. */ + { + state->match_pos = bt_data->keep.match_pos; + discard_backtrack(state); + break; + } case RE_OP_LAZY_REPEAT_ONE: /* Lazy repeat for one character. */ { RE_RepeatData* rp_data; @@ -15324,15 +16146,63 @@ backtrack: } break; } - case RE_OP_LOOKAROUND: /* Lookaround. */ + case RE_OP_LOOKAROUND: /* Lookaround subpattern. */ + { TRACE(("%s\n", re_op_text[bt_data->op])) - /* Restore the groups and certain flags and then backtrack. */ - pop_groups(state); - state->too_few_errors = bt_data->lookaround.too_few_errors; - state->capture_change = bt_data->lookaround.capture_change; - discard_backtrack(state); + if (bt_data->lookaround.inside) { + /* Backtracked to the start of a lookaround. */ + RE_AtomicData* lookaround; + + lookaround = pop_atomic(safe_state); + state->text_pos = lookaround->text_pos; + state->slice_end = lookaround->slice_end; + state->slice_start = lookaround->slice_start; + state->current_backtrack_block = + lookaround->current_backtrack_block; + state->current_backtrack_block->count = + lookaround->backtrack_count; + + /* Restore the groups and repeats and certain flags. */ + if (lookaround->has_repeats) + pop_repeats(state); + + if (lookaround->has_groups) + pop_groups(state); + + state->too_few_errors = bt_data->lookaround.too_few_errors; + state->capture_change = bt_data->lookaround.capture_change; + + if (bt_data->lookaround.node->match) { + /* It's a positive lookaround that's failed. */ + discard_backtrack(state); + } else { + /* It's a negative lookaround that's failed. Record that + * we've now left the lookaround and continue to the + * following node. + */ + bt_data->lookaround.inside = FALSE; + node = bt_data->lookaround.node->nonstring.next_2.node; + goto advance; + } + } else { + /* Backtracked to a lookaround. If it's a positive lookaround + * that succeeded, we need to restore the groups; if it's a + * negative lookaround that failed, it would have completely + * backtracked inside and already restored the groups. We also + * need to restore certain flags. + */ + if (bt_data->lookaround.node->match && + (bt_data->lookaround.node->status & RE_STATUS_HAS_GROUPS)) + pop_groups(state); + + state->too_few_errors = bt_data->lookaround.too_few_errors; + state->capture_change = bt_data->lookaround.capture_change; + + discard_backtrack(state); + } break; + } case RE_OP_MATCH_BODY: { RE_RepeatData* rp_data; @@ -15544,11 +16414,21 @@ Py_LOCAL_INLINE(void) restore_groups(RE_SafeState* safe_state, RE_GroupData* state = safe_state->re_state; pattern = state->pattern; - for (g = 0; g < pattern->true_group_count; g++) - re_dealloc(state->groups[g].captures); + for (g = 0; g < pattern->true_group_count; g++) { + RE_GroupData* group; + RE_GroupData* saved; - Py_MEMCPY(state->groups, saved_groups, pattern->true_group_count * - sizeof(RE_GroupData)); + group = &state->groups[g]; + saved = &saved_groups[g]; + + group->span = saved->span; + + group->capture_count = saved->capture_count; + Py_MEMCPY(group->captures, saved->captures, saved->capture_count * + sizeof(RE_GroupSpan)); + + re_dealloc(saved->captures); + } re_dealloc(saved_groups); @@ -15592,17 +16472,306 @@ Py_LOCAL_INLINE(void) restore_fuzzy_counts(RE_State* state, size_t* sizeof(state->total_fuzzy_counts)); } -/* Performs a match or search from the current text position. - * - * The state can sometimes be shared across threads. In such instances there's - * a lock (mutex) on it. The lock is held for the duration of matching. +/* Makes the list of best matches found so far. */ +Py_LOCAL_INLINE(void) make_best_list(RE_BestList* best_list) { + best_list->capacity = 0; + best_list->count = 0; + best_list->entries = NULL; +} + +/* Clears the list of best matches found so far. */ +Py_LOCAL_INLINE(void) clear_best_list(RE_BestList* best_list) { + best_list->count = 0; +} + +/* Adds a new entry to the list of best matches found so far. */ +Py_LOCAL_INLINE(BOOL) add_to_best_list(RE_SafeState* safe_state, RE_BestList* + best_list, Py_ssize_t match_pos, Py_ssize_t text_pos) { + RE_BestEntry* entry; + + if (best_list->count >= best_list->capacity) { + RE_BestEntry* new_entries; + + best_list->capacity = best_list->capacity == 0 ? 16 : + best_list->capacity * 2; + new_entries = safe_realloc(safe_state, best_list->entries, + best_list->capacity * sizeof(RE_BestEntry)); + if (!new_entries) + return FALSE; + + best_list->entries = new_entries; + } + + entry = &best_list->entries[best_list->count++]; + entry->match_pos = match_pos; + entry->text_pos = text_pos; + + return TRUE; +} + +/* Destroy the list of best matches found so far. */ +Py_LOCAL_INLINE(void) destroy_best_list(RE_SafeState* safe_state, RE_BestList* + best_list) { + if (best_list->entries) + safe_dealloc(safe_state, best_list->entries); +} + +/* Performs a match or search from the current text position for a best fuzzy + * match. */ -Py_LOCAL_INLINE(int) do_match(RE_SafeState* safe_state, BOOL search) { +Py_LOCAL_INLINE(int) do_best_fuzzy_match(RE_SafeState* safe_state, BOOL search) + { + RE_State* state; + Py_ssize_t available; + int step; + size_t fewest_errors; + BOOL must_advance; + BOOL found_match; + RE_BestList best_list; + Py_ssize_t start_pos; + int status; + TRACE(("<>\n")) + + state = safe_state->re_state; + + if (state->reverse) { + available = state->text_pos - state->slice_start; + step = -1; + } else { + available = state->slice_end - state->text_pos; + step = 1; + } + + /* The maximum permitted cost. */ + state->max_errors = PY_SSIZE_T_MAX; + fewest_errors = PY_SSIZE_T_MAX; + + state->best_text_pos = state->reverse ? state->slice_start : + state->slice_end; + + must_advance = state->must_advance; + found_match = FALSE; + + make_best_list(&best_list); + + /* Search the text for the best match. */ + start_pos = state->text_pos; + while (state->slice_start <= start_pos && start_pos <= state->slice_end) { + state->text_pos = start_pos; + state->must_advance = must_advance; + + /* Initialise the state. */ + init_match(state); + + status = RE_ERROR_SUCCESS; + if (state->max_errors == 0 && state->partial_side == RE_PARTIAL_NONE) { + /* An exact match, and partial matches not permitted. */ + if (available < state->min_width || (available == 0 && + state->must_advance)) + status = RE_ERROR_FAILURE; + } + + if (status == RE_ERROR_SUCCESS) + status = basic_match(safe_state, search); + + /* Has an error occurred, or is it a partial match? */ + if (status < 0) + break; + + if (status == RE_ERROR_SUCCESS) { + /* It was a successful match. */ + found_match = TRUE; + + if (state->total_errors < fewest_errors) { + /* This match was better than any of the previous ones. */ + fewest_errors = state->total_errors; + + if (state->total_errors == 0) + /* It was a perfect match. */ + break; + + /* Forget all the previous worse matches and remember this one. + */ + clear_best_list(&best_list); + if (!add_to_best_list(safe_state, &best_list, state->match_pos, + state->text_pos)) + return RE_ERROR_MEMORY; + } else if (state->total_errors == fewest_errors) + /* This match was as good as the previous matches. Remember + * this one. + */ + add_to_best_list(safe_state, &best_list, state->match_pos, + state->text_pos); + } + + /* Should we keep searching? */ + if (!search) + break; + + start_pos = state->match_pos + step; + } + + if (found_match) { + /* We found a match. */ + if (fewest_errors > 0) { + /* It doesn't look like a perfect match. */ + int i; + Py_ssize_t slice_start; + Py_ssize_t slice_end; + size_t error_limit; + size_t best_fuzzy_counts[RE_FUZZY_COUNT]; + RE_GroupData* best_groups; + Py_ssize_t best_match_pos; + Py_ssize_t best_text_pos; + + slice_start = state->slice_start; + slice_end = state->slice_end; + + error_limit = fewest_errors; + + if (error_limit > RE_MAX_ERRORS) + error_limit = RE_MAX_ERRORS; + + best_groups = NULL; + + /* Look again at the best of the matches that we've seen. */ + for (i = 0; i < best_list.count; i++) { + RE_BestEntry* entry; + Py_ssize_t max_offset; + Py_ssize_t offset; + + /* Look for the best fit at this position. */ + entry = &best_list.entries[i]; + + if (search) { + max_offset = state->reverse ? entry->match_pos - + state->slice_start : state->slice_end - entry->match_pos; + + if (max_offset > (Py_ssize_t)fewest_errors) + max_offset = (Py_ssize_t)fewest_errors; + + if (max_offset > (Py_ssize_t)error_limit) + max_offset = (Py_ssize_t)error_limit; + } else + max_offset = 0; + + start_pos = entry->match_pos; + offset = 0; + + while (offset <= max_offset) { + state->max_errors = 1; + + while (state->max_errors <= error_limit) { + state->text_pos = start_pos; + init_match(state); + status = basic_match(safe_state, FALSE); + + if (status == RE_ERROR_SUCCESS) { + BOOL better; + + if (state->total_errors < error_limit || i == 0 && + offset == 0) + better = TRUE; + else if (state->total_errors == error_limit) + /* The cost is as low as the current best, but + * is it earlier? + */ + better = state->reverse ? state->match_pos > + best_match_pos : state->match_pos < + best_match_pos; + + if (better) { + save_fuzzy_counts(state, best_fuzzy_counts); + + best_groups = save_groups(safe_state, + best_groups); + if (!best_groups) { + destroy_best_list(safe_state, &best_list); + return RE_ERROR_MEMORY; + } + + best_match_pos = state->match_pos; + best_text_pos = state->text_pos; + error_limit = state->total_errors; + } + + break; + } + + ++state->max_errors; + } + + start_pos += step; + ++offset; + } + + if (status == RE_ERROR_SUCCESS && state->total_errors == 0) + break; + } + + if (best_groups) { + status = RE_ERROR_SUCCESS; + state->match_pos = best_match_pos; + state->text_pos = best_text_pos; + + restore_groups(safe_state, best_groups); + restore_fuzzy_counts(state, best_fuzzy_counts); + } else { + /* None of the "best" matches could be improved on, so pick the + * first. + */ + RE_BestEntry* entry; + + /* Look at only the part of the string around the match. */ + entry = &best_list.entries[0]; + + if (state->reverse) { + state->slice_start = entry->text_pos; + state->slice_end = entry->match_pos; + } else { + state->slice_start = entry->match_pos; + state->slice_end = entry->text_pos; + } + + /* We'll expand the part that we're looking at to take to + * compensate for any matching errors that have occurred. + */ + if (state->slice_start - slice_start >= + (Py_ssize_t)fewest_errors) + state->slice_start -= (Py_ssize_t)fewest_errors; + else + state->slice_start = slice_start; + + if (slice_end - state->slice_end >= (Py_ssize_t)fewest_errors) + state->slice_end += (Py_ssize_t)fewest_errors; + else + state->slice_end = slice_end; + + state->max_errors = fewest_errors; + state->text_pos = entry->match_pos; + init_match(state); + status = basic_match(safe_state, search); + } + + state->slice_start = slice_start; + state->slice_end = slice_end; + } + } + + destroy_best_list(safe_state, &best_list); + + return status; +} + +/* Performs a match or search from the current text position for an enhanced + * fuzzy match. + */ +Py_LOCAL_INLINE(int) do_enhanced_fuzzy_match(RE_SafeState* safe_state, BOOL + search) { RE_State* state; PatternObject* pattern; Py_ssize_t available; - BOOL get_best; - BOOL enhance_match; + size_t fewest_errors; RE_GroupData* best_groups; Py_ssize_t best_match_pos; BOOL must_advance; @@ -15611,39 +16780,26 @@ Py_LOCAL_INLINE(int) do_match(RE_SafeState* safe_state, BOOL search) { int status; size_t best_fuzzy_counts[RE_FUZZY_COUNT]; Py_ssize_t best_text_pos = 0; /* Initialise to stop compiler warning. */ - TRACE(("<>\n")) + TRACE(("<>\n")) state = safe_state->re_state; pattern = state->pattern; - /* Release the GIL. */ - release_GIL(safe_state); - - /* Is there enough to search? */ - if (state->reverse) { - if (state->text_pos < state->slice_start) { - acquire_GIL(safe_state); - return FALSE; - } - + if (state->reverse) available = state->text_pos - state->slice_start; - } else { - if (state->text_pos > state->slice_end) { - acquire_GIL(safe_state); - return FALSE; - } - + else available = state->slice_end - state->text_pos; - } - - get_best = (pattern->flags & RE_FLAG_BESTMATCH) != 0; - enhance_match = (pattern->flags & RE_FLAG_ENHANCEMATCH) != 0 && !get_best; /* The maximum permitted cost. */ - state->max_cost = pattern->is_fuzzy ? PY_SSIZE_T_MAX : 0; + state->max_errors = PY_SSIZE_T_MAX; + fewest_errors = PY_SSIZE_T_MAX; best_groups = NULL; + state->best_match_pos = state->text_pos; + state->best_text_pos = state->reverse ? state->slice_start : + state->slice_end; + best_match_pos = state->text_pos; must_advance = state->must_advance; @@ -15655,14 +16811,13 @@ Py_LOCAL_INLINE(int) do_match(RE_SafeState* safe_state, BOOL search) { * the current best match, so there's no need to start earlier than * that match. */ - state->text_pos = best_match_pos; state->must_advance = must_advance; /* Initialise the state. */ init_match(state); status = RE_ERROR_SUCCESS; - if (state->max_cost == 0 && state->partial_side == RE_PARTIAL_NONE) { + if (state->max_errors == 0 && state->partial_side == RE_PARTIAL_NONE) { /* An exact match, and partial matches not permitted. */ if (available < state->min_width || (available == 0 && state->must_advance)) @@ -15670,61 +16825,60 @@ Py_LOCAL_INLINE(int) do_match(RE_SafeState* safe_state, BOOL search) { } if (status == RE_ERROR_SUCCESS) - status = basic_match(safe_state, pattern->start_node, search, - FALSE); + status = basic_match(safe_state, search); /* Has an error occurred, or is it a partial match? */ if (status < 0) break; - if (status == RE_ERROR_FAILURE || (status == RE_ERROR_SUCCESS && - state->total_cost == 0)) - break; + if (status == RE_ERROR_SUCCESS) { + BOOL better; - if (!get_best && !enhance_match) - break; + better = state->total_errors < fewest_errors; - save_fuzzy_counts(state, best_fuzzy_counts); + if (better) { + BOOL same_match; - if (!get_best && state->text_pos == state->match_pos) - /* We want the first match. The match is already zero-width, so the - * cost can't get any lower (because the fit can't get any better). - */ - break; + fewest_errors = state->total_errors; + state->max_errors = fewest_errors; - if (best_groups) { - BOOL same; - size_t g; + save_fuzzy_counts(state, best_fuzzy_counts); - /* Did we get the same match as the best so far? */ - same = state->match_pos == best_match_pos && state->text_pos == - best_text_pos; - for (g = 0; same && g < pattern->public_group_count; g++) { - same = state->groups[g].span.start == best_groups[g].span.start - && state->groups[g].span.end == best_groups[g].span.end; - } + same_match = state->match_pos == best_match_pos && + state->text_pos == best_text_pos; + same_match = FALSE; - if (same) + if (best_groups) { + size_t g; + + /* Did we get the same match as the best so far? */ + for (g = 0; same_match && g < pattern->public_group_count; + g++) { + same_match = state->groups[g].span.start == + best_groups[g].span.start && + state->groups[g].span.end == best_groups[g].span.end; + } + } + + /* Save the best result so far. */ + best_groups = save_groups(safe_state, best_groups); + if (!best_groups) { + status = RE_ERROR_MEMORY; + break; + } + + best_match_pos = state->match_pos; + best_text_pos = state->text_pos; + + if (same_match || state->total_errors == 0) + break; + + state->max_errors = state->total_errors; + if (state->max_errors < RE_MAX_ERRORS) + --state->max_errors; + } else break; - } - /* Save the best result so far. */ - best_groups = save_groups(safe_state, best_groups); - if (!best_groups) { - status = RE_ERROR_MEMORY; - break; - } - - best_match_pos = state->match_pos; - best_text_pos = state->text_pos; - - if (state->max_cost == 0) - break; - - /* Reduce the maximum permitted cost and try again. */ - state->max_cost = state->total_cost - 1; - - if (enhance_match) { if (state->reverse) { state->slice_start = state->text_pos; state->slice_end = state->match_pos; @@ -15732,14 +16886,20 @@ Py_LOCAL_INLINE(int) do_match(RE_SafeState* safe_state, BOOL search) { state->slice_start = state->match_pos; state->slice_end = state->text_pos; } - } + + state->text_pos = state->match_pos; + + if (state->max_errors == PY_SSIZE_T_MAX) + state->max_errors = 0; + } else + break; } state->slice_start = slice_start; state->slice_end = slice_end; if (best_groups) { - if (status == RE_ERROR_SUCCESS && state->total_cost == 0) + if (status == RE_ERROR_SUCCESS && state->total_errors == 0) /* We have a perfect match, so the previous best match. */ discard_groups(safe_state, best_groups); else { @@ -15754,6 +16914,126 @@ Py_LOCAL_INLINE(int) do_match(RE_SafeState* safe_state, BOOL search) { } } + return status; +} + +/* Performs a match or search from the current text position for a simple fuzzy + * match. + */ +Py_LOCAL_INLINE(int) do_simple_fuzzy_match(RE_SafeState* safe_state, BOOL + search) { + RE_State* state; + Py_ssize_t available; + int status; + TRACE(("<>\n")) + + state = safe_state->re_state; + + if (state->reverse) + available = state->text_pos - state->slice_start; + else + available = state->slice_end - state->text_pos; + + /* The maximum permitted cost. */ + state->max_errors = PY_SSIZE_T_MAX; + + state->best_match_pos = state->text_pos; + state->best_text_pos = state->reverse ? state->slice_start : + state->slice_end; + + /* Initialise the state. */ + init_match(state); + + status = RE_ERROR_SUCCESS; + if (state->max_errors == 0 && state->partial_side == RE_PARTIAL_NONE) { + /* An exact match, and partial matches not permitted. */ + if (available < state->min_width || (available == 0 && + state->must_advance)) + status = RE_ERROR_FAILURE; + } + + if (status == RE_ERROR_SUCCESS) + status = basic_match(safe_state, search); + + return status; +} + +/* Performs a match or search from the current text position for an exact + * match. + */ +Py_LOCAL_INLINE(int) do_exact_match(RE_SafeState* safe_state, BOOL search) { + RE_State* state; + Py_ssize_t available; + int status; + TRACE(("<>\n")) + + state = safe_state->re_state; + + if (state->reverse) + available = state->text_pos - state->slice_start; + else + available = state->slice_end - state->text_pos; + + /* The maximum permitted cost. */ + state->max_errors = 0; + + state->best_match_pos = state->text_pos; + state->best_text_pos = state->reverse ? state->slice_start : + state->slice_end; + + /* Initialise the state. */ + init_match(state); + + status = RE_ERROR_SUCCESS; + if (state->max_errors == 0 && state->partial_side == RE_PARTIAL_NONE) { + /* An exact match, and partial matches not permitted. */ + if (available < state->min_width || (available == 0 && + state->must_advance)) + status = RE_ERROR_FAILURE; + } + + if (status == RE_ERROR_SUCCESS) + status = basic_match(safe_state, search); + + return status; +} + +/* Performs a match or search from the current text position. + * + * The state can sometimes be shared across threads. In such instances there's + * a lock (mutex) on it. The lock is held for the duration of matching. + */ +Py_LOCAL_INLINE(int) do_match(RE_SafeState* safe_state, BOOL search) { + RE_State* state; + PatternObject* pattern; + int status; + TRACE(("<>\n")) + + state = safe_state->re_state; + pattern = state->pattern; + + /* Is there enough to search? */ + if (state->reverse) { + if (state->text_pos < state->slice_start) + return FALSE; + } else { + if (state->text_pos > state->slice_end) + return FALSE; + } + + /* Release the GIL. */ + release_GIL(safe_state); + + if (pattern->is_fuzzy) { + if (pattern->flags & RE_FLAG_BESTMATCH) + status = do_best_fuzzy_match(safe_state, search); + else if (pattern->flags & RE_FLAG_ENHANCEMATCH) + status = do_enhanced_fuzzy_match(safe_state, search); + else + status = do_simple_fuzzy_match(safe_state, search); + } else + status = do_exact_match(safe_state, search); + if (status == RE_ERROR_SUCCESS || status == RE_ERROR_PARTIAL) { Py_ssize_t max_end_index; RE_GroupInfo* group_info; @@ -15930,6 +17210,7 @@ Py_LOCAL_INLINE(BOOL) state_init_2(RE_State* state, PatternObject* pattern, Py_ssize_t final_pos; state->groups = NULL; + state->best_match_groups = NULL; state->repeats = NULL; state->visible_captures = visible_captures; state->match_all = match_all; @@ -15937,6 +17218,7 @@ Py_LOCAL_INLINE(BOOL) state_init_2(RE_State* state, PatternObject* pattern, state->backtrack_block.next = NULL; state->backtrack_block.capacity = RE_BACKTRACK_BLOCK_SIZE; state->backtrack_allocated = RE_BACKTRACK_BLOCK_SIZE; + state->current_atomic_block = NULL; state->first_saved_groups = NULL; state->current_saved_groups = NULL; state->first_saved_repeats = NULL; @@ -16240,7 +17522,8 @@ Py_LOCAL_INLINE(void) dealloc_fuzzy_guards(RE_FuzzyGuards* guards, size_t /* Finalises a state object, discarding its contents. */ Py_LOCAL_INLINE(void) state_fini(RE_State* state) { - RE_BacktrackBlock* current; + RE_BacktrackBlock* current_backtrack; + RE_AtomicBlock* current_atomic; PatternObject* pattern; RE_SavedGroups* saved_groups; RE_SavedRepeats* saved_repeats; @@ -16252,16 +17535,28 @@ Py_LOCAL_INLINE(void) state_fini(RE_State* state) { PyThread_free_lock(state->lock); /* Deallocate the backtrack blocks. */ - current = state->backtrack_block.next; - while (current) { + current_backtrack = state->backtrack_block.next; + while (current_backtrack) { RE_BacktrackBlock* next; - next = current->next; - re_dealloc(current); + next = current_backtrack->next; + re_dealloc(current_backtrack); state->backtrack_allocated -= RE_BACKTRACK_BLOCK_SIZE; - current = next; + current_backtrack = next; } + /* Deallocate the atomic blocks. */ + current_atomic = state->current_atomic_block; + while (current_atomic) { + RE_AtomicBlock* next; + + next = current_atomic->next; + re_dealloc(current_atomic); + current_atomic = next; + } + + state->current_atomic_block = NULL; + pattern = state->pattern; saved_groups = state->first_saved_groups; @@ -16287,6 +17582,9 @@ Py_LOCAL_INLINE(void) state_fini(RE_State* state) { saved_repeats = next; } + if (state->best_match_groups) + dealloc_groups(state->best_match_groups, pattern->true_group_count); + if (pattern->groups_storage) dealloc_groups(state->groups, pattern->true_group_count); else @@ -16339,13 +17637,13 @@ Py_LOCAL_INLINE(Py_ssize_t) as_string_index(PyObject* obj, Py_ssize_t def) { return def; value = PyInt_AsSsize_t(obj); - if (value != -1 || !PyErr_Occurred()) + if (!(value == -1 && PyErr_Occurred())) return value; PyErr_Clear(); value = PyLong_AsLong(obj); - if (value != -1 || !PyErr_Occurred()) + if (!(value == -1 && PyErr_Occurred())) return value; set_error(RE_ERROR_INDEX, NULL); @@ -16738,13 +18036,13 @@ Py_LOCAL_INLINE(Py_ssize_t) as_group_index(PyObject* obj) { Py_ssize_t value; value = PyInt_AsSsize_t(obj); - if (value != -1 || !PyErr_Occurred()) + if (!(value == -1 && PyErr_Occurred())) return value; PyErr_Clear(); value = PyLong_AsLong(obj); - if (value != -1 || !PyErr_Occurred()) + if (!(value == -1 && PyErr_Occurred())) return value; set_error(RE_ERROR_INDEX, NULL); @@ -16761,7 +18059,7 @@ Py_LOCAL_INLINE(Py_ssize_t) match_get_group_index(MatchObject* self, PyObject* /* Is the index an integer? */ group = as_group_index(index); - if (group != -1 || !PyErr_Occurred()) { + if (!(group == -1 && PyErr_Occurred())) { Py_ssize_t min_group = 0; /* Adjust negative indices where valid and allowed. */ @@ -16776,17 +18074,17 @@ Py_LOCAL_INLINE(Py_ssize_t) match_get_group_index(MatchObject* self, PyObject* return -1; } + PyErr_Clear(); + /* The index might be a group name. */ if (self->pattern->groupindex) { /* Look up the name. */ - PyErr_Clear(); - index = PyObject_GetItem(self->pattern->groupindex, index); if (index) { /* Check that we have an integer. */ group = as_group_index(index); Py_DECREF(index); - if (group != -1 || !PyErr_Occurred()) + if (!(group == -1 && PyErr_Occurred())) return group; } } @@ -17161,8 +18459,8 @@ Py_LOCAL_INLINE(PyObject*) get_match_replacement(MatchObject* self, PyObject* } /* Initialises the join list. */ -Py_LOCAL_INLINE(void) init_join_list(JoinInfo* join_info, BOOL reversed, BOOL - is_unicode) { +Py_LOCAL_INLINE(void) init_join_list(RE_JoinInfo* join_info, BOOL reversed, + BOOL is_unicode) { join_info->list = NULL; join_info->item = NULL; join_info->reversed = reversed; @@ -17170,7 +18468,7 @@ Py_LOCAL_INLINE(void) init_join_list(JoinInfo* join_info, BOOL reversed, BOOL } /* Adds an item to the join list. */ -Py_LOCAL_INLINE(int) add_to_join_list(JoinInfo* join_info, PyObject* item) { +Py_LOCAL_INLINE(int) add_to_join_list(RE_JoinInfo* join_info, PyObject* item) { PyObject* new_item; int status; @@ -17239,13 +18537,13 @@ error: } /* Clears the join list. */ -Py_LOCAL_INLINE(void) clear_join_list(JoinInfo* join_info) { +Py_LOCAL_INLINE(void) clear_join_list(RE_JoinInfo* join_info) { Py_XDECREF(join_info->list); Py_XDECREF(join_info->item); } /* Joins together a list of strings for pattern_subx. */ -Py_LOCAL_INLINE(PyObject*) join_list_info(JoinInfo* join_info) { +Py_LOCAL_INLINE(PyObject*) join_list_info(RE_JoinInfo* join_info) { /* If the list already exists then just do the join. */ if (join_info->list) { PyObject* joiner; @@ -17346,7 +18644,7 @@ Py_LOCAL_INLINE(Py_ssize_t) check_replacement_string(PyObject* str_replacement, static PyObject* match_expand(MatchObject* self, PyObject* str_template) { Py_ssize_t literal_length; PyObject* replacement; - JoinInfo join_info; + RE_JoinInfo join_info; Py_ssize_t size; Py_ssize_t i; @@ -17576,7 +18874,7 @@ error: Py_LOCAL_INLINE(PyObject*) make_match_copy(MatchObject* self); /* MatchObject's '__copy__' method. */ -static PyObject* match_copy(MatchObject* self, PyObject *unused) { +static PyObject* match_copy(MatchObject* self, PyObject* unused) { return make_match_copy(self); } @@ -17591,6 +18889,12 @@ static PyObject* match_regs(MatchObject* self) { PyObject* item; size_t g; + if (self->regs) { + Py_INCREF(self->regs); + + return self->regs; + } + regs = PyTuple_New((Py_ssize_t)self->group_count + 1); if (!regs) return NULL; @@ -17614,10 +18918,11 @@ static PyObject* match_regs(MatchObject* self) { PyTuple_SET_ITEM(regs, g + 1, item); } - Py_INCREF(regs); self->regs = regs; - return regs; + Py_INCREF(self->regs); + + return self->regs; error: Py_DECREF(regs); @@ -17959,7 +19264,7 @@ static PyGetSetDef match_getset[] = { #endif {"fuzzy_counts", (getter)match_fuzzy_counts, (setter)NULL, "A tuple of the number of substitutions, insertions and deletions."}, - {NULL} /* Sentinel */ + {NULL} /* Sentinel */ }; static PyMemberDef match_members[] = { @@ -17973,13 +19278,13 @@ static PyMemberDef match_members[] = { {"partial", T_BOOL, offsetof(MatchObject, partial), READONLY, "Whether it's a partial match."}, #endif - {NULL} /* Sentinel */ + {NULL} /* Sentinel */ }; static PyMappingMethods match_as_mapping = { - (lenfunc)match_length, /* mp_length */ - (binaryfunc)match_getitem, /* mp_subscript */ - 0, /* mp_ass_subscript */ + (lenfunc)match_length, /* mp_length */ + (binaryfunc)match_getitem, /* mp_subscript */ + 0, /* mp_ass_subscript */ }; static PyTypeObject Match_Type = { @@ -18055,11 +19360,26 @@ Py_LOCAL_INLINE(PyObject*) make_match_copy(MatchObject* self) { if (!match) return NULL; - Py_MEMCPY(match, self, sizeof(MatchObject)); - + match->string = self->string; + match->substring = self->substring; + match->substring_offset = self->substring_offset; + match->pattern = self->pattern; + match->pos = self->pos; + match->endpos = self->endpos; + match->match_start = self->match_start; + match->match_end = self->match_end; + match->lastindex = self->lastindex; + match->lastgroup = self->lastgroup; + match->group_count = self->group_count; + match->groups = NULL; /* Copy them later. */ + match->regs = self->regs; + Py_MEMCPY(match->fuzzy_counts, self->fuzzy_counts, + sizeof(self->fuzzy_counts)); + match->partial = self->partial; Py_INCREF(match->string); Py_INCREF(match->substring); Py_INCREF(match->pattern); + Py_XINCREF(match->regs); /* Copy the groups to the MatchObject. */ if (self->group_count > 0) { @@ -18090,12 +19410,17 @@ Py_LOCAL_INLINE(PyObject*) pattern_new_match(PatternObject* pattern, RE_State* match->substring_offset = 0; match->pattern = pattern; match->regs = NULL; - match->fuzzy_counts[RE_FUZZY_SUB] = - state->total_fuzzy_counts[RE_FUZZY_SUB]; - match->fuzzy_counts[RE_FUZZY_INS] = - state->total_fuzzy_counts[RE_FUZZY_INS]; - match->fuzzy_counts[RE_FUZZY_DEL] = - state->total_fuzzy_counts[RE_FUZZY_DEL]; + + if (pattern->is_fuzzy) { + match->fuzzy_counts[RE_FUZZY_SUB] = + state->total_fuzzy_counts[RE_FUZZY_SUB]; + match->fuzzy_counts[RE_FUZZY_INS] = + state->total_fuzzy_counts[RE_FUZZY_INS]; + match->fuzzy_counts[RE_FUZZY_DEL] = + state->total_fuzzy_counts[RE_FUZZY_DEL]; + } else + memset(match->fuzzy_counts, 0, sizeof(match->fuzzy_counts)); + match->partial = status == RE_ERROR_PARTIAL; Py_INCREF(match->string); Py_INCREF(match->substring); @@ -18271,7 +19596,7 @@ static PyObject* scanner_match(ScannerObject* self, PyObject* unused) { } /* ScannerObject's 'search' method. */ -static PyObject* scanner_search(ScannerObject* self, PyObject *unused) { +static PyObject* scanner_search(ScannerObject* self, PyObject* unused) { return scanner_search_or_match(self, TRUE); } @@ -18325,7 +19650,7 @@ Py_LOCAL_INLINE(PyObject*) make_scanner_copy(ScannerObject* self) { } /* ScannerObject's '__copy__' method. */ -static PyObject* scanner_copy(ScannerObject* self, PyObject *unused) { +static PyObject* scanner_copy(ScannerObject* self, PyObject* unused) { return make_scanner_copy(self); } @@ -18361,7 +19686,8 @@ static void scanner_dealloc(PyObject* self_) { self = (ScannerObject*)self_; - state_fini(&self->state); + if (self->status != RE_ERROR_INITIALISING) + state_fini(&self->state); Py_DECREF(self->pattern); PyObject_DEL(self); } @@ -18369,7 +19695,7 @@ static void scanner_dealloc(PyObject* self_) { static PyMemberDef scanner_members[] = { {"pattern", T_OBJECT, offsetof(ScannerObject, pattern), READONLY, "The regex object that produced this scanner object."}, - {NULL} /* Sentinel */ + {NULL} /* Sentinel */ }; static PyTypeObject Scanner_Type = { @@ -18457,11 +19783,12 @@ static PyObject* pattern_scanner(PatternObject* pattern, PyObject* args, self->pattern = pattern; Py_INCREF(self->pattern); + self->status = RE_ERROR_INITIALISING; /* The MatchObject, and therefore repeated captures, will be visible. */ if (!state_init(&self->state, pattern, string, start, end, overlapped != 0, conc, part, TRUE, TRUE, FALSE)) { - PyObject_DEL(self); + Py_DECREF(self); return NULL; } @@ -18607,7 +19934,7 @@ error: } /* SplitterObject's 'split' method. */ -static PyObject* splitter_split(SplitterObject* self, PyObject *unused) { +static PyObject* splitter_split(SplitterObject* self, PyObject* unused) { PyObject* result; result = next_split_part(self); @@ -18672,7 +19999,7 @@ Py_LOCAL_INLINE(PyObject*) make_splitter_copy(SplitterObject* self) { } /* SplitterObject's '__copy__' method. */ -static PyObject* splitter_copy(SplitterObject* self, PyObject *unused) { +static PyObject* splitter_copy(SplitterObject* self, PyObject* unused) { return make_splitter_copy(self); } @@ -18703,7 +20030,8 @@ static void splitter_dealloc(PyObject* self_) { self = (SplitterObject*)self_; - state_fini(&self->state); + if (self->status != RE_ERROR_INITIALISING) + state_fini(&self->state); Py_DECREF(self->pattern); PyObject_DEL(self); } @@ -18718,13 +20046,13 @@ Py_LOCAL_INLINE(Py_ssize_t) index_to_integer(PyObject* item) { Py_ssize_t value; value = PyInt_AsSsize_t(item); - if (value != -1 || !PyErr_Occurred()) + if (!(value == -1 && PyErr_Occurred())) return value; PyErr_Clear(); value = PyLong_AsLong(item); - if (value != -1 || !PyErr_Occurred()) + if (!(value == -1 && PyErr_Occurred())) return value; PyErr_Clear(); @@ -18761,6 +20089,7 @@ Py_LOCAL_INLINE(Py_ssize_t) index_to_integer(PyObject* item) { } error: + PyErr_Clear(); PyErr_Format(PyExc_TypeError, "list indices must be integers, not %.200s", item->ob_type->tp_name); @@ -18830,9 +20159,9 @@ static PyObject* capture_getitem(CaptureObject* self, PyObject* item) { } static PyMappingMethods capture_as_mapping = { - (lenfunc)capture_length, /* mp_length */ - (binaryfunc)capture_getitem, /* mp_subscript */ - 0, /* mp_ass_subscript */ + (lenfunc)capture_length, /* mp_length */ + (binaryfunc)capture_getitem, /* mp_subscript */ + 0, /* mp_ass_subscript */ }; /* CaptureObject's methods. */ @@ -18864,7 +20193,7 @@ static PyObject* capture_str(PyObject* self_) { static PyMemberDef splitter_members[] = { {"pattern", T_OBJECT, offsetof(SplitterObject, pattern), READONLY, "The regex object that produced this splitter object."}, - {NULL} /* Sentinel */ + {NULL} /* Sentinel */ }; static PyTypeObject Splitter_Type = { @@ -18880,7 +20209,6 @@ Py_LOCAL_INLINE(PyObject*) pattern_splitter(PatternObject* pattern, PyObject* /* Create split state object. */ int conc; SplitterObject* self; - RE_State* state; PyObject* string; Py_ssize_t maxsplit = 0; @@ -18901,25 +20229,24 @@ Py_LOCAL_INLINE(PyObject*) pattern_splitter(PatternObject* pattern, PyObject* self->pattern = pattern; Py_INCREF(self->pattern); + self->status = RE_ERROR_INITIALISING; if (maxsplit == 0) maxsplit = PY_SSIZE_T_MAX; - state = &self->state; - /* The MatchObject, and therefore repeated captures, will not be visible. */ - if (!state_init(state, pattern, string, 0, PY_SSIZE_T_MAX, FALSE, conc, - FALSE, TRUE, FALSE, FALSE)) { - PyObject_DEL(self); + if (!state_init(&self->state, pattern, string, 0, PY_SSIZE_T_MAX, FALSE, + conc, FALSE, TRUE, FALSE, FALSE)) { + Py_DECREF(self); return NULL; } self->maxsplit = maxsplit; - self->last_pos = state->reverse ? state->text_length : 0; + self->last_pos = self->state.reverse ? self->state.text_length : 0; self->split_count = 0; self->index = 0; - self->status = 1; + self->status = RE_ERROR_SUCCESS; return (PyObject*) self; } @@ -19134,7 +20461,7 @@ Py_LOCAL_INLINE(PyObject*) pattern_subx(PatternObject* self, PyObject* BOOL is_template = FALSE; RE_State state; RE_SafeState safe_state; - JoinInfo join_info; + RE_JoinInfo join_info; Py_ssize_t sub_count; Py_ssize_t last_pos; Py_ssize_t step; @@ -19918,14 +21245,17 @@ static PyObject* pattern_finditer(PatternObject* pattern, PyObject* args, return pattern_scanner(pattern, args, kwargs); } -/* Makes a copy of a PatternObject. */ +/* Makes a copy of a PatternObject. + * + * It actually doesn't make a copy, just returns the original object. + */ Py_LOCAL_INLINE(PyObject*) make_pattern_copy(PatternObject* self) { Py_INCREF(self); return (PyObject*)self; } /* PatternObject's '__copy__' method. */ -static PyObject* pattern_copy(PatternObject* self, PyObject *unused) { +static PyObject* pattern_copy(PatternObject* self, PyObject* unused) { return make_pattern_copy(self); } @@ -20089,7 +21419,9 @@ static void pattern_dealloc(PyObject* self_) { Py_DECREF(self->named_lists); Py_DECREF(self->named_list_indexes); + Py_DECREF(self->required_chars); re_dealloc(self->locale_info); + Py_DECREF(self->packed_code_list); PyObject_DEL(self); } @@ -20108,6 +21440,7 @@ static RE_FlagName flag_names[] = { {"I", RE_FLAG_IGNORECASE}, {"L", RE_FLAG_LOCALE}, {"M", RE_FLAG_MULTILINE}, + {"P", RE_FLAG_POSIX}, {"R", RE_FLAG_REVERSE}, {"T", RE_FLAG_TEMPLATE}, {"U", RE_FLAG_UNICODE}, @@ -20157,6 +21490,117 @@ Py_LOCAL_INLINE(BOOL) append_integer(PyObject* list, Py_ssize_t value) { return TRUE; } +/* Packs the code list that's needed for pickling. */ +Py_LOCAL_INLINE(PyObject*) pack_code_list(RE_CODE* code, Py_ssize_t code_len) { + Py_ssize_t max_size; + RE_UINT8* packed; + Py_ssize_t count; + RE_UINT32 value; + Py_ssize_t i; + PyObject* packed_code_list; + + /* What is the maximum number of bytes needed to store it? + * + * A 32-bit RE_CODE might need 5 bytes ((32 + 6) / 7). + */ + max_size = code_len * 5 + ((sizeof(Py_ssize_t) * 8) + 6) / 7; + + packed = (RE_UINT8*)re_alloc((size_t)max_size); + count = 0; + + /* Store the length of the code list. */ + value = (RE_UINT32)code_len; + + while (value >= 0x80) { + packed[count++] = 0x80 | (value & 0x7F); + value >>= 7; + } + + packed[count++] = value; + + /* Store each of the elements of the code list. */ + for (i = 0; i < code_len; i++) { + value = (RE_UINT32)code[i]; + + while (value >= 0x80) { + packed[count++] = 0x80 | (value & 0x7F); + value >>= 7; + } + + packed[count++] = value; + } + + packed_code_list = PyString_FromStringAndSize((const char *)packed, count); + re_dealloc(packed); + + return packed_code_list; +} + +/* Unpacks the code list that's needed for pickling. */ +Py_LOCAL_INLINE(PyObject*) unpack_code_list(PyObject* packed) { + PyObject* code_list; + RE_UINT8* packed_data; + Py_ssize_t index; + RE_UINT32 value; + int shift; + size_t count; + + code_list = PyList_New(0); + if (!code_list) + return NULL; + + packed_data = (RE_UINT8*)PyString_AsString(packed); + index = 0; + + /* Unpack the length of the code list. */ + value = 0; + shift = 0; + + while (packed_data[index] >= 0x80) { + value |= (RE_UINT32)(packed_data[index++] & 0x7F) << shift; + shift += 7; + } + + value |= (RE_UINT32)packed_data[index++] << shift; + count = (size_t)value; + + /* Unpack each of the elements of the code list. */ + while (count > 0) { + PyObject* obj; + int status; + + value = 0; + shift = 0; + + while (packed_data[index] >= 0x80) { + value |= (RE_UINT32)(packed_data[index++] & 0x7F) << shift; + shift += 7; + } + + value |= (RE_UINT32)packed_data[index++] << shift; +#if PY_VERSION_HEX >= 0x02060000 + obj = PyLong_FromSize_t((size_t)value); +#else + obj = PyLong_FromUnsignedLongLong((size_t)value); +#endif + if (!obj) + goto error; + + status = PyList_Append(code_list, obj); + Py_DECREF(obj); + if (status == -1) + goto error; + + --count; + } + + return code_list; + +error: + Py_DECREF(code_list); + return NULL; +} + /* MatchObject's '__repr__' method. */ static PyObject* match_repr(PyObject* self_) { MatchObject* self; @@ -20262,8 +21706,8 @@ static PyObject* pattern_repr(PyObject* self_) { int flag_count; unsigned int i; Py_ssize_t pos; - PyObject *key; - PyObject *value; + PyObject* key; + PyObject* value; PyObject* separator; PyObject* result; @@ -20356,10 +21800,28 @@ static PyObject* pattern_groupindex(PyObject* self_) { return PyDict_Copy(self->groupindex); } +/* PatternObject's '_pickled_data' method. */ +static PyObject* pattern_pickled_data(PyObject* self_) { + PatternObject* self; + PyObject* pickled_data; + + self = (PatternObject*)self_; + + /* Build the data needed for picking. */ + pickled_data = Py_BuildValue("OnOOOOOnOnn", self->pattern, self->flags, + self->packed_code_list, self->groupindex, self->indexgroup, + self->named_lists, self->named_list_indexes, self->req_offset, + self->required_chars, self->req_flags, self->public_group_count); + + return pickled_data; +} + static PyGetSetDef pattern_getset[] = { {"groupindex", (getter)pattern_groupindex, (setter)NULL, "A dictionary mapping group names to group numbers."}, - {NULL} /* Sentinel */ + {"_pickled_data", (getter)pattern_pickled_data, (setter)NULL, + "Data used for pickling."}, + {NULL} /* Sentinel */ }; static PyMemberDef pattern_members[] = { @@ -20371,7 +21833,7 @@ static PyMemberDef pattern_members[] = { READONLY, "The number of capturing groups in the pattern."}, {"named_lists", T_OBJECT, offsetof(PatternObject, named_lists), READONLY, "The named lists used by the regex."}, - {NULL} /* Sentinel */ + {NULL} /* Sentinel */ }; static PyTypeObject Pattern_Type = { @@ -20427,137 +21889,286 @@ Py_LOCAL_INLINE(void) skip_one_way_branches(PatternObject* pattern) { pattern->start_node = pattern->start_node->next_1.node; } -/* Adds guards to repeats which are followed by a reference to a group. - * - * Returns whether a guard was added for a node at or after the given node. - */ -Py_LOCAL_INLINE(RE_STATUS_T) add_repeat_guards(PatternObject* pattern, RE_Node* - node) { - RE_STATUS_T result; +/* Initialises a check stack. */ +Py_LOCAL_INLINE(void) CheckStack_init(RE_CheckStack* stack) { + stack->capacity = 0; + stack->count = 0; + stack->items = NULL; +} - result = RE_STATUS_NEITHER; +/* Finalises a check stack. */ +Py_LOCAL_INLINE(void) CheckStack_fini(RE_CheckStack* stack) { + PyMem_Free(stack->items); + stack->capacity = 0; + stack->count = 0; + stack->items = NULL; +} + +/* Pushes an item onto a check stack. */ +Py_LOCAL_INLINE(BOOL) CheckStack_push(RE_CheckStack* stack, RE_Node* node, + RE_STATUS_T result) { + RE_Check* check; + + if (stack->count >= stack->capacity) { + Py_ssize_t new_capacity; + RE_Check* new_items; + + new_capacity = stack->capacity * 2; + if (new_capacity == 0) + new_capacity = 16; + + new_items = (RE_Check*)PyMem_Realloc(stack->items, new_capacity * + sizeof(RE_Check)); + if (!new_items) + return FALSE; + + stack->capacity = new_capacity; + stack->items = new_items; + } + + check = &stack->items[stack->count++]; + check->node = node; + check->result = result; + + return TRUE; +} + +/* Pops an item off a check stack. Returns NULL if the stack is empty. */ +Py_LOCAL_INLINE(RE_Check*) CheckStack_pop(RE_CheckStack* stack) { + return stack->count > 0 ? &stack->items[--stack->count] : NULL; +} + +/* Adds guards to repeats which are followed by a reference to a group. */ +Py_LOCAL_INLINE(RE_STATUS_T) add_repeat_guards(PatternObject* pattern, RE_Node* + start_node) { + RE_CheckStack stack; + + CheckStack_init(&stack); + + CheckStack_push(&stack, start_node, RE_STATUS_NEITHER); for (;;) { - if (node->status & RE_STATUS_VISITED_AG) - return node->status & (RE_STATUS_REPEAT | RE_STATUS_REF); + RE_Check* check; + RE_Node* node; + RE_STATUS_T result; - switch (node->op) { - case RE_OP_ATOMIC: - case RE_OP_LOOKAROUND: - { - RE_STATUS_T body_result; - RE_STATUS_T tail_result; - RE_STATUS_T status; + check = CheckStack_pop(&stack); - body_result = add_repeat_guards(pattern, - node->nonstring.next_2.node); - tail_result = add_repeat_guards(pattern, node->next_1.node); - status = max_status_3(result, body_result, tail_result); - node->status = RE_STATUS_VISITED_AG | status; - return status; - } - case RE_OP_BRANCH: - { - RE_STATUS_T branch_1_result; - RE_STATUS_T branch_2_result; - RE_STATUS_T status; - - branch_1_result = add_repeat_guards(pattern, node->next_1.node); - branch_2_result = add_repeat_guards(pattern, - node->nonstring.next_2.node); - status = max_status_3(result, branch_1_result, branch_2_result); - node->status = RE_STATUS_VISITED_AG | status; - return status; - } - case RE_OP_END_GREEDY_REPEAT: - case RE_OP_END_LAZY_REPEAT: - node->status |= RE_STATUS_VISITED_AG; - return result; - case RE_OP_GREEDY_REPEAT: - case RE_OP_LAZY_REPEAT: - { - BOOL limited; - RE_STATUS_T body_result; - RE_STATUS_T tail_result; - RE_RepeatInfo* repeat_info; - RE_STATUS_T status; - - limited = ~node->values[2] != 0; - if (limited) - body_result = RE_STATUS_LIMITED; - else - body_result = add_repeat_guards(pattern, node->next_1.node); - tail_result = add_repeat_guards(pattern, - node->nonstring.next_2.node); - - repeat_info = &pattern->repeat_info[node->values[0]]; - if (body_result != RE_STATUS_REF) - repeat_info->status |= RE_STATUS_BODY; - if (tail_result != RE_STATUS_REF) - repeat_info->status |= RE_STATUS_TAIL; - if (limited) - result = max_status_2(result, RE_STATUS_LIMITED); - else - result = max_status_2(result, RE_STATUS_REPEAT); - status = max_status_3(result, body_result, tail_result); - node->status |= RE_STATUS_VISITED_AG | status; - return status; - } - case RE_OP_GREEDY_REPEAT_ONE: - case RE_OP_LAZY_REPEAT_ONE: - { - BOOL limited; - RE_STATUS_T tail_result; - RE_RepeatInfo* repeat_info; - RE_STATUS_T status; - - limited = ~node->values[2] != 0; - tail_result = add_repeat_guards(pattern, node->next_1.node); - - repeat_info = &pattern->repeat_info[node->values[0]]; - repeat_info->status |= RE_STATUS_BODY; - if (tail_result != RE_STATUS_REF) - repeat_info->status |= RE_STATUS_TAIL; - if (limited) - result = max_status_2(result, RE_STATUS_LIMITED); - else - result = max_status_2(result, RE_STATUS_REPEAT); - status = max_status_3(result, RE_STATUS_REPEAT, tail_result); - node->status = RE_STATUS_VISITED_AG | status; - return status; - } - case RE_OP_GROUP_EXISTS: - { - RE_STATUS_T branch_1_result; - RE_STATUS_T branch_2_result; - RE_STATUS_T status; - - branch_1_result = add_repeat_guards(pattern, node->next_1.node); - branch_2_result = add_repeat_guards(pattern, - node->nonstring.next_2.node); - status = max_status_4(result, branch_1_result, branch_2_result, - RE_STATUS_REF); - node->status = RE_STATUS_VISITED_AG | status; - return status; - } - case RE_OP_GROUP_CALL: - case RE_OP_REF_GROUP: - case RE_OP_REF_GROUP_FLD: - case RE_OP_REF_GROUP_FLD_REV: - case RE_OP_REF_GROUP_IGN: - case RE_OP_REF_GROUP_IGN_REV: - case RE_OP_REF_GROUP_REV: - result = RE_STATUS_REF; - node = node->next_1.node; - break; - case RE_OP_SUCCESS: - node->status = RE_STATUS_VISITED_AG | result; - return result; - default: - node = node->next_1.node; + if (!check) break; + + node = check->node; + result = check->result; + + if (!(node->status & RE_STATUS_VISITED_AG)) { + switch (check->node->op) { + case RE_OP_BRANCH: + { + RE_Node* branch_1; + RE_Node* branch_2; + BOOL visited_branch_1; + BOOL visited_branch_2; + + branch_1 = node->next_1.node; + branch_2 = node->nonstring.next_2.node; + visited_branch_1 = (branch_1->status & RE_STATUS_VISITED_AG); + visited_branch_2 = (branch_2->status & RE_STATUS_VISITED_AG); + + if (visited_branch_1 && visited_branch_2) { + RE_STATUS_T branch_1_result; + RE_STATUS_T branch_2_result; + + branch_1_result = branch_1->status & (RE_STATUS_REPEAT | + RE_STATUS_REF); + branch_2_result = branch_2->status & (RE_STATUS_REPEAT | + RE_STATUS_REF); + + node->status |= RE_STATUS_VISITED_AG | max_status_3(result, + branch_1_result, branch_2_result); + } else { + CheckStack_push(&stack, node, result); + if (!visited_branch_2) + CheckStack_push(&stack, branch_2, RE_STATUS_NEITHER); + if (!visited_branch_1) + CheckStack_push(&stack, branch_1, RE_STATUS_NEITHER); + } + break; + } + case RE_OP_END_GREEDY_REPEAT: + case RE_OP_END_LAZY_REPEAT: + node->status |= RE_STATUS_VISITED_AG; + break; + case RE_OP_GREEDY_REPEAT: + case RE_OP_LAZY_REPEAT: + { + BOOL limited; + RE_Node* body; + RE_Node* tail; + BOOL visited_body; + BOOL visited_tail; + + limited = ~node->values[2] != 0; + + body = node->next_1.node; + tail = node->nonstring.next_2.node; + visited_body = (body->status & RE_STATUS_VISITED_AG); + visited_tail = (tail->status & RE_STATUS_VISITED_AG); + + if (visited_body && visited_tail) { + RE_STATUS_T body_result; + RE_STATUS_T tail_result; + RE_RepeatInfo* repeat_info; + + body_result = body->status & (RE_STATUS_REPEAT | + RE_STATUS_REF); + tail_result = tail->status & (RE_STATUS_REPEAT | + RE_STATUS_REF); + + repeat_info = &pattern->repeat_info[node->values[0]]; + if (body_result != RE_STATUS_REF) + repeat_info->status |= RE_STATUS_BODY; + if (tail_result != RE_STATUS_REF) + repeat_info->status |= RE_STATUS_TAIL; + + if (limited) + result = max_status_2(result, RE_STATUS_LIMITED); + else + result = max_status_2(result, RE_STATUS_REPEAT); + node->status |= RE_STATUS_VISITED_AG | max_status_3(result, + body_result, tail_result); + } else { + CheckStack_push(&stack, node, result); + if (!visited_tail) + CheckStack_push(&stack, tail, RE_STATUS_NEITHER); + if (!visited_body) { + if (limited) + body->status |= RE_STATUS_VISITED_AG | + RE_STATUS_LIMITED; + else + CheckStack_push(&stack, body, RE_STATUS_NEITHER); + } + } + break; + } + case RE_OP_GREEDY_REPEAT_ONE: + case RE_OP_LAZY_REPEAT_ONE: + { + RE_Node* tail; + BOOL visited_tail; + + tail = node->next_1.node; + visited_tail = (tail->status & RE_STATUS_VISITED_AG); + + if (visited_tail) { + BOOL limited; + RE_STATUS_T tail_result; + RE_RepeatInfo* repeat_info; + + limited = ~node->values[2] != 0; + + tail_result = tail->status & (RE_STATUS_REPEAT | + RE_STATUS_REF); + + repeat_info = &pattern->repeat_info[node->values[0]]; + repeat_info->status |= RE_STATUS_BODY; + + if (tail_result != RE_STATUS_REF) + repeat_info->status |= RE_STATUS_TAIL; + + if (limited) + result = max_status_2(result, RE_STATUS_LIMITED); + else + result = max_status_2(result, RE_STATUS_REPEAT); + node->status |= RE_STATUS_VISITED_AG | max_status_3(result, + RE_STATUS_REPEAT, tail_result); + } else { + CheckStack_push(&stack, node, result); + CheckStack_push(&stack, tail, RE_STATUS_NEITHER); + } + break; + } + case RE_OP_GROUP_EXISTS: + { + RE_Node* branch_1; + RE_Node* branch_2; + BOOL visited_branch_1; + BOOL visited_branch_2; + + branch_1 = node->next_1.node; + branch_2 = node->nonstring.next_2.node; + visited_branch_1 = (branch_1->status & RE_STATUS_VISITED_AG); + visited_branch_2 = (branch_2->status & RE_STATUS_VISITED_AG); + + if (visited_branch_1 && visited_branch_2) { + RE_STATUS_T branch_1_result; + RE_STATUS_T branch_2_result; + + branch_1_result = branch_1->status & (RE_STATUS_REPEAT | + RE_STATUS_REF); + branch_2_result = branch_2->status & (RE_STATUS_REPEAT | + RE_STATUS_REF); + + node->status |= RE_STATUS_VISITED_AG | max_status_4(result, + branch_1_result, branch_2_result, RE_STATUS_REF); + } else { + CheckStack_push(&stack, node, result); + if (!visited_branch_2) + CheckStack_push(&stack, branch_2, RE_STATUS_NEITHER); + if (!visited_branch_1) + CheckStack_push(&stack, branch_1, RE_STATUS_NEITHER); + } + break; + } + case RE_OP_REF_GROUP: + case RE_OP_REF_GROUP_FLD: + case RE_OP_REF_GROUP_FLD_REV: + case RE_OP_REF_GROUP_IGN: + case RE_OP_REF_GROUP_IGN_REV: + case RE_OP_REF_GROUP_REV: + { + RE_Node* tail; + BOOL visited_tail; + + tail = node->next_1.node; + visited_tail = (tail->status & RE_STATUS_VISITED_AG); + + if (visited_tail) + node->status |= RE_STATUS_VISITED_AG | RE_STATUS_REF; + else { + CheckStack_push(&stack, node, result); + CheckStack_push(&stack, tail, RE_STATUS_NEITHER); + } + break; + } + case RE_OP_SUCCESS: + node->status |= RE_STATUS_VISITED_AG | result; + break; + default: + { + RE_Node* tail; + BOOL visited_tail; + RE_STATUS_T tail_result; + + tail = node->next_1.node; + visited_tail = (tail->status & RE_STATUS_VISITED_AG); + + if (visited_tail) { + tail_result = tail->status & (RE_STATUS_REPEAT | + RE_STATUS_REF); + node->status |= RE_STATUS_VISITED_AG | tail_result; + } else { + CheckStack_push(&stack, node, result); + CheckStack_push(&stack, node->next_1.node, result); + } + break; + } + } } } + + CheckStack_fini(&stack); + + return start_node->status & (RE_STATUS_REPEAT | RE_STATUS_REF); } /* Adds an index to a node's values unless it's already present. @@ -20608,13 +22219,8 @@ Py_LOCAL_INLINE(BOOL) record_subpattern_repeats_and_fuzzy_sections(RE_Node* node->status |= RE_STATUS_VISITED_REP; switch (node->op) { - case RE_OP_ATOMIC: - if (!record_subpattern_repeats_and_fuzzy_sections(node, 0, - repeat_count, node->nonstring.next_2.node)) - return FALSE; - node = node->next_1.node; - break; case RE_OP_BRANCH: + case RE_OP_GROUP_EXISTS: if (!record_subpattern_repeats_and_fuzzy_sections(parent_node, offset, repeat_count, node->next_1.node)) return FALSE; @@ -20650,18 +22256,6 @@ Py_LOCAL_INLINE(BOOL) record_subpattern_repeats_and_fuzzy_sections(RE_Node* return FALSE; node = node->next_1.node; break; - case RE_OP_GROUP_EXISTS: - if (!record_subpattern_repeats_and_fuzzy_sections(parent_node, - offset, repeat_count, node->next_1.node)) - return FALSE; - node = node->nonstring.next_2.node; - break; - case RE_OP_LOOKAROUND: - if (!record_subpattern_repeats_and_fuzzy_sections(node, 1, - repeat_count, node->nonstring.next_2.node)) - return FALSE; - node = node->next_1.node; - break; default: node = node->next_1.node; break; @@ -20671,16 +22265,69 @@ Py_LOCAL_INLINE(BOOL) record_subpattern_repeats_and_fuzzy_sections(RE_Node* return TRUE; } +/* Initialises a node stack. */ +Py_LOCAL_INLINE(void) NodeStack_init(RE_NodeStack* stack) { + stack->capacity = 0; + stack->count = 0; + stack->items = NULL; +} + +/* Finalises a node stack. */ +Py_LOCAL_INLINE(void) NodeStack_fini(RE_NodeStack* stack) { + PyMem_Free(stack->items); + stack->capacity = 0; + stack->count = 0; + stack->items = NULL; +} + +/* Pushes an item onto a node stack. */ +Py_LOCAL_INLINE(BOOL) NodeStack_push(RE_NodeStack* stack, RE_Node* node) { + if (stack->count >= stack->capacity) { + Py_ssize_t new_capacity; + RE_Node** new_items; + + new_capacity = stack->capacity * 2; + if (new_capacity == 0) + new_capacity = 16; + + new_items = (RE_Node**)PyMem_Realloc(stack->items, new_capacity * + sizeof(RE_Node*)); + if (!new_items) + return FALSE; + + stack->capacity = new_capacity; + stack->items = new_items; + } + + stack->items[stack->count++] = node; + + return TRUE; +} + +/* Pops an item off a node stack. Returns NULL if the stack is empty. */ +Py_LOCAL_INLINE(RE_Node*) NodeStack_pop(RE_NodeStack* stack) { + return stack->count > 0 ? stack->items[--stack->count] : NULL; +} + /* Marks nodes which are being used as used. */ Py_LOCAL_INLINE(void) use_nodes(RE_Node* node) { - while (node && !(node->status & RE_STATUS_USED)) { - node->status |= RE_STATUS_USED; - if (!(node->status & RE_STATUS_STRING)) { - if (node->nonstring.next_2.node) - use_nodes(node->nonstring.next_2.node); + RE_NodeStack stack; + + NodeStack_init(&stack); + + while (node) { + while (node && !(node->status & RE_STATUS_USED)) { + node->status |= RE_STATUS_USED; + if (!(node->status & RE_STATUS_STRING)) { + if (node->nonstring.next_2.node) + NodeStack_push(&stack, node->nonstring.next_2.node); + } + node = node->next_1.node; } - node = node->next_1.node; + node = NodeStack_pop(&stack); } + + NodeStack_fini(&stack); } /* Discards any unused nodes. @@ -21253,8 +22900,6 @@ Py_LOCAL_INLINE(int) build_FUZZY(RE_CompileArgs* args) { args->code += 14; subargs = *args; - subargs.has_captures = FALSE; - subargs.is_fuzzy = TRUE; subargs.within_fuzzy = TRUE; /* Compile the sequence and check that we've reached the end of the @@ -21268,8 +22913,11 @@ Py_LOCAL_INLINE(int) build_FUZZY(RE_CompileArgs* args) { return RE_ERROR_ILLEGAL; args->code = subargs.code; - args->min_width = subargs.min_width; + args->min_width += subargs.min_width; args->has_captures |= subargs.has_captures; + args->is_fuzzy = TRUE; + args->has_groups |= subargs.has_groups; + args->has_repeats |= subargs.has_repeats; ++args->code; @@ -21279,8 +22927,6 @@ Py_LOCAL_INLINE(int) build_FUZZY(RE_CompileArgs* args) { add_node(subargs.end, end_node); args->end = end_node; - args->is_fuzzy = TRUE; - return RE_ERROR_SUCCESS; } @@ -21289,28 +22935,21 @@ Py_LOCAL_INLINE(int) build_ATOMIC(RE_CompileArgs* args) { RE_Node* atomic_node; RE_CompileArgs subargs; int status; - RE_Node* success_node; + RE_Node* end_node; /* codes: opcode, sequence, end. */ if (args->code + 1 > args->end_code) return RE_ERROR_ILLEGAL; - atomic_node = create_node(args->pattern, RE_OP_ATOMIC, 0, 0, 1); + atomic_node = create_node(args->pattern, RE_OP_ATOMIC, 0, 0, 0); if (!atomic_node) return RE_ERROR_MEMORY; - /* The number of repeat indexes. */ - atomic_node->values[0] = 0; - ++args->code; + /* Compile the sequence and check that we've reached the end of it. */ subargs = *args; - subargs.has_captures = FALSE; - subargs.is_fuzzy = FALSE; - /* Compile the sequence and check that we've reached the end of the - * subpattern. - */ status = build_sequence(&subargs); if (status != RE_ERROR_SUCCESS) return status; @@ -21318,27 +22957,32 @@ Py_LOCAL_INLINE(int) build_ATOMIC(RE_CompileArgs* args) { if (subargs.code[0] != RE_OP_END) return RE_ERROR_ILLEGAL; - /* Create the success node to terminate the subpattern. */ - success_node = create_node(subargs.pattern, RE_OP_SUCCESS, 0, 0, 0); - if (!success_node) - return RE_ERROR_MEMORY; - - /* Append the SUCCESS node. */ - add_node(subargs.end, success_node); - - /* Insert the subpattern. */ - atomic_node->nonstring.next_2.node = subargs.start; - args->code = subargs.code; - args->min_width = subargs.min_width; - args->has_captures |= subargs.has_captures; - args->is_fuzzy |= subargs.is_fuzzy; - ++args->code; - /* Append the node. */ + /* Check the subpattern. */ + args->min_width += subargs.min_width; + args->has_captures |= subargs.has_captures; + args->is_fuzzy |= subargs.is_fuzzy; + args->has_groups |= subargs.has_groups; + args->has_repeats |= subargs.has_repeats; + + if (subargs.has_groups) + atomic_node->status |= RE_STATUS_HAS_GROUPS; + + if (subargs.has_repeats) + atomic_node->status |= RE_STATUS_HAS_REPEATS; + + /* Create the node to terminate the subpattern. */ + end_node = create_node(subargs.pattern, RE_OP_END_ATOMIC, 0, 0, 0); + if (!end_node) + return RE_ERROR_MEMORY; + + /* Append the new sequence. */ add_node(args->end, atomic_node); - args->end = atomic_node; + add_node(atomic_node, subargs.start); + add_node(subargs.end, end_node); + args->end = end_node; return RE_ERROR_SUCCESS; } @@ -21374,7 +23018,7 @@ Py_LOCAL_INLINE(int) build_BOUNDARY(RE_CompileArgs* args) { Py_LOCAL_INLINE(int) build_BRANCH(RE_CompileArgs* args) { RE_Node* branch_node; RE_Node* join_node; - Py_ssize_t smallest_min_width; + Py_ssize_t min_width; RE_CompileArgs subargs; int status; @@ -21392,7 +23036,7 @@ Py_LOCAL_INLINE(int) build_BRANCH(RE_CompileArgs* args) { add_node(args->end, branch_node); args->end = join_node; - smallest_min_width = PY_SSIZE_T_MAX; + min_width = PY_SSIZE_T_MAX; subargs = *args; @@ -21406,18 +23050,16 @@ Py_LOCAL_INLINE(int) build_BRANCH(RE_CompileArgs* args) { ++subargs.code; /* Compile the sequence until the next 'BRANCH' or 'NEXT' opcode. */ - subargs.min_width = 0; - subargs.has_captures = FALSE; - subargs.is_fuzzy = FALSE; status = build_sequence(&subargs); if (status != RE_ERROR_SUCCESS) return status; - smallest_min_width = min_ssize_t(smallest_min_width, - subargs.min_width); + min_width = min_ssize_t(min_width, subargs.min_width); args->has_captures |= subargs.has_captures; args->is_fuzzy |= subargs.is_fuzzy; + args->has_groups |= subargs.has_groups; + args->has_repeats |= subargs.has_repeats; /* Append the sequence. */ add_node(branch_node, subargs.start); @@ -21439,7 +23081,7 @@ Py_LOCAL_INLINE(int) build_BRANCH(RE_CompileArgs* args) { args->code = subargs.code; ++args->code; - args->min_width += smallest_min_width; + args->min_width += min_width; return RE_ERROR_SUCCESS; } @@ -21472,8 +23114,6 @@ Py_LOCAL_INLINE(int) build_CALL_REF(RE_CompileArgs* args) { * subpattern. */ subargs = *args; - subargs.has_captures = FALSE; - subargs.is_fuzzy = FALSE; status = build_sequence(&subargs); if (status != RE_ERROR_SUCCESS) return status; @@ -21482,9 +23122,11 @@ Py_LOCAL_INLINE(int) build_CALL_REF(RE_CompileArgs* args) { return RE_ERROR_ILLEGAL; args->code = subargs.code; - args->min_width = subargs.min_width; + args->min_width += subargs.min_width; args->has_captures |= subargs.has_captures; args->is_fuzzy |= subargs.is_fuzzy; + args->has_groups |= subargs.has_groups; + args->has_repeats |= subargs.has_repeats; ++args->code; @@ -21539,6 +23181,133 @@ Py_LOCAL_INLINE(int) build_CHARACTER_or_PROPERTY(RE_CompileArgs* args) { return RE_ERROR_SUCCESS; } +/* Builds a CONDITIONAL node. */ +Py_LOCAL_INLINE(int) build_CONDITIONAL(RE_CompileArgs* args) { + RE_CODE flags; + BOOL forward; + RE_Node* test_node; + RE_CompileArgs subargs; + int status; + RE_Node* end_test_node; + RE_Node* end_node; + Py_ssize_t min_width; + + /* codes: opcode, flags, forward, sequence, next, sequence, next, sequence, + * end. + */ + if (args->code + 4 > args->end_code) + return RE_ERROR_ILLEGAL; + + flags = args->code[1]; + forward = (BOOL)args->code[2]; + + /* Create a node for the lookaround. */ + test_node = create_node(args->pattern, RE_OP_CONDITIONAL, flags, 0, 0); + if (!test_node) + return RE_ERROR_MEMORY; + + args->code += 3; + + add_node(args->end, test_node); + + /* Compile the lookaround test and check that we've reached the end of the + * subpattern. + */ + subargs = *args; + subargs.forward = forward; + status = build_sequence(&subargs); + if (status != RE_ERROR_SUCCESS) + return status; + + if (subargs.code[0] != RE_OP_NEXT) + return RE_ERROR_ILLEGAL; + + args->code = subargs.code; + ++args->code; + + /* Check the lookaround subpattern. */ + args->has_captures |= subargs.has_captures; + args->is_fuzzy |= subargs.is_fuzzy; + args->has_groups |= subargs.has_groups; + args->has_repeats |= subargs.has_repeats; + + if (subargs.has_groups) + test_node->status |= RE_STATUS_HAS_GROUPS; + + if (subargs.has_repeats) + test_node->status |= RE_STATUS_HAS_REPEATS; + + /* Create the node to terminate the test. */ + end_test_node = create_node(args->pattern, RE_OP_END_CONDITIONAL, 0, 0, 0); + if (!end_test_node) + return RE_ERROR_MEMORY; + + /* test node -> test -> end test node */ + add_node(test_node, subargs.start); + add_node(subargs.end, end_test_node); + + /* Compile the true branch. */ + subargs = *args; + status = build_sequence(&subargs); + if (status != RE_ERROR_SUCCESS) + return status; + + /* Check the true branch. */ + args->code = subargs.code; + args->has_captures |= subargs.has_captures; + args->is_fuzzy |= subargs.is_fuzzy; + args->has_groups |= subargs.has_groups; + args->has_repeats |= subargs.has_repeats; + + min_width = subargs.min_width; + + /* Create the terminating node. */ + end_node = create_node(args->pattern, RE_OP_BRANCH, 0, 0, 0); + if (!end_node) + return RE_ERROR_MEMORY; + + /* end test node -> true branch -> end node */ + add_node(end_test_node, subargs.start); + add_node(subargs.end, end_node); + + if (args->code[0] == RE_OP_NEXT) { + /* There's a false branch. */ + ++args->code; + + /* Compile the false branch. */ + subargs.code = args->code; + status = build_sequence(&subargs); + if (status != RE_ERROR_SUCCESS) + return status; + + /* Check the false branch. */ + args->code = subargs.code; + args->has_captures |= subargs.has_captures; + args->is_fuzzy |= subargs.is_fuzzy; + args->has_groups |= subargs.has_groups; + args->has_repeats |= subargs.has_repeats; + + min_width = min_ssize_t(min_width, subargs.min_width); + + /* test node -> false branch -> end node */ + add_node(test_node, subargs.start); + add_node(subargs.end, end_node); + } else + /* end test node -> end node */ + add_node(end_test_node, end_node); + + if (args->code[0] != RE_OP_END) + return RE_ERROR_ILLEGAL; + + args->min_width += min_width; + + ++args->code; + + args->end = end_node; + + return RE_ERROR_SUCCESS; +} + /* Builds a GROUP node. */ Py_LOCAL_INLINE(int) build_GROUP(RE_CompileArgs* args) { RE_CODE private_group; @@ -21582,8 +23351,6 @@ Py_LOCAL_INLINE(int) build_GROUP(RE_CompileArgs* args) { * group. */ subargs = *args; - subargs.has_captures = FALSE; - subargs.is_fuzzy = FALSE; status = build_sequence(&subargs); if (status != RE_ERROR_SUCCESS) return status; @@ -21592,10 +23359,11 @@ Py_LOCAL_INLINE(int) build_GROUP(RE_CompileArgs* args) { return RE_ERROR_ILLEGAL; args->code = subargs.code; - args->min_width = subargs.min_width; - if (subargs.has_captures || subargs.visible_captures) - args->has_captures = TRUE; + args->min_width += subargs.min_width; + args->has_captures |= subargs.has_captures | subargs.visible_captures; args->is_fuzzy |= subargs.is_fuzzy; + args->has_groups |= TRUE; + args->has_repeats |= subargs.has_repeats; ++args->code; @@ -21629,6 +23397,9 @@ Py_LOCAL_INLINE(int) build_GROUP_CALL(RE_CompileArgs* args) { node->values[0] = call_ref; + node->status |= RE_STATUS_HAS_GROUPS; + node->status |= RE_STATUS_HAS_REPEATS; + args->code += 2; /* Record that we used a call_ref. */ @@ -21659,8 +23430,10 @@ Py_LOCAL_INLINE(int) build_GROUP_EXISTS(RE_CompileArgs* args) { args->code += 2; - /* Record that we have a reference to a group. */ - if (!record_ref_group(args->pattern, group)) + /* Record that we have a reference to a group. If group is 0, then we have + * a DEFINE and not a true group. + */ + if (group > 0 && !record_ref_group(args->pattern, group)) return RE_ERROR_MEMORY; /* Create nodes for the start and end of the structure. */ @@ -21672,9 +23445,6 @@ Py_LOCAL_INLINE(int) build_GROUP_EXISTS(RE_CompileArgs* args) { start_node->values[0] = group; subargs = *args; - subargs.min_width = 0; - subargs.has_captures = FALSE; - subargs.is_fuzzy = FALSE; status = build_sequence(&subargs); if (status != RE_ERROR_SUCCESS) return status; @@ -21682,21 +23452,24 @@ Py_LOCAL_INLINE(int) build_GROUP_EXISTS(RE_CompileArgs* args) { args->code = subargs.code; args->has_captures |= subargs.has_captures; args->is_fuzzy |= subargs.is_fuzzy; + args->has_groups |= subargs.has_groups; + args->has_repeats |= subargs.has_repeats; min_width = subargs.min_width; /* Append the start node. */ add_node(args->end, start_node); add_node(start_node, subargs.start); - add_node(subargs.end, end_node); if (args->code[0] == RE_OP_NEXT) { + RE_Node* true_branch_end; + ++args->code; + true_branch_end = subargs.end; + subargs.code = args->code; - subargs.min_width = 0; - subargs.has_captures = FALSE; - subargs.is_fuzzy = FALSE; + status = build_sequence(&subargs); if (status != RE_ERROR_SUCCESS) return status; @@ -21705,12 +23478,28 @@ Py_LOCAL_INLINE(int) build_GROUP_EXISTS(RE_CompileArgs* args) { args->has_captures |= subargs.has_captures; args->is_fuzzy |= subargs.is_fuzzy; - min_width = min_ssize_t(min_width, subargs.min_width); + if (group == 0) { + /* Join the 2 branches end-to-end and bypass it. The sequence + * itself will never be matched as a whole, so it doesn't matter. + */ + min_width = 0; + + add_node(start_node, end_node); + add_node(true_branch_end, subargs.start); + } else { + args->has_groups |= subargs.has_groups; + args->has_repeats |= subargs.has_repeats; + + min_width = min_ssize_t(min_width, subargs.min_width); + + add_node(start_node, subargs.start); + add_node(true_branch_end, end_node); + } - add_node(start_node, subargs.start); add_node(subargs.end, end_node); } else { add_node(start_node, end_node); + add_node(subargs.end, end_node); min_width = 0; } @@ -21734,7 +23523,8 @@ Py_LOCAL_INLINE(int) build_LOOKAROUND(RE_CompileArgs* args) { RE_Node* lookaround_node; RE_CompileArgs subargs; int status; - RE_Node* success_node; + RE_Node* end_node; + RE_Node* next_node; /* codes: opcode, flags, forward, sequence, end. */ if (args->code + 3 > args->end_code) @@ -21745,13 +23535,10 @@ Py_LOCAL_INLINE(int) build_LOOKAROUND(RE_CompileArgs* args) { /* Create a node for the lookaround. */ lookaround_node = create_node(args->pattern, RE_OP_LOOKAROUND, flags, 0, - 2); + 0); if (!lookaround_node) return RE_ERROR_MEMORY; - /* The number of repeat indexes. */ - lookaround_node->values[1] = 0; - args->code += 3; /* Compile the sequence and check that we've reached the end of the @@ -21759,36 +23546,46 @@ Py_LOCAL_INLINE(int) build_LOOKAROUND(RE_CompileArgs* args) { */ subargs = *args; subargs.forward = forward; - subargs.has_captures = FALSE; - subargs.is_fuzzy = FALSE; status = build_sequence(&subargs); if (status != RE_ERROR_SUCCESS) return status; - lookaround_node->values[0] = subargs.has_captures; - if (subargs.code[0] != RE_OP_END) return RE_ERROR_ILLEGAL; args->code = subargs.code; - args->has_captures |= subargs.has_captures; - args->is_fuzzy |= subargs.is_fuzzy; ++args->code; - /* Create the 'SUCCESS' node and append it to the subpattern. */ - success_node = create_node(args->pattern, RE_OP_SUCCESS, 0, 0, 0); - if (!success_node) + /* Check the subpattern. */ + args->has_captures |= subargs.has_captures; + args->is_fuzzy |= subargs.is_fuzzy; + args->has_groups |= subargs.has_groups; + args->has_repeats |= subargs.has_repeats; + + if (subargs.has_groups) + lookaround_node->status |= RE_STATUS_HAS_GROUPS; + + if (subargs.has_repeats) + lookaround_node->status |= RE_STATUS_HAS_REPEATS; + + /* Create the node to terminate the subpattern. */ + end_node = create_node(args->pattern, RE_OP_END_LOOKAROUND, 0, 0, 0); + if (!end_node) return RE_ERROR_MEMORY; - /* Append the SUCCESS node. */ - add_node(subargs.end, success_node); + /* Make a continuation node. */ + next_node = create_node(args->pattern, RE_OP_BRANCH, 0, 0, 0); + if (!next_node) + return RE_ERROR_MEMORY; - /* Insert the subpattern into the node. */ - lookaround_node->nonstring.next_2.node = subargs.start; - - /* Append the lookaround. */ + /* Append the new sequence. */ add_node(args->end, lookaround_node); - args->end = lookaround_node; + add_node(lookaround_node, subargs.start); + add_node(lookaround_node, next_node); + add_node(subargs.end, end_node); + add_node(end_node, next_node); + + args->end = next_node; return RE_ERROR_SUCCESS; } @@ -21887,8 +23684,6 @@ Py_LOCAL_INLINE(int) build_REPEAT(RE_CompileArgs* args) { RE_CompileArgs subargs; subargs = *args; - subargs.has_captures = FALSE; - subargs.is_fuzzy = FALSE; status = build_sequence(&subargs); if (status != RE_ERROR_SUCCESS) return status; @@ -21897,9 +23692,11 @@ Py_LOCAL_INLINE(int) build_REPEAT(RE_CompileArgs* args) { return RE_ERROR_ILLEGAL; args->code = subargs.code; - args->min_width = subargs.min_width; + args->min_width += subargs.min_width; args->has_captures |= subargs.has_captures; args->is_fuzzy |= subargs.is_fuzzy; + args->has_groups |= subargs.has_groups; + args->has_repeats |= subargs.has_repeats; ++args->code; @@ -21930,10 +23727,7 @@ Py_LOCAL_INLINE(int) build_REPEAT(RE_CompileArgs* args) { /* Compile the 'body' and check that we've reached the end of it. */ subargs = *args; - subargs.min_width = 0; subargs.visible_captures = TRUE; - subargs.has_captures = FALSE; - subargs.is_fuzzy = FALSE; ++subargs.repeat_depth; status = build_sequence(&subargs); if (status != RE_ERROR_SUCCESS) @@ -21946,6 +23740,8 @@ Py_LOCAL_INLINE(int) build_REPEAT(RE_CompileArgs* args) { args->min_width += (Py_ssize_t)min_count * subargs.min_width; args->has_captures |= subargs.has_captures; args->is_fuzzy |= subargs.is_fuzzy; + args->has_groups |= subargs.has_groups; + args->has_repeats = TRUE; ++args->code; @@ -22048,7 +23844,7 @@ Py_LOCAL_INLINE(int) build_SET(RE_CompileArgs* args) { RE_CODE flags; Py_ssize_t step; RE_Node* node; - Py_ssize_t saved_min_width; + Py_ssize_t min_width; int status; /* codes: opcode, flags, members. */ @@ -22070,7 +23866,7 @@ Py_LOCAL_INLINE(int) build_SET(RE_CompileArgs* args) { add_node(args->end, node); args->end = node; - saved_min_width = args->min_width; + min_width = args->min_width; /* Compile the character set. */ do { @@ -22120,7 +23916,7 @@ Py_LOCAL_INLINE(int) build_SET(RE_CompileArgs* args) { node->next_1.node = NULL; args->end = node; - args->min_width = saved_min_width; + args->min_width = min_width; if (step != 0) ++args->min_width; @@ -22165,7 +23961,7 @@ Py_LOCAL_INLINE(int) build_SUCCESS(RE_CompileArgs* args) { /* code: opcode. */ /* Create the node. */ - node = create_node(args->pattern, RE_OP_SUCCESS, 0, 0, 0); + node = create_node(args->pattern, (RE_UINT8)args->code[0], 0, 0, 0); if (!node) return RE_ERROR_MEMORY; @@ -22211,6 +24007,12 @@ Py_LOCAL_INLINE(int) build_sequence(RE_CompileArgs* args) { args->start = create_node(args->pattern, RE_OP_BRANCH, 0, 0, 0); args->end = args->start; + args->min_width = 0; + args->has_captures = FALSE; + args->is_fuzzy = FALSE; + args->has_groups = FALSE; + args->has_repeats = FALSE; + /* The sequence should end with an opcode we don't understand. If it * doesn't then the code is illegal. */ @@ -22240,6 +24042,8 @@ Py_LOCAL_INLINE(int) build_sequence(RE_CompileArgs* args) { case RE_OP_DEFAULT_START_OF_WORD: case RE_OP_END_OF_WORD: case RE_OP_GRAPHEME_BOUNDARY: + case RE_OP_KEEP: + case RE_OP_SKIP: case RE_OP_START_OF_WORD: /* A word or grapheme boundary. */ status = build_BOUNDARY(args); @@ -22271,6 +24075,12 @@ Py_LOCAL_INLINE(int) build_sequence(RE_CompileArgs* args) { if (status != RE_ERROR_SUCCESS) return status; break; + case RE_OP_CONDITIONAL: + /* A lookaround conditional. */ + status = build_CONDITIONAL(args); + if (status != RE_ERROR_SUCCESS) + return status; + break; case RE_OP_END_OF_LINE: case RE_OP_END_OF_LINE_U: case RE_OP_END_OF_STRING: @@ -22285,6 +24095,13 @@ Py_LOCAL_INLINE(int) build_sequence(RE_CompileArgs* args) { if (status != RE_ERROR_SUCCESS) return status; break; + case RE_OP_FAILURE: + case RE_OP_PRUNE: + case RE_OP_SUCCESS: + status = build_SUCCESS(args); + if (status != RE_ERROR_SUCCESS) + return status; + break; case RE_OP_FUZZY: /* A fuzzy sequence. */ status = build_FUZZY(args); @@ -22384,12 +24201,6 @@ Py_LOCAL_INLINE(int) build_sequence(RE_CompileArgs* args) { if (status != RE_ERROR_SUCCESS) return status; break; - case RE_OP_SUCCESS: - /* Success. */ - status = build_SUCCESS(args); - if (status != RE_ERROR_SUCCESS) - return status; - break; default: /* We've found an opcode which we don't recognise. We'll leave it * for the caller. @@ -22424,7 +24235,6 @@ Py_LOCAL_INLINE(BOOL) compile_to_nodes(RE_CODE* code, RE_CODE* end_code, args.end_code = end_code; args.pattern = pattern; args.forward = (pattern->flags & RE_FLAG_REVERSE) == 0; - args.min_width = 0; args.visible_captures = FALSE; args.has_captures = FALSE; args.repeat_depth = 0; @@ -22558,8 +24368,8 @@ Py_LOCAL_INLINE(void) scan_locale_chars(RE_LocaleInfo* locale_info) { props |= RE_LOCALE_UPPER; locale_info->properties[c] = props; - locale_info->uppercase[c] = toupper(c); - locale_info->lowercase[c] = tolower(c); + locale_info->uppercase[c] = (unsigned char)toupper(c); + locale_info->lowercase[c] = (unsigned char)tolower(c); } } @@ -22581,11 +24391,13 @@ static PyObject* re_compile(PyObject* self_, PyObject* args) { PyObject* required_chars; Py_ssize_t req_flags; size_t public_group_count; + BOOL unpacked; Py_ssize_t code_len; RE_CODE* code; Py_ssize_t i; RE_CODE* req_chars; size_t req_length; + PyObject* packed_code_list; PatternObject* self; BOOL unicode; BOOL locale; @@ -22597,11 +24409,29 @@ static PyObject* re_compile(PyObject* self_, PyObject* args) { &req_offset, &required_chars, &req_flags, &public_group_count)) return NULL; + /* If it came from a pickled source, code_list will be a packed code list + * in a bytestring. + */ + if (PyString_Check(code_list)) { + packed_code_list = code_list; + code_list = unpack_code_list(packed_code_list); + if (!code_list) + return NULL; + + unpacked = TRUE; + } else + unpacked = FALSE; + /* Read the regex code. */ code_len = PyList_GET_SIZE(code_list); code = (RE_CODE*)re_alloc((size_t)code_len * sizeof(RE_CODE)); - if (!code) + if (!code) { + if (unpacked) + /* code_list has been built from a packed code list. */ + Py_DECREF(code_list); + return NULL; + } for (i = 0; i < code_len; i++) { PyObject* o; @@ -22622,10 +24452,25 @@ static PyObject* re_compile(PyObject* self_, PyObject* args) { /* Get the required characters. */ get_required_chars(required_chars, &req_chars, &req_length); + if (!unpacked) { + /* Pack the code list in case it's needed for pickling. */ + packed_code_list = pack_code_list(code, code_len); + if (!packed_code_list) { + set_error(RE_ERROR_MEMORY, NULL); + re_dealloc(req_chars); + re_dealloc(code); + return NULL; + } + } + /* Create the PatternObject. */ self = PyObject_NEW(PatternObject, &Pattern_Type); if (!self) { set_error(RE_ERROR_MEMORY, NULL); + if (unpacked) + Py_DECREF(code_list); + else + Py_DECREF(packed_code_list); re_dealloc(req_chars); re_dealloc(code); return NULL; @@ -22634,6 +24479,7 @@ static PyObject* re_compile(PyObject* self_, PyObject* args) { /* Initialise the PatternObject. */ self->pattern = pattern; self->flags = flags; + self->packed_code_list = packed_code_list; self->weakreflist = NULL; self->start_node = NULL; self->repeat_count = 0; @@ -22662,13 +24508,18 @@ static PyObject* re_compile(PyObject* self_, PyObject* args) { self->fuzzy_count = 0; self->recursive = FALSE; self->req_offset = req_offset; + self->required_chars = required_chars; + self->req_flags = req_flags; self->req_string = NULL; self->locale_info = NULL; Py_INCREF(self->pattern); + if (unpacked) + Py_INCREF(self->packed_code_list); Py_INCREF(self->groupindex); Py_INCREF(self->indexgroup); Py_INCREF(self->named_lists); Py_INCREF(self->named_list_indexes); + Py_INCREF(self->required_chars); /* Initialise the character encoding. */ unicode = (flags & RE_FLAG_UNICODE) != 0; @@ -22696,13 +24547,18 @@ static PyObject* re_compile(PyObject* self_, PyObject* args) { if (!ok) { Py_DECREF(self); re_dealloc(req_chars); + if (unpacked) + Py_DECREF(code_list); return NULL; } /* Make a node for the required string, if there's one. */ if (req_chars) { - /* Remove the FULLCASE flag if it's not a Unicode pattern. */ - if (!(self->flags & RE_FLAG_UNICODE)) + /* Remove the FULLCASE flag if it's not a Unicode pattern or not + * ignoring case. + */ + if (!(self->flags & RE_FLAG_UNICODE) || !(self->flags & + RE_FLAG_IGNORECASE)) req_flags &= ~RE_FLAG_FULLCASE; if (self->flags & RE_FLAG_REVERSE) { @@ -22747,17 +24603,25 @@ static PyObject* re_compile(PyObject* self_, PyObject* args) { self->locale_info = re_alloc(sizeof(RE_LocaleInfo)); if (!self->locale_info) { Py_DECREF(self); + if (unpacked) + Py_DECREF(code_list); return NULL; } scan_locale_chars(self->locale_info); } + if (unpacked) + Py_DECREF(code_list); + return (PyObject*)self; error: re_dealloc(code); set_error(RE_ERROR_ILLEGAL, NULL); + if (unpacked) + Py_DECREF(code_list); + return NULL; } @@ -22913,9 +24777,9 @@ static PyObject* fold_case(PyObject* self_, PyObject* args) { /* Build the result string. */ if (str_info.is_unicode) - result = build_unicode_value(folded, folded_len, folded_charsize); + result = build_unicode_value(folded, 0, folded_len, folded_charsize); else - result = build_bytes_value(folded, folded_len, folded_charsize); + result = build_bytes_value(folded, 0, folded_len, folded_charsize); re_dealloc(folded); @@ -22948,7 +24812,7 @@ static PyObject* get_expand_on_folding(PyObject* self, PyObject* unused) { codepoint = re_expand_on_folding[i]; - item = build_unicode_value(&codepoint, 1, sizeof(codepoint)); + item = build_unicode_value(&codepoint, 0, 1, sizeof(codepoint)); if (!item) goto error; diff --git a/src/regex/_regex.h b/src/regex/_regex.h index 9688dd95ef..33ccfdb110 100644 --- a/src/regex/_regex.h +++ b/src/regex/_regex.h @@ -11,7 +11,7 @@ * 2010-01-16 mrab Re-written */ -/* Supports Unicode version 7.0.0. */ +/* Supports Unicode version 9.0.0. */ #define RE_MAGIC 20100116 @@ -34,84 +34,91 @@ #define RE_OP_CHARACTER_IGN 13 #define RE_OP_CHARACTER_IGN_REV 14 #define RE_OP_CHARACTER_REV 15 -#define RE_OP_DEFAULT_BOUNDARY 16 -#define RE_OP_DEFAULT_END_OF_WORD 17 -#define RE_OP_DEFAULT_START_OF_WORD 18 -#define RE_OP_END 19 -#define RE_OP_END_OF_LINE 20 -#define RE_OP_END_OF_LINE_U 21 -#define RE_OP_END_OF_STRING 22 -#define RE_OP_END_OF_STRING_LINE 23 -#define RE_OP_END_OF_STRING_LINE_U 24 -#define RE_OP_END_OF_WORD 25 -#define RE_OP_FUZZY 26 -#define RE_OP_GRAPHEME_BOUNDARY 27 -#define RE_OP_GREEDY_REPEAT 28 -#define RE_OP_GROUP 29 -#define RE_OP_GROUP_CALL 30 -#define RE_OP_GROUP_EXISTS 31 -#define RE_OP_LAZY_REPEAT 32 -#define RE_OP_LOOKAROUND 33 -#define RE_OP_NEXT 34 -#define RE_OP_PROPERTY 35 -#define RE_OP_PROPERTY_IGN 36 -#define RE_OP_PROPERTY_IGN_REV 37 -#define RE_OP_PROPERTY_REV 38 -#define RE_OP_RANGE 39 -#define RE_OP_RANGE_IGN 40 -#define RE_OP_RANGE_IGN_REV 41 -#define RE_OP_RANGE_REV 42 -#define RE_OP_REF_GROUP 43 -#define RE_OP_REF_GROUP_FLD 44 -#define RE_OP_REF_GROUP_FLD_REV 45 -#define RE_OP_REF_GROUP_IGN 46 -#define RE_OP_REF_GROUP_IGN_REV 47 -#define RE_OP_REF_GROUP_REV 48 -#define RE_OP_SEARCH_ANCHOR 49 -#define RE_OP_SET_DIFF 50 -#define RE_OP_SET_DIFF_IGN 51 -#define RE_OP_SET_DIFF_IGN_REV 52 -#define RE_OP_SET_DIFF_REV 53 -#define RE_OP_SET_INTER 54 -#define RE_OP_SET_INTER_IGN 55 -#define RE_OP_SET_INTER_IGN_REV 56 -#define RE_OP_SET_INTER_REV 57 -#define RE_OP_SET_SYM_DIFF 58 -#define RE_OP_SET_SYM_DIFF_IGN 59 -#define RE_OP_SET_SYM_DIFF_IGN_REV 60 -#define RE_OP_SET_SYM_DIFF_REV 61 -#define RE_OP_SET_UNION 62 -#define RE_OP_SET_UNION_IGN 63 -#define RE_OP_SET_UNION_IGN_REV 64 -#define RE_OP_SET_UNION_REV 65 -#define RE_OP_START_OF_LINE 66 -#define RE_OP_START_OF_LINE_U 67 -#define RE_OP_START_OF_STRING 68 -#define RE_OP_START_OF_WORD 69 -#define RE_OP_STRING 70 -#define RE_OP_STRING_FLD 71 -#define RE_OP_STRING_FLD_REV 72 -#define RE_OP_STRING_IGN 73 -#define RE_OP_STRING_IGN_REV 74 -#define RE_OP_STRING_REV 75 -#define RE_OP_STRING_SET 76 -#define RE_OP_STRING_SET_FLD 77 -#define RE_OP_STRING_SET_FLD_REV 78 -#define RE_OP_STRING_SET_IGN 79 -#define RE_OP_STRING_SET_IGN_REV 80 -#define RE_OP_STRING_SET_REV 81 -#define RE_OP_BODY_END 82 -#define RE_OP_BODY_START 83 -#define RE_OP_END_FUZZY 84 -#define RE_OP_END_GREEDY_REPEAT 85 -#define RE_OP_END_GROUP 86 -#define RE_OP_END_LAZY_REPEAT 87 -#define RE_OP_GREEDY_REPEAT_ONE 88 -#define RE_OP_GROUP_RETURN 89 -#define RE_OP_LAZY_REPEAT_ONE 90 -#define RE_OP_MATCH_BODY 91 -#define RE_OP_MATCH_TAIL 92 -#define RE_OP_START_GROUP 93 +#define RE_OP_CONDITIONAL 16 +#define RE_OP_DEFAULT_BOUNDARY 17 +#define RE_OP_DEFAULT_END_OF_WORD 18 +#define RE_OP_DEFAULT_START_OF_WORD 19 +#define RE_OP_END 20 +#define RE_OP_END_OF_LINE 21 +#define RE_OP_END_OF_LINE_U 22 +#define RE_OP_END_OF_STRING 23 +#define RE_OP_END_OF_STRING_LINE 24 +#define RE_OP_END_OF_STRING_LINE_U 25 +#define RE_OP_END_OF_WORD 26 +#define RE_OP_FUZZY 27 +#define RE_OP_GRAPHEME_BOUNDARY 28 +#define RE_OP_GREEDY_REPEAT 29 +#define RE_OP_GROUP 30 +#define RE_OP_GROUP_CALL 31 +#define RE_OP_GROUP_EXISTS 32 +#define RE_OP_KEEP 33 +#define RE_OP_LAZY_REPEAT 34 +#define RE_OP_LOOKAROUND 35 +#define RE_OP_NEXT 36 +#define RE_OP_PROPERTY 37 +#define RE_OP_PROPERTY_IGN 38 +#define RE_OP_PROPERTY_IGN_REV 39 +#define RE_OP_PROPERTY_REV 40 +#define RE_OP_PRUNE 41 +#define RE_OP_RANGE 42 +#define RE_OP_RANGE_IGN 43 +#define RE_OP_RANGE_IGN_REV 44 +#define RE_OP_RANGE_REV 45 +#define RE_OP_REF_GROUP 46 +#define RE_OP_REF_GROUP_FLD 47 +#define RE_OP_REF_GROUP_FLD_REV 48 +#define RE_OP_REF_GROUP_IGN 49 +#define RE_OP_REF_GROUP_IGN_REV 50 +#define RE_OP_REF_GROUP_REV 51 +#define RE_OP_SEARCH_ANCHOR 52 +#define RE_OP_SET_DIFF 53 +#define RE_OP_SET_DIFF_IGN 54 +#define RE_OP_SET_DIFF_IGN_REV 55 +#define RE_OP_SET_DIFF_REV 56 +#define RE_OP_SET_INTER 57 +#define RE_OP_SET_INTER_IGN 58 +#define RE_OP_SET_INTER_IGN_REV 59 +#define RE_OP_SET_INTER_REV 60 +#define RE_OP_SET_SYM_DIFF 61 +#define RE_OP_SET_SYM_DIFF_IGN 62 +#define RE_OP_SET_SYM_DIFF_IGN_REV 63 +#define RE_OP_SET_SYM_DIFF_REV 64 +#define RE_OP_SET_UNION 65 +#define RE_OP_SET_UNION_IGN 66 +#define RE_OP_SET_UNION_IGN_REV 67 +#define RE_OP_SET_UNION_REV 68 +#define RE_OP_SKIP 69 +#define RE_OP_START_OF_LINE 70 +#define RE_OP_START_OF_LINE_U 71 +#define RE_OP_START_OF_STRING 72 +#define RE_OP_START_OF_WORD 73 +#define RE_OP_STRING 74 +#define RE_OP_STRING_FLD 75 +#define RE_OP_STRING_FLD_REV 76 +#define RE_OP_STRING_IGN 77 +#define RE_OP_STRING_IGN_REV 78 +#define RE_OP_STRING_REV 79 +#define RE_OP_STRING_SET 80 +#define RE_OP_STRING_SET_FLD 81 +#define RE_OP_STRING_SET_FLD_REV 82 +#define RE_OP_STRING_SET_IGN 83 +#define RE_OP_STRING_SET_IGN_REV 84 +#define RE_OP_STRING_SET_REV 85 +#define RE_OP_BODY_END 86 +#define RE_OP_BODY_START 87 +#define RE_OP_END_ATOMIC 88 +#define RE_OP_END_CONDITIONAL 89 +#define RE_OP_END_FUZZY 90 +#define RE_OP_END_GREEDY_REPEAT 91 +#define RE_OP_END_GROUP 92 +#define RE_OP_END_LAZY_REPEAT 93 +#define RE_OP_END_LOOKAROUND 94 +#define RE_OP_GREEDY_REPEAT_ONE 95 +#define RE_OP_GROUP_RETURN 96 +#define RE_OP_LAZY_REPEAT_ONE 97 +#define RE_OP_MATCH_BODY 98 +#define RE_OP_MATCH_TAIL 99 +#define RE_OP_START_GROUP 100 char* re_op_text[] = { "RE_OP_FAILURE", @@ -130,6 +137,7 @@ char* re_op_text[] = { "RE_OP_CHARACTER_IGN", "RE_OP_CHARACTER_IGN_REV", "RE_OP_CHARACTER_REV", + "RE_OP_CONDITIONAL", "RE_OP_DEFAULT_BOUNDARY", "RE_OP_DEFAULT_END_OF_WORD", "RE_OP_DEFAULT_START_OF_WORD", @@ -146,6 +154,7 @@ char* re_op_text[] = { "RE_OP_GROUP", "RE_OP_GROUP_CALL", "RE_OP_GROUP_EXISTS", + "RE_OP_KEEP", "RE_OP_LAZY_REPEAT", "RE_OP_LOOKAROUND", "RE_OP_NEXT", @@ -153,6 +162,7 @@ char* re_op_text[] = { "RE_OP_PROPERTY_IGN", "RE_OP_PROPERTY_IGN_REV", "RE_OP_PROPERTY_REV", + "RE_OP_PRUNE", "RE_OP_RANGE", "RE_OP_RANGE_IGN", "RE_OP_RANGE_IGN_REV", @@ -180,6 +190,7 @@ char* re_op_text[] = { "RE_OP_SET_UNION_IGN", "RE_OP_SET_UNION_IGN_REV", "RE_OP_SET_UNION_REV", + "RE_OP_SKIP", "RE_OP_START_OF_LINE", "RE_OP_START_OF_LINE_U", "RE_OP_START_OF_STRING", @@ -198,10 +209,13 @@ char* re_op_text[] = { "RE_OP_STRING_SET_REV", "RE_OP_BODY_END", "RE_OP_BODY_START", + "RE_OP_END_ATOMIC", + "RE_OP_END_CONDITIONAL", "RE_OP_END_FUZZY", "RE_OP_END_GREEDY_REPEAT", "RE_OP_END_GROUP", "RE_OP_END_LAZY_REPEAT", + "RE_OP_END_LOOKAROUND", "RE_OP_GREEDY_REPEAT_ONE", "RE_OP_GROUP_RETURN", "RE_OP_LAZY_REPEAT_ONE", @@ -219,6 +233,7 @@ char* re_op_text[] = { #define RE_FLAG_IGNORECASE 0x2 #define RE_FLAG_LOCALE 0x4 #define RE_FLAG_MULTILINE 0x8 +#define RE_FLAG_POSIX 0x10000 #define RE_FLAG_REVERSE 0x400 #define RE_FLAG_TEMPLATE 0x1 #define RE_FLAG_UNICODE 0x20 diff --git a/src/regex/_regex_core.py b/src/regex/_regex_core.py index 0a4c0f88bc..fba42b7f57 100644 --- a/src/regex/_regex_core.py +++ b/src/regex/_regex_core.py @@ -14,6 +14,7 @@ # 2010-01-16 mrab Python front-end re-written and extended import string +import sys import unicodedata from collections import defaultdict @@ -24,9 +25,9 @@ if _regex is None: __all__ = ["A", "ASCII", "B", "BESTMATCH", "D", "DEBUG", "E", "ENHANCEMATCH", - "F", "FULLCASE", "I", "IGNORECASE", "L", "LOCALE", "M", "MULTILINE", "R", - "REVERSE", "S", "DOTALL", "T", "TEMPLATE", "U", "UNICODE", "V0", "VERSION0", - "V1", "VERSION1", "W", "WORD", "X", "VERBOSE", "error", + "F", "FULLCASE", "I", "IGNORECASE", "L", "LOCALE", "M", "MULTILINE", "P", + "POSIX", "R", "REVERSE", "S", "DOTALL", "T", "TEMPLATE", "U", "UNICODE", + "V0", "VERSION0", "V1", "VERSION1", "W", "WORD", "X", "VERBOSE", "error", "Scanner"] # The regex exception. @@ -70,6 +71,7 @@ F = FULLCASE = 0x4000 # Unicode full case-folding. I = IGNORECASE = 0x2 # Ignore case. L = LOCALE = 0x4 # Assume current 8-bit locale. M = MULTILINE = 0x8 # Make anchors look for newline. +P = POSIX = 0x10000 # POSIX-style matching (leftmost longest). R = REVERSE = 0x400 # Search backwards. S = DOTALL = 0x10 # Make dot match newline. U = UNICODE = 0x20 # Assume Unicode locale. @@ -89,7 +91,7 @@ DEFAULT_FLAGS = {VERSION0: 0, VERSION1: FULLCASE} # The mask for the flags. GLOBAL_FLAGS = (_ALL_ENCODINGS | _ALL_VERSIONS | BESTMATCH | DEBUG | - ENHANCEMATCH | REVERSE) + ENHANCEMATCH | POSIX | REVERSE) SCOPED_FLAGS = FULLCASE | IGNORECASE | MULTILINE | DOTALL | WORD | VERBOSE ALPHA = frozenset(string.ascii_letters) @@ -111,8 +113,9 @@ UNLIMITED = (1 << BITS_PER_CODE) - 1 # The regular expression flags. REGEX_FLAGS = {"a": ASCII, "b": BESTMATCH, "e": ENHANCEMATCH, "f": FULLCASE, - "i": IGNORECASE, "L": LOCALE, "m": MULTILINE, "r": REVERSE, "s": DOTALL, "u": - UNICODE, "V0": VERSION0, "V1": VERSION1, "w": WORD, "x": VERBOSE} + "i": IGNORECASE, "L": LOCALE, "m": MULTILINE, "p": POSIX, "r": REVERSE, + "s": DOTALL, "u": UNICODE, "V0": VERSION0, "V1": VERSION1, "w": WORD, "x": + VERBOSE} # The case flags. CASE_FLAGS = FULLCASE | IGNORECASE @@ -121,6 +124,9 @@ FULLIGNORECASE = FULLCASE | IGNORECASE FULL_CASE_FOLDING = UNICODE | FULLIGNORECASE +CASE_FLAGS_COMBINATIONS = {0: 0, FULLCASE: 0, IGNORECASE: IGNORECASE, + FULLIGNORECASE: FULLIGNORECASE} + # The number of digits in hexadecimal escapes. HEX_ESCAPES = {"x": 2, "u": 4, "U": 8} @@ -146,6 +152,7 @@ CHARACTER CHARACTER_IGN CHARACTER_IGN_REV CHARACTER_REV +CONDITIONAL DEFAULT_BOUNDARY DEFAULT_END_OF_WORD DEFAULT_START_OF_WORD @@ -162,6 +169,7 @@ GREEDY_REPEAT GROUP GROUP_CALL GROUP_EXISTS +KEEP LAZY_REPEAT LOOKAROUND NEXT @@ -169,6 +177,7 @@ PROPERTY PROPERTY_IGN PROPERTY_IGN_REV PROPERTY_REV +PRUNE RANGE RANGE_IGN RANGE_IGN_REV @@ -196,6 +205,7 @@ SET_UNION SET_UNION_IGN SET_UNION_IGN_REV SET_UNION_REV +SKIP START_OF_LINE START_OF_LINE_U START_OF_STRING @@ -286,30 +296,44 @@ def is_cased(info, char): def _compile_firstset(info, fs): "Compiles the firstset for the pattern." - if not fs or None in fs: + reverse = bool(info.flags & REVERSE) + fs = _check_firstset(info, reverse, fs) + if not fs: return [] + # Compile the firstset. + return fs.compile(reverse) + +def _check_firstset(info, reverse, fs): + "Checks the firstset for the pattern." + if not fs or None in fs: + return None + # If we ignore the case, for simplicity we won't build a firstset. members = set() + case_flags = NOCASE for i in fs: if isinstance(i, Character) and not i.positive: - return [] - - if i.case_flags: - if isinstance(i, Character): - if is_cased(info, i.value): - return [] - elif isinstance(i, SetBase): - return [] + return None +# if i.case_flags: +# if isinstance(i, Character): +# if is_cased(info, i.value): +# return [] +# elif isinstance(i, SetBase): +# return [] + case_flags |= i.case_flags members.add(i.with_flags(case_flags=NOCASE)) - # Build the firstset. - fs = SetUnion(info, list(members), zerowidth=True) - fs = fs.optimise(info, in_set=True) + if case_flags == (FULLCASE | IGNORECASE): + return None - # Compile the firstset. - return fs.compile(bool(info.flags & REVERSE)) + # Build the firstset. + fs = SetUnion(info, list(members), case_flags=case_flags & ~FULLCASE, + zerowidth=True) + fs = fs.optimise(info, reverse, in_set=True) + + return fs def _flatten_code(code): "Flattens the code from a list of tuples." @@ -319,28 +343,38 @@ def _flatten_code(code): return flat_code +def make_case_flags(info): + "Makes the case flags." + flags = info.flags & CASE_FLAGS + + # Turn off FULLCASE if ASCII is turned on. + if info.flags & ASCII: + flags &= ~FULLCASE + + return flags + def make_character(info, value, in_set=False): "Makes a character literal." if in_set: # A character set is built case-sensitively. return Character(value) - return Character(value, case_flags=info.flags & CASE_FLAGS) + return Character(value, case_flags=make_case_flags(info)) def make_ref_group(info, name, position): "Makes a group reference." - return RefGroup(info, name, position, case_flags=info.flags & CASE_FLAGS) + return RefGroup(info, name, position, case_flags=make_case_flags(info)) def make_string_set(info, name): "Makes a string set." - return StringSet(info, name, case_flags=info.flags & CASE_FLAGS) + return StringSet(info, name, case_flags=make_case_flags(info)) def make_property(info, prop, in_set): "Makes a property." if in_set: return prop - return prop.with_flags(case_flags=info.flags & CASE_FLAGS) + return prop.with_flags(case_flags=make_case_flags(info)) def _parse_pattern(source, info): "Parses a pattern, eg. 'a|b|c'." @@ -498,10 +532,6 @@ def parse_limited_quantifier(source): # No minimum means 0 and no maximum means unlimited. min_count = int(min_count or 0) max_count = int(max_count) if max_count else None - - if max_count is not None and min_count > max_count: - raise error("min repeat greater than max repeat", source.string, - saved_pos) else: if not min_count: source.pos = saved_pos @@ -509,22 +539,26 @@ def parse_limited_quantifier(source): min_count = max_count = int(min_count) - if is_above_limit(min_count) or is_above_limit(max_count): - raise error("repeat count too big", source.string, saved_pos) - if not source.match ("}"): source.pos = saved_pos return None + if is_above_limit(min_count) or is_above_limit(max_count): + raise error("repeat count too big", source.string, saved_pos) + + if max_count is not None and min_count > max_count: + raise error("min repeat greater than max repeat", source.string, + saved_pos) + return min_count, max_count def parse_fuzzy(source, ch): "Parses a fuzzy setting, if present." + saved_pos = source.pos + if ch != "{": return None - saved_pos = source.pos - constraints = {} try: parse_fuzzy_item(source, constraints) @@ -565,7 +599,7 @@ def parse_cost_constraint(source, constraints): else: # There's a maximum cost. cost_pos = source.pos - max_cost = int(parse_count(source)) + max_cost = parse_cost_limit(source) # Inclusive or exclusive limit? if not max_inc: @@ -578,46 +612,57 @@ def parse_cost_constraint(source, constraints): elif ch in DIGITS: # Syntax: cost ("<=" | "<") constraint ("<=" | "<") cost source.pos = saved_pos - try: - # Minimum cost. - min_cost = int(parse_count(source)) - min_inc = parse_fuzzy_compare(source) - if min_inc is None: - raise ParseError() + # Minimum cost. + cost_pos = source.pos + min_cost = parse_cost_limit(source) - constraint = parse_constraint(source, constraints, source.get()) - - max_inc = parse_fuzzy_compare(source) - if max_inc is None: - raise ParseError() - - # Maximum cost. - cost_pos = source.pos - max_cost = int(parse_count(source)) - - # Inclusive or exclusive limits? - if not min_inc: - min_cost += 1 - if not max_inc: - max_cost -= 1 - - if not 0 <= min_cost <= max_cost: - raise error("bad fuzzy cost limit", source.string, cost_pos) - - constraints[constraint] = min_cost, max_cost - except ValueError: + min_inc = parse_fuzzy_compare(source) + if min_inc is None: raise ParseError() + + constraint = parse_constraint(source, constraints, source.get()) + + max_inc = parse_fuzzy_compare(source) + if max_inc is None: + raise ParseError() + + # Maximum cost. + cost_pos = source.pos + max_cost = parse_cost_limit(source) + + # Inclusive or exclusive limits? + if not min_inc: + min_cost += 1 + if not max_inc: + max_cost -= 1 + + if not 0 <= min_cost <= max_cost: + raise error("bad fuzzy cost limit", source.string, cost_pos) + + constraints[constraint] = min_cost, max_cost else: raise ParseError() +def parse_cost_limit(source): + "Parses a cost limit." + cost_pos = source.pos + digits = parse_count(source) + + try: + return int(digits) + except ValueError: + pass + + raise error("bad fuzzy cost limit", source.string, cost_pos) + def parse_constraint(source, constraints, ch): "Parses a constraint." if ch not in "deis": - raise error("bad fuzzy constraint", source.string, source.pos) + raise ParseError() if ch in constraints: - raise error("repeated fuzzy constraint", source.string, source.pos) + raise ParseError() return ch @@ -643,7 +688,7 @@ def parse_cost_equation(source, constraints): max_inc = parse_fuzzy_compare(source) if max_inc is None: - raise error("missing fuzzy cost limit", source.string, source.pos) + raise ParseError() max_cost = int(parse_count(source)) @@ -678,7 +723,7 @@ def parse_literal_and_element(source, info): inline flag or None if it has reached the end of a sequence. """ characters = [] - case_flags = info.flags & CASE_FLAGS + case_flags = make_case_flags(info) while True: saved_pos = source.pos ch = source.get() @@ -807,6 +852,19 @@ def parse_paren(source, info): source.pos = saved_pos_2 return parse_flags_subpattern(source, info) + if ch == "*": + # (*... + saved_pos_2 = source.pos + word = source.get_while(set(")>"), include=False) + if word[ : 1].isalpha(): + verb = VERBS.get(word) + if not verb: + raise error("unknown verb", source.string, saved_pos_2) + + source.expect(")") + + return verb + # (...: an unnamed capture group. source.pos = saved_pos group = info.open_group() @@ -881,6 +939,26 @@ def parse_conditional(source, info): "Parses a conditional subpattern." saved_flags = info.flags saved_pos = source.pos + ch = source.get() + if ch == "?": + # (?(?... + ch = source.get() + if ch in ("=", "!"): + # (?(?=... or (?(?!...: lookahead conditional. + return parse_lookaround_conditional(source, info, False, ch == "=") + if ch == "<": + # (?(?<... + ch = source.get() + if ch in ("=", "!"): + # (?(?<=... or (?(? 1: - sequence = prefix + [Branch(branches)] + suffix + if reverse: + suffix, branches = Branch._split_common_suffix(info, branches) + prefix = [] else: - sequence = prefix + branches + suffix - - return make_sequence(sequence) - - def optimise(self, info): - # Flatten branches within branches. - branches = Branch._flatten_branches(info, self.branches) + prefix, branches = Branch._split_common_prefix(info, branches) + suffix = [] # Try to reduce adjacent single-character branches to sets. - branches = Branch._reduce_to_set(info, branches) + branches = Branch._reduce_to_set(info, reverse, branches) if len(branches) > 1: sequence = [Branch(branches)] + + if not prefix or not suffix: + # We might be able to add a quick precheck before the branches. + firstset = self._add_precheck(info, reverse, branches) + + if firstset: + if reverse: + sequence.append(firstset) + else: + sequence.insert(0, firstset) else: sequence = branches - return make_sequence(sequence) + return make_sequence(prefix + sequence + suffix) + + def _add_precheck(self, info, reverse, branches): + charset = set() + pos = -1 if reverse else 0 + + for branch in branches: + if type(branch) is Literal and branch.case_flags == NOCASE: + charset.add(branch.characters[pos]) + else: + return + + if not charset: + return None + + return _check_firstset(info, reverse, [Character(c) for c in charset]) def pack_characters(self, info): self.branches = [b.pack_characters(info) for b in self.branches] @@ -2008,11 +2126,11 @@ class Branch(RegexBase): b.dump(indent + 1, reverse) @staticmethod - def _flatten_branches(info, branches): + def _flatten_branches(info, reverse, branches): # Flatten the branches so that there aren't branches of branches. new_branches = [] for b in branches: - b = b.optimise(info) + b = b.optimise(info, reverse) if isinstance(b, Branch): new_branches.extend(b.branches) else: @@ -2156,7 +2274,7 @@ class Branch(RegexBase): return True @staticmethod - def _merge_common_prefixes(info, branches): + def _merge_common_prefixes(info, reverse, branches): # Branches with the same case-sensitive character prefix can be grouped # together if they are separated only by other branches with a # character prefix. @@ -2174,7 +2292,8 @@ class Branch(RegexBase): prefixed[b.items[0].value].append(b.items) order.setdefault(b.items[0].value, len(order)) else: - Branch._flush_char_prefix(info, prefixed, order, new_branches) + Branch._flush_char_prefix(info, reverse, prefixed, order, + new_branches) new_branches.append(b) @@ -2187,7 +2306,7 @@ class Branch(RegexBase): return isinstance(c, Character) and c.positive and not c.case_flags @staticmethod - def _reduce_to_set(info, branches): + def _reduce_to_set(info, reverse, branches): # Can the branches be reduced to a set? new_branches = [] items = set() @@ -2197,24 +2316,25 @@ class Branch(RegexBase): # Branch starts with a single character. if b.case_flags != case_flags: # Different case sensitivity, so flush. - Branch._flush_set_members(info, items, case_flags, + Branch._flush_set_members(info, reverse, items, case_flags, new_branches) case_flags = b.case_flags items.add(b.with_flags(case_flags=NOCASE)) else: - Branch._flush_set_members(info, items, case_flags, + Branch._flush_set_members(info, reverse, items, case_flags, new_branches) new_branches.append(b) - Branch._flush_set_members(info, items, case_flags, new_branches) + Branch._flush_set_members(info, reverse, items, case_flags, + new_branches) return new_branches @staticmethod - def _flush_char_prefix(info, prefixed, order, new_branches): + def _flush_char_prefix(info, reverse, prefixed, order, new_branches): # Flush the prefixed branches. if not prefixed: return @@ -2234,13 +2354,13 @@ class Branch(RegexBase): optional = True sequence = Sequence([Character(value), Branch(subbranches)]) - new_branches.append(sequence.optimise(info)) + new_branches.append(sequence.optimise(info, reverse)) prefixed.clear() order.clear() @staticmethod - def _flush_set_members(info, items, case_flags, new_branches): + def _flush_set_members(info, reverse, items, case_flags, new_branches): # Flush the set members. if not items: return @@ -2248,7 +2368,7 @@ class Branch(RegexBase): if len(items) == 1: item = list(items)[0] else: - item = SetUnion(info, list(items)).optimise(info) + item = SetUnion(info, list(items)).optimise(info, reverse) new_branches.append(item.with_flags(case_flags=case_flags)) @@ -2337,6 +2457,15 @@ class CallGroup(RegexBase): def max_width(self): return UNLIMITED +class CallRef(RegexBase): + def __init__(self, ref, parsed): + self.ref = ref + self.parsed = parsed + + def _compile(self, reverse, fuzzy): + return ([(OP.CALL_REF, self.ref)] + self.parsed._compile(reverse, + fuzzy) + [(OP.END, )]) + class Character(RegexBase): _opcode = {(NOCASE, False): OP.CHARACTER, (IGNORECASE, False): OP.CHARACTER_IGN, (FULLCASE, False): OP.CHARACTER, (FULLIGNORECASE, @@ -2349,7 +2478,7 @@ class Character(RegexBase): RegexBase.__init__(self) self.value = value self.positive = bool(positive) - self.case_flags = case_flags + self.case_flags = CASE_FLAGS_COMBINATIONS[case_flags] self.zerowidth = bool(zerowidth) if (self.positive and (self.case_flags & FULLIGNORECASE) == @@ -2364,7 +2493,7 @@ class Character(RegexBase): def rebuild(self, positive, case_flags, zerowidth): return Character(self.value, positive, case_flags, zerowidth) - def optimise(self, info, in_set=False): + def optimise(self, info, reverse, in_set=False): return self def get_firstset(self, reverse): @@ -2427,17 +2556,22 @@ class Conditional(RegexBase): try: self.group = self.info.group_index[self.group] except KeyError: - raise error("unknown group", pattern, self.position) + if self.group == 'DEFINE': + # 'DEFINE' is a special name unless there's a group with + # that name. + self.group = 0 + else: + raise error("unknown group", pattern, self.position) - if not 1 <= self.group <= self.info.group_count: + if not 0 <= self.group <= self.info.group_count: raise error("invalid group reference", pattern, self.position) self.yes_item.fix_groups(pattern, reverse, fuzzy) self.no_item.fix_groups(pattern, reverse, fuzzy) - def optimise(self, info): - yes_item = self.yes_item.optimise(info) - no_item = self.no_item.optimise(info) + def optimise(self, info, reverse): + yes_item = self.yes_item.optimise(info, reverse) + no_item = self.no_item.optimise(info, reverse) return Conditional(info, self.group, yes_item, no_item, self.position) @@ -2478,7 +2612,7 @@ class Conditional(RegexBase): def _dump(self, indent, reverse): print "%sGROUP_EXISTS %s" % (INDENT * indent, self.group) self.yes_item.dump(indent + 1, reverse) - if self.no_item: + if not self.no_item.is_empty(): print "%sOR" % (INDENT * indent) self.no_item.dump(indent + 1, reverse) @@ -2528,6 +2662,12 @@ class EndOfWord(ZeroWidthBase): _opcode = OP.END_OF_WORD _op_name = "END_OF_WORD" +class Failure(ZeroWidthBase): + _op_name = "FAILURE" + + def _compile(self, reverse, fuzzy): + return [(OP.FAILURE, )] + class Fuzzy(RegexBase): def __init__(self, subpattern, constraints=None): RegexBase.__init__(self) @@ -2686,8 +2826,8 @@ class GreedyRepeat(RegexBase): def fix_groups(self, pattern, reverse, fuzzy): self.subpattern.fix_groups(pattern, reverse, fuzzy) - def optimise(self, info): - subpattern = self.subpattern.optimise(info) + def optimise(self, info, reverse): + subpattern = self.subpattern.optimise(info, reverse) return type(self)(subpattern, self.min_count, self.max_count) @@ -2775,8 +2915,8 @@ class Group(RegexBase): self.info.defined_groups[self.group] = (self, reverse, fuzzy) self.subpattern.fix_groups(pattern, reverse, fuzzy) - def optimise(self, info): - subpattern = self.subpattern.optimise(info) + def optimise(self, info, reverse): + subpattern = self.subpattern.optimise(info, reverse) return Group(self.info, self.group, subpattern) @@ -2840,6 +2980,10 @@ class Group(RegexBase): def get_required_string(self, reverse): return self.subpattern.get_required_string(reverse) +class Keep(ZeroWidthBase): + _opcode = OP.KEEP + _op_name = "KEEP" + class LazyRepeat(GreedyRepeat): _opcode = OP.LAZY_REPEAT _op_name = "LAZY_REPEAT" @@ -2847,12 +2991,6 @@ class LazyRepeat(GreedyRepeat): class LookAround(RegexBase): _dir_text = {False: "AHEAD", True: "BEHIND"} - def __new__(cls, behind, positive, subpattern): - if positive and subpattern.is_empty(): - return subpattern - - return RegexBase.__new__(cls) - def __init__(self, behind, positive, subpattern): RegexBase.__init__(self) self.behind = bool(behind) @@ -2862,8 +3000,10 @@ class LookAround(RegexBase): def fix_groups(self, pattern, reverse, fuzzy): self.subpattern.fix_groups(pattern, self.behind, fuzzy) - def optimise(self, info): - subpattern = self.subpattern.optimise(info) + def optimise(self, info, reverse): + subpattern = self.subpattern.optimise(info, self.behind) + if self.positive and subpattern.is_empty(): + return subpattern return LookAround(self.behind, self.positive, subpattern) @@ -2893,7 +3033,7 @@ class LookAround(RegexBase): self.subpattern.dump(indent + 1, self.behind) def is_empty(self): - return self.subpattern.is_empty() + return self.positive and self.subpattern.is_empty() def __eq__(self, other): return type(self) is type(other) and (self.behind, self.positive, @@ -2902,6 +3042,95 @@ class LookAround(RegexBase): def max_width(self): return 0 +class LookAroundConditional(RegexBase): + _dir_text = {False: "AHEAD", True: "BEHIND"} + + def __init__(self, behind, positive, subpattern, yes_item, no_item): + RegexBase.__init__(self) + self.behind = bool(behind) + self.positive = bool(positive) + self.subpattern = subpattern + self.yes_item = yes_item + self.no_item = no_item + + def fix_groups(self, pattern, reverse, fuzzy): + self.subpattern.fix_groups(pattern, reverse, fuzzy) + self.yes_item.fix_groups(pattern, reverse, fuzzy) + self.no_item.fix_groups(pattern, reverse, fuzzy) + + def optimise(self, info, reverse): + subpattern = self.subpattern.optimise(info, self.behind) + yes_item = self.yes_item.optimise(info, self.behind) + no_item = self.no_item.optimise(info, self.behind) + + return LookAroundConditional(self.behind, self.positive, subpattern, + yes_item, no_item) + + def pack_characters(self, info): + self.subpattern = self.subpattern.pack_characters(info) + self.yes_item = self.yes_item.pack_characters(info) + self.no_item = self.no_item.pack_characters(info) + return self + + def remove_captures(self): + self.subpattern = self.subpattern.remove_captures() + self.yes_item = self.yes_item.remove_captures() + self.no_item = self.no_item.remove_captures() + + def is_atomic(self): + return (self.subpattern.is_atomic() and self.yes_item.is_atomic() and + self.no_item.is_atomic()) + + def can_be_affix(self): + return (self.subpattern.can_be_affix() and self.yes_item.can_be_affix() + and self.no_item.can_be_affix()) + + def contains_group(self): + return (self.subpattern.contains_group() or + self.yes_item.contains_group() or self.no_item.contains_group()) + + def get_firstset(self, reverse): + return (self.subpattern.get_firstset(reverse) | + self.no_item.get_firstset(reverse)) + + def _compile(self, reverse, fuzzy): + code = [(OP.CONDITIONAL, int(self.positive), int(not self.behind))] + code.extend(self.subpattern.compile(self.behind, fuzzy)) + code.append((OP.NEXT, )) + code.extend(self.yes_item.compile(reverse, fuzzy)) + add_code = self.no_item.compile(reverse, fuzzy) + if add_code: + code.append((OP.NEXT, )) + code.extend(add_code) + + code.append((OP.END, )) + + return code + + def _dump(self, indent, reverse): + print("%sCONDITIONAL %s %s" % (INDENT * indent, + self._dir_text[self.behind], POS_TEXT[self.positive])) + self.subpattern.dump(indent + 1, self.behind) + print("%sEITHER" % (INDENT * indent)) + self.yes_item.dump(indent + 1, reverse) + if not self.no_item.is_empty(): + print("%sOR".format(INDENT * indent)) + self.no_item.dump(indent + 1, reverse) + + def is_empty(self): + return (self.subpattern.is_empty() and self.yes_item.is_empty() or + self.no_item.is_empty()) + + def __eq__(self, other): + return type(self) is type(other) and (self.subpattern, self.yes_item, + self.no_item) == (other.subpattern, other.yes_item, other.no_item) + + def max_width(self): + return max(self.yes_item.max_width(), self.no_item.max_width()) + + def get_required_string(self, reverse): + return self.max_width(), None + class PrecompiledCode(RegexBase): def __init__(self, code): self.code = code @@ -2921,7 +3150,7 @@ class Property(RegexBase): RegexBase.__init__(self) self.value = value self.positive = bool(positive) - self.case_flags = case_flags + self.case_flags = CASE_FLAGS_COMBINATIONS[case_flags] self.zerowidth = bool(zerowidth) self._key = (self.__class__, self.value, self.positive, @@ -2930,7 +3159,7 @@ class Property(RegexBase): def rebuild(self, positive, case_flags, zerowidth): return Property(self.value, positive, case_flags, zerowidth) - def optimise(self, info, in_set=False): + def optimise(self, info, reverse, in_set=False): return self def get_firstset(self, reverse): @@ -2961,6 +3190,12 @@ class Property(RegexBase): def max_width(self): return 1 +class Prune(ZeroWidthBase): + _op_name = "PRUNE" + + def _compile(self, reverse, fuzzy): + return [(OP.PRUNE, )] + class Range(RegexBase): _opcode = {(NOCASE, False): OP.RANGE, (IGNORECASE, False): OP.RANGE_IGN, (FULLCASE, False): OP.RANGE, (FULLIGNORECASE, False): OP.RANGE_IGN, @@ -2974,7 +3209,7 @@ class Range(RegexBase): self.lower = lower self.upper = upper self.positive = bool(positive) - self.case_flags = case_flags + self.case_flags = CASE_FLAGS_COMBINATIONS[case_flags] self.zerowidth = bool(zerowidth) self._key = (self.__class__, self.lower, self.upper, self.positive, @@ -2983,7 +3218,7 @@ class Range(RegexBase): def rebuild(self, positive, case_flags, zerowidth): return Range(self.lower, self.upper, positive, case_flags, zerowidth) - def optimise(self, info, in_set=False): + def optimise(self, info, reverse, in_set=False): # Is the range case-sensitive? if not self.positive or not (self.case_flags & IGNORECASE) or in_set: return self @@ -3049,7 +3284,7 @@ class RefGroup(RegexBase): self.info = info self.group = group self.position = position - self.case_flags = case_flags + self.case_flags = CASE_FLAGS_COMBINATIONS[case_flags] self._key = self.__class__, self.group, self.case_flags @@ -3099,11 +3334,11 @@ class Sequence(RegexBase): for s in self.items: s.fix_groups(pattern, reverse, fuzzy) - def optimise(self, info): + def optimise(self, info, reverse): # Flatten the sequences. items = [] for s in self.items: - s = s.optimise(info) + s = s.optimise(info, reverse) if isinstance(s, Sequence): items.extend(s.items) else: @@ -3117,7 +3352,7 @@ class Sequence(RegexBase): characters = [] case_flags = NOCASE for s in self.items: - if type(s) is Character and s.positive: + if type(s) is Character and s.positive and not s.zerowidth: if s.case_flags != case_flags: # Different case sensitivity, so flush, unless neither the # previous nor the new character are cased. @@ -3176,7 +3411,7 @@ class Sequence(RegexBase): return fs | set([None]) def has_simple_start(self): - return self.items and self.items[0].has_simple_start() + return bool(self.items) and self.items[0].has_simple_start() def _compile(self, reverse, fuzzy): seq = self.items @@ -3241,7 +3476,7 @@ class SetBase(RegexBase): self.info = info self.items = tuple(items) self.positive = bool(positive) - self.case_flags = case_flags + self.case_flags = CASE_FLAGS_COMBINATIONS[case_flags] self.zerowidth = bool(zerowidth) self.char_width = 1 @@ -3251,7 +3486,7 @@ class SetBase(RegexBase): def rebuild(self, positive, case_flags, zerowidth): return type(self)(self.info, self.items, positive, case_flags, - zerowidth).optimise(self.info) + zerowidth).optimise(self.info, False) def get_firstset(self, reverse): return set([self]) @@ -3288,8 +3523,7 @@ class SetBase(RegexBase): # Is full case-folding possible? if (not (self.info.flags & UNICODE) or (self.case_flags & - FULLIGNORECASE) != - FULLIGNORECASE): + FULLIGNORECASE) != FULLIGNORECASE): return self # Get the characters which expand to multiple codepoints on folding. @@ -3345,16 +3579,17 @@ class SetDiff(SetBase): True): OP.SET_DIFF_IGN_REV} _op_name = "SET_DIFF" - def optimise(self, info, in_set=False): + def optimise(self, info, reverse, in_set=False): items = self.items if len(items) > 2: items = [items[0], SetUnion(info, items[1 : ])] if len(items) == 1: return items[0].with_flags(case_flags=self.case_flags, - zerowidth=self.zerowidth).optimise(info, in_set) + zerowidth=self.zerowidth).optimise(info, reverse, in_set) - self.items = tuple(m.optimise(info, in_set=True) for m in items) + self.items = tuple(m.optimise(info, reverse, in_set=True) for m in + items) return self._handle_case_folding(info, in_set) @@ -3370,10 +3605,10 @@ class SetInter(SetBase): (FULLIGNORECASE, True): OP.SET_INTER_IGN_REV} _op_name = "SET_INTER" - def optimise(self, info, in_set=False): + def optimise(self, info, reverse, in_set=False): items = [] for m in self.items: - m = m.optimise(info, in_set=True) + m = m.optimise(info, reverse, in_set=True) if isinstance(m, SetInter) and m.positive: # Intersection in intersection. items.extend(m.items) @@ -3382,7 +3617,7 @@ class SetInter(SetBase): if len(items) == 1: return items[0].with_flags(case_flags=self.case_flags, - zerowidth=self.zerowidth).optimise(info, in_set) + zerowidth=self.zerowidth).optimise(info, reverse, in_set) self.items = tuple(items) @@ -3400,10 +3635,10 @@ class SetSymDiff(SetBase): OP.SET_SYM_DIFF_REV, (FULLIGNORECASE, True): OP.SET_SYM_DIFF_IGN_REV} _op_name = "SET_SYM_DIFF" - def optimise(self, info, in_set=False): + def optimise(self, info, reverse, in_set=False): items = [] for m in self.items: - m = m.optimise(info, in_set=True) + m = m.optimise(info, reverse, in_set=True) if isinstance(m, SetSymDiff) and m.positive: # Symmetric difference in symmetric difference. items.extend(m.items) @@ -3412,7 +3647,7 @@ class SetSymDiff(SetBase): if len(items) == 1: return items[0].with_flags(case_flags=self.case_flags, - zerowidth=self.zerowidth).optimise(info, in_set) + zerowidth=self.zerowidth).optimise(info, reverse, in_set) self.items = tuple(items) @@ -3433,10 +3668,10 @@ class SetUnion(SetBase): (FULLIGNORECASE, True): OP.SET_UNION_IGN_REV} _op_name = "SET_UNION" - def optimise(self, info, in_set=False): + def optimise(self, info, reverse, in_set=False): items = [] for m in self.items: - m = m.optimise(info, in_set=True) + m = m.optimise(info, reverse, in_set=True) if isinstance(m, SetUnion) and m.positive: # Union in union. items.extend(m.items) @@ -3447,7 +3682,7 @@ class SetUnion(SetBase): i = items[0] return i.with_flags(positive=i.positive == self.positive, case_flags=self.case_flags, - zerowidth=self.zerowidth).optimise(info, in_set) + zerowidth=self.zerowidth).optimise(info, reverse, in_set) self.items = tuple(items) @@ -3491,6 +3726,10 @@ class SetUnion(SetBase): m = any(i.matches(ch) for i in self.items) return m == self.positive +class Skip(ZeroWidthBase): + _op_name = "SKIP" + _opcode = OP.SKIP + class StartOfLine(ZeroWidthBase): _opcode = OP.START_OF_LINE _op_name = "START_OF_LINE" @@ -3516,7 +3755,7 @@ class String(RegexBase): def __init__(self, characters, case_flags=NOCASE): self.characters = tuple(characters) - self.case_flags = case_flags + self.case_flags = CASE_FLAGS_COMBINATIONS[case_flags] if (self.case_flags & FULLIGNORECASE) == FULLIGNORECASE: folded_characters = [] @@ -3579,7 +3818,7 @@ class StringSet(RegexBase): def __init__(self, info, name, case_flags=NOCASE): self.info = info self.name = name - self.case_flags = case_flags + self.case_flags = CASE_FLAGS_COMBINATIONS[case_flags] self._key = self.__class__, self.name, self.case_flags @@ -3614,7 +3853,8 @@ class StringSet(RegexBase): branch = Branch(branches) else: branch = branches[0] - branch = branch.optimise(self.info).pack_characters(self.info) + branch = branch.optimise(self.info, + reverse).pack_characters(self.info) return branch.compile(reverse, fuzzy) else: @@ -3972,7 +4212,8 @@ def _check_group_features(info, parsed): # The pattern as a whole doesn't have the features we want, # so we'll need to make a copy of it with the desired # features. - additional_groups.append((parsed, reverse, fuzzy)) + additional_groups.append((CallRef(len(call_refs), parsed), + reverse, fuzzy)) else: # Calling a capture group. def_info = info.defined_groups[call.group] @@ -4024,7 +4265,8 @@ class Scanner: source.ignore_space = bool(info.flags & VERBOSE) parsed = _parse_pattern(source, info) if not source.at_end(): - raise error("unbalanced parenthesis", source.string, source.pos) + raise error("unbalanced parenthesis", source.string, + source.pos) # We want to forbid capture groups within each phrase. patterns.append(parsed.remove_captures()) @@ -4035,7 +4277,8 @@ class Scanner: parsed = Branch(patterns) # Optimise the compound pattern. - parsed = parsed.optimise(info) + reverse = bool(info.flags & REVERSE) + parsed = parsed.optimise(info, reverse) parsed = parsed.pack_characters(info) # Get the required string. @@ -4145,6 +4388,7 @@ POSITION_ESCAPES = { "A": StartOfString(), "b": Boundary(), "B": Boundary(False), + "K": Keep(), "m": StartOfWord(), "M": EndOfWord(), "Z": EndOfString(), @@ -4158,3 +4402,11 @@ WORD_POSITION_ESCAPES.update({ "m": DefaultStartOfWord(), "M": DefaultEndOfWord(), }) + +# Regex control verbs. +VERBS = { + "FAIL": Failure(), + "F": Failure(), + "PRUNE": Prune(), + "SKIP": Skip(), +} diff --git a/src/regex/_regex_unicode.c b/src/regex/_regex_unicode.c index 074acb8377..f470005756 100644 --- a/src/regex/_regex_unicode.c +++ b/src/regex/_regex_unicode.c @@ -1,4 +1,4 @@ -/* For Unicode version 7.0.0 */ +/* For Unicode version 9.0.0 */ #include "_regex_unicode.h" @@ -22,10 +22,14 @@ char* re_strings[] = { "0", "1", "1/10", + "1/12", "1/16", + "1/160", "1/2", + "1/20", "1/3", "1/4", + "1/40", "1/5", "1/6", "1/7", @@ -43,6 +47,7 @@ char* re_strings[] = { "103", "107", "11", + "11/12", "11/2", "118", "12", @@ -68,6 +73,7 @@ char* re_strings[] = { "200", "2000", "20000", + "200000", "202", "21", "214", @@ -95,13 +101,16 @@ char* re_strings[] = { "3", "3/16", "3/2", + "3/20", "3/4", "3/5", "3/8", + "3/80", "30", "300", "3000", "30000", + "300000", "31", "32", "33", @@ -117,6 +126,7 @@ char* re_strings[] = { "400", "4000", "40000", + "400000", "41", "42", "43", @@ -128,6 +138,7 @@ char* re_strings[] = { "48", "49", "5", + "5/12", "5/2", "5/6", "5/8", @@ -135,23 +146,28 @@ char* re_strings[] = { "500", "5000", "50000", + "500000", "6", "60", "600", "6000", "60000", + "600000", "7", + "7/12", "7/2", "7/8", "70", "700", "7000", "70000", + "700000", "8", "80", "800", "8000", "80000", + "800000", "84", "9", "9/2", @@ -159,14 +175,21 @@ char* re_strings[] = { "900", "9000", "90000", + "900000", "91", "A", "ABOVE", "ABOVELEFT", "ABOVERIGHT", + "ADLAM", + "ADLM", "AEGEANNUMBERS", + "AFRICANFEH", + "AFRICANNOON", + "AFRICANQAF", "AGHB", "AHEX", + "AHOM", "AI", "AIN", "AL", @@ -183,6 +206,7 @@ char* re_strings[] = { "ALPHANUMERIC", "AMBIGUOUS", "AN", + "ANATOLIANHIEROGLYPHS", "ANCIENTGREEKMUSIC", "ANCIENTGREEKMUSICALNOTATION", "ANCIENTGREEKNUMBERS", @@ -246,6 +270,8 @@ char* re_strings[] = { "BENG", "BENGALI", "BETH", + "BHAIKSUKI", + "BHKS", "BIDIC", "BIDICLASS", "BIDICONTROL", @@ -352,6 +378,8 @@ char* re_strings[] = { "CHANGESWHENUPPERCASED", "CHER", "CHEROKEE", + "CHEROKEESUP", + "CHEROKEESUPPLEMENT", "CI", "CIRCLE", "CJ", @@ -368,6 +396,7 @@ char* re_strings[] = { "CJKEXTB", "CJKEXTC", "CJKEXTD", + "CJKEXTE", "CJKRADICALSSUP", "CJKRADICALSSUPPLEMENT", "CJKSTROKES", @@ -378,6 +407,7 @@ char* re_strings[] = { "CJKUNIFIEDIDEOGRAPHSEXTENSIONB", "CJKUNIFIEDIDEOGRAPHSEXTENSIONC", "CJKUNIFIEDIDEOGRAPHSEXTENSIOND", + "CJKUNIFIEDIDEOGRAPHSEXTENSIONE", "CL", "CLOSE", "CLOSEPARENTHESIS", @@ -406,11 +436,14 @@ char* re_strings[] = { "CONSONANTDEAD", "CONSONANTFINAL", "CONSONANTHEADLETTER", + "CONSONANTKILLER", "CONSONANTMEDIAL", "CONSONANTPLACEHOLDER", "CONSONANTPRECEDINGREPHA", + "CONSONANTPREFIXED", "CONSONANTSUBJOINED", "CONSONANTSUCCEEDINGREPHA", + "CONSONANTWITHSTACKER", "CONTINGENTBREAK", "CONTROL", "CONTROLPICTURES", @@ -438,8 +471,10 @@ char* re_strings[] = { "CYRILLIC", "CYRILLICEXTA", "CYRILLICEXTB", + "CYRILLICEXTC", "CYRILLICEXTENDEDA", "CYRILLICEXTENDEDB", + "CYRILLICEXTENDEDC", "CYRILLICSUP", "CYRILLICSUPPLEMENT", "CYRILLICSUPPLEMENTARY", @@ -485,11 +520,18 @@ char* re_strings[] = { "DUPLOYAN", "E", "EA", + "EARLYDYNASTICCUNEIFORM", "EASTASIANWIDTH", + "EB", + "EBASE", + "EBASEGAZ", + "EBG", "EGYP", "EGYPTIANHIEROGLYPHS", "ELBA", "ELBASAN", + "EM", + "EMODIFIER", "EMOTICONS", "EN", "ENC", @@ -540,6 +582,7 @@ char* re_strings[] = { "FULLWIDTH", "GAF", "GAMAL", + "GAZ", "GC", "GCB", "GEMINATIONMARK", @@ -555,7 +598,10 @@ char* re_strings[] = { "GL", "GLAG", "GLAGOLITIC", + "GLAGOLITICSUP", + "GLAGOLITICSUPPLEMENT", "GLUE", + "GLUEAFTERZWJ", "GOTH", "GOTHIC", "GRAN", @@ -598,6 +644,8 @@ char* re_strings[] = { "HANI", "HANO", "HANUNOO", + "HATR", + "HATRAN", "HE", "HEBR", "HEBREW", @@ -613,9 +661,11 @@ char* re_strings[] = { "HIRA", "HIRAGANA", "HL", + "HLUW", "HMNG", "HRKT", "HST", + "HUNG", "HY", "HYPHEN", "ID", @@ -624,6 +674,8 @@ char* re_strings[] = { "IDEO", "IDEOGRAPHIC", "IDEOGRAPHICDESCRIPTIONCHARACTERS", + "IDEOGRAPHICSYMBOLS", + "IDEOGRAPHICSYMBOLSANDPUNCTUATION", "IDS", "IDSB", "IDSBINARYOPERATOR", @@ -632,15 +684,15 @@ char* re_strings[] = { "IDSTRINARYOPERATOR", "IMPERIALARAMAIC", "IN", - "INDICMATRACATEGORY", "INDICNUMBERFORMS", + "INDICPOSITIONALCATEGORY", "INDICSYLLABICCATEGORY", "INFIXNUMERIC", "INHERITED", "INIT", "INITIAL", "INITIALPUNCTUATION", - "INMC", + "INPC", "INSC", "INSCRIPTIONALPAHLAVI", "INSCRIPTIONALPARTHIAN", @@ -814,6 +866,8 @@ char* re_strings[] = { "MANICHAEANWAW", "MANICHAEANYODH", "MANICHAEANZAYIN", + "MARC", + "MARCHEN", "MARK", "MATH", "MATHALPHANUM", @@ -864,9 +918,13 @@ char* re_strings[] = { "MODIFYINGLETTER", "MONG", "MONGOLIAN", + "MONGOLIANSUP", + "MONGOLIANSUPPLEMENT", "MRO", "MROO", "MTEI", + "MULT", + "MULTANI", "MUSIC", "MUSICALSYMBOLS", "MYANMAR", @@ -888,6 +946,7 @@ char* re_strings[] = { "NCHAR", "ND", "NEUTRAL", + "NEWA", "NEWLINE", "NEWTAILUE", "NEXTLINE", @@ -933,6 +992,7 @@ char* re_strings[] = { "OIDS", "OLCHIKI", "OLCK", + "OLDHUNGARIAN", "OLDITALIC", "OLDNORTHARABIAN", "OLDPERMIC", @@ -950,6 +1010,8 @@ char* re_strings[] = { "ORKH", "ORNAMENTALDINGBATS", "ORYA", + "OSAGE", + "OSGE", "OSMA", "OSMANYA", "OTHER", @@ -983,6 +1045,7 @@ char* re_strings[] = { "PAUC", "PAUCINHAU", "PC", + "PCM", "PD", "PDF", "PDI", @@ -1016,6 +1079,7 @@ char* re_strings[] = { "PR", "PREFIXNUMERIC", "PREPEND", + "PREPENDEDCONCATENATIONMARK", "PRINT", "PRIVATEUSE", "PRIVATEUSEAREA", @@ -1077,9 +1141,11 @@ char* re_strings[] = { "SEGMENTSEPARATOR", "SEMKATH", "SENTENCEBREAK", + "SENTENCETERMINAL", "SEP", "SEPARATOR", "SG", + "SGNW", "SHARADA", "SHAVIAN", "SHAW", @@ -1088,6 +1154,7 @@ char* re_strings[] = { "SHRD", "SIDD", "SIDDHAM", + "SIGNWRITING", "SIND", "SINGLEQUOTE", "SINH", @@ -1133,14 +1200,18 @@ char* re_strings[] = { "SUPPLEMENTALARROWSC", "SUPPLEMENTALMATHEMATICALOPERATORS", "SUPPLEMENTALPUNCTUATION", + "SUPPLEMENTALSYMBOLSANDPICTOGRAPHS", "SUPPLEMENTARYPRIVATEUSEAREAA", "SUPPLEMENTARYPRIVATEUSEAREAB", "SUPPUAA", "SUPPUAB", "SUPPUNCTUATION", + "SUPSYMBOLSANDPICTOGRAPHS", "SURROGATE", + "SUTTONSIGNWRITING", "SWASHKAF", "SY", + "SYLLABLEMODIFIER", "SYLO", "SYLOTINAGRI", "SYMBOL", @@ -1164,6 +1235,9 @@ char* re_strings[] = { "TALU", "TAMIL", "TAML", + "TANG", + "TANGUT", + "TANGUTCOMPONENTS", "TAVT", "TAW", "TEHMARBUTA", @@ -1276,1545 +1350,1646 @@ char* re_strings[] = { "ZP", "ZS", "ZW", + "ZWJ", "ZWSPACE", "ZYYY", "ZZZZ", }; -/* strings: 11825 bytes. */ +/* strings: 12639 bytes. */ /* properties. */ RE_Property re_properties[] = { - { 525, 0, 0}, - { 522, 0, 0}, - { 238, 1, 1}, - { 237, 1, 1}, - {1052, 2, 2}, - {1050, 2, 2}, - {1224, 3, 3}, - {1219, 3, 3}, - { 544, 4, 4}, - { 523, 4, 4}, - {1058, 5, 5}, - {1049, 5, 5}, - { 797, 6, 6}, - { 159, 7, 6}, - { 158, 7, 6}, - { 741, 8, 6}, - { 740, 8, 6}, - {1192, 9, 6}, - {1191, 9, 6}, - { 280, 10, 6}, - { 282, 11, 6}, - { 334, 11, 6}, - { 329, 12, 6}, - { 412, 12, 6}, - { 331, 13, 6}, - { 414, 13, 6}, - { 330, 14, 6}, - { 413, 14, 6}, - { 327, 15, 6}, - { 410, 15, 6}, - { 328, 16, 6}, - { 411, 16, 6}, - { 610, 17, 6}, - { 606, 17, 6}, - { 602, 18, 6}, - { 601, 18, 6}, - {1232, 19, 6}, - {1231, 19, 6}, - {1230, 20, 6}, - {1229, 20, 6}, - { 437, 21, 6}, - { 445, 21, 6}, - { 545, 22, 6}, - { 553, 22, 6}, - { 543, 23, 6}, - { 547, 23, 6}, - { 546, 24, 6}, - { 554, 24, 6}, - {1220, 25, 6}, - {1227, 25, 6}, - {1086, 25, 6}, - { 230, 26, 6}, - { 228, 26, 6}, - { 645, 27, 6}, - { 643, 27, 6}, - { 430, 28, 6}, - { 599, 29, 6}, - {1015, 30, 6}, - {1012, 30, 6}, - {1153, 31, 6}, - {1152, 31, 6}, - { 942, 32, 6}, - { 923, 32, 6}, - { 588, 33, 6}, - { 587, 33, 6}, - { 190, 34, 6}, - { 148, 34, 6}, - { 935, 35, 6}, - { 905, 35, 6}, - { 604, 36, 6}, - { 603, 36, 6}, - { 447, 37, 6}, - { 446, 37, 6}, - { 501, 38, 6}, - { 499, 38, 6}, - { 941, 39, 6}, - { 922, 39, 6}, - { 947, 40, 6}, - { 948, 40, 6}, - { 881, 41, 6}, - { 867, 41, 6}, - { 937, 42, 6}, - { 910, 42, 6}, - { 608, 43, 6}, - { 607, 43, 6}, - { 611, 44, 6}, - { 609, 44, 6}, - {1017, 45, 6}, - {1188, 46, 6}, - {1184, 46, 6}, - { 936, 47, 6}, - { 907, 47, 6}, - { 439, 48, 6}, - { 438, 48, 6}, - {1082, 49, 6}, - {1053, 49, 6}, - { 739, 50, 6}, - { 738, 50, 6}, - { 939, 51, 6}, - { 912, 51, 6}, - { 938, 52, 6}, - { 911, 52, 6}, - {1095, 53, 6}, - {1197, 54, 6}, - {1213, 54, 6}, - { 960, 55, 6}, - { 961, 55, 6}, - { 959, 56, 6}, - { 958, 56, 6}, - { 576, 57, 7}, - { 597, 57, 7}, - { 229, 58, 8}, - { 220, 58, 8}, - { 274, 59, 9}, - { 286, 59, 9}, - { 436, 60, 10}, - { 461, 60, 10}, - { 467, 61, 11}, - { 466, 61, 11}, - { 647, 62, 12}, - { 641, 62, 12}, - { 648, 63, 13}, - { 649, 63, 13}, - { 731, 64, 14}, - { 706, 64, 14}, - { 900, 65, 15}, - { 893, 65, 15}, - { 901, 66, 16}, - { 903, 66, 16}, - { 232, 67, 6}, - { 231, 67, 6}, - { 614, 68, 17}, - { 622, 68, 17}, - { 616, 69, 18}, - { 623, 69, 18}, - { 162, 70, 6}, - { 157, 70, 6}, - { 169, 71, 6}, - { 236, 72, 6}, - { 542, 73, 6}, - { 998, 74, 6}, - {1223, 75, 6}, - {1228, 76, 6}, - { 990, 77, 6}, - { 989, 78, 6}, - { 991, 79, 6}, - { 992, 80, 6}, + { 568, 0, 0}, + { 565, 0, 0}, + { 264, 1, 1}, + { 263, 1, 1}, + {1116, 2, 2}, + {1114, 2, 2}, + {1298, 3, 3}, + {1293, 3, 3}, + { 590, 4, 4}, + { 566, 4, 4}, + {1122, 5, 5}, + {1113, 5, 5}, + { 851, 6, 6}, + { 182, 7, 6}, + { 181, 7, 6}, + { 793, 8, 6}, + { 792, 8, 6}, + {1266, 9, 6}, + {1265, 9, 6}, + { 306, 10, 6}, + { 308, 11, 6}, + { 362, 11, 6}, + { 355, 12, 6}, + { 445, 12, 6}, + { 357, 13, 6}, + { 447, 13, 6}, + { 356, 14, 6}, + { 446, 14, 6}, + { 353, 15, 6}, + { 443, 15, 6}, + { 354, 16, 6}, + { 444, 16, 6}, + { 662, 17, 6}, + { 658, 17, 6}, + { 652, 18, 6}, + { 651, 18, 6}, + {1306, 19, 6}, + {1305, 19, 6}, + {1304, 20, 6}, + {1303, 20, 6}, + { 472, 21, 6}, + { 480, 21, 6}, + { 591, 22, 6}, + { 599, 22, 6}, + { 589, 23, 6}, + { 593, 23, 6}, + { 592, 24, 6}, + { 600, 24, 6}, + {1294, 25, 6}, + {1301, 25, 6}, + {1153, 25, 6}, + { 256, 26, 6}, + { 254, 26, 6}, + { 697, 27, 6}, + { 695, 27, 6}, + { 465, 28, 6}, + { 649, 29, 6}, + {1079, 30, 6}, + {1076, 30, 6}, + {1227, 31, 6}, + {1226, 31, 6}, + {1004, 32, 6}, + { 983, 32, 6}, + { 636, 33, 6}, + { 635, 33, 6}, + { 214, 34, 6}, + { 170, 34, 6}, + { 997, 35, 6}, + { 964, 35, 6}, + { 654, 36, 6}, + { 653, 36, 6}, + { 482, 37, 6}, + { 481, 37, 6}, + { 543, 38, 6}, + { 541, 38, 6}, + {1003, 39, 6}, + { 982, 39, 6}, + {1009, 40, 6}, + {1010, 40, 6}, + { 940, 41, 6}, + { 925, 41, 6}, + { 999, 42, 6}, + { 969, 42, 6}, + { 660, 43, 6}, + { 659, 43, 6}, + { 663, 44, 6}, + { 661, 44, 6}, + {1081, 45, 6}, + {1262, 46, 6}, + {1258, 46, 6}, + { 998, 47, 6}, + { 966, 47, 6}, + { 474, 48, 6}, + { 473, 48, 6}, + {1149, 49, 6}, + {1117, 49, 6}, + { 791, 50, 6}, + { 790, 50, 6}, + {1001, 51, 6}, + { 971, 51, 6}, + {1000, 52, 6}, + { 970, 52, 6}, + {1123, 53, 6}, + {1162, 53, 6}, + {1271, 54, 6}, + {1287, 54, 6}, + {1022, 55, 6}, + {1023, 55, 6}, + {1021, 56, 6}, + {1020, 56, 6}, + {1061, 57, 6}, + {1027, 57, 6}, + { 622, 58, 7}, + { 646, 58, 7}, + { 255, 59, 8}, + { 244, 59, 8}, + { 300, 60, 9}, + { 312, 60, 9}, + { 471, 61, 10}, + { 496, 61, 10}, + { 503, 62, 11}, + { 501, 62, 11}, + { 699, 63, 12}, + { 693, 63, 12}, + { 700, 64, 13}, + { 701, 64, 13}, + { 783, 65, 14}, + { 758, 65, 14}, + { 959, 66, 15}, + { 952, 66, 15}, + { 960, 67, 16}, + { 962, 67, 16}, + { 258, 68, 6}, + { 257, 68, 6}, + { 667, 69, 17}, + { 674, 69, 17}, + { 668, 70, 18}, + { 675, 70, 18}, + { 185, 71, 6}, + { 180, 71, 6}, + { 193, 72, 6}, + { 262, 73, 6}, + { 588, 74, 6}, + {1062, 75, 6}, + {1297, 76, 6}, + {1302, 77, 6}, + {1053, 78, 6}, + {1052, 79, 6}, + {1054, 80, 6}, + {1055, 81, 6}, }; -/* properties: 588 bytes. */ +/* properties: 600 bytes. */ /* property values. */ RE_PropertyValue re_property_values[] = { - {1185, 0, 0}, - { 365, 0, 0}, - {1193, 0, 1}, - { 748, 0, 1}, - { 742, 0, 2}, - { 735, 0, 2}, - {1165, 0, 3}, - { 747, 0, 3}, - { 839, 0, 4}, - { 736, 0, 4}, - { 940, 0, 5}, - { 737, 0, 5}, - { 885, 0, 6}, - { 837, 0, 6}, - { 483, 0, 7}, - { 805, 0, 7}, - {1088, 0, 8}, - { 804, 0, 8}, - { 435, 0, 9}, - { 868, 0, 9}, - { 452, 0, 9}, - { 721, 0, 10}, - { 876, 0, 10}, - { 944, 0, 11}, - { 877, 0, 11}, - {1087, 0, 12}, - {1256, 0, 12}, - { 733, 0, 13}, - {1254, 0, 13}, - { 957, 0, 14}, - {1255, 0, 14}, - { 394, 0, 15}, - { 285, 0, 15}, - { 366, 0, 15}, - { 515, 0, 16}, - { 324, 0, 16}, - { 999, 0, 17}, - { 367, 0, 17}, - {1120, 0, 18}, - { 404, 0, 18}, - { 431, 0, 19}, - { 965, 0, 19}, - { 926, 0, 20}, - {1002, 0, 20}, - { 363, 0, 21}, - { 968, 0, 21}, - { 383, 0, 22}, - { 964, 0, 22}, - { 945, 0, 23}, - { 986, 0, 23}, - { 802, 0, 24}, - {1076, 0, 24}, - { 408, 0, 25}, - {1050, 0, 25}, - { 841, 0, 26}, - {1075, 0, 26}, - { 946, 0, 27}, - {1081, 0, 27}, - { 621, 0, 28}, - { 983, 0, 28}, - { 510, 0, 29}, - { 970, 0, 29}, - { 934, 0, 30}, - { 267, 0, 30}, - { 268, 0, 30}, - { 719, 0, 31}, - { 682, 0, 31}, - { 683, 0, 31}, - { 796, 0, 32}, - { 757, 0, 32}, - { 374, 0, 32}, - { 758, 0, 32}, - { 896, 0, 33}, - { 857, 0, 33}, - { 858, 0, 33}, - {1006, 0, 34}, - { 952, 0, 34}, - {1005, 0, 34}, - { 953, 0, 34}, - {1125, 0, 35}, - {1039, 0, 35}, - {1040, 0, 35}, - {1060, 0, 36}, - {1249, 0, 36}, - {1250, 0, 36}, - { 281, 0, 37}, - { 707, 0, 37}, - { 191, 0, 38}, - { 878, 1, 0}, - { 865, 1, 0}, - { 214, 1, 1}, - { 189, 1, 1}, - { 692, 1, 2}, - { 691, 1, 2}, - { 690, 1, 2}, - { 699, 1, 3}, - { 693, 1, 3}, - { 701, 1, 4}, - { 695, 1, 4}, - { 631, 1, 5}, - { 630, 1, 5}, - {1089, 1, 6}, - { 840, 1, 6}, - { 369, 1, 7}, - { 448, 1, 7}, - { 549, 1, 8}, - { 548, 1, 8}, - { 417, 1, 9}, - { 423, 1, 10}, - { 422, 1, 10}, - { 424, 1, 10}, - { 185, 1, 11}, - { 582, 1, 12}, - { 172, 1, 13}, - {1127, 1, 14}, - { 184, 1, 15}, - { 183, 1, 15}, - {1158, 1, 16}, - { 874, 1, 17}, - {1044, 1, 18}, - { 765, 1, 19}, - { 174, 1, 20}, - { 173, 1, 20}, - { 442, 1, 21}, - { 226, 1, 22}, - { 557, 1, 23}, - { 555, 1, 24}, - { 928, 1, 25}, - {1144, 1, 26}, - {1151, 1, 27}, - { 662, 1, 28}, - { 763, 1, 29}, - {1073, 1, 30}, - {1159, 1, 31}, - { 687, 1, 32}, - {1160, 1, 33}, - { 851, 1, 34}, - { 531, 1, 35}, - { 572, 1, 36}, - { 636, 1, 36}, - { 487, 1, 37}, - { 493, 1, 38}, - { 492, 1, 38}, - { 333, 1, 39}, - {1186, 1, 40}, - {1180, 1, 40}, - { 272, 1, 40}, - { 909, 1, 41}, - {1037, 1, 42}, - {1130, 1, 43}, - { 579, 1, 44}, - { 263, 1, 45}, - {1132, 1, 46}, - { 672, 1, 47}, - { 845, 1, 48}, - {1187, 1, 49}, - {1181, 1, 49}, - { 724, 1, 50}, - {1135, 1, 51}, - { 871, 1, 52}, - { 673, 1, 53}, - { 261, 1, 54}, - {1136, 1, 55}, - { 370, 1, 56}, - { 449, 1, 56}, - { 209, 1, 57}, - {1099, 1, 58}, - { 217, 1, 59}, - { 718, 1, 60}, - { 913, 1, 61}, - {1101, 1, 62}, - {1100, 1, 62}, - {1201, 1, 63}, - {1200, 1, 63}, - { 980, 1, 64}, - { 979, 1, 64}, - { 981, 1, 65}, - { 982, 1, 65}, - { 372, 1, 66}, - { 451, 1, 66}, - { 700, 1, 67}, - { 694, 1, 67}, - { 551, 1, 68}, - { 550, 1, 68}, - { 526, 1, 69}, - {1006, 1, 69}, - {1108, 1, 70}, - {1107, 1, 70}, - { 409, 1, 71}, - { 371, 1, 72}, - { 450, 1, 72}, - { 375, 1, 72}, - { 720, 1, 73}, - { 897, 1, 74}, - { 188, 1, 75}, - { 800, 1, 76}, - { 801, 1, 76}, - { 829, 1, 77}, - { 834, 1, 77}, - { 395, 1, 78}, - { 927, 1, 79}, - { 906, 1, 79}, - { 476, 1, 80}, - { 475, 1, 80}, - { 248, 1, 81}, - { 239, 1, 82}, - { 527, 1, 83}, - { 826, 1, 84}, - { 833, 1, 84}, - { 453, 1, 85}, - { 824, 1, 86}, - { 830, 1, 86}, - {1110, 1, 87}, - {1103, 1, 87}, - { 255, 1, 88}, - { 254, 1, 88}, - {1111, 1, 89}, - {1104, 1, 89}, - { 825, 1, 90}, - { 831, 1, 90}, - {1113, 1, 91}, - {1109, 1, 91}, - { 827, 1, 92}, - { 823, 1, 92}, - { 536, 1, 93}, - { 702, 1, 94}, - { 696, 1, 94}, - { 397, 1, 95}, - { 533, 1, 96}, - { 532, 1, 96}, - {1162, 1, 97}, - { 490, 1, 98}, - { 488, 1, 98}, - { 420, 1, 99}, - { 418, 1, 99}, - {1114, 1, 100}, - {1119, 1, 100}, - { 351, 1, 101}, - { 350, 1, 101}, - { 661, 1, 102}, - { 660, 1, 102}, - { 605, 1, 103}, - { 601, 1, 103}, - { 354, 1, 104}, - { 353, 1, 104}, - { 593, 1, 105}, - { 664, 1, 106}, - { 242, 1, 107}, - { 571, 1, 108}, - { 380, 1, 108}, - { 659, 1, 109}, - { 244, 1, 110}, - { 243, 1, 110}, - { 352, 1, 111}, - { 667, 1, 112}, - { 665, 1, 112}, - { 480, 1, 113}, - { 479, 1, 113}, - { 340, 1, 114}, - { 338, 1, 114}, - { 356, 1, 115}, - { 346, 1, 115}, - {1244, 1, 116}, - {1243, 1, 116}, - { 355, 1, 117}, - { 337, 1, 117}, - {1246, 1, 118}, - {1245, 1, 119}, - { 734, 1, 120}, - {1195, 1, 121}, - { 421, 1, 122}, - { 419, 1, 122}, - { 211, 1, 123}, - { 842, 1, 124}, - { 703, 1, 125}, - { 697, 1, 125}, - {1124, 1, 126}, - { 377, 1, 127}, - { 615, 1, 127}, - { 972, 1, 128}, - {1048, 1, 129}, - { 444, 1, 130}, - { 443, 1, 130}, - { 668, 1, 131}, - {1021, 1, 132}, - { 573, 1, 133}, - { 637, 1, 133}, - { 640, 1, 134}, - { 855, 1, 135}, - { 853, 1, 135}, - { 326, 1, 136}, - { 854, 1, 137}, - { 852, 1, 137}, - {1137, 1, 138}, - { 811, 1, 139}, - { 810, 1, 139}, - { 491, 1, 140}, - { 489, 1, 140}, - { 704, 1, 141}, - { 698, 1, 141}, - { 809, 1, 142}, - { 575, 1, 143}, - { 570, 1, 143}, - { 574, 1, 144}, - { 638, 1, 144}, - { 591, 1, 145}, - { 589, 1, 146}, - { 590, 1, 146}, - { 743, 1, 147}, - {1000, 1, 148}, - {1004, 1, 148}, - { 999, 1, 148}, - { 342, 1, 149}, - { 344, 1, 149}, - { 161, 1, 150}, - { 160, 1, 150}, - { 181, 1, 151}, - { 179, 1, 151}, - {1198, 1, 152}, - {1213, 1, 152}, - {1204, 1, 153}, - { 373, 1, 154}, - { 564, 1, 154}, - { 341, 1, 155}, - { 339, 1, 155}, - {1079, 1, 156}, - {1078, 1, 156}, - { 182, 1, 157}, - { 180, 1, 157}, - { 566, 1, 158}, - { 563, 1, 158}, - {1090, 1, 159}, - { 730, 1, 160}, - { 729, 1, 161}, - { 146, 1, 162}, - { 167, 1, 163}, - { 168, 1, 164}, - { 974, 1, 165}, - { 973, 1, 165}, - { 754, 1, 166}, - { 278, 1, 167}, - { 398, 1, 168}, - { 915, 1, 169}, - { 539, 1, 170}, - { 917, 1, 171}, - {1183, 1, 172}, - { 918, 1, 173}, - { 440, 1, 174}, - {1063, 1, 175}, - { 933, 1, 176}, - { 471, 1, 177}, - { 283, 1, 178}, - { 727, 1, 179}, - { 416, 1, 180}, - { 612, 1, 181}, - { 956, 1, 182}, - { 860, 1, 183}, - { 978, 1, 184}, - { 756, 1, 185}, - { 817, 1, 186}, - { 816, 1, 187}, - { 671, 1, 188}, - { 919, 1, 189}, - { 916, 1, 190}, - { 768, 1, 191}, - { 203, 1, 192}, - { 625, 1, 193}, - { 624, 1, 194}, - {1003, 1, 195}, - { 920, 1, 196}, - {1036, 1, 197}, - {1035, 1, 197}, - { 251, 1, 198}, - { 653, 1, 199}, - {1084, 1, 200}, - { 325, 1, 201}, - { 759, 1, 202}, - {1062, 1, 203}, - {1074, 1, 204}, - { 676, 1, 205}, - { 677, 1, 206}, - { 541, 1, 207}, - {1164, 1, 208}, - {1069, 1, 209}, - { 838, 1, 210}, - {1141, 1, 211}, - {1217, 1, 212}, - { 963, 1, 213}, - { 405, 1, 214}, - { 407, 1, 215}, - { 406, 1, 215}, - { 469, 1, 216}, - { 213, 1, 217}, - { 212, 1, 217}, - { 846, 1, 218}, - { 216, 1, 219}, - { 954, 1, 220}, - { 818, 1, 221}, - { 657, 1, 222}, - { 656, 1, 222}, - { 464, 1, 223}, - {1066, 1, 224}, - { 266, 1, 225}, - { 265, 1, 225}, - { 850, 1, 226}, - { 849, 1, 226}, - { 166, 1, 227}, - { 165, 1, 227}, - {1139, 1, 228}, - {1138, 1, 228}, - { 400, 1, 229}, - { 399, 1, 229}, - { 799, 1, 230}, - { 798, 1, 230}, - { 813, 1, 231}, - { 177, 1, 232}, - { 176, 1, 232}, - { 762, 1, 233}, - { 761, 1, 233}, - { 455, 1, 234}, - { 454, 1, 234}, - { 984, 1, 235}, - { 477, 1, 236}, - { 478, 1, 236}, - { 482, 1, 237}, - { 481, 1, 237}, - { 828, 1, 238}, - { 832, 1, 238}, - { 472, 1, 239}, - { 930, 1, 240}, - {1177, 1, 241}, - {1176, 1, 241}, - { 154, 1, 242}, - { 153, 1, 242}, - { 529, 1, 243}, - { 528, 1, 243}, - {1112, 1, 244}, - {1105, 1, 244}, - { 357, 1, 245}, - { 347, 1, 245}, - { 358, 1, 246}, - { 348, 1, 246}, - { 359, 1, 247}, - { 349, 1, 247}, - { 343, 1, 248}, - { 345, 1, 248}, - {1133, 1, 249}, - {1199, 1, 250}, - {1214, 1, 250}, - {1115, 1, 251}, - {1117, 1, 251}, - {1116, 1, 252}, - {1118, 1, 252}, - {1189, 2, 0}, - {1260, 2, 0}, - { 376, 2, 1}, - {1259, 2, 1}, - { 689, 2, 2}, - { 705, 2, 2}, - { 548, 2, 3}, - { 552, 2, 3}, - { 417, 2, 4}, - { 425, 2, 4}, - { 185, 2, 5}, - { 187, 2, 5}, - { 582, 2, 6}, - { 581, 2, 6}, - { 172, 2, 7}, - { 171, 2, 7}, - {1127, 2, 8}, - {1126, 2, 8}, - {1158, 2, 9}, - {1157, 2, 9}, - { 442, 2, 10}, - { 441, 2, 10}, - { 226, 2, 11}, - { 225, 2, 11}, - { 557, 2, 12}, - { 558, 2, 12}, - { 555, 2, 13}, - { 556, 2, 13}, - { 928, 2, 14}, - { 931, 2, 14}, - {1144, 2, 15}, - {1145, 2, 15}, - {1151, 2, 16}, - {1150, 2, 16}, - { 662, 2, 17}, - { 678, 2, 17}, - { 763, 2, 18}, - { 836, 2, 18}, - {1073, 2, 19}, - {1072, 2, 19}, - {1159, 2, 20}, - { 687, 2, 21}, - { 688, 2, 21}, - {1160, 2, 22}, - {1161, 2, 22}, - { 851, 2, 23}, - { 856, 2, 23}, - { 531, 2, 24}, - { 530, 2, 24}, - { 570, 2, 25}, - { 569, 2, 25}, - { 487, 2, 26}, - { 486, 2, 26}, - { 333, 2, 27}, - { 332, 2, 27}, - { 271, 2, 28}, - { 275, 2, 28}, - { 909, 2, 29}, - { 908, 2, 29}, - {1037, 2, 30}, - {1038, 2, 30}, - { 672, 2, 31}, - { 674, 2, 31}, - { 845, 2, 32}, - { 844, 2, 32}, - { 593, 2, 33}, - { 592, 2, 33}, - { 664, 2, 34}, - { 655, 2, 34}, - { 242, 2, 35}, - { 241, 2, 35}, - { 568, 2, 36}, - { 577, 2, 36}, - {1241, 2, 37}, - {1242, 2, 37}, - { 915, 2, 38}, - { 635, 2, 38}, - { 539, 2, 39}, - { 538, 2, 39}, - { 440, 2, 40}, - { 460, 2, 40}, - { 618, 2, 41}, - {1253, 2, 41}, - {1009, 2, 41}, - {1130, 2, 42}, - {1156, 2, 42}, - { 579, 2, 43}, - { 578, 2, 43}, - { 263, 2, 44}, - { 262, 2, 44}, - {1132, 2, 45}, - {1131, 2, 45}, - { 724, 2, 46}, - { 723, 2, 46}, - {1135, 2, 47}, - {1142, 2, 47}, - { 728, 2, 48}, - { 726, 2, 48}, - {1183, 2, 49}, - {1182, 2, 49}, - {1063, 2, 50}, - {1064, 2, 50}, - { 933, 2, 51}, - { 932, 2, 51}, - { 415, 2, 52}, - { 402, 2, 52}, - { 254, 2, 53}, - { 253, 2, 53}, - { 261, 2, 54}, - { 260, 2, 54}, - { 397, 2, 55}, - { 396, 2, 55}, - {1008, 2, 55}, - { 871, 2, 56}, - {1143, 2, 56}, - { 536, 2, 57}, - { 535, 2, 57}, - {1162, 2, 58}, - {1155, 2, 58}, - {1124, 2, 59}, - {1123, 2, 59}, - { 918, 2, 60}, - {1233, 2, 60}, - { 671, 2, 61}, - { 670, 2, 61}, - { 209, 2, 62}, - { 208, 2, 62}, - { 405, 2, 63}, - {1234, 2, 63}, - { 978, 2, 64}, - { 977, 2, 64}, - { 972, 2, 65}, - { 971, 2, 65}, - { 874, 2, 66}, - { 875, 2, 66}, - {1099, 2, 67}, - {1098, 2, 67}, - { 718, 2, 68}, - { 717, 2, 68}, - { 913, 2, 69}, - { 914, 2, 69}, - {1195, 2, 70}, - {1196, 2, 70}, - {1048, 2, 71}, - {1047, 2, 71}, - { 668, 2, 72}, - { 654, 2, 72}, - {1021, 2, 73}, - {1030, 2, 73}, - { 754, 2, 74}, - { 753, 2, 74}, - { 278, 2, 75}, - { 277, 2, 75}, - { 756, 2, 76}, - { 755, 2, 76}, - { 326, 2, 77}, - {1136, 2, 78}, - { 686, 2, 78}, - {1137, 2, 79}, - {1146, 2, 79}, - { 203, 2, 80}, - { 204, 2, 80}, - { 469, 2, 81}, - { 468, 2, 81}, - {1044, 2, 82}, - {1045, 2, 82}, - { 734, 2, 83}, - { 211, 2, 84}, - { 210, 2, 84}, - { 640, 2, 85}, - { 639, 2, 85}, - { 809, 2, 86}, - { 848, 2, 86}, - { 612, 2, 87}, - { 186, 2, 87}, - { 919, 2, 88}, - {1046, 2, 88}, - { 625, 2, 89}, - {1001, 2, 89}, - { 624, 2, 90}, - { 975, 2, 90}, - { 920, 2, 91}, - { 929, 2, 91}, - { 653, 2, 92}, - { 680, 2, 92}, - { 217, 2, 93}, - { 218, 2, 93}, - { 251, 2, 94}, - { 250, 2, 94}, - { 765, 2, 95}, - { 764, 2, 95}, - { 325, 2, 96}, - { 269, 2, 96}, - { 816, 2, 97}, - { 814, 2, 97}, - { 817, 2, 98}, - { 815, 2, 98}, - { 818, 2, 99}, - { 985, 2, 99}, - {1062, 2, 100}, - {1067, 2, 100}, - {1084, 2, 101}, - {1083, 2, 101}, - {1141, 2, 102}, - {1140, 2, 102}, - { 283, 2, 103}, - { 147, 2, 103}, - { 216, 2, 104}, - { 215, 2, 104}, - { 464, 2, 105}, - { 463, 2, 105}, - { 471, 2, 106}, - { 470, 2, 106}, - { 541, 2, 107}, - { 540, 2, 107}, - { 954, 2, 108}, - { 595, 2, 108}, - { 676, 2, 109}, - { 675, 2, 109}, - { 727, 2, 110}, - { 725, 2, 110}, - { 759, 2, 111}, - { 760, 2, 111}, - { 768, 2, 112}, - { 767, 2, 112}, - { 813, 2, 113}, - { 812, 2, 113}, - { 838, 2, 114}, - { 846, 2, 115}, - { 847, 2, 115}, - { 916, 2, 116}, - { 863, 2, 116}, - { 860, 2, 117}, - { 866, 2, 117}, - { 956, 2, 118}, - { 955, 2, 118}, - { 963, 2, 119}, - { 962, 2, 119}, - { 917, 2, 120}, - { 969, 2, 120}, - {1003, 2, 121}, - { 976, 2, 121}, - {1069, 2, 122}, - {1068, 2, 122}, - { 677, 2, 123}, - {1070, 2, 123}, - {1164, 2, 124}, - {1163, 2, 124}, - {1217, 2, 125}, - {1216, 2, 125}, - { 666, 2, 126}, - { 596, 2, 126}, - { 934, 3, 0}, - {1235, 3, 0}, - { 458, 3, 1}, - { 459, 3, 1}, - {1071, 3, 2}, - {1091, 3, 2}, - { 583, 3, 3}, - { 594, 3, 3}, - { 403, 3, 4}, - { 722, 3, 5}, - { 870, 3, 6}, - { 876, 3, 6}, - { 500, 3, 7}, - {1018, 3, 8}, - {1023, 3, 8}, - { 515, 3, 9}, - { 513, 3, 9}, - { 664, 3, 10}, - { 651, 3, 10}, - { 156, 3, 11}, - { 708, 3, 11}, - { 819, 3, 12}, - { 835, 3, 12}, - { 820, 3, 13}, - { 837, 3, 13}, - { 821, 3, 14}, - { 803, 3, 14}, - { 899, 3, 15}, - { 894, 3, 15}, - { 502, 3, 16}, - { 497, 3, 16}, - { 934, 4, 0}, - {1235, 4, 0}, - { 403, 4, 1}, - { 722, 4, 2}, - { 394, 4, 3}, - { 365, 4, 3}, - { 500, 4, 4}, - { 497, 4, 4}, - {1018, 4, 5}, - {1023, 4, 5}, - {1088, 4, 6}, - {1076, 4, 6}, - { 682, 4, 7}, - {1194, 4, 8}, - {1129, 4, 9}, - { 749, 4, 10}, - { 751, 4, 11}, - { 997, 4, 12}, - { 994, 4, 12}, - { 934, 5, 0}, - {1235, 5, 0}, - { 403, 5, 1}, - { 722, 5, 2}, - { 500, 5, 3}, - { 497, 5, 3}, - {1059, 5, 4}, - {1054, 5, 4}, - { 515, 5, 5}, - { 513, 5, 5}, - {1085, 5, 6}, - { 740, 5, 7}, - { 737, 5, 7}, - {1191, 5, 8}, - {1190, 5, 8}, - { 921, 5, 9}, - { 708, 5, 9}, - { 899, 5, 10}, - { 894, 5, 10}, - { 197, 5, 11}, - { 192, 5, 11}, - {1095, 5, 12}, - {1094, 5, 12}, - { 361, 5, 13}, - { 360, 5, 13}, - {1051, 5, 14}, - {1050, 5, 14}, - { 877, 6, 0}, - { 857, 6, 0}, - { 503, 6, 0}, - { 504, 6, 0}, - {1240, 6, 1}, - {1236, 6, 1}, - {1129, 6, 1}, - {1178, 6, 1}, - { 888, 7, 0}, - { 859, 7, 0}, - { 709, 7, 1}, - { 682, 7, 1}, - {1211, 7, 2}, - {1194, 7, 2}, - {1174, 7, 3}, - {1129, 7, 3}, - { 750, 7, 4}, - { 749, 7, 4}, - { 752, 7, 5}, - { 751, 7, 5}, - { 713, 8, 0}, - { 682, 8, 0}, - {1026, 8, 1}, - {1016, 8, 1}, - { 494, 8, 2}, - { 473, 8, 2}, - { 495, 8, 3}, - { 484, 8, 3}, - { 496, 8, 4}, - { 485, 8, 4}, - { 178, 8, 5}, - { 164, 8, 5}, - { 378, 8, 6}, - { 404, 8, 6}, - { 957, 8, 7}, - { 205, 8, 7}, - {1056, 8, 8}, - {1039, 8, 8}, - {1220, 8, 9}, - {1226, 8, 9}, - { 943, 8, 10}, - { 924, 8, 10}, - { 247, 8, 11}, - { 240, 8, 11}, - { 885, 8, 12}, - { 892, 8, 12}, - { 175, 8, 13}, - { 151, 8, 13}, - { 716, 8, 14}, - { 746, 8, 14}, - {1029, 8, 15}, - {1033, 8, 15}, - { 714, 8, 16}, - { 744, 8, 16}, - {1027, 8, 17}, - {1031, 8, 17}, - { 987, 8, 18}, - { 966, 8, 18}, - { 715, 8, 19}, - { 745, 8, 19}, - {1028, 8, 20}, - {1032, 8, 20}, - { 512, 8, 21}, - { 518, 8, 21}, - { 988, 8, 22}, - { 967, 8, 22}, - { 889, 9, 0}, + {1259, 0, 0}, + { 395, 0, 0}, + {1267, 0, 1}, + { 800, 0, 1}, + { 794, 0, 2}, + { 787, 0, 2}, + {1239, 0, 3}, + { 799, 0, 3}, + { 893, 0, 4}, + { 788, 0, 4}, + {1002, 0, 5}, + { 789, 0, 5}, + { 944, 0, 6}, + { 891, 0, 6}, + { 525, 0, 7}, + { 859, 0, 7}, + {1155, 0, 8}, + { 858, 0, 8}, + { 470, 0, 9}, + { 926, 0, 9}, + { 487, 0, 9}, + { 773, 0, 10}, + { 935, 0, 10}, + {1006, 0, 11}, + { 936, 0, 11}, + {1154, 0, 12}, + {1330, 0, 12}, + { 785, 0, 13}, + {1328, 0, 13}, + {1019, 0, 14}, + {1329, 0, 14}, + { 427, 0, 15}, + { 311, 0, 15}, + { 396, 0, 15}, + { 557, 0, 16}, + { 350, 0, 16}, + {1063, 0, 17}, + { 397, 0, 17}, + {1189, 0, 18}, + { 437, 0, 18}, + { 466, 0, 19}, + {1028, 0, 19}, + { 986, 0, 20}, + {1066, 0, 20}, + { 393, 0, 21}, + {1031, 0, 21}, + { 413, 0, 22}, + {1026, 0, 22}, + {1007, 0, 23}, + {1049, 0, 23}, + { 856, 0, 24}, + {1143, 0, 24}, + { 441, 0, 25}, + {1114, 0, 25}, + { 895, 0, 26}, + {1142, 0, 26}, + {1008, 0, 27}, + {1148, 0, 27}, + { 673, 0, 28}, + {1046, 0, 28}, + { 552, 0, 29}, + {1033, 0, 29}, + { 996, 0, 30}, + { 293, 0, 30}, + { 294, 0, 30}, + { 771, 0, 31}, + { 734, 0, 31}, + { 735, 0, 31}, + { 850, 0, 32}, + { 809, 0, 32}, + { 404, 0, 32}, + { 810, 0, 32}, + { 955, 0, 33}, + { 915, 0, 33}, + { 916, 0, 33}, + {1070, 0, 34}, + {1014, 0, 34}, + {1069, 0, 34}, + {1015, 0, 34}, + {1196, 0, 35}, + {1103, 0, 35}, + {1104, 0, 35}, + {1125, 0, 36}, + {1323, 0, 36}, + {1324, 0, 36}, + { 307, 0, 37}, + { 759, 0, 37}, + { 215, 0, 38}, + { 937, 1, 0}, + { 923, 1, 0}, + { 238, 1, 1}, + { 213, 1, 1}, + { 744, 1, 2}, + { 743, 1, 2}, + { 742, 1, 2}, + { 751, 1, 3}, + { 745, 1, 3}, + { 753, 1, 4}, + { 747, 1, 4}, + { 683, 1, 5}, + { 682, 1, 5}, + {1156, 1, 6}, + { 894, 1, 6}, + { 399, 1, 7}, + { 483, 1, 7}, + { 595, 1, 8}, + { 594, 1, 8}, + { 450, 1, 9}, + { 458, 1, 10}, + { 457, 1, 10}, + { 459, 1, 10}, + { 209, 1, 11}, + { 630, 1, 12}, + { 196, 1, 13}, + {1198, 1, 14}, + { 208, 1, 15}, + { 207, 1, 15}, + {1232, 1, 16}, + { 933, 1, 17}, + {1108, 1, 18}, + { 817, 1, 19}, + { 198, 1, 20}, + { 197, 1, 20}, + { 477, 1, 21}, + { 250, 1, 22}, + { 603, 1, 23}, + { 601, 1, 24}, + { 988, 1, 25}, + {1215, 1, 26}, + {1225, 1, 27}, + { 714, 1, 28}, + { 815, 1, 29}, + {1140, 1, 30}, + {1233, 1, 31}, + { 739, 1, 32}, + {1234, 1, 33}, + { 909, 1, 34}, + { 574, 1, 35}, + { 618, 1, 36}, + { 688, 1, 36}, + { 529, 1, 37}, + { 535, 1, 38}, + { 534, 1, 38}, + { 359, 1, 39}, + {1260, 1, 40}, + {1254, 1, 40}, + { 298, 1, 40}, + { 968, 1, 41}, + {1101, 1, 42}, + {1201, 1, 43}, + { 625, 1, 44}, + { 289, 1, 45}, + {1203, 1, 46}, + { 724, 1, 47}, + { 899, 1, 48}, + {1261, 1, 49}, + {1255, 1, 49}, + { 776, 1, 50}, + {1206, 1, 51}, + { 930, 1, 52}, + { 725, 1, 53}, + { 287, 1, 54}, + {1207, 1, 55}, + { 400, 1, 56}, + { 484, 1, 56}, + { 233, 1, 57}, + {1166, 1, 58}, + { 241, 1, 59}, + { 770, 1, 60}, + { 972, 1, 61}, + { 456, 1, 62}, + { 453, 1, 62}, + {1168, 1, 63}, + {1167, 1, 63}, + {1275, 1, 64}, + {1274, 1, 64}, + {1043, 1, 65}, + {1042, 1, 65}, + {1044, 1, 66}, + {1045, 1, 66}, + { 402, 1, 67}, + { 486, 1, 67}, + { 752, 1, 68}, + { 746, 1, 68}, + { 597, 1, 69}, + { 596, 1, 69}, + { 569, 1, 70}, + {1070, 1, 70}, + {1175, 1, 71}, + {1174, 1, 71}, + { 442, 1, 72}, + { 401, 1, 73}, + { 485, 1, 73}, + { 405, 1, 73}, + { 772, 1, 74}, + { 956, 1, 75}, + { 212, 1, 76}, + { 854, 1, 77}, + { 855, 1, 77}, + { 883, 1, 78}, + { 888, 1, 78}, + { 428, 1, 79}, + { 987, 1, 80}, + { 965, 1, 80}, + { 518, 1, 81}, + { 517, 1, 81}, + { 274, 1, 82}, + { 265, 1, 83}, + { 570, 1, 84}, + { 880, 1, 85}, + { 887, 1, 85}, + { 488, 1, 86}, + { 878, 1, 87}, + { 884, 1, 87}, + {1177, 1, 88}, + {1170, 1, 88}, + { 281, 1, 89}, + { 280, 1, 89}, + {1178, 1, 90}, + {1171, 1, 90}, + { 879, 1, 91}, + { 885, 1, 91}, + {1180, 1, 92}, + {1176, 1, 92}, + { 881, 1, 93}, + { 877, 1, 93}, + { 579, 1, 94}, + { 754, 1, 95}, + { 748, 1, 95}, + { 430, 1, 96}, + { 576, 1, 97}, + { 575, 1, 97}, + {1236, 1, 98}, + { 532, 1, 99}, + { 530, 1, 99}, + { 454, 1, 100}, + { 451, 1, 100}, + {1181, 1, 101}, + {1187, 1, 101}, + { 380, 1, 102}, + { 379, 1, 102}, + { 713, 1, 103}, + { 712, 1, 103}, + { 655, 1, 104}, + { 651, 1, 104}, + { 383, 1, 105}, + { 382, 1, 105}, + { 641, 1, 106}, + { 716, 1, 107}, + { 268, 1, 108}, + { 617, 1, 109}, + { 410, 1, 109}, + { 711, 1, 110}, + { 270, 1, 111}, + { 269, 1, 111}, + { 381, 1, 112}, + { 719, 1, 113}, + { 717, 1, 113}, + { 522, 1, 114}, + { 521, 1, 114}, + { 368, 1, 115}, + { 366, 1, 115}, + { 385, 1, 116}, + { 374, 1, 116}, + {1318, 1, 117}, + {1317, 1, 117}, + { 384, 1, 118}, + { 365, 1, 118}, + {1320, 1, 119}, + {1319, 1, 120}, + { 786, 1, 121}, + {1269, 1, 122}, + { 455, 1, 123}, + { 452, 1, 123}, + { 235, 1, 124}, + { 896, 1, 125}, + { 755, 1, 126}, + { 749, 1, 126}, + {1195, 1, 127}, + { 407, 1, 128}, + { 666, 1, 128}, + {1035, 1, 129}, + {1112, 1, 130}, + { 479, 1, 131}, + { 478, 1, 131}, + { 720, 1, 132}, + {1085, 1, 133}, + { 619, 1, 134}, + { 689, 1, 134}, + { 692, 1, 135}, + { 913, 1, 136}, + { 911, 1, 136}, + { 352, 1, 137}, + { 912, 1, 138}, + { 910, 1, 138}, + {1208, 1, 139}, + { 865, 1, 140}, + { 864, 1, 140}, + { 533, 1, 141}, + { 531, 1, 141}, + { 756, 1, 142}, + { 750, 1, 142}, + { 361, 1, 143}, + { 360, 1, 143}, + { 863, 1, 144}, + { 621, 1, 145}, + { 616, 1, 145}, + { 620, 1, 146}, + { 690, 1, 146}, + { 639, 1, 147}, + { 637, 1, 148}, + { 638, 1, 148}, + { 795, 1, 149}, + {1064, 1, 150}, + {1068, 1, 150}, + {1063, 1, 150}, + { 370, 1, 151}, + { 372, 1, 151}, + { 184, 1, 152}, + { 183, 1, 152}, + { 205, 1, 153}, + { 203, 1, 153}, + {1272, 1, 154}, + {1287, 1, 154}, + {1278, 1, 155}, + { 403, 1, 156}, + { 610, 1, 156}, + { 369, 1, 157}, + { 367, 1, 157}, + {1146, 1, 158}, + {1145, 1, 158}, + { 206, 1, 159}, + { 204, 1, 159}, + { 612, 1, 160}, + { 609, 1, 160}, + {1157, 1, 161}, + { 782, 1, 162}, + { 781, 1, 163}, + { 165, 1, 164}, + { 191, 1, 165}, + { 192, 1, 166}, + {1037, 1, 167}, + {1036, 1, 167}, + { 806, 1, 168}, + { 304, 1, 169}, + { 431, 1, 170}, + { 975, 1, 171}, + { 585, 1, 172}, + { 977, 1, 173}, + {1257, 1, 174}, + { 978, 1, 175}, + { 475, 1, 176}, + {1129, 1, 177}, + { 995, 1, 178}, + { 992, 1, 179}, + { 511, 1, 180}, + { 309, 1, 181}, + { 779, 1, 182}, + { 449, 1, 183}, + { 664, 1, 184}, + {1018, 1, 185}, + { 918, 1, 186}, + { 627, 1, 187}, + {1041, 1, 188}, + { 808, 1, 189}, + { 871, 1, 190}, + { 870, 1, 191}, + { 723, 1, 192}, + { 979, 1, 193}, + { 976, 1, 194}, + { 820, 1, 195}, + { 227, 1, 196}, + { 677, 1, 197}, + { 676, 1, 198}, + {1067, 1, 199}, + { 980, 1, 200}, + { 974, 1, 201}, + {1100, 1, 202}, + {1099, 1, 202}, + { 277, 1, 203}, + { 705, 1, 204}, + {1151, 1, 205}, + { 351, 1, 206}, + { 811, 1, 207}, + {1128, 1, 208}, + {1141, 1, 209}, + { 728, 1, 210}, + { 906, 1, 211}, + { 729, 1, 212}, + { 587, 1, 213}, + { 928, 1, 214}, + {1238, 1, 215}, + {1135, 1, 216}, + { 892, 1, 217}, + { 901, 1, 218}, + { 900, 1, 218}, + {1212, 1, 219}, + { 171, 1, 220}, + {1291, 1, 221}, + {1025, 1, 222}, + { 252, 1, 223}, + { 849, 1, 224}, + { 438, 1, 225}, + { 440, 1, 226}, + { 439, 1, 226}, + { 502, 1, 227}, + { 509, 1, 228}, + { 188, 1, 229}, + { 237, 1, 230}, + { 236, 1, 230}, + { 902, 1, 231}, + { 240, 1, 232}, + {1016, 1, 233}, + { 872, 1, 234}, + { 657, 1, 235}, + { 656, 1, 235}, + {1218, 1, 236}, + {1219, 1, 237}, + { 709, 1, 238}, + { 708, 1, 238}, + { 499, 1, 239}, + {1132, 1, 240}, + { 292, 1, 241}, + { 291, 1, 241}, + { 908, 1, 242}, + { 907, 1, 242}, + { 190, 1, 243}, + { 189, 1, 243}, + {1210, 1, 244}, + {1209, 1, 244}, + { 433, 1, 245}, + { 432, 1, 245}, + { 853, 1, 246}, + { 852, 1, 246}, + {1190, 1, 247}, + { 581, 1, 248}, + { 580, 1, 248}, + { 867, 1, 249}, + { 163, 1, 250}, + { 201, 1, 251}, + { 200, 1, 251}, + { 814, 1, 252}, + { 813, 1, 252}, + { 490, 1, 253}, + { 489, 1, 253}, + {1047, 1, 254}, + { 519, 1, 255}, + { 520, 1, 255}, + { 524, 1, 256}, + { 523, 1, 256}, + { 882, 1, 257}, + { 886, 1, 257}, + { 514, 1, 258}, + { 990, 1, 259}, + {1251, 1, 260}, + {1250, 1, 260}, + { 177, 1, 261}, + { 176, 1, 261}, + { 572, 1, 262}, + { 571, 1, 262}, + {1179, 1, 263}, + {1172, 1, 263}, + {1182, 1, 264}, + {1188, 1, 264}, + { 386, 1, 265}, + { 375, 1, 265}, + { 387, 1, 266}, + { 376, 1, 266}, + { 388, 1, 267}, + { 377, 1, 267}, + { 389, 1, 268}, + { 378, 1, 268}, + { 371, 1, 269}, + { 373, 1, 269}, + {1204, 1, 270}, + {1273, 1, 271}, + {1288, 1, 271}, + {1183, 1, 272}, + {1185, 1, 272}, + {1184, 1, 273}, + {1186, 1, 273}, + {1263, 2, 0}, + {1335, 2, 0}, + { 406, 2, 1}, + {1334, 2, 1}, + { 741, 2, 2}, + { 757, 2, 2}, + { 594, 2, 3}, + { 598, 2, 3}, + { 450, 2, 4}, + { 460, 2, 4}, + { 209, 2, 5}, + { 211, 2, 5}, + { 630, 2, 6}, + { 629, 2, 6}, + { 196, 2, 7}, + { 195, 2, 7}, + {1198, 2, 8}, + {1197, 2, 8}, + {1232, 2, 9}, + {1231, 2, 9}, + { 477, 2, 10}, + { 476, 2, 10}, + { 250, 2, 11}, + { 249, 2, 11}, + { 603, 2, 12}, + { 604, 2, 12}, + { 601, 2, 13}, + { 602, 2, 13}, + { 988, 2, 14}, + { 991, 2, 14}, + {1215, 2, 15}, + {1216, 2, 15}, + {1225, 2, 16}, + {1224, 2, 16}, + { 714, 2, 17}, + { 730, 2, 17}, + { 815, 2, 18}, + { 890, 2, 18}, + {1140, 2, 19}, + {1139, 2, 19}, + {1233, 2, 20}, + { 739, 2, 21}, + { 740, 2, 21}, + {1234, 2, 22}, + {1235, 2, 22}, + { 909, 2, 23}, + { 914, 2, 23}, + { 574, 2, 24}, + { 573, 2, 24}, + { 616, 2, 25}, + { 615, 2, 25}, + { 529, 2, 26}, + { 528, 2, 26}, + { 359, 2, 27}, + { 358, 2, 27}, + { 297, 2, 28}, + { 301, 2, 28}, + { 968, 2, 29}, + { 967, 2, 29}, + {1101, 2, 30}, + {1102, 2, 30}, + { 724, 2, 31}, + { 726, 2, 31}, + { 899, 2, 32}, + { 898, 2, 32}, + { 641, 2, 33}, + { 640, 2, 33}, + { 716, 2, 34}, + { 707, 2, 34}, + { 268, 2, 35}, + { 267, 2, 35}, + { 614, 2, 36}, + { 623, 2, 36}, + {1315, 2, 37}, + {1316, 2, 37}, + { 975, 2, 38}, + { 687, 2, 38}, + { 585, 2, 39}, + { 584, 2, 39}, + { 475, 2, 40}, + { 495, 2, 40}, + { 670, 2, 41}, + {1327, 2, 41}, + {1073, 2, 41}, + {1201, 2, 42}, + {1230, 2, 42}, + { 625, 2, 43}, + { 624, 2, 43}, + { 289, 2, 44}, + { 288, 2, 44}, + {1203, 2, 45}, + {1202, 2, 45}, + { 776, 2, 46}, + { 775, 2, 46}, + {1206, 2, 47}, + {1213, 2, 47}, + { 780, 2, 48}, + { 778, 2, 48}, + {1257, 2, 49}, + {1256, 2, 49}, + {1129, 2, 50}, + {1130, 2, 50}, + { 995, 2, 51}, + { 994, 2, 51}, + { 448, 2, 52}, + { 435, 2, 52}, + { 280, 2, 53}, + { 279, 2, 53}, + { 287, 2, 54}, + { 286, 2, 54}, + { 430, 2, 55}, + { 429, 2, 55}, + {1072, 2, 55}, + { 930, 2, 56}, + {1214, 2, 56}, + { 579, 2, 57}, + { 578, 2, 57}, + {1236, 2, 58}, + {1229, 2, 58}, + {1195, 2, 59}, + {1194, 2, 59}, + { 978, 2, 60}, + {1307, 2, 60}, + { 723, 2, 61}, + { 722, 2, 61}, + { 233, 2, 62}, + { 232, 2, 62}, + { 438, 2, 63}, + {1308, 2, 63}, + {1041, 2, 64}, + {1040, 2, 64}, + {1035, 2, 65}, + {1034, 2, 65}, + { 933, 2, 66}, + { 934, 2, 66}, + {1166, 2, 67}, + {1165, 2, 67}, + { 770, 2, 68}, + { 769, 2, 68}, + { 972, 2, 69}, + { 973, 2, 69}, + {1269, 2, 70}, + {1270, 2, 70}, + {1112, 2, 71}, + {1111, 2, 71}, + { 720, 2, 72}, + { 706, 2, 72}, + {1085, 2, 73}, + {1094, 2, 73}, + { 806, 2, 74}, + { 805, 2, 74}, + { 304, 2, 75}, + { 303, 2, 75}, + { 808, 2, 76}, + { 807, 2, 76}, + { 352, 2, 77}, + {1207, 2, 78}, + { 738, 2, 78}, + {1208, 2, 79}, + {1220, 2, 79}, + { 227, 2, 80}, + { 228, 2, 80}, + { 509, 2, 81}, + { 508, 2, 81}, + {1108, 2, 82}, + {1109, 2, 82}, + { 786, 2, 83}, + { 235, 2, 84}, + { 234, 2, 84}, + { 692, 2, 85}, + { 691, 2, 85}, + { 863, 2, 86}, + { 904, 2, 86}, + { 664, 2, 87}, + { 210, 2, 87}, + { 979, 2, 88}, + {1110, 2, 88}, + { 677, 2, 89}, + {1065, 2, 89}, + { 676, 2, 90}, + {1038, 2, 90}, + { 980, 2, 91}, + { 989, 2, 91}, + { 705, 2, 92}, + { 732, 2, 92}, + { 241, 2, 93}, + { 242, 2, 93}, + { 277, 2, 94}, + { 276, 2, 94}, + { 817, 2, 95}, + { 816, 2, 95}, + { 351, 2, 96}, + { 295, 2, 96}, + { 870, 2, 97}, + { 868, 2, 97}, + { 871, 2, 98}, + { 869, 2, 98}, + { 872, 2, 99}, + {1048, 2, 99}, + {1128, 2, 100}, + {1133, 2, 100}, + {1151, 2, 101}, + {1150, 2, 101}, + {1212, 2, 102}, + {1211, 2, 102}, + { 309, 2, 103}, + { 169, 2, 103}, + { 240, 2, 104}, + { 239, 2, 104}, + { 499, 2, 105}, + { 498, 2, 105}, + { 511, 2, 106}, + { 510, 2, 106}, + { 587, 2, 107}, + { 586, 2, 107}, + {1016, 2, 108}, + { 644, 2, 108}, + { 728, 2, 109}, + { 727, 2, 109}, + { 779, 2, 110}, + { 777, 2, 110}, + { 811, 2, 111}, + { 812, 2, 111}, + { 820, 2, 112}, + { 819, 2, 112}, + { 867, 2, 113}, + { 866, 2, 113}, + { 892, 2, 114}, + { 902, 2, 115}, + { 903, 2, 115}, + { 976, 2, 116}, + { 921, 2, 116}, + { 918, 2, 117}, + { 924, 2, 117}, + {1018, 2, 118}, + {1017, 2, 118}, + {1025, 2, 119}, + {1024, 2, 119}, + { 977, 2, 120}, + {1032, 2, 120}, + {1067, 2, 121}, + {1039, 2, 121}, + {1135, 2, 122}, + {1134, 2, 122}, + { 729, 2, 123}, + {1137, 2, 123}, + {1238, 2, 124}, + {1237, 2, 124}, + {1291, 2, 125}, + {1290, 2, 125}, + { 171, 2, 126}, + { 188, 2, 127}, + { 643, 2, 127}, + { 627, 2, 128}, + { 626, 2, 128}, + { 906, 2, 129}, + { 905, 2, 129}, + { 974, 2, 130}, + { 647, 2, 130}, + {1136, 2, 131}, + {1127, 2, 131}, + { 163, 2, 132}, + { 164, 2, 132}, + { 252, 2, 133}, + { 253, 2, 133}, + { 849, 2, 134}, + { 848, 2, 134}, + { 928, 2, 135}, + { 992, 2, 136}, + { 993, 2, 136}, + {1218, 2, 137}, + {1217, 2, 137}, + { 718, 2, 138}, + { 645, 2, 138}, + { 996, 3, 0}, + {1309, 3, 0}, + { 493, 3, 1}, + { 494, 3, 1}, + {1138, 3, 2}, + {1158, 3, 2}, + { 631, 3, 3}, + { 642, 3, 3}, + { 436, 3, 4}, + { 774, 3, 5}, + { 929, 3, 6}, + { 935, 3, 6}, + { 542, 3, 7}, + {1082, 3, 8}, + {1087, 3, 8}, + { 557, 3, 9}, + { 555, 3, 9}, + { 716, 3, 10}, + { 703, 3, 10}, + { 179, 3, 11}, + { 760, 3, 11}, + { 873, 3, 12}, + { 889, 3, 12}, + { 874, 3, 13}, + { 891, 3, 13}, + { 875, 3, 14}, + { 857, 3, 14}, + { 958, 3, 15}, + { 953, 3, 15}, + { 544, 3, 16}, + { 539, 3, 16}, + { 505, 3, 17}, + { 504, 3, 17}, + { 513, 3, 18}, + { 512, 3, 18}, + {1332, 3, 19}, + { 583, 3, 20}, + { 564, 3, 20}, + { 506, 3, 21}, + { 507, 3, 21}, + { 996, 4, 0}, + {1309, 4, 0}, + {1060, 4, 1}, + {1057, 4, 1}, + { 436, 4, 2}, + { 774, 4, 3}, + { 427, 4, 4}, + { 395, 4, 4}, + { 542, 4, 5}, + { 539, 4, 5}, + {1082, 4, 6}, + {1087, 4, 6}, + {1155, 4, 7}, + {1143, 4, 7}, + { 734, 4, 8}, + {1268, 4, 9}, + {1200, 4, 10}, + { 801, 4, 11}, + { 803, 4, 12}, + { 505, 4, 13}, + { 504, 4, 13}, + { 513, 4, 14}, + { 512, 4, 14}, + {1332, 4, 15}, + { 583, 4, 16}, + { 564, 4, 16}, + { 506, 4, 17}, + { 507, 4, 17}, + { 996, 5, 0}, + {1309, 5, 0}, + { 436, 5, 1}, + { 774, 5, 2}, + { 542, 5, 3}, + { 539, 5, 3}, + {1124, 5, 4}, + {1118, 5, 4}, + { 557, 5, 5}, + { 555, 5, 5}, + {1152, 5, 6}, + { 792, 5, 7}, + { 789, 5, 7}, + {1265, 5, 8}, + {1264, 5, 8}, + { 981, 5, 9}, + { 760, 5, 9}, + { 958, 5, 10}, + { 953, 5, 10}, + { 221, 5, 11}, + { 216, 5, 11}, + {1162, 5, 12}, + {1161, 5, 12}, + { 391, 5, 13}, + { 390, 5, 13}, + {1115, 5, 14}, + {1114, 5, 14}, + { 936, 6, 0}, + { 915, 6, 0}, + { 545, 6, 0}, + { 546, 6, 0}, + {1314, 6, 1}, + {1310, 6, 1}, + {1200, 6, 1}, + {1252, 6, 1}, + { 947, 7, 0}, + { 917, 7, 0}, + { 761, 7, 1}, + { 734, 7, 1}, + {1285, 7, 2}, + {1268, 7, 2}, + {1248, 7, 3}, + {1200, 7, 3}, + { 802, 7, 4}, + { 801, 7, 4}, + { 804, 7, 5}, + { 803, 7, 5}, + { 765, 8, 0}, + { 734, 8, 0}, + {1090, 8, 1}, + {1080, 8, 1}, + { 536, 8, 2}, + { 515, 8, 2}, + { 537, 8, 3}, + { 526, 8, 3}, + { 538, 8, 4}, + { 527, 8, 4}, + { 202, 8, 5}, + { 187, 8, 5}, + { 408, 8, 6}, + { 437, 8, 6}, + {1019, 8, 7}, + { 229, 8, 7}, + {1120, 8, 8}, + {1103, 8, 8}, + {1294, 8, 9}, + {1300, 8, 9}, + {1005, 8, 10}, + { 984, 8, 10}, + { 273, 8, 11}, + { 266, 8, 11}, + { 944, 8, 12}, + { 951, 8, 12}, + { 199, 8, 13}, + { 174, 8, 13}, + { 768, 8, 14}, + { 798, 8, 14}, + {1093, 8, 15}, + {1097, 8, 15}, + { 766, 8, 16}, + { 796, 8, 16}, + {1091, 8, 17}, + {1095, 8, 17}, + {1050, 8, 18}, + {1029, 8, 18}, + { 767, 8, 19}, + { 797, 8, 19}, + {1092, 8, 20}, + {1096, 8, 20}, + { 554, 8, 21}, + { 560, 8, 21}, + {1051, 8, 22}, + {1030, 8, 22}, + { 948, 9, 0}, { 1, 9, 0}, - { 890, 9, 0}, - { 950, 9, 1}, + { 949, 9, 0}, + {1012, 9, 1}, { 2, 9, 1}, - { 949, 9, 1}, - { 895, 9, 2}, - { 122, 9, 2}, - { 873, 9, 2}, - { 658, 9, 3}, - { 129, 9, 3}, - { 681, 9, 3}, - {1205, 9, 4}, - { 135, 9, 4}, - {1212, 9, 4}, - { 287, 9, 5}, - { 13, 9, 5}, - { 290, 9, 6}, - { 24, 9, 6}, - { 292, 9, 7}, - { 27, 9, 7}, - { 295, 9, 8}, - { 30, 9, 8}, - { 299, 9, 9}, - { 35, 9, 9}, - { 300, 9, 10}, - { 36, 9, 10}, - { 301, 9, 11}, - { 38, 9, 11}, - { 302, 9, 12}, - { 39, 9, 12}, - { 303, 9, 13}, - { 41, 9, 13}, - { 304, 9, 14}, - { 42, 9, 14}, - { 305, 9, 15}, - { 46, 9, 15}, - { 306, 9, 16}, - { 51, 9, 16}, - { 307, 9, 17}, - { 56, 9, 17}, - { 308, 9, 18}, - { 62, 9, 18}, - { 309, 9, 19}, - { 67, 9, 19}, - { 310, 9, 20}, - { 69, 9, 20}, - { 311, 9, 21}, - { 70, 9, 21}, - { 312, 9, 22}, - { 71, 9, 22}, - { 313, 9, 23}, - { 72, 9, 23}, - { 314, 9, 24}, - { 73, 9, 24}, - { 315, 9, 25}, - { 80, 9, 25}, - { 316, 9, 26}, - { 84, 9, 26}, - { 317, 9, 27}, - { 85, 9, 27}, - { 318, 9, 28}, - { 86, 9, 28}, - { 319, 9, 29}, - { 87, 9, 29}, - { 320, 9, 30}, - { 88, 9, 30}, - { 321, 9, 31}, - { 89, 9, 31}, - { 322, 9, 32}, - { 134, 9, 32}, - { 323, 9, 33}, - { 141, 9, 33}, - { 288, 9, 34}, - { 22, 9, 34}, - { 289, 9, 35}, - { 23, 9, 35}, - { 291, 9, 36}, - { 26, 9, 36}, - { 293, 9, 37}, - { 28, 9, 37}, - { 294, 9, 38}, - { 29, 9, 38}, - { 296, 9, 39}, - { 32, 9, 39}, - { 297, 9, 40}, - { 33, 9, 40}, - { 200, 9, 41}, - { 50, 9, 41}, - { 195, 9, 41}, - { 198, 9, 42}, - { 52, 9, 42}, - { 193, 9, 42}, - { 199, 9, 43}, - { 53, 9, 43}, - { 194, 9, 43}, - { 223, 9, 44}, - { 55, 9, 44}, - { 235, 9, 44}, - { 222, 9, 45}, - { 57, 9, 45}, - { 205, 9, 45}, - { 224, 9, 46}, - { 58, 9, 46}, - { 249, 9, 46}, - { 710, 9, 47}, - { 59, 9, 47}, - { 682, 9, 47}, - {1024, 9, 48}, - { 60, 9, 48}, - {1016, 9, 48}, - { 144, 9, 49}, - { 61, 9, 49}, - { 151, 9, 49}, - { 143, 9, 50}, - { 63, 9, 50}, - { 142, 9, 50}, - { 145, 9, 51}, - { 64, 9, 51}, - { 170, 9, 51}, - { 457, 9, 52}, - { 65, 9, 52}, - { 432, 9, 52}, - { 456, 9, 53}, - { 66, 9, 53}, - { 427, 9, 53}, - { 629, 9, 54}, - { 68, 9, 54}, - { 632, 9, 54}, - { 298, 9, 55}, - { 34, 9, 55}, - { 201, 9, 56}, - { 47, 9, 56}, - { 196, 9, 56}, - { 882, 10, 0}, - { 273, 10, 1}, - { 270, 10, 1}, - { 379, 10, 2}, - { 368, 10, 2}, - { 514, 10, 3}, - { 879, 10, 4}, - { 865, 10, 4}, - { 620, 10, 5}, - { 619, 10, 5}, - { 807, 10, 6}, - { 806, 10, 6}, - { 509, 10, 7}, - { 508, 10, 7}, - { 634, 10, 8}, - { 633, 10, 8}, - { 335, 10, 9}, - { 474, 10, 9}, - {1106, 10, 10}, - {1102, 10, 10}, - {1097, 10, 11}, - {1203, 10, 12}, - {1202, 10, 12}, - {1221, 10, 13}, - { 864, 10, 14}, - { 862, 10, 14}, - {1077, 10, 15}, - {1080, 10, 15}, - {1093, 10, 16}, - {1092, 10, 16}, - { 517, 10, 17}, - { 516, 10, 17}, - { 869, 11, 0}, - { 857, 11, 0}, - { 163, 11, 1}, - { 142, 11, 1}, - { 565, 11, 2}, - { 559, 11, 2}, - {1221, 11, 3}, - {1215, 11, 3}, - { 519, 11, 4}, - { 503, 11, 4}, - { 864, 11, 5}, - { 859, 11, 5}, - { 880, 12, 0}, - { 150, 12, 1}, - { 152, 12, 2}, - { 155, 12, 3}, - { 221, 12, 4}, - { 227, 12, 5}, - { 428, 12, 6}, - { 429, 12, 7}, - { 465, 12, 8}, - { 507, 12, 9}, - { 511, 12, 10}, - { 520, 12, 11}, - { 521, 12, 12}, - { 562, 12, 13}, - { 567, 12, 14}, - {1149, 12, 14}, - { 580, 12, 15}, - { 584, 12, 16}, - { 585, 12, 17}, - { 586, 12, 18}, - { 652, 12, 19}, - { 663, 12, 20}, - { 679, 12, 21}, - { 684, 12, 22}, - { 685, 12, 23}, - { 808, 12, 24}, - { 822, 12, 25}, - { 887, 12, 26}, - { 902, 12, 27}, - { 968, 12, 28}, - {1010, 12, 29}, - {1011, 12, 30}, - {1020, 12, 31}, - {1022, 12, 32}, - {1042, 12, 33}, - {1043, 12, 34}, - {1055, 12, 35}, - {1057, 12, 36}, - {1065, 12, 37}, - {1121, 12, 38}, - {1134, 12, 39}, - {1147, 12, 40}, - {1148, 12, 41}, - {1154, 12, 42}, - {1218, 12, 43}, - {1128, 12, 44}, - {1237, 12, 45}, - {1238, 12, 46}, - {1239, 12, 47}, - {1247, 12, 48}, - {1248, 12, 49}, - {1251, 12, 50}, - {1252, 12, 51}, - { 669, 12, 52}, - { 506, 12, 53}, - { 264, 12, 54}, - { 505, 12, 55}, - { 904, 12, 56}, - {1034, 12, 57}, - {1096, 12, 58}, - { 769, 12, 59}, - { 770, 12, 60}, - { 771, 12, 61}, - { 772, 12, 62}, - { 773, 12, 63}, - { 774, 12, 64}, - { 775, 12, 65}, - { 776, 12, 66}, - { 777, 12, 67}, - { 778, 12, 68}, - { 779, 12, 69}, - { 780, 12, 70}, - { 781, 12, 71}, - { 782, 12, 72}, - { 783, 12, 73}, - { 784, 12, 74}, - { 785, 12, 75}, - { 786, 12, 76}, - { 787, 12, 77}, - { 788, 12, 78}, - { 789, 12, 79}, - { 790, 12, 80}, - { 791, 12, 81}, - { 792, 12, 82}, - { 793, 12, 83}, - { 794, 12, 84}, - { 795, 12, 85}, - { 884, 13, 0}, - {1179, 13, 0}, - { 644, 13, 1}, - { 267, 13, 1}, - { 462, 13, 2}, - { 426, 13, 2}, - {1025, 13, 3}, - {1016, 13, 3}, - { 712, 13, 4}, - { 682, 13, 4}, - {1175, 13, 5}, - {1129, 13, 5}, - {1189, 14, 0}, - {1235, 14, 0}, - { 926, 14, 1}, - { 925, 14, 1}, - { 363, 14, 2}, - { 360, 14, 2}, - {1014, 14, 3}, - {1013, 14, 3}, - { 537, 14, 4}, - { 534, 14, 4}, - { 886, 14, 5}, - { 891, 14, 5}, - { 498, 14, 6}, - { 497, 14, 6}, - { 259, 14, 7}, - {1122, 14, 7}, - { 617, 14, 8}, - { 632, 14, 8}, - { 996, 14, 9}, - { 995, 14, 9}, - { 993, 14, 10}, - { 986, 14, 10}, - { 899, 14, 11}, - { 894, 14, 11}, - { 159, 14, 12}, - { 151, 14, 12}, - { 604, 14, 13}, - { 600, 14, 13}, - { 626, 14, 14}, - { 613, 14, 14}, - { 627, 14, 14}, - { 599, 14, 15}, - { 598, 14, 15}, - { 374, 14, 16}, - { 364, 14, 16}, - { 257, 14, 17}, - { 219, 14, 17}, - { 256, 14, 18}, - { 207, 14, 18}, - {1086, 14, 19}, - {1085, 14, 19}, - { 766, 14, 20}, - { 234, 14, 20}, - { 279, 14, 21}, - { 403, 14, 21}, - { 732, 14, 22}, - { 722, 14, 22}, - { 393, 14, 23}, - { 284, 14, 23}, - { 381, 14, 24}, - {1041, 14, 24}, - { 163, 14, 25}, - { 149, 14, 25}, - { 258, 14, 26}, - { 206, 14, 26}, - {1120, 14, 27}, - {1061, 14, 27}, - {1258, 14, 28}, - {1257, 14, 28}, - { 872, 14, 29}, - { 876, 14, 29}, - {1225, 14, 30}, - {1222, 14, 30}, - { 642, 14, 31}, - { 650, 14, 32}, - { 649, 14, 33}, - { 560, 14, 34}, - { 561, 14, 35}, - { 362, 14, 36}, - { 401, 14, 36}, - { 583, 14, 37}, - { 594, 14, 37}, - { 382, 14, 38}, - { 336, 14, 38}, - {1018, 14, 39}, - {1023, 14, 39}, - { 882, 15, 0}, - { 899, 15, 1}, - { 894, 15, 1}, - { 452, 15, 2}, - { 445, 15, 2}, - { 434, 15, 3}, - { 433, 15, 3}, - { 861, 16, 0}, + {1011, 9, 1}, + { 954, 9, 2}, + { 135, 9, 2}, + { 932, 9, 2}, + { 710, 9, 3}, + { 144, 9, 3}, + { 733, 9, 3}, + {1279, 9, 4}, + { 151, 9, 4}, + {1286, 9, 4}, + { 313, 9, 5}, + { 17, 9, 5}, + { 316, 9, 6}, + { 28, 9, 6}, + { 318, 9, 7}, + { 32, 9, 7}, + { 321, 9, 8}, + { 35, 9, 8}, + { 325, 9, 9}, + { 40, 9, 9}, + { 326, 9, 10}, + { 41, 9, 10}, + { 327, 9, 11}, + { 43, 9, 11}, + { 328, 9, 12}, + { 44, 9, 12}, + { 329, 9, 13}, + { 46, 9, 13}, + { 330, 9, 14}, + { 47, 9, 14}, + { 331, 9, 15}, + { 51, 9, 15}, + { 332, 9, 16}, + { 57, 9, 16}, + { 333, 9, 17}, + { 62, 9, 17}, + { 334, 9, 18}, + { 68, 9, 18}, + { 335, 9, 19}, + { 73, 9, 19}, + { 336, 9, 20}, + { 75, 9, 20}, + { 337, 9, 21}, + { 76, 9, 21}, + { 338, 9, 22}, + { 77, 9, 22}, + { 339, 9, 23}, + { 78, 9, 23}, + { 340, 9, 24}, + { 79, 9, 24}, + { 341, 9, 25}, + { 88, 9, 25}, + { 342, 9, 26}, + { 93, 9, 26}, + { 343, 9, 27}, + { 94, 9, 27}, + { 344, 9, 28}, + { 95, 9, 28}, + { 345, 9, 29}, + { 96, 9, 29}, + { 346, 9, 30}, + { 97, 9, 30}, + { 347, 9, 31}, + { 98, 9, 31}, + { 348, 9, 32}, + { 150, 9, 32}, + { 349, 9, 33}, + { 158, 9, 33}, + { 314, 9, 34}, + { 26, 9, 34}, + { 315, 9, 35}, + { 27, 9, 35}, + { 317, 9, 36}, + { 31, 9, 36}, + { 319, 9, 37}, + { 33, 9, 37}, + { 320, 9, 38}, + { 34, 9, 38}, + { 322, 9, 39}, + { 37, 9, 39}, + { 323, 9, 40}, + { 38, 9, 40}, + { 224, 9, 41}, + { 56, 9, 41}, + { 219, 9, 41}, + { 222, 9, 42}, + { 58, 9, 42}, + { 217, 9, 42}, + { 223, 9, 43}, + { 59, 9, 43}, + { 218, 9, 43}, + { 247, 9, 44}, + { 61, 9, 44}, + { 261, 9, 44}, + { 246, 9, 45}, + { 63, 9, 45}, + { 229, 9, 45}, + { 248, 9, 46}, + { 64, 9, 46}, + { 275, 9, 46}, + { 762, 9, 47}, + { 65, 9, 47}, + { 734, 9, 47}, + {1088, 9, 48}, + { 66, 9, 48}, + {1080, 9, 48}, + { 161, 9, 49}, + { 67, 9, 49}, + { 174, 9, 49}, + { 160, 9, 50}, + { 69, 9, 50}, + { 159, 9, 50}, + { 162, 9, 51}, + { 70, 9, 51}, + { 194, 9, 51}, + { 492, 9, 52}, + { 71, 9, 52}, + { 467, 9, 52}, + { 491, 9, 53}, + { 72, 9, 53}, + { 462, 9, 53}, + { 681, 9, 54}, + { 74, 9, 54}, + { 684, 9, 54}, + { 324, 9, 55}, + { 39, 9, 55}, + { 225, 9, 56}, + { 52, 9, 56}, + { 220, 9, 56}, + { 941, 10, 0}, + { 299, 10, 1}, + { 296, 10, 1}, + { 409, 10, 2}, + { 398, 10, 2}, + { 556, 10, 3}, + { 938, 10, 4}, + { 923, 10, 4}, + { 672, 10, 5}, + { 671, 10, 5}, + { 861, 10, 6}, + { 860, 10, 6}, + { 551, 10, 7}, + { 550, 10, 7}, + { 686, 10, 8}, + { 685, 10, 8}, + { 363, 10, 9}, + { 516, 10, 9}, + {1173, 10, 10}, + {1169, 10, 10}, + {1164, 10, 11}, + {1277, 10, 12}, + {1276, 10, 12}, + {1295, 10, 13}, + { 922, 10, 14}, + { 920, 10, 14}, + {1144, 10, 15}, + {1147, 10, 15}, + {1160, 10, 16}, + {1159, 10, 16}, + { 559, 10, 17}, + { 558, 10, 17}, + { 927, 11, 0}, + { 915, 11, 0}, + { 186, 11, 1}, + { 159, 11, 1}, + { 611, 11, 2}, + { 605, 11, 2}, + {1295, 11, 3}, + {1289, 11, 3}, + { 561, 11, 4}, + { 545, 11, 4}, + { 922, 11, 5}, + { 917, 11, 5}, + { 939, 12, 0}, + { 173, 12, 1}, + { 175, 12, 2}, + { 178, 12, 3}, + { 245, 12, 4}, + { 251, 12, 5}, + { 463, 12, 6}, + { 464, 12, 7}, + { 500, 12, 8}, + { 549, 12, 9}, + { 553, 12, 10}, + { 562, 12, 11}, + { 563, 12, 12}, + { 608, 12, 13}, + { 613, 12, 14}, + {1223, 12, 14}, + { 628, 12, 15}, + { 632, 12, 16}, + { 633, 12, 17}, + { 634, 12, 18}, + { 704, 12, 19}, + { 715, 12, 20}, + { 731, 12, 21}, + { 736, 12, 22}, + { 737, 12, 23}, + { 862, 12, 24}, + { 876, 12, 25}, + { 946, 12, 26}, + { 961, 12, 27}, + {1031, 12, 28}, + {1074, 12, 29}, + {1075, 12, 30}, + {1084, 12, 31}, + {1086, 12, 32}, + {1106, 12, 33}, + {1107, 12, 34}, + {1119, 12, 35}, + {1121, 12, 36}, + {1131, 12, 37}, + {1191, 12, 38}, + {1205, 12, 39}, + {1221, 12, 40}, + {1222, 12, 41}, + {1228, 12, 42}, + {1292, 12, 43}, + {1199, 12, 44}, + {1311, 12, 45}, + {1312, 12, 46}, + {1313, 12, 47}, + {1321, 12, 48}, + {1322, 12, 49}, + {1325, 12, 50}, + {1326, 12, 51}, + { 721, 12, 52}, + { 548, 12, 53}, + { 290, 12, 54}, + { 547, 12, 55}, + { 963, 12, 56}, + {1098, 12, 57}, + {1163, 12, 58}, + { 821, 12, 59}, + { 822, 12, 60}, + { 823, 12, 61}, + { 824, 12, 62}, + { 825, 12, 63}, + { 826, 12, 64}, + { 827, 12, 65}, + { 828, 12, 66}, + { 829, 12, 67}, + { 830, 12, 68}, + { 831, 12, 69}, + { 832, 12, 70}, + { 833, 12, 71}, + { 834, 12, 72}, + { 835, 12, 73}, + { 836, 12, 74}, + { 837, 12, 75}, + { 838, 12, 76}, + { 839, 12, 77}, + { 840, 12, 78}, + { 841, 12, 79}, + { 842, 12, 80}, + { 843, 12, 81}, + { 844, 12, 82}, + { 845, 12, 83}, + { 846, 12, 84}, + { 847, 12, 85}, + { 166, 12, 86}, + { 168, 12, 87}, + { 167, 12, 88}, + { 943, 13, 0}, + {1253, 13, 0}, + { 696, 13, 1}, + { 293, 13, 1}, + { 497, 13, 2}, + { 461, 13, 2}, + {1089, 13, 3}, + {1080, 13, 3}, + { 764, 13, 4}, + { 734, 13, 4}, + {1249, 13, 5}, + {1200, 13, 5}, + {1263, 14, 0}, + {1309, 14, 0}, + { 986, 14, 1}, + { 985, 14, 1}, + { 393, 14, 2}, + { 390, 14, 2}, + {1078, 14, 3}, + {1077, 14, 3}, + { 582, 14, 4}, + { 577, 14, 4}, + { 945, 14, 5}, + { 950, 14, 5}, + { 540, 14, 6}, + { 539, 14, 6}, + { 285, 14, 7}, + {1192, 14, 7}, + { 669, 14, 8}, + { 684, 14, 8}, + {1059, 14, 9}, + {1058, 14, 9}, + {1056, 14, 10}, + {1049, 14, 10}, + { 958, 14, 11}, + { 953, 14, 11}, + { 182, 14, 12}, + { 174, 14, 12}, + { 654, 14, 13}, + { 650, 14, 13}, + { 678, 14, 14}, + { 665, 14, 14}, + { 679, 14, 14}, + { 649, 14, 15}, + { 648, 14, 15}, + { 404, 14, 16}, + { 394, 14, 16}, + { 283, 14, 17}, + { 243, 14, 17}, + { 282, 14, 18}, + { 231, 14, 18}, + {1153, 14, 19}, + {1152, 14, 19}, + { 818, 14, 20}, + { 260, 14, 20}, + { 305, 14, 21}, + { 436, 14, 21}, + { 784, 14, 22}, + { 774, 14, 22}, + { 426, 14, 23}, + { 310, 14, 23}, + { 411, 14, 24}, + {1105, 14, 24}, + { 186, 14, 25}, + { 172, 14, 25}, + { 284, 14, 26}, + { 230, 14, 26}, + {1189, 14, 27}, + {1126, 14, 27}, + {1333, 14, 28}, + {1331, 14, 28}, + { 931, 14, 29}, + { 935, 14, 29}, + {1299, 14, 30}, + {1296, 14, 30}, + { 694, 14, 31}, + { 702, 14, 32}, + { 701, 14, 33}, + { 606, 14, 34}, + { 607, 14, 35}, + { 392, 14, 36}, + { 434, 14, 36}, + { 631, 14, 37}, + { 642, 14, 37}, + { 412, 14, 38}, + { 364, 14, 38}, + {1082, 14, 39}, + {1087, 14, 39}, + { 505, 14, 40}, + { 504, 14, 40}, + { 513, 14, 41}, + { 512, 14, 41}, + {1332, 14, 42}, + { 941, 15, 0}, + { 958, 15, 1}, + { 953, 15, 1}, + { 487, 15, 2}, + { 480, 15, 2}, + { 469, 15, 3}, + { 468, 15, 3}, + { 919, 16, 0}, { 0, 16, 1}, { 1, 16, 2}, - { 4, 16, 3}, - { 3, 16, 4}, - { 12, 16, 5}, - { 11, 16, 6}, - { 10, 16, 7}, - { 9, 16, 8}, - { 75, 16, 9}, - { 8, 16, 10}, - { 7, 16, 11}, - { 6, 16, 12}, - { 79, 16, 13}, - { 45, 16, 14}, - { 5, 16, 15}, - { 78, 16, 16}, - { 112, 16, 17}, - { 44, 16, 18}, - { 77, 16, 19}, - { 94, 16, 20}, - { 111, 16, 21}, - { 124, 16, 22}, - { 2, 16, 23}, - { 76, 16, 24}, - { 43, 16, 25}, - { 110, 16, 26}, - { 74, 16, 27}, - { 123, 16, 28}, - { 93, 16, 29}, - { 136, 16, 30}, - { 109, 16, 31}, - { 25, 16, 32}, - { 117, 16, 33}, - { 31, 16, 34}, - { 122, 16, 35}, - { 37, 16, 36}, - { 129, 16, 37}, - { 40, 16, 38}, - { 135, 16, 39}, - { 13, 16, 40}, - { 24, 16, 41}, - { 27, 16, 42}, - { 30, 16, 43}, - { 35, 16, 44}, - { 36, 16, 45}, - { 38, 16, 46}, - { 39, 16, 47}, - { 41, 16, 48}, - { 42, 16, 49}, - { 46, 16, 50}, - { 51, 16, 51}, - { 56, 16, 52}, - { 62, 16, 53}, - { 67, 16, 54}, - { 69, 16, 55}, - { 70, 16, 56}, - { 71, 16, 57}, - { 72, 16, 58}, - { 73, 16, 59}, - { 80, 16, 60}, - { 84, 16, 61}, - { 85, 16, 62}, - { 86, 16, 63}, - { 87, 16, 64}, - { 88, 16, 65}, - { 89, 16, 66}, - { 90, 16, 67}, - { 91, 16, 68}, - { 92, 16, 69}, - { 95, 16, 70}, - { 99, 16, 71}, - { 100, 16, 72}, - { 101, 16, 73}, - { 103, 16, 74}, - { 104, 16, 75}, - { 105, 16, 76}, - { 106, 16, 77}, - { 107, 16, 78}, - { 108, 16, 79}, - { 113, 16, 80}, - { 118, 16, 81}, - { 125, 16, 82}, - { 130, 16, 83}, - { 137, 16, 84}, - { 14, 16, 85}, - { 47, 16, 86}, - { 81, 16, 87}, - { 96, 16, 88}, - { 114, 16, 89}, - { 119, 16, 90}, - { 126, 16, 91}, - { 131, 16, 92}, - { 138, 16, 93}, - { 15, 16, 94}, - { 48, 16, 95}, - { 82, 16, 96}, - { 97, 16, 97}, - { 115, 16, 98}, - { 120, 16, 99}, - { 127, 16, 100}, - { 132, 16, 101}, - { 139, 16, 102}, - { 16, 16, 103}, - { 49, 16, 104}, - { 83, 16, 105}, - { 98, 16, 106}, - { 116, 16, 107}, - { 121, 16, 108}, - { 128, 16, 109}, - { 133, 16, 110}, - { 140, 16, 111}, - { 17, 16, 112}, + { 6, 16, 3}, + { 11, 16, 4}, + { 87, 16, 5}, + { 8, 16, 6}, + { 5, 16, 7}, + { 4, 16, 8}, + { 3, 16, 9}, + { 16, 16, 10}, + { 15, 16, 11}, + { 14, 16, 12}, + { 83, 16, 13}, + { 13, 16, 14}, + { 81, 16, 15}, + { 12, 16, 16}, + { 10, 16, 17}, + { 9, 16, 18}, + { 86, 16, 19}, + { 50, 16, 20}, + { 120, 16, 21}, + { 7, 16, 22}, + { 136, 16, 23}, + { 85, 16, 24}, + { 123, 16, 25}, + { 49, 16, 26}, + { 84, 16, 27}, + { 103, 16, 28}, + { 122, 16, 29}, + { 138, 16, 30}, + { 29, 16, 31}, + { 2, 16, 32}, + { 82, 16, 33}, + { 48, 16, 34}, + { 121, 16, 35}, + { 80, 16, 36}, + { 137, 16, 37}, + { 102, 16, 38}, + { 152, 16, 39}, + { 119, 16, 40}, + { 30, 16, 41}, + { 129, 16, 42}, + { 36, 16, 43}, + { 135, 16, 44}, + { 42, 16, 45}, + { 144, 16, 46}, + { 45, 16, 47}, + { 151, 16, 48}, + { 17, 16, 49}, + { 28, 16, 50}, + { 32, 16, 51}, + { 35, 16, 52}, + { 40, 16, 53}, + { 41, 16, 54}, + { 43, 16, 55}, + { 44, 16, 56}, + { 46, 16, 57}, + { 47, 16, 58}, + { 51, 16, 59}, + { 57, 16, 60}, + { 62, 16, 61}, + { 68, 16, 62}, + { 73, 16, 63}, + { 75, 16, 64}, + { 76, 16, 65}, + { 77, 16, 66}, + { 78, 16, 67}, + { 79, 16, 68}, + { 88, 16, 69}, + { 93, 16, 70}, + { 94, 16, 71}, + { 95, 16, 72}, + { 96, 16, 73}, + { 97, 16, 74}, + { 98, 16, 75}, + { 99, 16, 76}, + { 100, 16, 77}, + { 101, 16, 78}, + { 104, 16, 79}, + { 109, 16, 80}, + { 110, 16, 81}, + { 111, 16, 82}, + { 113, 16, 83}, + { 114, 16, 84}, + { 115, 16, 85}, + { 116, 16, 86}, + { 117, 16, 87}, + { 118, 16, 88}, + { 124, 16, 89}, + { 130, 16, 90}, + { 139, 16, 91}, + { 145, 16, 92}, + { 153, 16, 93}, + { 18, 16, 94}, + { 52, 16, 95}, + { 89, 16, 96}, + { 105, 16, 97}, + { 125, 16, 98}, + { 131, 16, 99}, + { 140, 16, 100}, + { 146, 16, 101}, + { 154, 16, 102}, + { 19, 16, 103}, + { 53, 16, 104}, + { 90, 16, 105}, + { 106, 16, 106}, + { 126, 16, 107}, + { 132, 16, 108}, + { 141, 16, 109}, + { 147, 16, 110}, + { 155, 16, 111}, + { 20, 16, 112}, { 54, 16, 113}, - { 102, 16, 114}, - { 18, 16, 115}, - { 19, 16, 116}, - { 20, 16, 117}, - { 21, 16, 118}, - { 859, 17, 0}, - {1024, 17, 1}, - { 710, 17, 2}, - {1207, 17, 3}, - { 711, 17, 4}, - {1168, 17, 5}, - { 245, 17, 6}, - {1169, 17, 7}, - {1173, 17, 8}, - {1171, 17, 9}, - {1172, 17, 10}, - { 246, 17, 11}, - {1170, 17, 12}, - { 951, 17, 13}, - { 934, 18, 0}, - { 233, 18, 1}, - {1206, 18, 2}, - { 202, 18, 3}, - { 895, 18, 4}, - {1205, 18, 5}, - {1007, 18, 6}, - { 628, 18, 7}, - {1210, 18, 8}, - {1209, 18, 9}, - {1208, 18, 10}, - { 389, 18, 11}, - { 384, 18, 12}, - { 385, 18, 13}, - { 390, 18, 14}, - { 392, 18, 15}, - { 391, 18, 16}, - { 388, 18, 17}, - { 386, 18, 18}, - { 387, 18, 19}, - { 843, 18, 20}, - {1166, 18, 21}, - {1167, 18, 22}, - { 524, 18, 23}, - { 276, 18, 24}, - {1019, 18, 25}, - { 883, 18, 26}, - { 646, 18, 27}, - { 898, 18, 28}, - { 896, 18, 29}, - { 252, 18, 30}, + { 91, 16, 114}, + { 107, 16, 115}, + { 127, 16, 116}, + { 133, 16, 117}, + { 142, 16, 118}, + { 148, 16, 119}, + { 156, 16, 120}, + { 21, 16, 121}, + { 55, 16, 122}, + { 60, 16, 123}, + { 92, 16, 124}, + { 108, 16, 125}, + { 112, 16, 126}, + { 128, 16, 127}, + { 134, 16, 128}, + { 143, 16, 129}, + { 149, 16, 130}, + { 157, 16, 131}, + { 22, 16, 132}, + { 23, 16, 133}, + { 24, 16, 134}, + { 25, 16, 135}, + { 917, 17, 0}, + {1088, 17, 1}, + { 762, 17, 2}, + {1281, 17, 3}, + { 763, 17, 4}, + {1242, 17, 5}, + { 271, 17, 6}, + {1243, 17, 7}, + {1247, 17, 8}, + {1245, 17, 9}, + {1246, 17, 10}, + { 272, 17, 11}, + {1244, 17, 12}, + {1013, 17, 13}, + { 996, 18, 0}, + { 259, 18, 1}, + {1280, 18, 2}, + { 226, 18, 3}, + { 954, 18, 4}, + {1279, 18, 5}, + {1071, 18, 6}, + { 680, 18, 7}, + {1284, 18, 8}, + {1283, 18, 9}, + {1282, 18, 10}, + { 420, 18, 11}, + { 414, 18, 12}, + { 415, 18, 13}, + { 425, 18, 14}, + { 422, 18, 15}, + { 421, 18, 16}, + { 424, 18, 17}, + { 423, 18, 18}, + { 419, 18, 19}, + { 416, 18, 20}, + { 417, 18, 21}, + { 897, 18, 22}, + {1240, 18, 23}, + {1241, 18, 24}, + { 567, 18, 25}, + { 302, 18, 26}, + {1083, 18, 27}, + {1193, 18, 28}, + { 418, 18, 29}, + { 942, 18, 30}, + { 698, 18, 31}, + { 957, 18, 32}, + { 955, 18, 33}, + { 278, 18, 34}, }; -/* property values: 5488 bytes. */ +/* property values: 5876 bytes. */ /* Codepoints which expand on full case-folding. */ @@ -2840,22 +3015,22 @@ RE_UINT16 re_expand_on_folding[] = { static RE_UINT8 re_general_category_stage_1[] = { 0, 1, 2, 3, 4, 5, 5, 5, 5, 6, 7, 5, 5, 8, 9, 10, - 11, 12, 13, 14, 15, 15, 16, 15, 15, 15, 15, 17, 15, 18, 19, 20, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 21, 22, 15, 15, 15, 23, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 24, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 25, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 25, + 11, 12, 13, 14, 15, 16, 17, 5, 18, 16, 16, 19, 16, 20, 21, 22, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 23, 24, 25, 16, 16, 26, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 27, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 28, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 28, }; static RE_UINT8 re_general_category_stage_2[] = { @@ -2882,35 +3057,41 @@ static RE_UINT8 re_general_category_stage_2[] = { 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 34, 34, 109, 110, 111, 112, 34, 34, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 123, 34, 34, 130, 123, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 123, 123, 123, 140, 123, 123, 123, - 141, 142, 143, 144, 145, 146, 147, 123, 123, 148, 123, 149, 150, 151, 123, 123, - 123, 152, 123, 123, 123, 153, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 34, 34, 34, 34, 34, 34, 34, 154, 155, 123, 123, 123, 123, 123, 123, 123, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 123, 123, 141, 123, 123, 123, + 142, 143, 144, 145, 146, 147, 148, 123, 149, 150, 123, 151, 152, 153, 154, 123, + 123, 155, 123, 123, 123, 156, 123, 123, 157, 158, 123, 123, 123, 123, 123, 123, + 34, 34, 34, 34, 34, 34, 34, 159, 160, 34, 161, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 34, 34, 34, 34, 34, 34, 34, 34, 156, 123, 123, 123, 123, 123, 123, 123, + 34, 34, 34, 34, 34, 34, 34, 34, 162, 123, 123, 123, 123, 123, 123, 123, + 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, + 123, 123, 123, 123, 123, 123, 123, 123, 34, 34, 34, 34, 163, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 34, 34, 34, 34, 157, 158, 159, 160, 123, 123, 123, 123, 123, 123, 161, 162, - 163, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 164, 165, 123, 123, 123, 123, 123, 123, - 69, 166, 167, 168, 169, 123, 170, 123, 171, 172, 173, 174, 175, 176, 177, 178, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 34, 179, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 180, 181, 123, 123, - 182, 183, 184, 185, 186, 123, 187, 188, 69, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 198, 34, 34, + 34, 34, 34, 34, 164, 165, 166, 167, 123, 123, 123, 123, 123, 123, 168, 169, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 170, + 34, 34, 34, 34, 34, 171, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, + 172, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, + 123, 123, 123, 123, 123, 123, 123, 123, 173, 174, 123, 123, 123, 123, 123, 123, + 69, 175, 176, 177, 178, 123, 179, 123, 180, 181, 182, 183, 184, 185, 186, 187, + 69, 69, 69, 69, 188, 189, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, + 190, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, + 34, 191, 192, 123, 123, 123, 123, 123, 123, 123, 123, 123, 193, 194, 123, 123, + 195, 196, 197, 198, 199, 123, 69, 200, 69, 69, 69, 69, 69, 201, 202, 203, + 204, 205, 206, 207, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 208, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 199, 34, - 200, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 209, 34, + 210, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 211, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 34, 34, 34, 34, 200, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 201, 123, 202, 203, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, + 34, 34, 34, 34, 212, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, + 213, 123, 214, 215, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 204, + 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 216, }; static RE_UINT16 re_general_category_stage_3[] = { @@ -2922,101 +3103,107 @@ static RE_UINT16 re_general_category_stage_3[] = { 13, 13, 13, 42, 9, 43, 44, 11, 45, 46, 32, 47, 48, 49, 50, 51, 52, 53, 49, 49, 54, 32, 55, 56, 49, 49, 49, 49, 49, 57, 58, 59, 60, 61, 49, 32, 62, 49, 49, 49, 49, 49, 63, 64, 65, 49, 66, 67, - 49, 68, 69, 70, 49, 71, 72, 72, 72, 72, 49, 73, 72, 72, 74, 32, - 75, 49, 49, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 82, 83, 90, 91, 92, 93, 94, 95, 96, 83, 97, 98, 99, 87, 100, - 101, 82, 83, 102, 103, 104, 87, 105, 106, 107, 108, 109, 110, 111, 93, 112, - 113, 114, 83, 115, 116, 117, 87, 118, 119, 114, 83, 120, 121, 122, 87, 123, - 119, 114, 49, 124, 125, 126, 87, 127, 128, 129, 49, 130, 131, 132, 93, 133, - 134, 49, 49, 135, 136, 137, 72, 72, 138, 139, 140, 141, 142, 143, 72, 72, - 144, 145, 146, 147, 148, 49, 149, 150, 151, 152, 32, 153, 154, 155, 72, 72, - 49, 49, 156, 157, 158, 159, 160, 161, 162, 163, 9, 9, 164, 49, 49, 165, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 166, 167, 49, 49, - 166, 49, 49, 168, 169, 170, 49, 49, 49, 169, 49, 49, 49, 171, 172, 173, - 49, 174, 49, 49, 49, 49, 49, 175, 176, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 49, 177, 49, 178, 179, 49, 49, 49, 49, 180, 181, - 182, 183, 49, 184, 49, 185, 182, 186, 49, 49, 49, 187, 188, 189, 190, 191, - 192, 190, 49, 49, 193, 49, 49, 194, 49, 49, 195, 49, 49, 49, 49, 196, - 49, 197, 198, 199, 200, 49, 201, 175, 49, 49, 202, 203, 204, 205, 206, 206, - 49, 207, 49, 49, 49, 208, 209, 210, 190, 190, 211, 212, 72, 72, 72, 72, - 213, 49, 49, 214, 215, 158, 216, 217, 218, 49, 219, 65, 49, 49, 220, 221, - 49, 49, 222, 223, 224, 65, 49, 225, 72, 72, 72, 72, 226, 227, 228, 229, - 11, 11, 230, 27, 27, 27, 231, 232, 11, 233, 27, 27, 32, 32, 32, 234, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 235, 13, 13, 13, 13, 13, 13, - 236, 237, 236, 236, 237, 238, 236, 239, 240, 240, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 72, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 267, 268, 269, 270, 206, 271, 272, 206, 273, - 274, 274, 274, 274, 274, 274, 274, 274, 275, 206, 276, 206, 206, 206, 206, 277, - 206, 278, 274, 279, 206, 280, 281, 282, 206, 206, 283, 72, 282, 72, 266, 266, - 266, 284, 206, 206, 206, 206, 285, 266, 206, 206, 206, 206, 206, 206, 206, 206, - 206, 206, 206, 286, 287, 206, 206, 288, 206, 206, 206, 206, 206, 206, 289, 206, - 206, 206, 206, 206, 206, 206, 290, 291, 266, 292, 206, 206, 293, 274, 294, 274, - 295, 296, 274, 274, 274, 297, 274, 298, 206, 206, 206, 274, 299, 206, 206, 300, - 206, 301, 206, 302, 303, 304, 72, 72, 9, 9, 305, 11, 11, 306, 307, 308, - 13, 13, 13, 13, 13, 13, 309, 310, 11, 11, 311, 49, 49, 49, 312, 313, - 49, 314, 315, 315, 315, 315, 32, 32, 316, 317, 318, 319, 320, 72, 72, 72, - 206, 321, 206, 206, 206, 206, 206, 322, 206, 206, 206, 206, 206, 323, 72, 324, - 325, 326, 327, 328, 134, 49, 49, 49, 49, 329, 176, 49, 49, 49, 49, 330, - 331, 49, 201, 134, 49, 49, 49, 49, 197, 332, 49, 50, 206, 206, 322, 49, - 206, 333, 334, 206, 335, 336, 206, 206, 334, 206, 206, 336, 206, 206, 206, 333, - 49, 49, 49, 196, 206, 206, 206, 206, 49, 49, 49, 49, 149, 72, 72, 72, - 49, 337, 49, 49, 49, 49, 49, 49, 149, 206, 206, 206, 283, 49, 49, 225, - 338, 49, 339, 72, 13, 13, 340, 341, 13, 342, 49, 49, 49, 49, 343, 344, - 31, 345, 346, 347, 13, 13, 13, 348, 349, 350, 351, 352, 72, 72, 72, 353, - 354, 49, 355, 356, 49, 49, 49, 357, 358, 49, 49, 359, 360, 190, 32, 361, - 65, 49, 362, 49, 363, 364, 49, 149, 75, 49, 49, 365, 366, 367, 368, 369, - 49, 49, 370, 371, 372, 373, 49, 374, 49, 49, 49, 375, 376, 377, 378, 379, - 380, 381, 315, 11, 11, 382, 383, 72, 72, 72, 72, 72, 49, 49, 384, 190, - 49, 49, 385, 49, 386, 49, 49, 202, 387, 387, 387, 387, 387, 387, 387, 387, - 388, 388, 388, 388, 388, 388, 388, 388, 49, 49, 49, 49, 49, 49, 201, 49, - 49, 49, 49, 49, 49, 389, 72, 72, 390, 391, 392, 393, 394, 49, 49, 49, - 49, 49, 49, 395, 396, 397, 49, 49, 49, 49, 49, 398, 72, 49, 49, 49, - 49, 399, 49, 49, 194, 72, 72, 400, 32, 401, 402, 403, 404, 405, 406, 407, - 49, 49, 49, 49, 49, 49, 49, 408, 409, 2, 3, 4, 5, 410, 411, 412, - 49, 413, 49, 197, 414, 415, 416, 417, 418, 49, 170, 419, 201, 201, 72, 72, - 49, 49, 49, 49, 49, 49, 49, 50, 420, 266, 266, 421, 267, 267, 267, 422, - 423, 324, 424, 72, 72, 206, 206, 425, 72, 72, 72, 72, 72, 72, 72, 72, - 49, 149, 49, 49, 49, 99, 426, 427, 49, 49, 428, 49, 429, 49, 49, 430, - 49, 431, 49, 49, 432, 433, 72, 72, 9, 9, 434, 11, 11, 49, 49, 49, - 49, 201, 190, 72, 72, 72, 72, 72, 49, 49, 194, 49, 49, 49, 435, 72, - 49, 49, 49, 314, 49, 196, 194, 72, 436, 49, 49, 437, 49, 438, 49, 439, - 49, 197, 440, 72, 72, 72, 72, 72, 49, 441, 49, 442, 72, 72, 72, 72, - 49, 49, 49, 443, 72, 72, 72, 72, 444, 445, 49, 446, 447, 448, 49, 449, - 49, 450, 72, 72, 451, 49, 452, 453, 49, 49, 49, 454, 49, 455, 49, 456, - 49, 457, 458, 72, 72, 72, 72, 72, 49, 49, 49, 49, 459, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 266, 460, 461, 49, 49, 462, 463, 464, 465, 466, - 218, 49, 49, 467, 468, 49, 459, 190, 469, 49, 470, 471, 472, 49, 49, 473, - 218, 49, 49, 474, 475, 476, 477, 478, 49, 96, 479, 480, 72, 72, 72, 72, - 72, 72, 72, 49, 49, 481, 482, 190, 101, 82, 83, 97, 483, 484, 485, 486, - 49, 49, 49, 487, 488, 190, 72, 72, 49, 49, 489, 490, 491, 72, 72, 72, - 49, 49, 49, 492, 493, 190, 72, 72, 49, 49, 494, 495, 190, 72, 72, 72, - 72, 72, 9, 9, 11, 11, 146, 496, 72, 72, 72, 72, 49, 49, 49, 459, - 49, 459, 72, 72, 72, 72, 72, 72, 267, 267, 267, 267, 267, 267, 497, 498, - 49, 49, 197, 72, 72, 72, 72, 72, 49, 49, 49, 459, 49, 197, 367, 72, - 72, 72, 72, 72, 72, 49, 201, 499, 49, 49, 49, 500, 501, 502, 503, 504, - 49, 72, 72, 72, 72, 72, 72, 72, 49, 49, 49, 49, 175, 505, 203, 506, - 466, 507, 72, 72, 72, 72, 72, 72, 508, 72, 72, 72, 72, 72, 72, 72, - 49, 49, 49, 49, 49, 49, 50, 149, 459, 509, 510, 72, 72, 72, 72, 72, - 206, 206, 206, 206, 206, 206, 206, 323, 206, 206, 511, 206, 206, 206, 512, 513, - 514, 206, 515, 206, 206, 516, 72, 72, 206, 206, 206, 206, 517, 72, 72, 72, - 206, 206, 206, 206, 206, 283, 266, 518, 9, 519, 11, 520, 521, 522, 236, 9, - 523, 524, 525, 526, 527, 9, 519, 11, 528, 529, 11, 530, 531, 532, 533, 9, - 534, 11, 9, 519, 11, 520, 521, 11, 236, 9, 523, 533, 9, 534, 11, 9, - 519, 11, 535, 9, 536, 537, 538, 539, 11, 540, 9, 541, 542, 543, 544, 11, - 545, 9, 546, 11, 547, 548, 548, 548, 49, 49, 49, 49, 549, 550, 72, 72, - 551, 49, 552, 553, 554, 555, 556, 557, 558, 202, 559, 202, 72, 72, 72, 560, - 206, 206, 324, 206, 206, 206, 206, 206, 206, 322, 333, 561, 561, 561, 206, 323, - 173, 206, 333, 206, 206, 206, 324, 206, 206, 282, 72, 72, 72, 72, 562, 206, - 563, 206, 206, 282, 564, 304, 72, 72, 206, 206, 565, 206, 206, 206, 206, 516, - 206, 206, 206, 206, 333, 566, 206, 567, 206, 206, 206, 206, 206, 206, 206, 333, - 206, 206, 206, 206, 282, 206, 206, 321, 206, 206, 568, 206, 206, 206, 206, 206, - 206, 206, 206, 206, 569, 206, 206, 206, 206, 206, 206, 206, 206, 72, 565, 322, - 206, 206, 206, 206, 206, 206, 206, 322, 206, 206, 206, 206, 206, 570, 72, 72, - 324, 206, 206, 206, 567, 174, 206, 206, 567, 206, 516, 72, 72, 72, 72, 72, - 49, 49, 49, 49, 49, 314, 72, 72, 49, 49, 49, 175, 49, 49, 49, 49, - 49, 201, 72, 72, 72, 72, 72, 72, 571, 72, 572, 572, 572, 572, 572, 572, + 49, 68, 69, 70, 49, 71, 72, 72, 72, 72, 49, 73, 72, 74, 75, 32, + 76, 49, 49, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 83, 84, 91, 92, 93, 94, 95, 96, 97, 84, 98, 99, 100, 88, 101, + 102, 83, 84, 103, 104, 105, 88, 106, 107, 108, 109, 110, 111, 112, 94, 113, + 114, 115, 84, 116, 117, 118, 88, 119, 120, 115, 84, 121, 122, 123, 88, 124, + 125, 115, 49, 126, 127, 128, 88, 129, 130, 131, 49, 132, 133, 134, 94, 135, + 136, 49, 49, 137, 138, 139, 72, 72, 140, 141, 142, 143, 144, 145, 72, 72, + 146, 147, 148, 149, 150, 49, 151, 152, 153, 154, 32, 155, 156, 157, 72, 72, + 49, 49, 158, 159, 160, 161, 162, 163, 164, 165, 9, 9, 166, 49, 49, 167, + 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 168, 169, 49, 49, + 168, 49, 49, 170, 171, 172, 49, 49, 49, 171, 49, 49, 49, 173, 174, 175, + 49, 176, 9, 9, 9, 9, 9, 177, 178, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 179, 49, 180, 181, 49, 49, 49, 49, 182, 183, + 184, 185, 49, 186, 49, 187, 184, 188, 49, 49, 49, 189, 190, 191, 192, 193, + 194, 192, 49, 49, 195, 49, 49, 196, 197, 49, 198, 49, 49, 49, 49, 199, + 49, 200, 201, 202, 203, 49, 204, 205, 49, 49, 206, 49, 207, 208, 209, 209, + 49, 210, 49, 49, 49, 211, 212, 213, 192, 192, 214, 215, 72, 72, 72, 72, + 216, 49, 49, 217, 218, 160, 219, 220, 221, 49, 222, 65, 49, 49, 223, 224, + 49, 49, 225, 226, 227, 65, 49, 228, 229, 72, 72, 72, 230, 231, 232, 233, + 11, 11, 234, 27, 27, 27, 235, 236, 11, 237, 27, 27, 32, 32, 32, 238, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 239, 13, 13, 13, 13, 13, 13, + 240, 241, 240, 240, 241, 242, 240, 243, 244, 244, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 72, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 271, 272, 273, 274, 209, 275, 276, 209, 277, + 278, 278, 278, 278, 278, 278, 278, 278, 279, 209, 280, 209, 209, 209, 209, 281, + 209, 282, 278, 283, 209, 284, 285, 286, 209, 209, 287, 72, 288, 72, 270, 270, + 270, 289, 209, 209, 209, 209, 290, 270, 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 291, 292, 209, 209, 293, 209, 209, 209, 209, 209, 209, 294, 209, + 209, 209, 209, 209, 209, 209, 295, 296, 270, 297, 209, 209, 298, 278, 299, 278, + 300, 301, 278, 278, 278, 302, 278, 303, 209, 209, 209, 278, 304, 209, 209, 305, + 209, 306, 209, 307, 308, 309, 310, 72, 9, 9, 311, 11, 11, 312, 313, 314, + 13, 13, 13, 13, 13, 13, 315, 316, 11, 11, 317, 49, 49, 49, 318, 319, + 49, 320, 321, 321, 321, 321, 32, 32, 322, 323, 324, 325, 326, 72, 72, 72, + 209, 327, 209, 209, 209, 209, 209, 328, 209, 209, 209, 209, 209, 329, 72, 330, + 331, 332, 333, 334, 136, 49, 49, 49, 49, 335, 178, 49, 49, 49, 49, 336, + 337, 49, 204, 136, 49, 49, 49, 49, 200, 338, 49, 50, 209, 209, 328, 49, + 209, 286, 339, 209, 340, 341, 209, 209, 339, 209, 209, 341, 209, 209, 209, 286, + 49, 49, 49, 199, 209, 209, 209, 209, 49, 49, 49, 49, 49, 199, 72, 72, + 49, 342, 49, 49, 49, 49, 49, 49, 151, 209, 209, 209, 287, 49, 49, 228, + 343, 49, 344, 72, 13, 13, 345, 346, 13, 347, 49, 49, 49, 49, 348, 349, + 31, 350, 351, 352, 13, 13, 13, 353, 354, 355, 356, 357, 72, 72, 72, 358, + 359, 49, 360, 361, 49, 49, 49, 362, 363, 49, 49, 364, 365, 192, 32, 366, + 65, 49, 367, 49, 368, 369, 49, 151, 76, 49, 49, 370, 371, 372, 373, 374, + 49, 49, 375, 376, 377, 378, 49, 379, 49, 49, 49, 380, 381, 382, 383, 384, + 385, 386, 321, 11, 11, 387, 388, 11, 11, 11, 11, 11, 49, 49, 389, 192, + 49, 49, 390, 49, 391, 49, 49, 206, 392, 392, 392, 392, 392, 392, 392, 392, + 393, 393, 393, 393, 393, 393, 393, 393, 49, 49, 49, 49, 49, 49, 204, 49, + 49, 49, 49, 49, 49, 207, 72, 72, 394, 395, 396, 397, 398, 49, 49, 49, + 49, 49, 49, 399, 400, 401, 49, 49, 49, 49, 49, 402, 72, 49, 49, 49, + 49, 403, 49, 49, 196, 72, 72, 404, 32, 405, 32, 406, 407, 408, 409, 410, + 49, 49, 49, 49, 49, 49, 49, 411, 412, 2, 3, 4, 5, 413, 414, 415, + 49, 416, 49, 200, 417, 418, 419, 420, 421, 49, 172, 422, 204, 204, 72, 72, + 49, 49, 49, 49, 49, 49, 49, 50, 423, 270, 270, 424, 271, 271, 271, 425, + 426, 330, 427, 72, 72, 209, 209, 428, 72, 72, 72, 72, 72, 72, 72, 72, + 49, 151, 49, 49, 49, 100, 429, 430, 49, 49, 431, 49, 432, 49, 49, 433, + 49, 434, 49, 49, 435, 436, 72, 72, 9, 9, 437, 11, 11, 49, 49, 49, + 49, 204, 192, 9, 9, 438, 11, 439, 49, 49, 196, 49, 49, 49, 440, 72, + 49, 49, 49, 320, 49, 199, 196, 72, 441, 49, 49, 442, 49, 443, 49, 444, + 49, 200, 445, 72, 72, 72, 49, 446, 49, 447, 49, 448, 72, 72, 72, 72, + 49, 49, 49, 449, 270, 450, 270, 270, 451, 452, 49, 453, 454, 455, 49, 456, + 49, 457, 72, 72, 458, 49, 459, 460, 49, 49, 49, 461, 49, 462, 49, 463, + 49, 464, 465, 72, 72, 72, 72, 72, 49, 49, 49, 49, 466, 72, 72, 72, + 9, 9, 9, 467, 11, 11, 11, 468, 72, 72, 72, 72, 72, 72, 270, 469, + 470, 49, 49, 471, 472, 450, 473, 474, 221, 49, 49, 475, 476, 49, 466, 192, + 477, 49, 478, 479, 480, 49, 49, 481, 221, 49, 49, 482, 483, 484, 485, 486, + 49, 97, 487, 488, 72, 72, 72, 72, 489, 490, 491, 49, 49, 492, 493, 192, + 494, 83, 84, 98, 495, 496, 497, 498, 49, 49, 49, 499, 500, 501, 72, 72, + 49, 49, 49, 502, 503, 192, 72, 72, 49, 49, 504, 505, 506, 507, 72, 72, + 49, 49, 49, 508, 509, 192, 510, 72, 49, 49, 511, 512, 192, 72, 72, 72, + 49, 513, 514, 515, 72, 72, 72, 72, 72, 72, 9, 9, 11, 11, 148, 516, + 72, 72, 72, 72, 49, 49, 49, 466, 84, 49, 504, 517, 518, 148, 175, 519, + 49, 520, 521, 522, 72, 72, 72, 72, 49, 207, 72, 72, 72, 72, 72, 72, + 271, 271, 271, 271, 271, 271, 523, 524, 49, 49, 49, 49, 390, 72, 72, 72, + 49, 49, 200, 72, 72, 72, 72, 72, 49, 49, 49, 49, 320, 72, 72, 72, + 49, 49, 49, 466, 49, 200, 372, 72, 72, 72, 72, 72, 72, 49, 204, 525, + 49, 49, 49, 526, 527, 528, 529, 530, 49, 72, 72, 72, 72, 72, 72, 72, + 49, 49, 49, 49, 205, 531, 532, 533, 474, 534, 72, 72, 72, 72, 535, 72, + 49, 49, 49, 49, 49, 49, 151, 72, 49, 49, 49, 49, 49, 49, 49, 536, + 537, 72, 72, 72, 72, 72, 72, 72, 49, 49, 49, 49, 49, 49, 50, 151, + 466, 538, 539, 72, 72, 72, 72, 72, 209, 209, 209, 209, 209, 209, 209, 329, + 209, 209, 540, 209, 209, 209, 541, 542, 543, 209, 544, 209, 209, 209, 545, 72, + 209, 209, 209, 209, 546, 72, 72, 72, 209, 209, 209, 209, 209, 287, 270, 547, + 9, 548, 11, 549, 550, 551, 240, 9, 552, 553, 554, 555, 556, 9, 548, 11, + 557, 558, 11, 559, 560, 561, 562, 9, 563, 11, 9, 548, 11, 549, 550, 11, + 240, 9, 552, 562, 9, 563, 11, 9, 548, 11, 564, 9, 565, 566, 567, 568, + 11, 569, 9, 570, 571, 572, 573, 11, 574, 9, 575, 11, 576, 577, 577, 577, + 32, 32, 32, 578, 32, 32, 579, 580, 581, 582, 46, 72, 72, 72, 72, 72, + 583, 584, 585, 72, 72, 72, 72, 72, 49, 49, 49, 49, 586, 587, 72, 72, + 9, 9, 552, 11, 588, 372, 72, 72, 589, 49, 590, 591, 592, 593, 594, 595, + 596, 206, 597, 206, 72, 72, 72, 598, 209, 209, 330, 209, 209, 209, 209, 209, + 209, 328, 286, 599, 599, 599, 209, 329, 175, 209, 286, 209, 209, 209, 330, 209, + 209, 209, 600, 72, 72, 72, 601, 209, 602, 209, 209, 330, 545, 309, 72, 72, + 209, 209, 209, 209, 209, 209, 209, 603, 209, 209, 209, 209, 209, 602, 600, 287, + 209, 209, 209, 209, 209, 209, 209, 328, 209, 209, 209, 209, 209, 604, 72, 72, + 330, 209, 209, 209, 605, 176, 209, 209, 605, 209, 606, 72, 72, 72, 72, 72, + 72, 286, 605, 607, 330, 286, 72, 72, 209, 309, 72, 72, 427, 72, 72, 72, + 49, 49, 49, 49, 49, 320, 72, 72, 49, 49, 49, 205, 49, 49, 49, 49, + 49, 204, 49, 49, 49, 49, 49, 49, 49, 49, 537, 72, 72, 72, 72, 72, + 49, 204, 72, 72, 72, 72, 72, 72, 608, 72, 609, 609, 609, 609, 609, 609, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 72, - 388, 388, 388, 388, 388, 388, 388, 573, + 393, 393, 393, 393, 393, 393, 393, 610, }; static RE_UINT8 re_general_category_stage_4[] = { @@ -3056,257 +3243,276 @@ static RE_UINT8 re_general_category_stage_4[] = { 36, 36, 36, 36, 36, 70, 43, 43, 43, 43, 40, 21, 2, 82, 44, 44, 36, 36, 36, 43, 43, 75, 43, 43, 43, 43, 75, 43, 75, 43, 43, 44, 2, 2, 2, 2, 2, 2, 2, 64, 36, 36, 36, 36, 70, 43, 44, 64, - 44, 44, 44, 44, 44, 44, 44, 44, 36, 62, 44, 44, 44, 44, 44, 44, - 44, 44, 43, 43, 43, 43, 43, 43, 43, 83, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 83, 71, 84, 85, 43, 43, 43, 83, 84, 85, 84, - 70, 43, 43, 43, 36, 36, 36, 36, 36, 43, 2, 7, 7, 7, 7, 7, - 86, 36, 36, 36, 36, 36, 36, 36, 70, 84, 81, 36, 36, 36, 62, 81, - 62, 81, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 62, 36, 36, 36, - 62, 62, 44, 36, 36, 44, 71, 84, 85, 43, 80, 87, 88, 87, 85, 62, - 44, 44, 44, 87, 44, 44, 36, 81, 36, 43, 44, 7, 7, 7, 7, 7, - 36, 20, 27, 27, 27, 57, 44, 44, 58, 83, 81, 36, 36, 62, 44, 81, - 62, 36, 81, 62, 36, 44, 80, 84, 85, 80, 44, 58, 80, 58, 43, 44, - 58, 44, 44, 44, 81, 36, 62, 62, 44, 44, 44, 7, 7, 7, 7, 7, - 43, 36, 70, 44, 44, 44, 44, 44, 58, 83, 81, 36, 36, 36, 36, 81, - 36, 81, 36, 36, 36, 36, 36, 36, 62, 36, 81, 36, 36, 44, 71, 84, - 85, 43, 43, 58, 83, 87, 85, 44, 62, 44, 44, 44, 44, 44, 44, 44, - 66, 44, 44, 44, 44, 44, 44, 44, 58, 84, 81, 36, 36, 36, 62, 81, - 62, 36, 81, 36, 36, 44, 71, 85, 85, 43, 80, 87, 88, 87, 85, 44, - 44, 44, 44, 83, 44, 44, 36, 81, 78, 27, 27, 27, 44, 44, 44, 44, - 44, 71, 81, 36, 36, 62, 44, 36, 62, 36, 36, 44, 81, 62, 62, 36, - 44, 81, 62, 44, 36, 62, 44, 36, 36, 36, 36, 36, 36, 44, 44, 84, - 83, 88, 44, 84, 88, 84, 85, 44, 62, 44, 44, 87, 44, 44, 44, 44, - 27, 89, 67, 67, 57, 90, 44, 44, 83, 84, 81, 36, 36, 36, 62, 36, - 62, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 44, 81, 43, - 83, 84, 88, 43, 80, 43, 43, 44, 44, 44, 58, 80, 36, 44, 44, 44, - 44, 44, 44, 44, 27, 27, 27, 89, 58, 84, 81, 36, 36, 36, 62, 36, - 36, 36, 81, 36, 36, 44, 71, 85, 84, 84, 88, 83, 88, 84, 43, 44, - 44, 44, 87, 88, 44, 44, 44, 62, 81, 62, 44, 44, 44, 44, 44, 44, - 36, 36, 36, 36, 36, 62, 81, 84, 85, 43, 80, 84, 88, 84, 85, 62, - 44, 44, 44, 87, 44, 44, 44, 44, 27, 27, 27, 44, 56, 36, 36, 36, - 44, 84, 81, 36, 36, 36, 36, 36, 36, 36, 36, 62, 44, 36, 36, 36, - 36, 81, 36, 36, 36, 36, 81, 44, 36, 36, 36, 62, 44, 80, 44, 87, - 84, 43, 80, 80, 84, 84, 84, 84, 44, 84, 64, 44, 44, 44, 44, 44, - 81, 36, 36, 36, 36, 36, 36, 36, 70, 36, 43, 43, 43, 80, 44, 91, + 44, 44, 44, 44, 44, 44, 44, 44, 36, 36, 62, 36, 36, 36, 36, 44, + 44, 44, 43, 43, 43, 43, 43, 43, 43, 83, 43, 43, 43, 43, 43, 43, + 43, 84, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 84, 71, 85, + 86, 43, 43, 43, 84, 85, 86, 85, 70, 43, 43, 43, 36, 36, 36, 36, + 36, 43, 2, 7, 7, 7, 7, 7, 87, 36, 36, 36, 36, 36, 36, 36, + 70, 85, 81, 36, 36, 36, 62, 81, 62, 81, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 62, 36, 36, 36, 62, 62, 44, 36, 36, 44, 71, 85, + 86, 43, 80, 88, 89, 88, 86, 62, 44, 44, 44, 88, 44, 44, 36, 81, + 36, 43, 44, 7, 7, 7, 7, 7, 36, 20, 27, 27, 27, 57, 44, 44, + 58, 84, 81, 36, 36, 62, 44, 81, 62, 36, 81, 62, 36, 44, 80, 85, + 86, 80, 44, 58, 80, 58, 43, 44, 58, 44, 44, 44, 81, 36, 62, 62, + 44, 44, 44, 7, 7, 7, 7, 7, 43, 36, 70, 44, 44, 44, 44, 44, + 58, 84, 81, 36, 36, 36, 36, 81, 36, 81, 36, 36, 36, 36, 36, 36, + 62, 36, 81, 36, 36, 44, 71, 85, 86, 43, 43, 58, 84, 88, 86, 44, + 62, 44, 44, 44, 44, 44, 44, 44, 66, 44, 44, 44, 81, 44, 44, 44, + 58, 85, 81, 36, 36, 36, 62, 81, 62, 36, 81, 36, 36, 44, 71, 86, + 86, 43, 80, 88, 89, 88, 86, 44, 44, 44, 44, 84, 44, 44, 36, 81, + 78, 27, 27, 27, 44, 44, 44, 44, 44, 71, 81, 36, 36, 62, 44, 36, + 62, 36, 36, 44, 81, 62, 62, 36, 44, 81, 62, 44, 36, 62, 44, 36, + 36, 36, 36, 36, 36, 44, 44, 85, 84, 89, 44, 85, 89, 85, 86, 44, + 62, 44, 44, 88, 44, 44, 44, 44, 27, 90, 67, 67, 57, 91, 44, 44, + 84, 85, 81, 36, 36, 36, 62, 36, 62, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 44, 81, 43, 84, 85, 89, 43, 80, 43, 43, 44, + 44, 44, 58, 80, 36, 62, 44, 44, 44, 44, 44, 44, 27, 27, 27, 90, + 70, 85, 81, 36, 36, 36, 62, 36, 36, 36, 81, 36, 36, 44, 71, 86, + 85, 85, 89, 84, 89, 85, 43, 44, 44, 44, 88, 89, 44, 44, 44, 62, + 81, 62, 44, 44, 44, 44, 44, 44, 58, 85, 81, 36, 36, 36, 62, 36, + 36, 36, 36, 36, 36, 62, 81, 85, 86, 43, 80, 85, 89, 85, 86, 77, + 44, 44, 36, 92, 27, 27, 27, 93, 27, 27, 27, 27, 90, 36, 36, 36, + 44, 85, 81, 36, 36, 36, 36, 36, 36, 36, 36, 62, 44, 36, 36, 36, + 36, 81, 36, 36, 36, 36, 81, 44, 36, 36, 36, 62, 44, 80, 44, 88, + 85, 43, 80, 80, 85, 85, 85, 85, 44, 85, 64, 44, 44, 44, 44, 44, + 81, 36, 36, 36, 36, 36, 36, 36, 70, 36, 43, 43, 43, 80, 44, 94, 36, 36, 36, 75, 43, 43, 43, 61, 7, 7, 7, 7, 7, 2, 44, 44, 81, 62, 62, 81, 62, 62, 81, 44, 44, 44, 36, 36, 81, 36, 36, 36, 81, 36, 81, 81, 44, 36, 81, 36, 70, 36, 43, 43, 43, 58, 71, 44, 36, 36, 62, 82, 43, 43, 43, 44, 7, 7, 7, 7, 7, 44, 36, 36, - 77, 67, 2, 2, 2, 2, 2, 2, 2, 92, 92, 67, 43, 67, 67, 67, - 7, 7, 7, 7, 7, 27, 27, 27, 27, 27, 50, 50, 50, 4, 4, 84, + 77, 67, 2, 2, 2, 2, 2, 2, 2, 95, 95, 67, 43, 67, 67, 67, + 7, 7, 7, 7, 7, 27, 27, 27, 27, 27, 50, 50, 50, 4, 4, 85, 36, 36, 36, 36, 81, 36, 36, 36, 36, 36, 36, 36, 36, 36, 62, 44, - 58, 43, 43, 43, 43, 43, 43, 83, 43, 43, 61, 43, 36, 36, 70, 43, + 58, 43, 43, 43, 43, 43, 43, 84, 43, 43, 61, 43, 36, 36, 70, 43, 43, 43, 43, 43, 58, 43, 43, 43, 43, 43, 43, 43, 43, 43, 80, 67, - 67, 67, 67, 76, 67, 67, 90, 67, 2, 2, 92, 67, 21, 64, 44, 44, - 36, 36, 36, 36, 36, 93, 85, 43, 83, 43, 43, 43, 85, 83, 85, 71, - 7, 7, 7, 7, 7, 2, 2, 2, 36, 36, 36, 84, 43, 36, 36, 43, - 71, 84, 94, 93, 84, 84, 84, 36, 70, 43, 71, 36, 36, 36, 36, 36, - 36, 83, 85, 83, 84, 84, 85, 93, 7, 7, 7, 7, 7, 84, 85, 67, + 67, 67, 67, 76, 67, 67, 91, 67, 2, 2, 95, 67, 21, 64, 44, 44, + 36, 36, 36, 36, 36, 92, 86, 43, 84, 43, 43, 43, 86, 84, 86, 71, + 7, 7, 7, 7, 7, 2, 2, 2, 36, 36, 36, 85, 43, 36, 36, 43, + 71, 85, 96, 92, 85, 85, 85, 36, 70, 43, 71, 36, 36, 36, 36, 36, + 36, 84, 86, 84, 85, 85, 86, 92, 7, 7, 7, 7, 7, 85, 86, 67, 11, 11, 11, 48, 44, 44, 48, 44, 36, 36, 36, 36, 36, 63, 69, 36, 36, 36, 36, 36, 62, 36, 36, 44, 36, 36, 36, 62, 62, 36, 36, 44, 62, 36, 36, 44, 36, 36, 36, 62, 62, 36, 36, 44, 36, 36, 36, 36, 36, 36, 36, 62, 36, 36, 36, 36, 36, 36, 36, 36, 36, 62, 58, 43, - 2, 2, 2, 2, 95, 27, 27, 27, 27, 27, 27, 27, 27, 27, 96, 44, - 67, 67, 67, 67, 67, 44, 44, 44, 36, 36, 62, 44, 44, 44, 44, 44, - 97, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 63, 72, - 98, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 99, 100, 44, - 36, 36, 36, 36, 36, 63, 2, 101, 102, 36, 36, 36, 62, 44, 44, 44, + 2, 2, 2, 2, 97, 27, 27, 27, 27, 27, 27, 27, 27, 27, 98, 44, + 67, 67, 67, 67, 67, 44, 44, 44, 11, 11, 11, 44, 16, 16, 16, 44, + 99, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 63, 72, + 100, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 101, 102, 44, + 36, 36, 36, 36, 36, 63, 2, 103, 104, 36, 36, 36, 62, 44, 44, 44, 36, 36, 36, 36, 36, 36, 62, 36, 36, 43, 80, 44, 44, 44, 44, 44, 36, 43, 61, 64, 44, 44, 44, 44, 36, 43, 44, 44, 44, 44, 44, 44, - 62, 43, 44, 44, 44, 44, 44, 44, 36, 36, 43, 85, 43, 43, 43, 84, - 84, 84, 84, 83, 85, 43, 43, 43, 43, 43, 2, 86, 2, 66, 70, 44, + 62, 43, 44, 44, 44, 44, 44, 44, 36, 36, 43, 86, 43, 43, 43, 85, + 85, 85, 85, 84, 86, 43, 43, 43, 43, 43, 2, 87, 2, 66, 70, 44, 7, 7, 7, 7, 7, 44, 44, 44, 27, 27, 27, 27, 27, 44, 44, 44, - 2, 2, 2, 103, 2, 60, 43, 68, 36, 104, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 44, 44, 44, 44, 36, 36, 36, 36, 70, 62, 44, 44, - 36, 36, 36, 44, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, 36, 62, - 43, 83, 84, 85, 83, 84, 44, 44, 84, 83, 84, 84, 85, 43, 44, 44, - 90, 44, 2, 7, 7, 7, 7, 7, 36, 36, 36, 36, 36, 36, 36, 44, - 36, 36, 36, 36, 36, 36, 44, 44, 84, 84, 84, 84, 84, 84, 84, 84, - 94, 36, 36, 36, 84, 44, 44, 44, 7, 7, 7, 7, 7, 96, 44, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 36, 36, 36, 70, 83, 85, 44, 2, - 36, 36, 93, 83, 43, 43, 43, 80, 83, 83, 85, 43, 43, 43, 83, 84, - 84, 85, 43, 43, 43, 43, 80, 58, 2, 2, 2, 86, 2, 2, 2, 44, - 43, 43, 43, 43, 43, 43, 43, 105, 43, 43, 94, 36, 36, 36, 36, 36, - 36, 36, 83, 43, 43, 83, 83, 84, 84, 83, 94, 36, 36, 36, 44, 44, - 92, 67, 67, 67, 67, 50, 43, 43, 43, 43, 67, 67, 67, 67, 90, 44, - 43, 94, 36, 36, 36, 36, 36, 36, 93, 43, 43, 84, 43, 85, 43, 36, - 36, 36, 36, 83, 43, 84, 85, 85, 43, 84, 44, 44, 44, 44, 2, 2, - 36, 36, 84, 84, 84, 84, 43, 43, 43, 43, 84, 43, 44, 54, 2, 2, - 7, 7, 7, 7, 7, 44, 81, 36, 36, 36, 36, 36, 40, 40, 40, 2, + 2, 2, 2, 105, 2, 60, 43, 68, 36, 106, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 44, 44, 44, 44, 36, 36, 70, 71, 36, 36, 36, 36, + 36, 36, 36, 36, 70, 62, 44, 44, 36, 36, 36, 44, 44, 44, 44, 44, + 36, 36, 36, 36, 36, 36, 36, 62, 43, 84, 85, 86, 84, 85, 44, 44, + 85, 84, 85, 85, 86, 43, 44, 44, 91, 44, 2, 7, 7, 7, 7, 7, + 36, 36, 36, 36, 36, 36, 36, 44, 36, 36, 62, 44, 44, 44, 44, 44, + 36, 36, 36, 36, 36, 36, 44, 44, 36, 36, 36, 36, 36, 44, 44, 44, + 7, 7, 7, 7, 7, 98, 44, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 36, 36, 36, 70, 84, 86, 44, 2, 36, 36, 92, 84, 43, 43, 43, 80, + 84, 84, 86, 43, 43, 43, 84, 85, 85, 86, 43, 43, 43, 43, 80, 58, + 2, 2, 2, 87, 2, 2, 2, 44, 43, 43, 43, 43, 43, 43, 43, 107, + 43, 43, 96, 36, 36, 36, 36, 36, 36, 36, 84, 43, 43, 84, 84, 85, + 85, 84, 96, 36, 36, 36, 44, 44, 95, 67, 67, 67, 67, 50, 43, 43, + 43, 43, 67, 67, 67, 67, 91, 44, 43, 96, 36, 36, 36, 36, 36, 36, + 92, 43, 43, 85, 43, 86, 43, 36, 36, 36, 36, 84, 43, 85, 86, 86, + 43, 85, 44, 44, 44, 44, 2, 2, 36, 36, 85, 85, 85, 85, 43, 43, + 43, 43, 85, 43, 44, 54, 2, 2, 7, 7, 7, 7, 7, 44, 81, 36, + 36, 36, 36, 36, 40, 40, 40, 2, 16, 16, 16, 16, 108, 44, 44, 44, 2, 2, 2, 2, 44, 44, 44, 44, 43, 61, 43, 43, 43, 43, 43, 43, - 83, 43, 43, 43, 71, 36, 70, 36, 36, 84, 71, 62, 43, 44, 44, 44, + 84, 43, 43, 43, 71, 36, 70, 36, 36, 85, 71, 62, 43, 44, 44, 44, 16, 16, 16, 16, 16, 16, 40, 40, 40, 40, 40, 40, 40, 45, 16, 16, - 16, 16, 16, 16, 45, 16, 16, 16, 16, 16, 16, 16, 16, 106, 40, 40, - 43, 43, 43, 44, 44, 44, 43, 43, 32, 32, 32, 16, 16, 16, 16, 32, + 16, 16, 16, 16, 45, 16, 16, 16, 16, 16, 16, 16, 16, 109, 40, 40, + 43, 43, 43, 44, 44, 58, 43, 43, 32, 32, 32, 16, 16, 16, 16, 32, 16, 16, 16, 16, 11, 11, 11, 11, 16, 16, 16, 44, 11, 11, 11, 44, 16, 16, 16, 16, 48, 48, 48, 48, 16, 16, 16, 16, 16, 16, 16, 44, - 16, 16, 16, 16, 107, 107, 107, 107, 16, 16, 108, 16, 11, 11, 109, 110, - 41, 16, 108, 16, 11, 11, 109, 41, 16, 16, 44, 16, 11, 11, 111, 41, - 16, 16, 16, 16, 11, 11, 112, 41, 44, 16, 108, 16, 11, 11, 109, 113, - 114, 114, 114, 114, 114, 115, 65, 65, 116, 116, 116, 2, 117, 118, 117, 118, - 2, 2, 2, 2, 119, 65, 65, 120, 2, 2, 2, 2, 121, 122, 2, 123, - 124, 2, 125, 126, 2, 2, 2, 2, 2, 9, 124, 2, 2, 2, 2, 127, - 65, 65, 68, 65, 65, 65, 65, 65, 128, 44, 27, 27, 27, 8, 125, 129, - 27, 27, 27, 27, 27, 8, 125, 100, 40, 40, 40, 40, 40, 40, 82, 44, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 44, - 43, 43, 43, 43, 43, 43, 130, 51, 131, 51, 131, 43, 43, 43, 43, 43, - 80, 44, 44, 44, 44, 44, 44, 44, 67, 132, 67, 133, 67, 34, 11, 16, - 11, 32, 133, 67, 49, 11, 11, 67, 67, 67, 132, 132, 132, 11, 11, 134, - 11, 11, 35, 36, 39, 67, 16, 11, 8, 8, 49, 16, 16, 26, 67, 135, - 27, 27, 27, 27, 27, 27, 27, 27, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 136, 137, 101, 138, 44, 44, 44, 8, 8, 139, 67, 67, 8, 67, 67, - 139, 26, 67, 139, 67, 67, 67, 139, 67, 67, 67, 67, 67, 67, 67, 8, - 67, 139, 139, 67, 67, 67, 67, 67, 67, 67, 8, 8, 8, 8, 8, 8, + 16, 16, 16, 16, 110, 110, 110, 110, 16, 16, 108, 16, 11, 11, 111, 112, + 41, 16, 108, 16, 11, 11, 111, 41, 16, 16, 44, 16, 11, 11, 113, 41, + 16, 16, 16, 16, 11, 11, 114, 41, 44, 16, 108, 16, 11, 11, 111, 115, + 116, 116, 116, 116, 116, 117, 65, 65, 118, 118, 118, 2, 119, 120, 119, 120, + 2, 2, 2, 2, 121, 65, 65, 122, 2, 2, 2, 2, 123, 124, 2, 125, + 126, 2, 127, 128, 2, 2, 2, 2, 2, 9, 126, 2, 2, 2, 2, 129, + 65, 65, 68, 65, 65, 65, 65, 65, 130, 44, 27, 27, 27, 8, 127, 131, + 27, 27, 27, 27, 27, 8, 127, 102, 40, 40, 40, 40, 40, 40, 82, 44, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 132, + 43, 43, 43, 43, 43, 43, 133, 51, 134, 51, 134, 43, 43, 43, 43, 43, + 80, 44, 44, 44, 44, 44, 44, 44, 67, 135, 67, 136, 67, 34, 11, 16, + 11, 32, 136, 67, 49, 11, 11, 67, 67, 67, 135, 135, 135, 11, 11, 137, + 11, 11, 35, 36, 39, 67, 16, 11, 8, 8, 49, 16, 16, 26, 67, 138, + 27, 27, 27, 27, 27, 27, 27, 27, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 139, 140, 103, 141, 67, 44, 44, 8, 8, 142, 67, 67, 8, 67, 67, + 142, 26, 67, 142, 67, 67, 67, 142, 67, 67, 67, 67, 67, 67, 67, 8, + 67, 142, 142, 67, 67, 67, 67, 67, 67, 67, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 67, 67, 67, 67, 4, 4, 67, 67, - 8, 67, 67, 67, 140, 141, 67, 67, 67, 67, 67, 67, 67, 67, 139, 67, + 8, 67, 67, 67, 143, 144, 67, 67, 67, 67, 67, 67, 67, 67, 142, 67, 67, 67, 67, 67, 67, 26, 8, 8, 8, 8, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 8, 8, 8, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 90, 44, 44, 67, 67, 67, 90, 44, 44, 44, 44, - 27, 27, 27, 27, 27, 27, 67, 67, 67, 67, 67, 67, 67, 27, 27, 27, - 67, 67, 67, 26, 67, 67, 67, 67, 26, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 8, 8, 8, 8, 67, 67, 67, 67, 67, 67, 67, 26, - 67, 67, 67, 67, 4, 4, 4, 4, 4, 4, 4, 27, 27, 27, 27, 27, - 27, 27, 67, 67, 67, 67, 67, 67, 8, 8, 125, 142, 8, 8, 8, 8, - 8, 8, 8, 4, 4, 4, 4, 4, 8, 125, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 142, 8, 8, 8, 8, 8, 8, 8, 4, 4, 8, 8, - 8, 8, 8, 8, 8, 8, 4, 8, 8, 8, 139, 26, 8, 8, 139, 67, - 67, 67, 44, 67, 67, 67, 67, 67, 67, 67, 67, 44, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 44, 56, 67, 67, 67, 67, 67, 90, 67, 67, 67, - 67, 44, 44, 44, 44, 44, 44, 44, 11, 11, 11, 11, 11, 11, 11, 47, + 67, 67, 67, 67, 67, 67, 67, 91, 67, 67, 67, 91, 44, 44, 44, 44, + 67, 67, 67, 67, 67, 91, 44, 44, 27, 27, 27, 27, 27, 27, 67, 67, + 67, 67, 67, 67, 67, 27, 27, 27, 67, 67, 67, 26, 67, 67, 67, 67, + 26, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 8, 8, 8, 8, + 67, 67, 67, 67, 67, 67, 67, 26, 67, 67, 67, 67, 4, 4, 4, 4, + 4, 4, 4, 27, 27, 27, 27, 27, 27, 27, 67, 67, 67, 67, 67, 67, + 8, 8, 127, 145, 8, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, + 8, 127, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 145, 8, 8, 8, + 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, 4, 8, + 8, 8, 142, 26, 8, 8, 142, 67, 67, 67, 44, 67, 67, 67, 67, 67, + 67, 67, 67, 44, 67, 67, 67, 67, 67, 67, 67, 67, 67, 44, 56, 67, + 67, 67, 67, 67, 91, 67, 67, 67, 67, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 67, 67, 11, 11, 11, 11, 11, 11, 11, 47, 16, 16, 16, 16, 16, 16, 16, 108, 32, 11, 32, 34, 34, 34, 34, 11, - 32, 32, 34, 16, 16, 16, 40, 11, 32, 32, 135, 67, 67, 133, 34, 144, - 43, 32, 44, 44, 54, 2, 95, 2, 16, 16, 16, 53, 44, 44, 53, 44, + 32, 32, 34, 16, 16, 16, 40, 11, 32, 32, 138, 67, 67, 136, 34, 147, + 43, 32, 44, 44, 54, 2, 97, 2, 16, 16, 16, 53, 44, 44, 53, 44, 36, 36, 36, 36, 44, 44, 44, 52, 64, 44, 44, 44, 44, 44, 44, 58, 36, 36, 36, 62, 44, 44, 44, 44, 36, 36, 36, 62, 36, 36, 36, 62, - 2, 117, 117, 2, 121, 122, 117, 2, 2, 2, 2, 6, 2, 103, 117, 2, - 117, 4, 4, 4, 4, 2, 2, 86, 2, 2, 2, 2, 2, 116, 2, 2, - 103, 145, 44, 44, 44, 44, 44, 44, 67, 67, 67, 67, 67, 56, 67, 67, + 2, 119, 119, 2, 123, 124, 119, 2, 2, 2, 2, 6, 2, 105, 119, 2, + 119, 4, 4, 4, 4, 2, 2, 87, 2, 2, 2, 2, 2, 118, 2, 2, + 105, 148, 64, 44, 44, 44, 44, 44, 67, 67, 67, 67, 67, 56, 67, 67, 67, 67, 44, 44, 44, 44, 44, 44, 67, 67, 67, 44, 44, 44, 44, 44, - 67, 67, 67, 67, 67, 67, 44, 44, 1, 2, 146, 147, 4, 4, 4, 4, - 4, 67, 4, 4, 4, 4, 148, 149, 150, 101, 101, 101, 101, 43, 43, 84, - 151, 40, 40, 67, 101, 152, 63, 67, 36, 36, 36, 62, 58, 153, 154, 69, + 67, 67, 67, 67, 67, 67, 44, 44, 1, 2, 149, 150, 4, 4, 4, 4, + 4, 67, 4, 4, 4, 4, 151, 152, 153, 103, 103, 103, 103, 43, 43, 85, + 154, 40, 40, 67, 103, 155, 63, 67, 36, 36, 36, 62, 58, 156, 157, 69, 36, 36, 36, 36, 36, 63, 40, 69, 44, 44, 81, 36, 36, 36, 36, 36, - 67, 27, 27, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 90, - 27, 27, 27, 27, 27, 67, 67, 67, 67, 67, 67, 67, 27, 27, 27, 27, - 155, 27, 27, 27, 27, 27, 27, 27, 36, 36, 104, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 156, 2, 7, 7, 7, 7, 7, 36, 44, 44, - 32, 32, 32, 32, 32, 32, 32, 70, 51, 157, 43, 43, 43, 43, 43, 86, - 32, 32, 32, 32, 32, 32, 40, 58, 36, 36, 36, 101, 101, 101, 101, 101, - 43, 2, 2, 2, 44, 44, 44, 44, 41, 41, 41, 154, 40, 40, 40, 40, - 41, 32, 32, 32, 32, 32, 32, 32, 16, 32, 32, 32, 32, 32, 32, 32, - 45, 16, 16, 16, 34, 34, 34, 32, 32, 32, 32, 32, 42, 158, 34, 108, - 32, 32, 16, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 11, 11, 44, - 11, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 81, 40, 35, 36, 36, - 36, 71, 36, 71, 36, 70, 36, 36, 36, 93, 85, 83, 67, 67, 44, 44, - 27, 27, 27, 67, 159, 44, 44, 44, 36, 36, 2, 2, 44, 44, 44, 44, - 84, 36, 36, 36, 36, 36, 36, 36, 36, 36, 84, 84, 84, 84, 84, 84, - 84, 84, 80, 44, 44, 44, 44, 2, 43, 36, 36, 36, 2, 72, 44, 44, - 36, 36, 36, 43, 43, 43, 43, 2, 36, 36, 36, 70, 43, 43, 43, 43, - 43, 84, 44, 44, 44, 44, 44, 54, 36, 70, 84, 43, 43, 84, 83, 84, - 160, 2, 2, 2, 2, 2, 2, 52, 7, 7, 7, 7, 7, 44, 44, 2, - 36, 36, 70, 69, 36, 36, 36, 36, 7, 7, 7, 7, 7, 36, 36, 62, - 36, 36, 36, 36, 70, 43, 43, 83, 85, 83, 85, 80, 44, 44, 44, 44, - 36, 70, 36, 36, 36, 36, 83, 44, 7, 7, 7, 7, 7, 44, 2, 2, - 69, 36, 36, 77, 67, 93, 83, 36, 71, 43, 71, 70, 71, 36, 36, 43, - 70, 62, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 81, 104, 2, - 36, 36, 36, 36, 36, 93, 43, 84, 2, 104, 161, 80, 44, 44, 44, 44, - 81, 36, 36, 62, 81, 36, 36, 62, 81, 36, 36, 62, 44, 44, 44, 44, - 16, 16, 16, 16, 16, 110, 40, 40, 44, 44, 16, 44, 44, 44, 44, 44, - 36, 93, 85, 84, 83, 160, 85, 44, 36, 36, 44, 44, 44, 44, 44, 44, - 36, 36, 36, 62, 44, 81, 36, 36, 162, 162, 162, 162, 162, 162, 162, 162, - 163, 163, 163, 163, 163, 163, 163, 163, 36, 36, 36, 36, 36, 44, 44, 44, + 67, 27, 27, 67, 67, 67, 67, 67, 27, 27, 27, 27, 27, 67, 67, 67, + 67, 67, 67, 67, 27, 27, 27, 27, 158, 27, 27, 27, 27, 27, 27, 27, + 36, 36, 106, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 159, 2, + 7, 7, 7, 7, 7, 36, 44, 44, 32, 32, 32, 32, 32, 32, 32, 70, + 51, 160, 43, 43, 43, 43, 43, 87, 32, 32, 32, 32, 32, 32, 40, 43, + 36, 36, 36, 103, 103, 103, 103, 103, 43, 2, 2, 2, 44, 44, 44, 44, + 41, 41, 41, 157, 40, 40, 40, 40, 41, 32, 32, 32, 32, 32, 32, 32, + 16, 32, 32, 32, 32, 32, 32, 32, 45, 16, 16, 16, 34, 34, 34, 32, + 32, 32, 32, 32, 42, 161, 34, 35, 32, 32, 16, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 11, 11, 47, 11, 11, 32, 32, 44, 44, 44, 44, + 44, 44, 44, 81, 40, 35, 36, 36, 36, 71, 36, 71, 36, 70, 36, 36, + 36, 92, 86, 84, 67, 67, 44, 44, 27, 27, 27, 67, 162, 44, 44, 44, + 36, 36, 2, 2, 44, 44, 44, 44, 85, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 85, 85, 85, 85, 85, 85, 85, 85, 43, 44, 44, 44, 44, 2, + 43, 36, 36, 36, 2, 72, 72, 44, 36, 36, 36, 43, 43, 43, 43, 2, + 36, 36, 36, 70, 43, 43, 43, 43, 43, 85, 44, 44, 44, 44, 44, 54, + 36, 70, 85, 43, 43, 85, 84, 85, 163, 2, 2, 2, 2, 2, 2, 52, + 7, 7, 7, 7, 7, 44, 44, 2, 36, 36, 70, 69, 36, 36, 36, 36, + 7, 7, 7, 7, 7, 36, 36, 62, 36, 36, 36, 36, 70, 43, 43, 84, + 86, 84, 86, 80, 44, 44, 44, 44, 36, 70, 36, 36, 36, 36, 84, 44, + 7, 7, 7, 7, 7, 44, 2, 2, 69, 36, 36, 77, 67, 92, 84, 36, + 71, 43, 71, 70, 71, 36, 36, 43, 70, 62, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 81, 106, 2, 36, 36, 36, 36, 36, 92, 43, 85, + 2, 106, 164, 80, 44, 44, 44, 44, 81, 36, 36, 62, 81, 36, 36, 62, + 81, 36, 36, 62, 44, 44, 44, 44, 16, 16, 16, 16, 16, 112, 40, 40, + 16, 16, 16, 44, 44, 44, 44, 44, 36, 92, 86, 85, 84, 163, 86, 44, + 36, 36, 44, 44, 44, 44, 44, 44, 36, 36, 36, 62, 44, 81, 36, 36, + 165, 165, 165, 165, 165, 165, 165, 165, 166, 166, 166, 166, 166, 166, 166, 166, 16, 16, 16, 108, 44, 44, 44, 44, 44, 53, 16, 16, 44, 44, 81, 71, - 36, 36, 36, 36, 164, 36, 36, 36, 36, 36, 36, 62, 36, 36, 62, 62, + 36, 36, 36, 36, 167, 36, 36, 36, 36, 36, 36, 62, 36, 36, 62, 62, 36, 81, 62, 36, 36, 36, 36, 36, 36, 41, 41, 41, 41, 41, 41, 41, 41, 44, 44, 44, 44, 44, 44, 44, 44, 81, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 143, 44, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 159, 44, 2, 2, 2, 165, 126, 44, 44, 44, - 43, 43, 43, 43, 43, 43, 43, 44, 6, 166, 167, 143, 143, 143, 143, 143, - 143, 143, 126, 165, 126, 2, 123, 168, 2, 64, 2, 2, 148, 143, 143, 126, - 2, 169, 8, 170, 66, 2, 44, 44, 36, 36, 62, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 62, 79, 54, 2, 3, 2, 4, 5, 6, 2, - 16, 16, 16, 16, 16, 17, 18, 125, 126, 4, 2, 36, 36, 36, 36, 36, - 69, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 40, - 44, 36, 36, 36, 44, 36, 36, 36, 44, 36, 36, 36, 44, 36, 62, 44, - 20, 171, 57, 172, 26, 8, 139, 90, 44, 44, 44, 44, 79, 65, 67, 44, - 36, 36, 36, 36, 36, 36, 81, 36, 36, 36, 36, 36, 36, 62, 36, 81, - 2, 64, 44, 173, 27, 27, 27, 27, 27, 27, 44, 56, 67, 67, 67, 67, - 101, 101, 138, 27, 89, 67, 67, 67, 67, 67, 67, 67, 67, 27, 90, 44, - 90, 44, 44, 44, 44, 44, 44, 44, 67, 67, 67, 67, 67, 67, 50, 44, - 174, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 44, 44, - 27, 27, 44, 44, 44, 44, 44, 44, 147, 36, 36, 36, 36, 175, 44, 44, - 36, 36, 36, 43, 43, 80, 44, 44, 36, 36, 36, 36, 36, 36, 36, 54, - 36, 36, 44, 44, 36, 36, 36, 36, 176, 101, 101, 44, 44, 44, 44, 44, - 11, 11, 11, 11, 16, 16, 16, 16, 36, 36, 44, 44, 44, 44, 44, 54, - 36, 36, 36, 44, 62, 36, 36, 36, 36, 36, 36, 81, 62, 44, 62, 81, - 36, 36, 36, 54, 27, 27, 27, 27, 36, 36, 36, 77, 155, 27, 27, 27, - 44, 44, 44, 173, 27, 27, 27, 27, 36, 36, 36, 27, 27, 27, 44, 54, - 36, 36, 36, 36, 36, 44, 44, 54, 36, 36, 36, 36, 44, 44, 44, 36, - 70, 43, 58, 80, 44, 44, 43, 43, 36, 36, 81, 36, 81, 36, 36, 36, - 36, 36, 44, 44, 43, 80, 44, 58, 27, 27, 27, 27, 44, 44, 44, 44, - 2, 2, 2, 2, 64, 44, 44, 44, 36, 36, 36, 36, 36, 36, 177, 30, - 36, 36, 36, 36, 36, 36, 177, 27, 36, 36, 36, 36, 78, 36, 36, 36, - 36, 36, 70, 80, 44, 173, 27, 27, 2, 2, 2, 64, 44, 44, 44, 44, - 36, 36, 36, 44, 54, 2, 2, 2, 36, 36, 36, 44, 27, 27, 27, 27, - 36, 62, 44, 44, 27, 27, 27, 27, 36, 44, 44, 44, 54, 2, 64, 44, - 44, 44, 44, 44, 173, 27, 27, 27, 36, 36, 36, 36, 62, 44, 44, 44, - 27, 27, 27, 27, 27, 27, 27, 96, 85, 94, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 43, 43, 43, 43, 43, 43, 43, 61, 2, 2, 2, 44, - 44, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 7, 7, 7, 7, 7, - 44, 44, 44, 44, 44, 44, 44, 58, 84, 85, 43, 83, 85, 61, 178, 2, + 36, 36, 36, 36, 36, 36, 36, 146, 44, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 162, 44, 2, 2, 2, 168, 128, 44, 44, 44, + 6, 169, 170, 146, 146, 146, 146, 146, 146, 146, 128, 168, 128, 2, 125, 171, + 2, 64, 2, 2, 151, 146, 146, 128, 2, 172, 8, 173, 66, 2, 44, 44, + 36, 36, 62, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 62, 79, + 54, 2, 3, 2, 4, 5, 6, 2, 16, 16, 16, 16, 16, 17, 18, 127, + 128, 4, 2, 36, 36, 36, 36, 36, 69, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 40, 44, 36, 36, 36, 44, 36, 36, 36, + 44, 36, 36, 36, 44, 36, 62, 44, 20, 174, 57, 132, 26, 8, 142, 91, + 44, 44, 44, 44, 79, 65, 67, 44, 36, 36, 36, 36, 36, 36, 81, 36, + 36, 36, 36, 36, 36, 62, 36, 81, 2, 64, 44, 175, 27, 27, 27, 27, + 27, 27, 44, 56, 67, 67, 67, 67, 103, 103, 141, 27, 90, 67, 67, 67, + 67, 67, 67, 67, 67, 27, 67, 91, 91, 44, 44, 44, 44, 44, 44, 44, + 67, 67, 67, 67, 67, 67, 50, 44, 176, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 44, 44, 27, 27, 44, 44, 44, 44, 44, 44, + 150, 36, 36, 36, 36, 177, 44, 44, 36, 36, 36, 43, 43, 80, 44, 44, + 36, 36, 36, 36, 36, 36, 36, 54, 36, 36, 44, 44, 36, 36, 36, 36, + 178, 103, 103, 44, 44, 44, 44, 44, 11, 11, 11, 11, 16, 16, 16, 16, + 11, 11, 44, 44, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 44, 44, + 36, 36, 44, 44, 44, 44, 44, 54, 36, 36, 36, 44, 62, 36, 36, 36, + 36, 36, 36, 81, 62, 44, 62, 81, 36, 36, 36, 54, 27, 27, 27, 27, + 36, 36, 36, 77, 158, 27, 27, 27, 44, 44, 44, 175, 27, 27, 27, 27, + 36, 62, 36, 44, 44, 175, 27, 27, 36, 36, 36, 27, 27, 27, 44, 54, + 36, 36, 36, 36, 36, 44, 44, 54, 36, 36, 36, 36, 44, 44, 27, 36, + 44, 27, 27, 27, 27, 27, 27, 27, 70, 43, 58, 80, 44, 44, 43, 43, + 36, 36, 81, 36, 81, 36, 36, 36, 36, 36, 44, 44, 43, 80, 44, 58, + 27, 27, 27, 27, 44, 44, 44, 44, 2, 2, 2, 2, 64, 44, 44, 44, + 36, 36, 36, 36, 36, 36, 179, 30, 36, 36, 36, 36, 36, 36, 179, 27, + 36, 36, 36, 36, 78, 36, 36, 36, 36, 36, 70, 80, 44, 175, 27, 27, + 2, 2, 2, 64, 44, 44, 44, 44, 36, 36, 36, 44, 54, 2, 2, 2, + 36, 36, 36, 44, 27, 27, 27, 27, 36, 62, 44, 44, 27, 27, 27, 27, + 36, 44, 44, 44, 54, 2, 64, 44, 44, 44, 44, 44, 175, 27, 27, 27, + 36, 36, 36, 36, 62, 44, 44, 44, 11, 47, 44, 44, 44, 44, 44, 44, + 16, 108, 44, 44, 44, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 98, + 86, 96, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 43, 43, 43, 43, + 43, 43, 43, 61, 2, 2, 2, 44, 27, 27, 27, 7, 7, 7, 7, 7, + 44, 44, 44, 44, 44, 44, 44, 58, 85, 86, 43, 84, 86, 61, 180, 2, 2, 44, 44, 44, 44, 44, 44, 44, 43, 71, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 70, 43, 43, 85, 43, 43, 43, 80, 7, 7, 7, 7, 7, + 36, 36, 36, 70, 43, 43, 86, 43, 43, 43, 80, 7, 7, 7, 7, 7, 2, 2, 44, 44, 44, 44, 44, 44, 36, 70, 2, 62, 44, 44, 44, 44, - 36, 93, 84, 43, 43, 43, 43, 83, 94, 36, 63, 2, 64, 44, 54, 44, - 7, 7, 7, 7, 7, 62, 44, 44, 173, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 96, 44, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, 84, 85, - 43, 84, 83, 43, 2, 2, 2, 44, 36, 36, 36, 36, 36, 36, 36, 70, - 84, 85, 43, 43, 43, 80, 44, 44, 83, 84, 88, 87, 88, 87, 84, 44, - 44, 44, 44, 87, 44, 44, 81, 36, 36, 84, 44, 43, 43, 43, 80, 44, - 43, 43, 80, 44, 44, 44, 44, 44, 84, 85, 43, 43, 83, 83, 84, 85, - 83, 43, 36, 72, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, 36, 93, - 84, 43, 43, 44, 84, 84, 43, 85, 61, 2, 2, 2, 2, 44, 44, 44, - 84, 85, 43, 43, 43, 83, 85, 85, 61, 2, 62, 44, 44, 44, 44, 44, - 36, 36, 36, 36, 36, 70, 85, 84, 43, 43, 43, 85, 44, 44, 44, 44, - 27, 96, 44, 44, 44, 44, 44, 81, 101, 101, 101, 101, 101, 101, 101, 175, + 36, 92, 85, 43, 43, 43, 43, 84, 96, 36, 63, 2, 2, 43, 61, 44, + 7, 7, 7, 7, 7, 63, 63, 2, 175, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 98, 44, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, 85, 86, + 43, 85, 84, 43, 2, 2, 2, 80, 36, 36, 36, 62, 62, 36, 36, 81, + 36, 36, 36, 36, 36, 36, 36, 81, 36, 36, 36, 36, 63, 44, 44, 44, + 36, 36, 36, 36, 36, 36, 36, 70, 85, 86, 43, 43, 43, 80, 44, 44, + 43, 85, 81, 36, 36, 36, 62, 81, 84, 85, 89, 88, 89, 88, 85, 44, + 62, 44, 44, 88, 44, 44, 81, 36, 36, 85, 44, 43, 43, 43, 80, 44, + 43, 43, 80, 44, 44, 44, 44, 44, 36, 36, 92, 85, 43, 43, 43, 43, + 85, 43, 84, 71, 36, 63, 2, 2, 7, 7, 7, 7, 7, 54, 54, 44, + 85, 86, 43, 43, 84, 84, 85, 86, 84, 43, 36, 72, 44, 44, 44, 44, + 36, 36, 36, 36, 36, 36, 36, 92, 85, 43, 43, 44, 85, 85, 43, 86, + 61, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 36, 36, 43, 44, + 85, 86, 43, 43, 43, 84, 86, 86, 61, 2, 62, 44, 44, 44, 44, 44, + 2, 2, 2, 2, 2, 2, 64, 44, 36, 36, 36, 36, 36, 70, 86, 85, + 43, 43, 43, 86, 44, 44, 44, 44, 36, 36, 36, 36, 36, 44, 58, 43, + 85, 43, 43, 86, 43, 43, 44, 44, 7, 7, 7, 7, 7, 27, 2, 95, + 27, 98, 44, 44, 44, 44, 44, 81, 43, 43, 43, 80, 43, 43, 43, 86, + 63, 2, 2, 44, 44, 44, 44, 44, 2, 36, 36, 36, 36, 36, 36, 36, + 44, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 88, 43, 43, 43, + 84, 43, 86, 80, 44, 44, 44, 44, 103, 103, 103, 103, 103, 103, 103, 177, 2, 2, 64, 44, 44, 44, 44, 44, 43, 43, 61, 44, 44, 44, 44, 44, - 43, 43, 43, 61, 2, 2, 67, 67, 40, 40, 92, 44, 44, 44, 44, 44, - 7, 7, 7, 7, 7, 173, 27, 27, 27, 81, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 44, 44, 81, 36, 93, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 84, 84, 84, 84, 88, 43, 74, 40, 40, 40, 40, 40, 40, - 36, 44, 44, 44, 44, 44, 44, 44, 36, 36, 36, 36, 36, 44, 50, 61, - 65, 65, 44, 44, 44, 44, 44, 44, 67, 67, 67, 90, 56, 67, 67, 67, - 67, 67, 179, 85, 43, 67, 179, 84, 84, 180, 65, 65, 65, 181, 43, 43, - 43, 76, 50, 43, 43, 43, 67, 67, 67, 67, 67, 67, 67, 43, 43, 67, - 67, 67, 67, 67, 67, 67, 67, 44, 67, 43, 76, 44, 44, 44, 44, 44, - 27, 44, 44, 44, 44, 44, 44, 44, 11, 11, 11, 11, 11, 16, 16, 16, - 16, 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 16, - 16, 16, 108, 16, 16, 16, 16, 16, 11, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 47, 11, 44, 47, 48, 47, 48, 11, 47, 11, - 11, 11, 11, 16, 16, 53, 53, 16, 16, 16, 53, 16, 16, 16, 16, 16, - 16, 16, 11, 48, 11, 47, 48, 11, 11, 11, 47, 11, 11, 11, 47, 16, - 16, 16, 16, 16, 11, 48, 11, 47, 11, 11, 47, 47, 44, 11, 11, 11, - 47, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 11, 11, - 11, 11, 11, 16, 16, 16, 16, 16, 16, 16, 16, 44, 11, 11, 11, 11, - 31, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 33, 16, 16, - 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 31, 16, 16, - 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 31, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, - 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, 32, 44, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 36, 36, 62, 173, 27, 27, 27, 27, - 43, 43, 43, 80, 44, 44, 44, 44, 36, 36, 81, 36, 36, 36, 36, 36, + 43, 43, 43, 61, 2, 2, 67, 67, 40, 40, 95, 44, 44, 44, 44, 44, + 7, 7, 7, 7, 7, 175, 27, 27, 27, 81, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 44, 44, 81, 36, 92, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 89, + 43, 74, 40, 40, 40, 40, 40, 40, 82, 44, 44, 44, 44, 44, 44, 44, + 36, 62, 44, 44, 44, 44, 44, 44, 36, 44, 44, 44, 44, 44, 44, 44, + 36, 36, 36, 36, 36, 44, 50, 61, 65, 65, 44, 44, 44, 44, 44, 44, + 67, 67, 67, 91, 56, 67, 67, 67, 67, 67, 181, 86, 43, 67, 181, 85, + 85, 182, 65, 65, 65, 83, 43, 43, 43, 76, 50, 43, 43, 43, 67, 67, + 67, 67, 67, 67, 67, 43, 43, 67, 67, 67, 67, 67, 91, 44, 44, 44, + 67, 43, 76, 44, 44, 44, 44, 44, 27, 44, 44, 44, 44, 44, 44, 44, + 11, 11, 11, 11, 11, 16, 16, 16, 16, 16, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 16, 16, 16, 108, 16, 16, 16, 16, 16, + 11, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 47, 11, + 44, 47, 48, 47, 48, 11, 47, 11, 11, 11, 11, 16, 16, 53, 53, 16, + 16, 16, 53, 16, 16, 16, 16, 16, 16, 16, 11, 48, 11, 47, 48, 11, + 11, 11, 47, 11, 11, 11, 47, 16, 16, 16, 16, 16, 11, 48, 11, 47, + 11, 11, 47, 47, 44, 11, 11, 11, 47, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 11, 11, 11, 11, 11, 16, 16, 16, 16, 16, + 16, 16, 16, 44, 11, 11, 11, 11, 31, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, + 11, 11, 31, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 33, + 16, 16, 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 31, + 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 31, 16, 16, 16, + 16, 33, 16, 16, 16, 32, 44, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 43, 43, 43, 76, 67, 50, 43, 43, 43, 43, 43, 43, 43, 43, 76, 67, + 67, 67, 50, 67, 67, 67, 67, 67, 67, 67, 76, 21, 2, 2, 44, 44, + 44, 44, 44, 44, 44, 58, 43, 43, 43, 43, 43, 80, 43, 43, 43, 43, + 43, 43, 43, 43, 80, 58, 43, 43, 43, 58, 80, 43, 43, 80, 44, 44, + 36, 36, 62, 175, 27, 27, 27, 27, 43, 43, 43, 80, 44, 44, 44, 44, + 16, 16, 43, 43, 43, 80, 44, 44, 36, 36, 81, 36, 36, 36, 36, 36, 81, 62, 62, 81, 81, 36, 36, 36, 36, 62, 36, 36, 81, 81, 44, 44, 44, 62, 44, 81, 81, 81, 81, 36, 81, 62, 62, 81, 81, 81, 81, 81, 81, 62, 62, 81, 36, 62, 36, 36, 36, 62, 36, 36, 81, 36, 62, 62, 36, 36, 36, 36, 36, 81, 36, 36, 81, 36, 81, 36, 36, 81, 36, 36, 8, 44, 44, 44, 44, 44, 44, 44, 56, 67, 67, 67, 67, 67, 67, 67, - 44, 44, 44, 67, 67, 67, 67, 67, 67, 90, 44, 44, 44, 44, 44, 44, - 67, 67, 67, 67, 90, 44, 44, 44, 67, 67, 67, 67, 67, 67, 90, 44, - 44, 44, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 44, 44, 44, 44, - 67, 67, 56, 67, 67, 67, 67, 67, 67, 90, 56, 67, 67, 67, 67, 67, - 67, 67, 90, 44, 44, 44, 44, 44, 79, 44, 44, 44, 44, 44, 44, 44, - 65, 65, 65, 65, 65, 65, 65, 65, 163, 163, 163, 163, 163, 163, 163, 44, + 67, 67, 67, 67, 67, 67, 91, 44, 44, 44, 44, 67, 67, 67, 67, 67, + 67, 91, 44, 44, 44, 44, 44, 44, 67, 67, 67, 67, 67, 25, 41, 41, + 67, 67, 91, 44, 44, 44, 44, 44, 67, 67, 67, 67, 44, 44, 44, 44, + 67, 67, 67, 67, 67, 67, 67, 44, 91, 56, 67, 67, 67, 67, 67, 91, + 79, 44, 44, 44, 44, 44, 44, 44, 65, 65, 65, 65, 65, 65, 65, 65, + 166, 166, 166, 166, 166, 166, 166, 44, }; static RE_UINT8 re_general_category_stage_5[] = { @@ -3320,22 +3526,22 @@ static RE_UINT8 re_general_category_stage_5[] = { 0, 27, 27, 25, 0, 6, 19, 6, 23, 6, 6, 23, 5, 0, 5, 23, 23, 0, 16, 16, 23, 25, 27, 27, 16, 0, 4, 5, 5, 6, 6, 5, 23, 5, 6, 16, 6, 4, 4, 6, 6, 27, 5, 27, 27, 5, 0, 16, - 6, 0, 0, 5, 4, 0, 6, 8, 8, 8, 8, 6, 23, 4, 0, 8, - 8, 0, 11, 27, 27, 0, 0, 25, 23, 27, 5, 8, 8, 5, 23, 11, - 11, 0, 19, 5, 12, 5, 5, 20, 21, 0, 10, 10, 10, 5, 19, 23, - 5, 4, 7, 0, 2, 4, 3, 3, 2, 0, 3, 26, 2, 26, 0, 26, - 1, 26, 26, 0, 12, 12, 12, 16, 19, 19, 28, 29, 20, 28, 13, 14, - 16, 12, 23, 28, 29, 23, 23, 22, 22, 23, 24, 20, 21, 23, 23, 12, - 11, 4, 21, 4, 6, 7, 7, 6, 1, 27, 27, 1, 27, 2, 2, 27, - 10, 1, 2, 10, 10, 11, 24, 27, 27, 20, 21, 27, 21, 24, 21, 20, - 2, 6, 20, 0, 27, 4, 5, 10, 19, 20, 21, 21, 27, 10, 19, 4, - 10, 4, 6, 26, 26, 4, 27, 11, 4, 23, 7, 23, 26, 1, 25, 27, - 8, 23, 4, 8, 18, 18, 17, 17, 5, 24, 23, 20, 19, 22, 22, 20, - 22, 22, 24, 19, 24, 0, 24, 26, 25, 0, 0, 11, 6, 11, 10, 0, - 23, 10, 5, 11, 23, 16, 27, 8, 8, 16, 16, 6, + 6, 0, 0, 5, 4, 0, 16, 6, 6, 8, 8, 8, 8, 6, 23, 4, + 0, 8, 8, 0, 11, 27, 27, 0, 5, 8, 11, 5, 0, 25, 23, 27, + 8, 5, 23, 11, 11, 0, 19, 5, 12, 5, 5, 20, 21, 0, 10, 10, + 10, 5, 19, 23, 5, 4, 7, 0, 2, 0, 2, 4, 3, 3, 3, 26, + 2, 26, 0, 26, 1, 26, 26, 0, 12, 12, 12, 16, 19, 19, 28, 29, + 20, 28, 13, 14, 16, 12, 23, 28, 29, 23, 23, 22, 22, 23, 24, 20, + 21, 23, 23, 12, 11, 4, 21, 4, 25, 0, 6, 7, 7, 6, 1, 27, + 27, 1, 27, 2, 2, 27, 10, 1, 2, 10, 10, 11, 24, 27, 27, 20, + 21, 27, 21, 24, 21, 20, 2, 6, 20, 23, 27, 4, 5, 10, 19, 20, + 21, 21, 27, 10, 19, 4, 10, 4, 6, 26, 26, 4, 27, 11, 4, 23, + 7, 23, 26, 1, 25, 27, 8, 23, 4, 8, 18, 18, 17, 17, 5, 24, + 23, 20, 19, 22, 22, 20, 22, 22, 24, 19, 24, 0, 24, 26, 0, 11, + 6, 11, 10, 0, 23, 10, 5, 11, 23, 16, 27, 8, 8, 16, }; -/* General_Category: 9340 bytes. */ +/* General_Category: 9926 bytes. */ RE_UINT32 re_get_general_category(RE_UINT32 ch) { RE_UINT32 code; @@ -3363,23 +3569,40 @@ RE_UINT32 re_get_general_category(RE_UINT32 ch) { /* Block. */ static RE_UINT8 re_block_stage_1[] = { - 0, 1, 2, 3, 4, 5, 5, 5, 5, 5, 6, 7, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 15, 16, 15, 15, 15, 15, 17, 15, 18, 19, 20, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 23, 15, 15, 15, 24, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 25, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 10, 11, 12, 12, 12, 12, 13, 14, 15, 15, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 22, 24, 22, 22, 22, 22, 25, 26, 26, + 26, 27, 22, 22, 22, 22, 28, 29, 22, 22, 30, 31, 32, 33, 34, 35, + 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 37, 38, 39, 40, 41, 42, 22, 22, 22, 22, 22, 43, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 44, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, }; static RE_UINT8 re_block_stage_2[] = { @@ -3391,57 +3614,48 @@ static RE_UINT8 re_block_stage_2[] = { 65, 65, 66, 67, 68, 68, 69, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 82, 83, 83, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 85, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 87, 87, 87, 87, 87, 87, 87, 87, 87, 88, 89, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 103, 104, 104, 104, 104, 104, 104, 104, 105, 106, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 108, 108, 108, 108, 109, 110, 110, 110, 110, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 119, 126, 126, 126, 119, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 119, 119, 119, 136, 119, 119, 119, - 137, 138, 139, 140, 141, 142, 143, 119, 119, 144, 119, 145, 146, 147, 119, 119, - 119, 148, 119, 119, 119, 149, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 150, 150, 150, 150, 150, 150, 150, 150, 151, 119, 119, 119, 119, 119, 119, 119, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 119, 119, 137, 119, 119, 119, + 138, 139, 140, 141, 142, 143, 144, 119, 145, 146, 119, 147, 148, 149, 150, 119, + 119, 151, 119, 119, 119, 152, 119, 119, 153, 154, 119, 119, 119, 119, 119, 119, + 155, 155, 155, 155, 155, 155, 155, 155, 156, 157, 158, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 152, 152, 152, 152, 152, 152, 152, 152, 153, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 154, 154, 154, 154, 155, 156, 157, 158, 119, 119, 119, 119, 119, 119, 159, 160, - 161, 161, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, 162, 163, 119, 119, 119, 119, 119, 119, - 164, 164, 165, 165, 166, 119, 167, 119, 168, 168, 168, 168, 168, 168, 168, 168, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 169, 170, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 171, 171, 119, 119, - 172, 173, 174, 174, 175, 175, 176, 176, 176, 176, 176, 176, 177, 178, 179, 180, - 181, 181, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, - 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, - 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 183, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 185, 186, - 187, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 188, 188, 188, 188, 189, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 190, 119, 191, 192, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, - 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, - 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, - 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, + 159, 159, 159, 159, 159, 159, 159, 159, 160, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 161, 161, 161, 161, 161, 119, 119, 119, + 162, 162, 162, 162, 163, 164, 165, 166, 119, 119, 119, 119, 119, 119, 167, 168, + 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, + 170, 170, 170, 170, 170, 170, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 171, 171, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 172, 173, 119, 119, 119, 119, 119, 119, + 174, 174, 175, 175, 176, 119, 177, 119, 178, 178, 178, 178, 178, 178, 178, 178, + 179, 179, 179, 179, 179, 180, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 181, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 182, 183, 184, 119, 119, 119, 119, 119, 119, 119, 119, 119, 185, 185, 119, 119, + 186, 187, 188, 188, 189, 189, 190, 190, 190, 190, 190, 190, 191, 192, 193, 194, + 195, 195, 196, 196, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 198, 199, 199, + 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 200, 201, + 202, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 204, 119, 119, + 205, 205, 205, 205, 206, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 207, 119, 208, 209, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, }; -static RE_UINT8 re_block_stage_3[] = { +static RE_UINT16 re_block_stage_3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, @@ -3465,84 +3679,92 @@ static RE_UINT8 re_block_stage_3[] = { 50, 50, 50, 50, 50, 51, 51, 51, 52, 52, 52, 52, 52, 52, 53, 53, 54, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 57, 57, 57, 57, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59, - 60, 60, 60, 60, 60, 61, 61, 61, 19, 19, 19, 19, 62, 63, 63, 63, - 64, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 66, 66, 66, 66, - 67, 67, 67, 67, 67, 67, 67, 67, 68, 68, 68, 68, 68, 68, 68, 68, - 69, 69, 69, 69, 69, 69, 69, 70, 70, 70, 71, 71, 71, 72, 72, 72, - 73, 73, 73, 73, 73, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 75, - 76, 76, 76, 76, 76, 76, 76, 76, 77, 77, 77, 77, 77, 77, 77, 77, - 78, 78, 78, 78, 79, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 81, 81, 81, 81, 81, 81, 81, 81, 82, 82, 83, 83, 83, 83, 83, 83, - 84, 84, 84, 84, 84, 84, 84, 84, 85, 85, 85, 85, 85, 85, 85, 85, - 85, 85, 85, 85, 86, 86, 86, 87, 88, 88, 88, 88, 88, 88, 88, 88, - 89, 89, 89, 89, 89, 89, 89, 89, 90, 90, 90, 90, 90, 90, 90, 90, - 91, 91, 91, 91, 91, 91, 91, 91, 92, 92, 92, 92, 92, 92, 92, 92, - 93, 93, 93, 93, 93, 93, 94, 94, 95, 95, 95, 95, 95, 95, 95, 95, - 96, 96, 96, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 98, 99, 99, - 100, 100, 100, 100, 100, 100, 100, 100, 101, 101, 101, 101, 101, 101, 101, 101, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 19, 103, - 104, 104, 104, 104, 105, 105, 105, 105, 105, 105, 106, 106, 106, 106, 106, 106, - 107, 107, 107, 108, 108, 108, 108, 108, 108, 109, 110, 110, 111, 111, 111, 112, - 113, 113, 113, 113, 113, 113, 113, 113, 114, 114, 114, 114, 114, 114, 114, 114, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 116, 116, 116, 116, - 117, 117, 117, 117, 117, 117, 117, 117, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 119, 119, 119, 119, 120, 120, 120, 121, 121, 121, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 122, 122, 122, 122, 122, 122, 123, 123, 123, 123, 123, 123, - 124, 124, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 126, 126, 126, 127, 128, 128, 128, 128, 129, 129, 129, 129, 129, 129, 130, 130, - 131, 131, 131, 132, 132, 132, 133, 133, 134, 134, 134, 134, 134, 134, 135, 135, - 136, 136, 136, 136, 136, 136, 137, 137, 138, 138, 138, 138, 138, 138, 139, 139, - 140, 140, 140, 141, 141, 141, 141, 19, 19, 19, 19, 19, 142, 142, 142, 142, - 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 144, 144, 144, 144, 144, - 145, 145, 145, 145, 145, 145, 145, 145, 146, 146, 146, 146, 146, 146, 146, 146, + 60, 60, 60, 60, 60, 61, 61, 61, 62, 19, 19, 19, 63, 64, 64, 64, + 65, 65, 65, 65, 65, 65, 65, 65, 66, 66, 66, 66, 67, 67, 67, 67, + 68, 68, 68, 68, 68, 68, 68, 68, 69, 69, 69, 69, 69, 69, 69, 69, + 70, 70, 70, 70, 70, 70, 70, 71, 71, 71, 72, 72, 72, 73, 73, 73, + 74, 74, 74, 74, 74, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, + 77, 77, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 78, 78, 78, 78, + 79, 79, 79, 79, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 82, 82, 82, 82, 82, 82, 82, 82, 83, 83, 84, 84, 84, 84, 84, 84, + 85, 85, 85, 85, 85, 85, 85, 85, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 87, 87, 87, 88, 89, 89, 89, 89, 89, 89, 89, 89, + 90, 90, 90, 90, 90, 90, 90, 90, 91, 91, 91, 91, 91, 91, 91, 91, + 92, 92, 92, 92, 92, 92, 92, 92, 93, 93, 93, 93, 93, 93, 93, 93, + 94, 94, 94, 94, 94, 94, 95, 95, 96, 96, 96, 96, 96, 96, 96, 96, + 97, 97, 97, 98, 98, 98, 98, 98, 99, 99, 99, 99, 99, 99, 100, 100, + 101, 101, 101, 101, 101, 101, 101, 101, 102, 102, 102, 102, 102, 102, 102, 102, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 19, 104, + 105, 105, 105, 105, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, + 108, 108, 108, 109, 109, 109, 109, 109, 109, 110, 111, 111, 112, 112, 112, 113, + 114, 114, 114, 114, 114, 114, 114, 114, 115, 115, 115, 115, 115, 115, 115, 115, + 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 117, 117, 117, + 118, 118, 118, 118, 118, 118, 118, 118, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 120, 120, 120, 120, 121, 121, 121, 122, 122, 122, 122, 122, 122, 122, 122, + 122, 122, 122, 122, 123, 123, 123, 123, 123, 123, 124, 124, 124, 124, 124, 124, + 125, 125, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 127, 127, 127, 128, 129, 129, 129, 129, 130, 130, 130, 130, 130, 130, 131, 131, + 132, 132, 132, 133, 133, 133, 134, 134, 135, 135, 135, 135, 135, 135, 136, 136, + 137, 137, 137, 137, 137, 137, 138, 138, 139, 139, 139, 139, 139, 139, 140, 140, + 141, 141, 141, 142, 142, 142, 142, 143, 143, 143, 143, 143, 144, 144, 144, 144, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 146, 146, 146, 146, 146, 147, 147, 147, 147, 147, 147, 147, 147, 148, 148, 148, 148, 148, 148, 148, 148, - 149, 149, 149, 149, 149, 149, 149, 149, 150, 150, 150, 150, 150, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 151, 152, 153, 154, 155, 155, 156, 156, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 159, 160, 160, 160, 160, 160, 160, 160, 160, - 161, 161, 161, 161, 161, 161, 161, 161, 162, 162, 162, 162, 163, 163, 163, 163, - 163, 164, 164, 164, 164, 165, 165, 165, 19, 19, 19, 19, 19, 19, 19, 19, - 166, 166, 167, 167, 167, 167, 168, 168, 169, 169, 169, 170, 170, 171, 171, 171, - 172, 172, 173, 173, 173, 173, 19, 19, 174, 174, 174, 174, 174, 175, 175, 175, - 176, 176, 176, 19, 19, 19, 19, 19, 177, 177, 177, 178, 178, 178, 178, 19, - 179, 179, 179, 179, 179, 179, 179, 179, 180, 180, 180, 180, 181, 181, 182, 182, - 183, 183, 183, 19, 19, 19, 19, 19, 184, 184, 185, 185, 19, 19, 19, 19, - 186, 186, 187, 187, 187, 187, 187, 187, 188, 188, 188, 188, 188, 188, 189, 189, - 190, 190, 19, 19, 191, 191, 191, 191, 192, 192, 192, 192, 193, 193, 194, 194, - 195, 195, 195, 19, 19, 19, 19, 19, 196, 196, 196, 196, 196, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 197, 197, 198, 198, 198, 198, 198, 198, 198, 198, - 199, 199, 199, 199, 199, 200, 200, 200, 201, 201, 201, 201, 201, 202, 202, 202, - 203, 203, 203, 203, 203, 203, 204, 204, 205, 205, 205, 205, 205, 19, 19, 19, - 19, 19, 19, 206, 206, 206, 206, 206, 207, 207, 207, 207, 207, 207, 207, 207, - 208, 208, 208, 208, 208, 208, 19, 19, 209, 209, 209, 209, 209, 209, 209, 209, - 210, 210, 210, 210, 210, 210, 19, 19, 211, 211, 211, 211, 211, 19, 19, 19, - 19, 19, 212, 212, 212, 212, 212, 212, 19, 19, 19, 19, 213, 213, 213, 213, - 214, 214, 214, 214, 214, 214, 214, 214, 215, 215, 215, 215, 215, 215, 215, 215, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 19, 19, 19, 19, 19, - 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 218, 218, 218, 19, - 19, 19, 19, 19, 19, 219, 219, 219, 220, 220, 220, 220, 220, 220, 220, 220, - 220, 19, 19, 19, 19, 19, 19, 19, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 19, 19, 19, 19, 19, 19, 222, 222, 222, 222, 222, 222, 222, 222, - 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 224, 19, 19, 19, 19, 19, - 225, 225, 225, 225, 225, 225, 225, 225, 226, 226, 226, 226, 226, 226, 226, 226, - 227, 227, 227, 227, 227, 19, 19, 19, 228, 228, 228, 228, 228, 228, 229, 229, - 230, 230, 230, 230, 230, 230, 230, 230, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 231, 231, 231, 231, 231, 19, 19, 232, 232, 232, 232, 232, 232, 232, 232, - 233, 233, 233, 234, 234, 234, 234, 234, 234, 234, 235, 235, 235, 235, 235, 235, - 236, 236, 236, 236, 236, 236, 236, 236, 237, 237, 237, 237, 237, 237, 237, 237, - 238, 238, 238, 238, 238, 238, 238, 238, 239, 239, 239, 239, 239, 240, 240, 240, + 149, 149, 149, 149, 149, 149, 149, 149, 150, 150, 150, 150, 150, 150, 150, 150, + 151, 151, 151, 151, 151, 151, 151, 151, 152, 152, 152, 152, 152, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 154, 155, 156, 157, 157, 158, 158, 159, + 159, 159, 159, 159, 159, 159, 159, 159, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 161, 162, 162, 162, 162, 162, 162, 162, 162, + 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 165, 165, 165, 165, + 165, 166, 166, 166, 166, 167, 167, 167, 19, 19, 19, 19, 19, 19, 19, 19, + 168, 168, 169, 169, 169, 169, 170, 170, 171, 171, 171, 172, 172, 173, 173, 173, + 174, 174, 175, 175, 175, 175, 19, 19, 176, 176, 176, 176, 176, 177, 177, 177, + 178, 178, 178, 179, 179, 179, 179, 179, 180, 180, 180, 181, 181, 181, 181, 19, + 182, 182, 182, 182, 182, 182, 182, 182, 183, 183, 183, 183, 184, 184, 185, 185, + 186, 186, 186, 19, 19, 19, 187, 187, 188, 188, 189, 189, 19, 19, 19, 19, + 190, 190, 191, 191, 191, 191, 191, 191, 192, 192, 192, 192, 192, 192, 193, 193, + 194, 194, 19, 19, 195, 195, 195, 195, 196, 196, 196, 196, 197, 197, 198, 198, + 199, 199, 199, 19, 19, 19, 19, 19, 200, 200, 200, 200, 200, 19, 19, 19, + 201, 201, 201, 201, 201, 201, 201, 201, 19, 19, 19, 19, 19, 19, 202, 202, + 203, 203, 203, 203, 203, 203, 203, 203, 204, 204, 204, 204, 204, 205, 205, 205, + 206, 206, 206, 206, 206, 207, 207, 207, 208, 208, 208, 208, 208, 208, 209, 209, + 210, 210, 210, 210, 210, 19, 19, 19, 211, 211, 211, 212, 212, 212, 212, 212, + 213, 213, 213, 213, 213, 213, 213, 213, 214, 214, 214, 214, 214, 214, 214, 214, + 215, 215, 215, 215, 215, 215, 19, 19, 216, 216, 216, 216, 216, 216, 216, 216, + 217, 217, 217, 217, 217, 217, 218, 218, 219, 219, 219, 219, 219, 19, 19, 19, + 220, 220, 220, 220, 19, 19, 19, 19, 19, 19, 221, 221, 221, 221, 221, 221, + 19, 19, 19, 19, 222, 222, 222, 222, 223, 223, 223, 223, 223, 223, 223, 224, + 224, 224, 224, 224, 19, 19, 19, 19, 225, 225, 225, 225, 225, 225, 225, 225, + 226, 226, 226, 226, 226, 226, 226, 226, 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 19, 19, 19, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 19, 19, 19, 19, 19, 229, 229, 229, 229, 229, 229, 229, 229, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 231, 231, 231, 19, + 19, 19, 19, 19, 19, 232, 232, 232, 233, 233, 233, 233, 233, 233, 233, 233, + 233, 19, 19, 19, 19, 19, 19, 19, 234, 234, 234, 234, 234, 234, 234, 234, + 234, 234, 19, 19, 19, 19, 235, 235, 236, 236, 236, 236, 236, 236, 236, 236, + 237, 237, 237, 237, 237, 237, 237, 237, 238, 238, 238, 238, 238, 238, 238, 238, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 240, 19, 19, 19, 19, 19, 241, 241, 241, 241, 241, 241, 241, 241, 242, 242, 242, 242, 242, 242, 242, 242, - 243, 243, 243, 243, 243, 243, 243, 243, 244, 244, 244, 244, 244, 244, 244, 244, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 19, 19, - 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 19, 19, 19, 19, 19, 19, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 19, 19, 19, 19, 19, 19, - 249, 249, 249, 249, 249, 249, 249, 249, 250, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 19, 251, 251, 251, 251, 251, 251, 251, 251, - 252, 252, 252, 252, 252, 252, 252, 252, + 243, 243, 243, 243, 243, 19, 19, 19, 244, 244, 244, 244, 244, 244, 245, 245, + 246, 246, 246, 246, 246, 246, 246, 246, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 19, 19, 19, 19, 19, 248, 248, 248, 19, 19, 19, 19, 19, + 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 19, 19, + 250, 250, 250, 250, 250, 250, 19, 19, 251, 251, 251, 251, 251, 251, 251, 251, + 252, 252, 252, 253, 253, 253, 253, 253, 253, 253, 254, 254, 254, 254, 254, 254, + 255, 255, 255, 255, 255, 255, 255, 255, 256, 256, 256, 256, 256, 256, 256, 256, + 257, 257, 257, 257, 257, 257, 257, 257, 258, 258, 258, 258, 258, 259, 259, 259, + 260, 260, 260, 260, 260, 260, 260, 260, 261, 261, 261, 261, 261, 261, 261, 261, + 262, 262, 262, 262, 262, 262, 262, 262, 263, 263, 263, 263, 263, 263, 263, 263, + 264, 264, 264, 264, 264, 264, 264, 264, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 19, 19, 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, + 268, 268, 268, 19, 19, 19, 19, 19, 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 19, 19, 19, 19, 19, 19, 270, 270, 270, 270, 270, 270, 270, 270, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 19, + 272, 272, 272, 272, 272, 272, 272, 272, 273, 273, 273, 273, 273, 273, 273, 273, }; -static RE_UINT8 re_block_stage_4[] = { +static RE_UINT16 re_block_stage_4[] = { 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, @@ -3606,10 +3828,15 @@ static RE_UINT8 re_block_stage_4[] = { 240, 240, 240, 240, 241, 241, 241, 241, 242, 242, 242, 242, 243, 243, 243, 243, 244, 244, 244, 244, 245, 245, 245, 245, 246, 246, 246, 246, 247, 247, 247, 247, 248, 248, 248, 248, 249, 249, 249, 249, 250, 250, 250, 250, 251, 251, 251, 251, - 252, 252, 252, 252, + 252, 252, 252, 252, 253, 253, 253, 253, 254, 254, 254, 254, 255, 255, 255, 255, + 256, 256, 256, 256, 257, 257, 257, 257, 258, 258, 258, 258, 259, 259, 259, 259, + 260, 260, 260, 260, 261, 261, 261, 261, 262, 262, 262, 262, 263, 263, 263, 263, + 264, 264, 264, 264, 265, 265, 265, 265, 266, 266, 266, 266, 267, 267, 267, 267, + 268, 268, 268, 268, 269, 269, 269, 269, 270, 270, 270, 270, 271, 271, 271, 271, + 272, 272, 272, 272, 273, 273, 273, 273, }; -static RE_UINT8 re_block_stage_5[] = { +static RE_UINT16 re_block_stage_5[] = { 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, @@ -3673,10 +3900,15 @@ static RE_UINT8 re_block_stage_5[] = { 240, 240, 240, 240, 241, 241, 241, 241, 242, 242, 242, 242, 243, 243, 243, 243, 244, 244, 244, 244, 245, 245, 245, 245, 246, 246, 246, 246, 247, 247, 247, 247, 248, 248, 248, 248, 249, 249, 249, 249, 250, 250, 250, 250, 251, 251, 251, 251, - 252, 252, 252, 252, + 252, 252, 252, 252, 253, 253, 253, 253, 254, 254, 254, 254, 255, 255, 255, 255, + 256, 256, 256, 256, 257, 257, 257, 257, 258, 258, 258, 258, 259, 259, 259, 259, + 260, 260, 260, 260, 261, 261, 261, 261, 262, 262, 262, 262, 263, 263, 263, 263, + 264, 264, 264, 264, 265, 265, 265, 265, 266, 266, 266, 266, 267, 267, 267, 267, + 268, 268, 268, 268, 269, 269, 269, 269, 270, 270, 270, 270, 271, 271, 271, 271, + 272, 272, 272, 272, 273, 273, 273, 273, }; -/* Block: 4752 bytes. */ +/* Block: 9072 bytes. */ RE_UINT32 re_get_block(RE_UINT32 ch) { RE_UINT32 code; @@ -3684,9 +3916,9 @@ RE_UINT32 re_get_block(RE_UINT32 ch) { RE_UINT32 pos; RE_UINT32 value; - f = ch >> 12; - code = ch ^ (f << 12); - pos = (RE_UINT32)re_block_stage_1[f] << 5; + f = ch >> 11; + code = ch ^ (f << 11); + pos = (RE_UINT32)re_block_stage_1[f] << 4; f = code >> 7; code ^= f << 7; pos = (RE_UINT32)re_block_stage_2[pos + f] << 3; @@ -3704,23 +3936,40 @@ RE_UINT32 re_get_block(RE_UINT32 ch) { /* Script. */ static RE_UINT8 re_script_stage_1[] = { - 0, 1, 2, 3, 4, 5, 5, 5, 5, 6, 7, 8, 8, 9, 10, 11, - 12, 13, 14, 15, 10, 10, 16, 10, 10, 10, 10, 17, 10, 18, 19, 20, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 21, 22, 10, 10, 10, 23, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 24, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 9, 10, 11, 12, 12, 12, 12, 13, 14, 14, 14, 14, 15, + 16, 17, 18, 19, 20, 14, 21, 14, 22, 14, 14, 14, 14, 23, 24, 24, + 25, 26, 14, 14, 14, 14, 27, 28, 14, 14, 29, 30, 31, 32, 33, 34, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 35, 7, 36, 37, 7, 38, 14, 14, 14, 14, 14, 39, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 40, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, }; static RE_UINT8 re_script_stage_2[] = { @@ -3732,48 +3981,39 @@ static RE_UINT8 re_script_stage_2[] = { 62, 62, 59, 59, 59, 59, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 59, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 80, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 81, 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, 84, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 71, 71, 99, 100, 101, 102, 103, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 98, 114, 115, 116, 117, 118, 119, 98, 120, 120, 121, 98, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 98, 98, 98, 131, 98, 98, 98, - 132, 133, 134, 135, 136, 137, 138, 98, 98, 139, 98, 140, 141, 142, 98, 98, - 98, 143, 98, 98, 98, 144, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 145, 145, 145, 145, 145, 145, 145, 146, 147, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 148, 148, 148, 148, 148, 148, 148, 148, 149, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 150, 150, 150, 150, 151, 152, 153, 154, 98, 98, 98, 98, 98, 98, 155, 156, - 157, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 158, 159, 98, 98, 98, 98, 98, 98, - 59, 160, 161, 162, 163, 98, 164, 98, 165, 166, 167, 59, 59, 168, 59, 169, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 170, 171, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 172, 173, 98, 98, - 174, 175, 176, 177, 178, 98, 179, 180, 59, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 190, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 191, 71, - 192, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 71, 71, 71, 71, 192, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 193, 98, 194, 195, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 98, 98, 132, 98, 98, 98, + 133, 134, 135, 136, 137, 138, 139, 98, 140, 141, 98, 142, 143, 144, 145, 98, + 98, 146, 98, 98, 98, 147, 98, 98, 148, 149, 98, 98, 98, 98, 98, 98, + 150, 150, 150, 150, 150, 150, 150, 151, 152, 150, 153, 98, 98, 98, 98, 98, + 154, 154, 154, 154, 154, 154, 154, 154, 155, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, 156, 156, 156, 156, 157, 98, 98, 98, + 158, 158, 158, 158, 159, 160, 161, 162, 98, 98, 98, 98, 98, 98, 163, 164, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 166, + 165, 165, 165, 165, 165, 167, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + 168, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, 169, 170, 98, 98, 98, 98, 98, 98, + 59, 171, 172, 173, 174, 98, 175, 98, 176, 177, 178, 59, 59, 179, 59, 180, + 181, 181, 181, 181, 181, 182, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + 183, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + 184, 185, 186, 98, 98, 98, 98, 98, 98, 98, 98, 98, 187, 188, 98, 98, + 189, 190, 191, 192, 193, 98, 59, 59, 59, 59, 59, 59, 59, 194, 195, 196, + 197, 198, 199, 200, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 201, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 202, 71, + 203, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 204, 98, 98, + 71, 71, 71, 71, 205, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + 206, 98, 207, 208, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, }; static RE_UINT16 re_script_stage_3[] = { @@ -3782,99 +4022,106 @@ static RE_UINT16 re_script_stage_3[] = { 8, 8, 8, 8, 8, 8, 8, 9, 10, 11, 12, 11, 11, 11, 13, 11, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 17, 18, 16, 17, 19, 20, 21, 21, 22, 21, 23, 24, - 25, 26, 27, 27, 28, 29, 30, 31, 27, 27, 27, 27, 27, 32, 27, 27, - 33, 34, 34, 34, 35, 27, 27, 27, 36, 36, 36, 37, 38, 38, 38, 39, - 40, 40, 41, 42, 43, 44, 45, 45, 45, 45, 27, 46, 45, 45, 47, 27, + 25, 26, 27, 27, 28, 29, 27, 30, 27, 27, 27, 27, 27, 31, 27, 27, + 32, 33, 33, 33, 34, 27, 27, 27, 35, 35, 35, 36, 37, 37, 37, 38, + 39, 39, 40, 41, 42, 43, 44, 44, 44, 44, 27, 45, 44, 46, 47, 27, 48, 48, 48, 48, 48, 49, 50, 48, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 124, 125, 124, 126, 45, 45, 127, 128, 129, 130, 131, 132, 45, 45, - 133, 133, 133, 133, 134, 133, 135, 136, 133, 134, 133, 137, 137, 138, 45, 45, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 140, 140, 141, 140, 140, 142, - 143, 143, 143, 143, 143, 143, 143, 143, 144, 144, 144, 144, 145, 146, 144, 144, - 145, 144, 144, 147, 148, 149, 144, 144, 144, 148, 144, 144, 144, 150, 144, 151, - 144, 152, 153, 153, 153, 153, 153, 154, 155, 155, 155, 155, 155, 155, 155, 155, - 156, 157, 158, 158, 158, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 169, 169, 169, 169, 170, 171, 171, 172, 173, 174, 174, 174, 174, 174, 175, - 174, 174, 176, 155, 155, 155, 155, 177, 178, 179, 180, 180, 181, 182, 183, 184, - 185, 185, 186, 185, 187, 188, 169, 169, 189, 190, 191, 191, 191, 192, 191, 193, - 194, 194, 195, 196, 45, 45, 45, 45, 197, 197, 197, 197, 198, 197, 197, 199, - 200, 200, 200, 200, 201, 201, 201, 202, 203, 203, 203, 204, 205, 206, 206, 206, - 45, 45, 45, 45, 207, 208, 209, 210, 4, 4, 211, 4, 4, 212, 213, 214, + 107, 108, 109, 110, 111, 112, 113, 109, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 123, 124, 123, 125, 44, 44, 126, 127, 128, 129, 130, 131, 44, 44, + 132, 132, 132, 132, 133, 132, 134, 135, 132, 133, 132, 136, 136, 137, 44, 44, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 139, 139, 140, 139, 139, 141, + 142, 142, 142, 142, 142, 142, 142, 142, 143, 143, 143, 143, 144, 145, 143, 143, + 144, 143, 143, 146, 147, 148, 143, 143, 143, 147, 143, 143, 143, 149, 143, 150, + 143, 151, 152, 152, 152, 152, 152, 153, 154, 154, 154, 154, 154, 154, 154, 154, + 155, 156, 157, 157, 157, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 168, 168, 168, 168, 169, 170, 170, 171, 172, 173, 173, 173, 173, 173, 174, + 173, 173, 175, 154, 154, 154, 154, 176, 177, 178, 179, 179, 180, 181, 182, 183, + 184, 184, 185, 184, 186, 187, 168, 168, 188, 189, 190, 190, 190, 191, 190, 192, + 193, 193, 194, 195, 44, 44, 44, 44, 196, 196, 196, 196, 197, 196, 196, 198, + 199, 199, 199, 199, 200, 200, 200, 201, 202, 202, 202, 203, 204, 205, 205, 205, + 206, 44, 44, 44, 207, 208, 209, 210, 4, 4, 211, 4, 4, 212, 213, 214, 4, 4, 4, 215, 8, 8, 8, 216, 11, 217, 11, 11, 217, 218, 11, 219, 11, 11, 11, 220, 220, 221, 11, 222, 223, 0, 0, 0, 0, 0, 224, 225, - 226, 227, 0, 228, 45, 8, 8, 229, 0, 0, 230, 231, 232, 0, 4, 4, - 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 234, 0, 0, 235, 45, 234, 45, 0, 0, - 236, 236, 236, 236, 236, 236, 236, 236, 0, 0, 0, 0, 0, 0, 0, 237, - 0, 238, 0, 239, 240, 241, 45, 45, 242, 242, 243, 242, 242, 243, 4, 4, - 244, 244, 244, 244, 244, 244, 244, 245, 140, 140, 141, 246, 246, 246, 247, 248, - 144, 249, 250, 250, 250, 250, 14, 14, 0, 0, 0, 0, 251, 45, 45, 45, + 226, 227, 0, 226, 44, 8, 8, 228, 0, 0, 229, 230, 231, 0, 4, 4, + 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 226, 0, 0, 233, 44, 234, 44, 0, 0, + 235, 235, 235, 235, 235, 235, 235, 235, 0, 0, 0, 0, 0, 0, 0, 236, + 0, 237, 0, 238, 239, 240, 241, 44, 242, 242, 243, 242, 242, 243, 4, 4, + 244, 244, 244, 244, 244, 244, 244, 245, 139, 139, 140, 246, 246, 246, 247, 248, + 143, 249, 250, 250, 250, 250, 14, 14, 0, 0, 0, 0, 251, 44, 44, 44, 252, 253, 252, 252, 252, 252, 252, 254, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 255, 45, 256, 257, 0, 258, 259, 260, 261, 261, 261, - 261, 262, 263, 264, 264, 264, 264, 265, 266, 267, 268, 269, 143, 143, 143, 143, - 270, 0, 267, 271, 0, 0, 272, 264, 143, 270, 0, 0, 0, 0, 143, 273, + 252, 252, 252, 252, 252, 255, 44, 256, 257, 0, 258, 259, 260, 261, 261, 261, + 261, 262, 263, 264, 264, 264, 264, 265, 266, 267, 268, 269, 142, 142, 142, 142, + 270, 0, 267, 271, 0, 0, 272, 264, 142, 270, 0, 0, 0, 0, 142, 273, 0, 0, 0, 0, 0, 264, 264, 274, 264, 264, 264, 264, 264, 275, 0, 0, - 252, 252, 252, 255, 0, 0, 0, 0, 252, 252, 252, 252, 276, 45, 45, 45, - 277, 277, 277, 277, 277, 277, 277, 277, 278, 277, 277, 277, 279, 280, 280, 280, - 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 282, 45, 14, 14, 14, 14, - 14, 283, 284, 284, 284, 284, 284, 285, 0, 0, 286, 4, 4, 4, 4, 4, - 287, 4, 288, 289, 45, 45, 45, 290, 291, 291, 292, 293, 294, 294, 294, 295, - 296, 296, 296, 296, 297, 298, 48, 299, 300, 300, 301, 302, 302, 303, 143, 304, - 305, 305, 305, 305, 306, 307, 139, 308, 309, 309, 309, 310, 311, 312, 139, 139, - 313, 313, 313, 313, 314, 315, 316, 317, 318, 319, 250, 4, 4, 320, 321, 45, - 45, 45, 45, 45, 316, 316, 322, 323, 143, 143, 324, 143, 325, 143, 143, 326, - 45, 45, 45, 45, 45, 45, 45, 45, 252, 252, 252, 252, 252, 252, 327, 252, - 252, 252, 252, 252, 252, 328, 45, 45, 329, 330, 21, 331, 332, 27, 27, 27, - 27, 27, 27, 27, 333, 334, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 335, 45, 27, 27, 27, 27, 336, 27, 27, 337, 45, 45, 338, - 8, 293, 339, 0, 0, 340, 341, 342, 27, 27, 27, 27, 27, 27, 27, 343, - 344, 0, 1, 2, 1, 2, 345, 263, 264, 346, 143, 270, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 355, 45, 45, 352, 352, 352, 352, 352, 352, 352, 356, - 357, 0, 0, 358, 11, 11, 11, 11, 359, 256, 360, 45, 45, 0, 0, 361, - 362, 363, 364, 364, 364, 365, 366, 256, 367, 367, 368, 369, 370, 371, 371, 372, - 373, 374, 375, 375, 376, 377, 45, 45, 378, 378, 378, 378, 378, 379, 379, 379, - 380, 381, 382, 45, 45, 45, 45, 45, 383, 383, 384, 385, 385, 385, 386, 45, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 388, 387, 389, 390, 45, - 391, 392, 392, 393, 394, 395, 396, 396, 397, 398, 399, 45, 45, 45, 45, 45, - 400, 401, 402, 403, 45, 45, 45, 45, 404, 404, 405, 406, 45, 45, 45, 45, - 407, 408, 409, 410, 411, 412, 413, 413, 414, 414, 45, 45, 415, 415, 416, 417, - 418, 418, 418, 419, 420, 421, 422, 423, 424, 425, 426, 45, 45, 45, 45, 45, - 427, 427, 427, 427, 428, 45, 45, 45, 45, 45, 45, 45, 45, 45, 27, 429, - 430, 430, 430, 430, 431, 432, 430, 433, 434, 434, 434, 434, 435, 436, 437, 438, - 439, 439, 439, 440, 441, 442, 442, 443, 444, 444, 444, 444, 445, 446, 447, 448, - 449, 450, 449, 451, 45, 45, 45, 45, 45, 45, 45, 452, 452, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 463, 463, 463, 464, 465, 45, 45, - 466, 466, 466, 467, 468, 45, 45, 45, 469, 469, 469, 469, 470, 471, 45, 45, - 472, 472, 472, 473, 474, 45, 45, 45, 45, 45, 475, 475, 475, 475, 475, 476, - 45, 45, 45, 45, 477, 477, 477, 478, 479, 479, 479, 479, 479, 479, 479, 479, - 479, 480, 45, 45, 45, 45, 45, 45, 479, 479, 479, 479, 479, 479, 481, 482, - 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 484, 45, 45, 45, 45, 45, - 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 485, 486, 487, 488, 45, - 45, 45, 45, 45, 45, 489, 490, 491, 492, 492, 492, 492, 493, 494, 495, 496, - 492, 45, 45, 45, 45, 45, 45, 45, 497, 497, 497, 497, 498, 497, 497, 499, - 500, 497, 45, 45, 45, 45, 45, 45, 501, 45, 45, 45, 45, 45, 45, 45, - 502, 502, 502, 502, 502, 502, 503, 504, 505, 506, 272, 45, 45, 45, 45, 45, - 0, 0, 0, 0, 0, 0, 0, 507, 0, 0, 508, 0, 0, 0, 509, 510, - 511, 0, 512, 0, 0, 228, 45, 45, 11, 11, 11, 11, 513, 45, 45, 45, - 0, 0, 0, 0, 0, 235, 0, 241, 0, 0, 0, 0, 0, 224, 0, 0, - 0, 514, 515, 516, 517, 0, 0, 0, 518, 519, 0, 520, 521, 522, 0, 0, - 0, 0, 238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 523, 0, 0, 0, - 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 525, 526, 45, 45, - 527, 27, 528, 529, 530, 531, 532, 533, 534, 535, 536, 535, 45, 45, 45, 333, - 0, 0, 256, 0, 0, 0, 0, 0, 0, 272, 226, 344, 344, 344, 0, 507, - 537, 0, 226, 0, 0, 0, 256, 0, 0, 234, 45, 45, 45, 45, 538, 0, - 539, 0, 0, 234, 540, 241, 45, 45, 0, 0, 537, 0, 0, 0, 0, 228, - 0, 0, 0, 0, 226, 541, 0, 542, 0, 0, 0, 0, 0, 0, 0, 226, - 0, 0, 0, 0, 234, 0, 0, 543, 0, 0, 517, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 544, 0, 0, 0, 0, 0, 0, 0, 0, 45, 537, 272, - 0, 0, 0, 0, 0, 0, 0, 272, 0, 0, 0, 0, 0, 545, 45, 45, - 256, 0, 0, 0, 542, 293, 0, 0, 542, 0, 228, 45, 45, 45, 45, 45, - 252, 252, 252, 252, 252, 546, 45, 45, 252, 252, 252, 547, 252, 252, 252, 252, - 252, 327, 45, 45, 45, 45, 45, 45, 548, 45, 0, 0, 0, 0, 0, 0, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 45, + 252, 252, 252, 255, 0, 0, 0, 0, 252, 252, 252, 252, 252, 255, 44, 44, + 276, 276, 276, 276, 276, 276, 276, 276, 277, 276, 276, 276, 278, 279, 279, 279, + 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 281, 44, 14, 14, 14, 14, + 14, 14, 282, 282, 282, 282, 282, 283, 0, 0, 284, 4, 4, 4, 4, 4, + 285, 4, 286, 287, 44, 44, 44, 288, 289, 289, 290, 291, 292, 292, 292, 293, + 294, 294, 294, 294, 295, 296, 48, 297, 298, 298, 299, 300, 300, 301, 142, 302, + 303, 303, 303, 303, 304, 305, 138, 306, 307, 307, 307, 308, 309, 310, 138, 138, + 311, 311, 311, 311, 312, 313, 314, 315, 316, 317, 250, 4, 4, 318, 319, 152, + 152, 152, 152, 152, 314, 314, 320, 321, 142, 142, 322, 142, 323, 142, 142, 324, + 44, 44, 44, 44, 44, 44, 44, 44, 252, 252, 252, 252, 252, 252, 325, 252, + 252, 252, 252, 252, 252, 326, 44, 44, 327, 328, 21, 329, 330, 27, 27, 27, + 27, 27, 27, 27, 331, 332, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 333, 44, 27, 27, 27, 27, 334, 27, 27, 335, 44, 44, 336, + 8, 291, 337, 0, 0, 338, 339, 340, 27, 27, 27, 27, 27, 27, 27, 341, + 342, 0, 1, 2, 1, 2, 343, 263, 264, 344, 142, 270, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 353, 44, 44, 350, 350, 350, 350, 350, 350, 350, 354, + 355, 0, 0, 356, 11, 11, 11, 11, 357, 256, 358, 44, 44, 0, 0, 359, + 360, 361, 362, 362, 362, 363, 364, 256, 365, 365, 366, 367, 368, 369, 369, 370, + 371, 372, 373, 373, 374, 375, 44, 44, 376, 376, 376, 376, 376, 377, 377, 377, + 378, 379, 380, 381, 381, 382, 381, 383, 384, 384, 385, 386, 386, 386, 387, 44, + 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 389, 388, 390, 391, 44, + 392, 393, 393, 394, 395, 396, 397, 397, 398, 399, 400, 44, 44, 44, 401, 402, + 403, 404, 405, 406, 44, 44, 44, 44, 407, 407, 408, 409, 408, 410, 408, 408, + 411, 412, 413, 414, 415, 416, 417, 417, 418, 418, 44, 44, 419, 419, 420, 421, + 422, 422, 422, 423, 424, 425, 426, 427, 428, 429, 430, 44, 44, 44, 44, 44, + 431, 431, 431, 431, 432, 44, 44, 44, 433, 433, 433, 434, 433, 433, 433, 435, + 44, 44, 44, 44, 44, 44, 27, 436, 437, 437, 437, 437, 438, 439, 437, 440, + 441, 441, 441, 441, 442, 443, 444, 445, 446, 446, 446, 447, 448, 449, 449, 450, + 451, 451, 451, 451, 452, 451, 453, 454, 455, 456, 455, 457, 44, 44, 44, 44, + 458, 459, 460, 461, 461, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 472, 472, 472, 472, 473, 44, 44, 474, 474, 474, 474, 475, 476, 44, 44, + 477, 477, 477, 478, 477, 479, 44, 44, 480, 480, 480, 480, 481, 482, 483, 44, + 484, 484, 484, 485, 486, 44, 44, 44, 487, 488, 489, 487, 44, 44, 44, 44, + 44, 44, 490, 490, 490, 490, 490, 491, 44, 44, 44, 44, 492, 492, 492, 493, + 494, 495, 495, 496, 497, 495, 498, 499, 499, 500, 501, 502, 44, 44, 44, 44, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 504, 44, 44, 44, 44, 44, 44, + 503, 503, 503, 503, 503, 503, 505, 506, 503, 503, 503, 503, 507, 44, 44, 44, + 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 509, 44, 44, 44, 44, 44, + 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 511, 44, 44, 44, + 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 512, 513, 514, 515, 44, + 44, 44, 44, 44, 44, 516, 517, 518, 519, 519, 519, 519, 520, 521, 522, 523, + 519, 44, 44, 44, 44, 44, 44, 44, 524, 524, 524, 524, 525, 524, 524, 526, + 527, 524, 44, 44, 44, 44, 528, 44, 529, 529, 529, 529, 529, 529, 529, 529, + 529, 529, 529, 529, 529, 529, 530, 44, 529, 529, 529, 529, 529, 529, 529, 531, + 532, 44, 44, 44, 44, 44, 44, 44, 533, 533, 533, 533, 533, 533, 534, 535, + 536, 537, 272, 44, 44, 44, 44, 44, 0, 0, 0, 0, 0, 0, 0, 538, + 0, 0, 539, 0, 0, 0, 540, 541, 542, 0, 543, 0, 0, 0, 544, 44, + 11, 11, 11, 11, 545, 44, 44, 44, 0, 0, 0, 0, 0, 233, 0, 240, + 0, 0, 0, 0, 0, 224, 0, 0, 0, 546, 547, 548, 549, 0, 0, 0, + 550, 551, 0, 552, 553, 554, 0, 0, 0, 0, 237, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 555, 0, 0, 0, 556, 556, 556, 556, 556, 556, 556, 556, + 557, 558, 559, 44, 44, 44, 44, 44, 560, 561, 562, 44, 44, 44, 44, 44, + 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 564, 565, 44, 44, + 566, 566, 566, 566, 567, 568, 44, 44, 569, 27, 570, 571, 572, 573, 574, 575, + 576, 577, 578, 577, 44, 44, 44, 331, 0, 0, 256, 0, 0, 0, 0, 0, + 0, 272, 226, 342, 342, 342, 0, 538, 579, 0, 226, 0, 0, 0, 256, 0, + 0, 0, 579, 44, 44, 44, 580, 0, 581, 0, 0, 256, 544, 240, 44, 44, + 0, 0, 0, 0, 0, 582, 579, 233, 0, 0, 0, 0, 0, 0, 0, 272, + 0, 0, 0, 0, 0, 251, 44, 44, 256, 0, 0, 0, 583, 291, 0, 0, + 583, 0, 584, 44, 44, 44, 44, 44, 44, 226, 583, 585, 256, 226, 44, 44, + 0, 240, 44, 44, 586, 44, 44, 44, 252, 252, 252, 252, 252, 587, 44, 44, + 252, 252, 252, 588, 252, 252, 252, 252, 252, 325, 252, 252, 252, 252, 252, 252, + 252, 252, 589, 44, 44, 44, 44, 44, 252, 325, 44, 44, 44, 44, 44, 44, + 590, 44, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 44, }; static RE_UINT16 re_script_stage_4[] = { @@ -3885,137 +4132,147 @@ static RE_UINT16 re_script_stage_4[] = { 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 21, 22, 22, 22, 24, 21, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 12, 12, 26, 26, 27, 12, 26, 28, 12, 12, 29, 30, 29, 31, 29, 29, 32, 33, 29, 29, 29, 29, - 31, 29, 34, 7, 7, 35, 29, 29, 0, 0, 36, 29, 37, 29, 29, 29, - 29, 29, 29, 30, 38, 38, 38, 39, 38, 38, 38, 38, 38, 38, 40, 41, - 42, 42, 42, 42, 43, 12, 12, 12, 44, 44, 44, 44, 44, 44, 45, 12, - 46, 46, 46, 46, 46, 46, 46, 47, 46, 46, 46, 48, 49, 49, 49, 49, - 49, 49, 49, 50, 12, 12, 12, 12, 51, 12, 12, 12, 12, 29, 29, 29, - 52, 52, 52, 52, 53, 52, 52, 52, 52, 54, 52, 52, 55, 56, 55, 57, - 57, 55, 55, 55, 55, 55, 58, 55, 59, 60, 61, 55, 55, 57, 57, 62, - 12, 63, 12, 64, 55, 60, 55, 55, 55, 55, 55, 12, 65, 65, 66, 67, - 68, 69, 69, 69, 69, 69, 70, 69, 70, 71, 72, 70, 66, 67, 68, 72, - 73, 12, 65, 74, 12, 75, 69, 69, 69, 72, 12, 12, 76, 76, 77, 78, - 78, 77, 77, 77, 77, 77, 79, 77, 79, 76, 80, 77, 77, 78, 78, 80, - 81, 12, 12, 12, 77, 82, 77, 77, 80, 12, 12, 12, 83, 83, 84, 85, - 85, 84, 84, 84, 84, 84, 86, 84, 86, 83, 87, 84, 84, 85, 85, 87, - 12, 88, 12, 89, 84, 88, 84, 84, 84, 84, 12, 12, 90, 91, 92, 90, - 93, 94, 95, 93, 96, 97, 92, 90, 98, 98, 94, 90, 92, 90, 93, 94, - 97, 96, 12, 12, 12, 90, 98, 98, 98, 98, 92, 12, 99, 100, 99, 101, - 101, 99, 99, 99, 99, 99, 101, 99, 99, 99, 102, 100, 99, 101, 101, 102, - 12, 103, 102, 12, 99, 104, 99, 99, 12, 12, 99, 99, 105, 105, 106, 107, - 107, 106, 106, 106, 106, 106, 107, 106, 106, 105, 108, 106, 106, 107, 107, 108, - 12, 109, 12, 110, 106, 111, 106, 106, 109, 12, 12, 12, 112, 112, 113, 114, - 114, 113, 113, 113, 113, 113, 113, 113, 113, 113, 115, 112, 113, 114, 114, 115, - 12, 116, 12, 12, 113, 117, 113, 113, 113, 118, 112, 113, 119, 120, 121, 121, - 121, 122, 119, 121, 121, 121, 121, 121, 123, 121, 121, 124, 121, 122, 125, 126, - 121, 127, 121, 121, 12, 119, 121, 121, 119, 128, 12, 12, 129, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 131, 132, 130, 130, 130, 12, 133, 134, 135, 136, - 12, 137, 138, 137, 138, 139, 140, 138, 137, 137, 141, 142, 137, 135, 137, 142, - 137, 137, 142, 137, 143, 143, 143, 143, 143, 143, 144, 143, 143, 143, 143, 145, - 144, 143, 143, 143, 143, 143, 143, 146, 143, 147, 148, 12, 149, 149, 149, 149, - 150, 150, 150, 150, 150, 151, 12, 152, 150, 150, 153, 150, 154, 154, 154, 154, - 155, 155, 155, 155, 155, 155, 156, 157, 155, 158, 156, 157, 156, 157, 155, 158, - 156, 157, 155, 155, 155, 158, 155, 155, 155, 155, 158, 159, 155, 155, 155, 160, - 155, 155, 157, 12, 161, 161, 161, 161, 161, 162, 12, 12, 163, 163, 163, 163, - 164, 164, 164, 164, 164, 164, 164, 165, 166, 166, 166, 166, 166, 166, 167, 168, - 166, 166, 169, 12, 170, 170, 170, 171, 170, 172, 12, 12, 173, 173, 173, 173, - 173, 174, 12, 12, 175, 175, 175, 175, 175, 12, 12, 12, 176, 176, 176, 177, - 177, 12, 12, 12, 178, 178, 178, 178, 178, 178, 178, 179, 178, 178, 179, 12, - 180, 181, 182, 183, 182, 182, 184, 12, 182, 182, 182, 182, 182, 182, 12, 12, - 182, 182, 183, 12, 163, 185, 12, 12, 186, 186, 186, 186, 186, 186, 186, 187, - 186, 186, 186, 12, 188, 186, 186, 186, 189, 189, 189, 189, 189, 189, 189, 190, - 189, 191, 12, 12, 192, 192, 192, 192, 192, 192, 192, 12, 192, 192, 193, 12, - 192, 192, 194, 195, 196, 196, 196, 196, 196, 196, 196, 197, 198, 198, 198, 198, - 198, 198, 198, 199, 198, 198, 198, 200, 198, 198, 201, 12, 198, 198, 198, 201, - 7, 7, 7, 202, 203, 203, 203, 203, 203, 203, 203, 12, 203, 203, 203, 204, - 205, 205, 205, 205, 206, 206, 206, 206, 206, 12, 12, 206, 207, 207, 207, 207, - 207, 207, 208, 207, 207, 207, 209, 210, 211, 211, 211, 211, 205, 205, 12, 12, - 212, 7, 7, 7, 213, 7, 214, 215, 0, 216, 217, 12, 2, 218, 219, 2, - 2, 2, 2, 220, 221, 218, 222, 2, 2, 2, 223, 2, 2, 2, 2, 224, - 7, 217, 12, 7, 8, 225, 8, 225, 8, 8, 226, 226, 8, 8, 8, 225, - 8, 15, 8, 8, 8, 10, 8, 227, 10, 15, 8, 14, 0, 0, 0, 228, - 0, 229, 0, 0, 230, 0, 0, 231, 0, 0, 0, 232, 2, 2, 2, 233, - 0, 0, 0, 234, 235, 12, 12, 12, 0, 236, 237, 0, 4, 0, 0, 0, - 0, 0, 0, 4, 2, 2, 238, 12, 0, 0, 232, 12, 0, 232, 12, 12, - 239, 239, 239, 239, 0, 240, 0, 0, 0, 234, 0, 0, 0, 0, 234, 241, - 0, 0, 229, 0, 234, 12, 12, 12, 242, 242, 242, 242, 242, 242, 242, 243, - 18, 18, 18, 18, 18, 12, 244, 18, 245, 245, 245, 245, 245, 245, 12, 246, - 247, 12, 12, 246, 155, 158, 12, 12, 155, 158, 155, 158, 232, 12, 12, 12, - 248, 248, 248, 248, 248, 248, 249, 248, 248, 12, 12, 12, 248, 250, 12, 12, - 0, 0, 0, 12, 0, 251, 0, 0, 252, 248, 253, 254, 0, 0, 248, 0, - 255, 256, 256, 256, 256, 256, 256, 256, 256, 257, 258, 259, 260, 261, 261, 261, - 261, 261, 261, 261, 261, 261, 262, 260, 12, 263, 264, 264, 264, 264, 264, 264, - 264, 264, 264, 265, 266, 154, 154, 154, 154, 154, 154, 267, 264, 264, 268, 12, - 0, 12, 12, 12, 154, 154, 154, 269, 261, 261, 261, 270, 261, 261, 0, 0, - 248, 248, 248, 271, 272, 272, 272, 272, 272, 272, 272, 273, 272, 274, 12, 12, - 275, 275, 275, 275, 276, 276, 276, 276, 276, 276, 276, 12, 19, 19, 19, 277, - 278, 278, 278, 278, 278, 278, 12, 12, 237, 2, 2, 2, 2, 2, 231, 279, - 2, 2, 2, 280, 280, 12, 12, 12, 12, 281, 2, 2, 282, 282, 282, 282, - 282, 282, 282, 12, 0, 0, 234, 12, 283, 283, 283, 283, 283, 283, 12, 12, - 284, 284, 284, 284, 284, 285, 12, 286, 284, 284, 287, 12, 52, 52, 52, 12, - 288, 288, 288, 288, 288, 288, 288, 289, 290, 290, 290, 290, 290, 12, 12, 291, - 154, 154, 154, 292, 293, 293, 293, 293, 293, 293, 293, 294, 293, 293, 295, 296, - 149, 149, 149, 297, 298, 298, 298, 298, 298, 299, 12, 12, 298, 298, 298, 300, - 298, 298, 300, 298, 301, 301, 301, 301, 302, 12, 12, 12, 12, 12, 303, 301, - 304, 304, 304, 304, 304, 305, 12, 12, 159, 158, 159, 158, 159, 158, 12, 12, - 2, 2, 3, 2, 12, 306, 12, 12, 304, 304, 304, 307, 304, 304, 307, 12, - 154, 12, 12, 12, 154, 267, 308, 154, 154, 154, 154, 12, 248, 248, 248, 250, - 248, 248, 250, 12, 2, 279, 12, 12, 309, 22, 12, 25, 26, 27, 26, 310, - 311, 312, 26, 26, 313, 12, 12, 12, 314, 29, 29, 29, 29, 29, 29, 315, - 316, 29, 29, 29, 29, 29, 12, 12, 29, 29, 29, 313, 7, 7, 7, 217, - 232, 0, 0, 0, 0, 232, 0, 12, 29, 317, 29, 29, 29, 29, 29, 318, - 241, 0, 0, 0, 0, 319, 261, 261, 261, 261, 261, 320, 321, 154, 321, 154, - 321, 154, 321, 292, 0, 232, 0, 232, 12, 12, 241, 234, 322, 322, 322, 323, - 322, 322, 322, 322, 322, 324, 322, 322, 322, 322, 324, 325, 322, 322, 322, 326, - 322, 322, 324, 12, 232, 132, 0, 0, 0, 132, 0, 0, 8, 8, 8, 327, - 327, 12, 12, 12, 0, 0, 0, 328, 329, 329, 329, 329, 329, 329, 329, 330, - 331, 331, 331, 331, 332, 12, 12, 12, 214, 0, 0, 0, 333, 333, 333, 333, - 333, 12, 12, 12, 334, 334, 334, 334, 334, 334, 335, 12, 336, 336, 336, 336, - 336, 336, 337, 12, 338, 338, 338, 338, 338, 338, 338, 339, 340, 340, 340, 340, - 340, 12, 340, 340, 340, 341, 12, 12, 342, 342, 342, 342, 343, 343, 343, 343, - 344, 344, 344, 344, 344, 344, 344, 345, 344, 344, 345, 12, 346, 346, 346, 346, - 346, 346, 12, 12, 347, 347, 347, 347, 347, 12, 12, 348, 349, 349, 349, 349, - 349, 350, 12, 12, 349, 351, 12, 12, 349, 349, 12, 12, 352, 353, 354, 352, - 352, 352, 352, 352, 352, 355, 356, 357, 358, 358, 358, 358, 358, 359, 358, 358, - 360, 360, 360, 360, 361, 361, 361, 361, 361, 361, 361, 362, 12, 363, 361, 361, - 364, 364, 364, 364, 364, 364, 364, 365, 366, 366, 366, 366, 366, 366, 367, 368, - 369, 369, 369, 369, 370, 370, 370, 370, 370, 370, 12, 371, 372, 373, 12, 372, - 372, 374, 374, 372, 372, 372, 372, 372, 372, 12, 375, 376, 372, 372, 12, 12, - 372, 372, 377, 12, 378, 378, 378, 378, 379, 379, 379, 379, 380, 380, 380, 380, - 380, 381, 382, 380, 380, 381, 12, 12, 383, 383, 383, 383, 383, 384, 385, 383, - 386, 386, 386, 386, 386, 387, 386, 386, 388, 388, 388, 388, 389, 12, 388, 388, - 390, 390, 390, 390, 391, 12, 392, 393, 12, 12, 392, 390, 394, 394, 394, 394, - 394, 394, 395, 12, 29, 29, 29, 51, 396, 396, 396, 396, 396, 396, 396, 397, - 398, 396, 396, 396, 12, 12, 12, 399, 400, 400, 400, 400, 401, 12, 12, 12, - 402, 402, 402, 402, 402, 402, 403, 12, 402, 402, 404, 12, 405, 405, 405, 405, - 405, 406, 405, 405, 405, 12, 12, 12, 407, 407, 407, 407, 407, 408, 12, 12, - 409, 409, 409, 409, 409, 409, 410, 411, 409, 409, 412, 12, 120, 121, 121, 121, - 121, 128, 12, 12, 413, 413, 413, 413, 414, 413, 413, 413, 413, 413, 413, 415, - 416, 416, 416, 416, 416, 416, 417, 12, 416, 416, 418, 12, 419, 419, 420, 421, - 421, 420, 420, 420, 420, 420, 422, 420, 422, 419, 423, 420, 420, 421, 421, 423, - 12, 424, 12, 419, 420, 425, 420, 426, 420, 426, 12, 12, 427, 427, 427, 427, - 427, 427, 12, 12, 427, 427, 428, 12, 429, 429, 429, 429, 429, 430, 429, 429, - 429, 429, 430, 12, 431, 431, 431, 431, 431, 432, 12, 12, 431, 431, 433, 12, - 434, 434, 434, 434, 434, 434, 12, 12, 434, 434, 435, 12, 436, 436, 436, 436, - 437, 12, 12, 438, 439, 439, 439, 439, 439, 439, 440, 12, 441, 441, 441, 441, - 441, 441, 442, 12, 441, 441, 441, 443, 441, 442, 12, 12, 444, 444, 444, 444, - 444, 444, 444, 445, 278, 278, 446, 12, 447, 447, 447, 447, 447, 447, 447, 448, - 447, 447, 449, 450, 451, 451, 451, 451, 451, 451, 451, 452, 451, 452, 12, 12, - 453, 453, 453, 453, 453, 454, 12, 12, 453, 453, 455, 453, 455, 453, 453, 453, - 453, 453, 12, 456, 457, 457, 457, 457, 457, 458, 12, 12, 457, 457, 457, 459, - 12, 12, 12, 460, 461, 12, 12, 12, 462, 462, 462, 462, 462, 462, 463, 12, - 462, 462, 462, 464, 462, 462, 464, 12, 462, 462, 465, 462, 0, 234, 12, 12, - 0, 232, 241, 0, 0, 466, 228, 0, 0, 0, 466, 7, 212, 467, 7, 0, - 0, 0, 468, 228, 8, 225, 12, 12, 0, 0, 0, 229, 469, 470, 241, 229, - 0, 0, 471, 241, 0, 241, 0, 0, 0, 471, 232, 241, 0, 229, 0, 229, - 0, 0, 471, 232, 0, 472, 240, 0, 229, 0, 0, 0, 0, 0, 0, 240, - 473, 473, 473, 473, 473, 474, 473, 473, 473, 475, 12, 12, 29, 476, 29, 29, - 477, 478, 476, 29, 51, 29, 479, 12, 480, 314, 479, 476, 477, 478, 479, 479, - 477, 478, 51, 29, 51, 29, 476, 481, 29, 29, 482, 29, 29, 29, 29, 12, - 476, 476, 482, 29, 0, 0, 0, 483, 12, 240, 0, 0, 484, 12, 12, 12, - 0, 0, 483, 12, 12, 0, 0, 0, 0, 0, 12, 12, 0, 0, 471, 0, - 232, 241, 0, 0, 0, 483, 12, 12, 248, 485, 12, 12, 248, 271, 12, 12, - 486, 12, 12, 12, + 31, 29, 34, 7, 7, 35, 29, 29, 36, 29, 29, 29, 29, 29, 29, 30, + 37, 37, 37, 38, 37, 37, 37, 37, 37, 37, 39, 40, 41, 41, 41, 41, + 42, 12, 12, 12, 43, 43, 43, 43, 43, 43, 44, 12, 45, 45, 45, 45, + 45, 45, 45, 46, 45, 45, 45, 47, 48, 48, 48, 48, 48, 48, 48, 49, + 12, 12, 12, 12, 29, 50, 29, 51, 12, 29, 29, 29, 52, 29, 29, 29, + 53, 53, 53, 53, 54, 53, 53, 53, 53, 55, 53, 53, 56, 57, 56, 58, + 58, 56, 56, 56, 56, 56, 59, 56, 60, 61, 62, 56, 56, 58, 58, 63, + 12, 64, 12, 65, 56, 61, 56, 56, 56, 56, 56, 12, 66, 66, 67, 68, + 69, 70, 70, 70, 70, 70, 71, 70, 71, 72, 73, 71, 67, 68, 69, 73, + 74, 12, 66, 75, 12, 76, 70, 70, 70, 73, 12, 12, 77, 77, 78, 79, + 79, 78, 78, 78, 78, 78, 80, 78, 80, 77, 81, 78, 78, 79, 79, 81, + 82, 12, 12, 12, 78, 83, 78, 78, 81, 12, 84, 12, 85, 85, 86, 87, + 87, 86, 86, 86, 86, 86, 88, 86, 88, 85, 89, 86, 86, 87, 87, 89, + 12, 90, 12, 91, 86, 90, 86, 86, 86, 86, 12, 12, 92, 93, 94, 92, + 95, 96, 97, 95, 98, 99, 94, 92, 100, 100, 96, 92, 94, 92, 95, 96, + 99, 98, 12, 12, 12, 92, 100, 100, 100, 100, 94, 12, 101, 102, 101, 103, + 103, 101, 101, 101, 101, 101, 103, 101, 101, 101, 104, 102, 101, 103, 103, 104, + 12, 105, 106, 12, 101, 107, 101, 101, 12, 12, 101, 101, 108, 109, 108, 110, + 110, 108, 108, 108, 108, 108, 110, 108, 108, 109, 111, 108, 108, 110, 110, 111, + 12, 112, 12, 113, 108, 114, 108, 108, 112, 12, 12, 12, 115, 115, 116, 117, + 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 115, 116, 117, 117, 116, + 12, 116, 116, 116, 116, 119, 116, 116, 120, 121, 122, 122, 122, 123, 120, 122, + 122, 122, 122, 122, 124, 122, 122, 125, 122, 123, 126, 127, 122, 128, 122, 122, + 12, 120, 122, 122, 120, 129, 12, 12, 130, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 132, 133, 131, 131, 131, 12, 134, 135, 136, 137, 12, 138, 139, 138, + 139, 140, 141, 139, 138, 138, 142, 143, 138, 136, 138, 143, 138, 138, 143, 138, + 144, 144, 144, 144, 144, 144, 145, 144, 144, 144, 144, 146, 145, 144, 144, 144, + 144, 144, 144, 147, 144, 148, 149, 12, 150, 150, 150, 150, 151, 151, 151, 151, + 151, 152, 12, 153, 151, 151, 154, 151, 155, 155, 155, 155, 156, 156, 156, 156, + 156, 156, 157, 158, 156, 159, 157, 158, 157, 158, 156, 159, 157, 158, 156, 156, + 156, 159, 156, 156, 156, 156, 159, 160, 156, 156, 156, 161, 156, 156, 158, 12, + 162, 162, 162, 162, 162, 163, 162, 163, 164, 164, 164, 164, 165, 165, 165, 165, + 165, 165, 165, 166, 167, 167, 167, 167, 167, 167, 168, 169, 167, 167, 170, 12, + 171, 171, 171, 172, 171, 173, 12, 12, 174, 174, 174, 174, 174, 175, 12, 12, + 176, 176, 176, 176, 176, 12, 12, 12, 177, 177, 177, 178, 178, 12, 12, 12, + 179, 179, 179, 179, 179, 179, 179, 180, 179, 179, 180, 12, 181, 182, 183, 184, + 183, 183, 185, 12, 183, 183, 183, 183, 183, 183, 12, 12, 183, 183, 184, 12, + 164, 186, 12, 12, 187, 187, 187, 187, 187, 187, 187, 188, 187, 187, 187, 12, + 189, 187, 187, 187, 190, 190, 190, 190, 190, 190, 190, 191, 190, 192, 12, 12, + 193, 193, 193, 193, 193, 193, 193, 12, 193, 193, 194, 12, 193, 193, 195, 196, + 197, 197, 197, 197, 197, 197, 197, 198, 199, 199, 199, 199, 199, 199, 199, 200, + 199, 199, 199, 201, 199, 199, 202, 12, 199, 199, 199, 202, 7, 7, 7, 203, + 204, 204, 204, 204, 204, 204, 204, 12, 204, 204, 204, 205, 206, 206, 206, 206, + 207, 207, 207, 207, 207, 12, 12, 207, 208, 208, 208, 208, 208, 208, 209, 208, + 208, 208, 210, 211, 212, 212, 212, 212, 19, 19, 213, 12, 206, 206, 12, 12, + 214, 7, 7, 7, 215, 7, 216, 217, 0, 218, 219, 12, 2, 220, 221, 2, + 2, 2, 2, 222, 223, 220, 224, 2, 2, 2, 225, 2, 2, 2, 2, 226, + 7, 219, 227, 7, 8, 228, 8, 228, 8, 8, 229, 229, 8, 8, 8, 228, + 8, 15, 8, 8, 8, 10, 8, 230, 10, 15, 8, 14, 0, 0, 0, 231, + 0, 232, 0, 0, 233, 0, 0, 234, 0, 0, 0, 235, 2, 2, 2, 236, + 237, 12, 12, 12, 0, 238, 239, 0, 4, 0, 0, 0, 0, 0, 0, 4, + 2, 2, 5, 12, 0, 235, 12, 12, 0, 0, 235, 12, 240, 240, 240, 240, + 0, 241, 0, 0, 0, 242, 0, 0, 0, 0, 242, 243, 0, 0, 232, 0, + 242, 12, 12, 12, 12, 12, 12, 0, 244, 244, 244, 244, 244, 244, 244, 245, + 18, 18, 18, 18, 18, 12, 246, 18, 247, 247, 247, 247, 247, 247, 12, 248, + 249, 12, 12, 248, 156, 159, 12, 12, 156, 159, 156, 159, 0, 250, 12, 12, + 251, 251, 251, 251, 251, 251, 252, 251, 251, 12, 12, 12, 251, 253, 12, 12, + 0, 0, 0, 12, 0, 254, 0, 0, 255, 251, 256, 257, 0, 0, 251, 0, + 258, 259, 259, 259, 259, 259, 259, 259, 259, 260, 261, 262, 263, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 265, 263, 12, 266, 267, 267, 267, 267, 267, 267, + 267, 267, 267, 268, 269, 155, 155, 155, 155, 155, 155, 270, 267, 267, 271, 12, + 0, 12, 12, 12, 155, 155, 155, 272, 264, 264, 264, 273, 264, 264, 0, 0, + 274, 274, 274, 274, 274, 274, 274, 275, 274, 276, 12, 12, 277, 277, 277, 277, + 278, 278, 278, 278, 278, 278, 278, 12, 279, 279, 279, 279, 279, 279, 12, 12, + 239, 2, 2, 2, 2, 2, 234, 2, 2, 2, 2, 280, 2, 2, 12, 12, + 12, 281, 2, 2, 282, 282, 282, 282, 282, 282, 282, 12, 0, 0, 242, 12, + 283, 283, 283, 283, 283, 283, 12, 12, 284, 284, 284, 284, 284, 285, 12, 286, + 284, 284, 285, 12, 53, 53, 53, 287, 288, 288, 288, 288, 288, 288, 288, 289, + 290, 290, 290, 290, 290, 12, 12, 291, 155, 155, 155, 292, 293, 293, 293, 293, + 293, 293, 293, 294, 293, 293, 295, 296, 150, 150, 150, 297, 298, 298, 298, 298, + 298, 299, 12, 12, 298, 298, 298, 300, 298, 298, 300, 298, 301, 301, 301, 301, + 302, 12, 12, 12, 12, 12, 303, 301, 304, 304, 304, 304, 304, 305, 12, 12, + 160, 159, 160, 159, 160, 159, 12, 12, 2, 2, 3, 2, 2, 306, 12, 12, + 304, 304, 304, 307, 304, 304, 307, 12, 155, 12, 12, 12, 155, 270, 308, 155, + 155, 155, 155, 12, 251, 251, 251, 253, 251, 251, 253, 12, 2, 280, 12, 12, + 309, 22, 12, 25, 26, 27, 26, 310, 311, 312, 26, 26, 51, 12, 12, 12, + 313, 29, 29, 29, 29, 29, 29, 314, 315, 29, 29, 29, 29, 29, 12, 12, + 29, 29, 29, 51, 7, 7, 7, 316, 235, 0, 0, 0, 0, 235, 0, 12, + 29, 50, 29, 29, 29, 29, 29, 317, 243, 0, 0, 0, 0, 318, 264, 264, + 264, 264, 264, 319, 320, 155, 320, 155, 320, 155, 320, 292, 0, 235, 0, 235, + 12, 12, 243, 242, 321, 321, 321, 322, 321, 321, 321, 321, 321, 323, 321, 321, + 321, 321, 323, 324, 321, 321, 321, 325, 321, 321, 323, 12, 235, 133, 0, 0, + 0, 133, 0, 0, 8, 8, 8, 14, 326, 12, 12, 12, 0, 0, 0, 327, + 328, 328, 328, 328, 328, 328, 328, 329, 330, 330, 330, 330, 331, 12, 12, 12, + 216, 0, 0, 0, 332, 332, 332, 332, 332, 12, 12, 12, 333, 333, 333, 333, + 333, 333, 334, 12, 335, 335, 335, 335, 335, 335, 336, 12, 337, 337, 337, 337, + 337, 337, 337, 338, 339, 339, 339, 339, 339, 12, 339, 339, 339, 340, 12, 12, + 341, 341, 341, 341, 342, 342, 342, 342, 343, 343, 343, 343, 343, 343, 343, 344, + 343, 343, 344, 12, 345, 345, 345, 345, 345, 12, 345, 345, 345, 345, 345, 12, + 346, 346, 346, 346, 346, 346, 12, 12, 347, 347, 347, 347, 347, 12, 12, 348, + 349, 349, 349, 349, 349, 350, 12, 12, 349, 351, 12, 12, 349, 349, 12, 12, + 352, 353, 354, 352, 352, 352, 352, 352, 352, 355, 356, 357, 358, 358, 358, 358, + 358, 359, 358, 358, 360, 360, 360, 360, 361, 361, 361, 361, 361, 361, 361, 362, + 12, 363, 361, 361, 364, 364, 364, 364, 365, 366, 367, 364, 368, 368, 368, 368, + 368, 368, 368, 369, 370, 370, 370, 370, 370, 370, 371, 372, 373, 373, 373, 373, + 374, 374, 374, 374, 374, 374, 12, 374, 375, 374, 374, 374, 376, 377, 12, 376, + 376, 378, 378, 376, 376, 376, 376, 376, 376, 12, 379, 380, 376, 376, 12, 12, + 376, 376, 381, 12, 382, 382, 382, 382, 383, 383, 383, 383, 384, 384, 384, 384, + 384, 385, 386, 384, 384, 385, 12, 12, 387, 387, 387, 387, 387, 388, 389, 387, + 390, 390, 390, 390, 390, 391, 390, 390, 392, 392, 392, 392, 393, 12, 392, 392, + 394, 394, 394, 394, 395, 12, 396, 397, 12, 12, 396, 394, 398, 398, 398, 398, + 398, 398, 399, 12, 400, 400, 400, 400, 401, 12, 12, 12, 401, 12, 402, 400, + 29, 29, 29, 403, 404, 404, 404, 404, 404, 404, 404, 405, 406, 404, 404, 404, + 12, 12, 12, 407, 408, 408, 408, 408, 409, 12, 12, 12, 410, 410, 410, 410, + 410, 410, 411, 12, 410, 410, 412, 12, 413, 413, 413, 413, 413, 414, 413, 413, + 413, 12, 12, 12, 415, 415, 415, 415, 415, 416, 12, 12, 417, 417, 417, 417, + 417, 417, 417, 418, 121, 122, 122, 122, 122, 129, 12, 12, 419, 419, 419, 419, + 420, 419, 419, 419, 419, 419, 419, 421, 422, 423, 424, 425, 422, 422, 422, 425, + 422, 422, 426, 12, 427, 427, 427, 427, 427, 427, 428, 12, 427, 427, 429, 12, + 430, 431, 430, 432, 432, 430, 430, 430, 430, 430, 433, 430, 433, 431, 434, 430, + 430, 432, 432, 434, 435, 436, 12, 431, 430, 437, 430, 435, 430, 435, 12, 12, + 438, 438, 438, 438, 438, 438, 439, 440, 441, 441, 441, 441, 441, 441, 12, 12, + 441, 441, 442, 12, 443, 443, 443, 443, 443, 444, 443, 443, 443, 443, 443, 444, + 445, 445, 445, 445, 445, 446, 12, 12, 445, 445, 447, 12, 183, 183, 183, 448, + 449, 449, 449, 449, 449, 449, 12, 12, 449, 449, 450, 12, 451, 451, 451, 451, + 451, 451, 452, 453, 451, 451, 451, 12, 454, 454, 454, 454, 455, 12, 12, 456, + 457, 457, 457, 457, 457, 457, 458, 12, 459, 459, 460, 459, 459, 459, 459, 459, + 459, 461, 459, 459, 459, 462, 12, 12, 459, 459, 459, 463, 464, 464, 464, 464, + 465, 464, 464, 464, 464, 464, 466, 464, 464, 467, 12, 12, 468, 468, 468, 468, + 468, 468, 469, 12, 468, 468, 468, 470, 468, 471, 12, 12, 468, 12, 12, 12, + 472, 472, 472, 472, 472, 472, 472, 473, 474, 474, 474, 474, 474, 475, 12, 12, + 279, 279, 476, 12, 477, 477, 477, 477, 477, 477, 477, 478, 477, 477, 479, 480, + 481, 481, 481, 481, 481, 481, 481, 482, 481, 482, 12, 12, 483, 483, 483, 483, + 483, 484, 12, 12, 483, 483, 485, 483, 485, 483, 483, 483, 483, 483, 12, 486, + 487, 487, 487, 487, 487, 488, 12, 12, 487, 487, 487, 489, 12, 12, 12, 490, + 491, 12, 12, 12, 492, 492, 492, 492, 492, 492, 492, 491, 493, 12, 12, 12, + 494, 12, 12, 12, 495, 495, 495, 495, 495, 495, 496, 12, 495, 495, 495, 497, + 495, 495, 497, 12, 495, 495, 498, 495, 0, 242, 12, 12, 0, 235, 243, 0, + 0, 499, 231, 0, 0, 0, 499, 7, 214, 500, 7, 0, 0, 0, 501, 231, + 0, 0, 250, 12, 8, 228, 12, 12, 0, 0, 0, 232, 502, 503, 243, 232, + 0, 0, 504, 243, 0, 243, 0, 0, 0, 504, 235, 243, 0, 232, 0, 232, + 0, 0, 504, 235, 0, 505, 241, 0, 232, 0, 0, 0, 0, 0, 0, 241, + 506, 506, 506, 506, 506, 506, 506, 12, 12, 12, 507, 506, 508, 506, 506, 506, + 244, 245, 244, 244, 244, 244, 509, 244, 510, 511, 245, 12, 512, 512, 512, 512, + 512, 513, 512, 512, 512, 514, 12, 12, 515, 515, 515, 515, 515, 515, 516, 12, + 515, 515, 517, 518, 29, 519, 29, 29, 520, 521, 519, 29, 403, 29, 522, 12, + 523, 313, 522, 519, 520, 521, 522, 522, 520, 521, 403, 29, 403, 29, 519, 524, + 29, 29, 525, 29, 29, 29, 29, 12, 519, 519, 525, 29, 0, 0, 0, 250, + 12, 241, 0, 0, 526, 12, 12, 12, 235, 12, 12, 12, 0, 0, 12, 12, + 0, 0, 0, 242, 527, 0, 0, 235, 250, 12, 12, 12, 251, 528, 12, 12, + 251, 529, 12, 12, 253, 12, 12, 12, 530, 12, 12, 12, }; static RE_UINT8 re_script_stage_5[] = { @@ -4028,88 +4285,89 @@ static RE_UINT8 re_script_stage_5[] = { 0, 1, 5, 0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 0, 0, 0, 7, 7, 7, 7, 7, 1, 7, 7, 1, 7, 7, 7, 7, 7, 7, 1, 1, 0, 7, 1, 7, 7, 7, 41, 41, 41, 7, 7, - 1, 1, 7, 7, 41, 7, 7, 7, 8, 8, 8, 8, 8, 8, 0, 8, - 8, 8, 8, 0, 0, 8, 8, 8, 9, 9, 9, 9, 9, 9, 0, 0, - 66, 66, 66, 66, 66, 66, 66, 0, 82, 82, 82, 82, 82, 82, 0, 0, - 82, 82, 82, 0, 95, 95, 95, 95, 0, 0, 95, 0, 7, 7, 7, 0, - 10, 10, 10, 10, 10, 41, 41, 10, 1, 1, 10, 10, 11, 11, 11, 11, - 0, 11, 11, 11, 11, 0, 0, 11, 11, 0, 11, 11, 11, 0, 11, 0, - 0, 0, 11, 11, 11, 11, 0, 0, 11, 11, 11, 0, 0, 0, 0, 11, - 11, 11, 0, 11, 0, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 12, - 12, 0, 0, 12, 12, 12, 12, 12, 12, 0, 12, 12, 0, 12, 12, 0, - 12, 12, 0, 0, 0, 12, 0, 0, 12, 0, 12, 0, 0, 0, 12, 12, - 0, 13, 13, 13, 13, 13, 13, 13, 13, 13, 0, 13, 13, 0, 13, 13, - 13, 13, 0, 0, 13, 0, 0, 0, 0, 0, 13, 13, 0, 14, 14, 14, - 14, 14, 14, 14, 14, 0, 0, 14, 14, 0, 14, 14, 14, 14, 0, 0, - 0, 0, 14, 14, 14, 14, 0, 14, 0, 0, 15, 15, 0, 15, 15, 15, - 15, 15, 15, 0, 15, 0, 15, 15, 15, 15, 0, 0, 0, 15, 15, 0, - 0, 0, 0, 15, 15, 0, 0, 0, 15, 15, 15, 15, 16, 16, 16, 16, - 0, 16, 16, 16, 16, 0, 16, 16, 16, 16, 0, 0, 0, 16, 16, 0, - 0, 0, 16, 16, 0, 17, 17, 17, 17, 17, 17, 17, 17, 0, 17, 17, - 17, 17, 0, 0, 0, 17, 17, 0, 0, 0, 17, 0, 0, 0, 17, 17, - 0, 18, 18, 18, 18, 18, 18, 18, 18, 0, 18, 18, 18, 18, 18, 0, - 0, 0, 0, 18, 0, 0, 18, 18, 18, 18, 0, 0, 0, 0, 19, 19, - 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, 19, 19, 0, 19, - 0, 19, 0, 0, 0, 0, 19, 0, 0, 0, 0, 19, 19, 0, 19, 0, - 19, 0, 0, 0, 0, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 0, - 0, 0, 0, 1, 0, 21, 21, 0, 21, 0, 0, 21, 21, 0, 21, 0, - 0, 21, 0, 0, 21, 21, 21, 21, 0, 21, 21, 21, 0, 21, 0, 21, - 0, 0, 21, 21, 21, 21, 0, 21, 21, 21, 0, 0, 22, 22, 22, 22, - 0, 22, 22, 22, 22, 0, 0, 0, 22, 0, 22, 22, 22, 1, 1, 1, - 1, 22, 22, 0, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 0, 24, - 0, 24, 0, 0, 24, 24, 24, 1, 25, 25, 25, 25, 26, 26, 26, 26, - 26, 0, 26, 26, 26, 26, 0, 0, 26, 26, 26, 0, 0, 26, 26, 26, - 26, 0, 0, 0, 27, 27, 27, 27, 27, 0, 0, 0, 28, 28, 28, 28, - 29, 29, 29, 29, 29, 0, 0, 0, 30, 30, 30, 30, 30, 30, 30, 1, - 1, 1, 30, 30, 30, 0, 0, 0, 42, 42, 42, 42, 42, 0, 42, 42, - 42, 0, 0, 0, 43, 43, 43, 43, 43, 1, 1, 0, 44, 44, 44, 44, - 45, 45, 45, 45, 45, 0, 45, 45, 31, 31, 31, 31, 31, 31, 0, 0, - 32, 32, 1, 1, 32, 1, 32, 32, 32, 32, 32, 32, 32, 32, 32, 0, - 32, 32, 0, 0, 28, 28, 0, 0, 46, 46, 46, 46, 46, 46, 46, 0, - 46, 0, 0, 0, 47, 47, 47, 47, 47, 47, 0, 0, 47, 0, 0, 0, - 56, 56, 56, 56, 56, 56, 0, 0, 56, 56, 56, 0, 0, 0, 56, 56, - 54, 54, 54, 54, 0, 0, 54, 54, 78, 78, 78, 78, 78, 78, 78, 0, - 78, 0, 0, 78, 78, 78, 0, 0, 41, 41, 41, 0, 62, 62, 62, 62, - 62, 0, 0, 0, 67, 67, 67, 67, 93, 93, 93, 93, 68, 68, 68, 68, - 0, 0, 0, 68, 68, 68, 0, 0, 0, 68, 68, 68, 69, 69, 69, 69, - 41, 41, 41, 1, 41, 1, 41, 41, 41, 1, 1, 1, 1, 41, 1, 1, - 41, 1, 1, 0, 41, 41, 0, 0, 2, 2, 3, 3, 3, 3, 3, 4, - 2, 3, 3, 3, 3, 3, 2, 2, 3, 3, 3, 2, 4, 2, 2, 2, - 2, 2, 2, 3, 3, 3, 0, 0, 0, 3, 0, 3, 0, 3, 3, 3, - 41, 41, 1, 1, 1, 0, 1, 1, 1, 2, 0, 0, 1, 1, 1, 2, - 1, 1, 1, 0, 2, 0, 0, 0, 1, 1, 0, 0, 41, 0, 0, 0, - 1, 1, 3, 1, 1, 1, 2, 2, 2, 1, 0, 0, 53, 53, 53, 53, - 0, 0, 1, 1, 0, 1, 1, 1, 57, 57, 57, 57, 57, 57, 57, 0, - 0, 55, 55, 55, 58, 58, 58, 58, 0, 0, 0, 58, 58, 0, 0, 0, - 36, 36, 36, 36, 36, 36, 0, 36, 36, 36, 0, 0, 1, 36, 1, 36, - 1, 36, 36, 36, 36, 36, 41, 41, 41, 41, 25, 25, 0, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 0, 0, 41, 41, 1, 1, 33, 33, 33, - 1, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 1, 0, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 0, 0, 0, 25, 25, 25, 25, 25, 25, 0, - 35, 35, 35, 0, 25, 25, 25, 1, 34, 34, 34, 0, 36, 0, 0, 0, - 37, 37, 37, 37, 37, 0, 0, 0, 37, 37, 37, 0, 83, 83, 83, 83, - 70, 70, 70, 70, 4, 4, 0, 4, 84, 84, 84, 84, 2, 2, 2, 0, - 2, 2, 0, 0, 0, 0, 0, 2, 59, 59, 59, 59, 65, 65, 65, 65, - 71, 71, 71, 71, 71, 0, 0, 0, 0, 0, 71, 71, 71, 71, 0, 0, + 41, 7, 7, 7, 8, 8, 8, 8, 8, 8, 0, 8, 8, 8, 8, 0, + 0, 8, 8, 8, 9, 9, 9, 9, 9, 9, 0, 0, 66, 66, 66, 66, + 66, 66, 66, 0, 82, 82, 82, 82, 82, 82, 0, 0, 82, 82, 82, 0, + 95, 95, 95, 95, 0, 0, 95, 0, 7, 0, 7, 7, 7, 7, 0, 0, + 7, 7, 1, 7, 10, 10, 10, 10, 10, 41, 41, 10, 1, 1, 10, 10, + 11, 11, 11, 11, 0, 11, 11, 11, 11, 0, 0, 11, 11, 0, 11, 11, + 11, 0, 11, 0, 0, 0, 11, 11, 11, 11, 0, 0, 11, 11, 11, 0, + 0, 0, 0, 11, 11, 11, 0, 11, 0, 12, 12, 12, 12, 12, 12, 0, + 0, 0, 0, 12, 12, 0, 0, 12, 12, 12, 12, 12, 12, 0, 12, 12, + 0, 12, 12, 0, 12, 12, 0, 0, 0, 12, 0, 0, 12, 0, 12, 0, + 0, 0, 12, 12, 0, 13, 13, 13, 13, 13, 13, 13, 13, 13, 0, 13, + 13, 0, 13, 13, 13, 13, 0, 0, 13, 0, 0, 0, 0, 0, 13, 13, + 0, 13, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 14, + 14, 0, 14, 14, 14, 14, 0, 0, 0, 0, 14, 14, 14, 14, 0, 14, + 0, 0, 15, 15, 0, 15, 15, 15, 15, 15, 15, 0, 15, 0, 15, 15, + 15, 15, 0, 0, 0, 15, 15, 0, 0, 0, 0, 15, 15, 0, 0, 0, + 15, 15, 15, 15, 16, 16, 16, 16, 0, 16, 16, 16, 16, 0, 16, 16, + 16, 16, 0, 0, 0, 16, 16, 0, 16, 16, 16, 0, 0, 0, 16, 16, + 17, 17, 17, 17, 0, 17, 17, 17, 17, 0, 17, 17, 17, 17, 0, 0, + 0, 17, 17, 0, 0, 0, 17, 0, 0, 0, 17, 17, 0, 18, 18, 18, + 18, 18, 18, 18, 18, 0, 18, 18, 18, 18, 18, 0, 0, 0, 18, 18, + 0, 0, 19, 19, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, + 19, 19, 0, 19, 0, 19, 0, 0, 0, 0, 19, 0, 0, 0, 0, 19, + 19, 0, 19, 0, 19, 0, 0, 0, 0, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 0, 0, 0, 0, 1, 0, 21, 21, 0, 21, 0, 0, 21, + 21, 0, 21, 0, 0, 21, 0, 0, 21, 21, 21, 21, 0, 21, 21, 21, + 0, 21, 0, 21, 0, 0, 21, 21, 21, 21, 0, 21, 21, 21, 0, 0, + 22, 22, 22, 22, 0, 22, 22, 22, 22, 0, 0, 0, 22, 0, 22, 22, + 22, 1, 1, 1, 1, 22, 22, 0, 23, 23, 23, 23, 24, 24, 24, 24, + 24, 24, 0, 24, 0, 24, 0, 0, 24, 24, 24, 1, 25, 25, 25, 25, + 26, 26, 26, 26, 26, 0, 26, 26, 26, 26, 0, 0, 26, 26, 26, 0, + 0, 26, 26, 26, 26, 0, 0, 0, 27, 27, 27, 27, 27, 27, 0, 0, + 28, 28, 28, 28, 29, 29, 29, 29, 29, 0, 0, 0, 30, 30, 30, 30, + 30, 30, 30, 1, 1, 1, 30, 30, 30, 0, 0, 0, 42, 42, 42, 42, + 42, 0, 42, 42, 42, 0, 0, 0, 43, 43, 43, 43, 43, 1, 1, 0, + 44, 44, 44, 44, 45, 45, 45, 45, 45, 0, 45, 45, 31, 31, 31, 31, + 31, 31, 0, 0, 32, 32, 1, 1, 32, 1, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 0, 32, 32, 0, 0, 28, 28, 0, 0, 46, 46, 46, 46, + 46, 46, 46, 0, 46, 0, 0, 0, 47, 47, 47, 47, 47, 47, 0, 0, + 47, 0, 0, 0, 56, 56, 56, 56, 56, 56, 0, 0, 56, 56, 56, 0, + 0, 0, 56, 56, 54, 54, 54, 54, 0, 0, 54, 54, 78, 78, 78, 78, + 78, 78, 78, 0, 78, 0, 0, 78, 78, 78, 0, 0, 41, 41, 41, 0, + 62, 62, 62, 62, 62, 0, 0, 0, 67, 67, 67, 67, 93, 93, 93, 93, + 68, 68, 68, 68, 0, 0, 0, 68, 68, 68, 0, 0, 0, 68, 68, 68, + 69, 69, 69, 69, 4, 0, 0, 0, 41, 41, 41, 1, 41, 1, 41, 41, + 41, 1, 1, 1, 1, 41, 1, 1, 41, 1, 1, 0, 41, 41, 0, 0, + 2, 2, 3, 3, 3, 3, 3, 4, 2, 3, 3, 3, 3, 3, 2, 2, + 3, 3, 3, 2, 4, 2, 2, 2, 2, 2, 2, 3, 0, 0, 0, 41, + 3, 3, 0, 0, 0, 3, 0, 3, 0, 3, 3, 3, 41, 41, 1, 1, + 1, 0, 1, 1, 1, 2, 0, 0, 1, 1, 1, 2, 1, 1, 1, 0, + 2, 0, 0, 0, 41, 0, 0, 0, 1, 1, 3, 1, 1, 1, 2, 2, + 53, 53, 53, 53, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, + 57, 57, 57, 57, 57, 57, 57, 0, 0, 55, 55, 55, 58, 58, 58, 58, + 0, 0, 0, 58, 58, 0, 0, 0, 1, 0, 0, 0, 36, 36, 36, 36, + 36, 36, 0, 36, 36, 36, 0, 0, 1, 36, 1, 36, 1, 36, 36, 36, + 36, 36, 41, 41, 41, 41, 25, 25, 0, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 0, 0, 41, 41, 1, 1, 33, 33, 33, 1, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 1, 0, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 0, 0, 0, 25, 25, 25, 25, 25, 25, 0, 35, 35, 35, 0, + 25, 25, 25, 1, 34, 34, 34, 0, 37, 37, 37, 37, 37, 0, 0, 0, + 37, 37, 37, 0, 83, 83, 83, 83, 70, 70, 70, 70, 84, 84, 84, 84, + 2, 2, 2, 0, 0, 0, 0, 2, 59, 59, 59, 59, 65, 65, 65, 65, + 71, 71, 71, 71, 71, 71, 0, 0, 0, 0, 71, 71, 10, 10, 0, 0, 72, 72, 72, 72, 72, 72, 1, 72, 73, 73, 73, 73, 0, 0, 0, 73, 25, 0, 0, 0, 85, 85, 85, 85, 85, 85, 0, 1, 85, 85, 0, 0, 0, 0, 85, 85, 23, 23, 23, 0, 77, 77, 77, 77, 77, 77, 77, 0, 77, 77, 0, 0, 79, 79, 79, 79, 79, 79, 79, 0, 0, 0, 0, 79, 86, 86, 86, 86, 86, 86, 86, 0, 2, 3, 0, 0, 86, 86, 0, 0, 0, 0, 0, 25, 0, 0, 0, 5, 6, 0, 6, 0, 6, 6, 0, 6, - 6, 0, 6, 6, 7, 7, 0, 0, 0, 0, 0, 7, 7, 7, 1, 1, - 0, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 1, 1, 1, 34, 34, - 34, 34, 1, 1, 0, 0, 25, 25, 48, 48, 48, 48, 0, 48, 48, 48, - 48, 48, 48, 0, 48, 48, 0, 48, 48, 48, 0, 0, 3, 0, 0, 0, - 1, 41, 0, 0, 74, 74, 74, 74, 74, 0, 0, 0, 75, 75, 75, 75, - 75, 0, 0, 0, 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 0, - 120, 120, 120, 120, 120, 120, 120, 0, 49, 49, 49, 49, 49, 49, 0, 49, - 60, 60, 60, 60, 60, 60, 0, 0, 40, 40, 40, 40, 50, 50, 50, 50, - 51, 51, 51, 51, 51, 51, 0, 0, 106, 106, 106, 106, 103, 103, 103, 103, + 6, 0, 6, 6, 0, 0, 0, 7, 7, 7, 1, 1, 0, 0, 7, 7, + 41, 41, 4, 4, 7, 0, 0, 1, 1, 1, 34, 34, 34, 34, 1, 1, + 0, 0, 25, 25, 48, 48, 48, 48, 0, 48, 48, 48, 48, 48, 48, 0, + 48, 48, 0, 48, 48, 48, 0, 0, 3, 0, 0, 0, 1, 41, 0, 0, + 74, 74, 74, 74, 74, 0, 0, 0, 75, 75, 75, 75, 75, 0, 0, 0, + 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 0, 120, 120, 120, 120, + 120, 120, 120, 0, 49, 49, 49, 49, 49, 49, 0, 49, 60, 60, 60, 60, + 60, 60, 0, 0, 40, 40, 40, 40, 50, 50, 50, 50, 51, 51, 51, 51, + 51, 51, 0, 0, 136, 136, 136, 136, 106, 106, 106, 106, 103, 103, 103, 103, 0, 0, 0, 103, 110, 110, 110, 110, 110, 110, 110, 0, 110, 110, 0, 0, 52, 52, 52, 52, 52, 52, 0, 0, 52, 0, 52, 52, 52, 52, 0, 52, 52, 0, 0, 0, 52, 0, 0, 52, 87, 87, 87, 87, 87, 87, 0, 87, 118, 118, 118, 118, 117, 117, 117, 117, 117, 117, 117, 0, 0, 0, 0, 117, + 128, 128, 128, 128, 128, 128, 128, 0, 128, 128, 0, 0, 0, 0, 0, 128, 64, 64, 64, 64, 0, 0, 0, 64, 76, 76, 76, 76, 76, 76, 0, 0, 0, 0, 0, 76, 98, 98, 98, 98, 97, 97, 97, 97, 0, 0, 97, 97, 61, 61, 61, 61, 0, 61, 61, 0, 0, 61, 61, 61, 61, 61, 61, 0, @@ -4118,32 +4376,42 @@ static RE_UINT8 re_script_stage_5[] = { 80, 80, 0, 0, 0, 80, 80, 80, 89, 89, 89, 89, 89, 89, 0, 0, 90, 90, 90, 90, 90, 90, 90, 0, 121, 121, 121, 121, 121, 121, 0, 0, 0, 121, 121, 121, 121, 0, 0, 0, 91, 91, 91, 91, 91, 0, 0, 0, + 130, 130, 130, 130, 130, 130, 130, 0, 0, 0, 130, 130, 7, 7, 7, 0, 94, 94, 94, 94, 94, 94, 0, 0, 0, 0, 94, 94, 0, 0, 0, 94, 92, 92, 92, 92, 92, 92, 0, 0, 101, 101, 101, 101, 101, 0, 0, 0, 101, 101, 0, 0, 96, 96, 96, 96, 96, 0, 96, 96, 111, 111, 111, 111, - 111, 111, 111, 0, 100, 100, 100, 100, 100, 0, 0, 0, 0, 100, 0, 0, - 100, 100, 100, 0, 109, 109, 109, 109, 109, 109, 0, 109, 109, 109, 0, 0, - 123, 123, 123, 123, 123, 123, 123, 0, 123, 123, 0, 0, 0, 107, 107, 107, - 107, 107, 107, 107, 107, 0, 0, 107, 107, 0, 107, 107, 107, 107, 0, 0, - 0, 0, 0, 107, 0, 0, 107, 107, 107, 0, 0, 0, 124, 124, 124, 124, - 124, 124, 0, 0, 122, 122, 122, 122, 122, 122, 0, 0, 114, 114, 114, 114, - 114, 0, 0, 0, 114, 114, 0, 0, 102, 102, 102, 102, 102, 102, 0, 0, - 125, 125, 125, 125, 125, 125, 125, 0, 0, 0, 0, 125, 119, 119, 119, 119, - 119, 0, 0, 0, 63, 63, 63, 63, 63, 0, 0, 0, 63, 63, 63, 0, - 81, 81, 81, 81, 81, 81, 81, 0, 84, 0, 0, 0, 115, 115, 115, 115, - 115, 115, 115, 0, 115, 115, 0, 0, 0, 0, 115, 115, 104, 104, 104, 104, - 104, 104, 0, 0, 108, 108, 108, 108, 108, 108, 0, 0, 108, 108, 0, 108, - 0, 108, 108, 108, 99, 99, 99, 99, 99, 0, 0, 0, 99, 99, 99, 0, - 0, 0, 0, 99, 34, 33, 0, 0, 105, 105, 105, 105, 105, 105, 105, 0, - 105, 0, 0, 0, 105, 105, 0, 0, 1, 1, 1, 41, 1, 41, 41, 41, - 1, 1, 41, 41, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, - 1, 0, 1, 0, 113, 113, 113, 113, 113, 0, 0, 113, 113, 113, 113, 0, - 0, 7, 7, 7, 0, 7, 7, 0, 7, 0, 0, 7, 0, 7, 0, 7, - 0, 0, 7, 0, 7, 0, 7, 0, 7, 7, 0, 7, 1, 0, 0, 0, - 33, 1, 1, 0, 36, 36, 36, 0, 0, 1, 0, 0, + 111, 111, 111, 0, 100, 100, 100, 100, 100, 100, 0, 0, 109, 109, 109, 109, + 109, 109, 0, 109, 109, 109, 109, 0, 129, 129, 129, 129, 129, 129, 129, 0, + 129, 0, 129, 129, 129, 129, 0, 129, 129, 129, 0, 0, 123, 123, 123, 123, + 123, 123, 123, 0, 123, 123, 0, 0, 107, 107, 107, 107, 0, 107, 107, 107, + 107, 0, 0, 107, 107, 0, 107, 107, 107, 107, 0, 0, 107, 0, 0, 0, + 0, 0, 0, 107, 0, 0, 107, 107, 135, 135, 135, 135, 135, 135, 0, 135, + 0, 135, 0, 0, 124, 124, 124, 124, 124, 124, 0, 0, 122, 122, 122, 122, + 122, 122, 0, 0, 114, 114, 114, 114, 114, 0, 0, 0, 114, 114, 0, 0, + 32, 0, 0, 0, 102, 102, 102, 102, 102, 102, 0, 0, 126, 126, 126, 126, + 126, 126, 0, 0, 0, 126, 126, 126, 125, 125, 125, 125, 125, 125, 125, 0, + 0, 0, 0, 125, 119, 119, 119, 119, 119, 0, 0, 0, 133, 133, 133, 133, + 133, 0, 133, 133, 133, 133, 133, 0, 133, 133, 0, 0, 133, 0, 0, 0, + 134, 134, 134, 134, 0, 0, 134, 134, 0, 134, 134, 134, 134, 134, 134, 0, + 63, 63, 63, 63, 63, 63, 0, 0, 63, 63, 63, 0, 63, 0, 0, 0, + 81, 81, 81, 81, 81, 81, 81, 0, 127, 127, 127, 127, 127, 127, 127, 0, + 84, 0, 0, 0, 115, 115, 115, 115, 115, 115, 115, 0, 115, 115, 0, 0, + 0, 0, 115, 115, 104, 104, 104, 104, 104, 104, 0, 0, 108, 108, 108, 108, + 108, 108, 0, 0, 108, 108, 0, 108, 0, 108, 108, 108, 99, 99, 99, 99, + 99, 0, 0, 0, 99, 99, 99, 0, 0, 0, 0, 99, 137, 0, 0, 0, + 137, 137, 137, 137, 137, 137, 137, 0, 34, 33, 0, 0, 105, 105, 105, 105, + 105, 105, 105, 0, 105, 0, 0, 0, 105, 105, 0, 0, 1, 1, 1, 41, + 1, 41, 41, 41, 1, 1, 41, 41, 0, 0, 1, 0, 0, 1, 1, 0, + 1, 1, 0, 1, 1, 0, 1, 0, 131, 131, 131, 131, 0, 0, 0, 131, + 0, 131, 131, 131, 57, 0, 0, 57, 57, 57, 0, 57, 57, 0, 57, 57, + 113, 113, 113, 113, 113, 0, 0, 113, 113, 113, 113, 0, 132, 132, 132, 132, + 132, 132, 132, 0, 132, 132, 0, 0, 0, 0, 132, 132, 0, 7, 7, 7, + 0, 7, 7, 0, 7, 0, 0, 7, 0, 7, 0, 7, 0, 0, 7, 0, + 7, 0, 7, 0, 7, 7, 0, 7, 33, 1, 1, 0, 1, 0, 0, 1, + 36, 36, 36, 0, 36, 0, 0, 0, 0, 1, 0, 0, }; -/* Script: 10548 bytes. */ +/* Script: 11396 bytes. */ RE_UINT32 re_get_script(RE_UINT32 ch) { RE_UINT32 code; @@ -4151,9 +4419,9 @@ RE_UINT32 re_get_script(RE_UINT32 ch) { RE_UINT32 pos; RE_UINT32 value; - f = ch >> 12; - code = ch ^ (f << 12); - pos = (RE_UINT32)re_script_stage_1[f] << 5; + f = ch >> 11; + code = ch ^ (f << 11); + pos = (RE_UINT32)re_script_stage_1[f] << 4; f = code >> 7; code ^= f << 7; pos = (RE_UINT32)re_script_stage_2[pos + f] << 3; @@ -4171,254 +4439,280 @@ RE_UINT32 re_get_script(RE_UINT32 ch) { /* Word_Break. */ static RE_UINT8 re_word_break_stage_1[] = { - 0, 1, 2, 3, 4, 4, 4, 4, 4, 4, 5, 6, 6, 7, 4, 8, - 9, 10, 11, 12, 4, 4, 13, 4, 4, 4, 4, 14, 4, 15, 16, 17, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 18, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 0, 1, 2, 2, 2, 3, 4, 5, 6, 7, 8, 9, 2, 10, 11, 12, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 13, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, }; static RE_UINT8 re_word_break_stage_2[] = { - 0, 1, 2, 2, 2, 3, 4, 5, 2, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 2, 2, 31, 32, 33, 34, 35, 2, 2, 2, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 2, 50, 2, 2, 51, 52, - 53, 54, 55, 56, 57, 57, 57, 57, 57, 58, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 59, 60, 61, 62, 63, 57, 57, 57, - 64, 65, 66, 67, 57, 68, 69, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 70, 2, 2, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 83, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 84, 85, 2, 2, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 57, 96, 97, 98, 2, 99, 100, 57, 2, 2, 101, 57, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 57, 57, 57, 57, 57, 57, 57, - 111, 112, 113, 114, 115, 116, 117, 57, 57, 118, 57, 119, 120, 121, 57, 57, - 57, 122, 57, 57, 57, 123, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 2, 2, 2, 2, 2, 2, 2, 124, 125, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 2, 2, 2, 2, 2, 2, 2, 2, 126, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 2, 2, 2, 2, 127, 128, 129, 130, 57, 57, 57, 57, 57, 57, 131, 132, - 133, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 134, 135, 57, 57, 57, 57, 57, 57, - 57, 57, 136, 137, 138, 57, 57, 57, 139, 140, 141, 2, 2, 142, 143, 144, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 2, 145, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 146, 147, 57, 57, - 57, 57, 148, 149, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 150, 57, 151, 152, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 1, 17, 18, 19, 1, 20, 21, 22, 23, 24, 25, 26, 27, 1, 28, + 29, 30, 31, 31, 32, 31, 33, 34, 31, 31, 31, 31, 35, 36, 37, 31, + 38, 39, 40, 41, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 1, 1, 1, 1, 42, 1, 43, 44, 45, 46, 47, 48, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 49, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 50, 1, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 1, 60, 61, 62, 63, 64, 65, 31, 31, 31, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 31, 75, 31, 76, 31, 31, 31, + 1, 1, 1, 77, 78, 79, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 1, 1, 1, 1, 80, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 1, 1, 81, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 1, 1, 82, 83, 31, 31, 31, 84, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 85, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 86, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 87, 88, 31, 89, 90, 91, 92, 31, 31, 93, 31, 31, 31, 31, 31, + 94, 31, 31, 31, 31, 31, 31, 31, 95, 96, 31, 31, 31, 31, 97, 31, + 31, 98, 31, 99, 100, 101, 102, 31, 31, 103, 31, 31, 31, 31, 31, 31, + 104, 105, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, }; -static RE_UINT8 re_word_break_stage_3[] = { - 0, 1, 0, 0, 2, 3, 4, 5, 6, 7, 7, 8, 6, 7, 7, 9, - 10, 0, 0, 0, 0, 11, 12, 13, 7, 7, 14, 7, 7, 7, 14, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 15, 7, 16, 0, 17, 18, 0, 0, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 21, - 22, 23, 7, 7, 24, 7, 7, 7, 7, 7, 7, 7, 7, 7, 25, 7, - 26, 27, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 6, 7, 7, 7, 14, 28, 6, 7, 7, 7, - 7, 29, 30, 19, 19, 19, 19, 31, 32, 0, 33, 33, 33, 34, 35, 0, - 36, 37, 19, 38, 7, 7, 7, 7, 7, 39, 19, 19, 4, 40, 41, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 42, 43, 44, 45, 4, 46, - 0, 47, 48, 7, 7, 7, 19, 19, 19, 49, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 50, 19, 51, 0, 4, 52, 7, 7, 7, 39, 53, 54, - 7, 7, 50, 55, 56, 57, 0, 0, 7, 7, 7, 58, 0, 0, 0, 0, - 0, 0, 0, 0, 7, 7, 9, 0, 0, 0, 0, 0, 59, 19, 19, 19, - 60, 7, 7, 7, 7, 7, 7, 61, 19, 19, 62, 7, 63, 4, 6, 7, - 64, 65, 66, 7, 7, 67, 68, 69, 70, 71, 72, 73, 63, 4, 74, 0, - 75, 76, 66, 7, 7, 67, 77, 78, 79, 80, 81, 82, 83, 4, 84, 0, - 75, 25, 24, 7, 7, 67, 85, 69, 31, 86, 87, 0, 63, 4, 0, 0, - 75, 65, 66, 7, 7, 67, 85, 69, 70, 80, 88, 73, 63, 4, 28, 0, - 89, 90, 91, 92, 93, 90, 7, 94, 95, 96, 97, 0, 83, 4, 0, 0, - 98, 20, 67, 7, 7, 67, 7, 99, 100, 96, 101, 74, 63, 4, 0, 0, - 75, 20, 67, 7, 7, 67, 102, 69, 100, 96, 101, 103, 63, 4, 104, 0, - 75, 20, 67, 7, 7, 7, 7, 105, 100, 106, 72, 0, 63, 4, 0, 107, - 108, 7, 14, 107, 7, 7, 24, 109, 14, 110, 111, 19, 83, 4, 112, 0, - 0, 0, 0, 0, 0, 0, 113, 114, 72, 115, 4, 116, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 113, 117, 0, 118, 4, 116, 0, 0, 0, 0, - 87, 0, 0, 119, 4, 116, 120, 121, 7, 6, 7, 7, 7, 17, 30, 19, - 100, 122, 19, 30, 19, 19, 19, 123, 124, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 125, 19, 115, 4, 116, 88, 126, 127, 118, 128, 0, - 129, 31, 4, 130, 7, 7, 7, 7, 25, 131, 7, 7, 7, 7, 7, 132, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 91, 14, 91, 7, 7, 7, 7, - 7, 91, 7, 7, 7, 7, 91, 14, 91, 7, 14, 7, 7, 7, 7, 7, - 7, 7, 91, 7, 7, 7, 7, 7, 7, 7, 7, 133, 0, 0, 0, 0, - 7, 7, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 17, 0, - 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 65, 7, 7, - 6, 7, 7, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 90, 7, 87, - 7, 20, 134, 0, 7, 7, 134, 0, 7, 7, 135, 0, 7, 20, 136, 0, - 0, 0, 0, 0, 0, 0, 59, 19, 19, 19, 137, 138, 4, 116, 0, 0, - 0, 139, 4, 116, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, - 7, 7, 7, 7, 7, 140, 7, 7, 7, 7, 7, 7, 7, 7, 141, 0, - 7, 7, 7, 14, 19, 137, 19, 137, 83, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 19, 19, 142, 119, 4, 116, 0, 0, 0, 0, - 7, 7, 143, 137, 0, 0, 0, 0, 0, 0, 144, 115, 19, 19, 19, 70, - 4, 116, 4, 116, 0, 0, 19, 115, 0, 0, 0, 0, 0, 0, 0, 0, - 145, 7, 7, 7, 7, 7, 146, 19, 145, 147, 4, 116, 0, 125, 137, 0, - 148, 7, 7, 7, 62, 149, 4, 52, 7, 7, 7, 7, 50, 19, 137, 0, - 7, 7, 7, 7, 146, 19, 19, 0, 4, 150, 4, 52, 7, 7, 7, 141, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 19, 19, 152, 153, 119, - 7, 7, 7, 7, 7, 7, 7, 7, 19, 19, 19, 19, 19, 19, 118, 59, - 7, 7, 141, 141, 7, 7, 7, 7, 141, 141, 7, 154, 7, 7, 7, 141, - 7, 7, 7, 7, 7, 7, 20, 155, 156, 17, 157, 147, 7, 17, 156, 17, - 0, 158, 0, 159, 160, 161, 0, 162, 163, 0, 164, 0, 165, 166, 28, 167, - 0, 0, 7, 17, 0, 0, 0, 0, 0, 0, 19, 19, 19, 19, 142, 0, - 168, 107, 109, 169, 18, 170, 7, 171, 172, 173, 0, 0, 7, 7, 7, 7, - 7, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 174, 7, 7, 7, 7, 7, 7, 74, 0, 0, - 7, 7, 7, 7, 7, 14, 7, 7, 7, 7, 7, 14, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 17, 175, 176, 0, - 7, 7, 7, 7, 25, 131, 7, 7, 7, 7, 7, 7, 7, 167, 0, 72, - 7, 7, 14, 0, 14, 14, 14, 14, 14, 14, 14, 14, 19, 19, 19, 19, - 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 131, 0, 0, 0, 0, 129, 177, 93, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 178, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 180, - 172, 7, 7, 7, 7, 141, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 14, 0, 0, 7, 7, 7, 9, 0, 0, 0, 0, 0, 0, 179, 179, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 179, 179, 179, 179, 181, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 0, 0, 0, 0, 0, - 7, 17, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 141, - 7, 17, 7, 7, 4, 182, 0, 0, 7, 7, 7, 7, 7, 143, 151, 183, - 7, 7, 7, 184, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 119, 0, - 0, 0, 167, 7, 107, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 185, 7, 7, 7, 141, 74, 0, 0, 0, 0, 0, 0, 0, 167, 7, - 186, 187, 7, 7, 39, 0, 0, 0, 7, 7, 7, 7, 7, 7, 147, 0, - 27, 7, 7, 7, 7, 7, 146, 19, 123, 0, 4, 116, 19, 19, 27, 188, - 4, 52, 7, 7, 50, 118, 7, 7, 143, 19, 137, 0, 7, 7, 7, 17, - 60, 7, 7, 7, 7, 7, 39, 19, 142, 167, 4, 116, 138, 0, 4, 116, - 7, 7, 7, 7, 7, 62, 115, 0, 187, 189, 4, 116, 0, 0, 0, 190, - 0, 0, 0, 0, 0, 0, 127, 191, 81, 0, 0, 0, 7, 39, 192, 0, - 193, 193, 193, 0, 14, 14, 7, 7, 7, 7, 7, 132, 194, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 39, 195, 4, 116, - 7, 7, 7, 7, 147, 0, 7, 7, 14, 196, 7, 7, 7, 7, 7, 147, - 14, 0, 196, 197, 33, 198, 199, 200, 201, 33, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 74, 0, 0, 0, 196, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 141, 0, 0, 7, 7, 7, 7, 7, 7, - 7, 7, 107, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 7, 147, - 19, 19, 202, 0, 19, 118, 203, 0, 0, 204, 205, 0, 0, 0, 20, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 206, - 207, 3, 0, 208, 6, 7, 7, 8, 6, 7, 7, 9, 209, 179, 179, 179, - 179, 179, 179, 210, 7, 7, 7, 14, 107, 107, 107, 211, 0, 0, 0, 212, - 7, 102, 7, 7, 14, 7, 7, 213, 7, 141, 7, 141, 0, 0, 0, 0, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 17, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, - 7, 7, 7, 17, 7, 7, 7, 7, 7, 7, 87, 0, 142, 0, 0, 0, - 7, 7, 7, 7, 0, 0, 7, 7, 7, 9, 7, 7, 7, 7, 50, 114, - 7, 7, 7, 141, 7, 7, 7, 7, 147, 7, 169, 0, 0, 0, 0, 0, - 7, 7, 7, 141, 4, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7, 7, 7, 7, 7, 0, 7, 7, 7, 7, 7, 7, 147, 0, 0, 0, - 7, 7, 7, 7, 7, 7, 14, 0, 7, 7, 141, 0, 7, 0, 0, 0, - 141, 67, 7, 7, 7, 7, 25, 214, 7, 7, 141, 0, 7, 7, 14, 0, - 7, 7, 7, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7, 7, 141, 0, 7, 7, 7, 74, 0, 0, 0, 0, 0, 0, 0, 0, - 7, 7, 7, 7, 7, 7, 7, 174, 0, 0, 0, 0, 0, 0, 0, 0, - 215, 59, 102, 6, 7, 7, 147, 79, 0, 0, 0, 0, 7, 7, 7, 17, - 7, 7, 7, 17, 0, 0, 0, 0, 7, 6, 7, 7, 216, 0, 0, 0, - 7, 7, 7, 7, 7, 7, 141, 0, 7, 7, 141, 0, 7, 7, 9, 0, - 7, 7, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 87, 0, 0, 0, 0, 0, 0, - 148, 7, 7, 7, 7, 7, 7, 19, 115, 0, 0, 0, 83, 4, 0, 72, - 148, 7, 7, 7, 7, 7, 19, 217, 0, 0, 7, 7, 7, 87, 4, 116, - 148, 7, 7, 7, 143, 19, 218, 4, 0, 0, 7, 7, 7, 7, 219, 0, - 148, 7, 7, 7, 7, 7, 39, 19, 220, 0, 4, 221, 0, 0, 0, 0, - 7, 7, 24, 7, 7, 146, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 143, 19, 114, 4, 116, - 75, 65, 66, 7, 7, 67, 85, 69, 70, 80, 72, 172, 222, 123, 123, 0, - 7, 7, 7, 7, 7, 7, 19, 19, 223, 0, 4, 116, 0, 0, 0, 0, - 7, 7, 7, 7, 7, 143, 118, 19, 142, 0, 0, 0, 0, 0, 0, 0, - 7, 7, 7, 7, 7, 7, 19, 19, 224, 0, 4, 116, 0, 0, 0, 0, - 7, 7, 7, 7, 7, 39, 19, 0, 4, 116, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 4, 116, 0, 167, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 87, - 7, 7, 7, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 0, 0, - 7, 7, 7, 7, 7, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7, 7, 7, 7, 7, 7, 7, 87, 7, 7, 7, 14, 4, 116, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 141, 123, 0, - 7, 7, 7, 7, 7, 7, 115, 0, 147, 0, 4, 116, 196, 7, 7, 172, - 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7, 7, 7, 7, 7, 7, 7, 7, 17, 0, 62, 19, 19, 19, 19, 115, - 0, 72, 148, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, 7, 17, - 7, 87, 7, 226, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 228, 229, 230, - 231, 137, 0, 0, 0, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, 0, 0, 0, 0, 0, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 20, 7, 7, 7, 7, 7, - 7, 7, 7, 20, 234, 235, 7, 236, 102, 7, 7, 7, 7, 7, 7, 7, - 25, 237, 20, 20, 7, 7, 7, 238, 155, 107, 67, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 141, 7, 7, 7, 67, 7, 7, 132, 7, 7, 7, 132, - 7, 7, 20, 7, 7, 7, 20, 7, 7, 14, 7, 7, 7, 14, 7, 7, - 7, 67, 7, 7, 7, 67, 7, 7, 132, 239, 4, 4, 4, 4, 4, 4, - 7, 7, 7, 7, 7, 7, 7, 7, 17, 0, 115, 0, 0, 0, 0, 0, - 102, 7, 7, 7, 240, 6, 132, 241, 168, 242, 240, 154, 240, 132, 132, 82, - 7, 24, 7, 147, 243, 24, 7, 147, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 7, 7, 7, 74, 7, 7, 7, 74, 7, 7, - 7, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 245, 245, 245, - 246, 0, 0, 0, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, 0, +static RE_UINT16 re_word_break_stage_3[] = { + 0, 1, 2, 3, 4, 5, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 8, 9, 10, 10, 10, 11, 12, 13, 7, 14, + 7, 7, 7, 7, 15, 7, 7, 7, 7, 16, 17, 18, 19, 20, 21, 22, + 23, 7, 24, 25, 7, 7, 26, 27, 28, 29, 30, 7, 7, 31, 32, 33, + 34, 35, 36, 37, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 54, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 37, 80, 81, 37, 37, 82, 83, 37, 84, 85, 86, 87, 88, 89, 90, 37, + 37, 91, 92, 93, 94, 7, 95, 96, 7, 7, 97, 7, 98, 99, 100, 7, + 101, 7, 102, 37, 103, 7, 7, 104, 18, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 105, 3, 7, 7, 106, 107, 108, 109, 110, 37, 39, 111, 112, + 113, 7, 7, 114, 115, 116, 7, 117, 118, 119, 63, 37, 37, 37, 120, 37, + 121, 37, 122, 123, 124, 125, 37, 37, 126, 127, 128, 129, 130, 131, 7, 132, + 7, 133, 134, 135, 136, 37, 137, 138, 7, 7, 7, 7, 7, 7, 10, 139, + 104, 7, 140, 135, 7, 141, 142, 143, 144, 145, 146, 147, 148, 37, 149, 150, + 151, 152, 153, 7, 136, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 154, 7, 155, 156, 37, 37, 37, 37, 37, 37, 157, + 158, 37, 37, 159, 37, 37, 37, 37, 7, 160, 118, 7, 7, 7, 7, 161, + 7, 95, 7, 162, 163, 164, 164, 10, 37, 165, 37, 37, 37, 37, 37, 37, + 166, 167, 37, 37, 168, 169, 169, 170, 171, 172, 7, 7, 173, 174, 37, 175, + 37, 37, 37, 37, 37, 37, 175, 176, 169, 169, 177, 37, 37, 37, 37, 37, + 7, 7, 7, 7, 178, 37, 179, 135, 180, 181, 7, 182, 183, 7, 7, 184, + 185, 186, 7, 7, 187, 188, 37, 185, 189, 190, 7, 191, 192, 127, 193, 194, + 32, 195, 196, 197, 41, 198, 199, 200, 7, 201, 202, 203, 37, 204, 205, 206, + 207, 208, 96, 209, 7, 7, 7, 210, 7, 7, 7, 7, 7, 211, 212, 213, + 214, 215, 216, 7, 7, 217, 218, 7, 7, 135, 179, 7, 219, 7, 220, 221, + 222, 223, 224, 225, 7, 7, 7, 226, 227, 2, 3, 228, 229, 118, 230, 231, + 232, 233, 234, 37, 7, 7, 7, 174, 37, 37, 7, 235, 37, 37, 37, 236, + 37, 37, 37, 37, 197, 7, 237, 238, 7, 179, 239, 240, 135, 7, 241, 37, + 7, 7, 7, 7, 135, 242, 243, 213, 7, 244, 7, 245, 37, 37, 37, 37, + 7, 163, 117, 220, 37, 37, 37, 37, 246, 247, 117, 163, 118, 37, 37, 248, + 117, 249, 37, 37, 7, 250, 37, 37, 251, 252, 37, 197, 197, 37, 86, 253, + 7, 117, 117, 254, 217, 37, 37, 37, 7, 7, 136, 37, 7, 254, 7, 254, + 130, 255, 256, 257, 130, 258, 179, 259, 130, 260, 179, 261, 130, 198, 262, 37, + 263, 264, 37, 37, 265, 266, 267, 268, 269, 54, 270, 271, 37, 37, 37, 37, + 7, 272, 273, 37, 7, 29, 274, 37, 37, 37, 37, 37, 7, 275, 276, 37, + 7, 29, 277, 37, 7, 278, 112, 37, 279, 280, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 7, 7, 281, 37, 37, 37, 37, 37, 37, 7, 282, + 283, 284, 285, 286, 287, 288, 37, 37, 7, 7, 7, 7, 249, 37, 37, 37, + 7, 7, 7, 173, 7, 7, 7, 7, 7, 7, 245, 37, 37, 37, 37, 37, + 7, 173, 37, 37, 37, 37, 37, 37, 7, 7, 289, 37, 37, 37, 37, 37, + 7, 282, 118, 112, 37, 37, 179, 290, 7, 291, 292, 293, 103, 37, 37, 37, + 7, 7, 294, 295, 296, 37, 37, 297, 298, 37, 37, 37, 37, 37, 37, 37, + 7, 7, 7, 299, 300, 301, 37, 37, 37, 37, 37, 302, 303, 304, 37, 37, + 37, 37, 305, 37, 37, 37, 37, 37, 7, 7, 306, 7, 307, 308, 309, 7, + 310, 311, 312, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 313, 314, 96, + 306, 306, 160, 160, 283, 283, 315, 316, 10, 317, 10, 318, 319, 320, 37, 37, + 321, 322, 37, 37, 37, 37, 37, 37, 7, 7, 7, 7, 7, 7, 323, 37, + 7, 7, 324, 37, 37, 37, 37, 37, 309, 325, 326, 327, 328, 329, 37, 37, + 37, 179, 330, 330, 155, 37, 37, 331, 37, 37, 37, 37, 332, 37, 333, 334, + 37, 37, 335, 336, 337, 338, 37, 37, 37, 37, 37, 339, 340, 37, 37, 341, + 37, 37, 342, 37, 37, 343, 344, 37, 345, 346, 37, 37, 37, 37, 37, 37, + 347, 10, 10, 10, 37, 37, 37, 37, 10, 10, 10, 10, 10, 10, 10, 348, }; static RE_UINT8 re_word_break_stage_4[] = { - 0, 0, 1, 2, 3, 4, 0, 5, 6, 6, 7, 0, 8, 9, 9, 9, - 10, 11, 10, 0, 0, 12, 13, 14, 0, 15, 13, 0, 9, 10, 16, 17, - 16, 18, 9, 19, 0, 20, 21, 21, 9, 22, 17, 23, 0, 24, 10, 22, - 25, 9, 9, 25, 26, 21, 27, 9, 28, 0, 29, 0, 30, 21, 21, 31, - 32, 31, 33, 33, 34, 0, 35, 36, 37, 38, 0, 39, 40, 41, 42, 21, - 43, 44, 45, 9, 9, 46, 21, 47, 21, 48, 49, 27, 50, 51, 0, 52, - 53, 9, 40, 8, 9, 54, 55, 0, 50, 9, 21, 16, 56, 0, 57, 21, - 21, 58, 58, 59, 58, 0, 0, 21, 21, 9, 54, 60, 58, 21, 54, 61, - 58, 8, 9, 51, 51, 9, 22, 9, 20, 17, 16, 60, 21, 62, 62, 63, - 0, 64, 0, 25, 16, 0, 30, 8, 10, 65, 22, 66, 16, 49, 40, 64, - 62, 59, 67, 0, 8, 20, 0, 61, 27, 68, 22, 8, 31, 59, 19, 0, - 0, 69, 70, 8, 10, 17, 22, 16, 66, 22, 65, 19, 16, 69, 40, 69, - 49, 59, 19, 64, 21, 8, 16, 46, 21, 49, 0, 32, 9, 8, 0, 13, - 66, 0, 10, 46, 49, 63, 17, 9, 69, 8, 9, 28, 71, 64, 21, 72, - 69, 0, 67, 21, 40, 0, 21, 40, 73, 0, 31, 74, 21, 59, 59, 0, - 0, 75, 67, 69, 9, 58, 21, 74, 0, 71, 64, 21, 59, 69, 49, 62, - 30, 74, 69, 21, 76, 59, 0, 28, 10, 9, 10, 30, 54, 74, 54, 0, - 77, 0, 21, 0, 0, 67, 64, 78, 79, 0, 9, 16, 74, 0, 9, 42, - 0, 30, 21, 45, 9, 21, 9, 0, 80, 9, 21, 27, 73, 8, 40, 21, - 45, 53, 54, 81, 82, 82, 9, 20, 17, 22, 9, 17, 0, 83, 84, 0, - 0, 85, 86, 87, 0, 11, 88, 89, 0, 88, 37, 90, 37, 37, 0, 65, - 13, 65, 8, 16, 22, 25, 16, 9, 0, 8, 16, 13, 0, 17, 65, 42, - 27, 0, 91, 92, 93, 94, 95, 95, 96, 95, 95, 96, 50, 0, 21, 97, - 9, 26, 51, 10, 98, 98, 42, 9, 65, 0, 9, 59, 64, 59, 74, 69, - 17, 99, 8, 10, 0, 16, 40, 59, 65, 9, 0, 100, 101, 33, 33, 34, - 33, 102, 103, 101, 104, 89, 11, 88, 0, 105, 5, 106, 9, 107, 0, 108, - 109, 0, 0, 110, 95, 111, 17, 19, 112, 0, 10, 25, 19, 51, 58, 32, - 9, 99, 40, 14, 21, 113, 42, 13, 45, 19, 114, 0, 54, 69, 21, 25, - 74, 19, 94, 0, 16, 32, 37, 0, 59, 30, 115, 37, 116, 21, 40, 30, - 69, 59, 69, 74, 13, 66, 8, 22, 25, 8, 10, 8, 25, 10, 9, 61, - 66, 51, 82, 0, 82, 8, 8, 8, 0, 117, 118, 118, 14, 0, + 0, 0, 1, 2, 0, 0, 0, 0, 3, 4, 0, 5, 6, 6, 7, 0, + 8, 9, 9, 9, 9, 9, 10, 11, 8, 9, 9, 9, 9, 9, 10, 0, + 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, 0, 15, 13, 0, + 9, 9, 9, 9, 9, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 16, 17, 9, 9, 16, 18, 0, 0, 9, 19, 0, 20, 0, 0, 0, 0, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 9, 22, 17, 23, + 0, 24, 10, 22, 9, 9, 9, 9, 25, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 25, 9, 9, 26, 21, 27, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 28, 0, + 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 29, 0, 30, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 31, 32, 31, 0, 0, 33, 33, 33, 33, + 33, 33, 34, 0, 35, 36, 0, 0, 37, 38, 0, 39, 21, 21, 40, 41, + 9, 9, 42, 21, 21, 21, 21, 21, 6, 6, 43, 44, 45, 9, 9, 9, + 9, 9, 9, 9, 9, 46, 21, 47, 21, 48, 49, 27, 6, 6, 50, 51, + 0, 0, 0, 52, 53, 9, 9, 9, 9, 9, 9, 9, 21, 21, 21, 21, + 21, 21, 40, 8, 9, 9, 9, 9, 9, 54, 21, 21, 55, 0, 0, 0, + 6, 6, 50, 9, 9, 9, 9, 9, 9, 9, 42, 21, 21, 16, 56, 0, + 9, 9, 9, 9, 9, 54, 57, 21, 21, 58, 58, 59, 0, 0, 0, 0, + 9, 9, 9, 9, 9, 9, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 9, 9, 9, 9, 22, 9, 16, 0, 0, 0, 0, 0, 21, 21, 21, + 60, 21, 21, 21, 21, 21, 21, 21, 21, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 54, 61, 21, 21, 21, 21, 58, 21, 9, 9, + 54, 62, 6, 6, 8, 9, 9, 9, 58, 8, 9, 51, 51, 9, 9, 9, + 9, 9, 22, 9, 20, 17, 16, 61, 21, 63, 63, 64, 0, 65, 0, 25, + 54, 62, 6, 6, 16, 0, 0, 0, 30, 8, 10, 66, 51, 9, 9, 9, + 9, 9, 22, 9, 22, 67, 16, 49, 40, 65, 63, 59, 68, 0, 8, 20, + 0, 62, 6, 6, 27, 69, 0, 0, 30, 8, 9, 25, 25, 9, 9, 9, + 9, 9, 22, 9, 22, 8, 16, 61, 21, 31, 31, 59, 19, 0, 0, 0, + 54, 62, 6, 6, 0, 0, 28, 0, 30, 8, 9, 51, 51, 9, 9, 9, + 21, 63, 63, 59, 0, 70, 0, 25, 54, 62, 6, 6, 28, 0, 0, 0, + 71, 8, 10, 17, 22, 16, 67, 22, 66, 19, 10, 17, 9, 9, 16, 70, + 40, 70, 49, 59, 19, 65, 0, 0, 0, 62, 6, 6, 0, 0, 0, 0, + 21, 8, 9, 22, 22, 9, 9, 9, 9, 9, 22, 9, 9, 9, 16, 46, + 21, 49, 49, 59, 0, 32, 10, 0, 54, 62, 6, 6, 0, 0, 0, 0, + 58, 8, 9, 22, 22, 9, 9, 9, 9, 9, 22, 9, 9, 8, 16, 61, + 21, 49, 49, 59, 0, 32, 0, 13, 54, 62, 6, 6, 67, 0, 0, 0, + 30, 8, 9, 22, 22, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 46, + 21, 49, 49, 64, 0, 42, 0, 66, 54, 62, 6, 6, 0, 0, 17, 9, + 70, 8, 9, 9, 9, 10, 17, 9, 9, 9, 9, 9, 25, 9, 9, 28, + 9, 10, 72, 65, 21, 73, 21, 21, 0, 62, 6, 6, 70, 0, 0, 0, + 0, 0, 0, 0, 68, 21, 40, 0, 0, 65, 21, 40, 6, 6, 74, 0, + 0, 0, 0, 0, 68, 21, 31, 75, 0, 0, 21, 59, 6, 6, 74, 0, + 19, 0, 0, 0, 0, 0, 59, 0, 6, 6, 74, 0, 0, 76, 68, 70, + 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 19, 30, 21, 21, 21, + 21, 49, 9, 58, 21, 21, 30, 21, 21, 21, 21, 21, 21, 21, 21, 75, + 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 65, 21, 21, 21, 21, 40, + 6, 6, 74, 0, 0, 70, 59, 70, 49, 63, 21, 59, 30, 75, 0, 0, + 70, 21, 21, 31, 6, 6, 77, 59, 9, 25, 0, 28, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 10, 9, 9, 9, 22, 16, 9, 10, 22, 16, + 9, 9, 22, 16, 9, 9, 9, 9, 9, 9, 9, 9, 22, 16, 9, 10, + 22, 16, 9, 9, 9, 10, 9, 9, 9, 9, 9, 9, 22, 16, 9, 9, + 9, 9, 9, 9, 9, 9, 10, 30, 9, 9, 9, 9, 0, 0, 0, 0, + 9, 9, 9, 9, 9, 16, 9, 16, 9, 9, 9, 51, 9, 9, 9, 9, + 9, 9, 10, 17, 9, 9, 19, 0, 9, 9, 9, 22, 54, 75, 0, 0, + 9, 9, 9, 9, 54, 75, 0, 0, 9, 9, 9, 9, 54, 0, 0, 0, + 9, 9, 9, 22, 78, 0, 0, 0, 21, 21, 21, 21, 21, 0, 0, 68, + 6, 6, 74, 0, 0, 0, 0, 0, 0, 0, 65, 79, 6, 6, 74, 0, + 9, 9, 9, 9, 9, 9, 0, 0, 9, 80, 9, 9, 9, 9, 9, 9, + 9, 9, 81, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 16, 0, 0, + 9, 9, 9, 9, 9, 9, 9, 10, 21, 21, 21, 0, 21, 21, 21, 0, + 0, 0, 0, 0, 6, 6, 74, 0, 9, 9, 9, 9, 9, 42, 21, 0, + 0, 0, 0, 0, 0, 30, 21, 40, 21, 21, 21, 21, 21, 21, 21, 63, + 6, 6, 74, 0, 6, 6, 74, 0, 0, 0, 0, 0, 21, 21, 21, 40, + 21, 45, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 21, 21, 21, + 21, 45, 9, 0, 6, 6, 74, 0, 0, 0, 65, 21, 21, 0, 0, 0, + 82, 9, 9, 9, 9, 9, 9, 9, 58, 21, 21, 27, 6, 6, 50, 9, + 9, 54, 21, 21, 21, 0, 0, 0, 9, 21, 21, 21, 21, 21, 0, 0, + 6, 6, 74, 8, 6, 6, 50, 9, 9, 9, 9, 9, 9, 9, 9, 16, + 9, 9, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 21, 21, 21, + 21, 21, 45, 53, 54, 83, 59, 0, 21, 21, 21, 21, 21, 59, 65, 21, + 9, 16, 9, 16, 9, 9, 84, 84, 9, 9, 9, 9, 9, 22, 9, 20, + 17, 22, 9, 19, 9, 17, 9, 0, 9, 9, 9, 19, 17, 22, 9, 19, + 0, 0, 0, 85, 0, 0, 86, 0, 0, 87, 88, 89, 0, 0, 0, 11, + 90, 91, 0, 0, 0, 90, 0, 0, 37, 92, 37, 37, 28, 0, 0, 66, + 0, 0, 0, 0, 9, 9, 9, 19, 0, 0, 0, 0, 21, 21, 21, 21, + 21, 21, 21, 21, 75, 0, 0, 0, 13, 66, 17, 9, 9, 28, 8, 16, + 0, 20, 22, 25, 9, 9, 16, 9, 0, 8, 16, 13, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 17, 9, 9, 9, 9, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 93, 0, + 0, 0, 94, 95, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, + 9, 9, 9, 10, 9, 9, 9, 9, 9, 19, 66, 42, 27, 0, 0, 0, + 9, 9, 0, 66, 0, 0, 0, 65, 9, 9, 9, 9, 9, 10, 0, 0, + 9, 10, 9, 10, 9, 10, 9, 10, 0, 0, 0, 66, 0, 0, 0, 0, + 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 70, 21, 97, 98, 66, 19, + 0, 0, 0, 0, 0, 0, 99, 100, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 102, 101, 0, 8, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 16, 8, 9, 9, 9, 9, 9, 9, 10, 0, 0, 0, 0, + 9, 9, 9, 9, 9, 9, 10, 0, 0, 0, 0, 0, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 102, 101, 101, 101, 101, 101, 101, 0, 0, + 9, 9, 9, 19, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, + 9, 9, 9, 19, 9, 9, 9, 9, 6, 6, 50, 0, 0, 0, 0, 0, + 9, 9, 9, 42, 40, 21, 21, 103, 9, 9, 9, 9, 9, 9, 9, 54, + 9, 9, 9, 9, 59, 0, 0, 0, 0, 0, 0, 0, 0, 66, 9, 9, + 17, 9, 9, 9, 9, 9, 9, 9, 9, 9, 51, 9, 9, 9, 9, 9, + 9, 9, 9, 10, 9, 9, 0, 0, 104, 104, 42, 9, 9, 9, 9, 9, + 42, 21, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 0, 0, 0, + 27, 9, 9, 9, 9, 9, 9, 9, 21, 59, 0, 0, 6, 6, 74, 0, + 21, 21, 21, 21, 27, 9, 66, 28, 9, 54, 21, 59, 9, 9, 9, 9, + 9, 42, 21, 21, 21, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 19, + 9, 9, 9, 9, 42, 21, 21, 21, 75, 0, 0, 66, 6, 6, 74, 0, + 0, 68, 0, 0, 6, 6, 74, 0, 9, 9, 58, 21, 21, 40, 0, 0, + 42, 9, 9, 59, 6, 6, 74, 0, 0, 0, 0, 0, 0, 0, 65, 59, + 0, 0, 0, 0, 49, 63, 75, 70, 68, 0, 0, 0, 0, 0, 0, 0, + 9, 9, 42, 21, 17, 105, 0, 0, 8, 10, 8, 10, 8, 10, 0, 0, + 9, 10, 9, 10, 9, 9, 9, 9, 9, 16, 0, 0, 9, 9, 9, 9, + 42, 21, 40, 59, 6, 6, 74, 0, 9, 0, 0, 0, 9, 9, 9, 9, + 9, 10, 66, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, + 9, 10, 0, 0, 66, 9, 0, 106, 33, 33, 107, 33, 33, 34, 33, 108, + 109, 107, 33, 33, 9, 9, 9, 9, 9, 9, 9, 9, 16, 0, 0, 0, + 0, 0, 0, 0, 66, 9, 9, 9, 9, 9, 9, 9, 17, 9, 9, 9, + 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 0, + 21, 21, 21, 21, 110, 91, 0, 0, 21, 21, 21, 21, 11, 90, 0, 0, + 0, 0, 0, 111, 5, 112, 0, 0, 0, 0, 0, 0, 9, 22, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 113, 0, 114, 0, 5, 0, 0, 115, 0, + 0, 116, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 117, + 17, 9, 17, 9, 17, 9, 17, 19, 0, 0, 0, 0, 0, 0, 118, 0, + 9, 9, 9, 8, 9, 9, 9, 9, 9, 10, 9, 9, 9, 9, 10, 25, + 9, 9, 9, 16, 9, 9, 9, 16, 9, 9, 9, 9, 9, 19, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 68, 9, 9, 9, 9, 19, 0, 0, 0, + 75, 0, 0, 0, 0, 0, 0, 0, 9, 9, 10, 0, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 54, 40, 0, 9, 0, 9, 9, 8, 16, 0, 0, + 6, 6, 74, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 9, 9, + 9, 9, 0, 0, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, + 9, 16, 22, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 25, 19, 51, + 9, 9, 9, 9, 10, 16, 0, 0, 9, 9, 9, 9, 9, 9, 16, 0, + 9, 9, 9, 9, 9, 9, 0, 17, 58, 32, 0, 21, 9, 8, 8, 9, + 9, 9, 9, 9, 9, 0, 40, 65, 9, 105, 0, 0, 0, 0, 0, 0, + 9, 9, 9, 9, 10, 0, 0, 0, 9, 9, 9, 9, 9, 9, 21, 21, + 21, 40, 0, 0, 0, 0, 0, 0, 0, 62, 6, 6, 0, 0, 0, 65, + 9, 9, 9, 9, 21, 21, 40, 14, 9, 9, 19, 0, 6, 6, 74, 0, + 9, 42, 21, 21, 21, 119, 6, 6, 9, 9, 9, 9, 42, 13, 0, 0, + 45, 19, 70, 75, 6, 6, 120, 19, 9, 9, 9, 9, 25, 9, 9, 9, + 9, 9, 9, 21, 21, 21, 0, 72, 9, 10, 22, 25, 9, 9, 9, 25, + 9, 9, 19, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 42, + 21, 21, 40, 0, 6, 6, 74, 0, 21, 8, 9, 51, 51, 9, 9, 9, + 21, 63, 63, 59, 19, 65, 0, 8, 54, 70, 21, 75, 21, 75, 0, 0, + 9, 9, 9, 9, 9, 58, 21, 21, 21, 82, 10, 0, 6, 6, 74, 0, + 21, 25, 0, 0, 6, 6, 74, 0, 9, 9, 9, 42, 21, 59, 21, 21, + 75, 0, 0, 0, 0, 0, 9, 59, 75, 19, 0, 0, 6, 6, 74, 0, + 9, 9, 42, 21, 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, + 21, 21, 21, 0, 6, 6, 74, 0, 6, 6, 74, 0, 0, 0, 0, 66, + 9, 9, 9, 9, 9, 9, 19, 0, 9, 9, 22, 9, 9, 9, 9, 9, + 9, 9, 9, 42, 21, 40, 21, 21, 19, 0, 0, 0, 6, 6, 74, 0, + 0, 0, 0, 0, 17, 9, 9, 9, 9, 9, 9, 9, 70, 21, 21, 21, + 21, 21, 30, 21, 21, 40, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, + 9, 9, 9, 16, 21, 75, 0, 0, 9, 9, 9, 9, 21, 40, 0, 0, + 9, 0, 0, 0, 6, 6, 74, 0, 66, 9, 9, 9, 9, 9, 0, 8, + 9, 19, 0, 0, 58, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 40, + 0, 0, 0, 65, 82, 9, 9, 9, 19, 0, 0, 0, 0, 0, 0, 0, + 100, 0, 0, 0, 0, 0, 0, 0, 9, 9, 10, 0, 9, 9, 9, 19, + 9, 9, 19, 0, 9, 9, 16, 32, 37, 0, 0, 0, 0, 0, 0, 0, + 0, 30, 59, 30, 121, 37, 122, 21, 40, 30, 21, 0, 0, 0, 0, 0, + 0, 0, 70, 59, 0, 0, 0, 0, 70, 75, 0, 0, 0, 0, 0, 0, + 9, 9, 9, 9, 9, 22, 9, 9, 9, 9, 9, 9, 9, 9, 9, 22, + 13, 67, 8, 22, 9, 9, 25, 8, 9, 8, 9, 9, 9, 9, 9, 9, + 9, 25, 10, 8, 9, 22, 9, 22, 9, 9, 9, 9, 9, 9, 25, 10, + 9, 20, 17, 9, 22, 9, 9, 9, 9, 16, 9, 9, 9, 9, 9, 9, + 22, 9, 9, 9, 9, 9, 10, 9, 10, 9, 9, 62, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 21, 21, 21, 21, 21, 40, 65, 21, + 21, 21, 21, 75, 0, 68, 0, 0, 0, 75, 0, 0, 0, 0, 65, 21, + 30, 21, 21, 21, 0, 0, 0, 0, 21, 40, 21, 21, 21, 21, 63, 21, + 31, 49, 40, 0, 0, 0, 0, 0, 9, 19, 0, 0, 21, 40, 0, 0, + 9, 21, 40, 0, 6, 6, 74, 0, 67, 51, 8, 9, 10, 9, 84, 0, + 13, 66, 84, 8, 67, 51, 84, 84, 67, 51, 10, 9, 10, 9, 8, 20, + 9, 9, 25, 9, 9, 9, 9, 0, 8, 8, 25, 9, 9, 9, 9, 0, + 9, 9, 16, 0, 9, 9, 9, 9, 0, 123, 124, 124, 124, 124, 124, 124, + 0, 93, 0, 0, 0, 0, 0, 0, 125, 126, 94, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 127, 128, 94, 94, 129, 129, 126, 0, 0, 0, + 0, 130, 131, 132, 129, 129, 126, 126, 133, 133, 134, 0, 0, 0, 0, 0, + 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 132, 0, + 0, 0, 0, 0, 126, 135, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, + 0, 133, 125, 129, 0, 0, 0, 0, 125, 0, 0, 0, 0, 136, 0, 0, + 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 136, + 0, 132, 0, 0, 137, 129, 95, 136, 14, 0, 0, 0, 0, 0, 0, 0, + 21, 21, 21, 21, 0, 0, 0, 0, }; static RE_UINT8 re_word_break_stage_5[] = { @@ -4437,24 +4731,29 @@ static RE_UINT8 re_word_break_stage_5[] = { 7, 11, 11, 7, 7, 0, 7, 7, 15, 15, 11, 11, 11, 0, 0, 11, 0, 0, 0, 9, 11, 7, 11, 11, 11, 11, 7, 7, 7, 11, 0, 0, 13, 0, 11, 0, 7, 7, 11, 7, 11, 7, 7, 7, 7, 7, 0, 0, - 7, 11, 7, 7, 0, 0, 15, 15, 7, 0, 0, 7, 7, 7, 11, 0, - 0, 0, 0, 7, 0, 0, 0, 11, 0, 11, 11, 0, 0, 7, 0, 0, - 11, 7, 0, 0, 0, 0, 7, 7, 0, 0, 7, 11, 0, 0, 7, 0, - 7, 0, 7, 0, 15, 15, 0, 0, 7, 0, 0, 0, 0, 7, 0, 7, - 15, 15, 7, 7, 11, 0, 7, 7, 7, 7, 9, 0, 11, 7, 11, 0, - 7, 7, 7, 11, 7, 11, 11, 0, 0, 11, 0, 11, 7, 7, 9, 9, - 14, 14, 0, 0, 14, 0, 0, 12, 6, 6, 9, 9, 9, 9, 9, 0, - 16, 0, 0, 0, 13, 0, 0, 0, 9, 0, 9, 9, 0, 10, 10, 10, - 10, 10, 0, 0, 0, 7, 7, 10, 10, 0, 0, 0, 10, 10, 10, 10, - 10, 10, 10, 0, 7, 7, 0, 11, 11, 11, 7, 11, 11, 7, 7, 0, - 0, 3, 7, 3, 3, 0, 3, 3, 3, 0, 3, 0, 3, 3, 0, 3, - 13, 0, 0, 12, 0, 16, 16, 16, 13, 12, 0, 0, 11, 0, 0, 9, - 0, 0, 0, 14, 0, 0, 12, 13, 0, 0, 10, 10, 10, 10, 7, 7, - 0, 9, 9, 9, 7, 0, 15, 15, 15, 15, 11, 0, 7, 7, 7, 9, - 9, 9, 9, 7, 0, 0, 8, 8, 8, 8, 8, 8, + 7, 7, 9, 7, 7, 11, 7, 7, 0, 0, 15, 15, 7, 0, 0, 7, + 7, 7, 11, 0, 0, 0, 0, 7, 0, 0, 0, 11, 0, 11, 11, 0, + 0, 7, 0, 0, 11, 7, 0, 0, 0, 0, 7, 7, 0, 0, 7, 11, + 0, 0, 7, 0, 7, 0, 7, 0, 15, 15, 0, 0, 7, 0, 0, 0, + 0, 7, 0, 7, 15, 15, 7, 7, 11, 0, 7, 7, 7, 7, 9, 0, + 11, 7, 7, 11, 11, 7, 11, 0, 7, 7, 7, 11, 7, 11, 11, 0, + 0, 11, 0, 11, 7, 19, 9, 9, 14, 14, 0, 0, 14, 0, 0, 12, + 6, 6, 9, 9, 9, 9, 9, 16, 16, 0, 0, 0, 13, 0, 0, 0, + 9, 0, 9, 9, 0, 17, 0, 0, 0, 0, 17, 17, 17, 17, 0, 0, + 20, 0, 0, 0, 0, 10, 10, 10, 10, 10, 0, 0, 0, 7, 7, 10, + 10, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 0, 7, 7, 0, 11, + 11, 11, 7, 11, 11, 7, 7, 0, 0, 3, 7, 3, 3, 0, 3, 3, + 3, 0, 3, 0, 3, 3, 0, 3, 13, 0, 0, 12, 0, 16, 16, 16, + 13, 12, 0, 0, 11, 0, 0, 9, 0, 0, 0, 14, 0, 0, 12, 13, + 0, 0, 10, 10, 10, 10, 7, 7, 0, 9, 9, 9, 7, 0, 15, 15, + 15, 15, 11, 0, 7, 7, 7, 9, 9, 9, 9, 7, 0, 0, 8, 8, + 8, 8, 8, 8, 0, 0, 0, 17, 17, 0, 0, 0, 0, 0, 0, 18, + 18, 18, 18, 18, 17, 17, 17, 17, 0, 0, 21, 21, 21, 21, 0, 0, + 0, 0, 17, 0, 0, 17, 17, 17, 0, 0, 0, 20, 0, 17, 17, 0, + 17, 17, 17, 0, 17, 0, 0, 17, }; -/* Word_Break: 4298 bytes. */ +/* Word_Break: 5624 bytes. */ RE_UINT32 re_get_word_break(RE_UINT32 ch) { RE_UINT32 code; @@ -4462,15 +4761,15 @@ RE_UINT32 re_get_word_break(RE_UINT32 ch) { RE_UINT32 pos; RE_UINT32 value; - f = ch >> 12; - code = ch ^ (f << 12); + f = ch >> 13; + code = ch ^ (f << 13); pos = (RE_UINT32)re_word_break_stage_1[f] << 5; - f = code >> 7; - code ^= f << 7; - pos = (RE_UINT32)re_word_break_stage_2[pos + f] << 4; - f = code >> 3; - code ^= f << 3; - pos = (RE_UINT32)re_word_break_stage_3[pos + f] << 1; + f = code >> 8; + code ^= f << 8; + pos = (RE_UINT32)re_word_break_stage_2[pos + f] << 3; + f = code >> 5; + code ^= f << 5; + pos = (RE_UINT32)re_word_break_stage_3[pos + f] << 3; f = code >> 2; code ^= f << 2; pos = (RE_UINT32)re_word_break_stage_4[pos + f] << 2; @@ -4496,27 +4795,27 @@ static RE_UINT8 re_grapheme_cluster_break_stage_1[] = { static RE_UINT8 re_grapheme_cluster_break_stage_2[] = { 0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1, 17, 1, 1, 1, 18, 19, 20, 21, 22, 23, 24, 1, 1, - 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 26, 27, 1, 1, - 28, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 25, 1, 1, 1, 1, 1, 26, 27, 1, 1, 1, 1, 28, 29, 1, 1, + 30, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 29, 1, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 34, 35, 36, 37, 38, 39, 40, 34, 35, 36, 37, 38, 39, - 40, 34, 35, 36, 37, 38, 39, 40, 34, 35, 36, 37, 38, 39, 40, 34, - 35, 36, 37, 38, 39, 40, 34, 41, 42, 42, 42, 42, 42, 42, 42, 42, + 1, 1, 1, 1, 1, 1, 31, 1, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 36, 37, 38, 39, 40, 41, 42, 36, 37, 38, 39, 40, 41, + 42, 36, 37, 38, 39, 40, 41, 42, 36, 37, 38, 39, 40, 41, 42, 36, + 37, 38, 39, 40, 41, 42, 36, 43, 44, 44, 44, 44, 44, 44, 44, 44, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 43, 1, 1, 44, 45, - 1, 46, 47, 48, 1, 1, 1, 1, 1, 1, 49, 1, 1, 1, 1, 1, - 50, 51, 52, 53, 54, 55, 56, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 57, 58, 1, 1, 1, 59, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 45, 1, 1, 46, 47, + 1, 48, 49, 50, 1, 1, 1, 1, 1, 1, 51, 1, 1, 1, 1, 1, + 52, 53, 54, 55, 56, 57, 58, 59, 1, 1, 1, 1, 60, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 61, 62, 1, 1, 1, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 60, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 64, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 61, 62, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 63, 1, 1, 1, 1, 1, 1, 1, - 1, 64, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 42, 65, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 1, 65, 66, 1, 1, 1, 1, 1, 1, 1, 67, 1, 1, 1, 1, 1, + 68, 1, 1, 1, 1, 1, 1, 1, 69, 70, 1, 1, 1, 1, 1, 1, + 1, 71, 1, 72, 73, 74, 75, 1, 1, 76, 1, 1, 1, 1, 1, 1, + 77, 78, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, }; @@ -4527,139 +4826,168 @@ static RE_UINT8 re_grapheme_cluster_break_stage_3[] = { 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 5, 8, 9, 2, 2, 2, 10, 11, 2, 2, 12, 5, 2, 13, 2, 2, 2, 2, 2, 14, 15, 2, - 3, 16, 2, 5, 17, 2, 2, 2, 2, 2, 18, 13, 2, 2, 12, 19, - 2, 20, 21, 2, 2, 22, 2, 2, 2, 2, 2, 2, 2, 2, 23, 5, - 24, 2, 2, 25, 26, 27, 28, 2, 29, 2, 2, 30, 31, 32, 28, 2, - 33, 2, 2, 34, 35, 16, 2, 36, 33, 2, 2, 34, 37, 2, 28, 2, - 29, 2, 2, 38, 31, 39, 28, 2, 40, 2, 2, 41, 42, 32, 2, 2, - 43, 2, 2, 44, 45, 46, 28, 2, 29, 2, 2, 47, 48, 46, 28, 2, - 29, 2, 2, 41, 49, 32, 28, 2, 50, 2, 2, 2, 51, 52, 2, 50, - 2, 2, 2, 53, 54, 2, 2, 2, 2, 2, 2, 55, 56, 2, 2, 2, - 2, 57, 2, 58, 2, 2, 2, 59, 60, 61, 5, 62, 63, 2, 2, 2, - 2, 2, 64, 65, 2, 66, 13, 67, 68, 69, 2, 2, 2, 2, 2, 2, - 70, 70, 70, 70, 70, 70, 71, 71, 71, 71, 72, 73, 73, 73, 73, 73, - 2, 2, 2, 2, 2, 64, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 74, 2, 74, 2, 28, 2, 28, 2, 2, 2, 75, 76, 77, 2, 2, - 78, 2, 2, 2, 2, 2, 2, 2, 2, 2, 79, 2, 2, 2, 2, 2, - 2, 2, 80, 81, 2, 2, 2, 2, 2, 2, 2, 82, 2, 2, 2, 2, - 2, 83, 2, 2, 2, 84, 85, 86, 2, 2, 2, 87, 2, 2, 2, 2, - 88, 2, 2, 89, 90, 2, 12, 19, 91, 2, 92, 2, 2, 2, 93, 94, - 2, 2, 95, 96, 2, 2, 2, 2, 2, 2, 2, 2, 2, 97, 98, 99, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 5, 5, 100, - 101, 2, 102, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 5, 5, 13, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 103, 104, - 2, 2, 2, 2, 2, 2, 2, 103, 2, 2, 2, 2, 2, 2, 5, 5, - 2, 2, 105, 2, 2, 2, 2, 2, 2, 106, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 103, 107, 2, 103, 2, 2, 2, 2, 2, 104, - 108, 2, 109, 2, 2, 2, 2, 2, 110, 2, 2, 111, 112, 2, 5, 104, - 2, 2, 113, 2, 114, 94, 70, 115, 24, 2, 2, 116, 117, 2, 118, 2, - 2, 2, 119, 120, 121, 2, 2, 122, 2, 2, 2, 123, 16, 2, 124, 125, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 126, 2, - 127, 128, 129, 130, 129, 131, 129, 127, 128, 129, 130, 129, 131, 129, 127, 128, - 129, 130, 129, 131, 129, 127, 128, 129, 130, 129, 131, 129, 127, 128, 129, 130, - 129, 131, 129, 127, 128, 129, 130, 129, 131, 129, 127, 128, 129, 130, 129, 131, - 129, 127, 128, 129, 130, 129, 131, 129, 127, 128, 129, 130, 129, 131, 129, 127, - 128, 129, 130, 129, 131, 129, 127, 128, 129, 130, 129, 131, 129, 127, 128, 129, - 130, 129, 131, 129, 127, 128, 129, 130, 129, 131, 129, 127, 128, 129, 130, 129, - 131, 129, 127, 128, 129, 130, 129, 131, 129, 127, 128, 129, 130, 129, 131, 129, - 129, 130, 129, 131, 129, 127, 128, 129, 130, 129, 132, 71, 133, 73, 73, 134, + 16, 17, 2, 5, 18, 2, 2, 2, 2, 2, 19, 13, 2, 2, 12, 20, + 2, 21, 22, 2, 2, 23, 2, 2, 2, 2, 2, 2, 2, 24, 25, 5, + 26, 2, 2, 27, 28, 29, 30, 2, 31, 2, 2, 32, 33, 34, 30, 2, + 35, 2, 2, 36, 37, 17, 2, 38, 35, 2, 2, 36, 39, 2, 30, 2, + 31, 2, 2, 40, 33, 41, 30, 2, 42, 2, 2, 43, 44, 34, 2, 2, + 45, 2, 2, 46, 47, 48, 30, 2, 31, 2, 2, 49, 50, 48, 30, 2, + 31, 2, 2, 43, 51, 34, 30, 2, 52, 2, 2, 2, 53, 54, 2, 52, + 2, 2, 2, 55, 56, 2, 2, 2, 2, 2, 2, 57, 58, 2, 2, 2, + 2, 59, 2, 60, 2, 2, 2, 61, 62, 63, 5, 64, 65, 2, 2, 2, + 2, 2, 66, 67, 2, 68, 13, 69, 70, 71, 2, 2, 2, 2, 2, 2, + 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 74, 75, 75, 75, 75, 75, + 2, 2, 2, 2, 2, 66, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 76, 2, 76, 2, 30, 2, 30, 2, 2, 2, 77, 78, 79, 2, 2, + 80, 2, 2, 2, 2, 2, 2, 2, 48, 2, 81, 2, 2, 2, 2, 2, + 2, 2, 82, 83, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 84, 2, 2, 2, 85, 86, 87, 2, 2, 2, 88, 2, 2, 2, 2, + 89, 2, 2, 90, 91, 2, 12, 20, 92, 2, 93, 2, 2, 2, 94, 95, + 2, 2, 96, 97, 2, 2, 2, 2, 2, 2, 2, 2, 2, 98, 99, 100, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 5, 5, 101, + 102, 2, 103, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 5, 5, 13, + 2, 104, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 105, + 106, 2, 2, 2, 2, 2, 107, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 108, 109, + 2, 2, 2, 2, 2, 2, 2, 108, 2, 2, 2, 2, 2, 2, 5, 5, + 2, 2, 110, 2, 2, 2, 2, 2, 2, 111, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 108, 112, 2, 46, 2, 2, 2, 2, 2, 109, + 113, 2, 114, 2, 2, 2, 2, 2, 115, 2, 2, 116, 117, 2, 5, 109, + 2, 2, 118, 2, 119, 95, 72, 120, 26, 2, 2, 121, 122, 2, 123, 2, + 2, 2, 124, 125, 126, 2, 2, 127, 2, 2, 2, 128, 17, 2, 129, 130, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 131, 2, + 132, 133, 134, 135, 134, 136, 134, 132, 133, 134, 135, 134, 136, 134, 132, 133, + 134, 135, 134, 136, 134, 132, 133, 134, 135, 134, 136, 134, 132, 133, 134, 135, + 134, 136, 134, 132, 133, 134, 135, 134, 136, 134, 132, 133, 134, 135, 134, 136, + 134, 132, 133, 134, 135, 134, 136, 134, 132, 133, 134, 135, 134, 136, 134, 132, + 133, 134, 135, 134, 136, 134, 132, 133, 134, 135, 134, 136, 134, 132, 133, 134, + 135, 134, 136, 134, 132, 133, 134, 135, 134, 136, 134, 132, 133, 134, 135, 134, + 136, 134, 132, 133, 134, 135, 134, 136, 134, 132, 133, 134, 135, 134, 136, 134, + 134, 135, 134, 136, 134, 132, 133, 134, 135, 134, 137, 73, 138, 75, 75, 139, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 135, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 5, 2, 136, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 44, 2, 2, 2, 2, 2, 137, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 69, + 2, 140, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 5, 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 46, 2, 2, 2, 2, 2, 141, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 71, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 13, 2, - 2, 2, 2, 2, 2, 2, 2, 138, 2, 2, 2, 2, 2, 2, 2, 2, - 139, 2, 2, 140, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 46, 2, - 141, 2, 2, 142, 143, 2, 2, 103, 91, 2, 2, 144, 2, 2, 2, 2, - 145, 2, 146, 147, 2, 2, 2, 148, 91, 2, 2, 149, 117, 2, 2, 2, - 2, 2, 150, 151, 2, 2, 2, 2, 2, 2, 2, 2, 2, 103, 152, 2, - 29, 2, 2, 30, 153, 32, 154, 147, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 155, 156, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 103, 157, 13, 2, 2, 2, - 2, 2, 2, 158, 13, 2, 2, 2, 2, 2, 159, 160, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 147, - 2, 2, 2, 143, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 161, 162, 163, 103, 145, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 164, 165, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 166, 167, 168, 2, 169, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 74, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 143, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 170, 171, + 2, 2, 2, 2, 2, 2, 2, 142, 2, 2, 2, 2, 2, 2, 2, 2, + 143, 2, 2, 144, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 48, 2, + 145, 2, 2, 146, 147, 2, 2, 108, 92, 2, 2, 148, 2, 2, 2, 2, + 149, 2, 150, 151, 2, 2, 2, 152, 92, 2, 2, 153, 154, 2, 2, 2, + 2, 2, 155, 156, 2, 2, 2, 2, 2, 2, 2, 2, 2, 108, 157, 2, + 95, 2, 2, 32, 158, 34, 159, 151, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 160, 161, 2, 2, 2, 2, 2, 2, 162, 163, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 108, 164, 13, 165, 2, 2, + 2, 2, 2, 166, 13, 2, 2, 2, 2, 2, 167, 168, 2, 2, 2, 2, + 2, 66, 169, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 170, 171, 2, 2, 2, 2, 2, 172, 173, 174, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 151, + 2, 2, 2, 147, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 175, 176, 177, 108, 149, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 178, 179, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 180, 181, 182, 2, 183, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 76, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 5, 5, 5, 184, 5, 5, 64, 123, 185, 12, 7, 2, 2, 2, 2, 2, + 186, 187, 188, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 147, 2, 2, + 2, 2, 2, 2, 189, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 190, 191, + 2, 2, 2, 2, 2, 2, 2, 2, 192, 2, 2, 2, 193, 2, 2, 194, + 2, 2, 2, 2, 195, 196, 197, 198, 199, 2, 200, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 201, 2, 202, 2, 2, 2, 2, 203, 2, + 2, 2, 2, 2, 204, 2, 2, 2, 2, 2, 205, 206, 196, 2, 2, 2, + 2, 207, 208, 209, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 1, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, }; static RE_UINT8 re_grapheme_cluster_break_stage_4[] = { - 0, 0, 1, 2, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 4, - 3, 3, 3, 5, 6, 6, 6, 6, 7, 6, 8, 3, 9, 6, 6, 6, - 6, 6, 6, 10, 11, 10, 3, 3, 0, 12, 3, 3, 6, 6, 13, 14, - 3, 3, 7, 6, 15, 3, 3, 3, 3, 16, 6, 17, 6, 18, 19, 8, - 20, 3, 3, 3, 6, 6, 13, 3, 3, 16, 6, 6, 6, 3, 3, 3, - 3, 16, 10, 6, 6, 9, 9, 8, 3, 3, 9, 3, 3, 6, 6, 6, - 21, 3, 3, 3, 3, 3, 22, 23, 24, 6, 25, 26, 9, 6, 3, 3, - 16, 3, 3, 3, 27, 3, 3, 3, 3, 3, 3, 28, 24, 29, 30, 31, - 3, 7, 3, 3, 32, 3, 3, 3, 3, 3, 3, 23, 33, 7, 18, 8, - 8, 20, 3, 3, 24, 10, 34, 31, 3, 3, 3, 19, 3, 16, 3, 3, - 35, 3, 3, 3, 3, 3, 3, 22, 36, 37, 38, 31, 25, 3, 3, 3, - 3, 3, 3, 16, 25, 39, 19, 8, 3, 11, 3, 3, 3, 3, 3, 40, - 41, 42, 38, 8, 24, 23, 38, 31, 37, 3, 3, 3, 3, 3, 35, 7, - 43, 44, 45, 46, 47, 6, 13, 3, 3, 7, 6, 13, 47, 6, 10, 15, - 3, 3, 6, 8, 3, 3, 8, 3, 3, 48, 20, 37, 9, 6, 6, 21, - 6, 19, 3, 9, 6, 6, 9, 6, 6, 6, 6, 15, 3, 35, 3, 3, - 3, 3, 3, 9, 49, 6, 32, 33, 3, 37, 8, 16, 9, 15, 3, 3, - 35, 33, 3, 20, 3, 3, 3, 20, 50, 50, 50, 50, 51, 51, 51, 51, - 51, 51, 52, 52, 52, 52, 52, 52, 16, 15, 3, 3, 3, 53, 6, 54, - 45, 41, 24, 6, 6, 3, 3, 20, 3, 3, 7, 55, 3, 3, 20, 3, - 21, 46, 25, 3, 41, 45, 24, 3, 3, 56, 57, 3, 3, 7, 58, 3, - 3, 59, 6, 13, 44, 9, 6, 25, 46, 6, 6, 18, 6, 6, 6, 13, - 6, 60, 3, 3, 3, 49, 21, 25, 41, 60, 3, 3, 61, 3, 3, 3, - 62, 54, 53, 8, 3, 22, 54, 63, 54, 3, 3, 3, 3, 45, 45, 6, - 6, 43, 3, 3, 13, 6, 6, 6, 49, 6, 15, 20, 37, 15, 8, 3, - 6, 8, 3, 6, 3, 3, 4, 64, 3, 3, 0, 65, 3, 3, 3, 7, - 8, 3, 3, 3, 3, 3, 16, 6, 3, 3, 11, 3, 13, 6, 6, 8, - 35, 35, 7, 3, 66, 67, 3, 3, 68, 3, 3, 3, 3, 45, 45, 45, - 45, 15, 3, 3, 3, 16, 6, 8, 3, 7, 6, 6, 50, 50, 50, 69, - 7, 43, 54, 25, 60, 3, 3, 3, 3, 20, 3, 3, 3, 3, 9, 21, - 67, 33, 3, 3, 7, 3, 3, 70, 3, 3, 3, 15, 19, 18, 15, 16, - 3, 3, 66, 54, 3, 71, 3, 3, 66, 26, 36, 31, 72, 73, 73, 73, - 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 72, 73, 73, 72, 73, 73, - 73, 3, 3, 3, 51, 74, 75, 52, 52, 52, 52, 3, 3, 3, 3, 35, - 6, 6, 6, 8, 0, 0, 0, 3, 3, 16, 13, 3, 9, 11, 3, 6, - 3, 3, 13, 7, 76, 3, 3, 3, 3, 3, 6, 6, 6, 13, 3, 3, - 46, 21, 33, 5, 13, 3, 3, 3, 3, 7, 6, 24, 6, 15, 3, 3, - 7, 3, 3, 3, 66, 43, 6, 21, 3, 3, 3, 46, 54, 49, 3, 3, - 46, 6, 13, 3, 25, 30, 30, 68, 37, 16, 6, 15, 58, 6, 77, 63, - 49, 3, 3, 3, 43, 8, 45, 53, 46, 6, 21, 63, 3, 3, 7, 26, - 6, 53, 3, 3, 56, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 78, - 3, 3, 3, 11, 0, 3, 3, 3, 3, 79, 8, 62, 80, 0, 81, 6, - 13, 9, 6, 3, 3, 3, 16, 8, 3, 82, 83, 83, 83, 83, 83, 83, + 0, 0, 1, 2, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 4, + 3, 3, 3, 5, 6, 6, 6, 6, 7, 6, 8, 3, 9, 6, 6, 6, + 6, 6, 6, 10, 11, 10, 3, 3, 12, 13, 3, 3, 6, 6, 14, 15, + 3, 3, 7, 6, 16, 3, 3, 3, 3, 17, 6, 18, 6, 19, 20, 8, + 3, 3, 3, 21, 22, 3, 3, 3, 6, 6, 14, 3, 3, 17, 6, 6, + 6, 3, 3, 3, 3, 17, 10, 6, 6, 9, 9, 8, 3, 3, 9, 3, + 3, 6, 6, 6, 23, 6, 6, 6, 24, 3, 3, 3, 3, 3, 25, 26, + 27, 6, 28, 29, 9, 6, 3, 3, 17, 3, 3, 3, 30, 3, 3, 3, + 3, 3, 3, 31, 27, 32, 33, 34, 3, 7, 3, 3, 35, 3, 3, 3, + 3, 3, 3, 26, 36, 7, 19, 8, 8, 22, 3, 3, 27, 10, 37, 34, + 3, 3, 3, 20, 3, 17, 3, 3, 38, 3, 3, 3, 3, 3, 3, 25, + 39, 40, 41, 34, 28, 3, 3, 3, 3, 3, 3, 17, 28, 42, 20, 8, + 3, 11, 3, 3, 3, 3, 3, 43, 44, 45, 41, 8, 27, 26, 41, 46, + 40, 3, 3, 3, 3, 3, 38, 7, 47, 48, 49, 50, 51, 6, 14, 3, + 3, 7, 6, 14, 51, 6, 10, 16, 3, 3, 6, 8, 3, 3, 8, 3, + 3, 52, 22, 40, 9, 6, 6, 24, 6, 20, 3, 9, 6, 6, 9, 6, + 6, 6, 6, 16, 3, 38, 3, 3, 3, 3, 3, 9, 53, 6, 35, 36, + 3, 40, 8, 17, 9, 16, 3, 3, 38, 36, 3, 22, 3, 3, 3, 22, + 54, 54, 54, 54, 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 56, + 17, 16, 3, 3, 3, 57, 6, 58, 49, 44, 27, 6, 6, 3, 3, 22, + 3, 3, 7, 59, 3, 3, 22, 3, 24, 50, 28, 3, 44, 49, 27, 3, + 3, 7, 60, 3, 3, 61, 6, 14, 48, 9, 6, 28, 50, 6, 6, 19, + 6, 6, 6, 14, 6, 62, 3, 3, 3, 53, 24, 28, 44, 62, 3, 3, + 63, 3, 3, 3, 64, 58, 57, 8, 3, 25, 58, 65, 58, 3, 3, 3, + 3, 49, 49, 6, 6, 47, 3, 3, 14, 6, 6, 6, 53, 6, 16, 22, + 40, 16, 8, 3, 6, 8, 7, 6, 3, 3, 4, 66, 3, 3, 0, 67, + 3, 3, 3, 68, 3, 3, 68, 3, 3, 3, 69, 70, 3, 71, 3, 3, + 3, 3, 3, 7, 8, 3, 3, 3, 3, 3, 17, 6, 3, 3, 11, 3, + 14, 6, 6, 8, 38, 38, 7, 3, 72, 73, 3, 3, 74, 3, 3, 3, + 3, 49, 49, 49, 49, 8, 3, 3, 3, 17, 6, 8, 3, 7, 6, 6, + 54, 54, 54, 75, 7, 47, 58, 28, 62, 3, 3, 3, 3, 22, 3, 3, + 3, 3, 9, 24, 73, 36, 3, 3, 7, 3, 3, 76, 3, 3, 3, 16, + 20, 19, 16, 17, 3, 3, 72, 58, 3, 77, 3, 3, 72, 29, 39, 34, + 78, 79, 79, 79, 79, 79, 79, 78, 79, 79, 79, 79, 79, 79, 78, 79, + 79, 78, 79, 79, 79, 3, 3, 3, 55, 80, 81, 56, 56, 56, 56, 3, + 3, 3, 3, 38, 0, 0, 0, 3, 3, 17, 14, 3, 9, 11, 3, 6, + 3, 3, 14, 7, 82, 3, 3, 3, 3, 3, 6, 6, 6, 14, 3, 3, + 50, 24, 36, 83, 14, 3, 3, 3, 3, 7, 6, 27, 6, 16, 3, 3, + 7, 3, 3, 3, 72, 47, 6, 24, 84, 3, 17, 16, 3, 3, 3, 50, + 58, 53, 3, 38, 50, 6, 14, 3, 28, 33, 33, 74, 40, 17, 6, 16, + 3, 85, 6, 6, 47, 86, 3, 3, 60, 6, 87, 65, 53, 3, 3, 3, + 47, 8, 49, 57, 3, 3, 3, 8, 50, 6, 24, 65, 3, 3, 7, 29, + 6, 57, 3, 3, 47, 57, 6, 3, 3, 3, 3, 72, 6, 14, 6, 57, + 17, 6, 6, 6, 6, 6, 64, 6, 53, 36, 3, 3, 85, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 88, 3, 3, 3, 11, 0, 3, 3, 3, + 3, 89, 8, 64, 90, 0, 91, 6, 14, 9, 6, 3, 3, 3, 17, 8, + 6, 14, 7, 6, 3, 16, 3, 3, 6, 14, 6, 6, 6, 6, 19, 6, + 10, 20, 14, 3, 3, 6, 14, 3, 3, 92, 93, 93, 93, 93, 93, 93, + 3, 68, 3, 3, 94, 95, 69, 3, 3, 3, 96, 97, 69, 69, 98, 98, + 95, 3, 3, 3, 3, 99, 100, 101, 98, 98, 95, 95, 102, 102, 103, 3, + 3, 3, 101, 3, 3, 68, 101, 3, 95, 104, 3, 3, 3, 3, 71, 3, + 3, 102, 94, 98, 94, 3, 3, 3, 3, 105, 3, 3, 3, 3, 98, 105, + 3, 101, 3, 3, 106, 98, 70, 105, }; static RE_UINT8 re_grapheme_cluster_break_stage_5[] = { - 3, 3, 3, 3, 3, 3, 2, 3, 3, 1, 3, 3, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 3, 0, 0, 4, 4, 4, 4, 0, 0, 0, 4, - 4, 4, 0, 0, 0, 4, 4, 4, 4, 4, 0, 4, 0, 4, 4, 0, - 3, 3, 0, 0, 4, 4, 4, 0, 3, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 4, 4, 4, 3, 0, 4, 4, 0, 0, 4, 4, 0, 4, 4, - 0, 4, 0, 0, 4, 4, 4, 6, 0, 0, 4, 6, 4, 0, 6, 6, - 6, 4, 4, 4, 4, 6, 6, 6, 6, 4, 6, 6, 0, 4, 6, 6, - 4, 0, 4, 6, 4, 0, 0, 6, 6, 0, 0, 6, 6, 4, 0, 0, - 0, 4, 4, 6, 6, 4, 4, 0, 4, 6, 0, 6, 0, 0, 4, 0, - 4, 6, 6, 0, 0, 0, 6, 6, 6, 0, 6, 6, 6, 0, 4, 4, - 4, 0, 6, 4, 6, 6, 4, 6, 6, 0, 4, 6, 6, 6, 4, 4, - 4, 0, 4, 0, 6, 6, 6, 6, 6, 6, 6, 4, 0, 4, 0, 6, - 0, 4, 0, 4, 4, 6, 4, 4, 7, 7, 7, 7, 8, 8, 8, 8, - 9, 9, 9, 9, 4, 4, 6, 4, 4, 4, 6, 6, 4, 4, 3, 0, - 0, 6, 6, 6, 0, 0, 6, 0, 4, 6, 6, 4, 0, 6, 4, 6, - 6, 0, 0, 0, 4, 4, 6, 0, 0, 6, 4, 4, 6, 4, 6, 4, - 4, 4, 3, 3, 3, 3, 3, 0, 0, 0, 0, 6, 6, 4, 4, 6, - 6, 6, 0, 0, 7, 0, 0, 0, 4, 6, 0, 0, 0, 6, 4, 0, - 10, 11, 11, 11, 11, 11, 11, 11, 8, 8, 8, 0, 0, 0, 0, 9, - 6, 4, 6, 0, 4, 6, 4, 6, 6, 6, 6, 0, 0, 4, 6, 4, - 4, 4, 4, 3, 3, 3, 3, 4, 0, 0, 5, 5, 5, 5, 5, 5, + 4, 4, 4, 4, 4, 4, 3, 4, 4, 2, 4, 4, 0, 0, 0, 0, + 0, 0, 0, 4, 0, 4, 0, 0, 5, 5, 5, 5, 0, 0, 0, 5, + 5, 5, 0, 0, 0, 5, 5, 5, 5, 5, 0, 5, 0, 5, 5, 0, + 1, 1, 1, 1, 1, 1, 0, 0, 5, 5, 5, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 5, 5, 5, 1, 0, 5, 5, 0, 0, 5, + 5, 0, 5, 5, 0, 0, 0, 1, 0, 5, 0, 0, 5, 5, 1, 5, + 5, 5, 5, 7, 0, 0, 5, 7, 5, 0, 7, 7, 7, 5, 5, 5, + 5, 7, 7, 7, 7, 5, 7, 7, 0, 5, 7, 7, 5, 0, 5, 7, + 5, 0, 0, 7, 7, 0, 0, 7, 7, 5, 0, 0, 0, 5, 5, 7, + 7, 5, 5, 0, 5, 7, 0, 7, 0, 0, 5, 0, 5, 7, 7, 0, + 0, 0, 7, 7, 7, 0, 7, 7, 7, 0, 5, 5, 5, 0, 7, 5, + 7, 7, 5, 7, 7, 0, 5, 7, 7, 5, 1, 0, 7, 7, 5, 5, + 5, 0, 5, 0, 7, 7, 7, 7, 7, 7, 7, 5, 0, 5, 0, 7, + 0, 5, 0, 5, 5, 7, 5, 5, 8, 8, 8, 8, 9, 9, 9, 9, + 10, 10, 10, 10, 5, 5, 7, 5, 5, 5, 7, 7, 5, 5, 4, 0, + 5, 7, 7, 5, 0, 7, 5, 7, 7, 0, 0, 0, 5, 5, 7, 0, + 0, 7, 5, 5, 7, 5, 7, 5, 5, 15, 4, 4, 4, 4, 4, 0, + 0, 13, 0, 0, 0, 0, 13, 13, 13, 13, 0, 0, 16, 0, 0, 0, + 0, 0, 0, 7, 7, 5, 5, 7, 7, 7, 0, 0, 8, 0, 0, 0, + 5, 7, 0, 0, 0, 7, 5, 0, 11, 12, 12, 12, 12, 12, 12, 12, + 9, 9, 9, 0, 0, 0, 0, 10, 7, 5, 7, 0, 0, 1, 0, 0, + 7, 0, 1, 1, 0, 7, 7, 7, 5, 7, 5, 0, 5, 7, 5, 7, + 7, 7, 7, 0, 0, 5, 7, 5, 5, 5, 5, 4, 4, 4, 4, 5, + 0, 0, 6, 6, 6, 6, 6, 6, 0, 0, 0, 13, 13, 0, 0, 0, + 0, 0, 0, 14, 14, 14, 14, 14, 13, 13, 13, 13, 0, 0, 17, 17, + 17, 17, 0, 0, 0, 0, 13, 0, 0, 13, 13, 13, 0, 0, 0, 16, + 0, 13, 13, 0, 13, 13, 13, 0, 13, 0, 0, 13, }; -/* Grapheme_Cluster_Break: 2600 bytes. */ +/* Grapheme_Cluster_Break: 3052 bytes. */ RE_UINT32 re_get_grapheme_cluster_break(RE_UINT32 ch) { RE_UINT32 code; @@ -4688,8 +5016,8 @@ RE_UINT32 re_get_grapheme_cluster_break(RE_UINT32 ch) { static RE_UINT8 re_sentence_break_stage_1[] = { 0, 1, 2, 3, 4, 5, 5, 5, 5, 6, 7, 5, 5, 8, 9, 10, - 11, 12, 13, 14, 9, 9, 15, 9, 9, 9, 9, 16, 9, 17, 18, 19, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 20, 21, 9, 9, 9, 22, + 11, 12, 13, 14, 15, 9, 16, 5, 17, 9, 9, 18, 9, 19, 20, 21, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 22, 23, 24, 9, 9, 25, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -4701,7 +5029,7 @@ static RE_UINT8 re_sentence_break_stage_1[] = { 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 23, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 26, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, }; @@ -4719,18 +5047,21 @@ static RE_UINT8 re_sentence_break_stage_2[] = { 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 17, 53, 54, 17, 55, 56, 57, 58, 59, 60, 61, 62, 63, 17, 64, 65, 66, 67, 68, 69, 33, 33, 33, - 70, 71, 72, 73, 74, 75, 76, 33, 77, 33, 78, 33, 33, 33, 33, 33, - 17, 17, 17, 79, 80, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 17, 17, 17, 17, 81, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 17, 17, 82, 83, 33, 33, 33, 84, - 85, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 86, 33, 33, 33, - 33, 87, 88, 33, 89, 90, 91, 92, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 93, 33, 33, 33, 33, 33, 94, 33, - 33, 95, 33, 33, 33, 33, 96, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 17, 17, 17, 17, 17, 17, 97, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 98, 99, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 17, 17, 99, 33, 33, 33, 33, 33, - 100, 101, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 33, 79, 33, 80, 33, 33, 33, + 17, 17, 17, 81, 82, 83, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 17, 17, 17, 17, 84, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 17, 17, 85, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 17, 17, 86, 87, 33, 33, 33, 88, + 17, 17, 17, 17, 17, 17, 17, 89, 17, 17, 90, 33, 33, 33, 33, 33, + 91, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 92, 33, 33, 33, + 33, 93, 94, 33, 95, 96, 97, 98, 33, 33, 99, 33, 33, 33, 33, 33, + 100, 33, 33, 33, 33, 33, 33, 33, 101, 102, 33, 33, 33, 33, 103, 33, + 33, 104, 33, 33, 33, 33, 105, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 17, 17, 17, 17, 17, 17, 106, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 107, 108, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 109, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 17, 17, 110, 33, 33, 33, 33, 33, + 111, 112, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, }; static RE_UINT16 re_sentence_break_stage_3[] = { @@ -4738,53 +5069,59 @@ static RE_UINT16 re_sentence_break_stage_3[] = { 8, 16, 17, 18, 19, 20, 21, 22, 23, 23, 23, 24, 25, 26, 27, 28, 29, 30, 18, 8, 31, 8, 32, 8, 8, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 41, 41, 44, 45, 46, 47, 48, 41, 41, 49, 50, 51, - 52, 53, 54, 55, 55, 56, 55, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 71, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 73, 84, 85, 86, 87, 84, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 55, 98, 99, 100, 55, 101, 102, 103, 104, 105, 106, 107, 55, - 41, 108, 109, 110, 111, 29, 112, 113, 41, 41, 41, 41, 41, 41, 41, 41, - 41, 41, 114, 41, 115, 116, 117, 41, 118, 41, 119, 120, 121, 41, 41, 122, - 95, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 123, 124, 41, 41, 125, - 126, 127, 128, 129, 41, 130, 131, 132, 133, 41, 41, 134, 41, 135, 41, 136, - 137, 138, 139, 140, 41, 141, 142, 55, 143, 41, 144, 145, 146, 147, 55, 55, - 148, 130, 149, 150, 151, 152, 41, 153, 41, 154, 155, 156, 55, 55, 157, 158, - 18, 18, 18, 18, 18, 18, 23, 159, 8, 8, 8, 8, 160, 8, 8, 8, - 161, 162, 163, 164, 162, 165, 166, 167, 168, 169, 170, 171, 172, 55, 173, 174, - 175, 176, 177, 30, 178, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, - 179, 180, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 181, 30, 182, - 55, 55, 183, 184, 55, 55, 185, 186, 55, 55, 55, 55, 187, 55, 188, 189, - 29, 190, 191, 192, 8, 8, 8, 193, 18, 194, 41, 195, 196, 197, 197, 23, - 198, 199, 200, 55, 55, 55, 55, 55, 201, 202, 95, 41, 203, 95, 41, 113, - 204, 205, 41, 41, 206, 207, 55, 208, 41, 41, 41, 41, 41, 136, 55, 55, - 41, 41, 41, 41, 41, 41, 209, 55, 41, 41, 41, 41, 209, 55, 208, 210, - 211, 212, 8, 213, 214, 41, 41, 215, 216, 217, 8, 218, 219, 220, 55, 221, - 222, 223, 41, 224, 225, 130, 226, 227, 50, 228, 229, 230, 58, 231, 232, 233, - 41, 234, 235, 236, 41, 237, 238, 239, 240, 241, 242, 243, 55, 55, 41, 244, - 41, 41, 41, 41, 41, 245, 246, 247, 41, 41, 41, 248, 41, 41, 249, 55, - 250, 251, 252, 41, 41, 253, 254, 41, 41, 255, 208, 41, 256, 41, 257, 258, - 259, 260, 261, 262, 41, 41, 41, 263, 264, 2, 265, 266, 267, 137, 268, 269, - 270, 271, 272, 55, 41, 41, 41, 207, 55, 55, 41, 122, 55, 55, 55, 273, - 55, 55, 55, 55, 230, 41, 274, 275, 41, 208, 276, 277, 278, 41, 279, 55, - 29, 280, 281, 41, 278, 132, 55, 55, 41, 282, 41, 283, 55, 55, 55, 55, - 41, 196, 136, 257, 55, 55, 55, 55, 284, 285, 136, 196, 137, 55, 55, 55, - 136, 249, 55, 55, 41, 286, 55, 55, 287, 288, 289, 230, 230, 55, 103, 290, - 41, 136, 136, 56, 253, 55, 55, 55, 41, 41, 291, 55, 55, 55, 55, 55, - 151, 292, 293, 294, 151, 295, 296, 297, 151, 298, 299, 300, 151, 231, 301, 55, - 302, 303, 55, 55, 55, 208, 304, 305, 74, 71, 306, 307, 55, 55, 55, 55, - 55, 55, 55, 55, 41, 47, 308, 55, 55, 55, 55, 55, 41, 309, 310, 55, - 41, 47, 311, 55, 41, 312, 132, 55, 55, 55, 55, 55, 55, 29, 18, 313, - 55, 55, 55, 55, 55, 55, 41, 314, 41, 41, 41, 41, 314, 55, 55, 55, - 41, 41, 41, 206, 55, 55, 55, 55, 41, 206, 55, 55, 55, 55, 55, 55, - 41, 314, 137, 315, 55, 55, 208, 316, 41, 317, 318, 319, 121, 55, 55, 55, - 41, 41, 320, 321, 322, 55, 55, 55, 323, 55, 55, 55, 55, 55, 55, 55, - 41, 41, 41, 324, 325, 326, 55, 55, 55, 55, 55, 327, 328, 329, 55, 55, - 55, 55, 330, 55, 55, 55, 55, 55, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 343, 331, 332, 344, 334, 345, 346, 347, 338, 348, 349, 350, - 351, 352, 353, 190, 354, 355, 356, 357, 41, 41, 41, 41, 41, 41, 358, 55, - 359, 360, 361, 362, 363, 364, 55, 55, 55, 365, 366, 366, 367, 55, 55, 55, - 55, 55, 55, 368, 55, 55, 55, 55, 41, 41, 41, 41, 41, 41, 196, 55, - 41, 122, 41, 41, 41, 41, 41, 41, 278, 55, 55, 55, 55, 55, 55, 55, - 369, 370, 370, 370, 55, 55, 55, 55, 23, 23, 23, 23, 23, 23, 23, 371, + 52, 53, 54, 55, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 72, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 55, 101, 102, 103, 55, 104, 105, 106, 107, 108, 109, 110, 55, + 41, 111, 112, 113, 114, 29, 115, 116, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 117, 41, 118, 119, 120, 41, 121, 41, 122, 123, 124, 29, 29, 125, + 98, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 126, 127, 41, 41, 128, + 129, 130, 131, 132, 41, 133, 134, 135, 136, 41, 41, 137, 138, 139, 41, 140, + 141, 142, 143, 144, 41, 145, 146, 55, 147, 41, 148, 149, 150, 151, 55, 55, + 152, 133, 153, 154, 155, 156, 41, 157, 41, 158, 159, 160, 161, 55, 162, 163, + 18, 18, 18, 18, 18, 18, 23, 164, 8, 8, 8, 8, 165, 8, 8, 8, + 166, 167, 168, 169, 167, 170, 171, 172, 173, 174, 175, 176, 177, 55, 178, 179, + 180, 181, 182, 30, 183, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 184, 185, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 186, 30, 187, + 55, 55, 188, 189, 55, 55, 190, 191, 55, 55, 55, 55, 192, 55, 193, 194, + 29, 195, 196, 197, 8, 8, 8, 198, 18, 199, 41, 200, 201, 202, 202, 23, + 203, 204, 205, 55, 55, 55, 55, 55, 206, 207, 98, 41, 208, 98, 41, 116, + 209, 210, 41, 41, 211, 212, 55, 213, 41, 41, 41, 41, 41, 140, 55, 55, + 41, 41, 41, 41, 41, 41, 140, 55, 41, 41, 41, 41, 214, 55, 213, 215, + 216, 217, 8, 218, 219, 41, 41, 220, 221, 222, 8, 223, 224, 225, 55, 226, + 227, 228, 41, 229, 230, 133, 231, 232, 50, 233, 234, 235, 59, 236, 237, 238, + 41, 239, 240, 241, 41, 242, 243, 244, 245, 246, 247, 248, 18, 18, 41, 249, + 41, 41, 41, 41, 41, 250, 251, 252, 41, 41, 41, 253, 41, 41, 254, 55, + 255, 256, 257, 41, 41, 258, 259, 41, 41, 260, 213, 41, 261, 41, 262, 263, + 264, 265, 266, 267, 41, 41, 41, 268, 269, 2, 270, 271, 272, 141, 273, 274, + 275, 276, 277, 55, 41, 41, 41, 212, 55, 55, 41, 278, 55, 55, 55, 279, + 55, 55, 55, 55, 235, 41, 280, 281, 41, 213, 282, 283, 284, 41, 285, 55, + 29, 286, 287, 41, 284, 288, 289, 290, 41, 291, 41, 292, 55, 55, 55, 55, + 41, 201, 140, 262, 55, 55, 55, 55, 293, 294, 140, 201, 141, 55, 55, 295, + 140, 254, 55, 55, 41, 296, 55, 55, 297, 298, 299, 235, 235, 55, 106, 300, + 41, 140, 140, 301, 258, 55, 55, 55, 41, 41, 302, 55, 29, 303, 18, 304, + 155, 305, 306, 307, 155, 308, 309, 310, 155, 311, 312, 313, 155, 236, 314, 55, + 315, 316, 55, 55, 317, 318, 319, 320, 321, 72, 322, 323, 55, 55, 55, 55, + 41, 324, 325, 55, 41, 47, 326, 55, 55, 55, 55, 55, 41, 327, 328, 55, + 41, 47, 329, 55, 41, 330, 135, 55, 331, 332, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 29, 18, 333, 55, 55, 55, 55, 55, 55, 41, 334, + 335, 336, 337, 338, 339, 340, 55, 55, 41, 41, 41, 41, 254, 55, 55, 55, + 41, 41, 41, 211, 41, 41, 41, 41, 41, 41, 292, 55, 55, 55, 55, 55, + 41, 211, 55, 55, 55, 55, 55, 55, 41, 41, 341, 55, 55, 55, 55, 55, + 41, 334, 141, 342, 55, 55, 213, 343, 41, 344, 345, 346, 124, 55, 55, 55, + 41, 41, 347, 348, 349, 55, 55, 350, 41, 41, 41, 41, 41, 41, 41, 214, + 41, 41, 41, 41, 41, 41, 41, 301, 351, 55, 55, 55, 55, 55, 55, 55, + 41, 41, 41, 352, 353, 354, 55, 55, 55, 55, 55, 355, 356, 357, 55, 55, + 55, 55, 358, 55, 55, 55, 55, 55, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 359, 360, 372, 362, 373, 374, 375, 366, 376, 377, 378, + 379, 380, 381, 195, 382, 383, 384, 385, 23, 386, 23, 387, 388, 389, 55, 55, + 390, 391, 55, 55, 55, 55, 55, 55, 41, 41, 41, 41, 41, 41, 392, 55, + 29, 393, 394, 55, 55, 55, 55, 55, 395, 396, 397, 398, 399, 400, 55, 55, + 55, 401, 402, 402, 403, 55, 55, 55, 55, 55, 55, 404, 55, 55, 55, 55, + 41, 41, 41, 41, 41, 41, 201, 55, 41, 278, 41, 41, 41, 41, 41, 41, + 284, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 351, 55, 55, + 284, 55, 55, 55, 55, 55, 55, 55, 405, 23, 23, 23, 55, 55, 55, 55, + 23, 23, 23, 23, 23, 23, 23, 406, }; static RE_UINT8 re_sentence_break_stage_4[] = { @@ -4816,164 +5153,182 @@ static RE_UINT8 re_sentence_break_stage_4[] = { 7, 7, 76, 36, 36, 36, 36, 36, 36, 36, 67, 44, 44, 41, 84, 0, 36, 36, 36, 36, 36, 82, 85, 44, 44, 86, 86, 87, 0, 0, 0, 0, 36, 36, 36, 36, 36, 36, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 36, 36, 36, 36, 61, 0, 0, 0, 0, 44, 44, 44, 44, 44, 44, 44, - 44, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 82, 88, - 44, 44, 44, 44, 86, 44, 36, 36, 82, 89, 7, 7, 81, 36, 36, 36, - 86, 81, 36, 77, 77, 36, 36, 36, 36, 36, 90, 36, 43, 40, 41, 88, - 44, 91, 91, 92, 0, 93, 0, 94, 82, 95, 7, 7, 41, 0, 0, 0, - 58, 81, 61, 96, 77, 36, 36, 36, 36, 36, 90, 36, 90, 97, 41, 74, - 65, 93, 91, 87, 98, 0, 81, 43, 0, 95, 7, 7, 75, 99, 0, 0, - 58, 81, 36, 94, 94, 36, 36, 36, 36, 36, 90, 36, 90, 81, 41, 88, - 44, 59, 59, 87, 100, 0, 0, 0, 82, 95, 7, 7, 0, 0, 0, 0, - 58, 81, 36, 77, 77, 36, 36, 36, 44, 91, 91, 87, 0, 101, 0, 94, - 82, 95, 7, 7, 55, 0, 0, 0, 102, 81, 61, 40, 90, 41, 97, 90, - 96, 100, 61, 40, 36, 36, 41, 101, 65, 101, 74, 87, 100, 93, 0, 0, - 0, 95, 7, 7, 0, 0, 0, 0, 44, 81, 36, 90, 90, 36, 36, 36, - 36, 36, 90, 36, 36, 36, 41, 103, 44, 74, 74, 87, 0, 60, 41, 0, - 58, 81, 36, 90, 90, 36, 36, 36, 36, 36, 90, 36, 36, 81, 41, 88, - 44, 74, 74, 87, 0, 60, 0, 104, 82, 95, 7, 7, 97, 0, 0, 0, - 36, 36, 36, 36, 36, 36, 61, 103, 44, 74, 74, 92, 0, 93, 0, 0, - 82, 95, 7, 7, 0, 0, 40, 36, 101, 81, 36, 36, 36, 61, 40, 36, - 36, 36, 36, 36, 94, 36, 36, 55, 36, 61, 105, 93, 44, 106, 44, 44, - 0, 95, 7, 7, 101, 0, 0, 0, 81, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 80, 44, 65, 0, 36, 67, 44, 65, 7, 7, 107, 0, - 97, 77, 43, 55, 0, 36, 81, 36, 81, 108, 40, 81, 80, 44, 59, 83, - 36, 43, 44, 87, 7, 7, 107, 36, 100, 0, 0, 0, 0, 0, 87, 0, - 7, 7, 107, 0, 0, 109, 110, 111, 36, 36, 81, 36, 36, 36, 36, 36, - 36, 36, 36, 100, 58, 44, 44, 44, 44, 74, 36, 86, 44, 44, 58, 44, - 44, 44, 44, 44, 44, 44, 44, 112, 0, 105, 0, 0, 0, 0, 0, 0, - 36, 36, 67, 44, 44, 44, 44, 113, 7, 7, 114, 0, 36, 82, 75, 82, - 88, 73, 44, 75, 86, 70, 36, 36, 82, 44, 44, 85, 7, 7, 115, 87, - 11, 50, 0, 116, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 61, 36, - 36, 36, 90, 41, 36, 61, 90, 41, 36, 36, 90, 41, 36, 36, 36, 36, - 36, 36, 36, 36, 90, 41, 36, 61, 90, 41, 36, 36, 36, 61, 36, 36, - 36, 36, 36, 36, 90, 41, 36, 36, 36, 36, 36, 36, 36, 36, 61, 58, - 117, 9, 118, 0, 0, 0, 0, 0, 36, 36, 36, 36, 0, 0, 0, 0, - 36, 36, 36, 36, 36, 100, 0, 0, 36, 36, 36, 119, 36, 36, 36, 36, - 120, 36, 36, 36, 36, 36, 121, 122, 36, 36, 61, 40, 36, 36, 100, 0, - 36, 36, 36, 90, 82, 112, 0, 0, 36, 36, 36, 36, 82, 123, 0, 0, - 36, 36, 36, 36, 82, 0, 0, 0, 36, 36, 36, 90, 124, 0, 0, 0, - 36, 36, 36, 36, 36, 44, 44, 44, 44, 44, 44, 44, 44, 96, 0, 99, - 7, 7, 107, 0, 0, 0, 0, 0, 125, 0, 126, 127, 7, 7, 107, 0, - 36, 36, 36, 36, 36, 36, 0, 0, 36, 36, 128, 0, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 88, 36, 41, 0, 0, 0, 0, 0, 44, 44, 44, + 89, 44, 44, 44, 44, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 82, 90, 44, 44, 44, 44, 86, 44, 36, 36, + 82, 91, 7, 7, 81, 36, 36, 36, 86, 81, 36, 77, 77, 36, 36, 36, + 36, 36, 88, 36, 43, 40, 41, 90, 44, 92, 92, 93, 0, 94, 0, 95, + 82, 96, 7, 7, 41, 0, 0, 0, 58, 81, 61, 97, 77, 36, 36, 36, + 36, 36, 88, 36, 88, 98, 41, 74, 65, 94, 92, 87, 99, 0, 81, 43, + 0, 96, 7, 7, 75, 100, 0, 0, 58, 81, 36, 95, 95, 36, 36, 36, + 36, 36, 88, 36, 88, 81, 41, 90, 44, 59, 59, 87, 101, 0, 0, 0, + 82, 96, 7, 7, 0, 0, 55, 0, 58, 81, 36, 77, 77, 36, 36, 36, + 44, 92, 92, 87, 0, 102, 0, 95, 82, 96, 7, 7, 55, 0, 0, 0, + 103, 81, 61, 40, 88, 41, 98, 88, 97, 101, 61, 40, 36, 36, 41, 102, + 65, 102, 74, 87, 101, 94, 0, 0, 0, 96, 7, 7, 0, 0, 0, 0, + 44, 81, 36, 88, 88, 36, 36, 36, 36, 36, 88, 36, 36, 36, 41, 104, + 44, 74, 74, 87, 0, 60, 61, 0, 82, 96, 7, 7, 0, 0, 0, 0, + 86, 81, 36, 88, 88, 36, 36, 36, 36, 36, 88, 36, 36, 81, 41, 90, + 44, 74, 74, 87, 0, 60, 0, 105, 82, 96, 7, 7, 98, 0, 0, 0, + 58, 81, 36, 88, 88, 36, 36, 36, 36, 36, 36, 36, 36, 36, 61, 104, + 44, 74, 74, 93, 0, 67, 0, 97, 82, 96, 7, 7, 0, 0, 40, 36, + 102, 81, 36, 36, 36, 61, 40, 36, 36, 36, 36, 36, 95, 36, 36, 55, + 36, 61, 106, 94, 44, 107, 44, 44, 0, 96, 7, 7, 102, 0, 0, 0, + 81, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 80, 44, 65, 0, + 36, 67, 44, 65, 7, 7, 108, 0, 98, 77, 43, 55, 0, 36, 81, 36, + 81, 109, 40, 81, 80, 44, 59, 83, 36, 43, 44, 87, 7, 7, 108, 36, + 101, 0, 0, 0, 0, 0, 87, 0, 7, 7, 108, 0, 0, 110, 111, 112, + 36, 36, 81, 36, 36, 36, 36, 36, 36, 36, 36, 101, 58, 44, 44, 44, + 44, 74, 36, 86, 44, 44, 58, 44, 44, 44, 44, 44, 44, 44, 44, 113, + 0, 106, 0, 0, 0, 0, 0, 0, 36, 36, 67, 44, 44, 44, 44, 114, + 7, 7, 115, 0, 36, 82, 75, 82, 90, 73, 44, 75, 86, 70, 36, 36, + 82, 44, 44, 85, 7, 7, 116, 87, 11, 50, 0, 117, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 61, 36, 36, 36, 88, 41, 36, 61, 88, 41, + 36, 36, 88, 41, 36, 36, 36, 36, 36, 36, 36, 36, 88, 41, 36, 61, + 88, 41, 36, 36, 36, 61, 36, 36, 36, 36, 36, 36, 88, 41, 36, 36, + 36, 36, 36, 36, 36, 36, 61, 58, 118, 9, 119, 0, 0, 0, 0, 0, + 36, 36, 36, 36, 0, 0, 0, 0, 11, 11, 11, 11, 11, 120, 15, 39, + 36, 36, 36, 121, 36, 36, 36, 36, 122, 36, 36, 36, 36, 36, 123, 124, + 36, 36, 61, 40, 36, 36, 101, 0, 36, 36, 36, 88, 82, 113, 0, 0, + 36, 36, 36, 36, 82, 125, 0, 0, 36, 36, 36, 36, 82, 0, 0, 0, + 36, 36, 36, 88, 126, 0, 0, 0, 36, 36, 36, 36, 36, 44, 44, 44, + 44, 44, 44, 44, 44, 97, 0, 100, 7, 7, 108, 0, 0, 0, 0, 0, + 127, 0, 128, 129, 7, 7, 108, 0, 36, 36, 36, 36, 36, 36, 0, 0, + 36, 130, 36, 36, 36, 36, 36, 36, 36, 36, 131, 0, 36, 36, 36, 36, 36, 36, 36, 36, 36, 41, 0, 0, 36, 36, 36, 36, 36, 36, 36, 61, - 44, 44, 44, 0, 44, 44, 44, 0, 0, 89, 7, 7, 36, 36, 36, 36, - 36, 36, 36, 41, 36, 100, 0, 0, 36, 36, 36, 0, 44, 44, 44, 44, - 70, 36, 87, 0, 7, 7, 107, 0, 36, 36, 36, 36, 36, 67, 44, 0, - 36, 36, 36, 36, 36, 86, 44, 65, 44, 44, 44, 44, 44, 44, 44, 91, - 7, 7, 107, 0, 7, 7, 107, 0, 0, 96, 129, 0, 44, 44, 44, 65, - 44, 70, 36, 36, 36, 36, 36, 36, 44, 70, 36, 0, 7, 7, 114, 130, - 0, 0, 93, 44, 44, 0, 0, 0, 113, 36, 36, 36, 36, 36, 36, 36, + 44, 44, 44, 0, 44, 44, 44, 0, 0, 91, 7, 7, 36, 36, 36, 36, + 36, 36, 36, 41, 36, 101, 0, 0, 36, 36, 36, 0, 36, 36, 36, 36, + 36, 36, 41, 0, 7, 7, 108, 0, 36, 36, 36, 36, 36, 67, 44, 0, + 36, 36, 36, 36, 36, 86, 44, 65, 44, 44, 44, 44, 44, 44, 44, 92, + 7, 7, 108, 0, 7, 7, 108, 0, 0, 97, 132, 0, 44, 44, 44, 65, + 44, 70, 36, 36, 36, 36, 36, 36, 44, 70, 36, 0, 7, 7, 115, 133, + 0, 0, 94, 44, 44, 0, 0, 0, 114, 36, 36, 36, 36, 36, 36, 36, 86, 44, 44, 75, 7, 7, 76, 36, 36, 82, 44, 44, 44, 0, 0, 0, - 36, 44, 44, 44, 44, 44, 9, 118, 7, 7, 107, 81, 7, 7, 76, 36, - 36, 36, 36, 36, 36, 36, 36, 131, 0, 0, 0, 0, 65, 44, 44, 44, - 44, 44, 70, 80, 82, 132, 87, 0, 44, 44, 44, 44, 44, 87, 0, 44, - 25, 25, 25, 25, 25, 34, 15, 27, 15, 15, 11, 11, 15, 39, 11, 133, - 15, 15, 11, 11, 15, 15, 11, 11, 15, 39, 11, 133, 15, 15, 134, 134, - 15, 15, 11, 11, 15, 15, 15, 39, 15, 15, 11, 11, 15, 135, 11, 136, - 46, 135, 11, 137, 15, 46, 11, 0, 15, 15, 11, 137, 46, 135, 11, 137, - 138, 138, 139, 140, 141, 142, 143, 143, 0, 144, 145, 146, 0, 0, 147, 148, - 0, 149, 148, 0, 0, 0, 0, 150, 62, 151, 62, 62, 21, 0, 0, 152, - 0, 0, 0, 147, 15, 15, 15, 42, 0, 0, 0, 0, 44, 44, 44, 44, - 44, 44, 44, 44, 112, 0, 0, 0, 48, 153, 154, 155, 23, 116, 10, 133, - 0, 156, 49, 157, 11, 38, 158, 33, 0, 159, 39, 160, 0, 0, 0, 0, - 161, 38, 100, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 0, 0, - 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 11, 11, - 15, 15, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 143, - 122, 0, 143, 143, 143, 5, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, - 0, 163, 143, 143, 0, 0, 0, 0, 4, 143, 143, 143, 143, 143, 122, 0, - 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 5, - 11, 11, 11, 22, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 24, - 31, 164, 26, 32, 25, 29, 15, 33, 25, 42, 153, 165, 54, 0, 0, 0, - 15, 166, 0, 21, 36, 36, 36, 36, 36, 36, 0, 96, 0, 0, 0, 93, - 36, 36, 36, 36, 36, 61, 0, 0, 36, 61, 36, 61, 36, 61, 36, 61, - 143, 143, 143, 5, 0, 0, 0, 5, 143, 143, 5, 167, 0, 0, 0, 118, - 168, 0, 0, 0, 0, 0, 0, 0, 169, 81, 143, 143, 5, 143, 143, 170, - 81, 36, 82, 44, 81, 41, 36, 100, 36, 36, 36, 36, 36, 61, 60, 81, - 0, 81, 36, 36, 36, 36, 36, 36, 36, 36, 36, 41, 81, 36, 36, 36, - 36, 36, 36, 61, 0, 0, 0, 0, 36, 36, 36, 36, 36, 36, 61, 0, - 0, 0, 0, 0, 36, 36, 36, 36, 36, 36, 36, 100, 0, 0, 0, 0, - 36, 36, 36, 36, 36, 36, 36, 171, 36, 36, 36, 172, 36, 36, 36, 36, - 7, 7, 76, 0, 0, 0, 0, 0, 25, 25, 25, 173, 65, 44, 44, 174, - 25, 25, 25, 25, 25, 25, 25, 175, 36, 36, 36, 36, 176, 9, 0, 0, - 0, 0, 0, 0, 0, 96, 36, 36, 177, 25, 25, 25, 27, 25, 25, 25, - 25, 25, 25, 25, 15, 15, 26, 30, 25, 25, 178, 179, 25, 27, 25, 25, - 25, 25, 31, 133, 133, 0, 0, 0, 0, 0, 0, 0, 0, 96, 180, 36, - 181, 181, 67, 36, 36, 36, 36, 36, 67, 44, 0, 0, 0, 0, 0, 0, - 36, 36, 36, 36, 36, 130, 0, 0, 75, 36, 36, 36, 36, 36, 36, 36, - 44, 112, 0, 130, 7, 7, 107, 0, 44, 44, 44, 44, 75, 36, 96, 0, - 36, 82, 44, 176, 36, 36, 36, 36, 36, 67, 44, 44, 44, 0, 0, 0, - 36, 36, 36, 36, 36, 36, 36, 100, 36, 36, 36, 36, 67, 44, 44, 44, - 112, 0, 148, 96, 7, 7, 107, 0, 36, 80, 36, 36, 7, 7, 76, 61, - 36, 36, 86, 44, 44, 65, 0, 0, 67, 36, 36, 87, 7, 7, 107, 182, - 36, 36, 36, 36, 36, 61, 183, 75, 36, 36, 36, 36, 88, 73, 70, 82, - 128, 0, 0, 0, 0, 0, 96, 41, 36, 36, 67, 44, 184, 185, 0, 0, - 81, 61, 81, 61, 81, 61, 0, 0, 36, 61, 36, 61, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 24, 15, 0, 39, 0, 0, 0, 0, 0, 0, - 67, 44, 186, 87, 7, 7, 107, 0, 36, 0, 0, 0, 36, 36, 36, 36, - 36, 61, 96, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 0, - 36, 36, 36, 41, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 41, 0, - 15, 24, 0, 0, 187, 15, 0, 188, 36, 36, 90, 36, 36, 61, 36, 43, - 94, 90, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 41, 0, 0, 0, - 0, 0, 0, 0, 96, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 189, - 36, 36, 36, 36, 40, 36, 36, 36, 36, 36, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 36, 36, 36, 0, 44, 44, 44, 44, 190, 4, 122, 0, - 44, 44, 44, 87, 191, 170, 143, 143, 143, 192, 122, 0, 6, 193, 194, 195, - 141, 0, 0, 0, 36, 90, 36, 36, 36, 36, 36, 36, 36, 36, 36, 196, - 57, 0, 5, 6, 0, 0, 197, 9, 14, 15, 15, 15, 15, 15, 16, 198, - 199, 200, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 82, - 40, 36, 40, 36, 40, 36, 40, 100, 0, 0, 0, 0, 0, 0, 201, 0, - 36, 36, 36, 81, 36, 36, 36, 36, 36, 61, 36, 36, 36, 36, 61, 94, - 36, 36, 36, 41, 36, 36, 36, 41, 0, 0, 0, 0, 0, 0, 0, 98, - 36, 36, 36, 36, 100, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, + 36, 44, 44, 44, 44, 44, 9, 119, 7, 7, 108, 81, 7, 7, 76, 36, + 36, 36, 36, 36, 36, 36, 36, 134, 15, 15, 42, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 65, 44, 44, 44, 44, 44, 70, 80, 82, 135, 87, 0, + 44, 44, 44, 44, 44, 87, 94, 44, 25, 25, 25, 25, 25, 34, 15, 27, + 15, 15, 11, 11, 15, 39, 11, 120, 15, 15, 11, 11, 15, 15, 11, 11, + 15, 39, 11, 120, 15, 15, 136, 136, 15, 15, 11, 11, 15, 15, 15, 39, + 15, 15, 11, 11, 15, 137, 11, 138, 46, 137, 11, 139, 15, 46, 11, 0, + 15, 15, 11, 139, 46, 137, 11, 139, 140, 140, 141, 142, 143, 144, 145, 145, + 0, 146, 147, 148, 0, 0, 149, 150, 0, 151, 150, 0, 0, 0, 0, 152, + 62, 153, 62, 62, 21, 0, 0, 154, 0, 0, 0, 149, 15, 15, 15, 42, + 0, 0, 0, 0, 44, 44, 44, 44, 44, 44, 44, 44, 113, 0, 0, 0, + 48, 155, 156, 157, 23, 117, 10, 120, 0, 158, 49, 159, 11, 38, 160, 33, + 0, 161, 39, 162, 0, 0, 0, 0, 163, 38, 101, 0, 0, 0, 0, 0, + 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 164, 11, 11, 15, 15, 39, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 145, 124, 0, 145, 145, 145, 5, 0, 0, + 0, 149, 0, 0, 0, 0, 0, 0, 0, 165, 145, 145, 0, 0, 0, 0, + 4, 145, 145, 145, 145, 145, 124, 0, 0, 0, 0, 0, 0, 0, 145, 0, + 0, 0, 0, 0, 0, 0, 0, 5, 11, 11, 11, 22, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 24, 31, 166, 26, 32, 25, 29, 15, 33, + 25, 42, 155, 167, 54, 0, 0, 0, 15, 168, 0, 21, 36, 36, 36, 36, + 36, 36, 0, 97, 0, 0, 0, 94, 36, 36, 36, 36, 36, 61, 0, 0, + 36, 61, 36, 61, 36, 61, 36, 61, 145, 145, 145, 5, 0, 0, 0, 5, + 145, 145, 5, 169, 0, 0, 0, 119, 170, 0, 0, 0, 0, 0, 0, 0, + 171, 81, 145, 145, 5, 145, 145, 172, 81, 36, 82, 44, 81, 41, 36, 101, + 36, 36, 36, 36, 36, 61, 60, 81, 0, 81, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 41, 81, 36, 36, 36, 36, 36, 36, 61, 0, 0, 0, 0, + 36, 36, 36, 36, 36, 36, 61, 0, 0, 0, 0, 0, 36, 36, 36, 36, + 36, 36, 36, 101, 0, 0, 0, 0, 36, 36, 36, 36, 36, 36, 36, 173, + 36, 36, 36, 174, 36, 36, 36, 36, 7, 7, 76, 0, 0, 0, 0, 0, + 25, 25, 25, 175, 65, 44, 44, 176, 25, 25, 25, 25, 25, 25, 25, 177, + 36, 36, 36, 36, 178, 9, 0, 0, 0, 0, 0, 0, 0, 97, 36, 36, + 179, 25, 25, 25, 27, 25, 25, 25, 25, 25, 25, 25, 15, 15, 26, 30, + 25, 25, 180, 181, 25, 27, 25, 25, 25, 25, 31, 22, 11, 25, 0, 0, + 0, 0, 0, 0, 0, 97, 182, 36, 183, 183, 67, 36, 36, 36, 36, 36, + 67, 44, 0, 0, 0, 0, 0, 0, 36, 36, 36, 36, 36, 133, 0, 0, + 75, 36, 36, 36, 36, 36, 36, 36, 44, 87, 0, 133, 7, 7, 108, 0, + 44, 44, 44, 44, 75, 36, 97, 55, 36, 82, 44, 178, 36, 36, 36, 36, + 36, 67, 44, 44, 44, 0, 0, 0, 36, 36, 36, 36, 36, 36, 36, 101, + 36, 36, 36, 36, 67, 44, 44, 44, 113, 0, 150, 97, 7, 7, 108, 0, + 36, 80, 36, 36, 7, 7, 76, 61, 36, 36, 86, 44, 44, 65, 0, 0, + 67, 36, 36, 87, 7, 7, 108, 184, 36, 36, 36, 36, 36, 61, 185, 75, + 36, 36, 36, 36, 90, 73, 70, 82, 131, 0, 0, 0, 0, 0, 97, 41, + 36, 36, 67, 44, 186, 187, 0, 0, 81, 61, 81, 61, 81, 61, 0, 0, + 36, 61, 36, 61, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 24, 15, + 15, 39, 0, 0, 15, 15, 15, 15, 67, 44, 188, 87, 7, 7, 108, 0, + 36, 0, 0, 0, 36, 36, 36, 36, 36, 61, 97, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 0, 36, 36, 36, 41, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 41, 0, 15, 24, 0, 0, 189, 15, 0, 190, + 36, 36, 88, 36, 36, 61, 36, 43, 95, 88, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 41, 0, 0, 0, 0, 0, 0, 0, 97, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 191, 36, 36, 36, 36, 40, 36, 36, 36, + 36, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 36, 36, 0, + 44, 44, 44, 44, 192, 4, 124, 0, 44, 44, 44, 44, 193, 172, 145, 145, + 145, 194, 124, 0, 6, 195, 196, 197, 143, 0, 0, 0, 36, 88, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 198, 57, 0, 5, 6, 0, 0, 199, 9, + 14, 15, 15, 15, 15, 15, 16, 200, 201, 202, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 82, 40, 36, 40, 36, 40, 36, 40, 101, + 0, 0, 0, 0, 0, 0, 203, 0, 36, 36, 36, 81, 36, 36, 36, 36, + 36, 61, 36, 36, 36, 36, 61, 95, 36, 36, 36, 41, 36, 36, 36, 41, + 36, 36, 36, 36, 36, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, + 36, 36, 36, 36, 101, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 36, 36, 61, 0, 36, 36, 36, 36, 36, 36, 36, 36, 36, 82, 65, 0, 36, 36, 36, 36, 36, 36, 36, 41, 36, 0, 36, 36, 81, 41, 0, 0, 11, 11, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 36, 36, 36, 36, - 36, 36, 0, 0, 36, 36, 36, 36, 36, 0, 0, 0, 0, 0, 0, 0, - 36, 41, 90, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 94, 100, 77, + 7, 7, 108, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 0, 36, 36, 0, 0, 36, 36, 36, 36, + 36, 0, 0, 0, 0, 0, 0, 0, 36, 41, 88, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 95, 101, 77, 36, 36, 36, 36, 61, 41, 0, 0, 36, 36, 36, 36, 36, 36, 0, 40, 86, 60, 0, 44, 36, 81, 81, 36, - 36, 36, 36, 36, 36, 0, 65, 93, 0, 0, 0, 0, 0, 130, 0, 0, - 36, 185, 0, 0, 0, 0, 0, 0, 36, 36, 100, 0, 0, 0, 0, 0, - 36, 36, 36, 36, 36, 36, 44, 44, 44, 186, 118, 0, 0, 0, 0, 0, - 0, 95, 7, 7, 0, 0, 0, 93, 36, 36, 36, 36, 44, 44, 65, 202, - 148, 0, 0, 0, 36, 36, 36, 36, 36, 36, 100, 0, 7, 7, 107, 0, - 36, 67, 44, 44, 44, 203, 7, 7, 182, 0, 0, 0, 36, 36, 36, 36, - 36, 36, 36, 36, 67, 104, 0, 0, 70, 204, 0, 57, 7, 7, 205, 0, - 36, 36, 36, 36, 94, 36, 36, 36, 36, 36, 36, 44, 44, 44, 206, 118, - 36, 36, 36, 36, 36, 36, 36, 67, 44, 44, 65, 0, 7, 7, 107, 0, - 44, 91, 91, 87, 0, 93, 0, 81, 82, 101, 44, 112, 44, 112, 0, 0, - 44, 94, 0, 0, 7, 7, 107, 0, 36, 36, 36, 67, 44, 87, 44, 44, - 207, 0, 57, 0, 0, 0, 0, 0, 123, 100, 0, 0, 7, 7, 107, 0, - 36, 36, 67, 44, 44, 44, 0, 0, 7, 7, 107, 0, 0, 0, 0, 96, - 36, 36, 36, 36, 36, 36, 100, 0, 7, 7, 107, 130, 0, 0, 0, 0, - 36, 36, 36, 41, 44, 208, 0, 0, 36, 36, 36, 36, 44, 186, 118, 0, - 36, 118, 0, 0, 7, 7, 107, 0, 96, 36, 36, 36, 36, 36, 0, 81, - 36, 100, 0, 0, 86, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 65, - 0, 0, 0, 93, 113, 36, 36, 36, 41, 0, 0, 0, 0, 0, 0, 0, - 36, 36, 61, 0, 36, 36, 36, 100, 36, 36, 100, 0, 36, 36, 41, 209, - 62, 0, 0, 0, 0, 0, 0, 0, 0, 58, 87, 58, 210, 62, 211, 44, - 65, 58, 44, 0, 0, 0, 0, 0, 0, 0, 101, 87, 0, 0, 0, 0, - 101, 112, 0, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 155, 15, - 15, 15, 15, 15, 15, 11, 11, 11, 11, 11, 11, 155, 15, 135, 15, 15, - 15, 15, 11, 11, 11, 11, 11, 11, 155, 15, 15, 15, 15, 15, 15, 49, - 48, 212, 10, 49, 11, 155, 166, 14, 15, 14, 15, 15, 11, 11, 11, 11, - 11, 11, 155, 15, 15, 15, 15, 15, 15, 50, 22, 10, 11, 49, 11, 213, - 15, 15, 15, 15, 15, 15, 50, 22, 11, 156, 162, 11, 213, 15, 15, 15, - 15, 15, 15, 11, 11, 11, 11, 11, 11, 155, 15, 15, 15, 15, 15, 15, - 11, 11, 11, 155, 15, 15, 15, 15, 155, 15, 15, 15, 15, 15, 15, 11, - 11, 11, 11, 11, 11, 155, 15, 15, 15, 15, 15, 15, 11, 11, 11, 11, - 15, 39, 11, 11, 11, 11, 11, 11, 213, 15, 15, 15, 15, 15, 24, 15, - 33, 11, 11, 11, 11, 11, 22, 15, 15, 15, 15, 15, 15, 135, 15, 11, - 11, 11, 11, 11, 11, 213, 15, 15, 15, 15, 15, 24, 15, 33, 11, 11, - 15, 15, 135, 15, 11, 11, 11, 11, 11, 11, 213, 15, 15, 15, 15, 15, - 24, 15, 27, 95, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 36, 100, 0, 0, 44, 65, 0, 0, 36, 81, 36, 36, 36, 36, 36, 36, - 97, 77, 81, 36, 61, 36, 108, 0, 104, 96, 108, 81, 97, 77, 108, 108, - 97, 77, 61, 36, 61, 36, 81, 43, 36, 36, 94, 36, 36, 36, 36, 0, - 81, 81, 94, 36, 36, 36, 36, 0, 0, 0, 0, 0, 11, 11, 11, 11, - 11, 11, 133, 0, 11, 11, 11, 11, 11, 11, 133, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 163, 122, 0, 20, 0, 0, 0, 0, 0, 0, 0, - 62, 62, 62, 62, 62, 62, 62, 62, 44, 44, 44, 44, 0, 0, 0, 0, + 36, 36, 36, 36, 36, 0, 65, 94, 0, 0, 0, 0, 0, 133, 0, 0, + 36, 187, 0, 0, 0, 0, 0, 0, 36, 36, 36, 36, 61, 0, 0, 0, + 36, 36, 101, 0, 0, 0, 0, 0, 11, 11, 11, 11, 22, 0, 0, 0, + 15, 15, 15, 15, 24, 0, 0, 0, 36, 36, 36, 36, 36, 36, 44, 44, + 44, 188, 119, 0, 0, 0, 0, 0, 0, 96, 7, 7, 0, 0, 0, 94, + 36, 36, 36, 36, 44, 44, 65, 204, 150, 0, 0, 0, 36, 36, 36, 36, + 36, 36, 101, 0, 7, 7, 108, 0, 36, 67, 44, 44, 44, 205, 7, 7, + 184, 0, 0, 0, 36, 36, 36, 36, 36, 36, 36, 36, 67, 105, 0, 0, + 70, 206, 102, 207, 7, 7, 208, 174, 36, 36, 36, 36, 95, 36, 36, 36, + 36, 36, 36, 44, 44, 44, 209, 210, 36, 61, 88, 95, 36, 36, 36, 95, + 36, 36, 211, 0, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 67, + 44, 44, 65, 0, 7, 7, 108, 0, 44, 81, 36, 77, 77, 36, 36, 36, + 44, 92, 92, 87, 101, 94, 0, 81, 82, 102, 44, 113, 44, 113, 0, 0, + 36, 36, 36, 36, 36, 86, 44, 44, 44, 114, 212, 119, 7, 7, 108, 0, + 44, 95, 0, 0, 7, 7, 108, 0, 36, 36, 36, 67, 44, 87, 44, 44, + 213, 0, 184, 132, 132, 132, 36, 87, 125, 101, 0, 0, 7, 7, 108, 0, + 36, 36, 67, 44, 44, 44, 0, 0, 36, 36, 36, 36, 36, 36, 41, 58, + 44, 44, 44, 0, 7, 7, 108, 78, 7, 7, 108, 0, 0, 0, 0, 97, + 36, 36, 36, 36, 36, 36, 101, 0, 36, 36, 88, 36, 36, 36, 36, 36, + 36, 36, 36, 67, 44, 65, 44, 44, 206, 0, 0, 0, 7, 7, 108, 0, + 0, 0, 0, 0, 40, 36, 36, 36, 36, 36, 36, 36, 102, 44, 44, 44, + 44, 44, 58, 44, 44, 65, 0, 0, 36, 61, 0, 0, 0, 0, 0, 0, + 7, 7, 108, 133, 0, 0, 0, 0, 36, 36, 36, 41, 44, 207, 0, 0, + 36, 36, 36, 36, 44, 188, 119, 0, 36, 119, 0, 0, 7, 7, 108, 0, + 97, 36, 36, 36, 36, 36, 0, 81, 36, 101, 0, 0, 86, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 65, 0, 0, 0, 94, 114, 36, 36, 36, + 101, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, + 36, 36, 61, 0, 36, 36, 36, 101, 36, 36, 101, 0, 36, 36, 41, 214, + 62, 0, 0, 0, 0, 0, 0, 0, 0, 58, 87, 58, 215, 62, 216, 44, + 65, 58, 44, 0, 0, 0, 0, 0, 0, 0, 102, 87, 0, 0, 0, 0, + 102, 113, 0, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 157, 15, + 15, 15, 15, 15, 15, 11, 11, 11, 11, 11, 11, 157, 15, 137, 15, 15, + 15, 15, 11, 11, 11, 11, 11, 11, 157, 15, 15, 15, 15, 15, 15, 49, + 48, 217, 10, 49, 11, 157, 168, 14, 15, 14, 15, 15, 11, 11, 11, 11, + 11, 11, 157, 15, 15, 15, 15, 15, 15, 50, 22, 10, 11, 49, 11, 218, + 15, 15, 15, 15, 15, 15, 50, 22, 11, 158, 164, 11, 218, 15, 15, 15, + 15, 15, 15, 11, 11, 11, 11, 11, 11, 157, 15, 15, 15, 15, 15, 15, + 11, 11, 11, 157, 15, 15, 15, 15, 157, 15, 15, 15, 15, 15, 15, 11, + 11, 11, 11, 11, 11, 157, 15, 15, 15, 15, 15, 15, 11, 11, 11, 11, + 15, 39, 11, 11, 11, 11, 11, 11, 218, 15, 15, 15, 15, 15, 24, 15, + 33, 11, 11, 11, 11, 11, 22, 15, 15, 15, 15, 15, 15, 137, 15, 11, + 11, 11, 11, 11, 11, 218, 15, 15, 15, 15, 15, 24, 15, 33, 11, 11, + 15, 15, 137, 15, 11, 11, 11, 11, 11, 11, 218, 15, 15, 15, 15, 15, + 24, 15, 27, 96, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 44, 44, 44, 44, 44, 65, 94, 44, 44, 44, 44, 113, 0, 99, 0, 0, + 0, 113, 119, 0, 0, 0, 94, 44, 58, 44, 44, 44, 0, 0, 0, 0, + 44, 65, 44, 44, 44, 44, 92, 44, 59, 74, 65, 0, 0, 0, 0, 0, + 36, 101, 0, 0, 44, 65, 0, 0, 157, 15, 15, 15, 15, 15, 15, 15, + 15, 44, 65, 0, 7, 7, 108, 0, 36, 81, 36, 36, 36, 36, 36, 36, + 98, 77, 81, 36, 61, 36, 109, 0, 105, 97, 109, 81, 98, 77, 109, 109, + 98, 77, 61, 36, 61, 36, 81, 43, 36, 36, 95, 36, 36, 36, 36, 0, + 81, 81, 95, 36, 36, 36, 36, 0, 0, 0, 0, 0, 11, 11, 11, 11, + 11, 11, 120, 0, 11, 11, 11, 11, 11, 11, 120, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 165, 124, 0, 20, 0, 0, 0, 0, 0, 0, 0, + 44, 44, 44, 44, 0, 0, 0, 0, }; static RE_UINT8 re_sentence_break_stage_5[] = { @@ -4999,41 +5354,42 @@ static RE_UINT8 re_sentence_break_stage_5[] = { 10, 10, 9, 9, 9, 0, 0, 9, 12, 12, 12, 0, 0, 0, 0, 5, 9, 3, 9, 9, 0, 9, 9, 9, 9, 9, 3, 3, 3, 9, 0, 0, 14, 12, 9, 0, 3, 3, 9, 3, 9, 3, 3, 3, 3, 3, 0, 0, - 3, 9, 3, 3, 12, 12, 10, 10, 9, 0, 9, 9, 3, 0, 0, 3, - 3, 3, 9, 0, 0, 0, 0, 3, 9, 9, 0, 9, 0, 0, 10, 10, - 0, 0, 0, 9, 0, 9, 9, 0, 0, 3, 0, 0, 9, 3, 0, 0, - 9, 0, 0, 0, 0, 0, 3, 3, 0, 0, 3, 9, 0, 9, 3, 3, - 0, 0, 9, 0, 0, 0, 3, 0, 3, 0, 3, 0, 10, 10, 0, 0, - 0, 9, 0, 9, 0, 3, 0, 3, 0, 3, 13, 13, 13, 13, 3, 3, - 3, 0, 0, 0, 3, 3, 3, 9, 10, 10, 12, 12, 10, 10, 3, 3, - 0, 8, 0, 0, 0, 0, 12, 0, 12, 0, 0, 0, 9, 0, 12, 9, - 6, 9, 9, 9, 9, 9, 9, 13, 13, 0, 0, 0, 3, 12, 12, 0, - 9, 0, 3, 3, 0, 0, 14, 12, 14, 12, 0, 3, 3, 3, 5, 0, - 9, 3, 9, 0, 12, 12, 12, 12, 0, 0, 12, 12, 9, 9, 12, 12, - 3, 9, 9, 0, 8, 8, 0, 0, 0, 8, 0, 8, 7, 0, 7, 7, - 8, 0, 7, 0, 8, 0, 0, 0, 6, 6, 6, 6, 6, 6, 6, 5, - 3, 3, 5, 5, 0, 0, 0, 14, 14, 0, 0, 0, 13, 13, 13, 13, - 11, 0, 0, 0, 4, 4, 5, 5, 5, 5, 5, 6, 0, 13, 13, 0, - 12, 12, 0, 0, 0, 13, 13, 12, 0, 0, 0, 6, 5, 0, 5, 5, - 0, 13, 13, 7, 0, 0, 0, 8, 0, 0, 7, 8, 8, 8, 7, 7, - 8, 0, 8, 0, 8, 8, 0, 7, 9, 7, 0, 0, 0, 8, 7, 7, - 0, 0, 7, 0, 9, 9, 9, 8, 0, 0, 8, 8, 0, 0, 13, 13, - 8, 7, 7, 8, 7, 8, 7, 3, 7, 7, 0, 7, 0, 0, 12, 9, - 0, 0, 13, 0, 6, 14, 12, 0, 0, 13, 13, 13, 9, 9, 0, 12, - 9, 0, 12, 12, 8, 7, 9, 3, 3, 3, 0, 9, 7, 7, 0, 3, - 3, 3, 0, 12, 0, 0, 8, 7, 9, 0, 0, 8, 7, 8, 7, 0, - 7, 7, 7, 9, 9, 9, 3, 9, 0, 12, 12, 12, 0, 0, 9, 3, - 12, 12, 9, 9, 9, 3, 3, 0, 3, 3, 3, 12, 0, 0, 0, 7, - 0, 9, 3, 9, 9, 9, 13, 13, 14, 14, 0, 14, 0, 14, 14, 0, - 13, 0, 0, 13, 0, 14, 12, 12, 14, 13, 13, 13, 13, 13, 13, 0, - 9, 0, 0, 5, 0, 0, 14, 0, 0, 13, 0, 13, 13, 12, 13, 13, - 14, 0, 9, 9, 0, 5, 5, 5, 0, 5, 12, 12, 3, 0, 10, 10, - 9, 12, 12, 0, 10, 10, 9, 0, 12, 12, 0, 12, 3, 0, 12, 12, - 3, 12, 0, 0, 0, 3, 3, 12, 3, 3, 3, 5, 5, 5, 5, 3, - 0, 8, 8, 0, 8, 0, 7, 7, + 9, 0, 9, 9, 3, 3, 5, 3, 3, 9, 3, 3, 12, 12, 10, 10, + 3, 0, 0, 3, 3, 3, 9, 0, 0, 0, 0, 3, 9, 9, 0, 9, + 0, 0, 10, 10, 0, 0, 0, 9, 0, 9, 9, 0, 0, 3, 0, 0, + 9, 3, 0, 0, 9, 0, 0, 0, 0, 0, 3, 3, 0, 0, 3, 9, + 0, 9, 3, 3, 0, 0, 9, 0, 0, 0, 3, 0, 3, 0, 3, 0, + 10, 10, 0, 0, 0, 9, 0, 9, 0, 3, 0, 3, 0, 3, 13, 13, + 13, 13, 3, 3, 3, 0, 0, 0, 3, 3, 3, 9, 10, 10, 12, 12, + 10, 10, 3, 3, 0, 8, 0, 0, 0, 0, 12, 0, 12, 0, 0, 0, + 8, 8, 0, 0, 9, 0, 12, 9, 6, 9, 9, 9, 9, 9, 9, 13, + 13, 0, 0, 0, 3, 12, 12, 0, 9, 0, 3, 3, 0, 0, 14, 12, + 14, 12, 0, 3, 3, 3, 5, 0, 9, 3, 3, 9, 9, 3, 9, 0, + 12, 12, 12, 12, 0, 0, 12, 12, 9, 9, 12, 12, 3, 9, 9, 0, + 0, 8, 0, 8, 7, 0, 7, 7, 8, 0, 7, 0, 8, 0, 0, 0, + 6, 6, 6, 6, 6, 6, 6, 5, 3, 3, 5, 5, 0, 0, 0, 14, + 14, 0, 0, 0, 13, 13, 13, 13, 11, 0, 0, 0, 4, 4, 5, 5, + 5, 5, 5, 6, 0, 13, 13, 0, 12, 12, 0, 0, 0, 13, 13, 12, + 0, 0, 0, 6, 5, 0, 5, 5, 0, 13, 13, 7, 0, 0, 0, 8, + 0, 0, 7, 8, 8, 8, 7, 7, 8, 0, 8, 0, 8, 8, 0, 7, + 9, 7, 0, 0, 0, 8, 7, 7, 0, 0, 7, 0, 9, 9, 9, 8, + 0, 0, 8, 8, 0, 0, 13, 13, 8, 7, 7, 8, 7, 8, 7, 3, + 7, 7, 0, 7, 0, 0, 12, 9, 0, 0, 13, 0, 6, 14, 12, 0, + 0, 13, 13, 13, 9, 9, 0, 12, 9, 0, 12, 12, 8, 7, 9, 3, + 3, 3, 0, 9, 7, 7, 3, 3, 3, 3, 0, 12, 0, 0, 8, 7, + 9, 0, 0, 8, 7, 8, 7, 9, 7, 7, 7, 9, 9, 9, 3, 9, + 0, 12, 12, 12, 0, 0, 9, 3, 12, 12, 9, 9, 9, 3, 3, 0, + 3, 3, 3, 12, 0, 0, 0, 7, 0, 9, 3, 9, 9, 9, 13, 13, + 14, 14, 0, 14, 0, 14, 14, 0, 13, 0, 0, 13, 0, 14, 12, 12, + 14, 13, 13, 13, 13, 13, 13, 0, 9, 0, 0, 5, 0, 0, 14, 0, + 0, 13, 0, 13, 13, 12, 13, 13, 14, 0, 9, 9, 0, 5, 5, 5, + 0, 5, 12, 12, 3, 0, 10, 10, 9, 12, 12, 0, 3, 12, 0, 0, + 10, 10, 9, 0, 12, 12, 0, 12, 12, 0, 3, 0, 9, 12, 0, 0, + 9, 9, 9, 12, 3, 0, 12, 12, 0, 3, 3, 12, 3, 3, 3, 5, + 5, 5, 5, 3, 0, 8, 8, 0, 8, 0, 7, 7, }; -/* Sentence_Break: 6120 bytes. */ +/* Sentence_Break: 6644 bytes. */ RE_UINT32 re_get_sentence_break(RE_UINT32 ch) { RE_UINT32 code; @@ -5146,31 +5502,33 @@ static RE_UINT8 re_alphabetic_stage_1[] = { static RE_UINT8 re_alphabetic_stage_2[] = { 0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, 10, 11, 7, 7, 7, 7, 12, 13, 13, 13, 13, 14, - 15, 16, 17, 18, 19, 13, 20, 13, 13, 13, 13, 13, 13, 21, 13, 13, - 13, 13, 13, 13, 13, 13, 22, 23, 13, 13, 24, 13, 13, 25, 26, 13, + 15, 16, 17, 18, 19, 13, 20, 13, 21, 13, 13, 13, 13, 22, 7, 7, + 23, 24, 13, 13, 13, 13, 25, 26, 13, 13, 27, 13, 28, 29, 30, 13, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 27, 7, 28, 29, 13, 13, 13, 13, 13, 13, 13, 30, + 7, 7, 7, 7, 31, 7, 32, 33, 7, 34, 13, 13, 13, 13, 13, 35, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, }; static RE_UINT8 re_alphabetic_stage_3[] = { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 1, 17, 18, 19, 1, 20, 21, 22, 23, 24, 25, 26, 27, 1, 28, - 29, 30, 31, 31, 32, 31, 31, 31, 31, 31, 31, 31, 33, 34, 35, 31, - 36, 37, 31, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 38, 1, 1, 1, 1, 1, 1, 1, 1, 1, 39, - 1, 1, 1, 1, 40, 1, 41, 42, 43, 44, 45, 46, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 47, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 1, 48, 49, 1, 50, 51, 52, 53, 54, 55, 56, 57, 58, 1, 59, - 60, 61, 62, 63, 64, 31, 31, 31, 65, 66, 67, 68, 69, 70, 71, 31, - 72, 31, 73, 31, 31, 31, 31, 31, 1, 1, 1, 74, 75, 31, 31, 31, - 1, 1, 1, 1, 76, 31, 31, 31, 1, 1, 77, 78, 31, 31, 31, 79, - 80, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 81, 31, 31, 31, - 31, 31, 31, 31, 82, 83, 84, 85, 86, 31, 31, 31, 31, 31, 87, 31, - 31, 88, 31, 31, 31, 31, 31, 31, 1, 1, 1, 1, 1, 1, 89, 1, - 1, 1, 1, 1, 1, 1, 1, 90, 91, 31, 31, 31, 31, 31, 31, 31, - 1, 1, 91, 31, 31, 31, 31, 31, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 1, 17, 18, 19, 1, 20, 21, 22, 23, 24, 25, 26, 27, 1, 28, + 29, 30, 31, 31, 32, 31, 31, 31, 31, 31, 31, 31, 33, 34, 35, 31, + 36, 37, 31, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 38, 1, 1, 1, 1, 1, 1, 1, 1, 1, 39, + 1, 1, 1, 1, 40, 1, 41, 42, 43, 44, 45, 46, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 47, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 1, 48, 49, 1, 50, 51, 52, 53, 54, 55, 56, 57, 58, 1, 59, + 60, 61, 62, 63, 64, 31, 31, 31, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 31, 74, 31, 75, 31, 31, 31, 1, 1, 1, 76, 77, 78, 31, 31, + 1, 1, 1, 1, 79, 31, 31, 31, 31, 31, 31, 31, 1, 1, 80, 31, + 1, 1, 81, 82, 31, 31, 31, 83, 1, 1, 1, 1, 1, 1, 1, 84, + 1, 1, 85, 31, 31, 31, 31, 31, 86, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 87, 31, 31, 31, 31, 31, 31, 31, 88, 89, 90, 91, + 92, 31, 31, 31, 31, 31, 31, 31, 93, 94, 31, 31, 31, 31, 95, 31, + 31, 96, 31, 31, 31, 31, 31, 31, 1, 1, 1, 1, 1, 1, 97, 1, + 1, 1, 1, 1, 1, 1, 1, 98, 99, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 100, 31, 1, 1, 101, 31, 31, 31, 31, 31, }; static RE_UINT8 re_alphabetic_stage_4[] = { @@ -5178,48 +5536,53 @@ static RE_UINT8 re_alphabetic_stage_4[] = { 4, 4, 4, 4, 4, 4, 5, 6, 0, 0, 7, 8, 9, 10, 4, 11, 4, 4, 4, 4, 12, 4, 4, 4, 4, 13, 14, 15, 16, 17, 18, 19, 20, 4, 21, 22, 4, 4, 23, 24, 25, 4, 26, 4, 4, 27, 28, 29, - 30, 31, 32, 0, 0, 33, 0, 34, 4, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 47, 51, 52, 53, 54, 55, 0, - 56, 57, 58, 49, 59, 60, 61, 62, 59, 63, 64, 65, 66, 67, 68, 69, - 15, 70, 71, 0, 72, 73, 74, 0, 75, 0, 76, 77, 78, 79, 0, 0, - 4, 80, 25, 81, 82, 4, 83, 84, 4, 4, 85, 4, 86, 87, 88, 4, - 89, 4, 90, 0, 91, 4, 4, 92, 15, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 93, 1, 4, 4, 94, 95, 96, 96, 97, 4, 98, 99, 0, - 0, 4, 4, 100, 4, 101, 4, 102, 103, 104, 25, 105, 4, 106, 107, 0, - 108, 4, 103, 109, 0, 110, 0, 0, 4, 111, 112, 0, 4, 113, 4, 114, - 4, 102, 115, 116, 0, 0, 0, 117, 4, 4, 4, 4, 4, 4, 0, 118, - 119, 4, 120, 116, 4, 121, 122, 123, 0, 0, 0, 124, 125, 0, 0, 0, - 126, 127, 128, 4, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 130, 4, 107, 4, 131, 103, 4, 4, 4, 4, 132, - 4, 83, 4, 133, 134, 135, 135, 4, 0, 136, 0, 0, 0, 0, 0, 0, - 137, 138, 15, 4, 139, 15, 4, 84, 140, 141, 4, 4, 142, 70, 0, 25, - 4, 4, 4, 4, 4, 102, 0, 0, 4, 4, 4, 4, 4, 4, 31, 0, - 4, 4, 4, 4, 31, 0, 25, 116, 143, 144, 4, 145, 146, 4, 4, 91, - 147, 148, 4, 4, 149, 150, 0, 147, 151, 16, 4, 96, 4, 4, 49, 152, - 28, 101, 33, 79, 4, 153, 136, 154, 4, 134, 155, 156, 4, 103, 157, 158, - 159, 160, 84, 161, 0, 0, 4, 162, 4, 4, 4, 4, 4, 163, 164, 108, - 4, 4, 4, 165, 4, 4, 166, 0, 167, 168, 169, 4, 4, 27, 170, 4, - 4, 116, 25, 4, 171, 4, 16, 172, 0, 0, 0, 173, 4, 4, 4, 79, - 0, 1, 1, 174, 4, 103, 175, 0, 176, 177, 178, 0, 4, 4, 4, 70, - 0, 0, 4, 92, 0, 0, 0, 0, 0, 0, 0, 0, 79, 4, 179, 0, - 4, 25, 101, 70, 116, 4, 180, 0, 4, 4, 4, 4, 116, 0, 0, 0, - 4, 181, 4, 49, 0, 0, 0, 0, 4, 134, 102, 16, 0, 0, 0, 0, - 182, 183, 102, 134, 103, 0, 0, 0, 102, 166, 0, 0, 4, 184, 0, 0, - 185, 96, 0, 79, 79, 0, 76, 186, 4, 102, 102, 33, 27, 0, 0, 0, - 4, 4, 129, 0, 0, 0, 0, 0, 4, 4, 187, 0, 148, 32, 25, 129, - 4, 33, 25, 188, 4, 4, 189, 0, 190, 191, 0, 0, 0, 25, 4, 129, - 50, 47, 192, 49, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 193, 0, - 0, 0, 0, 0, 4, 194, 0, 0, 4, 103, 195, 0, 4, 102, 0, 0, - 0, 0, 0, 0, 0, 4, 4, 196, 0, 0, 0, 0, 0, 0, 4, 32, - 4, 4, 4, 4, 32, 0, 0, 0, 4, 4, 4, 142, 0, 0, 0, 0, - 4, 142, 0, 0, 0, 0, 0, 0, 4, 32, 103, 0, 0, 0, 25, 155, - 4, 134, 49, 197, 91, 0, 0, 0, 4, 4, 198, 103, 170, 0, 0, 0, - 199, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 200, 201, 0, 0, 0, - 4, 4, 202, 4, 203, 204, 205, 4, 206, 207, 208, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 209, 210, 84, 202, 202, 131, 131, 211, 211, 212, 0, - 4, 4, 4, 4, 4, 4, 186, 0, 205, 213, 214, 215, 216, 217, 0, 0, - 0, 25, 218, 218, 107, 0, 0, 0, 4, 4, 4, 4, 4, 4, 134, 0, - 4, 92, 4, 4, 4, 4, 4, 4, 116, 0, 0, 0, 0, 0, 0, 0, + 30, 31, 32, 0, 0, 33, 34, 35, 4, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 48, 52, 53, 54, 55, 56, 0, + 57, 58, 59, 60, 57, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 15, 72, 73, 0, 74, 75, 76, 0, 77, 0, 78, 79, 80, 81, 0, 0, + 4, 82, 25, 83, 84, 4, 85, 86, 4, 4, 87, 4, 88, 89, 90, 4, + 91, 4, 92, 0, 93, 4, 4, 94, 15, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 95, 1, 4, 4, 96, 97, 98, 98, 99, 4, 100, 101, 0, + 0, 4, 4, 102, 4, 103, 4, 104, 105, 106, 25, 107, 4, 108, 109, 0, + 110, 4, 105, 111, 0, 112, 0, 0, 4, 113, 114, 0, 4, 115, 4, 116, + 4, 104, 117, 118, 119, 0, 0, 120, 4, 4, 4, 4, 4, 4, 0, 121, + 94, 4, 122, 118, 4, 123, 124, 125, 0, 0, 0, 126, 127, 0, 0, 0, + 128, 129, 130, 4, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 131, 4, 109, 4, 132, 105, 4, 4, 4, 4, 133, + 4, 85, 4, 134, 135, 136, 136, 4, 0, 137, 0, 0, 0, 0, 0, 0, + 138, 139, 15, 4, 140, 15, 4, 86, 141, 142, 4, 4, 143, 72, 0, 25, + 4, 4, 4, 4, 4, 104, 0, 0, 4, 4, 4, 4, 4, 4, 104, 0, + 4, 4, 4, 4, 31, 0, 25, 118, 144, 145, 4, 146, 4, 4, 4, 93, + 147, 148, 4, 4, 149, 150, 0, 147, 151, 16, 4, 98, 4, 4, 152, 153, + 28, 103, 154, 81, 4, 155, 137, 156, 4, 135, 157, 158, 4, 105, 159, 160, + 161, 162, 86, 163, 4, 4, 4, 164, 4, 4, 4, 4, 4, 165, 166, 110, + 4, 4, 4, 167, 4, 4, 168, 0, 169, 170, 171, 4, 4, 27, 172, 4, + 4, 118, 25, 4, 173, 4, 16, 174, 0, 0, 0, 175, 4, 4, 4, 81, + 0, 1, 1, 176, 4, 105, 177, 0, 178, 179, 180, 0, 4, 4, 4, 72, + 0, 0, 4, 181, 0, 0, 0, 0, 0, 0, 0, 0, 81, 4, 182, 0, + 4, 25, 103, 72, 118, 4, 183, 0, 4, 4, 4, 4, 118, 25, 184, 110, + 4, 185, 4, 60, 0, 0, 0, 0, 4, 135, 104, 16, 0, 0, 0, 0, + 186, 187, 104, 135, 105, 0, 0, 188, 104, 168, 0, 0, 4, 189, 0, 0, + 190, 98, 0, 81, 81, 0, 78, 191, 4, 104, 104, 154, 27, 0, 0, 0, + 4, 4, 119, 0, 4, 154, 4, 154, 4, 4, 192, 0, 148, 32, 25, 119, + 4, 154, 25, 193, 4, 4, 194, 0, 195, 196, 0, 0, 197, 198, 4, 119, + 39, 48, 199, 60, 0, 0, 0, 0, 4, 4, 200, 0, 4, 4, 201, 0, + 0, 0, 0, 0, 4, 202, 203, 0, 4, 105, 204, 0, 4, 104, 0, 0, + 205, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 206, + 0, 0, 0, 0, 0, 0, 4, 32, 207, 208, 77, 209, 173, 210, 0, 0, + 4, 4, 4, 4, 168, 0, 0, 0, 4, 4, 4, 143, 4, 4, 4, 4, + 4, 4, 60, 0, 0, 0, 0, 0, 4, 143, 0, 0, 0, 0, 0, 0, + 4, 4, 211, 0, 0, 0, 0, 0, 4, 32, 105, 0, 0, 0, 25, 157, + 4, 135, 60, 212, 93, 0, 0, 0, 4, 4, 213, 105, 172, 0, 0, 77, + 4, 4, 4, 4, 4, 4, 4, 31, 4, 4, 4, 4, 4, 4, 4, 154, + 214, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 215, 216, 0, 0, 0, + 4, 4, 217, 4, 218, 219, 220, 4, 221, 222, 223, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 224, 225, 86, 217, 217, 132, 132, 207, 207, 226, 0, + 227, 228, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 191, 0, + 4, 4, 229, 0, 0, 0, 0, 0, 220, 230, 231, 232, 233, 234, 0, 0, + 0, 25, 235, 235, 109, 0, 0, 0, 4, 4, 4, 4, 4, 4, 135, 0, + 4, 181, 4, 4, 4, 4, 4, 4, 118, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 214, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, }; static RE_UINT8 re_alphabetic_stage_5[] = { @@ -5231,56 +5594,60 @@ static RE_UINT8 re_alphabetic_stage_5[] = { 0, 0, 255, 7, 255, 255, 255, 254, 0, 192, 255, 255, 255, 255, 239, 31, 254, 225, 0, 156, 0, 0, 255, 255, 0, 224, 255, 255, 255, 255, 3, 0, 0, 252, 255, 255, 255, 7, 48, 4, 255, 255, 255, 252, 255, 31, 0, 0, - 255, 255, 255, 1, 255, 255, 7, 0, 240, 3, 255, 255, 255, 255, 255, 239, - 255, 223, 225, 255, 15, 0, 254, 255, 239, 159, 249, 255, 255, 253, 197, 227, - 159, 89, 128, 176, 15, 0, 3, 0, 238, 135, 249, 255, 255, 253, 109, 195, - 135, 25, 2, 94, 0, 0, 63, 0, 238, 191, 251, 255, 255, 253, 237, 227, - 191, 27, 1, 0, 15, 0, 0, 0, 238, 159, 249, 255, 159, 25, 192, 176, - 15, 0, 2, 0, 236, 199, 61, 214, 24, 199, 255, 195, 199, 29, 129, 0, - 239, 223, 253, 255, 255, 253, 255, 227, 223, 29, 96, 3, 238, 223, 253, 255, - 255, 253, 239, 227, 223, 29, 96, 64, 15, 0, 6, 0, 255, 255, 255, 231, - 223, 93, 128, 0, 15, 0, 0, 252, 236, 255, 127, 252, 255, 255, 251, 47, - 127, 128, 95, 255, 0, 0, 12, 0, 255, 255, 255, 7, 127, 32, 0, 0, - 150, 37, 240, 254, 174, 236, 255, 59, 95, 32, 0, 240, 1, 0, 0, 0, - 255, 254, 255, 255, 255, 31, 254, 255, 3, 255, 255, 254, 255, 255, 255, 31, - 255, 255, 127, 249, 231, 193, 255, 255, 127, 64, 0, 48, 191, 32, 255, 255, - 255, 255, 255, 247, 255, 61, 127, 61, 255, 61, 255, 255, 255, 255, 61, 127, - 61, 255, 127, 255, 255, 255, 61, 255, 255, 255, 255, 135, 255, 255, 0, 0, - 255, 255, 31, 0, 255, 159, 255, 255, 255, 199, 255, 1, 255, 223, 15, 0, - 255, 255, 15, 0, 255, 223, 13, 0, 255, 255, 207, 255, 255, 1, 128, 16, - 255, 255, 255, 0, 255, 7, 255, 255, 255, 255, 63, 0, 255, 255, 255, 127, - 255, 15, 255, 1, 255, 63, 31, 0, 255, 15, 255, 255, 255, 3, 0, 0, - 255, 255, 255, 15, 254, 255, 31, 0, 128, 0, 0, 0, 255, 255, 239, 255, - 239, 15, 0, 0, 255, 243, 0, 252, 191, 255, 3, 0, 0, 224, 0, 252, - 255, 255, 255, 63, 0, 222, 111, 0, 128, 255, 31, 0, 255, 255, 63, 63, - 63, 63, 255, 170, 255, 255, 223, 95, 220, 31, 207, 15, 255, 31, 220, 31, - 0, 0, 2, 128, 0, 0, 255, 31, 132, 252, 47, 62, 80, 189, 255, 243, - 224, 67, 0, 0, 255, 1, 0, 0, 0, 0, 192, 255, 255, 127, 255, 255, - 31, 120, 12, 0, 255, 128, 0, 0, 255, 255, 127, 0, 127, 127, 127, 127, - 0, 128, 0, 0, 224, 0, 0, 0, 254, 3, 62, 31, 255, 255, 127, 224, - 224, 255, 255, 255, 255, 63, 254, 255, 255, 127, 0, 0, 255, 31, 255, 255, - 0, 12, 0, 0, 255, 127, 240, 143, 255, 255, 255, 191, 0, 0, 128, 255, - 252, 255, 255, 255, 255, 121, 255, 255, 255, 63, 3, 0, 187, 247, 255, 255, - 0, 0, 252, 8, 255, 255, 247, 255, 223, 255, 0, 124, 255, 63, 0, 0, - 255, 255, 127, 196, 5, 0, 0, 56, 255, 255, 60, 0, 126, 126, 126, 0, - 127, 127, 255, 255, 48, 0, 0, 0, 255, 7, 0, 0, 15, 0, 255, 255, - 127, 248, 255, 255, 255, 63, 255, 255, 255, 255, 255, 3, 127, 0, 248, 224, - 255, 253, 127, 95, 219, 255, 255, 255, 0, 0, 248, 255, 255, 255, 252, 255, - 0, 0, 255, 15, 0, 0, 223, 255, 192, 255, 255, 255, 252, 252, 252, 28, - 255, 239, 255, 255, 127, 255, 255, 183, 255, 63, 255, 63, 255, 255, 1, 0, - 15, 255, 62, 0, 255, 0, 255, 255, 63, 253, 255, 255, 255, 255, 191, 145, - 255, 255, 255, 192, 111, 240, 239, 254, 31, 0, 0, 0, 63, 0, 0, 0, - 255, 255, 71, 0, 30, 0, 0, 4, 255, 255, 251, 255, 255, 255, 159, 0, - 159, 25, 128, 224, 179, 0, 0, 0, 255, 255, 63, 127, 17, 0, 0, 0, - 0, 0, 0, 128, 248, 255, 255, 224, 31, 0, 255, 255, 3, 0, 0, 0, - 255, 7, 255, 31, 255, 1, 255, 67, 255, 255, 223, 255, 255, 255, 255, 223, - 100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123, - 95, 252, 253, 255, 63, 255, 255, 255, 253, 255, 255, 247, 255, 253, 255, 255, - 247, 15, 0, 0, 150, 254, 247, 10, 132, 234, 150, 170, 150, 247, 247, 94, - 255, 251, 255, 15, 238, 251, 255, 15, 255, 3, 255, 255, + 255, 255, 255, 1, 255, 255, 223, 63, 0, 0, 240, 255, 248, 3, 255, 255, + 255, 255, 255, 239, 255, 223, 225, 255, 15, 0, 254, 255, 239, 159, 249, 255, + 255, 253, 197, 227, 159, 89, 128, 176, 15, 0, 3, 0, 238, 135, 249, 255, + 255, 253, 109, 195, 135, 25, 2, 94, 0, 0, 63, 0, 238, 191, 251, 255, + 255, 253, 237, 227, 191, 27, 1, 0, 15, 0, 0, 2, 238, 159, 249, 255, + 159, 25, 192, 176, 15, 0, 2, 0, 236, 199, 61, 214, 24, 199, 255, 195, + 199, 29, 129, 0, 239, 223, 253, 255, 255, 253, 255, 227, 223, 29, 96, 7, + 15, 0, 0, 0, 255, 253, 239, 227, 223, 29, 96, 64, 15, 0, 6, 0, + 238, 223, 253, 255, 255, 255, 255, 231, 223, 93, 240, 128, 15, 0, 0, 252, + 236, 255, 127, 252, 255, 255, 251, 47, 127, 128, 95, 255, 0, 0, 12, 0, + 255, 255, 255, 7, 127, 32, 0, 0, 150, 37, 240, 254, 174, 236, 255, 59, + 95, 32, 0, 240, 1, 0, 0, 0, 255, 254, 255, 255, 255, 31, 254, 255, + 3, 255, 255, 254, 255, 255, 255, 31, 255, 255, 127, 249, 231, 193, 255, 255, + 127, 64, 0, 48, 191, 32, 255, 255, 255, 255, 255, 247, 255, 61, 127, 61, + 255, 61, 255, 255, 255, 255, 61, 127, 61, 255, 127, 255, 255, 255, 61, 255, + 255, 255, 255, 135, 255, 255, 0, 0, 255, 255, 63, 63, 255, 159, 255, 255, + 255, 199, 255, 1, 255, 223, 15, 0, 255, 255, 15, 0, 255, 223, 13, 0, + 255, 255, 207, 255, 255, 1, 128, 16, 255, 255, 255, 0, 255, 7, 255, 255, + 255, 255, 63, 0, 255, 255, 255, 127, 255, 15, 255, 1, 255, 63, 31, 0, + 255, 15, 255, 255, 255, 3, 0, 0, 255, 255, 255, 15, 254, 255, 31, 0, + 128, 0, 0, 0, 255, 255, 239, 255, 239, 15, 0, 0, 255, 243, 0, 252, + 191, 255, 3, 0, 0, 224, 0, 252, 255, 255, 255, 63, 255, 1, 0, 0, + 0, 222, 111, 0, 128, 255, 31, 0, 63, 63, 255, 170, 255, 255, 223, 95, + 220, 31, 207, 15, 255, 31, 220, 31, 0, 0, 2, 128, 0, 0, 255, 31, + 132, 252, 47, 62, 80, 189, 255, 243, 224, 67, 0, 0, 0, 0, 192, 255, + 255, 127, 255, 255, 31, 120, 12, 0, 255, 128, 0, 0, 255, 255, 127, 0, + 127, 127, 127, 127, 0, 128, 0, 0, 224, 0, 0, 0, 254, 3, 62, 31, + 255, 255, 127, 224, 224, 255, 255, 255, 255, 63, 254, 255, 255, 127, 0, 0, + 255, 31, 255, 255, 0, 12, 0, 0, 255, 127, 240, 143, 0, 0, 128, 255, + 252, 255, 255, 255, 255, 249, 255, 255, 255, 127, 255, 0, 187, 247, 255, 255, + 47, 0, 0, 0, 0, 0, 252, 40, 255, 255, 7, 0, 255, 255, 247, 255, + 223, 255, 0, 124, 255, 63, 0, 0, 255, 255, 127, 196, 5, 0, 0, 56, + 255, 255, 60, 0, 126, 126, 126, 0, 127, 127, 255, 255, 63, 0, 255, 255, + 255, 7, 0, 0, 15, 0, 255, 255, 127, 248, 255, 255, 255, 63, 255, 255, + 255, 255, 255, 3, 127, 0, 248, 224, 255, 253, 127, 95, 219, 255, 255, 255, + 0, 0, 248, 255, 255, 255, 252, 255, 0, 0, 255, 15, 0, 0, 223, 255, + 192, 255, 255, 255, 252, 252, 252, 28, 255, 239, 255, 255, 127, 255, 255, 183, + 255, 63, 255, 63, 255, 255, 31, 0, 255, 255, 1, 0, 15, 255, 62, 0, + 255, 255, 15, 255, 255, 0, 255, 255, 63, 253, 255, 255, 255, 255, 191, 145, + 255, 255, 55, 0, 255, 255, 255, 192, 111, 240, 239, 254, 31, 0, 0, 0, + 63, 0, 0, 0, 255, 255, 71, 0, 30, 0, 0, 20, 255, 255, 251, 255, + 255, 255, 159, 64, 127, 189, 255, 191, 255, 1, 255, 255, 159, 25, 129, 224, + 187, 7, 0, 0, 179, 0, 0, 0, 255, 255, 63, 127, 0, 0, 0, 63, + 17, 0, 0, 0, 255, 255, 255, 227, 0, 0, 0, 128, 255, 253, 255, 255, + 255, 255, 127, 127, 0, 0, 252, 255, 255, 254, 127, 0, 127, 0, 0, 0, + 248, 255, 255, 224, 31, 0, 255, 255, 3, 0, 0, 0, 255, 7, 255, 31, + 255, 1, 255, 67, 255, 255, 223, 255, 255, 255, 255, 223, 100, 222, 255, 235, + 239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123, 95, 252, 253, 255, + 63, 255, 255, 255, 253, 255, 255, 247, 247, 15, 0, 0, 127, 255, 255, 249, + 219, 7, 0, 0, 143, 0, 0, 0, 150, 254, 247, 10, 132, 234, 150, 170, + 150, 247, 247, 94, 255, 251, 255, 15, 238, 251, 255, 15, 255, 3, 255, 255, }; -/* Alphabetic: 2005 bytes. */ +/* Alphabetic: 2193 bytes. */ RE_UINT32 re_get_alphabetic(RE_UINT32 ch) { RE_UINT32 code; @@ -5314,37 +5681,40 @@ static RE_UINT8 re_lowercase_stage_1[] = { }; static RE_UINT8 re_lowercase_stage_2[] = { - 0, 1, 1, 2, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 5, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, - 8, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 1, 1, 1, 1, 1, + 0, 1, 2, 3, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 6, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, + 9, 10, 1, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 1, 1, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, }; static RE_UINT8 re_lowercase_stage_3[] = { 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 7, 8, 9, 10, 11, 6, 6, 12, 6, 6, 6, - 6, 6, 6, 6, 13, 14, 6, 6, 6, 6, 6, 6, 6, 6, 15, 16, - 6, 6, 6, 17, 6, 6, 6, 6, 6, 6, 6, 18, 6, 6, 6, 19, - 6, 6, 6, 6, 20, 6, 6, 6, 21, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 22, 23, 24, 25, + 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 8, 9, 10, 11, + 12, 13, 6, 6, 14, 6, 6, 6, 6, 6, 6, 6, 15, 16, 6, 6, + 6, 6, 6, 6, 6, 6, 17, 18, 6, 6, 6, 19, 6, 6, 6, 6, + 6, 6, 6, 20, 6, 6, 6, 21, 6, 6, 6, 6, 22, 6, 6, 6, + 6, 6, 6, 6, 23, 6, 6, 6, 24, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 25, 26, 27, 28, 6, 29, 6, 6, 6, 6, 6, 6, }; static RE_UINT8 re_lowercase_stage_4[] = { 0, 0, 0, 1, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 5, 13, 14, 15, 16, 17, 18, 19, 0, 0, 20, 21, 22, 23, 24, 25, 0, 26, 15, 5, 27, 5, 28, 5, 5, 29, 0, 30, 31, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 0, 0, - 5, 5, 5, 5, 32, 5, 5, 5, 33, 34, 35, 36, 34, 37, 38, 39, - 0, 0, 0, 40, 41, 0, 0, 0, 42, 43, 44, 26, 45, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 26, 46, 0, 26, 47, 48, 5, 5, 5, 49, - 15, 50, 0, 0, 0, 0, 0, 0, 0, 0, 5, 51, 52, 0, 0, 0, - 0, 53, 5, 54, 55, 56, 0, 57, 0, 26, 58, 59, 0, 0, 0, 0, - 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, - 63, 64, 65, 31, 66, 67, 68, 69, 70, 71, 72, 73, 74, 63, 64, 75, - 31, 66, 76, 62, 69, 77, 78, 79, 80, 76, 81, 26, 82, 69, 83, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, + 0, 0, 0, 0, 33, 0, 0, 0, 15, 15, 15, 15, 15, 15, 0, 0, + 5, 5, 5, 5, 34, 5, 5, 5, 35, 36, 37, 38, 36, 39, 40, 41, + 0, 0, 0, 42, 43, 0, 0, 0, 44, 45, 46, 26, 47, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 26, 48, 0, 26, 49, 50, 5, 5, 5, 51, + 15, 52, 0, 0, 0, 0, 0, 0, 0, 0, 5, 53, 54, 0, 0, 0, + 0, 55, 5, 56, 57, 58, 0, 59, 0, 26, 60, 61, 15, 15, 0, 0, + 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 63, 64, 0, 0, 0, 65, 66, 0, 0, 0, 0, 0, 0, 15, 67, + 0, 0, 0, 0, 0, 0, 15, 0, 68, 69, 70, 31, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 68, 69, 80, 31, 71, 81, 64, 74, 82, 83, 84, + 85, 81, 86, 26, 87, 74, 88, 0, 0, 89, 90, 0, 0, 0, 0, 0, }; static RE_UINT8 re_lowercase_stage_5[] = { @@ -5356,22 +5726,24 @@ static RE_UINT8 re_lowercase_stage_5[] = { 32, 0, 0, 0, 0, 0, 138, 60, 0, 0, 1, 0, 0, 240, 255, 255, 255, 127, 227, 170, 170, 170, 47, 25, 0, 0, 255, 255, 2, 168, 170, 170, 84, 213, 170, 170, 170, 170, 0, 0, 254, 255, 255, 255, 255, 0, 0, 0, - 170, 170, 234, 191, 255, 0, 63, 0, 255, 0, 255, 0, 63, 0, 255, 0, - 255, 0, 255, 63, 255, 0, 223, 64, 220, 0, 207, 0, 255, 0, 220, 0, - 0, 0, 2, 128, 0, 0, 255, 31, 0, 196, 8, 0, 0, 128, 16, 50, - 192, 67, 0, 0, 16, 0, 0, 0, 255, 3, 0, 0, 255, 255, 255, 127, - 98, 21, 218, 63, 26, 80, 8, 0, 191, 32, 0, 0, 170, 42, 0, 0, - 170, 170, 170, 58, 168, 170, 171, 170, 170, 170, 255, 149, 170, 80, 186, 170, - 170, 2, 0, 0, 0, 0, 0, 7, 255, 255, 255, 247, 48, 0, 0, 0, - 127, 0, 248, 0, 0, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 252, - 255, 255, 15, 0, 0, 192, 223, 255, 252, 255, 255, 15, 0, 0, 192, 235, - 239, 255, 0, 0, 0, 252, 255, 255, 15, 0, 0, 192, 255, 255, 255, 0, - 0, 0, 252, 255, 255, 15, 0, 0, 192, 255, 255, 255, 0, 192, 255, 255, - 0, 0, 192, 255, 63, 0, 0, 0, 252, 255, 255, 247, 3, 0, 0, 240, - 255, 255, 223, 15, 255, 127, 63, 0, 255, 253, 0, 0, 247, 11, 0, 0, + 0, 0, 0, 63, 255, 1, 0, 0, 170, 170, 234, 191, 255, 0, 63, 0, + 255, 0, 255, 0, 63, 0, 255, 0, 255, 0, 255, 63, 255, 0, 223, 64, + 220, 0, 207, 0, 255, 0, 220, 0, 0, 0, 2, 128, 0, 0, 255, 31, + 0, 196, 8, 0, 0, 128, 16, 50, 192, 67, 0, 0, 16, 0, 0, 0, + 255, 3, 0, 0, 255, 255, 255, 127, 98, 21, 218, 63, 26, 80, 8, 0, + 191, 32, 0, 0, 170, 42, 0, 0, 170, 170, 170, 58, 168, 170, 171, 170, + 170, 170, 255, 149, 170, 80, 186, 170, 170, 2, 160, 0, 0, 0, 0, 7, + 255, 255, 255, 247, 63, 0, 255, 255, 127, 0, 248, 0, 0, 255, 255, 255, + 255, 255, 0, 0, 0, 0, 0, 255, 255, 255, 255, 15, 255, 255, 7, 0, + 0, 0, 0, 252, 255, 255, 15, 0, 0, 192, 223, 255, 252, 255, 255, 15, + 0, 0, 192, 235, 239, 255, 0, 0, 0, 252, 255, 255, 15, 0, 0, 192, + 255, 255, 255, 0, 0, 0, 252, 255, 255, 15, 0, 0, 192, 255, 255, 255, + 0, 192, 255, 255, 0, 0, 192, 255, 63, 0, 0, 0, 252, 255, 255, 247, + 3, 0, 0, 240, 255, 255, 223, 15, 255, 127, 63, 0, 255, 253, 0, 0, + 247, 11, 0, 0, 252, 255, 255, 255, 15, 0, 0, 0, }; -/* Lowercase: 745 bytes. */ +/* Lowercase: 829 bytes. */ RE_UINT32 re_get_lowercase(RE_UINT32 ch) { RE_UINT32 code; @@ -5407,19 +5779,20 @@ static RE_UINT8 re_uppercase_stage_1[] = { static RE_UINT8 re_uppercase_stage_2[] = { 0, 1, 2, 3, 4, 5, 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, 7, - 8, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 1, 1, 1, 11, 1, + 8, 9, 1, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, 1, 1, 12, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, }; static RE_UINT8 re_uppercase_stage_3[] = { 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 8, 9, - 6, 10, 6, 6, 11, 6, 6, 6, 6, 6, 6, 6, 12, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 13, 14, 6, 6, 6, 6, 6, 6, 6, 15, - 6, 6, 6, 6, 16, 6, 6, 6, 17, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 18, 19, 20, 21, 6, 22, 6, 6, 6, 6, 6, 6, + 7, 6, 6, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 9, 10, + 6, 11, 6, 6, 12, 6, 6, 6, 6, 6, 6, 6, 13, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 14, 15, 6, 6, 6, 6, 6, 6, 6, 16, + 6, 6, 6, 6, 17, 6, 6, 6, 6, 6, 6, 6, 18, 6, 6, 6, + 19, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 20, 21, 22, 23, + 6, 24, 6, 6, 6, 6, 6, 6, 6, 25, 6, 6, 6, 6, 6, 6, }; static RE_UINT8 re_uppercase_stage_4[] = { @@ -5427,14 +5800,15 @@ static RE_UINT8 re_uppercase_stage_4[] = { 3, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, 15, 16, 17, 18, 19, 0, 3, 20, 3, 21, 3, 3, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 24, 0, - 3, 3, 3, 3, 25, 3, 3, 3, 26, 27, 28, 29, 0, 30, 31, 32, - 33, 34, 35, 19, 36, 0, 0, 0, 0, 0, 0, 0, 0, 37, 19, 0, - 18, 38, 0, 39, 3, 3, 3, 40, 0, 0, 3, 41, 42, 0, 0, 0, - 0, 43, 3, 44, 45, 46, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 18, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 48, 49, 50, - 51, 61, 62, 54, 55, 51, 63, 64, 65, 66, 37, 38, 54, 67, 68, 0, - 0, 54, 69, 69, 55, 0, 0, 0, + 0, 0, 0, 0, 0, 18, 18, 25, 3, 3, 3, 3, 26, 3, 3, 3, + 27, 28, 29, 30, 0, 31, 32, 33, 34, 35, 36, 19, 37, 0, 0, 0, + 0, 0, 0, 0, 0, 38, 19, 0, 18, 39, 0, 40, 3, 3, 3, 41, + 0, 0, 3, 42, 43, 0, 0, 0, 0, 44, 3, 45, 46, 47, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, 18, 48, 0, 0, 0, 49, 50, 0, + 0, 0, 0, 0, 18, 51, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, + 52, 53, 54, 55, 56, 57, 49, 58, 59, 60, 61, 62, 63, 52, 53, 54, + 55, 64, 25, 49, 58, 55, 65, 66, 67, 68, 38, 39, 49, 69, 70, 0, + 18, 71, 0, 0, 0, 0, 0, 0, 0, 49, 72, 72, 58, 0, 0, 0, }; static RE_UINT8 re_uppercase_stage_5[] = { @@ -5444,21 +5818,22 @@ static RE_UINT8 re_uppercase_stage_5[] = { 122, 85, 0, 0, 0, 0, 69, 128, 64, 215, 254, 255, 251, 15, 0, 0, 0, 128, 28, 85, 85, 85, 144, 230, 255, 255, 255, 255, 255, 255, 0, 0, 1, 84, 85, 85, 171, 42, 85, 85, 85, 85, 254, 255, 255, 255, 127, 0, - 191, 32, 0, 0, 85, 85, 21, 64, 0, 255, 0, 63, 0, 255, 0, 255, - 0, 63, 0, 170, 0, 255, 0, 0, 0, 0, 0, 15, 0, 15, 0, 15, - 0, 31, 0, 15, 132, 56, 39, 62, 80, 61, 15, 192, 32, 0, 0, 0, - 8, 0, 0, 0, 0, 0, 192, 255, 255, 127, 0, 0, 157, 234, 37, 192, - 5, 40, 4, 0, 85, 21, 0, 0, 85, 85, 85, 5, 84, 85, 84, 85, - 85, 85, 0, 106, 85, 40, 69, 85, 85, 61, 3, 0, 255, 0, 0, 0, + 191, 32, 0, 0, 255, 255, 63, 0, 85, 85, 21, 64, 0, 255, 0, 63, + 0, 255, 0, 255, 0, 63, 0, 170, 0, 255, 0, 0, 0, 0, 0, 15, + 0, 15, 0, 15, 0, 31, 0, 15, 132, 56, 39, 62, 80, 61, 15, 192, + 32, 0, 0, 0, 8, 0, 0, 0, 0, 0, 192, 255, 255, 127, 0, 0, + 157, 234, 37, 192, 5, 40, 4, 0, 85, 21, 0, 0, 85, 85, 85, 5, + 84, 85, 84, 85, 85, 85, 0, 106, 85, 40, 69, 85, 85, 125, 95, 0, + 255, 0, 0, 0, 0, 0, 255, 255, 255, 255, 15, 0, 255, 255, 7, 0, 255, 255, 255, 3, 0, 0, 240, 255, 255, 63, 0, 0, 0, 255, 255, 255, - 3, 0, 0, 208, 100, 222, 63, 0, 0, 0, 255, 255, 255, 3, 0, 0, - 176, 231, 223, 31, 0, 0, 0, 123, 95, 252, 1, 0, 0, 240, 255, 255, - 63, 0, 0, 0, 3, 0, 0, 240, 255, 255, 63, 0, 1, 0, 0, 0, - 252, 255, 255, 7, 0, 0, 0, 240, 255, 255, 31, 0, 255, 1, 0, 0, - 0, 4, 0, 0, 255, 3, 255, 255, + 3, 0, 0, 208, 100, 222, 63, 0, 255, 3, 0, 0, 176, 231, 223, 31, + 0, 0, 0, 123, 95, 252, 1, 0, 0, 240, 255, 255, 63, 0, 0, 0, + 3, 0, 0, 240, 1, 0, 0, 0, 252, 255, 255, 7, 0, 0, 0, 240, + 255, 255, 31, 0, 255, 1, 0, 0, 0, 4, 0, 0, 3, 0, 0, 0, + 255, 3, 255, 255, }; -/* Uppercase: 673 bytes. */ +/* Uppercase: 725 bytes. */ RE_UINT32 re_get_uppercase(RE_UINT32 ch) { RE_UINT32 code; @@ -5487,44 +5862,47 @@ RE_UINT32 re_get_uppercase(RE_UINT32 ch) { /* Cased. */ static RE_UINT8 re_cased_stage_1[] = { - 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, + 0, 1, 2, 3, 4, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, }; static RE_UINT8 re_cased_stage_2[] = { - 0, 1, 2, 3, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 6, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, - 9, 1, 1, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, 1, 1, 1, 12, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 2, 2, 3, 2, 2, 4, 5, 6, 2, 7, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 8, 9, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 10, 11, + 2, 12, 2, 13, 2, 2, 14, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 15, 2, 2, 2, 2, 16, 2, 17, 2, 2, 2, }; static RE_UINT8 re_cased_stage_3[] = { - 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 8, 9, 10, - 11, 12, 6, 6, 13, 6, 6, 6, 6, 6, 6, 6, 14, 15, 6, 6, - 6, 6, 6, 6, 6, 6, 16, 17, 6, 6, 6, 18, 6, 6, 6, 6, - 6, 6, 6, 19, 6, 6, 6, 20, 6, 6, 6, 6, 21, 6, 6, 6, - 22, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 23, 24, 25, 26, - 6, 27, 6, 6, 6, 6, 6, 6, + 0, 1, 2, 3, 2, 4, 5, 6, 2, 7, 8, 9, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 10, 10, 10, 10, 10, 12, + 10, 13, 2, 14, 2, 2, 15, 16, 17, 18, 19, 20, 10, 10, 10, 10, + 10, 21, 10, 10, 10, 10, 10, 10, 22, 23, 24, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 25, 26, 27, 28, 10, 10, 10, 10, 10, 10, 29, 14, + 10, 10, 10, 10, 10, 10, 30, 10, 10, 10, 10, 10, 10, 10, 31, 10, + 32, 33, 10, 10, 10, 10, 10, 10, 10, 34, 10, 10, 10, 10, 10, 10, + 10, 35, 10, 10, 10, 10, 10, 10, 36, 37, 38, 2, 2, 39, 40, 41, + 10, 10, 42, 10, 10, 10, 10, 10, 10, 10, 43, 44, 10, 10, 10, 10, }; static RE_UINT8 re_cased_stage_4[] = { 0, 0, 1, 1, 0, 2, 3, 3, 4, 4, 4, 4, 4, 5, 6, 4, - 4, 4, 4, 4, 7, 8, 9, 10, 0, 0, 11, 12, 13, 14, 4, 15, - 4, 4, 4, 4, 16, 4, 4, 4, 4, 17, 18, 19, 20, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 21, 0, - 4, 4, 4, 4, 4, 4, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, - 22, 4, 23, 24, 4, 25, 26, 27, 0, 0, 0, 28, 29, 0, 0, 0, - 30, 31, 32, 4, 33, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 35, - 4, 36, 37, 4, 4, 4, 4, 38, 4, 21, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 39, 24, 0, 0, 0, 0, 40, 4, 4, 41, 42, 0, 43, - 0, 44, 5, 45, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0, 0, 0, 0, 4, 4, 47, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4, 4, 0, 4, 4, 48, 4, 49, 50, 51, 4, - 52, 53, 54, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 55, 56, 5, - 48, 48, 36, 36, 57, 57, 58, 0, 0, 44, 59, 59, 35, 0, 0, 0, + 7, 8, 9, 10, 0, 0, 11, 12, 13, 14, 4, 15, 16, 4, 4, 4, + 4, 17, 18, 19, 20, 0, 0, 0, 0, 0, 0, 0, 0, 4, 21, 0, + 0, 4, 4, 22, 23, 0, 0, 0, 4, 4, 0, 0, 22, 4, 24, 25, + 4, 26, 27, 28, 0, 0, 0, 29, 30, 0, 0, 0, 31, 32, 33, 4, + 34, 0, 0, 0, 0, 35, 4, 36, 4, 37, 38, 4, 4, 4, 4, 39, + 4, 21, 0, 0, 0, 0, 4, 40, 25, 0, 0, 0, 0, 41, 4, 4, + 42, 43, 0, 44, 0, 45, 5, 46, 47, 0, 0, 0, 0, 1, 1, 0, + 4, 4, 48, 0, 0, 45, 49, 50, 4, 51, 4, 51, 0, 4, 4, 0, + 4, 4, 52, 4, 53, 54, 55, 4, 56, 57, 58, 4, 4, 59, 60, 5, + 52, 52, 37, 37, 61, 61, 62, 0, 4, 4, 63, 0, 0, 45, 64, 64, + 36, 0, 0, 0, }; static RE_UINT8 re_cased_stage_5[] = { @@ -5533,19 +5911,21 @@ static RE_UINT8 re_cased_stage_5[] = { 255, 255, 255, 1, 3, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 0, 0, 207, 188, 64, 215, 255, 255, 251, 255, 255, 255, 255, 255, 191, 255, 3, 252, 255, 255, 255, 255, 254, 255, 255, 255, 127, 0, 254, 255, 255, 255, - 255, 0, 0, 0, 191, 32, 0, 0, 255, 255, 63, 63, 63, 63, 255, 170, - 255, 255, 255, 63, 255, 255, 223, 95, 220, 31, 207, 15, 255, 31, 220, 31, - 0, 0, 2, 128, 0, 0, 255, 31, 132, 252, 47, 62, 80, 189, 31, 242, - 224, 67, 0, 0, 24, 0, 0, 0, 0, 0, 192, 255, 255, 3, 0, 0, - 255, 127, 255, 255, 255, 255, 255, 127, 31, 120, 12, 0, 255, 63, 0, 0, - 252, 255, 255, 255, 255, 120, 255, 255, 255, 63, 3, 0, 0, 0, 0, 7, - 0, 0, 255, 255, 48, 0, 0, 0, 127, 0, 248, 0, 255, 255, 0, 0, + 255, 0, 0, 0, 191, 32, 0, 0, 255, 255, 63, 63, 255, 1, 0, 0, + 63, 63, 255, 170, 255, 255, 255, 63, 255, 255, 223, 95, 220, 31, 207, 15, + 255, 31, 220, 31, 0, 0, 2, 128, 0, 0, 255, 31, 132, 252, 47, 62, + 80, 189, 31, 242, 224, 67, 0, 0, 24, 0, 0, 0, 0, 0, 192, 255, + 255, 3, 0, 0, 255, 127, 255, 255, 255, 255, 255, 127, 31, 120, 12, 0, + 255, 63, 0, 0, 252, 255, 255, 255, 255, 120, 255, 255, 255, 127, 255, 0, + 0, 0, 0, 7, 0, 0, 255, 255, 63, 0, 255, 255, 127, 0, 248, 0, + 255, 255, 0, 0, 255, 255, 15, 255, 255, 255, 255, 15, 255, 255, 7, 0, 255, 255, 223, 255, 255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123, 95, 252, 253, 255, 63, 255, 255, 255, - 253, 255, 255, 247, 255, 253, 255, 255, 247, 15, 0, 0, 255, 3, 255, 255, + 253, 255, 255, 247, 255, 253, 255, 255, 247, 15, 0, 0, 15, 0, 0, 0, + 255, 3, 255, 255, }; -/* Cased: 681 bytes. */ +/* Cased: 748 bytes. */ RE_UINT32 re_get_cased(RE_UINT32 ch) { RE_UINT32 code; @@ -5553,15 +5933,15 @@ RE_UINT32 re_get_cased(RE_UINT32 ch) { RE_UINT32 pos; RE_UINT32 value; - f = ch >> 16; - code = ch ^ (f << 16); - pos = (RE_UINT32)re_cased_stage_1[f] << 5; - f = code >> 11; - code ^= f << 11; + f = ch >> 14; + code = ch ^ (f << 14); + pos = (RE_UINT32)re_cased_stage_1[f] << 4; + f = code >> 10; + code ^= f << 10; pos = (RE_UINT32)re_cased_stage_2[pos + f] << 3; - f = code >> 8; - code ^= f << 8; - pos = (RE_UINT32)re_cased_stage_3[pos + f] << 3; + f = code >> 7; + code ^= f << 7; + pos = (RE_UINT32)re_cased_stage_3[pos + f] << 2; f = code >> 5; code ^= f << 5; pos = (RE_UINT32)re_cased_stage_4[pos + f] << 5; @@ -5582,10 +5962,10 @@ static RE_UINT8 re_case_ignorable_stage_1[] = { static RE_UINT8 re_case_ignorable_stage_2[] = { 0, 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 10, - 11, 12, 13, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 15, 7, 7, 16, 7, 7, 17, 7, 7, + 11, 12, 13, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 15, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 16, 7, 7, 17, 18, 19, 20, 21, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 18, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 22, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, }; static RE_UINT8 re_case_ignorable_stage_3[] = { @@ -5595,10 +5975,12 @@ static RE_UINT8 re_case_ignorable_stage_3[] = { 30, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 31, 1, 1, 1, 32, 1, 33, 34, 35, 36, 37, 38, 1, 1, 1, 1, 1, 1, 1, 39, 1, 1, 40, 41, 1, 42, 43, 44, 1, 1, 1, 1, - 1, 1, 45, 1, 1, 1, 1, 1, 46, 47, 48, 49, 50, 51, 52, 1, - 1, 1, 53, 54, 1, 1, 1, 55, 1, 1, 1, 1, 56, 1, 1, 1, - 1, 57, 58, 1, 1, 1, 1, 1, 59, 1, 1, 1, 1, 1, 1, 1, - 60, 61, 1, 1, 1, 1, 1, 1, + 1, 1, 45, 1, 1, 1, 1, 1, 46, 47, 48, 49, 50, 51, 52, 53, + 1, 1, 1, 1, 54, 1, 1, 1, 1, 1, 55, 56, 1, 1, 1, 57, + 1, 1, 1, 1, 58, 1, 1, 1, 1, 59, 60, 1, 1, 1, 1, 1, + 1, 1, 61, 1, 1, 1, 1, 1, 62, 1, 1, 1, 1, 1, 1, 1, + 63, 64, 1, 1, 1, 1, 1, 1, 1, 1, 1, 65, 1, 1, 1, 1, + 66, 67, 1, 1, 1, 1, 1, 1, }; static RE_UINT8 re_case_ignorable_stage_4[] = { @@ -5606,33 +5988,36 @@ static RE_UINT8 re_case_ignorable_stage_4[] = { 0, 0, 0, 0, 0, 5, 6, 6, 6, 6, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 10, 0, 11, 12, 13, 14, 15, 0, 16, 17, 0, 0, 18, 19, 20, 5, 21, 0, 0, 22, 0, 23, - 24, 25, 26, 0, 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 24, 25, 26, 0, 0, 0, 27, 6, 28, 29, 30, 31, 32, 33, 34, 35, 36, 33, 37, 38, 36, 33, 39, 35, 32, 40, 41, 35, 42, 0, 43, 0, 3, 44, 45, 35, 32, 40, 46, 35, 32, 0, 34, 35, 0, 0, 47, 0, 0, 48, 49, 0, 0, 50, 51, 0, 52, 53, 0, 54, 55, 56, 57, 0, 0, 58, 59, 60, 61, 0, 0, 33, 0, 0, 62, 0, 0, 0, 0, 0, - 63, 63, 64, 64, 0, 65, 66, 0, 67, 0, 68, 0, 0, 69, 0, 0, - 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 72, 73, 0, 74, 0, 0, - 75, 76, 42, 77, 78, 79, 0, 80, 0, 81, 0, 82, 0, 0, 83, 84, - 0, 85, 6, 86, 87, 6, 6, 88, 0, 0, 0, 0, 0, 89, 90, 91, - 92, 93, 0, 94, 95, 0, 5, 96, 0, 0, 0, 97, 0, 0, 0, 98, - 0, 0, 0, 99, 0, 0, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, - 101, 102, 0, 0, 103, 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 82, 106, 0, 0, 107, 108, 0, 0, 109, - 6, 78, 0, 17, 110, 0, 0, 52, 111, 112, 0, 0, 0, 0, 113, 114, - 0, 115, 116, 0, 28, 117, 100, 112, 0, 118, 119, 120, 0, 121, 122, 123, - 0, 0, 87, 0, 0, 0, 0, 124, 2, 0, 0, 0, 0, 125, 78, 0, - 126, 25, 127, 0, 0, 0, 0, 128, 1, 2, 3, 17, 44, 0, 0, 129, - 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 3, - 0, 0, 0, 131, 0, 0, 0, 0, 132, 133, 0, 0, 0, 0, 0, 112, - 32, 134, 135, 128, 78, 136, 0, 0, 28, 137, 0, 138, 78, 139, 0, 0, - 0, 140, 0, 0, 0, 0, 128, 141, 32, 33, 3, 142, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 143, 144, 0, 0, 0, 0, 0, 0, 145, 3, 0, - 0, 146, 3, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, - 0, 149, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, - 0, 0, 0, 0, 151, 75, 0, 0, 0, 0, 0, 152, 153, 154, 0, 0, - 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 0, - 32, 6, 6, 6, 0, 0, 0, 0, 6, 6, 6, 6, 6, 6, 6, 156, + 63, 63, 64, 64, 0, 65, 66, 0, 67, 0, 68, 0, 69, 70, 0, 0, + 0, 71, 0, 0, 0, 0, 0, 0, 72, 0, 73, 74, 0, 75, 0, 0, + 76, 77, 42, 78, 79, 80, 0, 81, 0, 82, 0, 83, 0, 0, 84, 85, + 0, 86, 6, 87, 88, 6, 6, 89, 0, 0, 0, 0, 0, 90, 91, 92, + 93, 94, 0, 95, 96, 0, 5, 97, 0, 0, 0, 98, 0, 0, 0, 99, + 0, 0, 0, 100, 0, 0, 0, 6, 0, 101, 0, 0, 0, 0, 0, 0, + 102, 103, 0, 0, 104, 0, 0, 105, 106, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 83, 107, 0, 0, 108, 109, 0, 0, 110, + 6, 79, 0, 17, 111, 0, 0, 52, 112, 69, 0, 0, 0, 0, 113, 114, + 0, 115, 116, 0, 28, 117, 101, 69, 0, 118, 119, 120, 0, 121, 122, 123, + 0, 0, 88, 0, 0, 0, 0, 124, 2, 0, 0, 0, 0, 125, 79, 0, + 126, 127, 128, 0, 0, 0, 0, 129, 1, 2, 3, 17, 44, 0, 0, 130, + 0, 0, 0, 0, 0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 132, 0, 0, 0, 0, 133, 134, 0, 0, 0, 0, 0, 69, + 32, 135, 136, 129, 79, 137, 0, 0, 28, 138, 0, 139, 79, 140, 141, 0, + 0, 142, 0, 0, 0, 0, 129, 143, 79, 33, 3, 144, 0, 0, 0, 0, + 0, 135, 145, 0, 0, 146, 147, 0, 0, 0, 0, 0, 0, 148, 149, 0, + 0, 150, 3, 0, 0, 151, 0, 0, 62, 152, 0, 0, 0, 0, 0, 0, + 0, 153, 0, 0, 125, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, + 0, 156, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 3, + 0, 0, 0, 0, 158, 76, 0, 0, 0, 0, 0, 159, 160, 161, 0, 0, + 0, 0, 162, 0, 0, 0, 0, 0, 6, 163, 6, 164, 165, 166, 0, 0, + 167, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, + 0, 0, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, + 32, 6, 6, 6, 0, 0, 0, 0, 6, 6, 6, 6, 6, 6, 6, 127, }; static RE_UINT8 re_case_ignorable_stage_5[] = { @@ -5642,7 +6027,7 @@ static RE_UINT8 re_case_ignorable_stage_5[] = { 255, 255, 255, 191, 182, 0, 0, 0, 0, 0, 16, 0, 63, 0, 255, 23, 1, 248, 255, 255, 0, 0, 1, 0, 0, 0, 192, 191, 255, 61, 0, 0, 0, 128, 2, 0, 255, 7, 0, 0, 192, 255, 1, 0, 0, 248, 63, 4, - 0, 0, 192, 255, 255, 63, 0, 0, 0, 0, 0, 14, 240, 255, 255, 255, + 0, 0, 192, 255, 255, 63, 0, 0, 0, 0, 0, 14, 0, 0, 240, 255, 7, 0, 0, 0, 0, 0, 0, 20, 254, 33, 254, 0, 12, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 16, 30, 32, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 134, 57, 2, 0, 0, 0, 35, 0, 190, 33, 0, 0, @@ -5653,32 +6038,35 @@ static RE_UINT8 re_case_ignorable_stage_5[] = { 255, 255, 255, 31, 64, 0, 0, 0, 0, 224, 253, 102, 0, 0, 0, 195, 1, 0, 30, 0, 100, 32, 0, 32, 0, 0, 0, 224, 0, 0, 28, 0, 0, 0, 12, 0, 0, 0, 176, 63, 64, 254, 143, 32, 0, 120, 0, 0, - 8, 0, 0, 0, 0, 2, 0, 0, 135, 1, 4, 14, 0, 0, 128, 9, - 0, 0, 64, 127, 229, 31, 248, 159, 128, 0, 255, 127, 15, 0, 0, 0, - 0, 0, 208, 23, 0, 248, 15, 0, 3, 0, 0, 0, 60, 59, 0, 0, - 64, 163, 3, 0, 0, 240, 207, 0, 0, 0, 0, 63, 0, 0, 247, 255, - 253, 33, 16, 3, 0, 240, 255, 255, 255, 7, 0, 1, 0, 0, 0, 248, - 255, 255, 63, 240, 0, 0, 0, 160, 3, 224, 0, 224, 0, 224, 0, 96, - 0, 248, 0, 3, 144, 124, 0, 0, 223, 255, 2, 128, 0, 0, 255, 31, - 255, 255, 1, 0, 0, 0, 0, 48, 0, 128, 3, 0, 0, 128, 0, 128, - 0, 128, 0, 0, 32, 0, 0, 0, 0, 60, 62, 8, 0, 0, 0, 126, - 0, 0, 0, 112, 0, 0, 32, 0, 0, 16, 0, 0, 0, 128, 247, 191, - 0, 0, 0, 176, 0, 0, 3, 0, 0, 7, 0, 0, 68, 8, 0, 0, - 96, 0, 0, 0, 16, 0, 0, 0, 255, 255, 3, 0, 192, 63, 0, 0, + 8, 0, 0, 0, 96, 0, 0, 0, 0, 2, 0, 0, 135, 1, 4, 14, + 0, 0, 128, 9, 0, 0, 64, 127, 229, 31, 248, 159, 128, 0, 255, 127, + 15, 0, 0, 0, 0, 0, 208, 23, 0, 248, 15, 0, 3, 0, 0, 0, + 60, 59, 0, 0, 64, 163, 3, 0, 0, 240, 207, 0, 0, 0, 0, 63, + 0, 0, 247, 255, 253, 33, 16, 3, 0, 240, 255, 255, 255, 7, 0, 1, + 0, 0, 0, 248, 255, 255, 63, 248, 0, 0, 0, 160, 3, 224, 0, 224, + 0, 224, 0, 96, 0, 248, 0, 3, 144, 124, 0, 0, 223, 255, 2, 128, + 0, 0, 255, 31, 255, 255, 1, 0, 0, 0, 0, 48, 0, 128, 3, 0, + 0, 128, 0, 128, 0, 128, 0, 0, 32, 0, 0, 0, 0, 60, 62, 8, + 0, 0, 0, 126, 0, 0, 0, 112, 0, 0, 32, 0, 0, 16, 0, 0, + 0, 128, 247, 191, 0, 0, 0, 240, 0, 0, 3, 0, 0, 7, 0, 0, + 68, 8, 0, 0, 48, 0, 0, 0, 255, 255, 3, 0, 192, 63, 0, 0, 128, 255, 3, 0, 0, 0, 200, 19, 0, 126, 102, 0, 8, 16, 0, 0, 0, 0, 1, 16, 0, 0, 157, 193, 2, 0, 0, 32, 0, 48, 88, 0, - 32, 33, 0, 0, 0, 0, 252, 255, 255, 255, 8, 0, 0, 0, 36, 0, - 0, 0, 0, 128, 8, 0, 0, 14, 0, 0, 0, 32, 0, 0, 192, 7, - 110, 240, 0, 0, 0, 0, 0, 135, 0, 0, 0, 255, 127, 0, 0, 0, - 0, 0, 120, 38, 128, 239, 31, 0, 0, 0, 8, 0, 0, 0, 192, 127, - 0, 128, 211, 0, 248, 7, 0, 0, 192, 31, 31, 0, 0, 0, 248, 133, - 13, 0, 0, 0, 0, 0, 60, 176, 0, 0, 248, 167, 0, 40, 191, 0, - 0, 0, 31, 0, 0, 0, 127, 0, 0, 128, 255, 255, 0, 0, 0, 96, - 128, 3, 248, 255, 231, 15, 0, 0, 0, 60, 0, 0, 28, 0, 0, 0, - 255, 255, 0, 0, + 32, 33, 0, 0, 0, 0, 252, 255, 255, 255, 8, 0, 255, 255, 0, 0, + 0, 0, 36, 0, 0, 0, 0, 128, 8, 0, 0, 14, 0, 0, 0, 32, + 0, 0, 192, 7, 110, 240, 0, 0, 0, 0, 0, 135, 0, 0, 0, 255, + 127, 0, 0, 0, 0, 0, 120, 38, 128, 239, 31, 0, 0, 0, 8, 0, + 0, 0, 192, 127, 0, 28, 0, 0, 0, 128, 211, 64, 248, 7, 0, 0, + 192, 31, 31, 0, 92, 0, 0, 0, 0, 0, 248, 133, 13, 0, 0, 0, + 0, 0, 60, 176, 1, 0, 0, 48, 0, 0, 248, 167, 0, 40, 191, 0, + 188, 15, 0, 0, 0, 0, 127, 191, 255, 252, 109, 0, 0, 0, 31, 0, + 0, 0, 127, 0, 0, 128, 255, 255, 0, 0, 0, 96, 128, 3, 248, 255, + 231, 15, 0, 0, 0, 60, 0, 0, 28, 0, 0, 0, 255, 255, 127, 248, + 255, 31, 32, 0, 16, 0, 0, 248, 254, 255, 0, 0, 127, 255, 255, 249, + 219, 7, 0, 0, 240, 7, 0, 0, }; -/* Case_Ignorable: 1406 bytes. */ +/* Case_Ignorable: 1538 bytes. */ RE_UINT32 re_get_case_ignorable(RE_UINT32 ch) { RE_UINT32 code; @@ -5707,24 +6095,26 @@ RE_UINT32 re_get_case_ignorable(RE_UINT32 ch) { /* Changes_When_Lowercased. */ static RE_UINT8 re_changes_when_lowercased_stage_1[] = { - 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, + 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, }; static RE_UINT8 re_changes_when_lowercased_stage_2[] = { - 0, 1, 2, 3, 4, 5, 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, 7, - 8, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 2, 3, 4, 5, 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, 7, + 8, 9, 1, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, }; static RE_UINT8 re_changes_when_lowercased_stage_3[] = { 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 8, 9, - 6, 10, 6, 6, 11, 6, 6, 6, 6, 6, 6, 6, 12, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 13, 14, 6, 6, 6, 6, 6, 6, 6, 15, - 6, 6, 6, 6, 16, 6, 6, 6, 17, 6, 6, 6, 6, 6, 6, 6, + 7, 6, 6, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 9, 10, + 6, 11, 6, 6, 12, 6, 6, 6, 6, 6, 6, 6, 13, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 14, 15, 6, 6, 6, 6, 6, 6, 6, 16, + 6, 6, 6, 6, 17, 6, 6, 6, 6, 6, 6, 6, 18, 6, 6, 6, + 19, 6, 6, 6, 6, 6, 6, 6, 6, 20, 6, 6, 6, 6, 6, 6, }; static RE_UINT8 re_changes_when_lowercased_stage_4[] = { @@ -5732,11 +6122,13 @@ static RE_UINT8 re_changes_when_lowercased_stage_4[] = { 3, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, 15, 16, 17, 18, 19, 0, 3, 20, 3, 21, 3, 3, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 24, 0, - 3, 3, 3, 3, 25, 3, 3, 3, 26, 27, 28, 29, 27, 30, 31, 32, - 0, 33, 0, 19, 34, 0, 0, 0, 0, 0, 0, 0, 0, 35, 19, 0, - 18, 36, 0, 37, 3, 3, 3, 38, 0, 0, 3, 39, 40, 0, 0, 0, - 0, 41, 3, 42, 43, 44, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 18, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, + 0, 0, 0, 0, 0, 18, 18, 25, 3, 3, 3, 3, 26, 3, 3, 3, + 27, 28, 29, 30, 28, 31, 32, 33, 0, 34, 0, 19, 35, 0, 0, 0, + 0, 0, 0, 0, 0, 36, 19, 0, 18, 37, 0, 38, 3, 3, 3, 39, + 0, 0, 3, 40, 41, 0, 0, 0, 0, 42, 3, 43, 44, 45, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, 18, 46, 0, 0, 0, 47, 48, 0, + 0, 0, 0, 0, 18, 49, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, + 18, 50, 0, 0, 0, 0, 0, 0, }; static RE_UINT8 re_changes_when_lowercased_stage_5[] = { @@ -5746,15 +6138,16 @@ static RE_UINT8 re_changes_when_lowercased_stage_5[] = { 122, 85, 0, 0, 0, 0, 69, 128, 64, 215, 254, 255, 251, 15, 0, 0, 0, 128, 0, 85, 85, 85, 144, 230, 255, 255, 255, 255, 255, 255, 0, 0, 1, 84, 85, 85, 171, 42, 85, 85, 85, 85, 254, 255, 255, 255, 127, 0, - 191, 32, 0, 0, 85, 85, 21, 64, 0, 255, 0, 63, 0, 255, 0, 255, - 0, 63, 0, 170, 0, 255, 0, 0, 0, 255, 0, 31, 0, 31, 0, 15, - 0, 31, 0, 31, 64, 12, 4, 0, 8, 0, 0, 0, 0, 0, 192, 255, - 255, 127, 0, 0, 157, 234, 37, 192, 5, 40, 4, 0, 85, 21, 0, 0, - 85, 85, 85, 5, 84, 85, 84, 85, 85, 85, 0, 106, 85, 40, 69, 85, - 85, 61, 3, 0, 255, 0, 0, 0, + 191, 32, 0, 0, 255, 255, 63, 0, 85, 85, 21, 64, 0, 255, 0, 63, + 0, 255, 0, 255, 0, 63, 0, 170, 0, 255, 0, 0, 0, 255, 0, 31, + 0, 31, 0, 15, 0, 31, 0, 31, 64, 12, 4, 0, 8, 0, 0, 0, + 0, 0, 192, 255, 255, 127, 0, 0, 157, 234, 37, 192, 5, 40, 4, 0, + 85, 21, 0, 0, 85, 85, 85, 5, 84, 85, 84, 85, 85, 85, 0, 106, + 85, 40, 69, 85, 85, 125, 95, 0, 255, 0, 0, 0, 0, 0, 255, 255, + 255, 255, 15, 0, 255, 255, 7, 0, 3, 0, 0, 0, }; -/* Changes_When_Lowercased: 506 bytes. */ +/* Changes_When_Lowercased: 581 bytes. */ RE_UINT32 re_get_changes_when_lowercased(RE_UINT32 ch) { RE_UINT32 code; @@ -5762,9 +6155,9 @@ RE_UINT32 re_get_changes_when_lowercased(RE_UINT32 ch) { RE_UINT32 pos; RE_UINT32 value; - f = ch >> 15; - code = ch ^ (f << 15); - pos = (RE_UINT32)re_changes_when_lowercased_stage_1[f] << 4; + f = ch >> 16; + code = ch ^ (f << 16); + pos = (RE_UINT32)re_changes_when_lowercased_stage_1[f] << 5; f = code >> 11; code ^= f << 11; pos = (RE_UINT32)re_changes_when_lowercased_stage_2[pos + f] << 3; @@ -5783,57 +6176,64 @@ RE_UINT32 re_get_changes_when_lowercased(RE_UINT32 ch) { /* Changes_When_Uppercased. */ static RE_UINT8 re_changes_when_uppercased_stage_1[] = { - 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, + 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, }; static RE_UINT8 re_changes_when_uppercased_stage_2[] = { - 0, 1, 1, 2, 3, 4, 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, 6, - 7, 1, 1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 5, + 6, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 8, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, }; static RE_UINT8 re_changes_when_uppercased_stage_3[] = { 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 7, 8, 9, 6, 10, 6, 6, 11, 6, 6, 6, - 6, 6, 6, 6, 12, 13, 6, 6, 6, 6, 6, 6, 6, 6, 14, 15, - 6, 6, 6, 16, 6, 6, 6, 17, 6, 6, 6, 6, 18, 6, 6, 6, - 19, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 8, 9, 10, 11, + 6, 12, 6, 6, 13, 6, 6, 6, 6, 6, 6, 6, 14, 15, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 16, 17, 6, 6, 6, 18, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 19, 6, 6, 6, 20, + 6, 6, 6, 6, 21, 6, 6, 6, 6, 6, 6, 6, 22, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 23, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 24, 6, 6, 6, 6, 6, 6, }; static RE_UINT8 re_changes_when_uppercased_stage_4[] = { 0, 0, 0, 1, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 5, 13, 14, 15, 16, 0, 0, 0, 0, 0, 17, 18, 19, 20, 21, 22, 0, 23, 24, 5, 25, 5, 26, 5, 5, 27, 0, 28, 29, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, - 5, 5, 5, 5, 31, 5, 5, 5, 32, 33, 34, 35, 24, 36, 37, 38, - 0, 0, 39, 23, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 41, - 0, 23, 42, 43, 5, 5, 5, 44, 24, 45, 0, 0, 0, 0, 0, 0, - 0, 0, 5, 46, 47, 0, 0, 0, 0, 48, 5, 49, 50, 51, 0, 0, - 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 53, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, + 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, + 5, 5, 5, 5, 33, 5, 5, 5, 34, 35, 36, 37, 24, 38, 39, 40, + 0, 0, 41, 23, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 43, + 0, 23, 44, 45, 5, 5, 5, 46, 24, 47, 0, 0, 0, 0, 0, 0, + 0, 0, 5, 48, 49, 0, 0, 0, 0, 50, 5, 51, 52, 53, 0, 0, + 0, 0, 54, 23, 24, 24, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 56, 57, 0, 0, 0, 58, 59, + 0, 0, 0, 0, 0, 0, 24, 60, 0, 0, 0, 0, 0, 0, 24, 0, + 0, 61, 62, 0, 0, 0, 0, 0, }; static RE_UINT8 re_changes_when_uppercased_stage_5[] = { 0, 0, 0, 0, 254, 255, 255, 7, 0, 0, 32, 0, 0, 0, 0, 128, 255, 255, 127, 255, 170, 170, 170, 170, 170, 170, 170, 84, 85, 171, 170, 170, 170, 170, 170, 212, 41, 17, 36, 70, 42, 33, 81, 162, 96, 91, 85, 181, - 170, 170, 45, 170, 168, 170, 10, 144, 133, 170, 223, 26, 107, 155, 38, 32, - 137, 31, 4, 64, 32, 0, 0, 0, 0, 0, 138, 56, 0, 0, 1, 0, + 170, 170, 45, 170, 168, 170, 10, 144, 133, 170, 223, 26, 107, 159, 38, 32, + 137, 31, 4, 96, 32, 0, 0, 0, 0, 0, 138, 56, 0, 0, 1, 0, 0, 240, 255, 255, 255, 127, 227, 170, 170, 170, 47, 9, 0, 0, 255, 255, 255, 255, 255, 255, 2, 168, 170, 170, 84, 213, 170, 170, 170, 170, 0, 0, - 254, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 34, 170, 170, 234, 15, - 255, 0, 63, 0, 255, 0, 255, 0, 63, 0, 255, 0, 255, 0, 255, 63, - 255, 255, 223, 80, 220, 16, 207, 0, 255, 0, 220, 16, 0, 64, 0, 0, - 16, 0, 0, 0, 255, 3, 0, 0, 255, 255, 255, 127, 98, 21, 72, 0, - 10, 80, 8, 0, 191, 32, 0, 0, 170, 42, 0, 0, 170, 170, 170, 10, - 168, 170, 168, 170, 170, 170, 0, 148, 170, 16, 138, 170, 170, 2, 0, 0, - 127, 0, 248, 0, 0, 255, 255, 255, 255, 255, 0, 0, + 254, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 63, 255, 1, 0, 0, + 0, 0, 0, 34, 170, 170, 234, 15, 255, 0, 63, 0, 255, 0, 255, 0, + 63, 0, 255, 0, 255, 0, 255, 63, 255, 255, 223, 80, 220, 16, 207, 0, + 255, 0, 220, 16, 0, 64, 0, 0, 16, 0, 0, 0, 255, 3, 0, 0, + 255, 255, 255, 127, 98, 21, 72, 0, 10, 80, 8, 0, 191, 32, 0, 0, + 170, 42, 0, 0, 170, 170, 170, 10, 168, 170, 168, 170, 170, 170, 0, 148, + 170, 16, 138, 170, 170, 2, 160, 0, 0, 0, 8, 0, 127, 0, 248, 0, + 0, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 255, 255, 255, 255, 15, + 255, 255, 7, 0, 252, 255, 255, 255, 15, 0, 0, 0, }; -/* Changes_When_Uppercased: 550 bytes. */ +/* Changes_When_Uppercased: 661 bytes. */ RE_UINT32 re_get_changes_when_uppercased(RE_UINT32 ch) { RE_UINT32 code; @@ -5841,12 +6241,12 @@ RE_UINT32 re_get_changes_when_uppercased(RE_UINT32 ch) { RE_UINT32 pos; RE_UINT32 value; - f = ch >> 15; - code = ch ^ (f << 15); + f = ch >> 16; + code = ch ^ (f << 16); pos = (RE_UINT32)re_changes_when_uppercased_stage_1[f] << 4; - f = code >> 11; - code ^= f << 11; - pos = (RE_UINT32)re_changes_when_uppercased_stage_2[pos + f] << 3; + f = code >> 12; + code ^= f << 12; + pos = (RE_UINT32)re_changes_when_uppercased_stage_2[pos + f] << 4; f = code >> 8; code ^= f << 8; pos = (RE_UINT32)re_changes_when_uppercased_stage_3[pos + f] << 3; @@ -5862,57 +6262,64 @@ RE_UINT32 re_get_changes_when_uppercased(RE_UINT32 ch) { /* Changes_When_Titlecased. */ static RE_UINT8 re_changes_when_titlecased_stage_1[] = { - 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, + 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, }; static RE_UINT8 re_changes_when_titlecased_stage_2[] = { - 0, 1, 1, 2, 3, 4, 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, 6, - 7, 1, 1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 5, + 6, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 8, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, }; static RE_UINT8 re_changes_when_titlecased_stage_3[] = { 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 7, 8, 9, 6, 10, 6, 6, 11, 6, 6, 6, - 6, 6, 6, 6, 12, 13, 6, 6, 6, 6, 6, 6, 6, 6, 14, 15, - 6, 6, 6, 16, 6, 6, 6, 17, 6, 6, 6, 6, 18, 6, 6, 6, - 19, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 8, 9, 10, 11, + 6, 12, 6, 6, 13, 6, 6, 6, 6, 6, 6, 6, 14, 15, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 16, 17, 6, 6, 6, 18, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 19, 6, 6, 6, 20, + 6, 6, 6, 6, 21, 6, 6, 6, 6, 6, 6, 6, 22, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 23, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 24, 6, 6, 6, 6, 6, 6, }; static RE_UINT8 re_changes_when_titlecased_stage_4[] = { 0, 0, 0, 1, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 5, 13, 14, 15, 16, 0, 0, 0, 0, 0, 17, 18, 19, 20, 21, 22, 0, 23, 24, 5, 25, 5, 26, 5, 5, 27, 0, 28, 29, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, - 5, 5, 5, 5, 31, 5, 5, 5, 32, 33, 34, 35, 33, 36, 37, 38, - 0, 0, 39, 23, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 41, - 0, 23, 42, 43, 5, 5, 5, 44, 24, 45, 0, 0, 0, 0, 0, 0, - 0, 0, 5, 46, 47, 0, 0, 0, 0, 48, 5, 49, 50, 51, 0, 0, - 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 53, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, + 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, + 5, 5, 5, 5, 33, 5, 5, 5, 34, 35, 36, 37, 35, 38, 39, 40, + 0, 0, 41, 23, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 43, + 0, 23, 44, 45, 5, 5, 5, 46, 24, 47, 0, 0, 0, 0, 0, 0, + 0, 0, 5, 48, 49, 0, 0, 0, 0, 50, 5, 51, 52, 53, 0, 0, + 0, 0, 54, 23, 24, 24, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 56, 57, 0, 0, 0, 58, 59, + 0, 0, 0, 0, 0, 0, 24, 60, 0, 0, 0, 0, 0, 0, 24, 0, + 0, 61, 62, 0, 0, 0, 0, 0, }; static RE_UINT8 re_changes_when_titlecased_stage_5[] = { 0, 0, 0, 0, 254, 255, 255, 7, 0, 0, 32, 0, 0, 0, 0, 128, 255, 255, 127, 255, 170, 170, 170, 170, 170, 170, 170, 84, 85, 171, 170, 170, 170, 170, 170, 212, 41, 17, 36, 70, 42, 33, 81, 162, 208, 86, 85, 181, - 170, 170, 43, 170, 168, 170, 10, 144, 133, 170, 223, 26, 107, 155, 38, 32, - 137, 31, 4, 64, 32, 0, 0, 0, 0, 0, 138, 56, 0, 0, 1, 0, + 170, 170, 43, 170, 168, 170, 10, 144, 133, 170, 223, 26, 107, 159, 38, 32, + 137, 31, 4, 96, 32, 0, 0, 0, 0, 0, 138, 56, 0, 0, 1, 0, 0, 240, 255, 255, 255, 127, 227, 170, 170, 170, 47, 9, 0, 0, 255, 255, 255, 255, 255, 255, 2, 168, 170, 170, 84, 213, 170, 170, 170, 170, 0, 0, - 254, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 34, 170, 170, 234, 15, - 255, 0, 63, 0, 255, 0, 255, 0, 63, 0, 255, 0, 255, 0, 255, 63, - 255, 0, 223, 64, 220, 0, 207, 0, 255, 0, 220, 0, 0, 64, 0, 0, - 16, 0, 0, 0, 255, 3, 0, 0, 255, 255, 255, 127, 98, 21, 72, 0, - 10, 80, 8, 0, 191, 32, 0, 0, 170, 42, 0, 0, 170, 170, 170, 10, - 168, 170, 168, 170, 170, 170, 0, 148, 170, 16, 138, 170, 170, 2, 0, 0, - 127, 0, 248, 0, 0, 255, 255, 255, 255, 255, 0, 0, + 254, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 63, 255, 1, 0, 0, + 0, 0, 0, 34, 170, 170, 234, 15, 255, 0, 63, 0, 255, 0, 255, 0, + 63, 0, 255, 0, 255, 0, 255, 63, 255, 0, 223, 64, 220, 0, 207, 0, + 255, 0, 220, 0, 0, 64, 0, 0, 16, 0, 0, 0, 255, 3, 0, 0, + 255, 255, 255, 127, 98, 21, 72, 0, 10, 80, 8, 0, 191, 32, 0, 0, + 170, 42, 0, 0, 170, 170, 170, 10, 168, 170, 168, 170, 170, 170, 0, 148, + 170, 16, 138, 170, 170, 2, 160, 0, 0, 0, 8, 0, 127, 0, 248, 0, + 0, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 255, 255, 255, 255, 15, + 255, 255, 7, 0, 252, 255, 255, 255, 15, 0, 0, 0, }; -/* Changes_When_Titlecased: 550 bytes. */ +/* Changes_When_Titlecased: 661 bytes. */ RE_UINT32 re_get_changes_when_titlecased(RE_UINT32 ch) { RE_UINT32 code; @@ -5920,12 +6327,12 @@ RE_UINT32 re_get_changes_when_titlecased(RE_UINT32 ch) { RE_UINT32 pos; RE_UINT32 value; - f = ch >> 15; - code = ch ^ (f << 15); + f = ch >> 16; + code = ch ^ (f << 16); pos = (RE_UINT32)re_changes_when_titlecased_stage_1[f] << 4; - f = code >> 11; - code ^= f << 11; - pos = (RE_UINT32)re_changes_when_titlecased_stage_2[pos + f] << 3; + f = code >> 12; + code ^= f << 12; + pos = (RE_UINT32)re_changes_when_titlecased_stage_2[pos + f] << 4; f = code >> 8; code ^= f << 8; pos = (RE_UINT32)re_changes_when_titlecased_stage_3[pos + f] << 3; @@ -5941,24 +6348,26 @@ RE_UINT32 re_get_changes_when_titlecased(RE_UINT32 ch) { /* Changes_When_Casefolded. */ static RE_UINT8 re_changes_when_casefolded_stage_1[] = { - 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, + 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, }; static RE_UINT8 re_changes_when_casefolded_stage_2[] = { - 0, 1, 2, 3, 4, 5, 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, 7, - 8, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 5, + 6, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 8, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, }; static RE_UINT8 re_changes_when_casefolded_stage_3[] = { 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 8, 9, - 6, 10, 6, 6, 11, 6, 6, 6, 6, 6, 6, 6, 12, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 13, 14, 6, 6, 6, 15, 6, 6, 6, 16, - 6, 6, 6, 6, 17, 6, 6, 6, 18, 6, 6, 6, 6, 6, 6, 6, + 7, 6, 6, 8, 6, 6, 6, 6, 6, 6, 6, 6, 9, 6, 10, 11, + 6, 12, 6, 6, 13, 6, 6, 6, 6, 6, 6, 6, 14, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 15, 16, 6, 6, 6, 17, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 18, 6, 6, 6, 19, + 6, 6, 6, 6, 20, 6, 6, 6, 6, 6, 6, 6, 21, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 22, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 23, 6, 6, 6, 6, 6, 6, }; static RE_UINT8 re_changes_when_casefolded_stage_4[] = { @@ -5966,12 +6375,14 @@ static RE_UINT8 re_changes_when_casefolded_stage_4[] = { 4, 12, 13, 0, 0, 0, 0, 0, 0, 0, 14, 15, 16, 17, 18, 19, 20, 21, 0, 4, 22, 4, 23, 4, 4, 24, 25, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 27, 0, - 4, 4, 4, 4, 28, 4, 4, 4, 29, 30, 31, 32, 20, 33, 34, 35, - 0, 36, 0, 21, 37, 0, 0, 0, 0, 0, 0, 0, 0, 38, 21, 0, - 20, 39, 0, 40, 4, 4, 4, 41, 0, 0, 4, 42, 43, 0, 0, 0, - 0, 44, 4, 45, 46, 47, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 0, 0, 0, 20, 49, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 20, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 29, 0, 0, 0, + 4, 4, 4, 4, 30, 4, 4, 4, 31, 32, 33, 34, 20, 35, 36, 37, + 0, 38, 0, 21, 39, 0, 0, 0, 0, 0, 0, 0, 0, 40, 21, 0, + 20, 41, 0, 42, 4, 4, 4, 43, 0, 0, 4, 44, 45, 0, 0, 0, + 0, 46, 4, 47, 48, 49, 0, 0, 0, 0, 0, 50, 20, 20, 0, 0, + 51, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 20, 52, 0, 0, 0, 50, 53, 0, 0, 0, 0, 0, 20, 54, 0, 0, + 0, 0, 0, 0, 0, 20, 0, 0, 20, 55, 0, 0, 0, 0, 0, 0, }; static RE_UINT8 re_changes_when_casefolded_stage_5[] = { @@ -5982,15 +6393,16 @@ static RE_UINT8 re_changes_when_casefolded_stage_5[] = { 64, 215, 254, 255, 251, 15, 0, 0, 4, 128, 99, 85, 85, 85, 179, 230, 255, 255, 255, 255, 255, 255, 0, 0, 1, 84, 85, 85, 171, 42, 85, 85, 85, 85, 254, 255, 255, 255, 127, 0, 128, 0, 0, 0, 191, 32, 0, 0, - 85, 85, 21, 76, 0, 255, 0, 63, 0, 255, 0, 255, 0, 63, 0, 170, - 0, 255, 0, 0, 255, 255, 156, 31, 156, 31, 0, 15, 0, 31, 156, 31, - 64, 12, 4, 0, 8, 0, 0, 0, 0, 0, 192, 255, 255, 127, 0, 0, - 157, 234, 37, 192, 5, 40, 4, 0, 85, 21, 0, 0, 85, 85, 85, 5, - 84, 85, 84, 85, 85, 85, 0, 106, 85, 40, 69, 85, 85, 61, 3, 0, - 127, 0, 248, 0, 255, 0, 0, 0, + 0, 0, 0, 63, 255, 1, 0, 0, 85, 85, 21, 76, 0, 255, 0, 63, + 0, 255, 0, 255, 0, 63, 0, 170, 0, 255, 0, 0, 255, 255, 156, 31, + 156, 31, 0, 15, 0, 31, 156, 31, 64, 12, 4, 0, 8, 0, 0, 0, + 0, 0, 192, 255, 255, 127, 0, 0, 157, 234, 37, 192, 5, 40, 4, 0, + 85, 21, 0, 0, 85, 85, 85, 5, 84, 85, 84, 85, 85, 85, 0, 106, + 85, 40, 69, 85, 85, 125, 95, 0, 0, 0, 255, 255, 127, 0, 248, 0, + 255, 0, 0, 0, 255, 255, 15, 0, 255, 255, 7, 0, 3, 0, 0, 0, }; -/* Changes_When_Casefolded: 530 bytes. */ +/* Changes_When_Casefolded: 625 bytes. */ RE_UINT32 re_get_changes_when_casefolded(RE_UINT32 ch) { RE_UINT32 code; @@ -5998,12 +6410,12 @@ RE_UINT32 re_get_changes_when_casefolded(RE_UINT32 ch) { RE_UINT32 pos; RE_UINT32 value; - f = ch >> 15; - code = ch ^ (f << 15); + f = ch >> 16; + code = ch ^ (f << 16); pos = (RE_UINT32)re_changes_when_casefolded_stage_1[f] << 4; - f = code >> 11; - code ^= f << 11; - pos = (RE_UINT32)re_changes_when_casefolded_stage_2[pos + f] << 3; + f = code >> 12; + code ^= f << 12; + pos = (RE_UINT32)re_changes_when_casefolded_stage_2[pos + f] << 4; f = code >> 8; code ^= f << 8; pos = (RE_UINT32)re_changes_when_casefolded_stage_3[pos + f] << 3; @@ -6019,24 +6431,26 @@ RE_UINT32 re_get_changes_when_casefolded(RE_UINT32 ch) { /* Changes_When_Casemapped. */ static RE_UINT8 re_changes_when_casemapped_stage_1[] = { - 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, + 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, }; static RE_UINT8 re_changes_when_casemapped_stage_2[] = { - 0, 1, 2, 3, 4, 5, 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, 7, - 8, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 5, + 6, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 8, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, }; static RE_UINT8 re_changes_when_casemapped_stage_3[] = { 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 8, 9, 10, - 6, 11, 6, 6, 12, 6, 6, 6, 6, 6, 6, 6, 13, 14, 6, 6, - 6, 6, 6, 6, 6, 6, 15, 16, 6, 6, 6, 17, 6, 6, 6, 18, - 6, 6, 6, 6, 19, 6, 6, 6, 20, 6, 6, 6, 6, 6, 6, 6, + 7, 6, 6, 8, 6, 6, 6, 6, 6, 6, 6, 6, 9, 10, 11, 12, + 6, 13, 6, 6, 14, 6, 6, 6, 6, 6, 6, 6, 15, 16, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 17, 18, 6, 6, 6, 19, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 20, 6, 6, 6, 21, + 6, 6, 6, 6, 22, 6, 6, 6, 6, 6, 6, 6, 23, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 24, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 25, 6, 6, 6, 6, 6, 6, }; static RE_UINT8 re_changes_when_casemapped_stage_4[] = { @@ -6044,32 +6458,35 @@ static RE_UINT8 re_changes_when_casemapped_stage_4[] = { 4, 9, 10, 11, 12, 0, 0, 0, 0, 0, 13, 14, 15, 16, 17, 18, 4, 4, 4, 4, 19, 4, 4, 4, 4, 20, 21, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 24, 0, - 0, 0, 0, 25, 0, 0, 0, 0, 4, 4, 4, 4, 26, 4, 4, 4, - 27, 4, 28, 29, 4, 30, 31, 32, 0, 33, 34, 4, 35, 0, 0, 0, - 0, 0, 0, 0, 0, 36, 4, 37, 4, 38, 39, 40, 4, 4, 4, 41, - 4, 24, 0, 0, 0, 0, 0, 0, 0, 0, 4, 42, 43, 0, 0, 0, - 0, 44, 4, 45, 46, 47, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0, 0, 0, 0, 4, 4, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4, 4, 0, + 0, 0, 0, 0, 0, 4, 4, 25, 0, 0, 0, 0, 26, 0, 0, 0, + 0, 0, 0, 27, 0, 0, 0, 0, 4, 4, 4, 4, 28, 4, 4, 4, + 25, 4, 29, 30, 4, 31, 32, 33, 0, 34, 35, 4, 36, 0, 0, 0, + 0, 0, 0, 0, 0, 37, 4, 38, 4, 39, 40, 41, 4, 4, 4, 42, + 4, 24, 0, 0, 0, 0, 0, 0, 0, 0, 4, 43, 44, 0, 0, 0, + 0, 45, 4, 46, 47, 48, 0, 0, 0, 0, 49, 50, 4, 4, 0, 0, + 51, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, + 4, 4, 52, 0, 0, 50, 53, 44, 0, 0, 0, 0, 4, 54, 4, 54, + 0, 0, 0, 0, 0, 4, 4, 0, 4, 4, 55, 0, 0, 0, 0, 0, }; static RE_UINT8 re_changes_when_casemapped_stage_5[] = { 0, 0, 0, 0, 254, 255, 255, 7, 0, 0, 32, 0, 255, 255, 127, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 223, 255, 247, 255, 243, 255, 179, - 240, 255, 255, 255, 253, 255, 15, 252, 255, 255, 223, 26, 107, 155, 38, 32, - 137, 31, 4, 64, 32, 0, 0, 0, 0, 0, 207, 184, 64, 215, 255, 255, + 240, 255, 255, 255, 253, 255, 15, 252, 255, 255, 223, 26, 107, 159, 38, 32, + 137, 31, 4, 96, 32, 0, 0, 0, 0, 0, 207, 184, 64, 215, 255, 255, 251, 255, 255, 255, 255, 255, 227, 255, 255, 255, 191, 239, 3, 252, 255, 255, 255, 255, 254, 255, 255, 255, 127, 0, 254, 255, 255, 255, 255, 0, 0, 0, - 191, 32, 0, 0, 0, 0, 0, 34, 255, 255, 255, 79, 255, 255, 63, 63, - 63, 63, 255, 170, 255, 255, 255, 63, 255, 255, 223, 95, 220, 31, 207, 15, - 255, 31, 220, 31, 64, 12, 4, 0, 0, 64, 0, 0, 24, 0, 0, 0, - 0, 0, 192, 255, 255, 3, 0, 0, 255, 127, 255, 255, 255, 255, 255, 127, - 255, 255, 109, 192, 15, 120, 12, 0, 255, 63, 0, 0, 255, 255, 255, 15, - 252, 255, 252, 255, 255, 255, 0, 254, 255, 56, 207, 255, 255, 63, 3, 0, - 127, 0, 248, 0, 255, 255, 0, 0, + 191, 32, 0, 0, 255, 255, 63, 63, 255, 1, 0, 0, 0, 0, 0, 34, + 255, 255, 255, 79, 63, 63, 255, 170, 255, 255, 255, 63, 255, 255, 223, 95, + 220, 31, 207, 15, 255, 31, 220, 31, 64, 12, 4, 0, 0, 64, 0, 0, + 24, 0, 0, 0, 0, 0, 192, 255, 255, 3, 0, 0, 255, 127, 255, 255, + 255, 255, 255, 127, 255, 255, 109, 192, 15, 120, 12, 0, 255, 63, 0, 0, + 255, 255, 255, 15, 252, 255, 252, 255, 255, 255, 0, 254, 255, 56, 207, 255, + 255, 127, 255, 0, 0, 0, 8, 0, 0, 0, 255, 255, 127, 0, 248, 0, + 255, 255, 0, 0, 255, 255, 15, 255, 255, 255, 7, 0, 15, 0, 0, 0, }; -/* Changes_When_Casemapped: 546 bytes. */ +/* Changes_When_Casemapped: 641 bytes. */ RE_UINT32 re_get_changes_when_casemapped(RE_UINT32 ch) { RE_UINT32 code; @@ -6077,12 +6494,12 @@ RE_UINT32 re_get_changes_when_casemapped(RE_UINT32 ch) { RE_UINT32 pos; RE_UINT32 value; - f = ch >> 15; - code = ch ^ (f << 15); + f = ch >> 16; + code = ch ^ (f << 16); pos = (RE_UINT32)re_changes_when_casemapped_stage_1[f] << 4; - f = code >> 11; - code ^= f << 11; - pos = (RE_UINT32)re_changes_when_casemapped_stage_2[pos + f] << 3; + f = code >> 12; + code ^= f << 12; + pos = (RE_UINT32)re_changes_when_casemapped_stage_2[pos + f] << 4; f = code >> 8; code ^= f << 8; pos = (RE_UINT32)re_changes_when_casemapped_stage_3[pos + f] << 3; @@ -6105,10 +6522,10 @@ static RE_UINT8 re_id_start_stage_1[] = { static RE_UINT8 re_id_start_stage_2[] = { 0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, 10, 11, 7, 7, 7, 7, 12, 13, 13, 13, 13, 14, - 15, 16, 17, 18, 19, 13, 20, 13, 13, 13, 13, 13, 13, 21, 13, 13, - 13, 13, 13, 13, 13, 13, 22, 23, 13, 13, 24, 13, 13, 25, 13, 13, + 15, 16, 17, 18, 19, 13, 20, 13, 21, 13, 13, 13, 13, 22, 7, 7, + 23, 24, 13, 13, 13, 13, 25, 26, 13, 13, 27, 13, 13, 28, 13, 13, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 26, 7, 27, 28, 13, 13, 13, 13, 13, 13, 13, 29, + 7, 7, 7, 7, 29, 7, 30, 31, 7, 32, 13, 13, 13, 13, 13, 33, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, }; @@ -6122,13 +6539,15 @@ static RE_UINT8 re_id_start_stage_3[] = { 1, 1, 1, 1, 38, 1, 39, 40, 41, 42, 43, 44, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 45, 31, 31, 31, 31, 31, 31, 31, 31, 31, 1, 46, 47, 1, 48, 49, 50, 51, 52, 53, 54, 55, 56, 1, 57, - 58, 59, 60, 61, 62, 31, 31, 31, 63, 64, 65, 66, 67, 68, 69, 31, - 70, 31, 71, 31, 31, 31, 31, 31, 1, 1, 1, 72, 73, 31, 31, 31, - 1, 1, 1, 1, 74, 31, 31, 31, 1, 1, 75, 76, 31, 31, 31, 77, - 78, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 79, 31, 31, 31, - 31, 31, 31, 31, 80, 81, 82, 83, 84, 31, 31, 31, 31, 31, 85, 31, - 1, 1, 1, 1, 1, 1, 86, 1, 1, 1, 1, 1, 1, 1, 1, 87, - 88, 31, 31, 31, 31, 31, 31, 31, 1, 1, 88, 31, 31, 31, 31, 31, + 58, 59, 60, 61, 62, 31, 31, 31, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 31, 72, 31, 73, 31, 31, 31, 1, 1, 1, 74, 75, 76, 31, 31, + 1, 1, 1, 1, 77, 31, 31, 31, 31, 31, 31, 31, 1, 1, 78, 31, + 1, 1, 79, 80, 31, 31, 31, 81, 1, 1, 1, 1, 1, 1, 1, 82, + 1, 1, 83, 31, 31, 31, 31, 31, 84, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 85, 31, 31, 31, 31, 31, 31, 31, 86, 87, 88, 89, + 90, 76, 31, 31, 31, 31, 91, 31, 1, 1, 1, 1, 1, 1, 92, 1, + 1, 1, 1, 1, 1, 1, 1, 93, 94, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 95, 31, 1, 1, 96, 31, 31, 31, 31, 31, }; static RE_UINT8 re_id_start_stage_4[] = { @@ -6138,45 +6557,49 @@ static RE_UINT8 re_id_start_stage_4[] = { 0, 4, 18, 19, 4, 4, 20, 21, 22, 23, 24, 4, 4, 25, 26, 27, 28, 29, 30, 0, 0, 31, 0, 0, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 45, 49, 50, 51, 52, 46, 0, - 53, 54, 55, 47, 53, 56, 57, 58, 53, 59, 60, 61, 62, 63, 64, 0, - 14, 65, 64, 0, 66, 67, 68, 0, 69, 0, 70, 71, 72, 0, 0, 0, - 4, 73, 74, 75, 76, 4, 77, 78, 4, 4, 79, 4, 80, 81, 82, 4, - 83, 4, 84, 0, 23, 4, 4, 85, 14, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 86, 1, 4, 4, 87, 88, 89, 89, 90, 4, 91, 92, 0, - 0, 4, 4, 93, 4, 94, 4, 95, 96, 0, 16, 97, 4, 98, 99, 0, - 100, 4, 85, 0, 0, 101, 0, 0, 102, 91, 103, 0, 104, 105, 4, 106, - 4, 107, 108, 109, 0, 0, 0, 110, 4, 4, 4, 4, 4, 4, 0, 0, - 111, 4, 112, 109, 4, 113, 114, 115, 0, 0, 0, 116, 117, 0, 0, 0, - 118, 119, 120, 4, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 122, 96, 4, 4, 4, 4, 123, 4, 77, 4, 124, 100, 125, 125, 0, - 126, 127, 14, 4, 128, 14, 4, 78, 102, 129, 4, 4, 130, 84, 0, 16, - 4, 4, 4, 4, 4, 95, 0, 0, 4, 4, 4, 4, 4, 4, 71, 0, - 4, 4, 4, 4, 71, 0, 16, 109, 131, 132, 4, 133, 109, 4, 4, 23, - 134, 135, 4, 4, 136, 137, 0, 134, 138, 139, 4, 91, 135, 91, 0, 140, - 26, 141, 64, 142, 32, 31, 143, 144, 4, 121, 145, 146, 4, 147, 148, 149, - 150, 151, 78, 152, 0, 0, 4, 139, 4, 4, 4, 4, 4, 153, 154, 155, - 4, 4, 4, 156, 4, 4, 157, 0, 158, 159, 160, 4, 4, 89, 161, 4, - 4, 109, 16, 4, 162, 4, 15, 163, 0, 0, 0, 164, 4, 4, 4, 142, - 0, 1, 1, 165, 4, 96, 166, 0, 167, 168, 169, 0, 4, 4, 4, 84, - 0, 0, 4, 85, 0, 0, 0, 0, 0, 0, 0, 0, 142, 4, 170, 0, - 4, 16, 171, 95, 109, 4, 172, 0, 4, 4, 4, 4, 109, 0, 0, 0, - 4, 173, 4, 107, 0, 0, 0, 0, 4, 100, 95, 15, 0, 0, 0, 0, - 174, 175, 95, 100, 96, 0, 0, 0, 95, 157, 0, 0, 4, 176, 0, 0, - 177, 91, 0, 142, 142, 0, 70, 178, 4, 95, 95, 31, 89, 0, 0, 0, - 4, 4, 121, 0, 0, 0, 0, 0, 104, 93, 0, 0, 104, 23, 16, 121, - 104, 64, 16, 179, 104, 31, 180, 0, 181, 98, 0, 0, 0, 16, 96, 0, - 48, 45, 182, 47, 0, 0, 0, 0, 0, 0, 0, 0, 4, 23, 183, 0, - 0, 0, 0, 0, 4, 130, 0, 0, 4, 23, 184, 0, 4, 18, 0, 0, - 0, 0, 0, 0, 0, 4, 4, 185, 0, 0, 0, 0, 0, 0, 4, 30, - 4, 4, 4, 4, 30, 0, 0, 0, 4, 4, 4, 130, 0, 0, 0, 0, - 4, 130, 0, 0, 0, 0, 0, 0, 4, 30, 96, 0, 0, 0, 16, 186, - 4, 23, 107, 187, 23, 0, 0, 0, 4, 4, 188, 0, 161, 0, 0, 0, - 47, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 189, 190, 0, 0, 0, - 4, 4, 191, 4, 192, 193, 194, 4, 195, 196, 197, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 198, 199, 78, 191, 191, 122, 122, 200, 200, 145, 0, - 4, 4, 4, 4, 4, 4, 178, 0, 194, 201, 202, 203, 204, 205, 0, 0, - 4, 4, 4, 4, 4, 4, 100, 0, 4, 85, 4, 4, 4, 4, 4, 4, - 109, 0, 0, 0, 0, 0, 0, 0, + 53, 54, 55, 56, 57, 58, 59, 60, 53, 61, 62, 63, 64, 65, 66, 0, + 14, 67, 66, 0, 68, 69, 70, 0, 71, 0, 72, 73, 74, 0, 0, 0, + 4, 75, 76, 77, 78, 4, 79, 80, 4, 4, 81, 4, 82, 83, 84, 4, + 85, 4, 86, 0, 23, 4, 4, 87, 14, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 88, 1, 4, 4, 89, 90, 91, 91, 92, 4, 93, 94, 0, + 0, 4, 4, 95, 4, 96, 4, 97, 98, 0, 16, 99, 4, 100, 101, 0, + 102, 4, 103, 0, 0, 104, 0, 0, 105, 93, 106, 0, 107, 108, 4, 109, + 4, 110, 111, 112, 113, 0, 0, 114, 4, 4, 4, 4, 4, 4, 0, 0, + 87, 4, 115, 112, 4, 116, 117, 118, 0, 0, 0, 119, 120, 0, 0, 0, + 121, 122, 123, 4, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 124, 98, 4, 4, 4, 4, 125, 4, 79, 4, 126, 102, 127, 127, 0, + 128, 129, 14, 4, 130, 14, 4, 80, 105, 131, 4, 4, 132, 86, 0, 16, + 4, 4, 4, 4, 4, 97, 0, 0, 4, 4, 4, 4, 4, 4, 97, 0, + 4, 4, 4, 4, 73, 0, 16, 112, 133, 134, 4, 135, 112, 4, 4, 23, + 136, 137, 4, 4, 138, 139, 0, 136, 140, 141, 4, 93, 137, 93, 0, 142, + 26, 143, 66, 144, 32, 145, 146, 147, 4, 113, 148, 149, 4, 150, 151, 152, + 153, 154, 80, 143, 4, 4, 4, 141, 4, 4, 4, 4, 4, 155, 156, 157, + 4, 4, 4, 158, 4, 4, 159, 0, 160, 161, 162, 4, 4, 91, 163, 4, + 4, 112, 16, 4, 164, 4, 15, 165, 0, 0, 0, 166, 4, 4, 4, 144, + 0, 1, 1, 167, 4, 98, 168, 0, 169, 170, 171, 0, 4, 4, 4, 86, + 0, 0, 4, 103, 0, 0, 0, 0, 0, 0, 0, 0, 144, 4, 172, 0, + 4, 16, 173, 97, 112, 4, 174, 0, 4, 4, 4, 4, 112, 16, 175, 157, + 4, 176, 4, 110, 0, 0, 0, 0, 4, 102, 97, 15, 0, 0, 0, 0, + 177, 178, 97, 102, 98, 0, 0, 179, 97, 159, 0, 0, 4, 180, 0, 0, + 181, 93, 0, 144, 144, 0, 72, 182, 4, 97, 97, 145, 91, 0, 0, 0, + 4, 4, 113, 0, 4, 145, 4, 145, 107, 95, 0, 0, 107, 23, 16, 113, + 107, 66, 16, 183, 107, 145, 184, 0, 185, 186, 0, 0, 187, 188, 98, 0, + 48, 45, 189, 56, 0, 0, 0, 0, 4, 103, 190, 0, 4, 23, 191, 0, + 0, 0, 0, 0, 4, 132, 192, 0, 4, 23, 193, 0, 4, 18, 0, 0, + 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 194, + 0, 0, 0, 0, 0, 0, 4, 30, 195, 132, 71, 196, 23, 0, 0, 0, + 4, 4, 4, 4, 159, 0, 0, 0, 4, 4, 4, 132, 4, 4, 4, 4, + 4, 4, 110, 0, 0, 0, 0, 0, 4, 132, 0, 0, 0, 0, 0, 0, + 4, 4, 66, 0, 0, 0, 0, 0, 4, 30, 98, 0, 0, 0, 16, 197, + 4, 23, 110, 198, 23, 0, 0, 0, 4, 4, 199, 0, 163, 0, 0, 71, + 4, 4, 4, 4, 4, 4, 4, 73, 4, 4, 4, 4, 4, 4, 4, 145, + 56, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 200, 201, 0, 0, 0, + 4, 4, 202, 4, 203, 204, 205, 4, 206, 207, 208, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 209, 210, 80, 202, 202, 124, 124, 195, 195, 148, 0, + 4, 4, 4, 4, 4, 4, 182, 0, 205, 211, 212, 213, 214, 215, 0, 0, + 4, 4, 4, 4, 4, 4, 102, 0, 4, 103, 4, 4, 4, 4, 4, 4, + 112, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 56, 0, 0, + 112, 0, 0, 0, 0, 0, 0, 0, }; static RE_UINT8 re_id_start_stage_5[] = { @@ -6187,54 +6610,56 @@ static RE_UINT8 re_id_start_stage_5[] = { 0, 0, 255, 255, 255, 7, 7, 0, 255, 7, 0, 0, 0, 192, 254, 255, 255, 255, 47, 0, 96, 192, 0, 156, 0, 0, 253, 255, 255, 255, 0, 0, 0, 224, 255, 255, 63, 0, 2, 0, 0, 252, 255, 255, 255, 7, 48, 4, - 255, 255, 63, 4, 16, 1, 0, 0, 255, 255, 255, 1, 255, 255, 7, 0, + 255, 255, 63, 4, 16, 1, 0, 0, 255, 255, 255, 1, 255, 255, 223, 63, 240, 255, 255, 255, 255, 255, 255, 35, 0, 0, 1, 255, 3, 0, 254, 255, 225, 159, 249, 255, 255, 253, 197, 35, 0, 64, 0, 176, 3, 0, 3, 0, 224, 135, 249, 255, 255, 253, 109, 3, 0, 0, 0, 94, 0, 0, 28, 0, - 224, 191, 251, 255, 255, 253, 237, 35, 0, 0, 1, 0, 3, 0, 0, 0, + 224, 191, 251, 255, 255, 253, 237, 35, 0, 0, 1, 0, 3, 0, 0, 2, 224, 159, 249, 255, 0, 0, 0, 176, 3, 0, 2, 0, 232, 199, 61, 214, - 24, 199, 255, 3, 224, 223, 253, 255, 255, 253, 255, 35, 0, 0, 0, 3, - 255, 253, 239, 35, 0, 0, 0, 64, 3, 0, 6, 0, 255, 255, 255, 39, - 0, 64, 0, 0, 3, 0, 0, 252, 224, 255, 127, 252, 255, 255, 251, 47, - 127, 0, 0, 0, 255, 255, 13, 0, 150, 37, 240, 254, 174, 236, 13, 32, - 95, 0, 0, 240, 1, 0, 0, 0, 255, 254, 255, 255, 255, 31, 0, 0, - 0, 31, 0, 0, 255, 7, 0, 128, 0, 0, 63, 60, 98, 192, 225, 255, - 3, 64, 0, 0, 191, 32, 255, 255, 255, 255, 255, 247, 255, 61, 127, 61, - 255, 61, 255, 255, 255, 255, 61, 127, 61, 255, 127, 255, 255, 255, 61, 255, - 255, 255, 255, 7, 255, 255, 31, 0, 255, 159, 255, 255, 255, 199, 255, 1, - 255, 223, 3, 0, 255, 255, 3, 0, 255, 223, 1, 0, 255, 255, 15, 0, - 0, 0, 128, 16, 255, 255, 255, 0, 255, 5, 255, 255, 255, 255, 63, 0, - 255, 255, 255, 127, 255, 63, 31, 0, 255, 15, 0, 0, 254, 0, 0, 0, - 255, 255, 127, 0, 128, 0, 0, 0, 224, 255, 255, 255, 224, 15, 0, 0, - 248, 255, 255, 255, 1, 192, 0, 252, 63, 0, 0, 0, 15, 0, 0, 0, - 0, 224, 0, 252, 255, 255, 255, 63, 0, 222, 99, 0, 255, 255, 63, 63, - 63, 63, 255, 170, 255, 255, 223, 95, 220, 31, 207, 15, 255, 31, 220, 31, - 0, 0, 2, 128, 0, 0, 255, 31, 132, 252, 47, 63, 80, 253, 255, 243, - 224, 67, 0, 0, 255, 1, 0, 0, 255, 127, 255, 255, 31, 120, 12, 0, - 255, 128, 0, 0, 127, 127, 127, 127, 224, 0, 0, 0, 254, 3, 62, 31, - 255, 255, 127, 248, 255, 63, 254, 255, 255, 127, 0, 0, 255, 31, 255, 255, - 0, 12, 0, 0, 255, 127, 0, 128, 0, 0, 128, 255, 252, 255, 255, 255, - 255, 121, 255, 255, 255, 63, 3, 0, 187, 247, 255, 255, 7, 0, 0, 0, - 0, 0, 252, 8, 63, 0, 255, 255, 255, 255, 255, 31, 0, 128, 0, 0, - 223, 255, 0, 124, 247, 15, 0, 0, 255, 255, 127, 196, 255, 255, 98, 62, - 5, 0, 0, 56, 255, 7, 28, 0, 126, 126, 126, 0, 127, 127, 255, 255, - 48, 0, 0, 0, 15, 0, 255, 255, 127, 248, 255, 255, 255, 255, 255, 15, - 255, 63, 255, 255, 255, 255, 255, 3, 127, 0, 248, 160, 255, 253, 127, 95, - 219, 255, 255, 255, 0, 0, 248, 255, 255, 255, 252, 255, 0, 0, 255, 15, - 0, 0, 223, 255, 192, 255, 255, 255, 252, 252, 252, 28, 255, 239, 255, 255, - 127, 255, 255, 183, 255, 63, 255, 63, 255, 255, 1, 0, 255, 7, 255, 255, - 15, 255, 62, 0, 255, 0, 255, 255, 63, 253, 255, 255, 255, 255, 191, 145, + 24, 199, 255, 3, 224, 223, 253, 255, 255, 253, 255, 35, 0, 0, 0, 7, + 3, 0, 0, 0, 225, 223, 253, 255, 255, 253, 239, 35, 0, 0, 0, 64, + 3, 0, 6, 0, 255, 255, 255, 39, 0, 64, 112, 128, 3, 0, 0, 252, + 224, 255, 127, 252, 255, 255, 251, 47, 127, 0, 0, 0, 255, 255, 13, 0, + 150, 37, 240, 254, 174, 236, 13, 32, 95, 0, 0, 240, 1, 0, 0, 0, + 255, 254, 255, 255, 255, 31, 0, 0, 0, 31, 0, 0, 255, 7, 0, 128, + 0, 0, 63, 60, 98, 192, 225, 255, 3, 64, 0, 0, 191, 32, 255, 255, + 255, 255, 255, 247, 255, 61, 127, 61, 255, 61, 255, 255, 255, 255, 61, 127, + 61, 255, 127, 255, 255, 255, 61, 255, 255, 255, 255, 7, 255, 255, 63, 63, + 255, 159, 255, 255, 255, 199, 255, 1, 255, 223, 3, 0, 255, 255, 3, 0, + 255, 223, 1, 0, 255, 255, 15, 0, 0, 0, 128, 16, 255, 255, 255, 0, + 255, 5, 255, 255, 255, 255, 63, 0, 255, 255, 255, 127, 255, 63, 31, 0, + 255, 15, 255, 255, 255, 3, 0, 0, 255, 255, 127, 0, 255, 255, 31, 0, + 128, 0, 0, 0, 224, 255, 255, 255, 224, 15, 0, 0, 248, 255, 255, 255, + 1, 192, 0, 252, 63, 0, 0, 0, 15, 0, 0, 0, 0, 224, 0, 252, + 255, 255, 255, 63, 255, 1, 0, 0, 0, 222, 99, 0, 63, 63, 255, 170, + 255, 255, 223, 95, 220, 31, 207, 15, 255, 31, 220, 31, 0, 0, 2, 128, + 0, 0, 255, 31, 132, 252, 47, 63, 80, 253, 255, 243, 224, 67, 0, 0, + 255, 127, 255, 255, 31, 120, 12, 0, 255, 128, 0, 0, 127, 127, 127, 127, + 224, 0, 0, 0, 254, 3, 62, 31, 255, 255, 127, 248, 255, 63, 254, 255, + 255, 127, 0, 0, 255, 31, 255, 255, 0, 12, 0, 0, 255, 127, 0, 128, + 0, 0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255, 255, 127, 255, 0, + 187, 247, 255, 255, 7, 0, 0, 0, 0, 0, 252, 40, 63, 0, 255, 255, + 255, 255, 255, 31, 255, 255, 7, 0, 0, 128, 0, 0, 223, 255, 0, 124, + 247, 15, 0, 0, 255, 255, 127, 196, 255, 255, 98, 62, 5, 0, 0, 56, + 255, 7, 28, 0, 126, 126, 126, 0, 127, 127, 255, 255, 15, 0, 255, 255, + 127, 248, 255, 255, 255, 255, 255, 15, 255, 63, 255, 255, 255, 255, 255, 3, + 127, 0, 248, 160, 255, 253, 127, 95, 219, 255, 255, 255, 0, 0, 248, 255, + 255, 255, 252, 255, 0, 0, 255, 15, 0, 0, 223, 255, 192, 255, 255, 255, + 252, 252, 252, 28, 255, 239, 255, 255, 127, 255, 255, 183, 255, 63, 255, 63, + 255, 255, 1, 0, 255, 7, 255, 255, 15, 255, 62, 0, 255, 255, 15, 255, + 255, 0, 255, 255, 63, 253, 255, 255, 255, 255, 191, 145, 255, 255, 55, 0, 255, 255, 255, 192, 1, 0, 239, 254, 31, 0, 0, 0, 255, 255, 71, 0, - 30, 0, 0, 4, 255, 255, 251, 255, 0, 0, 0, 224, 176, 0, 0, 0, - 16, 0, 0, 0, 0, 0, 0, 128, 255, 63, 0, 0, 248, 255, 255, 224, - 31, 0, 1, 0, 255, 7, 255, 31, 255, 1, 255, 3, 255, 255, 223, 255, - 255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223, - 255, 255, 255, 123, 95, 252, 253, 255, 63, 255, 255, 255, 253, 255, 255, 247, - 255, 253, 255, 255, 150, 254, 247, 10, 132, 234, 150, 170, 150, 247, 247, 94, - 255, 251, 255, 15, 238, 251, 255, 15, + 30, 0, 0, 20, 255, 255, 251, 255, 255, 15, 0, 0, 127, 189, 255, 191, + 255, 1, 255, 255, 0, 0, 1, 224, 128, 7, 0, 0, 176, 0, 0, 0, + 0, 0, 0, 15, 16, 0, 0, 0, 0, 0, 0, 128, 255, 253, 255, 255, + 0, 0, 252, 255, 255, 63, 0, 0, 248, 255, 255, 224, 31, 0, 1, 0, + 255, 7, 255, 31, 255, 1, 255, 3, 255, 255, 223, 255, 255, 255, 255, 223, + 100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123, + 95, 252, 253, 255, 63, 255, 255, 255, 253, 255, 255, 247, 150, 254, 247, 10, + 132, 234, 150, 170, 150, 247, 247, 94, 255, 251, 255, 15, 238, 251, 255, 15, }; -/* ID_Start: 1921 bytes. */ +/* ID_Start: 2057 bytes. */ RE_UINT32 re_get_id_start(RE_UINT32 ch) { RE_UINT32 code; @@ -6271,31 +6696,34 @@ static RE_UINT8 re_id_continue_stage_1[] = { static RE_UINT8 re_id_continue_stage_2[] = { 0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, 10, 11, 7, 7, 7, 7, 12, 13, 13, 13, 13, 14, - 15, 16, 17, 18, 19, 13, 20, 13, 13, 13, 13, 13, 13, 21, 13, 13, - 13, 13, 13, 13, 13, 13, 22, 23, 13, 13, 24, 13, 13, 25, 13, 13, + 15, 16, 17, 18, 19, 13, 20, 13, 21, 13, 13, 13, 13, 22, 7, 7, + 23, 24, 13, 13, 13, 13, 25, 26, 13, 13, 27, 28, 29, 30, 13, 13, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 26, 7, 27, 28, 13, 13, 13, 13, 13, 13, 13, 29, + 7, 7, 7, 7, 31, 7, 32, 33, 7, 34, 13, 13, 13, 13, 13, 35, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 30, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 36, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, }; static RE_UINT8 re_id_continue_stage_3[] = { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 1, 17, 18, 19, 1, 20, 21, 22, 23, 24, 25, 26, 27, 1, 28, - 29, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 33, 31, 31, - 34, 35, 31, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 36, 1, 1, 1, 1, 1, 1, 1, 1, 1, 37, - 1, 1, 1, 1, 38, 1, 39, 40, 41, 42, 43, 44, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 45, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 1, 46, 47, 1, 48, 49, 50, 51, 52, 53, 54, 55, 56, 1, 57, - 58, 59, 60, 61, 62, 31, 31, 31, 63, 64, 65, 66, 67, 68, 69, 31, - 70, 31, 71, 31, 31, 31, 31, 31, 1, 1, 1, 72, 73, 31, 31, 31, - 1, 1, 1, 1, 74, 31, 31, 31, 1, 1, 75, 76, 31, 31, 31, 77, - 78, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 79, 31, 31, 31, - 31, 80, 81, 31, 82, 83, 84, 85, 86, 31, 31, 31, 31, 31, 87, 31, - 1, 1, 1, 1, 1, 1, 88, 1, 1, 1, 1, 1, 1, 1, 1, 89, - 90, 31, 31, 31, 31, 31, 31, 31, 1, 1, 90, 31, 31, 31, 31, 31, - 31, 91, 31, 31, 31, 31, 31, 31, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 1, 17, 18, 19, 1, 20, 21, 22, 23, 24, 25, 26, 27, 1, 28, + 29, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 33, 31, 31, + 34, 35, 31, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 36, 1, 1, 1, 1, 1, 1, 1, 1, 1, 37, + 1, 1, 1, 1, 38, 1, 39, 40, 41, 42, 43, 44, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 45, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 1, 46, 47, 1, 48, 49, 50, 51, 52, 53, 54, 55, 56, 1, 57, + 58, 59, 60, 61, 62, 31, 31, 31, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 31, 72, 31, 73, 31, 31, 31, 1, 1, 1, 74, 75, 76, 31, 31, + 1, 1, 1, 1, 77, 31, 31, 31, 31, 31, 31, 31, 1, 1, 78, 31, + 1, 1, 79, 80, 31, 31, 31, 81, 1, 1, 1, 1, 1, 1, 1, 82, + 1, 1, 83, 31, 31, 31, 31, 31, 84, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 85, 31, 31, 31, 31, 86, 87, 31, 88, 89, 90, 91, + 31, 31, 92, 31, 31, 31, 31, 31, 93, 31, 31, 31, 31, 31, 31, 31, + 94, 95, 31, 31, 31, 31, 96, 31, 1, 1, 1, 1, 1, 1, 97, 1, + 1, 1, 1, 1, 1, 1, 1, 98, 99, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 100, 31, 1, 1, 101, 31, 31, 31, 31, 31, + 31, 102, 31, 31, 31, 31, 31, 31, }; static RE_UINT8 re_id_continue_stage_4[] = { @@ -6303,48 +6731,54 @@ static RE_UINT8 re_id_continue_stage_4[] = { 6, 6, 6, 6, 6, 6, 7, 8, 6, 6, 6, 9, 10, 11, 6, 12, 6, 6, 6, 6, 13, 6, 6, 6, 6, 14, 15, 16, 17, 18, 19, 20, 21, 6, 6, 22, 6, 6, 23, 24, 25, 6, 26, 6, 6, 27, 6, 28, - 6, 29, 30, 0, 0, 31, 0, 32, 6, 6, 6, 33, 34, 35, 36, 37, + 6, 29, 30, 0, 0, 31, 32, 11, 6, 6, 6, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 43, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 45, 56, 57, 58, 59, 56, 60, 61, 62, 63, 64, 65, 66, - 16, 67, 68, 0, 69, 70, 71, 0, 72, 73, 74, 75, 76, 77, 78, 0, - 6, 6, 79, 6, 80, 6, 81, 82, 6, 6, 83, 6, 84, 85, 86, 6, - 87, 6, 60, 88, 89, 6, 6, 90, 16, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 91, 3, 6, 6, 92, 93, 90, 94, 95, 6, 6, 96, 97, - 98, 6, 6, 99, 6, 100, 6, 101, 102, 103, 104, 105, 6, 106, 107, 0, - 30, 6, 102, 108, 109, 110, 0, 0, 6, 6, 111, 112, 6, 6, 6, 94, - 6, 99, 113, 80, 0, 0, 114, 115, 6, 6, 6, 6, 6, 6, 6, 116, - 117, 6, 118, 80, 6, 119, 120, 121, 0, 122, 123, 124, 125, 0, 125, 126, - 127, 128, 129, 6, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 6, 131, 102, 6, 6, 6, 6, 132, 6, 81, 6, 133, 134, 135, 135, 6, - 136, 137, 16, 6, 138, 16, 6, 82, 139, 140, 6, 6, 141, 67, 0, 25, - 6, 6, 6, 6, 6, 101, 0, 0, 6, 6, 6, 6, 6, 6, 142, 0, - 6, 6, 6, 6, 142, 0, 25, 80, 143, 144, 6, 145, 18, 6, 6, 27, - 146, 147, 6, 6, 148, 149, 0, 146, 6, 150, 6, 94, 6, 6, 151, 152, - 6, 153, 94, 77, 6, 6, 154, 102, 6, 134, 155, 156, 6, 6, 157, 158, - 159, 160, 82, 161, 0, 0, 6, 162, 6, 6, 6, 6, 6, 163, 164, 30, - 6, 6, 6, 153, 6, 6, 165, 0, 166, 167, 168, 6, 6, 27, 169, 6, - 6, 80, 25, 6, 170, 6, 150, 171, 89, 172, 173, 174, 6, 6, 6, 77, - 1, 2, 3, 104, 6, 102, 175, 0, 176, 177, 178, 0, 6, 6, 6, 67, - 0, 0, 6, 90, 0, 0, 0, 179, 0, 0, 0, 0, 77, 6, 180, 181, - 6, 25, 100, 67, 80, 6, 182, 0, 6, 6, 6, 6, 80, 97, 0, 0, - 6, 183, 6, 184, 0, 0, 0, 0, 6, 134, 101, 150, 0, 0, 0, 0, - 185, 186, 101, 134, 102, 0, 0, 0, 101, 165, 0, 0, 6, 187, 0, 0, - 188, 189, 0, 77, 77, 0, 74, 190, 6, 101, 101, 31, 27, 0, 0, 0, - 6, 6, 130, 0, 0, 0, 0, 0, 6, 6, 190, 191, 6, 67, 25, 192, - 6, 193, 25, 194, 6, 6, 195, 0, 196, 99, 0, 0, 0, 25, 6, 197, - 46, 43, 198, 199, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 200, 0, - 0, 0, 0, 0, 6, 201, 181, 0, 6, 6, 202, 0, 6, 99, 97, 0, - 0, 0, 0, 0, 0, 6, 6, 203, 0, 0, 0, 0, 0, 0, 6, 204, - 6, 6, 6, 6, 204, 0, 0, 0, 6, 6, 6, 141, 0, 0, 0, 0, - 6, 141, 0, 0, 0, 0, 0, 0, 6, 204, 102, 97, 0, 0, 25, 105, - 6, 134, 205, 206, 89, 0, 0, 0, 6, 6, 207, 102, 208, 0, 0, 0, - 209, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 210, 211, 0, 0, 0, - 0, 0, 0, 212, 213, 214, 0, 0, 0, 0, 215, 0, 0, 0, 0, 0, - 6, 6, 193, 6, 216, 217, 218, 6, 219, 220, 221, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 222, 223, 82, 193, 193, 131, 131, 224, 224, 225, 6, - 6, 6, 6, 6, 6, 6, 226, 0, 218, 227, 228, 229, 230, 231, 0, 0, - 6, 6, 6, 6, 6, 6, 134, 0, 6, 90, 6, 6, 6, 6, 6, 6, - 80, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 6, 6, 89, + 53, 54, 55, 56, 53, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 16, 68, 69, 0, 70, 71, 72, 0, 73, 74, 75, 76, 77, 78, 79, 0, + 6, 6, 80, 6, 81, 6, 82, 83, 6, 6, 84, 6, 85, 86, 87, 6, + 88, 6, 61, 89, 90, 6, 6, 91, 16, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 92, 3, 6, 6, 93, 94, 95, 96, 97, 6, 6, 98, 99, + 100, 6, 6, 101, 6, 102, 6, 103, 104, 105, 106, 107, 6, 108, 109, 0, + 30, 6, 104, 110, 111, 112, 0, 0, 6, 6, 113, 114, 6, 6, 6, 96, + 6, 101, 115, 81, 116, 0, 117, 118, 6, 6, 6, 6, 6, 6, 6, 119, + 91, 6, 120, 81, 6, 121, 122, 123, 0, 124, 125, 126, 127, 0, 127, 128, + 129, 130, 131, 6, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 132, 104, 6, 6, 6, 6, 133, 6, 82, 6, 134, 135, 136, 136, 6, + 137, 138, 16, 6, 139, 16, 6, 83, 140, 141, 6, 6, 142, 68, 0, 25, + 6, 6, 6, 6, 6, 103, 0, 0, 6, 6, 6, 6, 6, 6, 103, 0, + 6, 6, 6, 6, 143, 0, 25, 81, 144, 145, 6, 146, 6, 6, 6, 27, + 147, 148, 6, 6, 149, 150, 0, 147, 6, 151, 6, 96, 6, 6, 152, 153, + 6, 154, 96, 78, 6, 6, 155, 104, 6, 135, 156, 157, 6, 6, 158, 159, + 160, 161, 83, 162, 6, 6, 6, 163, 6, 6, 6, 6, 6, 164, 165, 30, + 6, 6, 6, 154, 6, 6, 166, 0, 167, 168, 169, 6, 6, 27, 170, 6, + 6, 81, 25, 6, 171, 6, 151, 172, 90, 173, 174, 175, 6, 6, 6, 78, + 1, 2, 3, 106, 6, 104, 176, 0, 177, 178, 179, 0, 6, 6, 6, 68, + 0, 0, 6, 95, 0, 0, 0, 180, 0, 0, 0, 0, 78, 6, 181, 182, + 6, 25, 102, 68, 81, 6, 183, 0, 6, 6, 6, 6, 81, 80, 184, 30, + 6, 185, 6, 186, 0, 0, 0, 0, 6, 135, 103, 151, 0, 0, 0, 0, + 187, 188, 103, 135, 104, 0, 0, 189, 103, 166, 0, 0, 6, 190, 0, 0, + 191, 192, 0, 78, 78, 0, 75, 193, 6, 103, 103, 194, 27, 0, 0, 0, + 6, 6, 116, 0, 6, 194, 6, 194, 6, 6, 193, 195, 6, 68, 25, 196, + 6, 197, 25, 198, 6, 6, 199, 0, 200, 201, 0, 0, 202, 203, 6, 204, + 34, 43, 205, 206, 0, 0, 0, 0, 6, 6, 204, 0, 6, 6, 207, 0, + 0, 0, 0, 0, 6, 208, 209, 0, 6, 6, 210, 0, 6, 101, 99, 0, + 211, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 212, + 0, 0, 0, 0, 0, 0, 6, 213, 214, 5, 215, 216, 171, 217, 0, 0, + 6, 6, 6, 6, 166, 0, 0, 0, 6, 6, 6, 142, 6, 6, 6, 6, + 6, 6, 186, 0, 0, 0, 0, 0, 6, 142, 0, 0, 0, 0, 0, 0, + 6, 6, 193, 0, 0, 0, 0, 0, 6, 213, 104, 99, 0, 0, 25, 107, + 6, 135, 218, 219, 90, 0, 0, 0, 6, 6, 220, 104, 221, 0, 0, 182, + 6, 6, 6, 6, 6, 6, 6, 143, 6, 6, 6, 6, 6, 6, 6, 194, + 222, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 223, 224, 0, 0, 0, + 0, 0, 0, 225, 226, 227, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, + 6, 6, 197, 6, 229, 230, 231, 6, 232, 233, 234, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 235, 236, 83, 197, 197, 132, 132, 214, 214, 237, 6, + 6, 238, 6, 239, 240, 241, 0, 0, 242, 243, 0, 0, 0, 0, 0, 0, + 6, 6, 6, 6, 6, 6, 244, 0, 6, 6, 204, 0, 0, 0, 0, 0, + 231, 245, 246, 247, 248, 249, 0, 0, 6, 6, 6, 6, 6, 6, 135, 0, + 6, 95, 6, 6, 6, 6, 6, 6, 81, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 222, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, + 6, 6, 6, 6, 6, 6, 6, 90, }; static RE_UINT8 re_id_continue_stage_5[] = { @@ -6355,60 +6789,65 @@ static RE_UINT8 re_id_continue_stage_5[] = { 254, 255, 255, 255, 255, 0, 254, 255, 255, 255, 255, 191, 182, 0, 255, 255, 255, 7, 7, 0, 0, 0, 255, 7, 255, 195, 255, 255, 255, 255, 239, 159, 255, 253, 255, 159, 0, 0, 255, 255, 255, 231, 255, 255, 255, 255, 3, 0, - 255, 255, 63, 4, 255, 63, 0, 0, 255, 255, 255, 15, 255, 255, 7, 0, - 240, 255, 255, 255, 207, 255, 254, 255, 239, 159, 249, 255, 255, 253, 197, 243, + 255, 255, 63, 4, 255, 63, 0, 0, 255, 255, 255, 15, 255, 255, 223, 63, + 0, 0, 240, 255, 207, 255, 254, 255, 239, 159, 249, 255, 255, 253, 197, 243, 159, 121, 128, 176, 207, 255, 3, 0, 238, 135, 249, 255, 255, 253, 109, 211, 135, 57, 2, 94, 192, 255, 63, 0, 238, 191, 251, 255, 255, 253, 237, 243, - 191, 59, 1, 0, 207, 255, 0, 0, 238, 159, 249, 255, 159, 57, 192, 176, + 191, 59, 1, 0, 207, 255, 0, 2, 238, 159, 249, 255, 159, 57, 192, 176, 207, 255, 2, 0, 236, 199, 61, 214, 24, 199, 255, 195, 199, 61, 129, 0, - 192, 255, 0, 0, 239, 223, 253, 255, 255, 253, 255, 227, 223, 61, 96, 3, - 238, 223, 253, 255, 255, 253, 239, 243, 223, 61, 96, 64, 207, 255, 6, 0, - 255, 255, 255, 231, 223, 125, 128, 0, 207, 255, 0, 252, 236, 255, 127, 252, - 255, 255, 251, 47, 127, 132, 95, 255, 192, 255, 12, 0, 255, 255, 255, 7, - 255, 127, 255, 3, 150, 37, 240, 254, 174, 236, 255, 59, 95, 63, 255, 243, - 1, 0, 0, 3, 255, 3, 160, 194, 255, 254, 255, 255, 255, 31, 254, 255, - 223, 255, 255, 254, 255, 255, 255, 31, 64, 0, 0, 0, 255, 3, 255, 255, - 255, 255, 255, 63, 191, 32, 255, 255, 255, 255, 255, 247, 255, 61, 127, 61, - 255, 61, 255, 255, 255, 255, 61, 127, 61, 255, 127, 255, 255, 255, 61, 255, - 0, 254, 3, 0, 255, 255, 0, 0, 255, 255, 31, 0, 255, 159, 255, 255, - 255, 199, 255, 1, 255, 223, 31, 0, 255, 255, 15, 0, 255, 223, 13, 0, - 255, 255, 143, 48, 255, 3, 0, 0, 0, 56, 255, 3, 255, 255, 255, 0, - 255, 7, 255, 255, 255, 255, 63, 0, 255, 255, 255, 127, 255, 15, 255, 15, - 192, 255, 255, 255, 255, 63, 31, 0, 255, 15, 255, 255, 255, 3, 255, 7, - 255, 255, 255, 159, 255, 3, 255, 3, 128, 0, 255, 63, 255, 15, 255, 3, - 0, 248, 15, 0, 255, 227, 255, 255, 0, 0, 247, 255, 255, 255, 127, 3, - 255, 255, 63, 240, 255, 255, 63, 63, 63, 63, 255, 170, 255, 255, 223, 95, - 220, 31, 207, 15, 255, 31, 220, 31, 0, 0, 0, 128, 1, 0, 16, 0, - 0, 0, 2, 128, 0, 0, 255, 31, 226, 255, 1, 0, 132, 252, 47, 63, - 80, 253, 255, 243, 224, 67, 0, 0, 255, 1, 0, 0, 255, 127, 255, 255, - 31, 248, 15, 0, 255, 128, 0, 128, 255, 255, 127, 0, 127, 127, 127, 127, - 224, 0, 0, 0, 254, 255, 62, 31, 255, 255, 127, 254, 224, 255, 255, 255, - 255, 63, 254, 255, 255, 127, 0, 0, 255, 31, 0, 0, 255, 31, 255, 255, - 255, 15, 0, 0, 255, 255, 240, 191, 0, 0, 128, 255, 252, 255, 255, 255, - 255, 121, 255, 255, 255, 63, 3, 0, 255, 0, 0, 0, 31, 0, 255, 3, - 255, 255, 255, 8, 255, 63, 255, 255, 1, 128, 255, 3, 255, 63, 255, 3, - 255, 255, 127, 252, 7, 0, 0, 56, 255, 255, 124, 0, 126, 126, 126, 0, - 127, 127, 255, 255, 48, 0, 0, 0, 255, 55, 255, 3, 15, 0, 255, 255, - 127, 248, 255, 255, 255, 255, 255, 3, 127, 0, 248, 224, 255, 253, 127, 95, - 219, 255, 255, 255, 0, 0, 248, 255, 255, 255, 252, 255, 0, 0, 255, 15, - 255, 63, 24, 0, 0, 224, 0, 0, 0, 0, 223, 255, 252, 252, 252, 28, - 255, 239, 255, 255, 127, 255, 255, 183, 255, 63, 255, 63, 0, 0, 0, 32, - 255, 255, 1, 0, 1, 0, 0, 0, 15, 255, 62, 0, 255, 0, 255, 255, - 15, 0, 0, 0, 63, 253, 255, 255, 255, 255, 191, 145, 255, 255, 255, 192, - 111, 240, 239, 254, 255, 255, 15, 135, 127, 0, 0, 0, 192, 255, 0, 128, - 255, 1, 255, 3, 255, 255, 223, 255, 255, 255, 79, 0, 31, 0, 255, 7, - 255, 255, 251, 255, 255, 7, 255, 3, 159, 57, 128, 224, 207, 31, 31, 0, - 191, 0, 255, 3, 255, 255, 63, 255, 17, 0, 255, 3, 255, 3, 0, 128, - 255, 255, 255, 1, 15, 0, 255, 3, 248, 255, 255, 224, 31, 0, 255, 255, - 0, 128, 255, 255, 3, 0, 0, 0, 255, 7, 255, 31, 255, 1, 255, 99, - 224, 227, 7, 248, 231, 15, 0, 0, 0, 60, 0, 0, 28, 0, 0, 0, - 255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223, - 255, 255, 255, 123, 95, 252, 253, 255, 63, 255, 255, 255, 253, 255, 255, 247, - 255, 253, 255, 255, 247, 207, 255, 255, 31, 0, 127, 0, 150, 254, 247, 10, - 132, 234, 150, 170, 150, 247, 247, 94, 255, 251, 255, 15, 238, 251, 255, 15, + 192, 255, 0, 0, 239, 223, 253, 255, 255, 253, 255, 227, 223, 61, 96, 7, + 207, 255, 0, 0, 255, 253, 239, 243, 223, 61, 96, 64, 207, 255, 6, 0, + 238, 223, 253, 255, 255, 255, 255, 231, 223, 125, 240, 128, 207, 255, 0, 252, + 236, 255, 127, 252, 255, 255, 251, 47, 127, 132, 95, 255, 192, 255, 12, 0, + 255, 255, 255, 7, 255, 127, 255, 3, 150, 37, 240, 254, 174, 236, 255, 59, + 95, 63, 255, 243, 1, 0, 0, 3, 255, 3, 160, 194, 255, 254, 255, 255, + 255, 31, 254, 255, 223, 255, 255, 254, 255, 255, 255, 31, 64, 0, 0, 0, + 255, 3, 255, 255, 255, 255, 255, 63, 191, 32, 255, 255, 255, 255, 255, 247, + 255, 61, 127, 61, 255, 61, 255, 255, 255, 255, 61, 127, 61, 255, 127, 255, + 255, 255, 61, 255, 0, 254, 3, 0, 255, 255, 0, 0, 255, 255, 63, 63, + 255, 159, 255, 255, 255, 199, 255, 1, 255, 223, 31, 0, 255, 255, 31, 0, + 255, 255, 15, 0, 255, 223, 13, 0, 255, 255, 143, 48, 255, 3, 0, 0, + 0, 56, 255, 3, 255, 255, 255, 0, 255, 7, 255, 255, 255, 255, 63, 0, + 255, 255, 255, 127, 255, 15, 255, 15, 192, 255, 255, 255, 255, 63, 31, 0, + 255, 15, 255, 255, 255, 3, 255, 7, 255, 255, 255, 159, 255, 3, 255, 3, + 128, 0, 255, 63, 255, 15, 255, 3, 0, 248, 15, 0, 255, 227, 255, 255, + 255, 1, 0, 0, 0, 0, 247, 255, 255, 255, 127, 3, 255, 255, 63, 248, + 63, 63, 255, 170, 255, 255, 223, 95, 220, 31, 207, 15, 255, 31, 220, 31, + 0, 0, 0, 128, 1, 0, 16, 0, 0, 0, 2, 128, 0, 0, 255, 31, + 226, 255, 1, 0, 132, 252, 47, 63, 80, 253, 255, 243, 224, 67, 0, 0, + 255, 127, 255, 255, 31, 248, 15, 0, 255, 128, 0, 128, 255, 255, 127, 0, + 127, 127, 127, 127, 224, 0, 0, 0, 254, 255, 62, 31, 255, 255, 127, 254, + 224, 255, 255, 255, 255, 63, 254, 255, 255, 127, 0, 0, 255, 31, 0, 0, + 255, 31, 255, 255, 255, 15, 0, 0, 255, 255, 240, 191, 0, 0, 128, 255, + 252, 255, 255, 255, 255, 249, 255, 255, 255, 127, 255, 0, 255, 0, 0, 0, + 63, 0, 255, 3, 255, 255, 255, 40, 255, 63, 255, 255, 1, 128, 255, 3, + 255, 63, 255, 3, 255, 255, 127, 252, 7, 0, 0, 56, 255, 255, 124, 0, + 126, 126, 126, 0, 127, 127, 255, 255, 63, 0, 255, 255, 255, 55, 255, 3, + 15, 0, 255, 255, 127, 248, 255, 255, 255, 255, 255, 3, 127, 0, 248, 224, + 255, 253, 127, 95, 219, 255, 255, 255, 0, 0, 248, 255, 255, 255, 252, 255, + 0, 0, 255, 15, 255, 255, 24, 0, 0, 224, 0, 0, 0, 0, 223, 255, + 252, 252, 252, 28, 255, 239, 255, 255, 127, 255, 255, 183, 255, 63, 255, 63, + 0, 0, 0, 32, 255, 255, 1, 0, 1, 0, 0, 0, 15, 255, 62, 0, + 255, 255, 15, 255, 255, 0, 255, 255, 15, 0, 0, 0, 63, 253, 255, 255, + 255, 255, 191, 145, 255, 255, 55, 0, 255, 255, 255, 192, 111, 240, 239, 254, + 255, 255, 15, 135, 127, 0, 0, 0, 255, 255, 7, 0, 192, 255, 0, 128, + 255, 1, 255, 3, 255, 255, 223, 255, 255, 255, 79, 0, 31, 28, 255, 23, + 255, 255, 251, 255, 255, 255, 255, 64, 127, 189, 255, 191, 255, 1, 255, 255, + 255, 7, 255, 3, 159, 57, 129, 224, 207, 31, 31, 0, 191, 0, 255, 3, + 255, 255, 63, 255, 1, 0, 0, 63, 17, 0, 255, 3, 255, 255, 255, 227, + 255, 3, 0, 128, 255, 255, 255, 1, 255, 253, 255, 255, 1, 0, 255, 3, + 0, 0, 252, 255, 255, 254, 127, 0, 15, 0, 255, 3, 248, 255, 255, 224, + 31, 0, 255, 255, 0, 128, 255, 255, 3, 0, 0, 0, 255, 7, 255, 31, + 255, 1, 255, 99, 224, 227, 7, 248, 231, 15, 0, 0, 0, 60, 0, 0, + 28, 0, 0, 0, 255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255, + 191, 231, 223, 223, 255, 255, 255, 123, 95, 252, 253, 255, 63, 255, 255, 255, + 253, 255, 255, 247, 247, 207, 255, 255, 255, 255, 127, 248, 255, 31, 32, 0, + 16, 0, 0, 248, 254, 255, 0, 0, 127, 255, 255, 249, 219, 7, 0, 0, + 31, 0, 127, 0, 150, 254, 247, 10, 132, 234, 150, 170, 150, 247, 247, 94, + 255, 251, 255, 15, 238, 251, 255, 15, }; -/* ID_Continue: 2074 bytes. */ +/* ID_Continue: 2282 bytes. */ RE_UINT32 re_get_id_continue(RE_UINT32 ch) { RE_UINT32 code; @@ -6444,10 +6883,10 @@ static RE_UINT8 re_xid_start_stage_1[] = { static RE_UINT8 re_xid_start_stage_2[] = { 0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, 10, 11, 7, 7, 7, 7, 12, 13, 13, 13, 13, 14, - 15, 16, 17, 18, 19, 13, 20, 13, 13, 13, 13, 13, 13, 21, 13, 13, - 13, 13, 13, 13, 13, 13, 22, 23, 13, 13, 24, 13, 13, 25, 13, 13, + 15, 16, 17, 18, 19, 13, 20, 13, 21, 13, 13, 13, 13, 22, 7, 7, + 23, 24, 13, 13, 13, 13, 25, 26, 13, 13, 27, 13, 13, 28, 13, 13, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 26, 7, 27, 28, 13, 13, 13, 13, 13, 13, 13, 29, + 7, 7, 7, 7, 29, 7, 30, 31, 7, 32, 13, 13, 13, 13, 13, 33, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, }; @@ -6461,13 +6900,15 @@ static RE_UINT8 re_xid_start_stage_3[] = { 1, 1, 1, 1, 38, 1, 39, 40, 41, 42, 43, 44, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 45, 31, 31, 31, 31, 31, 31, 31, 31, 31, 1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 1, 58, - 59, 60, 61, 62, 63, 31, 31, 31, 64, 65, 66, 67, 68, 69, 70, 31, - 71, 31, 72, 31, 31, 31, 31, 31, 1, 1, 1, 73, 74, 31, 31, 31, - 1, 1, 1, 1, 75, 31, 31, 31, 1, 1, 76, 77, 31, 31, 31, 78, - 79, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 80, 31, 31, 31, - 31, 31, 31, 31, 81, 82, 83, 84, 85, 31, 31, 31, 31, 31, 86, 31, - 1, 1, 1, 1, 1, 1, 87, 1, 1, 1, 1, 1, 1, 1, 1, 88, - 89, 31, 31, 31, 31, 31, 31, 31, 1, 1, 89, 31, 31, 31, 31, 31, + 59, 60, 61, 62, 63, 31, 31, 31, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 31, 73, 31, 74, 31, 31, 31, 1, 1, 1, 75, 76, 77, 31, 31, + 1, 1, 1, 1, 78, 31, 31, 31, 31, 31, 31, 31, 1, 1, 79, 31, + 1, 1, 80, 81, 31, 31, 31, 82, 1, 1, 1, 1, 1, 1, 1, 83, + 1, 1, 84, 31, 31, 31, 31, 31, 85, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 86, 31, 31, 31, 31, 31, 31, 31, 87, 88, 89, 90, + 91, 77, 31, 31, 31, 31, 92, 31, 1, 1, 1, 1, 1, 1, 93, 1, + 1, 1, 1, 1, 1, 1, 1, 94, 95, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 96, 31, 1, 1, 97, 31, 31, 31, 31, 31, }; static RE_UINT8 re_xid_start_stage_4[] = { @@ -6477,45 +6918,49 @@ static RE_UINT8 re_xid_start_stage_4[] = { 0, 4, 18, 19, 4, 4, 20, 21, 22, 23, 24, 4, 4, 25, 26, 27, 28, 29, 30, 0, 0, 31, 0, 0, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 45, 49, 50, 51, 52, 46, 0, - 53, 54, 55, 47, 53, 56, 57, 58, 53, 59, 60, 61, 62, 63, 64, 0, - 14, 65, 64, 0, 66, 67, 68, 0, 69, 0, 70, 71, 72, 0, 0, 0, - 4, 73, 74, 75, 76, 4, 77, 78, 4, 4, 79, 4, 80, 81, 82, 4, - 83, 4, 84, 0, 23, 4, 4, 85, 14, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 86, 1, 4, 4, 87, 88, 89, 89, 90, 4, 91, 92, 0, - 0, 4, 4, 93, 4, 94, 4, 95, 96, 0, 16, 97, 4, 98, 99, 0, - 100, 4, 85, 0, 0, 101, 0, 0, 102, 91, 103, 0, 104, 105, 4, 106, - 4, 107, 108, 109, 0, 0, 0, 110, 4, 4, 4, 4, 4, 4, 0, 0, - 111, 4, 112, 109, 4, 113, 114, 115, 0, 0, 0, 116, 117, 0, 0, 0, - 118, 119, 120, 4, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 122, 96, 4, 4, 4, 4, 123, 4, 77, 4, 124, 100, 125, 125, 0, - 126, 127, 14, 4, 128, 14, 4, 78, 102, 129, 4, 4, 130, 84, 0, 16, - 4, 4, 4, 4, 4, 95, 0, 0, 4, 4, 4, 4, 4, 4, 71, 0, - 4, 4, 4, 4, 71, 0, 16, 109, 131, 132, 4, 133, 109, 4, 4, 23, - 134, 135, 4, 4, 136, 137, 0, 134, 138, 139, 4, 91, 135, 91, 0, 140, - 26, 141, 64, 142, 32, 31, 143, 144, 4, 121, 145, 146, 4, 147, 148, 149, - 150, 151, 78, 152, 0, 0, 4, 139, 4, 4, 4, 4, 4, 153, 154, 155, - 4, 4, 4, 156, 4, 4, 157, 0, 158, 159, 160, 4, 4, 89, 161, 4, - 4, 4, 109, 32, 4, 4, 4, 4, 4, 109, 16, 4, 162, 4, 15, 163, - 0, 0, 0, 164, 4, 4, 4, 142, 0, 1, 1, 165, 109, 96, 166, 0, - 167, 168, 169, 0, 4, 4, 4, 84, 0, 0, 4, 85, 0, 0, 0, 0, - 0, 0, 0, 0, 142, 4, 170, 0, 4, 16, 171, 95, 109, 4, 172, 0, - 4, 4, 4, 4, 109, 0, 0, 0, 4, 173, 4, 107, 0, 0, 0, 0, - 4, 100, 95, 15, 0, 0, 0, 0, 174, 175, 95, 100, 96, 0, 0, 0, - 95, 157, 0, 0, 4, 176, 0, 0, 177, 91, 0, 142, 142, 0, 70, 178, - 4, 95, 95, 31, 89, 0, 0, 0, 4, 4, 121, 0, 0, 0, 0, 0, - 104, 93, 0, 0, 104, 23, 16, 121, 104, 64, 16, 179, 104, 31, 180, 0, - 181, 98, 0, 0, 0, 16, 96, 0, 48, 45, 182, 47, 0, 0, 0, 0, - 0, 0, 0, 0, 4, 23, 183, 0, 0, 0, 0, 0, 4, 130, 0, 0, - 4, 23, 184, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 4, 4, 185, - 0, 0, 0, 0, 0, 0, 4, 30, 4, 4, 4, 4, 30, 0, 0, 0, - 4, 4, 4, 130, 0, 0, 0, 0, 4, 130, 0, 0, 0, 0, 0, 0, - 4, 30, 96, 0, 0, 0, 16, 186, 4, 23, 107, 187, 23, 0, 0, 0, - 4, 4, 188, 0, 161, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, - 4, 4, 4, 189, 190, 0, 0, 0, 4, 4, 191, 4, 192, 193, 194, 4, - 195, 196, 197, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 198, 199, 78, - 191, 191, 122, 122, 200, 200, 145, 0, 4, 4, 4, 4, 4, 4, 178, 0, - 194, 201, 202, 203, 204, 205, 0, 0, 4, 4, 4, 4, 4, 4, 100, 0, - 4, 85, 4, 4, 4, 4, 4, 4, 109, 0, 0, 0, 0, 0, 0, 0, + 53, 54, 55, 56, 57, 58, 59, 60, 53, 61, 62, 63, 64, 65, 66, 0, + 14, 67, 66, 0, 68, 69, 70, 0, 71, 0, 72, 73, 74, 0, 0, 0, + 4, 75, 76, 77, 78, 4, 79, 80, 4, 4, 81, 4, 82, 83, 84, 4, + 85, 4, 86, 0, 23, 4, 4, 87, 14, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 88, 1, 4, 4, 89, 90, 91, 91, 92, 4, 93, 94, 0, + 0, 4, 4, 95, 4, 96, 4, 97, 98, 0, 16, 99, 4, 100, 101, 0, + 102, 4, 103, 0, 0, 104, 0, 0, 105, 93, 106, 0, 107, 108, 4, 109, + 4, 110, 111, 112, 113, 0, 0, 114, 4, 4, 4, 4, 4, 4, 0, 0, + 87, 4, 115, 112, 4, 116, 117, 118, 0, 0, 0, 119, 120, 0, 0, 0, + 121, 122, 123, 4, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 124, 98, 4, 4, 4, 4, 125, 4, 79, 4, 126, 102, 127, 127, 0, + 128, 129, 14, 4, 130, 14, 4, 80, 105, 131, 4, 4, 132, 86, 0, 16, + 4, 4, 4, 4, 4, 97, 0, 0, 4, 4, 4, 4, 4, 4, 97, 0, + 4, 4, 4, 4, 73, 0, 16, 112, 133, 134, 4, 135, 112, 4, 4, 23, + 136, 137, 4, 4, 138, 139, 0, 136, 140, 141, 4, 93, 137, 93, 0, 142, + 26, 143, 66, 144, 32, 145, 146, 147, 4, 113, 148, 149, 4, 150, 151, 152, + 153, 154, 80, 143, 4, 4, 4, 141, 4, 4, 4, 4, 4, 155, 156, 157, + 4, 4, 4, 158, 4, 4, 159, 0, 160, 161, 162, 4, 4, 91, 163, 4, + 4, 4, 112, 32, 4, 4, 4, 4, 4, 112, 16, 4, 164, 4, 15, 165, + 0, 0, 0, 166, 4, 4, 4, 144, 0, 1, 1, 167, 112, 98, 168, 0, + 169, 170, 171, 0, 4, 4, 4, 86, 0, 0, 4, 103, 0, 0, 0, 0, + 0, 0, 0, 0, 144, 4, 172, 0, 4, 16, 173, 97, 112, 4, 174, 0, + 4, 4, 4, 4, 112, 16, 175, 157, 4, 176, 4, 110, 0, 0, 0, 0, + 4, 102, 97, 15, 0, 0, 0, 0, 177, 178, 97, 102, 98, 0, 0, 179, + 97, 159, 0, 0, 4, 180, 0, 0, 181, 93, 0, 144, 144, 0, 72, 182, + 4, 97, 97, 145, 91, 0, 0, 0, 4, 4, 113, 0, 4, 145, 4, 145, + 107, 95, 0, 0, 107, 23, 16, 113, 107, 66, 16, 183, 107, 145, 184, 0, + 185, 186, 0, 0, 187, 188, 98, 0, 48, 45, 189, 56, 0, 0, 0, 0, + 4, 103, 190, 0, 4, 23, 191, 0, 0, 0, 0, 0, 4, 132, 192, 0, + 4, 23, 193, 0, 4, 18, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 4, 194, 0, 0, 0, 0, 0, 0, 4, 30, + 195, 132, 71, 196, 23, 0, 0, 0, 4, 4, 4, 4, 159, 0, 0, 0, + 4, 4, 4, 132, 4, 4, 4, 4, 4, 4, 110, 0, 0, 0, 0, 0, + 4, 132, 0, 0, 0, 0, 0, 0, 4, 4, 66, 0, 0, 0, 0, 0, + 4, 30, 98, 0, 0, 0, 16, 197, 4, 23, 110, 198, 23, 0, 0, 0, + 4, 4, 199, 0, 163, 0, 0, 71, 4, 4, 4, 4, 4, 4, 4, 73, + 4, 4, 4, 4, 4, 4, 4, 145, 56, 0, 0, 0, 0, 0, 0, 0, + 4, 4, 4, 200, 201, 0, 0, 0, 4, 4, 202, 4, 203, 204, 205, 4, + 206, 207, 208, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 209, 210, 80, + 202, 202, 124, 124, 195, 195, 148, 0, 4, 4, 4, 4, 4, 4, 182, 0, + 205, 211, 212, 213, 214, 215, 0, 0, 4, 4, 4, 4, 4, 4, 102, 0, + 4, 103, 4, 4, 4, 4, 4, 4, 112, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 56, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, }; static RE_UINT8 re_xid_start_stage_5[] = { @@ -6526,54 +6971,56 @@ static RE_UINT8 re_xid_start_stage_5[] = { 0, 0, 255, 255, 255, 7, 7, 0, 255, 7, 0, 0, 0, 192, 254, 255, 255, 255, 47, 0, 96, 192, 0, 156, 0, 0, 253, 255, 255, 255, 0, 0, 0, 224, 255, 255, 63, 0, 2, 0, 0, 252, 255, 255, 255, 7, 48, 4, - 255, 255, 63, 4, 16, 1, 0, 0, 255, 255, 255, 1, 255, 255, 7, 0, + 255, 255, 63, 4, 16, 1, 0, 0, 255, 255, 255, 1, 255, 255, 223, 63, 240, 255, 255, 255, 255, 255, 255, 35, 0, 0, 1, 255, 3, 0, 254, 255, 225, 159, 249, 255, 255, 253, 197, 35, 0, 64, 0, 176, 3, 0, 3, 0, 224, 135, 249, 255, 255, 253, 109, 3, 0, 0, 0, 94, 0, 0, 28, 0, - 224, 191, 251, 255, 255, 253, 237, 35, 0, 0, 1, 0, 3, 0, 0, 0, + 224, 191, 251, 255, 255, 253, 237, 35, 0, 0, 1, 0, 3, 0, 0, 2, 224, 159, 249, 255, 0, 0, 0, 176, 3, 0, 2, 0, 232, 199, 61, 214, - 24, 199, 255, 3, 224, 223, 253, 255, 255, 253, 255, 35, 0, 0, 0, 3, - 255, 253, 239, 35, 0, 0, 0, 64, 3, 0, 6, 0, 255, 255, 255, 39, - 0, 64, 0, 0, 3, 0, 0, 252, 224, 255, 127, 252, 255, 255, 251, 47, - 127, 0, 0, 0, 255, 255, 5, 0, 150, 37, 240, 254, 174, 236, 5, 32, - 95, 0, 0, 240, 1, 0, 0, 0, 255, 254, 255, 255, 255, 31, 0, 0, - 0, 31, 0, 0, 255, 7, 0, 128, 0, 0, 63, 60, 98, 192, 225, 255, - 3, 64, 0, 0, 191, 32, 255, 255, 255, 255, 255, 247, 255, 61, 127, 61, - 255, 61, 255, 255, 255, 255, 61, 127, 61, 255, 127, 255, 255, 255, 61, 255, - 255, 255, 255, 7, 255, 255, 31, 0, 255, 159, 255, 255, 255, 199, 255, 1, - 255, 223, 3, 0, 255, 255, 3, 0, 255, 223, 1, 0, 255, 255, 15, 0, - 0, 0, 128, 16, 255, 255, 255, 0, 255, 5, 255, 255, 255, 255, 63, 0, - 255, 255, 255, 127, 255, 63, 31, 0, 255, 15, 0, 0, 254, 0, 0, 0, - 255, 255, 127, 0, 128, 0, 0, 0, 224, 255, 255, 255, 224, 15, 0, 0, - 248, 255, 255, 255, 1, 192, 0, 252, 63, 0, 0, 0, 15, 0, 0, 0, - 0, 224, 0, 252, 255, 255, 255, 63, 0, 222, 99, 0, 255, 255, 63, 63, - 63, 63, 255, 170, 255, 255, 223, 95, 220, 31, 207, 15, 255, 31, 220, 31, - 0, 0, 2, 128, 0, 0, 255, 31, 132, 252, 47, 63, 80, 253, 255, 243, - 224, 67, 0, 0, 255, 1, 0, 0, 255, 127, 255, 255, 31, 120, 12, 0, - 255, 128, 0, 0, 127, 127, 127, 127, 224, 0, 0, 0, 254, 3, 62, 31, - 255, 255, 127, 224, 255, 63, 254, 255, 255, 127, 0, 0, 255, 31, 255, 255, - 0, 12, 0, 0, 255, 127, 0, 128, 0, 0, 128, 255, 252, 255, 255, 255, - 255, 121, 255, 255, 255, 63, 3, 0, 187, 247, 255, 255, 7, 0, 0, 0, - 0, 0, 252, 8, 63, 0, 255, 255, 255, 255, 255, 31, 0, 128, 0, 0, - 223, 255, 0, 124, 247, 15, 0, 0, 255, 255, 127, 196, 255, 255, 98, 62, - 5, 0, 0, 56, 255, 7, 28, 0, 126, 126, 126, 0, 127, 127, 255, 255, - 48, 0, 0, 0, 15, 0, 255, 255, 127, 248, 255, 255, 255, 255, 255, 15, - 255, 63, 255, 255, 255, 255, 255, 3, 127, 0, 248, 160, 255, 253, 127, 95, - 219, 255, 255, 255, 0, 0, 248, 255, 255, 255, 252, 255, 0, 0, 255, 3, - 0, 0, 138, 170, 192, 255, 255, 255, 252, 252, 252, 28, 255, 239, 255, 255, - 127, 255, 255, 183, 255, 63, 255, 63, 255, 255, 1, 0, 255, 7, 255, 255, - 15, 255, 62, 0, 255, 0, 255, 255, 63, 253, 255, 255, 255, 255, 191, 145, + 24, 199, 255, 3, 224, 223, 253, 255, 255, 253, 255, 35, 0, 0, 0, 7, + 3, 0, 0, 0, 225, 223, 253, 255, 255, 253, 239, 35, 0, 0, 0, 64, + 3, 0, 6, 0, 255, 255, 255, 39, 0, 64, 112, 128, 3, 0, 0, 252, + 224, 255, 127, 252, 255, 255, 251, 47, 127, 0, 0, 0, 255, 255, 5, 0, + 150, 37, 240, 254, 174, 236, 5, 32, 95, 0, 0, 240, 1, 0, 0, 0, + 255, 254, 255, 255, 255, 31, 0, 0, 0, 31, 0, 0, 255, 7, 0, 128, + 0, 0, 63, 60, 98, 192, 225, 255, 3, 64, 0, 0, 191, 32, 255, 255, + 255, 255, 255, 247, 255, 61, 127, 61, 255, 61, 255, 255, 255, 255, 61, 127, + 61, 255, 127, 255, 255, 255, 61, 255, 255, 255, 255, 7, 255, 255, 63, 63, + 255, 159, 255, 255, 255, 199, 255, 1, 255, 223, 3, 0, 255, 255, 3, 0, + 255, 223, 1, 0, 255, 255, 15, 0, 0, 0, 128, 16, 255, 255, 255, 0, + 255, 5, 255, 255, 255, 255, 63, 0, 255, 255, 255, 127, 255, 63, 31, 0, + 255, 15, 255, 255, 255, 3, 0, 0, 255, 255, 127, 0, 255, 255, 31, 0, + 128, 0, 0, 0, 224, 255, 255, 255, 224, 15, 0, 0, 248, 255, 255, 255, + 1, 192, 0, 252, 63, 0, 0, 0, 15, 0, 0, 0, 0, 224, 0, 252, + 255, 255, 255, 63, 255, 1, 0, 0, 0, 222, 99, 0, 63, 63, 255, 170, + 255, 255, 223, 95, 220, 31, 207, 15, 255, 31, 220, 31, 0, 0, 2, 128, + 0, 0, 255, 31, 132, 252, 47, 63, 80, 253, 255, 243, 224, 67, 0, 0, + 255, 127, 255, 255, 31, 120, 12, 0, 255, 128, 0, 0, 127, 127, 127, 127, + 224, 0, 0, 0, 254, 3, 62, 31, 255, 255, 127, 224, 255, 63, 254, 255, + 255, 127, 0, 0, 255, 31, 255, 255, 0, 12, 0, 0, 255, 127, 0, 128, + 0, 0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255, 255, 127, 255, 0, + 187, 247, 255, 255, 7, 0, 0, 0, 0, 0, 252, 40, 63, 0, 255, 255, + 255, 255, 255, 31, 255, 255, 7, 0, 0, 128, 0, 0, 223, 255, 0, 124, + 247, 15, 0, 0, 255, 255, 127, 196, 255, 255, 98, 62, 5, 0, 0, 56, + 255, 7, 28, 0, 126, 126, 126, 0, 127, 127, 255, 255, 15, 0, 255, 255, + 127, 248, 255, 255, 255, 255, 255, 15, 255, 63, 255, 255, 255, 255, 255, 3, + 127, 0, 248, 160, 255, 253, 127, 95, 219, 255, 255, 255, 0, 0, 248, 255, + 255, 255, 252, 255, 0, 0, 255, 3, 0, 0, 138, 170, 192, 255, 255, 255, + 252, 252, 252, 28, 255, 239, 255, 255, 127, 255, 255, 183, 255, 63, 255, 63, + 255, 255, 1, 0, 255, 7, 255, 255, 15, 255, 62, 0, 255, 255, 15, 255, + 255, 0, 255, 255, 63, 253, 255, 255, 255, 255, 191, 145, 255, 255, 55, 0, 255, 255, 255, 192, 1, 0, 239, 254, 31, 0, 0, 0, 255, 255, 71, 0, - 30, 0, 0, 4, 255, 255, 251, 255, 0, 0, 0, 224, 176, 0, 0, 0, - 16, 0, 0, 0, 0, 0, 0, 128, 255, 63, 0, 0, 248, 255, 255, 224, - 31, 0, 1, 0, 255, 7, 255, 31, 255, 1, 255, 3, 255, 255, 223, 255, - 255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223, - 255, 255, 255, 123, 95, 252, 253, 255, 63, 255, 255, 255, 253, 255, 255, 247, - 255, 253, 255, 255, 150, 254, 247, 10, 132, 234, 150, 170, 150, 247, 247, 94, - 255, 251, 255, 15, 238, 251, 255, 15, + 30, 0, 0, 20, 255, 255, 251, 255, 255, 15, 0, 0, 127, 189, 255, 191, + 255, 1, 255, 255, 0, 0, 1, 224, 128, 7, 0, 0, 176, 0, 0, 0, + 0, 0, 0, 15, 16, 0, 0, 0, 0, 0, 0, 128, 255, 253, 255, 255, + 0, 0, 252, 255, 255, 63, 0, 0, 248, 255, 255, 224, 31, 0, 1, 0, + 255, 7, 255, 31, 255, 1, 255, 3, 255, 255, 223, 255, 255, 255, 255, 223, + 100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123, + 95, 252, 253, 255, 63, 255, 255, 255, 253, 255, 255, 247, 150, 254, 247, 10, + 132, 234, 150, 170, 150, 247, 247, 94, 255, 251, 255, 15, 238, 251, 255, 15, }; -/* XID_Start: 1929 bytes. */ +/* XID_Start: 2065 bytes. */ RE_UINT32 re_get_xid_start(RE_UINT32 ch) { RE_UINT32 code; @@ -6610,31 +7057,34 @@ static RE_UINT8 re_xid_continue_stage_1[] = { static RE_UINT8 re_xid_continue_stage_2[] = { 0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, 10, 11, 7, 7, 7, 7, 12, 13, 13, 13, 13, 14, - 15, 16, 17, 18, 19, 13, 20, 13, 13, 13, 13, 13, 13, 21, 13, 13, - 13, 13, 13, 13, 13, 13, 22, 23, 13, 13, 24, 13, 13, 25, 13, 13, + 15, 16, 17, 18, 19, 13, 20, 13, 21, 13, 13, 13, 13, 22, 7, 7, + 23, 24, 13, 13, 13, 13, 25, 26, 13, 13, 27, 28, 29, 30, 13, 13, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 26, 7, 27, 28, 13, 13, 13, 13, 13, 13, 13, 29, + 7, 7, 7, 7, 31, 7, 32, 33, 7, 34, 13, 13, 13, 13, 13, 35, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 30, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 36, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, }; static RE_UINT8 re_xid_continue_stage_3[] = { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 1, 17, 18, 19, 1, 20, 21, 22, 23, 24, 25, 26, 27, 1, 28, - 29, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 33, 31, 31, - 34, 35, 31, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 36, 1, 1, 1, 1, 1, 1, 1, 1, 1, 37, - 1, 1, 1, 1, 38, 1, 39, 40, 41, 42, 43, 44, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 45, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 1, 58, - 59, 60, 61, 62, 63, 31, 31, 31, 64, 65, 66, 67, 68, 69, 70, 31, - 71, 31, 72, 31, 31, 31, 31, 31, 1, 1, 1, 73, 74, 31, 31, 31, - 1, 1, 1, 1, 75, 31, 31, 31, 1, 1, 76, 77, 31, 31, 31, 78, - 79, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 80, 31, 31, 31, - 31, 81, 82, 31, 83, 84, 85, 86, 87, 31, 31, 31, 31, 31, 88, 31, - 1, 1, 1, 1, 1, 1, 89, 1, 1, 1, 1, 1, 1, 1, 1, 90, - 91, 31, 31, 31, 31, 31, 31, 31, 1, 1, 91, 31, 31, 31, 31, 31, - 31, 92, 31, 31, 31, 31, 31, 31, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 1, 17, 18, 19, 1, 20, 21, 22, 23, 24, 25, 26, 27, 1, 28, + 29, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 33, 31, 31, + 34, 35, 31, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 36, 1, 1, 1, 1, 1, 1, 1, 1, 1, 37, + 1, 1, 1, 1, 38, 1, 39, 40, 41, 42, 43, 44, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 45, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 1, 58, + 59, 60, 61, 62, 63, 31, 31, 31, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 31, 73, 31, 74, 31, 31, 31, 1, 1, 1, 75, 76, 77, 31, 31, + 1, 1, 1, 1, 78, 31, 31, 31, 31, 31, 31, 31, 1, 1, 79, 31, + 1, 1, 80, 81, 31, 31, 31, 82, 1, 1, 1, 1, 1, 1, 1, 83, + 1, 1, 84, 31, 31, 31, 31, 31, 85, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 86, 31, 31, 31, 31, 87, 88, 31, 89, 90, 91, 92, + 31, 31, 93, 31, 31, 31, 31, 31, 94, 31, 31, 31, 31, 31, 31, 31, + 95, 96, 31, 31, 31, 31, 97, 31, 1, 1, 1, 1, 1, 1, 98, 1, + 1, 1, 1, 1, 1, 1, 1, 99, 100, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 101, 31, 1, 1, 102, 31, 31, 31, 31, 31, + 31, 103, 31, 31, 31, 31, 31, 31, }; static RE_UINT8 re_xid_continue_stage_4[] = { @@ -6642,49 +7092,54 @@ static RE_UINT8 re_xid_continue_stage_4[] = { 6, 6, 6, 6, 6, 6, 7, 8, 6, 6, 6, 9, 10, 11, 6, 12, 6, 6, 6, 6, 13, 6, 6, 6, 6, 14, 15, 16, 17, 18, 19, 20, 21, 6, 6, 22, 6, 6, 23, 24, 25, 6, 26, 6, 6, 27, 6, 28, - 6, 29, 30, 0, 0, 31, 0, 32, 6, 6, 6, 33, 34, 35, 36, 37, + 6, 29, 30, 0, 0, 31, 32, 11, 6, 6, 6, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 43, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 45, 56, 57, 58, 59, 56, 60, 61, 62, 63, 64, 65, 66, - 16, 67, 68, 0, 69, 70, 71, 0, 72, 73, 74, 75, 76, 77, 78, 0, - 6, 6, 79, 6, 80, 6, 81, 82, 6, 6, 83, 6, 84, 85, 86, 6, - 87, 6, 60, 88, 89, 6, 6, 90, 16, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 91, 3, 6, 6, 92, 93, 90, 94, 95, 6, 6, 96, 97, - 98, 6, 6, 99, 6, 100, 6, 101, 102, 103, 104, 105, 6, 106, 107, 0, - 30, 6, 102, 108, 109, 110, 0, 0, 6, 6, 111, 112, 6, 6, 6, 94, - 6, 99, 113, 80, 0, 0, 114, 115, 6, 6, 6, 6, 6, 6, 6, 116, - 117, 6, 118, 80, 6, 119, 120, 121, 0, 122, 123, 124, 125, 0, 125, 126, - 127, 128, 129, 6, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 6, 131, 102, 6, 6, 6, 6, 132, 6, 81, 6, 133, 134, 135, 135, 6, - 136, 137, 16, 6, 138, 16, 6, 82, 139, 140, 6, 6, 141, 67, 0, 25, - 6, 6, 6, 6, 6, 101, 0, 0, 6, 6, 6, 6, 6, 6, 142, 0, - 6, 6, 6, 6, 142, 0, 25, 80, 143, 144, 6, 145, 18, 6, 6, 27, - 146, 147, 6, 6, 148, 149, 0, 146, 6, 150, 6, 94, 6, 6, 151, 152, - 6, 153, 94, 77, 6, 6, 154, 102, 6, 134, 155, 156, 6, 6, 157, 158, - 159, 160, 82, 161, 0, 0, 6, 162, 6, 6, 6, 6, 6, 163, 164, 30, - 6, 6, 6, 153, 6, 6, 165, 0, 166, 167, 168, 6, 6, 27, 169, 6, - 6, 6, 80, 32, 6, 6, 6, 6, 6, 80, 25, 6, 170, 6, 150, 1, - 89, 171, 172, 173, 6, 6, 6, 77, 1, 2, 3, 104, 6, 102, 174, 0, - 175, 176, 177, 0, 6, 6, 6, 67, 0, 0, 6, 90, 0, 0, 0, 178, - 0, 0, 0, 0, 77, 6, 179, 180, 6, 25, 100, 67, 80, 6, 181, 0, - 6, 6, 6, 6, 80, 97, 0, 0, 6, 182, 6, 183, 0, 0, 0, 0, - 6, 134, 101, 150, 0, 0, 0, 0, 184, 185, 101, 134, 102, 0, 0, 0, - 101, 165, 0, 0, 6, 186, 0, 0, 187, 188, 0, 77, 77, 0, 74, 189, - 6, 101, 101, 31, 27, 0, 0, 0, 6, 6, 130, 0, 0, 0, 0, 0, - 6, 6, 189, 190, 6, 67, 25, 191, 6, 192, 25, 193, 6, 6, 194, 0, - 195, 99, 0, 0, 0, 25, 6, 196, 46, 43, 197, 198, 0, 0, 0, 0, - 0, 0, 0, 0, 6, 6, 199, 0, 0, 0, 0, 0, 6, 200, 180, 0, - 6, 6, 201, 0, 6, 99, 97, 0, 0, 0, 0, 0, 0, 6, 6, 202, - 0, 0, 0, 0, 0, 0, 6, 203, 6, 6, 6, 6, 203, 0, 0, 0, - 6, 6, 6, 141, 0, 0, 0, 0, 6, 141, 0, 0, 0, 0, 0, 0, - 6, 203, 102, 97, 0, 0, 25, 105, 6, 134, 204, 205, 89, 0, 0, 0, - 6, 6, 206, 102, 207, 0, 0, 0, 208, 0, 0, 0, 0, 0, 0, 0, - 6, 6, 6, 209, 210, 0, 0, 0, 0, 0, 0, 211, 212, 213, 0, 0, - 0, 0, 214, 0, 0, 0, 0, 0, 6, 6, 192, 6, 215, 216, 217, 6, - 218, 219, 220, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 221, 222, 82, - 192, 192, 131, 131, 223, 223, 224, 6, 6, 6, 6, 6, 6, 6, 225, 0, - 217, 226, 227, 228, 229, 230, 0, 0, 6, 6, 6, 6, 6, 6, 134, 0, - 6, 90, 6, 6, 6, 6, 6, 6, 80, 0, 0, 0, 0, 0, 0, 0, - 6, 6, 6, 6, 6, 6, 6, 89, + 53, 54, 55, 56, 53, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 16, 68, 69, 0, 70, 71, 72, 0, 73, 74, 75, 76, 77, 78, 79, 0, + 6, 6, 80, 6, 81, 6, 82, 83, 6, 6, 84, 6, 85, 86, 87, 6, + 88, 6, 61, 89, 90, 6, 6, 91, 16, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 92, 3, 6, 6, 93, 94, 95, 96, 97, 6, 6, 98, 99, + 100, 6, 6, 101, 6, 102, 6, 103, 104, 105, 106, 107, 6, 108, 109, 0, + 30, 6, 104, 110, 111, 112, 0, 0, 6, 6, 113, 114, 6, 6, 6, 96, + 6, 101, 115, 81, 116, 0, 117, 118, 6, 6, 6, 6, 6, 6, 6, 119, + 91, 6, 120, 81, 6, 121, 122, 123, 0, 124, 125, 126, 127, 0, 127, 128, + 129, 130, 131, 6, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 132, 104, 6, 6, 6, 6, 133, 6, 82, 6, 134, 135, 136, 136, 6, + 137, 138, 16, 6, 139, 16, 6, 83, 140, 141, 6, 6, 142, 68, 0, 25, + 6, 6, 6, 6, 6, 103, 0, 0, 6, 6, 6, 6, 6, 6, 103, 0, + 6, 6, 6, 6, 143, 0, 25, 81, 144, 145, 6, 146, 6, 6, 6, 27, + 147, 148, 6, 6, 149, 150, 0, 147, 6, 151, 6, 96, 6, 6, 152, 153, + 6, 154, 96, 78, 6, 6, 155, 104, 6, 135, 156, 157, 6, 6, 158, 159, + 160, 161, 83, 162, 6, 6, 6, 163, 6, 6, 6, 6, 6, 164, 165, 30, + 6, 6, 6, 154, 6, 6, 166, 0, 167, 168, 169, 6, 6, 27, 170, 6, + 6, 6, 81, 171, 6, 6, 6, 6, 6, 81, 25, 6, 172, 6, 151, 1, + 90, 173, 174, 175, 6, 6, 6, 78, 1, 2, 3, 106, 6, 104, 176, 0, + 177, 178, 179, 0, 6, 6, 6, 68, 0, 0, 6, 95, 0, 0, 0, 180, + 0, 0, 0, 0, 78, 6, 181, 182, 6, 25, 102, 68, 81, 6, 183, 0, + 6, 6, 6, 6, 81, 80, 184, 30, 6, 185, 6, 186, 0, 0, 0, 0, + 6, 135, 103, 151, 0, 0, 0, 0, 187, 188, 103, 135, 104, 0, 0, 189, + 103, 166, 0, 0, 6, 190, 0, 0, 191, 192, 0, 78, 78, 0, 75, 193, + 6, 103, 103, 194, 27, 0, 0, 0, 6, 6, 116, 0, 6, 194, 6, 194, + 6, 6, 193, 195, 6, 68, 25, 196, 6, 197, 25, 198, 6, 6, 199, 0, + 200, 201, 0, 0, 202, 203, 6, 204, 34, 43, 205, 206, 0, 0, 0, 0, + 6, 6, 204, 0, 6, 6, 207, 0, 0, 0, 0, 0, 6, 208, 209, 0, + 6, 6, 210, 0, 6, 101, 99, 0, 211, 113, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 6, 212, 0, 0, 0, 0, 0, 0, 6, 213, + 214, 5, 215, 216, 172, 217, 0, 0, 6, 6, 6, 6, 166, 0, 0, 0, + 6, 6, 6, 142, 6, 6, 6, 6, 6, 6, 186, 0, 0, 0, 0, 0, + 6, 142, 0, 0, 0, 0, 0, 0, 6, 6, 193, 0, 0, 0, 0, 0, + 6, 213, 104, 99, 0, 0, 25, 107, 6, 135, 218, 219, 90, 0, 0, 0, + 6, 6, 220, 104, 221, 0, 0, 182, 6, 6, 6, 6, 6, 6, 6, 143, + 6, 6, 6, 6, 6, 6, 6, 194, 222, 0, 0, 0, 0, 0, 0, 0, + 6, 6, 6, 223, 224, 0, 0, 0, 0, 0, 0, 225, 226, 227, 0, 0, + 0, 0, 228, 0, 0, 0, 0, 0, 6, 6, 197, 6, 229, 230, 231, 6, + 232, 233, 234, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 235, 236, 83, + 197, 197, 132, 132, 214, 214, 237, 6, 6, 238, 6, 239, 240, 241, 0, 0, + 242, 243, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 6, 244, 0, + 6, 6, 204, 0, 0, 0, 0, 0, 231, 245, 246, 247, 248, 249, 0, 0, + 6, 6, 6, 6, 6, 6, 135, 0, 6, 95, 6, 6, 6, 6, 6, 6, + 81, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 222, 0, 0, + 81, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 6, 6, 90, }; static RE_UINT8 re_xid_continue_stage_5[] = { @@ -6695,60 +7150,65 @@ static RE_UINT8 re_xid_continue_stage_5[] = { 254, 255, 255, 255, 255, 0, 254, 255, 255, 255, 255, 191, 182, 0, 255, 255, 255, 7, 7, 0, 0, 0, 255, 7, 255, 195, 255, 255, 255, 255, 239, 159, 255, 253, 255, 159, 0, 0, 255, 255, 255, 231, 255, 255, 255, 255, 3, 0, - 255, 255, 63, 4, 255, 63, 0, 0, 255, 255, 255, 15, 255, 255, 7, 0, - 240, 255, 255, 255, 207, 255, 254, 255, 239, 159, 249, 255, 255, 253, 197, 243, + 255, 255, 63, 4, 255, 63, 0, 0, 255, 255, 255, 15, 255, 255, 223, 63, + 0, 0, 240, 255, 207, 255, 254, 255, 239, 159, 249, 255, 255, 253, 197, 243, 159, 121, 128, 176, 207, 255, 3, 0, 238, 135, 249, 255, 255, 253, 109, 211, 135, 57, 2, 94, 192, 255, 63, 0, 238, 191, 251, 255, 255, 253, 237, 243, - 191, 59, 1, 0, 207, 255, 0, 0, 238, 159, 249, 255, 159, 57, 192, 176, + 191, 59, 1, 0, 207, 255, 0, 2, 238, 159, 249, 255, 159, 57, 192, 176, 207, 255, 2, 0, 236, 199, 61, 214, 24, 199, 255, 195, 199, 61, 129, 0, - 192, 255, 0, 0, 239, 223, 253, 255, 255, 253, 255, 227, 223, 61, 96, 3, - 238, 223, 253, 255, 255, 253, 239, 243, 223, 61, 96, 64, 207, 255, 6, 0, - 255, 255, 255, 231, 223, 125, 128, 0, 207, 255, 0, 252, 236, 255, 127, 252, - 255, 255, 251, 47, 127, 132, 95, 255, 192, 255, 12, 0, 255, 255, 255, 7, - 255, 127, 255, 3, 150, 37, 240, 254, 174, 236, 255, 59, 95, 63, 255, 243, - 1, 0, 0, 3, 255, 3, 160, 194, 255, 254, 255, 255, 255, 31, 254, 255, - 223, 255, 255, 254, 255, 255, 255, 31, 64, 0, 0, 0, 255, 3, 255, 255, - 255, 255, 255, 63, 191, 32, 255, 255, 255, 255, 255, 247, 255, 61, 127, 61, - 255, 61, 255, 255, 255, 255, 61, 127, 61, 255, 127, 255, 255, 255, 61, 255, - 0, 254, 3, 0, 255, 255, 0, 0, 255, 255, 31, 0, 255, 159, 255, 255, - 255, 199, 255, 1, 255, 223, 31, 0, 255, 255, 15, 0, 255, 223, 13, 0, - 255, 255, 143, 48, 255, 3, 0, 0, 0, 56, 255, 3, 255, 255, 255, 0, - 255, 7, 255, 255, 255, 255, 63, 0, 255, 255, 255, 127, 255, 15, 255, 15, - 192, 255, 255, 255, 255, 63, 31, 0, 255, 15, 255, 255, 255, 3, 255, 7, - 255, 255, 255, 159, 255, 3, 255, 3, 128, 0, 255, 63, 255, 15, 255, 3, - 0, 248, 15, 0, 255, 227, 255, 255, 0, 0, 247, 255, 255, 255, 127, 3, - 255, 255, 63, 240, 255, 255, 63, 63, 63, 63, 255, 170, 255, 255, 223, 95, - 220, 31, 207, 15, 255, 31, 220, 31, 0, 0, 0, 128, 1, 0, 16, 0, - 0, 0, 2, 128, 0, 0, 255, 31, 226, 255, 1, 0, 132, 252, 47, 63, - 80, 253, 255, 243, 224, 67, 0, 0, 255, 1, 0, 0, 255, 127, 255, 255, - 31, 248, 15, 0, 255, 128, 0, 128, 255, 255, 127, 0, 127, 127, 127, 127, - 224, 0, 0, 0, 254, 255, 62, 31, 255, 255, 127, 230, 224, 255, 255, 255, - 255, 63, 254, 255, 255, 127, 0, 0, 255, 31, 0, 0, 255, 31, 255, 255, - 255, 15, 0, 0, 255, 255, 240, 191, 0, 0, 128, 255, 252, 255, 255, 255, - 255, 121, 255, 255, 255, 63, 3, 0, 255, 0, 0, 0, 31, 0, 255, 3, - 255, 255, 255, 8, 255, 63, 255, 255, 1, 128, 255, 3, 255, 63, 255, 3, - 255, 255, 127, 252, 7, 0, 0, 56, 255, 255, 124, 0, 126, 126, 126, 0, - 127, 127, 255, 255, 48, 0, 0, 0, 255, 55, 255, 3, 15, 0, 255, 255, - 127, 248, 255, 255, 255, 255, 255, 3, 127, 0, 248, 224, 255, 253, 127, 95, - 219, 255, 255, 255, 0, 0, 248, 255, 255, 255, 252, 255, 255, 63, 24, 0, - 0, 224, 0, 0, 0, 0, 138, 170, 252, 252, 252, 28, 255, 239, 255, 255, - 127, 255, 255, 183, 255, 63, 255, 63, 0, 0, 0, 32, 255, 255, 1, 0, - 1, 0, 0, 0, 15, 255, 62, 0, 255, 0, 255, 255, 15, 0, 0, 0, - 63, 253, 255, 255, 255, 255, 191, 145, 255, 255, 255, 192, 111, 240, 239, 254, - 255, 255, 15, 135, 127, 0, 0, 0, 192, 255, 0, 128, 255, 1, 255, 3, - 255, 255, 223, 255, 255, 255, 79, 0, 31, 0, 255, 7, 255, 255, 251, 255, - 255, 7, 255, 3, 159, 57, 128, 224, 207, 31, 31, 0, 191, 0, 255, 3, - 255, 255, 63, 255, 17, 0, 255, 3, 255, 3, 0, 128, 255, 255, 255, 1, - 15, 0, 255, 3, 248, 255, 255, 224, 31, 0, 255, 255, 0, 128, 255, 255, - 3, 0, 0, 0, 255, 7, 255, 31, 255, 1, 255, 99, 224, 227, 7, 248, - 231, 15, 0, 0, 0, 60, 0, 0, 28, 0, 0, 0, 255, 255, 255, 223, - 100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123, - 95, 252, 253, 255, 63, 255, 255, 255, 253, 255, 255, 247, 255, 253, 255, 255, - 247, 207, 255, 255, 31, 0, 127, 0, 150, 254, 247, 10, 132, 234, 150, 170, - 150, 247, 247, 94, 255, 251, 255, 15, 238, 251, 255, 15, + 192, 255, 0, 0, 239, 223, 253, 255, 255, 253, 255, 227, 223, 61, 96, 7, + 207, 255, 0, 0, 255, 253, 239, 243, 223, 61, 96, 64, 207, 255, 6, 0, + 238, 223, 253, 255, 255, 255, 255, 231, 223, 125, 240, 128, 207, 255, 0, 252, + 236, 255, 127, 252, 255, 255, 251, 47, 127, 132, 95, 255, 192, 255, 12, 0, + 255, 255, 255, 7, 255, 127, 255, 3, 150, 37, 240, 254, 174, 236, 255, 59, + 95, 63, 255, 243, 1, 0, 0, 3, 255, 3, 160, 194, 255, 254, 255, 255, + 255, 31, 254, 255, 223, 255, 255, 254, 255, 255, 255, 31, 64, 0, 0, 0, + 255, 3, 255, 255, 255, 255, 255, 63, 191, 32, 255, 255, 255, 255, 255, 247, + 255, 61, 127, 61, 255, 61, 255, 255, 255, 255, 61, 127, 61, 255, 127, 255, + 255, 255, 61, 255, 0, 254, 3, 0, 255, 255, 0, 0, 255, 255, 63, 63, + 255, 159, 255, 255, 255, 199, 255, 1, 255, 223, 31, 0, 255, 255, 31, 0, + 255, 255, 15, 0, 255, 223, 13, 0, 255, 255, 143, 48, 255, 3, 0, 0, + 0, 56, 255, 3, 255, 255, 255, 0, 255, 7, 255, 255, 255, 255, 63, 0, + 255, 255, 255, 127, 255, 15, 255, 15, 192, 255, 255, 255, 255, 63, 31, 0, + 255, 15, 255, 255, 255, 3, 255, 7, 255, 255, 255, 159, 255, 3, 255, 3, + 128, 0, 255, 63, 255, 15, 255, 3, 0, 248, 15, 0, 255, 227, 255, 255, + 255, 1, 0, 0, 0, 0, 247, 255, 255, 255, 127, 3, 255, 255, 63, 248, + 63, 63, 255, 170, 255, 255, 223, 95, 220, 31, 207, 15, 255, 31, 220, 31, + 0, 0, 0, 128, 1, 0, 16, 0, 0, 0, 2, 128, 0, 0, 255, 31, + 226, 255, 1, 0, 132, 252, 47, 63, 80, 253, 255, 243, 224, 67, 0, 0, + 255, 127, 255, 255, 31, 248, 15, 0, 255, 128, 0, 128, 255, 255, 127, 0, + 127, 127, 127, 127, 224, 0, 0, 0, 254, 255, 62, 31, 255, 255, 127, 230, + 224, 255, 255, 255, 255, 63, 254, 255, 255, 127, 0, 0, 255, 31, 0, 0, + 255, 31, 255, 255, 255, 15, 0, 0, 255, 255, 240, 191, 0, 0, 128, 255, + 252, 255, 255, 255, 255, 249, 255, 255, 255, 127, 255, 0, 255, 0, 0, 0, + 63, 0, 255, 3, 255, 255, 255, 40, 255, 63, 255, 255, 1, 128, 255, 3, + 255, 63, 255, 3, 255, 255, 127, 252, 7, 0, 0, 56, 255, 255, 124, 0, + 126, 126, 126, 0, 127, 127, 255, 255, 63, 0, 255, 255, 255, 55, 255, 3, + 15, 0, 255, 255, 127, 248, 255, 255, 255, 255, 255, 3, 127, 0, 248, 224, + 255, 253, 127, 95, 219, 255, 255, 255, 0, 0, 248, 255, 240, 255, 255, 255, + 255, 255, 252, 255, 255, 255, 24, 0, 0, 224, 0, 0, 0, 0, 138, 170, + 252, 252, 252, 28, 255, 239, 255, 255, 127, 255, 255, 183, 255, 63, 255, 63, + 0, 0, 0, 32, 255, 255, 1, 0, 1, 0, 0, 0, 15, 255, 62, 0, + 255, 255, 15, 255, 255, 0, 255, 255, 15, 0, 0, 0, 63, 253, 255, 255, + 255, 255, 191, 145, 255, 255, 55, 0, 255, 255, 255, 192, 111, 240, 239, 254, + 255, 255, 15, 135, 127, 0, 0, 0, 255, 255, 7, 0, 192, 255, 0, 128, + 255, 1, 255, 3, 255, 255, 223, 255, 255, 255, 79, 0, 31, 28, 255, 23, + 255, 255, 251, 255, 255, 255, 255, 64, 127, 189, 255, 191, 255, 1, 255, 255, + 255, 7, 255, 3, 159, 57, 129, 224, 207, 31, 31, 0, 191, 0, 255, 3, + 255, 255, 63, 255, 1, 0, 0, 63, 17, 0, 255, 3, 255, 255, 255, 227, + 255, 3, 0, 128, 255, 255, 255, 1, 255, 253, 255, 255, 1, 0, 255, 3, + 0, 0, 252, 255, 255, 254, 127, 0, 15, 0, 255, 3, 248, 255, 255, 224, + 31, 0, 255, 255, 0, 128, 255, 255, 3, 0, 0, 0, 255, 7, 255, 31, + 255, 1, 255, 99, 224, 227, 7, 248, 231, 15, 0, 0, 0, 60, 0, 0, + 28, 0, 0, 0, 255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255, + 191, 231, 223, 223, 255, 255, 255, 123, 95, 252, 253, 255, 63, 255, 255, 255, + 253, 255, 255, 247, 247, 207, 255, 255, 255, 255, 127, 248, 255, 31, 32, 0, + 16, 0, 0, 248, 254, 255, 0, 0, 127, 255, 255, 249, 219, 7, 0, 0, + 31, 0, 127, 0, 150, 254, 247, 10, 132, 234, 150, 170, 150, 247, 247, 94, + 255, 251, 255, 15, 238, 251, 255, 15, }; -/* XID_Continue: 2078 bytes. */ +/* XID_Continue: 2290 bytes. */ RE_UINT32 re_get_xid_continue(RE_UINT32 ch) { RE_UINT32 code; @@ -6844,18 +7304,15 @@ RE_UINT32 re_get_default_ignorable_code_point(RE_UINT32 ch) { /* Grapheme_Extend. */ static RE_UINT8 re_grapheme_extend_stage_1[] = { - 0, 1, 2, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, - 4, 4, + 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, + 2, }; static RE_UINT8 re_grapheme_extend_stage_2[] = { - 0, 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 8, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 10, - 11, 12, 13, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 15, 7, 7, 16, 7, 7, 17, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 18, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 0, 1, 2, 3, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 6, + 7, 8, 4, 4, 4, 4, 9, 4, 4, 4, 4, 10, 4, 11, 12, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, }; static RE_UINT8 re_grapheme_extend_stage_3[] = { @@ -6863,42 +7320,49 @@ static RE_UINT8 re_grapheme_extend_stage_3[] = { 14, 0, 0, 15, 0, 0, 0, 16, 17, 18, 19, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 28, 29, 30, 31, 0, 0, 0, 0, - 0, 0, 0, 32, 0, 0, 33, 34, 0, 35, 36, 37, 0, 0, 0, 0, - 0, 0, 38, 0, 0, 0, 0, 0, 39, 40, 41, 42, 43, 44, 45, 0, - 0, 0, 46, 47, 0, 0, 0, 48, 0, 0, 0, 0, 49, 0, 0, 0, - 0, 50, 51, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, - 0, 53, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 33, 34, + 0, 35, 36, 37, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, + 39, 40, 41, 42, 43, 44, 45, 46, 0, 0, 0, 0, 47, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 0, 0, 0, 50, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, + 0, 52, 53, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, + 55, 0, 0, 0, 0, 0, 0, 0, 56, 57, 0, 0, 0, 0, 0, 0, + 58, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; static RE_UINT8 re_grapheme_extend_stage_4[] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 0, 7, 0, 8, 9, 0, 0, 10, 11, 12, 13, 14, 0, 0, 15, 0, 16, - 17, 18, 19, 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, 27, 24, - 28, 29, 30, 31, 28, 29, 32, 24, 25, 33, 34, 24, 35, 36, 37, 0, - 38, 39, 40, 24, 25, 41, 42, 24, 25, 36, 27, 24, 0, 0, 43, 0, - 0, 44, 45, 0, 0, 46, 47, 0, 48, 49, 0, 50, 51, 52, 53, 0, - 0, 54, 55, 56, 57, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, - 59, 59, 60, 60, 0, 61, 62, 0, 63, 0, 0, 0, 0, 64, 0, 0, - 0, 65, 0, 0, 0, 0, 0, 0, 66, 0, 67, 68, 0, 69, 0, 0, - 70, 71, 35, 16, 72, 73, 0, 74, 0, 75, 0, 0, 0, 0, 76, 77, - 0, 0, 0, 0, 0, 0, 1, 78, 79, 0, 0, 0, 0, 0, 13, 80, - 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 82, 0, 0, 0, 1, - 0, 83, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 82, 0, 0, 86, - 87, 88, 0, 0, 0, 0, 89, 90, 0, 91, 92, 0, 21, 93, 0, 94, - 0, 95, 96, 29, 0, 97, 25, 98, 0, 0, 0, 0, 0, 0, 0, 99, - 36, 0, 0, 0, 0, 0, 0, 0, 2, 100, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, - 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 102, 0, 0, 0, 0, - 103, 104, 0, 0, 0, 0, 0, 88, 25, 105, 106, 82, 72, 107, 0, 0, - 21, 108, 0, 109, 72, 110, 0, 0, 0, 111, 0, 0, 0, 0, 82, 112, - 25, 26, 113, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, 0, - 0, 0, 0, 0, 0, 117, 38, 0, 0, 118, 38, 0, 0, 119, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 120, 0, 121, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 123, 0, 0, 0, - 0, 0, 0, 124, 125, 126, 0, 0, 0, 0, 127, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 121, 0, 1, 1, 1, 1, 1, 1, 1, 2, + 17, 18, 19, 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, 27, 28, 25, + 29, 30, 31, 32, 29, 30, 33, 25, 26, 34, 35, 25, 36, 37, 38, 0, + 39, 40, 41, 25, 26, 42, 43, 25, 26, 37, 28, 25, 0, 0, 44, 0, + 0, 45, 46, 0, 0, 47, 48, 0, 49, 50, 0, 51, 52, 53, 54, 0, + 0, 55, 56, 57, 58, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, + 60, 60, 61, 61, 0, 62, 63, 0, 64, 0, 0, 0, 65, 66, 0, 0, + 0, 67, 0, 0, 0, 0, 0, 0, 68, 0, 69, 70, 0, 71, 0, 0, + 72, 73, 36, 16, 74, 75, 0, 76, 0, 77, 0, 0, 0, 0, 78, 79, + 0, 0, 0, 0, 0, 0, 1, 80, 81, 0, 0, 0, 0, 0, 13, 82, + 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 84, 0, 0, 0, 1, + 0, 85, 0, 0, 86, 0, 0, 0, 0, 0, 0, 87, 40, 0, 0, 88, + 89, 65, 0, 0, 0, 0, 90, 91, 0, 92, 93, 0, 22, 94, 0, 95, + 0, 96, 97, 30, 0, 98, 26, 99, 0, 0, 0, 0, 0, 0, 0, 100, + 37, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, + 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 102, 0, 0, 0, 0, + 103, 104, 0, 0, 0, 0, 0, 65, 26, 105, 106, 84, 74, 107, 0, 0, + 22, 108, 0, 109, 74, 110, 111, 0, 0, 112, 0, 0, 0, 0, 84, 113, + 74, 27, 114, 115, 0, 0, 0, 0, 0, 105, 116, 0, 0, 117, 118, 0, + 0, 0, 0, 0, 0, 119, 120, 0, 0, 121, 39, 0, 0, 122, 0, 0, + 59, 123, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 125, 126, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 127, 0, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, + 0, 0, 0, 131, 132, 133, 0, 0, 0, 0, 134, 0, 0, 0, 0, 0, + 1, 135, 1, 136, 137, 138, 0, 0, 139, 140, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 141, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 2, }; static RE_UINT8 re_grapheme_extend_stage_5[] = { @@ -6907,36 +7371,40 @@ static RE_UINT8 re_grapheme_extend_stage_5[] = { 0, 248, 255, 255, 0, 0, 1, 0, 0, 0, 192, 159, 159, 61, 0, 0, 0, 0, 2, 0, 0, 0, 255, 255, 255, 7, 0, 0, 192, 255, 1, 0, 0, 248, 15, 0, 0, 0, 192, 251, 239, 62, 0, 0, 0, 0, 0, 14, - 240, 255, 255, 255, 7, 0, 0, 0, 0, 0, 0, 20, 254, 33, 254, 0, - 12, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 80, 30, 32, 128, 0, - 6, 0, 0, 0, 0, 0, 0, 16, 134, 57, 2, 0, 0, 0, 35, 0, - 190, 33, 0, 0, 0, 0, 0, 208, 30, 32, 192, 0, 4, 0, 0, 0, - 0, 0, 0, 64, 1, 32, 128, 0, 1, 0, 0, 0, 0, 0, 0, 192, - 193, 61, 96, 0, 0, 0, 0, 144, 68, 48, 96, 0, 0, 132, 92, 128, - 0, 0, 242, 7, 128, 127, 0, 0, 0, 0, 242, 27, 0, 63, 0, 0, - 0, 0, 0, 3, 0, 0, 160, 2, 0, 0, 254, 127, 223, 224, 255, 254, - 255, 255, 255, 31, 64, 0, 0, 0, 0, 224, 253, 102, 0, 0, 0, 195, - 1, 0, 30, 0, 100, 32, 0, 32, 0, 0, 0, 224, 0, 0, 28, 0, - 0, 0, 12, 0, 0, 0, 176, 63, 64, 254, 15, 32, 0, 56, 0, 0, - 0, 2, 0, 0, 135, 1, 4, 14, 0, 0, 128, 9, 0, 0, 64, 127, - 229, 31, 248, 159, 0, 0, 255, 127, 15, 0, 0, 0, 0, 0, 208, 23, - 3, 0, 0, 0, 60, 59, 0, 0, 64, 163, 3, 0, 0, 240, 207, 0, - 0, 0, 247, 255, 253, 33, 16, 3, 255, 255, 63, 240, 0, 48, 0, 0, - 255, 255, 1, 0, 0, 128, 3, 0, 0, 0, 0, 128, 0, 252, 0, 0, - 0, 0, 0, 6, 0, 128, 247, 63, 0, 0, 3, 0, 68, 8, 0, 0, - 96, 0, 0, 0, 16, 0, 0, 0, 255, 255, 3, 0, 192, 63, 0, 0, - 128, 255, 3, 0, 0, 0, 200, 19, 32, 0, 0, 0, 0, 126, 102, 0, - 8, 16, 0, 0, 0, 0, 157, 193, 0, 48, 64, 0, 32, 33, 0, 0, - 255, 63, 0, 0, 0, 0, 0, 32, 0, 0, 192, 7, 110, 240, 0, 0, + 0, 0, 240, 255, 251, 255, 255, 255, 7, 0, 0, 0, 0, 0, 0, 20, + 254, 33, 254, 0, 12, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 80, + 30, 32, 128, 0, 6, 0, 0, 0, 0, 0, 0, 16, 134, 57, 2, 0, + 0, 0, 35, 0, 190, 33, 0, 0, 0, 0, 0, 208, 30, 32, 192, 0, + 4, 0, 0, 0, 0, 0, 0, 64, 1, 32, 128, 0, 1, 0, 0, 0, + 0, 0, 0, 192, 193, 61, 96, 0, 0, 0, 0, 144, 68, 48, 96, 0, + 0, 132, 92, 128, 0, 0, 242, 7, 128, 127, 0, 0, 0, 0, 242, 27, + 0, 63, 0, 0, 0, 0, 0, 3, 0, 0, 160, 2, 0, 0, 254, 127, + 223, 224, 255, 254, 255, 255, 255, 31, 64, 0, 0, 0, 0, 224, 253, 102, + 0, 0, 0, 195, 1, 0, 30, 0, 100, 32, 0, 32, 0, 0, 0, 224, + 0, 0, 28, 0, 0, 0, 12, 0, 0, 0, 176, 63, 64, 254, 15, 32, + 0, 56, 0, 0, 96, 0, 0, 0, 0, 2, 0, 0, 135, 1, 4, 14, + 0, 0, 128, 9, 0, 0, 64, 127, 229, 31, 248, 159, 0, 0, 255, 127, + 15, 0, 0, 0, 0, 0, 208, 23, 3, 0, 0, 0, 60, 59, 0, 0, + 64, 163, 3, 0, 0, 240, 207, 0, 0, 0, 247, 255, 253, 33, 16, 3, + 255, 255, 63, 248, 0, 16, 0, 0, 255, 255, 1, 0, 0, 128, 3, 0, + 0, 0, 0, 128, 0, 252, 0, 0, 0, 0, 0, 6, 0, 128, 247, 63, + 0, 0, 3, 0, 68, 8, 0, 0, 48, 0, 0, 0, 255, 255, 3, 0, + 192, 63, 0, 0, 128, 255, 3, 0, 0, 0, 200, 19, 32, 0, 0, 0, + 0, 126, 102, 0, 8, 16, 0, 0, 0, 0, 157, 193, 0, 48, 64, 0, + 32, 33, 0, 0, 0, 0, 0, 32, 0, 0, 192, 7, 110, 240, 0, 0, 0, 0, 0, 135, 0, 0, 0, 255, 127, 0, 0, 0, 0, 0, 120, 6, - 128, 239, 31, 0, 0, 0, 8, 0, 0, 0, 192, 127, 0, 128, 211, 0, - 248, 7, 0, 0, 1, 0, 128, 0, 192, 31, 31, 0, 0, 0, 249, 165, - 13, 0, 0, 0, 0, 128, 60, 176, 0, 0, 248, 167, 0, 40, 191, 0, - 0, 0, 31, 0, 0, 0, 127, 0, 0, 128, 7, 0, 0, 0, 0, 96, - 160, 195, 7, 248, 231, 15, 0, 0, 0, 60, 0, 0, 28, 0, 0, 0, + 128, 239, 31, 0, 0, 0, 8, 0, 0, 0, 192, 127, 0, 28, 0, 0, + 0, 128, 211, 64, 248, 7, 0, 0, 1, 0, 128, 0, 192, 31, 31, 0, + 92, 0, 0, 0, 0, 0, 249, 165, 13, 0, 0, 0, 0, 128, 60, 176, + 1, 0, 0, 48, 0, 0, 248, 167, 0, 40, 191, 0, 188, 15, 0, 0, + 0, 0, 127, 191, 0, 0, 252, 255, 255, 252, 109, 0, 0, 0, 31, 0, + 0, 0, 127, 0, 0, 128, 7, 0, 0, 0, 0, 96, 160, 195, 7, 248, + 231, 15, 0, 0, 0, 60, 0, 0, 28, 0, 0, 0, 255, 255, 127, 248, + 255, 31, 32, 0, 16, 0, 0, 248, 254, 255, 0, 0, 127, 255, 255, 249, + 219, 7, 0, 0, 240, 7, 0, 0, }; -/* Grapheme_Extend: 1226 bytes. */ +/* Grapheme_Extend: 1353 bytes. */ RE_UINT32 re_get_grapheme_extend(RE_UINT32 ch) { RE_UINT32 code; @@ -6944,12 +7412,12 @@ RE_UINT32 re_get_grapheme_extend(RE_UINT32 ch) { RE_UINT32 pos; RE_UINT32 value; - f = ch >> 15; - code = ch ^ (f << 15); + f = ch >> 16; + code = ch ^ (f << 16); pos = (RE_UINT32)re_grapheme_extend_stage_1[f] << 4; - f = code >> 11; - code ^= f << 11; - pos = (RE_UINT32)re_grapheme_extend_stage_2[pos + f] << 3; + f = code >> 12; + code ^= f << 12; + pos = (RE_UINT32)re_grapheme_extend_stage_2[pos + f] << 4; f = code >> 8; code ^= f << 8; pos = (RE_UINT32)re_grapheme_extend_stage_3[pos + f] << 3; @@ -6965,175 +7433,186 @@ RE_UINT32 re_get_grapheme_extend(RE_UINT32 ch) { /* Grapheme_Base. */ static RE_UINT8 re_grapheme_base_stage_1[] = { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 10, 12, 13, 14, - 3, 3, 3, 3, 3, 15, 10, 16, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, + 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, }; static RE_UINT8 re_grapheme_base_stage_2[] = { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 10, 10, 19, 20, 21, 22, 23, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 24, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 25, - 10, 10, 26, 27, 28, 29, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 30, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 31, 31, - 10, 50, 51, 31, 31, 31, 31, 31, 10, 10, 52, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 10, 53, 31, 54, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 55, 31, 31, 31, 31, 31, 56, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 57, 58, 59, 60, 31, 31, 31, 31, - 31, 31, 31, 31, 61, 31, 31, 62, 63, 64, 65, 66, 67, 31, 31, 31, - 10, 10, 10, 68, 10, 10, 10, 10, 10, 10, 10, 69, 70, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 10, 70, 31, 31, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 13, 13, + 13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 15, 13, 16, 17, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 18, 19, 19, 19, 19, 19, 19, 19, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 19, 19, 13, 32, 19, 19, + 19, 33, 19, 19, 19, 19, 19, 19, 19, 19, 34, 35, 13, 13, 13, 13, + 13, 36, 37, 19, 19, 19, 19, 19, 19, 19, 19, 19, 38, 19, 19, 39, + 19, 19, 19, 19, 40, 41, 42, 19, 19, 19, 43, 44, 45, 46, 47, 19, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 48, 13, 13, 13, 49, 50, 13, + 13, 13, 13, 51, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 52, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, }; static RE_UINT8 re_grapheme_base_stage_3[] = { - 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 5, 6, 3, - 3, 3, 7, 3, 8, 9, 10, 11, 12, 13, 3, 14, 15, 16, 17, 18, - 19, 20, 21, 4, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 3, 3, 3, 3, 3, 54, 55, 56, 57, 58, 59, 60, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 4, 78, 79, 80, 81, - 82, 83, 4, 84, 3, 3, 3, 4, 3, 3, 3, 3, 85, 86, 87, 88, - 89, 90, 91, 4, 3, 3, 92, 3, 3, 3, 3, 3, 3, 3, 3, 93, - 94, 95, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 96, 97, 98, - 99, 100, 3, 101, 102, 103, 104, 105, 3, 106, 107, 108, 3, 3, 3, 109, - 110, 111, 112, 3, 113, 3, 114, 115, 100, 3, 3, 1, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 70, 3, 3, 3, 3, 3, 3, 3, 3, 116, - 3, 3, 117, 118, 3, 3, 3, 3, 119, 120, 121, 122, 3, 3, 123, 124, - 125, 68, 3, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 4, 137, - 3, 3, 3, 3, 3, 3, 115, 138, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 3, 3, 3, 3, 3, 139, 3, 140, 141, 142, 3, 143, - 3, 3, 3, 3, 3, 144, 145, 146, 147, 148, 3, 149, 111, 3, 150, 151, - 152, 153, 3, 93, 154, 3, 155, 156, 4, 4, 61, 157, 115, 158, 159, 160, - 3, 3, 161, 4, 162, 163, 4, 4, 3, 3, 3, 3, 164, 165, 4, 4, - 166, 167, 168, 4, 169, 4, 170, 4, 171, 172, 173, 174, 175, 176, 177, 4, - 3, 178, 4, 4, 4, 4, 4, 4, 4, 179, 4, 4, 4, 4, 4, 4, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 4, 189, 190, 191, 192, 4, 4, - 4, 4, 193, 194, 4, 4, 195, 196, 197, 198, 199, 200, 4, 4, 4, 4, - 4, 4, 0, 201, 4, 4, 4, 4, 4, 4, 4, 62, 4, 4, 4, 4, - 3, 3, 3, 3, 3, 3, 202, 4, 3, 203, 4, 4, 4, 4, 4, 4, - 204, 4, 4, 4, 4, 4, 4, 4, 62, 205, 4, 206, 207, 208, 209, 4, - 4, 4, 4, 4, 3, 210, 211, 4, 212, 4, 4, 4, 4, 4, 4, 4, - 3, 213, 214, 4, 4, 4, 4, 4, 3, 3, 3, 70, 215, 216, 217, 218, - 3, 219, 4, 4, 3, 220, 4, 4, 3, 221, 222, 223, 224, 225, 3, 3, - 3, 3, 226, 3, 3, 3, 3, 227, 3, 3, 3, 228, 4, 4, 4, 4, - 229, 230, 231, 232, 4, 4, 4, 4, 73, 3, 233, 234, 235, 73, 236, 237, - 238, 239, 4, 4, 240, 241, 3, 242, 3, 3, 3, 1, 3, 243, 244, 3, - 3, 245, 3, 246, 3, 108, 3, 247, 248, 249, 250, 4, 4, 4, 4, 4, - 3, 3, 3, 251, 3, 3, 3, 3, 3, 3, 3, 3, 60, 3, 3, 3, - 218, 4, 4, 4, 4, 4, 4, 4, + 0, 1, 2, 2, 2, 2, 3, 4, 2, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 2, 2, 30, 31, 32, 33, 2, 2, 2, 2, 2, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 2, 47, 2, 2, 48, 49, + 50, 51, 2, 52, 2, 2, 2, 53, 54, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 55, 56, 57, 58, 59, 60, 61, 62, 2, 63, + 64, 65, 66, 67, 68, 53, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 69, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 70, + 2, 71, 2, 2, 72, 73, 2, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 2, 2, 2, 2, 2, 2, 2, 83, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 2, 2, 85, 86, 87, 88, 2, 2, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 84, 99, 100, 101, 2, 102, 103, 84, 2, 2, 104, 84, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 84, 84, 115, 84, 84, 84, + 116, 117, 118, 119, 120, 121, 122, 84, 123, 124, 84, 125, 126, 127, 128, 84, + 84, 129, 84, 84, 84, 130, 84, 84, 131, 132, 84, 84, 84, 84, 84, 84, + 2, 2, 2, 2, 2, 2, 2, 133, 134, 2, 135, 84, 84, 84, 84, 84, + 136, 84, 84, 84, 84, 84, 84, 84, 2, 2, 2, 2, 137, 84, 84, 84, + 2, 2, 2, 2, 138, 139, 140, 141, 84, 84, 84, 84, 84, 84, 142, 143, + 2, 2, 2, 2, 2, 2, 2, 144, 2, 2, 2, 2, 2, 145, 84, 84, + 146, 84, 84, 84, 84, 84, 84, 84, 147, 148, 84, 84, 84, 84, 84, 84, + 2, 149, 150, 151, 152, 84, 153, 84, 154, 155, 156, 2, 2, 157, 2, 158, + 2, 2, 2, 2, 159, 160, 84, 84, 2, 161, 162, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 163, 164, 84, 84, 165, 166, 167, 168, 169, 84, 2, 2, + 2, 2, 2, 2, 2, 170, 171, 172, 173, 174, 175, 176, 84, 84, 84, 84, + 2, 2, 2, 2, 2, 177, 2, 2, 2, 2, 2, 2, 2, 2, 178, 2, + 179, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 180, 84, 84, + 2, 2, 2, 2, 181, 84, 84, 84, }; static RE_UINT8 re_grapheme_base_stage_4[] = { 0, 0, 1, 1, 1, 1, 1, 2, 0, 0, 3, 1, 1, 1, 1, 1, - 0, 0, 0, 0, 0, 0, 0, 4, 5, 1, 6, 1, 7, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 4, + 5, 1, 6, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 1, 9, 8, 1, 10, 0, 0, 11, 12, 1, 13, 14, - 15, 16, 1, 1, 13, 0, 1, 8, 1, 17, 18, 1, 19, 20, 1, 0, - 21, 1, 1, 1, 1, 1, 22, 23, 1, 1, 13, 24, 1, 25, 26, 2, - 1, 27, 0, 0, 0, 0, 1, 28, 29, 1, 1, 30, 31, 32, 33, 1, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 35, 36, 43, 44, 45, 15, 46, - 47, 6, 36, 48, 49, 44, 40, 50, 51, 35, 36, 52, 53, 39, 40, 54, - 55, 56, 57, 58, 59, 44, 15, 13, 60, 20, 36, 61, 62, 63, 40, 64, - 65, 20, 36, 66, 67, 11, 40, 68, 65, 20, 1, 69, 70, 0, 40, 71, - 72, 73, 1, 74, 75, 76, 15, 46, 8, 1, 1, 77, 78, 41, 0, 0, - 79, 80, 81, 82, 83, 84, 0, 0, 1, 4, 1, 85, 86, 1, 87, 88, - 89, 0, 0, 90, 91, 13, 0, 0, 1, 1, 87, 92, 1, 93, 8, 94, - 95, 3, 1, 1, 96, 1, 1, 1, 97, 98, 1, 1, 97, 1, 1, 99, - 100, 101, 1, 1, 1, 100, 1, 1, 1, 13, 1, 87, 1, 102, 1, 1, - 1, 1, 1, 14, 1, 87, 1, 1, 1, 1, 1, 103, 3, 50, 1, 104, - 1, 50, 3, 44, 1, 1, 1, 105, 106, 107, 102, 102, 13, 102, 1, 1, - 1, 1, 1, 54, 1, 1, 108, 1, 1, 1, 1, 22, 1, 2, 109, 110, - 111, 1, 19, 14, 1, 1, 41, 1, 102, 112, 1, 1, 1, 113, 1, 1, - 1, 114, 115, 28, 102, 102, 19, 0, 116, 1, 1, 117, 118, 1, 13, 107, - 119, 1, 120, 1, 1, 1, 121, 122, 1, 1, 41, 123, 124, 1, 1, 1, - 54, 125, 126, 127, 1, 128, 1, 1, 128, 129, 1, 19, 1, 1, 1, 130, - 130, 131, 1, 132, 13, 1, 133, 1, 1, 1, 0, 33, 2, 87, 1, 19, - 102, 1, 1, 1, 1, 1, 1, 13, 1, 1, 75, 0, 13, 0, 1, 1, - 1, 1, 1, 134, 1, 135, 1, 124, 36, 50, 0, 0, 1, 1, 2, 1, - 1, 2, 1, 1, 1, 1, 2, 136, 1, 1, 96, 1, 1, 1, 133, 44, - 1, 75, 137, 137, 137, 137, 0, 0, 28, 0, 0, 0, 1, 138, 1, 1, - 1, 1, 1, 139, 1, 22, 0, 41, 1, 1, 102, 1, 8, 1, 1, 1, - 1, 140, 1, 1, 141, 1, 19, 8, 2, 1, 1, 13, 1, 1, 139, 1, - 87, 0, 0, 0, 87, 1, 1, 1, 75, 1, 1, 1, 1, 1, 41, 0, - 1, 1, 2, 142, 1, 19, 1, 1, 1, 1, 1, 143, 2, 1, 19, 50, - 0, 0, 0, 144, 145, 1, 146, 102, 147, 102, 0, 148, 1, 1, 149, 1, - 75, 150, 1, 87, 29, 1, 1, 151, 152, 153, 130, 2, 1, 1, 154, 155, - 156, 84, 1, 157, 1, 1, 1, 158, 159, 160, 161, 22, 162, 163, 137, 1, - 1, 1, 164, 0, 1, 1, 165, 102, 140, 1, 1, 41, 1, 1, 19, 1, - 1, 102, 0, 0, 75, 166, 1, 167, 168, 1, 1, 1, 50, 29, 1, 1, - 0, 1, 1, 1, 1, 119, 1, 1, 54, 0, 0, 19, 0, 102, 0, 1, - 1, 169, 170, 130, 1, 1, 1, 87, 1, 19, 1, 2, 171, 172, 137, 173, - 157, 1, 101, 174, 19, 19, 0, 0, 175, 1, 1, 176, 87, 41, 44, 0, - 0, 1, 1, 87, 1, 44, 8, 41, 13, 1, 1, 22, 1, 152, 1, 1, - 177, 22, 0, 0, 1, 19, 102, 0, 1, 1, 54, 1, 1, 1, 178, 0, - 1, 1, 1, 75, 1, 22, 54, 0, 179, 1, 1, 180, 1, 181, 1, 1, - 1, 2, 144, 0, 1, 182, 1, 58, 1, 1, 1, 183, 44, 184, 1, 139, - 54, 103, 1, 1, 1, 1, 0, 0, 1, 1, 185, 75, 1, 1, 1, 71, - 1, 135, 1, 186, 1, 187, 188, 0, 103, 0, 0, 0, 0, 0, 1, 2, - 20, 1, 1, 54, 189, 119, 1, 0, 119, 1, 1, 190, 50, 1, 103, 102, - 29, 1, 191, 15, 139, 1, 1, 192, 119, 1, 1, 193, 194, 13, 8, 14, - 1, 6, 2, 195, 0, 0, 0, 1, 1, 2, 28, 102, 51, 35, 36, 196, - 197, 21, 139, 0, 1, 1, 1, 198, 199, 102, 0, 0, 1, 1, 2, 200, - 201, 0, 0, 0, 1, 1, 1, 202, 62, 102, 0, 0, 1, 1, 203, 204, - 102, 0, 0, 0, 1, 1, 1, 205, 1, 103, 0, 0, 1, 1, 2, 14, - 1, 1, 2, 0, 1, 2, 153, 0, 0, 1, 19, 206, 1, 1, 1, 144, - 22, 138, 6, 207, 1, 0, 0, 0, 14, 1, 1, 2, 0, 29, 0, 0, - 50, 0, 0, 0, 1, 1, 13, 87, 103, 208, 0, 0, 1, 1, 9, 1, - 1, 1, 209, 0, 210, 1, 153, 1, 1, 19, 0, 0, 211, 0, 0, 0, - 1, 75, 1, 50, 1, 130, 1, 1, 1, 3, 212, 30, 213, 1, 1, 1, - 214, 215, 1, 216, 217, 20, 1, 1, 1, 1, 135, 1, 161, 1, 1, 1, - 218, 0, 0, 0, 213, 1, 219, 220, 221, 222, 223, 224, 138, 41, 225, 41, - 0, 0, 0, 50, 1, 139, 2, 8, 8, 8, 1, 22, 87, 1, 2, 1, - 1, 13, 0, 0, 0, 0, 15, 1, 28, 1, 1, 13, 103, 50, 0, 0, - 1, 1, 87, 1, 1, 1, 1, 19, 2, 116, 1, 54, 13, 1, 1, 138, - 1, 1, 213, 1, 226, 1, 1, 1, 1, 0, 87, 139, 1, 14, 0, 0, - 41, 1, 1, 1, 54, 102, 1, 1, 54, 1, 19, 0, 1, 75, 0, 0, + 15, 16, 1, 1, 13, 0, 1, 8, 1, 1, 1, 1, 1, 17, 18, 1, + 19, 20, 1, 0, 21, 1, 1, 1, 1, 1, 22, 23, 1, 1, 13, 24, + 1, 25, 26, 2, 1, 27, 0, 0, 0, 0, 1, 28, 0, 0, 0, 0, + 29, 1, 1, 30, 31, 32, 33, 1, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 35, 36, 43, 44, 45, 15, 46, 47, 6, 36, 48, 49, 44, 40, 50, + 51, 35, 36, 52, 53, 39, 40, 54, 55, 56, 57, 58, 59, 44, 15, 13, + 60, 20, 36, 61, 62, 63, 40, 64, 65, 20, 36, 66, 67, 11, 40, 68, + 69, 20, 1, 70, 71, 72, 40, 1, 73, 74, 1, 75, 76, 77, 15, 46, + 8, 1, 1, 78, 79, 41, 0, 0, 80, 81, 82, 83, 84, 85, 0, 0, + 1, 4, 1, 86, 87, 1, 88, 89, 90, 0, 0, 91, 92, 13, 0, 0, + 1, 1, 88, 93, 1, 94, 8, 95, 96, 3, 1, 1, 97, 1, 1, 1, + 1, 1, 1, 1, 98, 99, 1, 1, 98, 1, 1, 100, 101, 102, 1, 1, + 1, 101, 1, 1, 1, 13, 1, 88, 1, 103, 1, 1, 1, 1, 1, 104, + 1, 88, 1, 1, 1, 1, 1, 105, 3, 106, 1, 107, 1, 106, 3, 44, + 1, 1, 1, 108, 109, 110, 103, 103, 13, 103, 1, 1, 1, 1, 1, 54, + 111, 1, 112, 1, 1, 1, 1, 22, 1, 2, 113, 114, 115, 1, 19, 14, + 1, 1, 41, 1, 103, 116, 1, 1, 1, 117, 1, 1, 1, 118, 119, 120, + 103, 103, 19, 0, 0, 0, 0, 0, 121, 1, 1, 122, 123, 1, 13, 110, + 124, 1, 125, 1, 1, 1, 126, 127, 1, 1, 41, 128, 129, 1, 1, 1, + 105, 0, 0, 0, 54, 130, 131, 132, 1, 1, 1, 1, 0, 0, 0, 0, + 1, 104, 1, 1, 104, 133, 1, 19, 1, 1, 1, 134, 134, 135, 1, 136, + 13, 1, 137, 1, 1, 1, 0, 33, 2, 88, 1, 2, 0, 0, 0, 0, + 41, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 1, 1, 76, 0, 13, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 138, + 1, 139, 1, 129, 36, 106, 140, 0, 1, 1, 2, 1, 1, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 141, 1, 1, 97, 1, 1, 1, 137, 44, + 1, 76, 142, 142, 142, 142, 0, 0, 1, 1, 1, 1, 14, 0, 0, 0, + 1, 143, 1, 1, 1, 1, 1, 144, 1, 1, 1, 1, 1, 22, 0, 41, + 1, 1, 103, 1, 8, 1, 1, 1, 1, 145, 1, 1, 1, 1, 1, 1, + 146, 1, 19, 8, 1, 1, 1, 1, 2, 1, 1, 13, 1, 1, 144, 1, + 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 22, 0, 0, 88, 1, 1, 1, 76, 1, 1, 1, + 1, 1, 41, 0, 1, 1, 2, 147, 1, 19, 1, 1, 1, 1, 1, 148, + 1, 1, 2, 54, 0, 0, 0, 149, 150, 1, 151, 103, 1, 1, 1, 54, + 1, 1, 1, 1, 152, 103, 0, 153, 1, 1, 154, 1, 76, 155, 1, 88, + 29, 1, 1, 156, 157, 158, 134, 2, 1, 1, 159, 160, 161, 85, 1, 162, + 1, 1, 1, 163, 164, 165, 166, 22, 167, 168, 142, 1, 1, 1, 22, 1, + 1, 1, 1, 1, 1, 1, 169, 103, 1, 1, 144, 1, 145, 1, 1, 41, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 19, 1, + 1, 1, 1, 1, 1, 103, 0, 0, 76, 170, 1, 171, 172, 1, 1, 1, + 1, 1, 1, 1, 106, 29, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, + 1, 124, 1, 1, 54, 0, 0, 19, 0, 103, 0, 1, 1, 173, 174, 134, + 1, 1, 1, 1, 1, 1, 1, 88, 8, 1, 1, 1, 1, 1, 1, 1, + 1, 19, 1, 2, 175, 176, 142, 177, 162, 1, 102, 178, 19, 19, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 13, 179, 1, 1, 180, 1, 1, 1, 1, + 2, 41, 44, 0, 0, 1, 1, 88, 1, 88, 1, 1, 1, 44, 8, 41, + 1, 1, 144, 1, 13, 1, 1, 22, 1, 157, 1, 1, 181, 22, 0, 0, + 1, 19, 103, 1, 1, 181, 1, 41, 1, 1, 54, 1, 1, 1, 182, 0, + 1, 1, 1, 76, 1, 22, 54, 0, 183, 1, 1, 184, 1, 185, 1, 1, + 1, 2, 149, 0, 0, 0, 1, 186, 1, 187, 1, 58, 0, 0, 0, 0, + 1, 1, 1, 188, 1, 124, 1, 1, 44, 189, 1, 144, 54, 105, 1, 1, + 1, 1, 0, 0, 1, 1, 190, 76, 1, 1, 1, 191, 1, 139, 1, 192, + 1, 193, 194, 0, 0, 0, 0, 0, 1, 1, 1, 1, 105, 0, 0, 0, + 1, 1, 1, 120, 1, 1, 1, 7, 0, 0, 0, 0, 0, 0, 1, 2, + 20, 1, 1, 54, 195, 124, 1, 0, 124, 1, 1, 196, 106, 1, 105, 103, + 29, 1, 197, 15, 144, 1, 1, 198, 124, 1, 1, 199, 61, 1, 8, 14, + 1, 6, 2, 200, 0, 0, 0, 0, 201, 157, 103, 1, 1, 2, 120, 103, + 51, 35, 36, 202, 203, 204, 144, 0, 1, 1, 1, 54, 205, 206, 0, 0, + 1, 1, 1, 207, 208, 103, 0, 0, 1, 1, 2, 209, 8, 41, 0, 0, + 1, 1, 1, 210, 62, 103, 88, 0, 1, 1, 211, 212, 103, 0, 0, 0, + 1, 103, 213, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 214, + 0, 0, 0, 0, 1, 1, 1, 105, 36, 1, 1, 11, 22, 1, 88, 1, + 1, 0, 215, 216, 0, 0, 0, 0, 1, 103, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 2, 14, 1, 1, 1, 1, 144, 0, 0, 0, + 1, 1, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 76, 0, 0, 0, + 1, 1, 1, 105, 1, 2, 158, 0, 0, 0, 0, 0, 0, 1, 19, 217, + 1, 1, 1, 149, 22, 143, 6, 218, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 14, 1, 1, 2, 0, 29, 0, 0, 0, 0, 44, 0, + 1, 1, 1, 1, 1, 1, 88, 0, 1, 1, 1, 1, 1, 1, 1, 120, + 106, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 13, 88, + 105, 219, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 22, + 1, 1, 9, 1, 1, 1, 220, 0, 221, 1, 158, 1, 1, 1, 105, 0, + 1, 1, 1, 1, 222, 0, 0, 0, 1, 1, 1, 1, 1, 76, 1, 106, + 1, 1, 1, 1, 1, 134, 1, 1, 1, 3, 223, 30, 224, 1, 1, 1, + 225, 226, 1, 227, 228, 20, 1, 1, 1, 1, 139, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 166, 1, 1, 1, 0, 0, 0, 229, 0, 0, 21, 134, + 230, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 111, 0, 0, 0, + 1, 1, 1, 1, 144, 158, 0, 0, 224, 1, 231, 232, 233, 234, 235, 236, + 143, 41, 237, 41, 0, 0, 0, 106, 1, 1, 41, 1, 1, 1, 1, 1, + 1, 144, 2, 8, 8, 8, 1, 22, 88, 1, 2, 1, 1, 1, 41, 1, + 1, 1, 88, 0, 0, 0, 15, 1, 120, 1, 1, 41, 105, 106, 0, 0, + 1, 1, 1, 1, 1, 120, 88, 76, 1, 1, 1, 1, 1, 1, 1, 144, + 1, 1, 1, 1, 1, 14, 0, 0, 41, 1, 1, 1, 54, 103, 1, 1, + 54, 1, 19, 0, 0, 0, 0, 0, 0, 2, 54, 238, 41, 2, 0, 0, + 1, 106, 0, 0, 44, 0, 0, 0, 1, 1, 1, 1, 1, 76, 0, 0, + 1, 1, 1, 14, 1, 1, 1, 1, 1, 19, 1, 1, 1, 1, 1, 1, + 1, 1, 106, 0, 0, 0, 0, 0, 1, 19, 0, 0, 0, 0, 0, 0, }; static RE_UINT8 re_grapheme_base_stage_5[] = { 0, 0, 255, 255, 255, 127, 255, 223, 255, 252, 240, 215, 251, 255, 7, 252, 254, 255, 127, 254, 255, 230, 0, 64, 73, 0, 255, 7, 31, 0, 192, 255, 0, 200, 63, 64, 96, 194, 255, 63, 253, 255, 0, 224, 63, 0, 2, 0, - 240, 7, 63, 4, 16, 1, 255, 65, 7, 0, 248, 255, 255, 235, 1, 222, + 240, 7, 63, 4, 16, 1, 255, 65, 223, 63, 248, 255, 255, 235, 1, 222, 1, 255, 243, 255, 237, 159, 249, 255, 255, 253, 197, 163, 129, 89, 0, 176, 195, 255, 255, 15, 232, 135, 109, 195, 1, 0, 0, 94, 28, 0, 232, 191, - 237, 227, 1, 26, 3, 0, 236, 159, 237, 35, 129, 25, 255, 0, 232, 199, - 61, 214, 24, 199, 255, 131, 198, 29, 238, 223, 255, 35, 30, 0, 0, 3, - 0, 255, 236, 223, 239, 99, 155, 13, 6, 0, 255, 167, 193, 93, 63, 254, - 236, 255, 127, 252, 251, 47, 127, 0, 3, 127, 13, 128, 127, 128, 150, 37, - 240, 254, 174, 236, 13, 32, 95, 0, 255, 243, 95, 253, 255, 254, 255, 31, - 0, 128, 32, 31, 0, 192, 191, 223, 2, 153, 255, 60, 225, 255, 155, 223, - 191, 32, 255, 61, 127, 61, 61, 127, 61, 255, 127, 255, 255, 3, 255, 1, - 99, 0, 79, 192, 191, 1, 240, 31, 255, 5, 120, 14, 251, 1, 241, 255, - 255, 199, 127, 198, 191, 0, 26, 224, 240, 255, 47, 232, 251, 15, 252, 255, - 195, 196, 191, 92, 12, 240, 48, 248, 255, 227, 8, 0, 2, 222, 111, 0, - 63, 63, 255, 170, 223, 255, 207, 239, 220, 127, 255, 128, 207, 255, 63, 255, - 12, 254, 127, 127, 255, 251, 15, 0, 127, 248, 224, 255, 8, 192, 252, 0, - 128, 255, 187, 247, 159, 15, 15, 192, 252, 15, 63, 192, 12, 128, 55, 236, - 255, 191, 255, 195, 255, 129, 25, 0, 247, 47, 255, 239, 98, 62, 5, 0, - 0, 248, 255, 207, 126, 126, 126, 0, 48, 0, 223, 30, 248, 160, 127, 95, - 219, 255, 247, 255, 127, 15, 252, 252, 252, 28, 0, 48, 255, 183, 135, 255, - 143, 255, 15, 255, 15, 128, 63, 253, 191, 145, 191, 255, 255, 143, 255, 192, - 239, 254, 31, 248, 7, 255, 3, 30, 0, 254, 128, 63, 135, 217, 127, 16, - 119, 0, 63, 128, 255, 33, 44, 63, 237, 163, 158, 57, 6, 90, 242, 0, - 3, 79, 254, 3, 7, 88, 255, 215, 64, 0, 7, 128, 32, 0, 255, 224, - 255, 147, 95, 60, 24, 240, 35, 0, 100, 222, 239, 255, 191, 231, 223, 223, - 255, 123, 95, 252, 159, 255, 150, 254, 247, 10, 132, 234, 150, 170, 150, 247, - 247, 94, 238, 251, 231, 255, + 237, 227, 1, 26, 3, 2, 236, 159, 237, 35, 129, 25, 255, 0, 232, 199, + 61, 214, 24, 199, 255, 131, 198, 29, 238, 223, 255, 35, 30, 0, 0, 7, + 0, 255, 237, 223, 239, 99, 155, 13, 6, 0, 236, 223, 255, 167, 193, 221, + 112, 255, 236, 255, 127, 252, 251, 47, 127, 0, 3, 127, 13, 128, 127, 128, + 150, 37, 240, 254, 174, 236, 13, 32, 95, 0, 255, 243, 95, 253, 255, 254, + 255, 31, 0, 128, 32, 31, 0, 192, 191, 223, 2, 153, 255, 60, 225, 255, + 155, 223, 191, 32, 255, 61, 127, 61, 61, 127, 61, 255, 127, 255, 255, 3, + 63, 63, 255, 1, 3, 0, 99, 0, 79, 192, 191, 1, 240, 31, 159, 255, + 255, 5, 120, 14, 251, 1, 241, 255, 255, 199, 127, 198, 191, 0, 26, 224, + 7, 0, 240, 255, 47, 232, 251, 15, 252, 255, 195, 196, 191, 92, 12, 240, + 48, 248, 255, 227, 8, 0, 2, 222, 111, 0, 255, 170, 223, 255, 207, 239, + 220, 127, 255, 128, 207, 255, 63, 255, 0, 240, 12, 254, 127, 127, 255, 251, + 15, 0, 127, 248, 224, 255, 8, 192, 252, 0, 128, 255, 187, 247, 159, 15, + 15, 192, 252, 63, 63, 192, 12, 128, 55, 236, 255, 191, 255, 195, 255, 129, + 25, 0, 247, 47, 255, 239, 98, 62, 5, 0, 0, 248, 255, 207, 126, 126, + 126, 0, 223, 30, 248, 160, 127, 95, 219, 255, 247, 255, 127, 15, 252, 252, + 252, 28, 0, 48, 255, 183, 135, 255, 143, 255, 15, 255, 15, 128, 63, 253, + 191, 145, 191, 255, 55, 248, 255, 143, 255, 240, 239, 254, 31, 248, 63, 254, + 7, 255, 3, 30, 0, 254, 128, 63, 135, 217, 127, 16, 119, 0, 63, 128, + 44, 63, 127, 189, 237, 163, 158, 57, 1, 224, 163, 255, 255, 43, 6, 90, + 242, 0, 3, 79, 7, 88, 255, 215, 64, 0, 67, 0, 7, 128, 0, 2, + 18, 0, 32, 0, 255, 224, 255, 147, 95, 60, 24, 240, 35, 0, 100, 222, + 239, 255, 191, 231, 223, 223, 255, 123, 95, 252, 128, 7, 239, 15, 150, 254, + 247, 10, 132, 234, 150, 170, 150, 247, 247, 94, 238, 251, 249, 127, }; -/* Grapheme_Base: 2438 bytes. */ +/* Grapheme_Base: 2616 bytes. */ RE_UINT32 re_get_grapheme_base(RE_UINT32 ch) { RE_UINT32 code; @@ -7141,15 +7620,15 @@ RE_UINT32 re_get_grapheme_base(RE_UINT32 ch) { RE_UINT32 pos; RE_UINT32 value; - f = ch >> 13; - code = ch ^ (f << 13); - pos = (RE_UINT32)re_grapheme_base_stage_1[f] << 4; - f = code >> 9; - code ^= f << 9; + f = ch >> 15; + code = ch ^ (f << 15); + pos = (RE_UINT32)re_grapheme_base_stage_1[f] << 5; + f = code >> 10; + code ^= f << 10; pos = (RE_UINT32)re_grapheme_base_stage_2[pos + f] << 3; - f = code >> 6; - code ^= f << 6; - pos = (RE_UINT32)re_grapheme_base_stage_3[pos + f] << 2; + f = code >> 7; + code ^= f << 7; + pos = (RE_UINT32)re_grapheme_base_stage_3[pos + f] << 3; f = code >> 4; code ^= f << 4; pos = (RE_UINT32)re_grapheme_base_stage_4[pos + f] << 4; @@ -7173,7 +7652,7 @@ static RE_UINT8 re_grapheme_link_stage_2[] = { 0, 0, 1, 2, 3, 4, 5, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, - 0, 0, 8, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 8, 0, 9, 10, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, }; static RE_UINT8 re_grapheme_link_stage_3[] = { @@ -7182,7 +7661,7 @@ static RE_UINT8 re_grapheme_link_stage_3[] = { 0, 0, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 8, 0, 9, 10, 0, 0, 11, 0, 0, 0, 0, 0, 12, 9, 13, 14, 0, 15, 0, 16, 0, 0, 0, 0, 17, 0, 0, 0, 18, 19, 20, 14, 21, 22, 1, 0, - 0, 23, 0, 17, 17, 24, 0, 0, + 23, 23, 0, 17, 17, 24, 25, 0, 17, 0, 0, 0, 0, 0, 0, 0, }; static RE_UINT8 re_grapheme_link_stage_4[] = { @@ -7192,7 +7671,7 @@ static RE_UINT8 re_grapheme_link_stage_4[] = { 12, 0, 0, 0, 0, 0, 13, 0, 0, 0, 8, 0, 0, 0, 0, 14, 0, 0, 0, 1, 0, 11, 0, 0, 0, 0, 12, 11, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 0, 0, 2, 0, 0, 18, 0, - 0, 14, 0, 0, + 0, 14, 0, 0, 0, 19, 0, 0, }; static RE_UINT8 re_grapheme_link_stage_5[] = { @@ -7200,10 +7679,10 @@ static RE_UINT8 re_grapheme_link_stage_5[] = { 16, 0, 0, 0, 0, 0, 0, 6, 0, 0, 16, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 12, 0, 0, 0, 0, 12, 0, 0, 0, 0, 128, 64, 0, 0, 0, 0, 0, 8, 0, 0, 0, 64, 0, 0, 0, 0, 2, - 0, 0, 24, 0, 0, 0, 32, 0, 4, 0, 0, 0, + 0, 0, 24, 0, 0, 0, 32, 0, 4, 0, 0, 0, 0, 8, 0, 0, }; -/* Grapheme_Link: 396 bytes. */ +/* Grapheme_Link: 412 bytes. */ RE_UINT32 re_get_grapheme_link(RE_UINT32 ch) { RE_UINT32 code; @@ -7570,11 +8049,9 @@ RE_UINT32 re_get_quotation_mark(RE_UINT32 ch) { /* Terminal_Punctuation. */ static RE_UINT8 re_terminal_punctuation_stage_1[] = { - 0, 1, 2, 3, 4, 5, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, + 0, 1, 2, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, }; static RE_UINT8 re_terminal_punctuation_stage_2[] = { @@ -7582,9 +8059,12 @@ static RE_UINT8 re_terminal_punctuation_stage_2[] = { 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 12, 13, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 14, - 15, 9, 16, 9, 17, 18, 9, 9, 9, 19, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 20, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 21, + 15, 9, 16, 9, 17, 18, 9, 19, 9, 20, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 21, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 22, + 9, 9, 9, 9, 9, 9, 23, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, }; static RE_UINT8 re_terminal_punctuation_stage_3[] = { @@ -7596,9 +8076,10 @@ static RE_UINT8 re_terminal_punctuation_stage_3[] = { 1, 1, 1, 1, 25, 1, 1, 1, 26, 1, 1, 1, 1, 1, 1, 1, 1, 27, 1, 1, 28, 29, 1, 1, 30, 31, 32, 33, 34, 35, 1, 36, 1, 1, 1, 1, 37, 1, 38, 1, 1, 1, 1, 1, 1, 1, 1, 39, - 40, 1, 41, 1, 42, 43, 44, 45, 46, 47, 48, 49, 50, 1, 1, 1, - 1, 1, 1, 51, 52, 1, 1, 1, 53, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 54, 55, 56, 1, 1, 41, 1, 1, 1, 1, 1, 1, + 40, 1, 41, 1, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 1, 1, + 52, 1, 1, 53, 54, 1, 55, 1, 56, 1, 1, 1, 1, 1, 1, 1, + 57, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 58, 59, 60, 1, + 1, 41, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 61, 1, 1, }; static RE_UINT8 re_terminal_punctuation_stage_4[] = { @@ -7614,9 +8095,10 @@ static RE_UINT8 re_terminal_punctuation_stage_4[] = { 0, 0, 0, 38, 0, 0, 39, 0, 1, 0, 0, 40, 36, 0, 41, 0, 0, 0, 42, 0, 36, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 43, 0, 44, 0, 0, 45, 0, 0, 0, 0, 0, 46, 0, 0, 24, 47, 0, - 0, 0, 48, 0, 0, 0, 49, 0, 0, 50, 0, 0, 0, 0, 51, 0, - 0, 0, 29, 0, 0, 0, 0, 52, 0, 0, 0, 33, 0, 0, 0, 53, - 0, 54, 55, 0, + 0, 0, 48, 0, 0, 0, 49, 0, 0, 50, 0, 0, 0, 4, 0, 0, + 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 29, 0, 0, 53, 0, 0, + 0, 0, 48, 54, 0, 0, 0, 55, 0, 0, 0, 33, 0, 0, 0, 56, + 0, 57, 58, 0, 59, 0, 0, 0, }; static RE_UINT8 re_terminal_punctuation_stage_5[] = { @@ -7632,11 +8114,12 @@ static RE_UINT8 re_terminal_punctuation_stage_5[] = { 0, 0, 0, 128, 0, 0, 3, 0, 0, 8, 0, 0, 0, 0, 247, 0, 18, 0, 0, 0, 0, 0, 1, 0, 0, 0, 128, 0, 0, 0, 63, 0, 0, 0, 0, 252, 0, 0, 0, 30, 128, 63, 0, 0, 3, 0, 0, 0, - 14, 0, 0, 0, 96, 32, 0, 0, 0, 0, 0, 31, 60, 2, 0, 0, - 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 128, 3, 16, 0, 0, 0, + 14, 0, 0, 0, 96, 32, 0, 192, 0, 0, 0, 31, 0, 56, 0, 8, + 60, 254, 255, 0, 0, 0, 0, 112, 0, 0, 2, 0, 0, 0, 31, 0, + 0, 0, 32, 0, 0, 0, 128, 3, 16, 0, 0, 0, 128, 7, 0, 0, }; -/* Terminal_Punctuation: 808 bytes. */ +/* Terminal_Punctuation: 874 bytes. */ RE_UINT32 re_get_terminal_punctuation(RE_UINT32 ch) { RE_UINT32 code; @@ -7644,9 +8127,9 @@ RE_UINT32 re_get_terminal_punctuation(RE_UINT32 ch) { RE_UINT32 pos; RE_UINT32 value; - f = ch >> 14; - code = ch ^ (f << 14); - pos = (RE_UINT32)re_terminal_punctuation_stage_1[f] << 4; + f = ch >> 15; + code = ch ^ (f << 15); + pos = (RE_UINT32)re_terminal_punctuation_stage_1[f] << 5; f = code >> 10; code ^= f << 10; pos = (RE_UINT32)re_terminal_punctuation_stage_2[pos + f] << 3; @@ -7850,76 +8333,82 @@ static RE_UINT8 re_other_alphabetic_stage_1[] = { }; static RE_UINT8 re_other_alphabetic_stage_2[] = { - 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 7, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 9, - 10, 11, 12, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 13, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 14, 6, 6, 6, 6, 6, 6, 15, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 5, + 6, 7, 3, 3, 3, 3, 8, 3, 3, 3, 3, 9, 3, 3, 10, 11, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, }; static RE_UINT8 re_other_alphabetic_stage_3[] = { 0, 0, 0, 1, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, 14, 0, 0, 0, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, - 25, 26, 27, 28, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 24, 0, 25, 26, 27, 28, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, - 32, 33, 34, 35, 36, 37, 38, 0, 0, 0, 0, 39, 0, 0, 0, 40, - 0, 0, 0, 0, 41, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, + 32, 33, 34, 35, 36, 37, 38, 39, 0, 0, 0, 0, 40, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 42, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, + 44, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, + 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; static RE_UINT8 re_other_alphabetic_stage_4[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 4, 0, 5, 6, 0, 0, 7, 8, - 9, 10, 0, 0, 0, 11, 0, 0, 12, 13, 0, 0, 0, 0, 0, 14, - 15, 16, 17, 18, 19, 20, 21, 18, 19, 20, 22, 23, 19, 20, 24, 18, - 19, 20, 25, 18, 26, 20, 27, 0, 15, 20, 28, 18, 19, 20, 28, 18, - 19, 20, 29, 18, 18, 0, 30, 31, 0, 32, 33, 0, 0, 34, 33, 0, - 0, 0, 0, 35, 36, 37, 0, 0, 0, 38, 39, 40, 41, 0, 0, 0, - 0, 0, 42, 0, 0, 0, 0, 0, 31, 31, 31, 31, 0, 43, 44, 0, - 0, 0, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 10, 47, 0, - 48, 0, 49, 50, 0, 0, 0, 0, 51, 52, 15, 0, 53, 54, 0, 55, - 0, 56, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 57, - 0, 0, 0, 0, 0, 43, 58, 59, 0, 0, 0, 0, 0, 0, 0, 58, - 0, 0, 0, 60, 42, 0, 0, 0, 0, 61, 0, 0, 62, 63, 15, 0, - 0, 64, 65, 0, 15, 63, 0, 0, 0, 66, 67, 0, 0, 68, 0, 69, - 0, 0, 0, 0, 0, 0, 0, 70, 71, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 72, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, - 53, 74, 75, 0, 26, 76, 0, 0, 53, 65, 0, 0, 53, 77, 0, 0, - 0, 78, 0, 0, 0, 0, 42, 44, 19, 20, 21, 18, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 10, 62, 0, 0, 0, 0, 0, 0, 79, 0, 0, - 0, 80, 81, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, - 0, 0, 35, 84, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, - 0, 10, 85, 85, 59, 0, 0, 0, + 9, 10, 0, 0, 0, 11, 0, 0, 12, 13, 0, 0, 0, 0, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 19, 20, 21, 23, 24, 20, 21, 25, 19, + 20, 21, 26, 19, 27, 21, 28, 0, 16, 21, 29, 19, 20, 21, 29, 19, + 20, 21, 30, 19, 19, 0, 31, 32, 0, 33, 34, 0, 0, 35, 34, 0, + 0, 0, 0, 36, 37, 38, 0, 0, 0, 39, 40, 41, 42, 0, 0, 0, + 0, 0, 43, 0, 0, 0, 0, 0, 32, 32, 32, 32, 0, 44, 45, 0, + 0, 0, 0, 0, 46, 47, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, + 49, 0, 50, 51, 0, 0, 0, 0, 52, 53, 16, 0, 54, 55, 0, 56, + 0, 57, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 58, + 0, 0, 0, 0, 0, 44, 59, 60, 0, 0, 0, 0, 0, 0, 0, 59, + 0, 0, 0, 61, 21, 0, 0, 0, 0, 62, 0, 0, 63, 14, 64, 0, + 0, 65, 66, 0, 16, 14, 0, 0, 0, 67, 68, 0, 0, 69, 0, 70, + 0, 0, 0, 0, 0, 0, 0, 71, 72, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 73, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, + 54, 75, 76, 0, 27, 77, 0, 0, 54, 66, 0, 0, 54, 78, 0, 0, + 0, 79, 0, 0, 0, 0, 43, 45, 16, 21, 22, 19, 0, 0, 0, 0, + 0, 53, 80, 0, 0, 10, 63, 0, 0, 0, 0, 0, 0, 81, 82, 0, + 0, 83, 84, 0, 0, 85, 0, 0, 86, 87, 0, 0, 0, 0, 0, 0, + 0, 88, 0, 0, 89, 90, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, + 0, 0, 36, 92, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, + 93, 94, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, + 0, 10, 96, 96, 60, 0, 0, 0, }; static RE_UINT8 re_other_alphabetic_stage_5[] = { 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 255, 191, 182, 0, 0, 0, 0, 0, 255, 7, 0, 248, 255, 254, 0, 0, 1, 0, 0, 0, 192, 31, 158, 33, 0, 0, 0, 0, 2, 0, 0, 0, 255, 255, 192, 255, 1, 0, - 0, 0, 192, 248, 239, 30, 0, 0, 240, 3, 255, 255, 15, 0, 0, 0, - 0, 0, 0, 204, 255, 223, 224, 0, 12, 0, 0, 0, 14, 0, 0, 0, - 0, 0, 0, 192, 159, 25, 128, 0, 135, 25, 2, 0, 0, 0, 35, 0, - 191, 27, 0, 0, 159, 25, 192, 0, 4, 0, 0, 0, 199, 29, 128, 0, - 223, 29, 96, 0, 223, 29, 128, 0, 0, 128, 95, 255, 0, 0, 12, 0, - 0, 0, 242, 7, 0, 32, 0, 0, 0, 0, 242, 27, 0, 0, 254, 255, - 3, 224, 255, 254, 255, 255, 255, 31, 0, 248, 127, 121, 0, 0, 192, 195, - 133, 1, 30, 0, 124, 0, 0, 48, 0, 0, 0, 128, 0, 0, 192, 255, - 255, 1, 0, 0, 0, 2, 0, 0, 255, 15, 255, 1, 1, 3, 0, 0, - 0, 0, 128, 15, 0, 0, 224, 127, 254, 255, 31, 0, 31, 0, 0, 0, - 0, 0, 224, 255, 7, 0, 0, 0, 254, 51, 0, 0, 128, 255, 3, 0, - 240, 255, 63, 0, 128, 255, 31, 0, 255, 255, 255, 255, 255, 3, 0, 0, - 0, 0, 240, 15, 248, 0, 0, 0, 3, 0, 0, 0, 0, 0, 240, 255, - 192, 7, 0, 0, 128, 255, 7, 0, 0, 254, 127, 0, 8, 48, 0, 0, - 0, 0, 157, 65, 0, 248, 32, 0, 248, 7, 0, 0, 0, 0, 0, 64, - 0, 0, 192, 7, 110, 240, 0, 0, 0, 0, 0, 255, 63, 0, 0, 0, - 0, 0, 255, 1, 0, 0, 248, 255, 0, 240, 159, 0, 0, 128, 63, 127, - 0, 0, 255, 127, 1, 0, 0, 0, 0, 248, 63, 0, 0, 0, 127, 0, - 255, 255, 255, 127, 255, 3, 255, 255, + 0, 0, 192, 248, 239, 30, 0, 0, 0, 0, 240, 255, 248, 3, 255, 255, + 15, 0, 0, 0, 0, 0, 0, 204, 255, 223, 224, 0, 12, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 192, 159, 25, 128, 0, 135, 25, 2, 0, + 0, 0, 35, 0, 191, 27, 0, 0, 159, 25, 192, 0, 4, 0, 0, 0, + 199, 29, 128, 0, 223, 29, 96, 0, 223, 29, 128, 0, 0, 128, 95, 255, + 0, 0, 12, 0, 0, 0, 242, 7, 0, 32, 0, 0, 0, 0, 242, 27, + 0, 0, 254, 255, 3, 224, 255, 254, 255, 255, 255, 31, 0, 248, 127, 121, + 0, 0, 192, 195, 133, 1, 30, 0, 124, 0, 0, 48, 0, 0, 0, 128, + 0, 0, 192, 255, 255, 1, 0, 0, 96, 0, 0, 0, 0, 2, 0, 0, + 255, 15, 255, 1, 0, 0, 128, 15, 0, 0, 224, 127, 254, 255, 31, 0, + 31, 0, 0, 0, 0, 0, 224, 255, 7, 0, 0, 0, 254, 51, 0, 0, + 128, 255, 3, 0, 240, 255, 63, 0, 128, 255, 31, 0, 255, 255, 255, 255, + 255, 3, 0, 0, 0, 0, 240, 15, 248, 0, 0, 0, 3, 0, 0, 0, + 47, 0, 0, 0, 192, 7, 0, 0, 128, 255, 7, 0, 0, 254, 127, 0, + 8, 48, 0, 0, 0, 0, 157, 65, 0, 248, 32, 0, 248, 7, 0, 0, + 0, 0, 0, 64, 0, 0, 192, 7, 110, 240, 0, 0, 0, 0, 0, 255, + 63, 0, 0, 0, 0, 0, 255, 1, 0, 0, 248, 255, 0, 240, 159, 64, + 59, 0, 0, 0, 0, 128, 63, 127, 0, 0, 0, 48, 0, 0, 255, 127, + 1, 0, 0, 0, 0, 248, 63, 0, 0, 0, 0, 224, 255, 7, 0, 0, + 0, 128, 127, 127, 0, 0, 252, 255, 255, 254, 127, 0, 0, 0, 127, 0, + 255, 255, 255, 127, 127, 255, 255, 249, 219, 7, 0, 0, 128, 0, 0, 0, + 255, 3, 255, 255, }; -/* Other_Alphabetic: 929 bytes. */ +/* Other_Alphabetic: 1021 bytes. */ RE_UINT32 re_get_other_alphabetic(RE_UINT32 ch) { RE_UINT32 code; @@ -7929,10 +8418,10 @@ RE_UINT32 re_get_other_alphabetic(RE_UINT32 ch) { f = ch >> 16; code = ch ^ (f << 16); - pos = (RE_UINT32)re_other_alphabetic_stage_1[f] << 5; - f = code >> 11; - code ^= f << 11; - pos = (RE_UINT32)re_other_alphabetic_stage_2[pos + f] << 3; + pos = (RE_UINT32)re_other_alphabetic_stage_1[f] << 4; + f = code >> 12; + code ^= f << 12; + pos = (RE_UINT32)re_other_alphabetic_stage_2[pos + f] << 4; f = code >> 8; code ^= f << 8; pos = (RE_UINT32)re_other_alphabetic_stage_3[pos + f] << 3; @@ -7948,41 +8437,47 @@ RE_UINT32 re_get_other_alphabetic(RE_UINT32 ch) { /* Ideographic. */ static RE_UINT8 re_ideographic_stage_1[] = { - 0, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, + 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, }; static RE_UINT8 re_ideographic_stage_2[] = { - 0, 0, 0, 1, 2, 3, 3, 3, 3, 4, 0, 0, 0, 0, 0, 5, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 7, 0, 0, 0, 8, + 0, 0, 0, 1, 2, 3, 3, 3, 3, 4, 0, 0, 0, 0, 0, 5, + 0, 0, 0, 0, 0, 0, 0, 3, 6, 0, 0, 0, 0, 0, 0, 0, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 8, 9, 0, 0, 10, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; static RE_UINT8 re_ideographic_stage_3[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 4, 0, 0, 0, 0, 5, 6, 0, 0, - 2, 2, 2, 7, 2, 2, 2, 2, 2, 2, 2, 8, 9, 0, 0, 0, - 0, 0, 0, 0, 2, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 4, 0, 0, 0, 0, 5, 6, 0, 0, + 2, 2, 2, 7, 2, 8, 0, 0, 2, 2, 2, 9, 2, 2, 2, 2, + 2, 2, 2, 10, 11, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 12, + 0, 0, 0, 0, 2, 13, 0, 0, }; static RE_UINT8 re_ideographic_stage_4[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, - 2, 2, 2, 2, 2, 2, 2, 4, 0, 0, 0, 0, 2, 2, 2, 2, - 2, 5, 2, 6, 0, 0, 0, 0, 2, 2, 2, 7, 2, 2, 2, 2, - 2, 2, 2, 2, 8, 2, 2, 2, 9, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, + 2, 2, 2, 2, 2, 2, 2, 4, 0, 0, 0, 0, 2, 2, 2, 2, + 2, 5, 2, 6, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 7, + 2, 2, 2, 8, 0, 0, 0, 0, 2, 2, 2, 9, 2, 2, 2, 2, + 2, 2, 2, 2, 10, 2, 2, 2, 11, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 12, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, }; static RE_UINT8 re_ideographic_stage_5[] = { 0, 0, 0, 0, 0, 0, 0, 0, 192, 0, 0, 0, 254, 3, 0, 7, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 0, - 255, 31, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 63, 255, 255, - 255, 255, 255, 3, 0, 0, 0, 0, 255, 255, 127, 0, 0, 0, 0, 0, - 255, 255, 255, 255, 255, 255, 31, 0, 255, 255, 255, 63, 0, 0, 0, 0, + 255, 255, 63, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 63, 255, 255, + 255, 255, 255, 3, 0, 0, 0, 0, 255, 255, 255, 255, 255, 31, 0, 0, + 255, 255, 255, 255, 255, 255, 7, 0, 255, 255, 127, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 31, 0, 255, 255, 255, 63, 255, 255, 255, 255, + 255, 255, 255, 255, 3, 0, 0, 0, 255, 255, 255, 63, 0, 0, 0, 0, }; -/* Ideographic: 297 bytes. */ +/* Ideographic: 393 bytes. */ RE_UINT32 re_get_ideographic(RE_UINT32 ch) { RE_UINT32 code; @@ -8018,8 +8513,8 @@ static RE_UINT8 re_diacritic_stage_1[] = { static RE_UINT8 re_diacritic_stage_2[] = { 0, 1, 2, 3, 4, 5, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 7, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 9, - 10, 11, 12, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 14, 4, 4, 15, 4, 4, + 10, 11, 12, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 14, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 15, 4, 4, 16, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, }; @@ -8031,8 +8526,9 @@ static RE_UINT8 re_diacritic_stage_3[] = { 26, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 28, 29, 30, 31, 32, 1, 1, 1, 1, 1, 1, 1, 33, 1, 1, 34, 35, 1, 1, 36, 1, 1, 1, 1, 1, 1, 1, 37, 1, 1, 1, 1, 1, - 38, 39, 40, 41, 42, 43, 44, 1, 1, 1, 45, 1, 1, 1, 1, 46, - 1, 47, 1, 1, 1, 1, 1, 1, 48, 1, 1, 1, 1, 1, 1, 1, + 38, 39, 40, 41, 42, 43, 44, 45, 1, 1, 1, 1, 46, 1, 1, 1, + 1, 1, 47, 1, 1, 1, 1, 48, 1, 49, 1, 1, 1, 1, 1, 1, + 50, 51, 1, 1, 1, 1, 1, 1, }; static RE_UINT8 re_diacritic_stage_4[] = { @@ -8055,12 +8551,13 @@ static RE_UINT8 re_diacritic_stage_4[] = { 0, 0, 68, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 1, 2, 71, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 74, - 0, 0, 0, 0, 0, 75, 0, 0, 0, 76, 0, 63, 0, 0, 2, 0, - 0, 77, 0, 0, 0, 0, 0, 78, 0, 22, 25, 79, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 15, 2, 0, - 0, 15, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, - 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 83, 84, 85, 0, 0, - 0, 0, 0, 0, 0, 0, 86, 0, + 0, 0, 0, 0, 0, 75, 0, 0, 0, 76, 0, 63, 0, 0, 77, 0, + 0, 78, 0, 0, 0, 0, 0, 79, 0, 22, 25, 80, 0, 0, 0, 0, + 0, 0, 81, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 15, 2, 0, + 0, 15, 0, 0, 0, 42, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, + 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, + 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 86, 87, 88, 0, 0, + 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 90, 0, 0, 0, 0, 0, }; static RE_UINT8 re_diacritic_stage_5[] = { @@ -8069,7 +8566,7 @@ static RE_UINT8 re_diacritic_stage_5[] = { 48, 0, 0, 0, 248, 0, 0, 0, 0, 0, 0, 2, 0, 0, 254, 255, 251, 255, 255, 191, 22, 0, 0, 0, 0, 248, 135, 1, 0, 0, 0, 128, 97, 28, 0, 0, 255, 7, 0, 0, 192, 255, 1, 0, 0, 248, 63, 0, - 0, 0, 0, 3, 240, 255, 255, 127, 0, 0, 0, 16, 0, 32, 30, 0, + 0, 0, 0, 3, 248, 255, 255, 127, 0, 0, 0, 16, 0, 32, 30, 0, 0, 0, 2, 0, 0, 32, 0, 0, 0, 4, 0, 0, 128, 95, 0, 0, 0, 31, 0, 0, 0, 0, 160, 194, 220, 0, 0, 0, 64, 0, 0, 0, 0, 0, 128, 6, 128, 191, 0, 12, 0, 254, 15, 32, 0, 0, 0, 14, @@ -8081,14 +8578,15 @@ static RE_UINT8 re_diacritic_stage_5[] = { 0, 0, 0, 48, 0, 0, 3, 0, 0, 0, 128, 255, 3, 0, 0, 0, 0, 1, 0, 0, 255, 255, 3, 0, 0, 120, 0, 0, 0, 0, 8, 0, 32, 0, 0, 0, 0, 0, 0, 56, 7, 0, 0, 0, 0, 0, 64, 0, - 0, 0, 0, 248, 0, 48, 0, 0, 255, 63, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 248, 0, 48, 0, 0, 255, 255, 0, 0, 0, 0, 1, 0, 0, 0, 0, 192, 8, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 6, - 0, 0, 24, 0, 0, 0, 96, 0, 0, 6, 0, 0, 192, 31, 31, 0, - 12, 0, 0, 0, 0, 0, 31, 0, 0, 128, 255, 255, 128, 227, 7, 248, - 231, 15, 0, 0, 0, 60, 0, 0, 0, 0, 127, 0, + 0, 0, 24, 0, 1, 28, 0, 0, 0, 0, 96, 0, 0, 6, 0, 0, + 192, 31, 31, 0, 68, 0, 0, 0, 12, 0, 0, 0, 0, 8, 0, 0, + 0, 0, 31, 0, 0, 128, 255, 255, 128, 227, 7, 248, 231, 15, 0, 0, + 0, 60, 0, 0, 0, 0, 127, 0, 112, 7, 0, 0, }; -/* Diacritic: 981 bytes. */ +/* Diacritic: 1029 bytes. */ RE_UINT32 re_get_diacritic(RE_UINT32 ch) { RE_UINT32 code; @@ -8117,16 +8615,17 @@ RE_UINT32 re_get_diacritic(RE_UINT32 ch) { /* Extender. */ static RE_UINT8 re_extender_stage_1[] = { - 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, + 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, }; static RE_UINT8 re_extender_stage_2[] = { - 0, 1, 2, 3, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 5, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, - 2, 2, 8, 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, 2, 2, + 0, 1, 2, 3, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 5, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, + 2, 2, 8, 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, 10, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, }; static RE_UINT8 re_extender_stage_3[] = { @@ -8134,7 +8633,8 @@ static RE_UINT8 re_extender_stage_3[] = { 1, 1, 1, 1, 1, 1, 1, 1, 6, 1, 7, 1, 8, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 10, 1, 1, 1, 1, 1, 11, 1, 1, 12, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, - 1, 1, 1, 15, 1, 16, 1, 1, 1, 1, 1, 17, 1, 1, 1, 1, + 1, 1, 1, 15, 1, 16, 1, 1, 1, 1, 1, 17, 1, 1, 1, 18, + 1, 19, 1, 1, 1, 1, 1, 1, }; static RE_UINT8 re_extender_stage_4[] = { @@ -8147,6 +8647,7 @@ static RE_UINT8 re_extender_stage_4[] = { 0, 0, 0, 0, 0, 0, 17, 5, 0, 0, 0, 18, 0, 0, 19, 20, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 23, 0, 0, 0, 0, 0, }; static RE_UINT8 re_extender_stage_5[] = { @@ -8155,10 +8656,10 @@ static RE_UINT8 re_extender_stage_5[] = { 128, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 8, 32, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 96, 0, 0, 0, 112, 0, 0, 32, 0, 0, 16, 0, 0, 0, 128, 0, 0, 0, 0, 1, 0, 0, 0, 0, 32, - 0, 0, 24, 0, 192, 1, 0, 0, 12, 0, 0, 0, + 0, 0, 24, 0, 192, 1, 0, 0, 12, 0, 0, 0, 112, 0, 0, 0, }; -/* Extender: 414 bytes. */ +/* Extender: 457 bytes. */ RE_UINT32 re_get_extender(RE_UINT32 ch) { RE_UINT32 code; @@ -8166,9 +8667,9 @@ RE_UINT32 re_get_extender(RE_UINT32 ch) { RE_UINT32 pos; RE_UINT32 value; - f = ch >> 15; - code = ch ^ (f << 15); - pos = (RE_UINT32)re_extender_stage_1[f] << 4; + f = ch >> 16; + code = ch ^ (f << 16); + pos = (RE_UINT32)re_extender_stage_1[f] << 5; f = code >> 11; code ^= f << 11; pos = (RE_UINT32)re_extender_stage_2[pos + f] << 3; @@ -8359,41 +8860,43 @@ RE_UINT32 re_get_noncharacter_code_point(RE_UINT32 ch) { /* Other_Grapheme_Extend. */ static RE_UINT8 re_other_grapheme_extend_stage_1[] = { - 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, + 0, 1, 1, 2, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 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, }; static RE_UINT8 re_other_grapheme_extend_stage_2[] = { - 0, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, - 1, 5, 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, 1, 1, + 0, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 6, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, }; static RE_UINT8 re_other_grapheme_extend_stage_3[] = { - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 0, 0, 0, 0, 0, - 9, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 3, 4, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 8, 9, 10, 0, 0, + 0, 11, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, }; static RE_UINT8 re_other_grapheme_extend_stage_4[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, - 0, 0, 0, 0, 1, 2, 1, 2, 0, 0, 0, 3, 1, 2, 0, 4, - 5, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 1, 2, 0, 0, - 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 10, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, + 0, 1, 2, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, + 0, 1, 2, 0, 0, 0, 4, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, + 0, 11, 11, 11, 0, 0, 0, 0, }; static RE_UINT8 re_other_grapheme_extend_stage_5[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, - 0, 0, 128, 0, 0, 0, 0, 0, 4, 0, 96, 0, 0, 0, 0, 0, - 0, 128, 0, 128, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 32, 0, 0, 0, 0, 0, 128, 0, 0, - 0, 0, 0, 0, 32, 192, 7, 0, + 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 128, 0, 4, 0, 96, 0, + 0, 128, 0, 128, 0, 16, 0, 0, 0, 192, 0, 0, 0, 0, 0, 192, + 0, 0, 1, 32, 0, 128, 0, 0, 32, 192, 7, 0, 255, 255, 255, 255, }; -/* Other_Grapheme_Extend: 289 bytes. */ +/* Other_Grapheme_Extend: 332 bytes. */ RE_UINT32 re_get_other_grapheme_extend(RE_UINT32 ch) { RE_UINT32 code; @@ -8401,18 +8904,18 @@ RE_UINT32 re_get_other_grapheme_extend(RE_UINT32 ch) { RE_UINT32 pos; RE_UINT32 value; - f = ch >> 16; - code = ch ^ (f << 16); - pos = (RE_UINT32)re_other_grapheme_extend_stage_1[f] << 4; - f = code >> 12; - code ^= f << 12; + f = ch >> 14; + code = ch ^ (f << 14); + pos = (RE_UINT32)re_other_grapheme_extend_stage_1[f] << 3; + f = code >> 11; + code ^= f << 11; pos = (RE_UINT32)re_other_grapheme_extend_stage_2[pos + f] << 3; - f = code >> 9; - code ^= f << 9; + f = code >> 8; + code ^= f << 8; pos = (RE_UINT32)re_other_grapheme_extend_stage_3[pos + f] << 3; - f = code >> 6; - code ^= f << 6; - pos = (RE_UINT32)re_other_grapheme_extend_stage_4[pos + f] << 6; + f = code >> 5; + code ^= f << 5; + pos = (RE_UINT32)re_other_grapheme_extend_stage_4[pos + f] << 5; pos += code; value = (re_other_grapheme_extend_stage_5[pos >> 3] >> (pos & 0x7)) & 0x1; @@ -8581,31 +9084,34 @@ static RE_UINT8 re_unified_ideograph_stage_1[] = { static RE_UINT8 re_unified_ideograph_stage_2[] = { 0, 0, 0, 1, 2, 3, 3, 3, 3, 4, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 7, 0, 0, 0, 0, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 7, 8, 0, 0, 0, }; static RE_UINT8 re_unified_ideograph_stage_3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 4, 0, 0, - 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 6, 7, 0, 0, 0, + 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 6, 7, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 8, }; static RE_UINT8 re_unified_ideograph_stage_4[] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 3, 4, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 5, 1, 1, 1, 1, - 1, 1, 1, 1, 6, 1, 1, 1, 7, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 6, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 8, 0, 0, 0, 0, 0, }; static RE_UINT8 re_unified_ideograph_stage_5[] = { 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 63, 0, 255, 31, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 63, 0, 255, 255, 63, 0, 0, 0, 0, 0, 0, 192, 26, 128, 154, 3, 0, 0, 255, 255, 127, 0, 0, 0, 0, 0, - 255, 255, 255, 255, 255, 255, 31, 0, 255, 255, 255, 63, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 31, 0, 255, 255, 255, 63, 255, 255, 255, 255, + 255, 255, 255, 255, 3, 0, 0, 0, }; -/* Unified_Ideograph: 257 bytes. */ +/* Unified_Ideograph: 281 bytes. */ RE_UINT32 re_get_unified_ideograph(RE_UINT32 ch) { RE_UINT32 code; @@ -8718,16 +9224,15 @@ static RE_UINT8 re_deprecated_stage_4[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, - 0, 6, 0, 0, 0, 0, 0, 0, 7, 8, 8, 8, 0, 0, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, }; static RE_UINT8 re_deprecated_stage_5[] = { 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 8, 0, 0, 0, 128, 2, 24, 0, 0, 0, 0, 252, 0, 0, 0, 6, 0, 0, 2, 0, 0, 0, - 255, 255, 255, 255, }; -/* Deprecated: 230 bytes. */ +/* Deprecated: 226 bytes. */ RE_UINT32 re_get_deprecated(RE_UINT32 ch) { RE_UINT32 code; @@ -8827,26 +9332,26 @@ static RE_UINT8 re_logical_order_exception_stage_1[] = { }; static RE_UINT8 re_logical_order_exception_stage_2[] = { - 0, 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, 1, 1, 1, 1, 1, + 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, }; static RE_UINT8 re_logical_order_exception_stage_3[] = { - 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, }; static RE_UINT8 re_logical_order_exception_stage_4[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, }; static RE_UINT8 re_logical_order_exception_stage_5[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 96, 26, + 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 224, 4, 0, 0, 0, 0, 0, 0, 96, 26, }; -/* Logical_Order_Exception: 121 bytes. */ +/* Logical_Order_Exception: 145 bytes. */ RE_UINT32 re_get_logical_order_exception(RE_UINT32 ch) { RE_UINT32 code; @@ -8880,25 +9385,26 @@ static RE_UINT8 re_other_id_start_stage_1[] = { }; static RE_UINT8 re_other_id_start_stage_2[] = { - 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; static RE_UINT8 re_other_id_start_stage_3[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, }; static RE_UINT8 re_other_id_start_stage_4[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, }; static RE_UINT8 re_other_id_start_stage_5[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 64, 0, 0, - 0, 0, 0, 24, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 64, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, }; -/* Other_ID_Start: 113 bytes. */ +/* Other_ID_Start: 145 bytes. */ RE_UINT32 re_get_other_id_start(RE_UINT32 ch) { RE_UINT32 code; @@ -8908,10 +9414,10 @@ RE_UINT32 re_get_other_id_start(RE_UINT32 ch) { f = ch >> 16; code = ch ^ (f << 16); - pos = (RE_UINT32)re_other_id_start_stage_1[f] << 3; - f = code >> 13; - code ^= f << 13; - pos = (RE_UINT32)re_other_id_start_stage_2[pos + f] << 4; + pos = (RE_UINT32)re_other_id_start_stage_1[f] << 4; + f = code >> 12; + code ^= f << 12; + pos = (RE_UINT32)re_other_id_start_stage_2[pos + f] << 3; f = code >> 9; code ^= f << 9; pos = (RE_UINT32)re_other_id_start_stage_3[pos + f] << 3; @@ -8978,27 +9484,28 @@ RE_UINT32 re_get_other_id_continue(RE_UINT32 ch) { return value; } -/* STerm. */ +/* Sentence_Terminal. */ -static RE_UINT8 re_sterm_stage_1[] = { - 0, 1, 2, 3, 4, 5, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, +static RE_UINT8 re_sentence_terminal_stage_1[] = { + 0, 1, 2, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, }; -static RE_UINT8 re_sterm_stage_2[] = { +static RE_UINT8 re_sentence_terminal_stage_2[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 3, 3, 9, 10, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 11, 12, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 13, - 3, 3, 14, 3, 15, 16, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 17, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 18, + 3, 3, 14, 3, 15, 16, 3, 17, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 18, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 19, + 3, 3, 3, 3, 3, 3, 20, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, }; -static RE_UINT8 re_sterm_stage_3[] = { +static RE_UINT8 re_sentence_terminal_stage_3[] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 1, 1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 10, 1, 11, 1, @@ -9006,12 +9513,13 @@ static RE_UINT8 re_sterm_stage_3[] = { 17, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 1, 1, 1, 19, 1, 1, 1, 1, 1, 1, 1, 1, 20, 1, 1, 21, 22, 1, 1, 23, 24, 25, 26, 27, 28, 1, 29, 1, 1, 1, 1, 30, 1, 31, 1, - 1, 1, 1, 1, 32, 1, 1, 1, 33, 34, 35, 36, 37, 1, 1, 1, - 1, 1, 1, 38, 39, 1, 1, 1, 1, 1, 1, 1, 40, 41, 42, 1, - 1, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 32, 1, 1, 1, 33, 34, 35, 36, 37, 38, 1, 1, + 39, 1, 1, 40, 41, 1, 42, 1, 41, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 43, 44, 45, 1, 1, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 46, 1, 1, }; -static RE_UINT8 re_sterm_stage_4[] = { +static RE_UINT8 re_sentence_terminal_stage_4[] = { 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 4, 0, 5, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 8, 0, 0, 0, 0, 9, 0, 0, 0, 10, 0, 11, 0, 0, @@ -9021,11 +9529,12 @@ static RE_UINT8 re_sterm_stage_4[] = { 0, 0, 21, 0, 0, 24, 0, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 29, 0, 1, 0, 0, 30, 0, 0, 23, 0, 0, 0, 31, 0, 0, 16, 32, 0, 0, 0, 33, 0, - 0, 0, 34, 0, 0, 35, 0, 0, 0, 0, 36, 0, 0, 0, 37, 0, - 0, 0, 0, 21, 0, 0, 0, 38, 0, 39, 40, 0, + 0, 0, 34, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 0, 36, 0, + 0, 0, 37, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 21, + 0, 0, 0, 40, 0, 41, 42, 0, 43, 0, 0, 0, }; -static RE_UINT8 re_sterm_stage_5[] = { +static RE_UINT8 re_sentence_terminal_stage_5[] = { 0, 0, 0, 0, 2, 64, 0, 128, 0, 2, 0, 0, 0, 0, 0, 128, 0, 0, 16, 0, 7, 0, 0, 0, 0, 0, 0, 2, 48, 0, 0, 0, 0, 12, 0, 0, 132, 1, 0, 0, 0, 64, 0, 0, 0, 0, 96, 0, @@ -9034,33 +9543,33 @@ static RE_UINT8 re_sterm_stage_5[] = { 4, 0, 0, 0, 0, 192, 0, 0, 0, 0, 136, 0, 0, 0, 192, 0, 0, 128, 0, 0, 0, 3, 0, 0, 0, 0, 0, 224, 0, 0, 3, 0, 0, 8, 0, 0, 0, 0, 196, 0, 2, 0, 0, 0, 128, 1, 0, 0, - 3, 0, 0, 0, 14, 0, 0, 0, 96, 32, 0, 0, 0, 0, 0, 27, - 12, 2, 0, 0, 6, 0, 0, 0, 0, 0, 32, 0, 0, 0, 128, 1, - 16, 0, 0, 0, + 3, 0, 0, 0, 14, 0, 0, 0, 96, 32, 0, 192, 0, 0, 0, 27, + 0, 24, 0, 0, 12, 254, 255, 0, 6, 0, 0, 0, 0, 0, 0, 112, + 0, 0, 32, 0, 0, 0, 128, 1, 16, 0, 0, 0, 0, 1, 0, 0, }; -/* STerm: 668 bytes. */ +/* Sentence_Terminal: 726 bytes. */ -RE_UINT32 re_get_sterm(RE_UINT32 ch) { +RE_UINT32 re_get_sentence_terminal(RE_UINT32 ch) { RE_UINT32 code; RE_UINT32 f; RE_UINT32 pos; RE_UINT32 value; - f = ch >> 14; - code = ch ^ (f << 14); - pos = (RE_UINT32)re_sterm_stage_1[f] << 4; + f = ch >> 15; + code = ch ^ (f << 15); + pos = (RE_UINT32)re_sentence_terminal_stage_1[f] << 5; f = code >> 10; code ^= f << 10; - pos = (RE_UINT32)re_sterm_stage_2[pos + f] << 3; + pos = (RE_UINT32)re_sentence_terminal_stage_2[pos + f] << 3; f = code >> 7; code ^= f << 7; - pos = (RE_UINT32)re_sterm_stage_3[pos + f] << 2; + pos = (RE_UINT32)re_sentence_terminal_stage_3[pos + f] << 2; f = code >> 5; code ^= f << 5; - pos = (RE_UINT32)re_sterm_stage_4[pos + f] << 5; + pos = (RE_UINT32)re_sentence_terminal_stage_4[pos + f] << 5; pos += code; - value = (re_sterm_stage_5[pos >> 3] >> (pos & 0x7)) & 0x1; + value = (re_sentence_terminal_stage_5[pos >> 3] >> (pos & 0x7)) & 0x1; return value; } @@ -9235,6 +9744,61 @@ RE_UINT32 re_get_pattern_syntax(RE_UINT32 ch) { return value; } +/* Prepended_Concatenation_Mark. */ + +static RE_UINT8 re_prepended_concatenation_mark_stage_1[] = { + 0, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, +}; + +static RE_UINT8 re_prepended_concatenation_mark_stage_2[] = { + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 1, 1, 1, 1, +}; + +static RE_UINT8 re_prepended_concatenation_mark_stage_3[] = { + 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, +}; + +static RE_UINT8 re_prepended_concatenation_mark_stage_4[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 3, 0, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, +}; + +static RE_UINT8 re_prepended_concatenation_mark_stage_5[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 32, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, +}; + +/* Prepended_Concatenation_Mark: 162 bytes. */ + +RE_UINT32 re_get_prepended_concatenation_mark(RE_UINT32 ch) { + RE_UINT32 code; + RE_UINT32 f; + RE_UINT32 pos; + RE_UINT32 value; + + f = ch >> 15; + code = ch ^ (f << 15); + pos = (RE_UINT32)re_prepended_concatenation_mark_stage_1[f] << 3; + f = code >> 12; + code ^= f << 12; + pos = (RE_UINT32)re_prepended_concatenation_mark_stage_2[pos + f] << 3; + f = code >> 9; + code ^= f << 9; + pos = (RE_UINT32)re_prepended_concatenation_mark_stage_3[pos + f] << 3; + f = code >> 6; + code ^= f << 6; + pos = (RE_UINT32)re_prepended_concatenation_mark_stage_4[pos + f] << 6; + pos += code; + value = (re_prepended_concatenation_mark_stage_5[pos >> 3] >> (pos & 0x7)) & 0x1; + + return value; +} + /* Hangul_Syllable_Type. */ static RE_UINT8 re_hangul_syllable_type_stage_1[] = { @@ -9350,22 +9914,22 @@ static RE_UINT8 re_bidi_class_stage_2[] = { 2, 2, 2, 2, 2, 2, 87, 88, 88, 88, 89, 90, 91, 92, 93, 94, 2, 2, 95, 96, 2, 97, 98, 2, 2, 2, 2, 2, 2, 2, 2, 2, 99, 99, 100, 99, 101, 102, 103, 99, 99, 99, 99, 99, 104, 99, 99, 99, - 105, 106, 107, 108, 109, 110, 111, 2, 2, 112, 2, 113, 114, 115, 2, 2, + 105, 106, 107, 108, 109, 110, 111, 2, 112, 113, 2, 114, 115, 116, 117, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 118, 119, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 120, 121, 2, 2, 2, 2, 2, 2, 2, 2, 122, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 116, 117, 2, 2, 2, 2, 2, 2, 2, 2, 118, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 123, 2, 2, 2, 2, 2, 2, + 2, 2, 124, 125, 126, 2, 127, 2, 2, 2, 2, 2, 2, 128, 129, 130, + 2, 2, 2, 2, 131, 132, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 133, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 99, 134, 135, 99, 99, 99, 99, 99, 99, 99, 99, 99, 88, 136, 99, 99, + 137, 138, 139, 2, 2, 2, 53, 53, 53, 53, 53, 53, 53, 140, 141, 142, + 143, 144, 145, 146, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 147, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 119, 2, 2, 2, 2, 2, 2, - 2, 2, 120, 121, 122, 2, 123, 2, 2, 2, 2, 2, 2, 124, 125, 126, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 99, 127, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 88, 128, 99, 99, - 129, 130, 131, 2, 2, 2, 132, 133, 53, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 143, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 143, - 144, 144, 145, 146, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 147, + 148, 148, 149, 150, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, + 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, }; static RE_UINT8 re_bidi_class_stage_3[] = { @@ -9375,72 +9939,74 @@ static RE_UINT8 re_bidi_class_stage_3[] = { 21, 11, 11, 11, 11, 11, 11, 11, 22, 23, 17, 24, 25, 26, 26, 26, 27, 28, 29, 29, 30, 17, 31, 32, 29, 29, 29, 29, 29, 33, 34, 35, 29, 36, 29, 17, 28, 29, 29, 29, 29, 29, 37, 32, 26, 26, 38, 39, - 26, 40, 41, 26, 26, 42, 26, 26, 26, 26, 29, 29, 29, 29, 43, 17, - 44, 11, 11, 45, 46, 47, 48, 11, 49, 11, 11, 50, 51, 11, 48, 52, - 53, 11, 11, 50, 54, 49, 11, 55, 53, 11, 11, 50, 56, 11, 48, 57, - 49, 11, 11, 58, 51, 59, 48, 11, 60, 11, 11, 11, 61, 11, 11, 62, - 63, 11, 11, 64, 65, 66, 48, 67, 49, 11, 11, 50, 68, 11, 48, 11, - 49, 11, 11, 11, 51, 11, 48, 11, 11, 11, 11, 11, 69, 70, 11, 11, - 11, 11, 11, 71, 72, 11, 11, 11, 11, 11, 11, 73, 74, 11, 11, 11, - 11, 75, 11, 76, 11, 11, 11, 77, 78, 79, 17, 80, 59, 11, 11, 11, - 11, 11, 81, 82, 11, 83, 63, 84, 85, 86, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 81, 11, 11, 11, 87, 11, 11, 11, 11, 11, 11, - 4, 11, 11, 11, 11, 11, 11, 11, 88, 89, 11, 11, 11, 11, 11, 11, - 11, 90, 11, 90, 11, 48, 11, 48, 11, 11, 11, 91, 92, 93, 11, 87, - 94, 11, 11, 11, 11, 11, 11, 11, 11, 11, 95, 11, 11, 11, 11, 11, - 11, 11, 96, 97, 98, 11, 11, 11, 11, 11, 11, 11, 11, 99, 16, 16, - 11, 100, 11, 11, 11, 101, 102, 103, 11, 11, 11, 104, 11, 11, 11, 11, - 105, 11, 11, 106, 60, 11, 107, 105, 108, 11, 109, 11, 11, 11, 110, 108, - 11, 11, 111, 112, 11, 11, 11, 11, 11, 11, 11, 11, 11, 113, 114, 115, - 11, 11, 11, 11, 17, 17, 17, 116, 11, 11, 11, 117, 118, 119, 119, 120, - 121, 16, 122, 123, 124, 125, 126, 127, 128, 11, 129, 129, 129, 17, 17, 63, - 130, 131, 132, 133, 134, 16, 11, 11, 135, 16, 16, 16, 16, 16, 16, 16, - 16, 136, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 137, 11, 11, 11, 5, 16, 138, 16, 16, 16, 16, 16, 139, - 16, 16, 140, 11, 139, 11, 16, 16, 141, 142, 11, 11, 11, 11, 143, 16, - 16, 16, 144, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 145, - 16, 146, 16, 147, 148, 149, 11, 11, 11, 11, 11, 11, 11, 11, 150, 151, - 11, 11, 11, 11, 11, 11, 11, 152, 11, 11, 11, 11, 11, 11, 17, 17, - 16, 16, 16, 16, 153, 11, 11, 11, 16, 154, 16, 16, 16, 16, 16, 155, - 16, 16, 16, 16, 16, 137, 11, 156, 157, 16, 158, 159, 11, 11, 11, 11, - 11, 160, 4, 11, 11, 11, 11, 161, 11, 11, 11, 11, 16, 16, 155, 11, - 11, 120, 11, 11, 11, 16, 11, 162, 11, 11, 11, 163, 164, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 165, 11, 11, 11, 11, 11, 99, 11, 166, - 11, 11, 11, 11, 16, 16, 16, 16, 11, 16, 16, 16, 140, 11, 11, 11, - 119, 11, 11, 11, 11, 11, 152, 167, 11, 152, 11, 11, 11, 11, 11, 108, - 16, 16, 149, 11, 11, 11, 11, 11, 168, 11, 11, 11, 11, 11, 11, 11, - 169, 11, 170, 171, 11, 11, 11, 172, 11, 11, 11, 11, 173, 11, 17, 108, - 11, 11, 174, 11, 175, 108, 11, 11, 44, 11, 11, 176, 11, 11, 177, 11, - 11, 11, 178, 179, 180, 11, 11, 50, 11, 11, 11, 181, 49, 11, 68, 59, - 11, 11, 11, 11, 11, 11, 182, 11, 11, 183, 184, 26, 26, 29, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 185, 29, 29, 29, 29, - 29, 29, 29, 29, 29, 8, 8, 186, 17, 87, 187, 16, 16, 188, 189, 29, - 29, 29, 29, 29, 29, 29, 29, 190, 191, 3, 4, 5, 4, 5, 137, 11, - 11, 11, 11, 11, 11, 11, 192, 193, 194, 11, 11, 11, 16, 16, 16, 16, - 195, 156, 4, 11, 11, 11, 11, 86, 11, 11, 11, 11, 11, 11, 196, 142, - 11, 11, 11, 11, 11, 11, 11, 197, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 198, 26, 26, 26, 26, 26, 26, 199, 26, 26, 200, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 201, 26, 26, 26, 26, 202, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 203, 204, 49, 11, 11, 205, 206, 14, 137, 152, - 108, 11, 11, 207, 11, 11, 11, 11, 44, 11, 208, 209, 11, 11, 11, 210, - 108, 11, 11, 211, 11, 11, 11, 11, 11, 11, 152, 212, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 152, 213, 11, 49, 11, 11, 50, 63, 11, 214, 209, - 11, 11, 11, 215, 216, 11, 11, 11, 11, 11, 11, 217, 63, 11, 11, 11, - 11, 11, 11, 218, 63, 11, 11, 11, 11, 11, 219, 220, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 209, 11, 11, 11, 206, 11, 11, 11, 11, - 152, 44, 11, 11, 11, 11, 11, 11, 11, 221, 222, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 223, 224, 225, 11, 226, 11, 11, 11, 11, 11, - 16, 16, 16, 16, 227, 11, 11, 11, 16, 16, 16, 16, 16, 140, 11, 11, - 11, 11, 11, 11, 11, 161, 11, 11, 11, 228, 11, 11, 166, 11, 11, 11, - 135, 11, 11, 11, 229, 230, 230, 230, 26, 26, 26, 26, 26, 231, 26, 26, - 29, 29, 29, 29, 29, 29, 29, 232, 16, 16, 156, 16, 16, 16, 16, 16, - 16, 155, 233, 163, 163, 163, 16, 137, 234, 11, 11, 11, 11, 11, 133, 11, - 16, 16, 195, 16, 16, 16, 16, 235, 16, 16, 16, 16, 233, 236, 16, 237, - 16, 16, 16, 16, 16, 16, 16, 233, 16, 16, 16, 16, 139, 16, 16, 154, - 16, 16, 238, 16, 16, 16, 16, 16, 16, 16, 16, 16, 239, 16, 16, 16, - 16, 16, 16, 16, 16, 11, 195, 155, 16, 16, 16, 16, 16, 16, 16, 155, - 16, 16, 16, 16, 16, 240, 11, 11, 156, 16, 16, 16, 237, 87, 16, 16, - 237, 16, 235, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 241, + 26, 40, 41, 26, 26, 42, 26, 26, 26, 26, 29, 29, 29, 43, 44, 17, + 45, 11, 11, 46, 47, 48, 49, 11, 50, 11, 11, 51, 52, 11, 49, 53, + 54, 11, 11, 51, 55, 50, 11, 56, 54, 11, 11, 51, 57, 11, 49, 58, + 50, 11, 11, 59, 52, 60, 49, 11, 61, 11, 11, 11, 62, 11, 11, 63, + 64, 11, 11, 65, 66, 67, 49, 68, 50, 11, 11, 51, 69, 11, 49, 11, + 50, 11, 11, 11, 52, 11, 49, 11, 11, 11, 11, 11, 70, 71, 11, 11, + 11, 11, 11, 72, 73, 11, 11, 11, 11, 11, 11, 74, 75, 11, 11, 11, + 11, 76, 11, 77, 11, 11, 11, 78, 79, 80, 17, 81, 60, 11, 11, 11, + 11, 11, 82, 83, 11, 84, 64, 85, 86, 87, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 82, 11, 11, 11, 88, 11, 11, 11, 11, 11, 11, + 4, 11, 11, 11, 11, 11, 11, 11, 89, 90, 11, 11, 11, 11, 11, 11, + 11, 91, 11, 91, 11, 49, 11, 49, 11, 11, 11, 92, 93, 94, 11, 88, + 95, 11, 11, 11, 11, 11, 11, 11, 67, 11, 96, 11, 11, 11, 11, 11, + 11, 11, 97, 98, 99, 11, 11, 11, 11, 11, 11, 11, 11, 100, 16, 16, + 11, 101, 11, 11, 11, 102, 103, 104, 11, 11, 11, 105, 11, 11, 11, 11, + 106, 11, 11, 107, 61, 11, 108, 106, 109, 11, 110, 11, 11, 11, 111, 109, + 11, 11, 112, 113, 11, 11, 11, 11, 11, 11, 11, 11, 11, 114, 115, 116, + 11, 11, 11, 11, 17, 17, 17, 117, 11, 11, 11, 118, 119, 120, 120, 121, + 122, 16, 123, 124, 125, 126, 127, 128, 129, 11, 130, 130, 130, 17, 17, 64, + 131, 132, 133, 134, 135, 16, 11, 11, 136, 16, 16, 16, 16, 16, 16, 16, + 16, 137, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 138, 11, 11, 11, 5, 16, 139, 16, 16, 16, 16, 16, 140, + 16, 16, 141, 11, 142, 11, 16, 16, 143, 144, 11, 11, 11, 11, 145, 16, + 16, 16, 146, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 147, + 16, 148, 16, 149, 150, 151, 152, 11, 11, 11, 11, 11, 11, 11, 153, 154, + 11, 11, 11, 11, 11, 11, 11, 155, 11, 11, 11, 11, 11, 11, 17, 17, + 16, 16, 16, 16, 156, 11, 11, 11, 16, 157, 16, 16, 16, 16, 16, 158, + 16, 16, 16, 16, 16, 138, 11, 159, 160, 16, 161, 162, 11, 11, 11, 11, + 11, 163, 4, 11, 11, 11, 11, 164, 11, 11, 11, 11, 16, 16, 158, 11, + 11, 121, 11, 11, 11, 16, 11, 165, 11, 11, 11, 166, 152, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 167, 11, 11, 11, 11, 11, 100, 11, 168, + 11, 11, 11, 11, 16, 16, 16, 16, 11, 16, 16, 16, 141, 11, 11, 11, + 120, 11, 11, 11, 11, 11, 155, 169, 11, 65, 11, 11, 11, 11, 11, 109, + 16, 16, 151, 11, 11, 11, 11, 11, 170, 11, 11, 11, 11, 11, 11, 11, + 171, 11, 172, 173, 11, 11, 11, 174, 11, 11, 11, 11, 175, 11, 17, 109, + 11, 11, 176, 11, 177, 109, 11, 11, 45, 11, 11, 178, 11, 11, 179, 11, + 11, 11, 180, 181, 182, 11, 11, 51, 11, 11, 11, 183, 50, 11, 69, 60, + 11, 11, 11, 11, 11, 11, 184, 11, 11, 185, 186, 26, 26, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 187, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 8, 8, 188, 17, 88, 17, 16, 16, 189, 190, 29, + 29, 29, 29, 29, 29, 29, 29, 191, 192, 3, 4, 5, 4, 5, 138, 11, + 11, 11, 11, 11, 11, 11, 193, 194, 195, 11, 11, 11, 16, 16, 16, 16, + 196, 159, 4, 11, 11, 11, 11, 87, 11, 11, 11, 11, 11, 11, 197, 144, + 11, 11, 11, 11, 11, 11, 11, 198, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 199, 26, 26, 26, 26, 26, 26, 200, 26, 26, 201, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 202, 26, 26, 26, 26, 203, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 204, 205, 50, 11, 11, 206, 207, 14, 138, 155, + 109, 11, 11, 208, 11, 11, 11, 11, 45, 11, 209, 210, 11, 11, 11, 211, + 109, 11, 11, 212, 213, 11, 11, 11, 11, 11, 155, 214, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 155, 215, 11, 109, 11, 11, 51, 64, 11, 216, 210, + 11, 11, 11, 206, 71, 11, 11, 11, 11, 11, 11, 217, 218, 11, 11, 11, + 11, 11, 11, 219, 64, 69, 11, 11, 11, 11, 11, 220, 64, 11, 196, 11, + 11, 11, 221, 222, 11, 11, 11, 11, 11, 82, 223, 11, 11, 11, 11, 11, + 11, 11, 11, 224, 11, 11, 11, 11, 11, 225, 226, 227, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 210, 11, 11, 11, 207, 11, 11, 11, 11, + 155, 45, 11, 11, 11, 11, 11, 11, 11, 228, 229, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 230, 231, 232, 11, 233, 11, 11, 11, 11, 11, + 16, 16, 16, 16, 234, 11, 11, 11, 16, 16, 16, 16, 16, 141, 11, 11, + 11, 11, 11, 11, 11, 164, 11, 11, 11, 235, 11, 11, 168, 11, 11, 11, + 236, 11, 11, 11, 237, 238, 238, 238, 17, 17, 17, 239, 17, 17, 81, 179, + 240, 108, 241, 11, 11, 11, 11, 11, 242, 243, 244, 11, 11, 11, 11, 11, + 26, 26, 26, 26, 26, 245, 26, 26, 26, 26, 26, 26, 246, 26, 26, 26, + 29, 29, 29, 29, 29, 29, 29, 247, 16, 16, 159, 16, 16, 16, 16, 16, + 16, 158, 140, 166, 166, 166, 16, 138, 248, 11, 11, 11, 11, 11, 134, 11, + 16, 16, 16, 16, 16, 249, 196, 141, 16, 16, 16, 16, 16, 16, 16, 158, + 16, 16, 16, 16, 16, 156, 11, 11, 159, 16, 16, 16, 250, 88, 16, 16, + 250, 16, 251, 11, 11, 11, 11, 11, 11, 140, 250, 252, 159, 140, 11, 11, + 16, 151, 11, 11, 4, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 253, 8, 8, 8, 8, 8, 8, 8, 8, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 8, }; @@ -9457,56 +10023,59 @@ static RE_UINT8 re_bidi_class_stage_4[] = { 44, 40, 40, 40, 40, 45, 25, 46, 25, 47, 48, 49, 8, 8, 50, 40, 51, 40, 40, 40, 40, 45, 25, 25, 34, 34, 52, 25, 25, 53, 54, 34, 34, 55, 32, 25, 25, 31, 31, 56, 34, 34, 31, 34, 40, 25, 25, 25, - 57, 12, 12, 12, 12, 12, 58, 59, 60, 25, 59, 61, 60, 25, 12, 12, - 62, 12, 12, 12, 61, 12, 12, 12, 12, 12, 12, 59, 60, 59, 12, 61, - 63, 12, 64, 12, 65, 12, 12, 12, 65, 28, 66, 29, 29, 61, 12, 12, - 60, 67, 59, 61, 68, 12, 12, 12, 12, 12, 12, 66, 12, 58, 12, 12, - 58, 12, 12, 12, 59, 12, 12, 61, 13, 10, 69, 12, 59, 12, 12, 12, - 12, 12, 12, 62, 59, 62, 70, 29, 12, 65, 12, 12, 12, 12, 10, 71, - 12, 12, 12, 29, 12, 12, 58, 12, 62, 72, 12, 12, 61, 25, 57, 64, - 12, 28, 25, 57, 61, 25, 67, 59, 12, 12, 25, 29, 12, 12, 29, 12, - 12, 73, 74, 26, 60, 25, 25, 57, 25, 70, 12, 60, 25, 25, 60, 25, - 25, 25, 25, 59, 12, 12, 12, 60, 70, 25, 65, 65, 12, 12, 29, 62, - 60, 59, 12, 12, 58, 65, 12, 61, 12, 12, 12, 61, 10, 10, 26, 12, - 75, 12, 12, 12, 12, 12, 13, 11, 62, 59, 12, 12, 12, 67, 25, 29, - 12, 58, 60, 25, 25, 12, 64, 61, 10, 10, 76, 77, 12, 12, 61, 12, - 57, 28, 59, 12, 58, 12, 60, 12, 11, 26, 12, 12, 12, 12, 12, 23, - 12, 28, 66, 12, 12, 58, 25, 57, 72, 60, 25, 59, 28, 25, 25, 66, - 25, 25, 25, 57, 25, 12, 12, 12, 12, 70, 57, 59, 12, 12, 28, 25, - 29, 12, 12, 12, 62, 29, 67, 29, 12, 58, 29, 73, 12, 12, 12, 25, - 25, 62, 12, 12, 57, 25, 25, 25, 70, 25, 59, 61, 12, 59, 29, 12, - 25, 29, 12, 25, 12, 12, 12, 78, 26, 12, 12, 24, 12, 12, 12, 24, - 12, 12, 12, 22, 79, 79, 80, 81, 10, 10, 82, 83, 84, 85, 10, 10, - 10, 86, 10, 10, 10, 10, 10, 87, 0, 88, 89, 0, 90, 8, 91, 71, - 8, 8, 91, 71, 84, 84, 84, 84, 17, 71, 26, 12, 12, 20, 11, 23, - 10, 78, 92, 93, 12, 12, 23, 12, 10, 11, 23, 26, 12, 12, 92, 12, - 94, 10, 10, 10, 10, 26, 12, 12, 10, 20, 10, 10, 10, 10, 71, 12, - 10, 71, 12, 12, 10, 10, 8, 8, 8, 8, 8, 12, 12, 12, 23, 10, - 10, 10, 10, 24, 10, 23, 10, 10, 10, 26, 10, 10, 10, 10, 26, 24, - 10, 10, 20, 10, 26, 12, 12, 12, 12, 24, 71, 28, 29, 12, 24, 10, - 12, 12, 12, 28, 71, 12, 12, 12, 10, 10, 17, 10, 10, 12, 12, 12, - 10, 10, 10, 12, 95, 11, 10, 10, 11, 12, 62, 29, 11, 23, 12, 24, - 12, 12, 96, 11, 12, 12, 13, 12, 12, 12, 12, 71, 24, 10, 10, 10, - 12, 12, 12, 10, 12, 13, 71, 12, 12, 12, 12, 13, 97, 25, 25, 98, - 12, 12, 11, 12, 58, 58, 28, 12, 12, 65, 10, 12, 12, 12, 99, 12, - 12, 10, 12, 12, 12, 59, 12, 12, 12, 62, 25, 29, 12, 28, 25, 25, - 28, 62, 29, 59, 12, 61, 12, 12, 12, 12, 60, 57, 65, 65, 12, 12, - 28, 12, 12, 59, 70, 66, 59, 62, 12, 61, 59, 61, 12, 12, 12, 100, - 34, 34, 101, 34, 40, 40, 40, 102, 40, 40, 40, 103, 25, 25, 25, 29, - 104, 105, 10, 106, 107, 71, 108, 12, 40, 40, 40, 109, 30, 5, 6, 7, - 5, 110, 10, 71, 0, 0, 111, 112, 92, 12, 12, 12, 10, 10, 10, 11, - 113, 8, 8, 8, 12, 62, 57, 12, 34, 34, 34, 114, 31, 33, 34, 25, - 34, 34, 115, 52, 34, 33, 34, 34, 34, 34, 116, 10, 35, 35, 35, 35, - 35, 35, 35, 117, 12, 12, 25, 25, 25, 57, 12, 12, 28, 57, 65, 12, - 12, 28, 25, 60, 25, 59, 12, 12, 28, 12, 12, 12, 12, 62, 25, 57, - 29, 70, 12, 12, 28, 25, 57, 12, 12, 62, 25, 59, 28, 25, 72, 28, - 70, 12, 12, 12, 62, 29, 12, 67, 28, 25, 57, 73, 12, 12, 28, 61, - 25, 67, 12, 12, 12, 12, 12, 65, 0, 12, 12, 12, 12, 28, 29, 12, - 118, 0, 119, 25, 57, 60, 25, 12, 12, 12, 62, 29, 120, 121, 12, 12, - 12, 92, 12, 12, 13, 12, 12, 122, 8, 8, 8, 8, 25, 115, 34, 34, - 123, 40, 40, 40, 10, 10, 10, 71, 8, 8, 124, 11, 10, 10, 10, 26, - 12, 10, 10, 10, 10, 10, 12, 12, 10, 24, 10, 10, 71, 24, 10, 10, - 10, 11, 12, 12, 12, 12, 12, 125, + 57, 25, 25, 25, 58, 12, 12, 12, 12, 12, 59, 60, 61, 25, 60, 62, + 61, 25, 12, 12, 63, 12, 12, 12, 62, 12, 12, 12, 12, 12, 12, 60, + 61, 60, 12, 62, 64, 12, 65, 12, 66, 12, 12, 12, 66, 28, 67, 29, + 29, 62, 12, 12, 61, 68, 60, 62, 69, 12, 12, 12, 12, 12, 12, 67, + 12, 59, 12, 12, 59, 12, 12, 12, 60, 12, 12, 62, 13, 10, 70, 12, + 60, 12, 12, 12, 12, 12, 12, 63, 60, 63, 71, 29, 12, 66, 12, 12, + 12, 12, 10, 72, 12, 12, 12, 29, 12, 12, 59, 12, 63, 73, 12, 12, + 62, 25, 58, 65, 12, 28, 25, 58, 62, 25, 68, 60, 12, 12, 25, 29, + 12, 12, 29, 12, 12, 74, 75, 26, 61, 25, 25, 58, 25, 71, 12, 61, + 25, 25, 61, 25, 25, 25, 25, 60, 12, 12, 12, 61, 71, 25, 66, 66, + 12, 12, 29, 63, 61, 60, 12, 12, 59, 66, 12, 62, 12, 12, 12, 62, + 10, 10, 26, 12, 76, 12, 12, 12, 12, 12, 13, 11, 63, 60, 12, 12, + 12, 68, 25, 29, 12, 59, 61, 25, 25, 12, 65, 62, 10, 10, 77, 78, + 12, 12, 62, 12, 58, 28, 60, 12, 59, 12, 61, 12, 11, 26, 12, 12, + 12, 12, 12, 23, 12, 28, 67, 12, 12, 59, 25, 58, 73, 61, 25, 60, + 28, 25, 25, 67, 25, 25, 25, 58, 25, 12, 12, 12, 12, 71, 58, 60, + 12, 12, 28, 25, 29, 12, 12, 12, 63, 29, 68, 29, 12, 59, 29, 74, + 12, 12, 12, 25, 25, 63, 12, 12, 58, 25, 25, 25, 71, 25, 60, 62, + 12, 60, 29, 12, 25, 29, 28, 25, 12, 12, 12, 79, 26, 12, 12, 24, + 12, 12, 12, 24, 12, 12, 12, 22, 80, 80, 81, 82, 10, 10, 83, 84, + 85, 86, 10, 10, 10, 87, 10, 10, 10, 10, 10, 88, 0, 89, 90, 0, + 91, 8, 92, 72, 8, 8, 92, 72, 85, 85, 85, 85, 17, 72, 26, 12, + 12, 20, 11, 23, 10, 79, 93, 94, 12, 12, 23, 12, 10, 11, 23, 26, + 12, 12, 24, 12, 95, 10, 10, 10, 10, 26, 12, 12, 10, 20, 10, 10, + 10, 10, 10, 72, 10, 72, 12, 12, 10, 10, 72, 12, 10, 10, 8, 8, + 8, 8, 8, 12, 12, 12, 23, 10, 10, 10, 10, 24, 10, 23, 10, 10, + 10, 26, 10, 10, 10, 10, 26, 24, 10, 10, 20, 10, 26, 12, 12, 12, + 12, 12, 12, 10, 12, 24, 72, 28, 29, 12, 24, 10, 12, 12, 12, 28, + 10, 11, 12, 12, 10, 10, 17, 10, 10, 12, 12, 12, 10, 10, 10, 12, + 96, 11, 10, 10, 11, 12, 63, 29, 11, 23, 12, 24, 12, 12, 97, 11, + 12, 12, 13, 12, 12, 12, 12, 72, 24, 10, 10, 10, 12, 13, 72, 12, + 12, 12, 12, 13, 98, 25, 25, 99, 12, 12, 11, 12, 59, 59, 28, 12, + 12, 66, 10, 12, 12, 12, 100, 12, 12, 10, 12, 12, 12, 29, 12, 12, + 12, 63, 25, 29, 12, 28, 25, 25, 28, 63, 29, 60, 12, 62, 12, 12, + 12, 12, 61, 58, 66, 66, 12, 12, 28, 12, 12, 60, 71, 67, 60, 63, + 12, 62, 60, 62, 12, 12, 12, 101, 34, 34, 102, 34, 40, 40, 40, 103, + 40, 40, 40, 104, 105, 106, 10, 107, 108, 72, 109, 12, 40, 40, 40, 110, + 30, 5, 6, 7, 5, 111, 10, 72, 0, 0, 112, 113, 93, 12, 12, 12, + 10, 10, 10, 11, 114, 8, 8, 8, 12, 63, 58, 12, 34, 34, 34, 115, + 31, 33, 34, 25, 34, 34, 116, 52, 34, 33, 34, 34, 34, 34, 117, 10, + 35, 35, 35, 35, 35, 35, 35, 118, 12, 12, 25, 25, 25, 58, 12, 12, + 28, 58, 66, 12, 12, 28, 25, 61, 25, 60, 12, 12, 28, 12, 12, 12, + 12, 63, 25, 58, 12, 12, 63, 60, 29, 71, 12, 59, 28, 25, 58, 12, + 12, 63, 25, 60, 28, 25, 73, 28, 71, 12, 12, 12, 63, 29, 12, 68, + 28, 25, 58, 74, 12, 12, 28, 62, 25, 68, 12, 12, 63, 68, 25, 12, + 25, 58, 25, 29, 63, 25, 25, 25, 25, 25, 63, 25, 71, 66, 12, 12, + 12, 12, 12, 66, 0, 12, 12, 12, 12, 28, 29, 12, 119, 0, 120, 25, + 58, 61, 25, 12, 12, 12, 63, 29, 121, 122, 12, 12, 12, 93, 12, 12, + 12, 12, 93, 12, 13, 12, 12, 123, 8, 8, 8, 8, 25, 58, 28, 25, + 12, 60, 12, 12, 61, 25, 25, 25, 25, 58, 25, 25, 25, 25, 67, 25, + 68, 71, 58, 12, 25, 116, 34, 34, 34, 25, 116, 34, 124, 40, 40, 40, + 8, 8, 125, 11, 72, 12, 12, 12, 10, 10, 12, 12, 10, 10, 10, 26, + 126, 10, 10, 72, 12, 12, 12, 127, }; static RE_UINT8 re_bidi_class_stage_5[] = { @@ -9524,27 +10093,27 @@ static RE_UINT8 re_bidi_class_stage_5[] = { 12, 13, 13, 13, 13, 13, 12, 12, 12, 5, 10, 12, 12, 13, 13, 12, 12, 10, 12, 12, 12, 12, 13, 13, 2, 2, 13, 13, 13, 12, 13, 13, 1, 1, 1, 12, 1, 1, 10, 10, 10, 10, 1, 1, 1, 1, 12, 12, - 12, 12, 1, 1, 12, 12, 12, 0, 0, 0, 12, 0, 12, 0, 0, 0, - 0, 12, 12, 12, 0, 12, 0, 0, 0, 0, 12, 12, 0, 0, 4, 4, - 0, 0, 0, 4, 0, 12, 12, 0, 12, 0, 0, 12, 12, 12, 0, 12, - 0, 4, 0, 0, 10, 4, 10, 0, 12, 0, 12, 12, 10, 10, 10, 0, - 12, 0, 12, 0, 0, 12, 0, 12, 0, 12, 10, 10, 9, 0, 0, 0, - 10, 10, 10, 12, 12, 12, 11, 0, 0, 10, 0, 10, 9, 9, 9, 9, - 9, 9, 9, 11, 11, 11, 0, 1, 9, 7, 16, 17, 18, 14, 15, 6, - 4, 4, 4, 4, 4, 10, 10, 10, 6, 10, 10, 10, 10, 10, 10, 9, - 11, 11, 19, 20, 21, 22, 11, 11, 2, 0, 0, 0, 2, 2, 3, 3, - 0, 10, 0, 0, 0, 0, 4, 0, 10, 10, 3, 4, 9, 10, 10, 10, - 0, 12, 12, 10, 12, 12, 12, 10, 12, 12, 10, 10, 4, 4, 0, 0, - 0, 1, 12, 1, 1, 3, 1, 1, 13, 13, 10, 10, 13, 10, 13, 13, - 6, 10, 6, 0, 10, 6, 10, 10, 10, 10, 10, 4, 10, 10, 3, 3, - 10, 4, 4, 10, 13, 13, 13, 11, 10, 4, 4, 0, 11, 10, 10, 10, - 10, 10, 11, 11, 12, 2, 2, 2, 1, 1, 1, 10, 12, 12, 12, 1, - 1, 10, 10, 10, 5, 5, 5, 1, 0, 0, 0, 11, 11, 11, 11, 12, - 10, 10, 12, 12, 12, 10, 0, 0, 0, 0, 2, 2, 10, 10, 13, 13, - 2, 2, 2, 10, 0, 0, 11, 11, + 12, 12, 1, 1, 12, 12, 5, 12, 12, 12, 12, 0, 0, 0, 12, 0, + 12, 0, 0, 0, 0, 12, 12, 12, 0, 12, 0, 0, 0, 0, 12, 12, + 0, 0, 4, 4, 0, 0, 0, 4, 0, 12, 12, 0, 12, 0, 0, 12, + 12, 12, 0, 12, 0, 4, 0, 0, 10, 4, 10, 0, 12, 0, 12, 12, + 10, 10, 10, 0, 12, 0, 12, 0, 0, 12, 0, 12, 0, 12, 10, 10, + 9, 0, 0, 0, 10, 10, 10, 12, 12, 12, 11, 0, 0, 10, 0, 10, + 9, 9, 9, 9, 9, 9, 9, 11, 11, 11, 0, 1, 9, 7, 16, 17, + 18, 14, 15, 6, 4, 4, 4, 4, 4, 10, 10, 10, 6, 10, 10, 10, + 10, 10, 10, 9, 11, 11, 19, 20, 21, 22, 11, 11, 2, 0, 0, 0, + 2, 2, 3, 3, 0, 10, 0, 0, 0, 0, 4, 0, 10, 10, 3, 4, + 9, 10, 10, 10, 0, 12, 12, 10, 12, 12, 12, 10, 12, 12, 10, 10, + 4, 4, 0, 0, 0, 1, 12, 1, 1, 3, 1, 1, 13, 13, 10, 10, + 13, 10, 13, 13, 6, 10, 6, 0, 10, 6, 10, 10, 10, 10, 10, 4, + 10, 10, 3, 3, 10, 4, 4, 10, 13, 13, 13, 11, 10, 4, 4, 0, + 11, 10, 10, 10, 10, 10, 11, 11, 12, 2, 2, 2, 1, 1, 1, 10, + 12, 12, 12, 1, 1, 10, 10, 10, 5, 5, 5, 1, 0, 0, 0, 11, + 11, 11, 11, 12, 10, 10, 12, 12, 12, 10, 0, 0, 0, 0, 2, 2, + 10, 10, 13, 13, 2, 2, 2, 10, 10, 0, 0, 10, 0, 0, 11, 11, }; -/* Bidi_Class: 3464 bytes. */ +/* Bidi_Class: 3552 bytes. */ RE_UINT32 re_get_bidi_class(RE_UINT32 ch) { RE_UINT32 code; @@ -9589,48 +10158,50 @@ static RE_UINT8 re_canonical_combining_class_stage_2[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 21, - 22, 23, 0, 0, 0, 24, 0, 0, 25, 26, 27, 28, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 22, 23, 0, 0, 0, 24, 0, 0, 25, 26, 27, 28, 0, 0, 29, 0, + 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 33, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; static RE_UINT8 re_canonical_combining_class_stage_3[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 6, 7, 8, 0, - 9, 0, 10, 11, 0, 0, 12, 13, 14, 15, 16, 0, 0, 0, 0, 17, - 18, 19, 20, 0, 0, 0, 0, 21, 0, 22, 23, 0, 0, 22, 24, 0, - 0, 22, 24, 0, 0, 22, 24, 0, 0, 22, 24, 0, 0, 0, 24, 0, - 0, 0, 25, 0, 0, 22, 24, 0, 0, 0, 24, 0, 0, 0, 26, 0, - 0, 27, 28, 0, 0, 29, 30, 0, 31, 32, 0, 33, 34, 0, 35, 0, - 0, 36, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 39, 39, 0, 0, 0, 0, 40, 0, - 0, 0, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, - 43, 0, 0, 44, 0, 45, 0, 0, 0, 46, 47, 48, 0, 49, 0, 50, - 0, 51, 0, 0, 0, 0, 52, 53, 0, 0, 0, 0, 0, 0, 54, 55, - 0, 0, 0, 0, 0, 0, 56, 57, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 60, - 0, 61, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 64, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 0, 0, 0, 0, 0, 47, 67, 0, 68, 69, 0, 0, 70, 71, 0, - 0, 0, 0, 0, 0, 72, 73, 74, 0, 0, 0, 0, 0, 0, 0, 24, - 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, - 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, - 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 79, 0, 0, 0, 0, - 80, 81, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 66, 59, 0, 83, 0, 0, 84, 85, 0, 70, 0, 0, 71, 0, - 0, 86, 0, 0, 0, 0, 0, 87, 0, 22, 24, 88, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 59, 90, 0, - 0, 59, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 92, 0, 93, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 96, 97, 0, 0, - 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 6, 7, 8, 0, + 9, 0, 10, 11, 0, 0, 12, 13, 14, 15, 16, 0, 0, 0, 0, 17, + 18, 19, 20, 0, 0, 0, 21, 22, 0, 23, 24, 0, 0, 23, 25, 0, + 0, 23, 25, 0, 0, 23, 25, 0, 0, 23, 25, 0, 0, 0, 25, 0, + 0, 0, 26, 0, 0, 23, 25, 0, 0, 0, 25, 0, 0, 0, 27, 0, + 0, 28, 29, 0, 0, 30, 31, 0, 32, 33, 0, 34, 35, 0, 36, 0, + 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 40, 40, 0, 0, 0, 0, 41, 0, + 0, 0, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, + 44, 0, 0, 45, 0, 46, 0, 0, 0, 47, 48, 49, 0, 50, 0, 51, + 0, 52, 0, 0, 0, 0, 53, 54, 0, 0, 0, 0, 0, 0, 55, 56, + 0, 0, 0, 0, 0, 0, 57, 58, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 60, 0, 0, 0, 61, + 0, 62, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 64, 65, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 0, 0, 48, 68, 0, 69, 70, 0, 0, 71, 72, 0, + 0, 0, 0, 0, 0, 73, 74, 75, 0, 0, 0, 0, 0, 0, 0, 25, + 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, + 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, + 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 0, + 81, 82, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 67, 60, 0, 84, 0, 0, 85, 86, 0, 71, 0, 0, 87, 0, + 0, 88, 0, 0, 0, 0, 0, 89, 0, 23, 25, 90, 0, 0, 0, 0, + 0, 0, 91, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 60, 93, 0, + 0, 60, 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, + 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 96, 0, 97, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 100, 101, 0, 0, + 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 106, 0, 0, 0, 0, 0, }; static RE_UINT8 re_canonical_combining_class_stage_4[] = { @@ -9644,46 +10215,50 @@ static RE_UINT8 re_canonical_combining_class_stage_4[] = { 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43, 36, 44, 45, 21, 45, 46, 0, 0, 0, 0, 0, 0, 0, 19, 1, 21, 0, 0, 0, 0, 0, 0, 0, 0, 38, 47, 1, 1, 48, 48, 49, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 50, 0, 0, 21, 43, 51, 52, 21, 35, 1, - 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 54, 55, 56, 0, 0, - 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 54, 0, 57, 0, 0, - 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, - 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, - 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, - 0, 0, 0, 0, 0, 64, 65, 0, 0, 0, 0, 0, 66, 67, 68, 69, - 70, 71, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 73, 74, 0, 0, 0, 0, 75, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 76, 0, 0, - 0, 0, 0, 0, 58, 0, 0, 77, 0, 0, 78, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 19, 80, 0, - 76, 0, 0, 0, 0, 48, 1, 81, 0, 0, 0, 0, 1, 51, 15, 41, - 0, 0, 0, 0, 0, 53, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, - 0, 0, 19, 10, 1, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, - 0, 83, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, - 0, 0, 0, 0, 84, 9, 12, 4, 85, 8, 86, 75, 0, 56, 49, 0, - 21, 1, 21, 87, 88, 1, 1, 1, 1, 1, 1, 1, 1, 49, 0, 89, - 0, 0, 0, 0, 90, 1, 91, 56, 77, 92, 93, 4, 56, 0, 0, 0, - 0, 0, 0, 19, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 95, 96, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 19, 0, 1, 1, 49, - 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 49, 0, 0, 0, - 0, 58, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 49, 0, 0, 0, - 0, 0, 98, 63, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, - 0, 0, 0, 0, 73, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 99, 100, 56, 38, 77, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, - 1, 14, 4, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, - 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 84, 0, - 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 94, - 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, - 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 76, 0, 0, - 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, - 0, 38, 1, 56, 1, 56, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, - 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, - 0, 0, 0, 0, 8, 86, 0, 0, 0, 0, 0, 0, 1, 84, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 108, 0, 109, 110, 111, 112, 0, 98, 4, - 113, 48, 23, 0, 0, 0, 0, 0, 0, 0, 38, 49, 0, 0, 0, 0, - 38, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 113, 0, 0, + 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 51, 21, 43, 52, 53, 21, 35, 1, 0, 0, 0, 0, 0, 0, 0, 54, + 0, 0, 0, 55, 56, 57, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, + 0, 0, 0, 55, 0, 58, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 65, 66, 0, + 0, 0, 0, 0, 67, 68, 69, 70, 71, 72, 0, 0, 0, 0, 0, 0, + 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 75, 0, + 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, + 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 59, 0, 0, 78, + 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, + 0, 0, 0, 0, 0, 19, 81, 0, 77, 0, 0, 0, 0, 48, 1, 82, + 0, 0, 0, 0, 1, 52, 15, 41, 0, 0, 0, 0, 0, 54, 0, 0, + 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 19, 10, 1, 0, 0, 0, + 0, 0, 83, 0, 0, 0, 0, 0, 0, 84, 0, 0, 83, 0, 0, 0, + 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 85, 9, 12, 4, + 86, 8, 87, 76, 0, 57, 49, 0, 21, 1, 21, 88, 89, 1, 1, 1, + 1, 1, 1, 1, 1, 49, 19, 90, 0, 0, 0, 0, 91, 1, 92, 57, + 78, 93, 94, 4, 57, 0, 0, 0, 0, 0, 0, 19, 49, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 95, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 96, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, + 0, 0, 0, 19, 0, 1, 1, 49, 0, 0, 0, 0, 0, 0, 0, 38, + 0, 0, 0, 0, 49, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 49, 0, 0, 0, 0, 0, 99, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, + 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 101, 57, 38, + 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 102, 1, 14, 4, 12, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 76, 81, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 38, 85, 0, 0, 0, 0, 103, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 104, 95, 0, 105, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 106, 0, 85, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 95, 77, 0, 0, 77, 0, 84, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, + 0, 38, 1, 57, 1, 57, 0, 0, 59, 84, 0, 0, 0, 0, 0, 0, + 108, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8, 87, 0, 0, 0, 0, 0, 0, 1, 85, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 109, 0, 110, 111, 112, 113, 0, 99, 4, + 114, 48, 23, 0, 0, 0, 0, 0, 0, 0, 38, 49, 0, 0, 0, 0, + 38, 57, 0, 0, 0, 0, 0, 0, 1, 85, 1, 1, 1, 1, 39, 1, + 47, 100, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 114, 0, 0, + 0, 1, 115, 0, 0, 0, 0, 0, }; static RE_UINT8 re_canonical_combining_class_stage_5[] = { @@ -9699,26 +10274,26 @@ static RE_UINT8 re_canonical_combining_class_stage_5[] = { 45, 50, 50, 45, 30, 0, 0, 0, 0, 0, 50, 50, 50, 0, 0, 50, 50, 0, 45, 50, 50, 45, 0, 0, 0, 31, 0, 0, 50, 45, 50, 50, 45, 45, 50, 45, 45, 50, 45, 50, 45, 50, 50, 0, 50, 50, 0, 50, - 0, 50, 50, 50, 50, 50, 0, 0, 0, 45, 45, 45, 50, 45, 45, 45, - 22, 23, 24, 50, 2, 0, 0, 0, 0, 4, 0, 0, 0, 50, 45, 50, - 50, 0, 0, 0, 0, 32, 33, 0, 0, 0, 4, 0, 34, 34, 4, 0, - 35, 35, 35, 35, 36, 36, 0, 0, 37, 37, 37, 37, 45, 45, 0, 0, - 0, 45, 0, 45, 0, 43, 0, 0, 0, 38, 39, 0, 40, 0, 0, 0, - 0, 0, 39, 39, 39, 39, 0, 0, 39, 0, 50, 50, 4, 0, 50, 50, - 0, 0, 45, 0, 0, 0, 0, 2, 0, 4, 4, 0, 0, 45, 0, 0, - 4, 0, 0, 0, 0, 50, 0, 0, 0, 49, 0, 0, 0, 46, 50, 45, - 45, 0, 0, 0, 50, 0, 0, 45, 0, 0, 4, 4, 0, 0, 2, 0, - 50, 50, 50, 0, 50, 0, 1, 1, 1, 0, 0, 0, 50, 53, 42, 45, - 41, 50, 50, 50, 52, 45, 50, 45, 50, 50, 1, 1, 1, 1, 1, 50, - 0, 1, 1, 50, 45, 50, 1, 1, 0, 0, 0, 4, 0, 0, 44, 49, - 51, 46, 47, 47, 0, 3, 3, 0, 0, 0, 0, 45, 50, 0, 50, 50, - 45, 0, 0, 50, 0, 0, 21, 0, 0, 45, 0, 50, 50, 1, 45, 0, - 0, 50, 45, 0, 0, 4, 2, 0, 0, 2, 4, 0, 0, 0, 4, 2, - 0, 0, 1, 0, 0, 43, 43, 1, 1, 1, 0, 0, 0, 48, 43, 43, - 43, 43, 43, 0, 45, 45, 45, 0, + 0, 50, 50, 50, 50, 50, 0, 0, 0, 45, 45, 45, 50, 50, 0, 45, + 50, 45, 45, 45, 22, 23, 24, 50, 2, 0, 0, 0, 0, 4, 0, 0, + 0, 50, 45, 50, 50, 0, 0, 0, 0, 32, 33, 0, 0, 0, 4, 0, + 34, 34, 4, 0, 35, 35, 35, 35, 36, 36, 0, 0, 37, 37, 37, 37, + 45, 45, 0, 0, 0, 45, 0, 45, 0, 43, 0, 0, 0, 38, 39, 0, + 40, 0, 0, 0, 0, 0, 39, 39, 39, 39, 0, 0, 39, 0, 50, 50, + 4, 0, 50, 50, 0, 0, 45, 0, 0, 0, 0, 2, 0, 4, 4, 0, + 0, 45, 0, 0, 4, 0, 0, 0, 0, 50, 0, 0, 0, 49, 0, 0, + 0, 46, 50, 45, 45, 0, 0, 0, 50, 0, 0, 45, 0, 0, 4, 4, + 0, 0, 2, 0, 50, 50, 50, 0, 50, 0, 1, 1, 1, 0, 0, 0, + 50, 53, 42, 45, 41, 50, 50, 50, 52, 45, 50, 45, 50, 50, 1, 1, + 1, 1, 1, 50, 0, 1, 1, 50, 45, 50, 1, 1, 0, 0, 0, 4, + 0, 0, 44, 49, 51, 46, 47, 47, 0, 3, 3, 0, 0, 0, 0, 45, + 50, 0, 50, 50, 45, 0, 0, 50, 0, 0, 21, 0, 0, 45, 0, 50, + 50, 1, 45, 0, 0, 50, 45, 0, 0, 4, 2, 0, 0, 2, 4, 0, + 0, 0, 4, 2, 0, 0, 1, 0, 0, 43, 43, 1, 1, 1, 0, 0, + 0, 48, 43, 43, 43, 43, 43, 0, 45, 45, 45, 0, 50, 50, 2, 0, }; -/* Canonical_Combining_Class: 2096 bytes. */ +/* Canonical_Combining_Class: 2192 bytes. */ RE_UINT32 re_get_canonical_combining_class(RE_UINT32 ch) { RE_UINT32 code; @@ -9902,7 +10477,7 @@ static RE_UINT8 re_decomposition_type_stage_4[] = { 139, 143, 61, 59, 140, 59, 144, 0, 138, 145, 144, 61, 139, 143, 144, 144, 139, 143, 140, 59, 140, 59, 61, 141, 59, 59, 66, 59, 59, 59, 59, 0, 61, 61, 66, 59, 20, 20, 30, 0, 20, 20, 146, 75, 0, 0, 4, 0, - 147, 0, 0, 0, 148, 0, 0, 0, 81, 81, 148, 0, 20, 20, 35, 0, + 147, 0, 0, 0, 148, 0, 0, 0, 81, 81, 81, 0, 20, 20, 35, 0, 149, 0, 0, 0, }; @@ -9976,9 +10551,9 @@ RE_UINT32 re_get_decomposition_type(RE_UINT32 ch) { static RE_UINT8 re_east_asian_width_stage_1[] = { 0, 1, 2, 3, 4, 5, 5, 5, 5, 5, 6, 5, 5, 7, 8, 9, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 10, 10, 10, 12, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 13, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 13, + 10, 10, 10, 10, 10, 10, 11, 5, 12, 10, 10, 13, 10, 10, 10, 14, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 15, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -9989,9 +10564,9 @@ static RE_UINT8 re_east_asian_width_stage_1[] = { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 14, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 15, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 15, + 16, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 17, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 17, }; static RE_UINT8 re_east_asian_width_stage_2[] = { @@ -10006,50 +10581,61 @@ static RE_UINT8 re_east_asian_width_stage_2[] = { 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 22, 22, 5, 5, 5, 28, 29, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 30, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 31, 32, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 33, - 5, 34, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 35, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 30, + 22, 22, 22, 22, 22, 22, 22, 31, 22, 22, 32, 5, 5, 5, 5, 5, + 33, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 34, 35, 36, 37, 38, 39, 40, 5, 5, 41, 5, 5, 5, 5, 5, 5, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 42, + 5, 43, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 44, }; static RE_UINT8 re_east_asian_width_stage_3[] = { - 0, 0, 1, 1, 1, 1, 1, 2, 0, 0, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 11, 0, 0, 0, 0, 0, 15, 16, 0, 0, - 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 17, 18, 0, 0, - 19, 19, 19, 19, 19, 19, 19, 0, 0, 20, 21, 20, 21, 0, 0, 0, - 9, 19, 19, 19, 19, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 22, 22, 22, 22, 22, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 23, 24, 25, 0, 0, 0, 26, 27, 0, 28, 0, 0, 0, 0, 0, - 29, 30, 31, 0, 0, 32, 33, 34, 35, 34, 0, 36, 0, 37, 38, 0, - 39, 40, 41, 42, 43, 44, 45, 0, 46, 47, 48, 49, 0, 0, 0, 0, - 0, 44, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 51, 19, - 19, 19, 19, 19, 33, 19, 19, 52, 19, 53, 21, 54, 55, 56, 57, 0, - 58, 59, 0, 0, 60, 0, 61, 0, 0, 62, 0, 62, 63, 19, 64, 19, - 0, 0, 0, 65, 0, 38, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 22, 70, 22, 22, 22, 22, 22, 71, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 72, 0, 73, - 74, 22, 22, 75, 76, 22, 22, 22, 22, 77, 22, 22, 22, 22, 22, 22, - 78, 22, 79, 76, 22, 22, 22, 22, 75, 22, 22, 80, 22, 22, 71, 22, - 22, 75, 22, 22, 81, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 75, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 0, 0, 0, 0, - 22, 22, 22, 22, 22, 22, 22, 22, 82, 22, 22, 22, 83, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 22, 82, 0, 0, 0, 0, 0, 0, 0, 0, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 71, 0, 0, 0, 0, 0, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 84, 0, 22, 22, 85, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 87, 88, 88, 88, 88, 88, 89, 90, 90, 90, 90, 91, 92, 93, 94, 65, - 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 96, 19, 97, 19, 19, 19, 34, 19, 19, 96, 0, 0, 0, 0, 0, 0, - 98, 22, 22, 80, 99, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 79, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 97, + 0, 0, 1, 1, 1, 1, 1, 2, 0, 0, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 11, 0, 0, 0, 0, 0, 15, 16, 0, 0, + 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 17, 18, 0, 0, + 19, 19, 19, 19, 19, 19, 19, 0, 0, 20, 21, 20, 21, 0, 0, 0, + 9, 19, 19, 19, 19, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 22, 22, 22, 22, 22, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 23, 24, 25, 0, 0, 0, 26, 27, 0, 28, 0, 0, 0, 0, 0, + 29, 30, 31, 0, 0, 32, 33, 34, 35, 34, 0, 36, 0, 37, 38, 0, + 39, 40, 41, 42, 43, 44, 45, 0, 46, 47, 48, 49, 0, 0, 0, 0, + 0, 50, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 53, + 0, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 54, 19, + 19, 19, 19, 19, 33, 19, 19, 55, 19, 56, 21, 57, 58, 59, 60, 61, + 62, 63, 0, 0, 64, 65, 66, 67, 0, 68, 69, 70, 71, 72, 73, 74, + 75, 0, 76, 77, 78, 79, 0, 80, 0, 81, 0, 82, 0, 0, 83, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, + 0, 85, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 22, 87, 22, 22, 22, 22, 22, 65, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 88, 0, 89, + 90, 22, 22, 91, 92, 22, 22, 22, 22, 93, 22, 22, 22, 22, 22, 22, + 94, 22, 95, 92, 22, 22, 22, 22, 91, 22, 22, 96, 22, 22, 65, 22, + 22, 91, 22, 22, 97, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 91, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 0, 0, 0, 0, + 22, 22, 22, 22, 22, 22, 22, 22, 98, 22, 22, 22, 99, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 22, 98, 0, 0, 0, 0, 0, 0, 0, 0, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 65, 0, 0, 0, 0, 0, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 100, 0, 22, 22, 101, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 103, 104, 104, 104, 104, 104, 105, 106, 106, 106, 106, 107, 108, 109, 110, 77, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 98, 0, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 112, + 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, + 115, 19, 116, 19, 19, 19, 34, 19, 117, 118, 119, 0, 0, 0, 0, 0, + 112, 22, 22, 89, 120, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 22, 22, 121, 122, 22, 22, 22, 123, 22, 65, 22, 22, 124, 65, 22, 125, + 22, 22, 22, 91, 126, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 127, + 22, 22, 22, 95, 128, 22, 129, 130, 0, 131, 114, 0, 0, 0, 0, 132, + 22, 22, 22, 22, 22, 0, 0, 0, 22, 22, 22, 22, 133, 112, 85, 134, + 0, 91, 129, 135, 89, 91, 0, 0, 22, 113, 0, 0, 111, 0, 0, 0, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 95, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 116, }; static RE_UINT8 re_east_asian_width_stage_4[] = { @@ -10065,19 +10651,28 @@ static RE_UINT8 re_east_asian_width_stage_4[] = { 0, 0, 14, 0, 10, 11, 0, 0, 0, 12, 0, 0, 8, 12, 18, 12, 15, 15, 10, 17, 18, 16, 7, 5, 0, 7, 0, 14, 0, 0, 11, 11, 10, 0, 0, 0, 14, 7, 13, 13, 13, 13, 0, 0, 0, 15, 15, 0, - 0, 15, 0, 0, 0, 0, 0, 12, 0, 0, 23, 0, 7, 7, 19, 7, - 7, 0, 0, 0, 13, 14, 0, 0, 13, 13, 0, 14, 14, 13, 18, 13, - 14, 0, 0, 0, 13, 14, 0, 12, 0, 22, 15, 13, 0, 14, 0, 5, - 5, 0, 0, 0, 19, 19, 9, 19, 0, 0, 0, 13, 0, 7, 7, 19, - 19, 0, 7, 7, 0, 0, 0, 15, 0, 13, 7, 7, 0, 24, 1, 25, - 0, 26, 0, 0, 0, 17, 14, 0, 20, 20, 27, 20, 20, 0, 0, 0, - 20, 28, 0, 0, 20, 20, 20, 0, 29, 20, 20, 20, 20, 20, 20, 30, - 31, 20, 20, 20, 20, 30, 31, 20, 0, 31, 20, 20, 20, 20, 20, 28, - 20, 20, 30, 0, 20, 20, 7, 7, 20, 20, 20, 32, 20, 30, 0, 0, - 20, 20, 28, 0, 30, 20, 20, 20, 20, 30, 20, 0, 33, 34, 34, 34, - 34, 34, 34, 34, 35, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, - 38, 36, 38, 36, 38, 36, 38, 39, 34, 40, 36, 37, 28, 0, 0, 0, - 7, 7, 9, 0, 7, 7, 7, 14, 30, 0, 0, 0, 20, 20, 32, 0, + 0, 15, 0, 0, 0, 0, 0, 12, 10, 0, 23, 0, 0, 0, 24, 0, + 0, 0, 25, 26, 27, 0, 0, 0, 7, 7, 19, 7, 7, 0, 0, 0, + 13, 14, 0, 0, 13, 13, 0, 14, 14, 13, 18, 13, 14, 0, 0, 0, + 13, 14, 0, 12, 0, 0, 0, 24, 0, 22, 15, 13, 0, 28, 0, 5, + 5, 0, 20, 20, 20, 0, 0, 0, 19, 19, 9, 19, 0, 0, 0, 29, + 29, 0, 0, 13, 30, 0, 23, 0, 0, 0, 0, 31, 0, 32, 7, 33, + 7, 34, 7, 7, 19, 0, 33, 7, 35, 36, 33, 36, 0, 30, 23, 0, + 0, 0, 26, 0, 0, 0, 0, 15, 0, 0, 0, 37, 29, 38, 0, 0, + 0, 13, 7, 7, 0, 25, 0, 0, 26, 0, 0, 29, 0, 39, 1, 40, + 0, 41, 0, 0, 0, 0, 29, 26, 26, 42, 14, 0, 20, 20, 38, 20, + 20, 28, 0, 0, 20, 20, 20, 0, 43, 20, 20, 20, 20, 20, 20, 44, + 25, 20, 20, 20, 20, 44, 25, 20, 0, 25, 20, 20, 20, 20, 20, 28, + 20, 20, 44, 0, 20, 20, 7, 7, 20, 20, 20, 26, 20, 44, 0, 0, + 20, 20, 28, 0, 44, 20, 20, 20, 20, 44, 20, 0, 45, 46, 46, 46, + 46, 46, 46, 46, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, + 50, 48, 50, 48, 50, 48, 50, 51, 46, 52, 48, 49, 26, 0, 0, 0, + 44, 0, 0, 0, 28, 0, 0, 0, 0, 26, 0, 0, 7, 7, 9, 0, + 7, 7, 7, 14, 7, 7, 7, 33, 53, 20, 54, 7, 7, 7, 7, 11, + 20, 20, 26, 0, 26, 0, 0, 25, 20, 38, 20, 20, 20, 20, 20, 55, + 20, 20, 44, 29, 26, 26, 20, 20, 55, 20, 20, 20, 20, 20, 20, 27, + 0, 0, 29, 44, 20, 20, 0, 0, 0, 0, 56, 0, 0, 24, 0, 0, + 0, 0, 29, 20, 20, 28, 0, 26, 0, 44, 0, 0, 27, 20, 20, 44, }; static RE_UINT8 re_east_asian_width_stage_5[] = { @@ -10086,15 +10681,19 @@ static RE_UINT8 re_east_asian_width_stage_5[] = { 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, - 3, 3, 3, 3, 0, 2, 0, 0, 0, 1, 1, 0, 0, 3, 3, 0, - 0, 0, 5, 5, 5, 5, 0, 0, 0, 5, 5, 0, 3, 3, 0, 3, - 3, 3, 0, 0, 4, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, - 3, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, + 3, 3, 3, 3, 0, 2, 0, 0, 0, 1, 1, 0, 0, 0, 3, 3, + 0, 3, 3, 0, 0, 3, 3, 3, 3, 0, 0, 0, 3, 0, 0, 3, + 3, 3, 0, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 3, 3, 1, + 3, 3, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 3, 3, + 1, 3, 1, 1, 3, 0, 3, 0, 3, 3, 0, 3, 0, 0, 5, 5, + 5, 5, 0, 0, 0, 5, 5, 0, 0, 3, 1, 1, 4, 3, 3, 3, + 3, 3, 3, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 0, 0, 0, - 4, 4, 4, 0, + 4, 4, 4, 0, 1, 3, 3, 3, 3, 3, 3, 1, 3, 0, 3, 3, + 0, 0, 3, 0, }; -/* East_Asian_Width: 1668 bytes. */ +/* East_Asian_Width: 2052 bytes. */ RE_UINT32 re_get_east_asian_width(RE_UINT32 ch) { RE_UINT32 code; @@ -10128,50 +10727,50 @@ static RE_UINT8 re_joining_group_stage_1[] = { }; static RE_UINT8 re_joining_group_stage_2[] = { - 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 1, 1, 1, 1, 1, 1, 1, }; static RE_UINT8 re_joining_group_stage_3[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, }; static RE_UINT8 re_joining_group_stage_4[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 0, 0, 21, 0, 22, - 0, 0, 23, 24, 25, 26, 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, - 0, 0, 0, 0, 34, 35, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 37, 38, 39, 40, 41, 42, 0, 0, + 0, 0, 1, 2, 3, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 0, 14, 15, 0, 16, 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 23, 24, 0, }; static RE_UINT8 re_joining_group_stage_5[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 3, 3, 43, 3, 45, 3, - 4, 41, 4, 4, 13, 13, 13, 6, 6, 31, 31, 35, 35, 33, 33, 39, - 39, 1, 1, 11, 11, 55, 55, 55, 0, 9, 29, 19, 22, 24, 26, 16, - 43, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 29, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 45, 0, 3, 3, 43, 3, 45, 3, 4, 41, 4, 4, 13, 13, 13, 6, + 6, 31, 31, 35, 35, 33, 33, 39, 39, 1, 1, 11, 11, 55, 55, 55, + 0, 9, 29, 19, 22, 24, 26, 16, 43, 45, 45, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 29, 0, 3, 3, 3, 0, 3, 43, 43, 45, 4, 4, 4, 4, 4, 4, 4, 4, 13, 13, 13, 13, 13, 13, 13, 6, 6, 6, 6, 6, 6, 6, 6, 6, 31, 31, 31, 31, 31, 31, 31, 31, 31, 35, 35, 35, 33, 33, 39, 1, 9, 9, 9, 9, 9, 9, 29, 29, 11, 38, 11, 19, 19, 19, 11, 11, 11, 11, 11, 11, 22, 22, 22, 22, 26, 26, 26, 26, 56, 21, 13, 41, 17, 17, 14, 43, 43, 43, 43, 43, 43, 43, 43, 55, 47, 55, 43, - 45, 45, 46, 46, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 6, 31, - 0, 0, 35, 33, 1, 0, 0, 21, 2, 0, 5, 12, 12, 7, 7, 15, - 44, 50, 18, 42, 42, 48, 49, 20, 23, 25, 27, 36, 10, 8, 28, 32, - 34, 30, 7, 37, 40, 5, 12, 7, 0, 0, 0, 0, 0, 51, 52, 53, + 45, 45, 46, 46, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 31, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 33, 1, 0, 0, 21, + 2, 0, 5, 12, 12, 7, 7, 15, 44, 50, 18, 42, 42, 48, 49, 20, + 23, 25, 27, 36, 10, 8, 28, 32, 34, 30, 7, 37, 40, 5, 12, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 53, 4, 4, 4, 4, 4, 4, 4, 13, 13, 6, 6, 31, 35, 1, 1, 1, 9, 9, 11, 11, 11, 24, 24, 26, 26, 26, 22, 31, 31, 35, 13, 13, 35, 31, 13, 3, 3, 55, 55, 45, 43, 43, 54, 54, 13, 35, 35, 19, 4, 4, 13, 39, 9, 29, 22, 24, 45, 45, 31, 43, 57, 0, 6, 33, - 11, 58, 31, 0, 0, 0, 0, 0, 59, 61, 61, 65, 65, 62, 0, 83, - 0, 85, 85, 0, 0, 66, 80, 84, 68, 68, 68, 69, 63, 81, 70, 71, - 77, 60, 60, 73, 73, 76, 74, 74, 74, 75, 0, 0, 78, 0, 0, 0, - 0, 0, 0, 72, 64, 79, 82, 67, + 11, 58, 31, 1, 19, 0, 4, 4, 4, 31, 45, 86, 87, 88, 0, 0, + 59, 61, 61, 65, 65, 62, 0, 83, 0, 85, 85, 0, 0, 66, 80, 84, + 68, 68, 68, 69, 63, 81, 70, 71, 77, 60, 60, 73, 73, 76, 74, 74, + 74, 75, 0, 0, 78, 0, 0, 0, 0, 0, 0, 72, 64, 79, 82, 67, }; /* Joining_Group: 586 bytes. */ @@ -10184,16 +10783,16 @@ RE_UINT32 re_get_joining_group(RE_UINT32 ch) { f = ch >> 15; code = ch ^ (f << 15); - pos = (RE_UINT32)re_joining_group_stage_1[f] << 4; - f = code >> 11; - code ^= f << 11; + pos = (RE_UINT32)re_joining_group_stage_1[f] << 3; + f = code >> 12; + code ^= f << 12; pos = (RE_UINT32)re_joining_group_stage_2[pos + f] << 4; - f = code >> 7; - code ^= f << 7; + f = code >> 8; + code ^= f << 8; pos = (RE_UINT32)re_joining_group_stage_3[pos + f] << 4; - f = code >> 3; - code ^= f << 3; - pos = (RE_UINT32)re_joining_group_stage_4[pos + f] << 3; + f = code >> 4; + code ^= f << 4; + pos = (RE_UINT32)re_joining_group_stage_4[pos + f] << 4; value = re_joining_group_stage_5[pos + code]; return value; @@ -10202,100 +10801,104 @@ RE_UINT32 re_get_joining_group(RE_UINT32 ch) { /* Joining_Type. */ static RE_UINT8 re_joining_type_stage_1[] = { - 0, 1, 2, 2, 2, 3, 2, 4, 5, 2, 2, 6, 2, 7, 8, 9, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 10, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, + 0, 1, 2, 3, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 6, + 7, 8, 4, 4, 4, 4, 9, 4, 4, 4, 4, 10, 4, 11, 12, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, }; static RE_UINT8 re_joining_type_stage_2[] = { - 0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 1, 1, 16, 1, 1, 1, 17, 18, 19, 20, 21, 22, 23, 1, 1, - 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 25, 26, 1, 1, - 27, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 28, 1, 29, 30, 31, 32, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 33, 1, 1, 34, 35, - 1, 36, 37, 38, 1, 1, 1, 1, 1, 1, 39, 40, 1, 1, 1, 1, - 41, 42, 43, 44, 45, 46, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 48, 49, 1, 1, 1, 50, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 51, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 52, 53, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 54, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 55, 56, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 0, 0, 0, 0, 2, 0, 0, 3, 0, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 28, 29, + 30, 31, 32, 0, 33, 34, 35, 36, 37, 38, 0, 39, 0, 0, 0, 0, + 40, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 43, 44, 0, 0, 0, 0, + 45, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 48, 0, 0, + 49, 50, 51, 52, 53, 54, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 57, 43, 0, 58, + 0, 0, 0, 59, 0, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 62, 63, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 65, 66, 67, 68, 69, 70, 71, 0, 72, 73, 0, 74, 75, 76, 77, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 78, 79, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 80, 81, 0, 0, 0, 0, 0, 0, 0, 0, 82, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, + 0, 0, 84, 85, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 90, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 92, 0, 93, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; static RE_UINT8 re_joining_type_stage_3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 5, 6, 0, 0, 0, - 0, 7, 8, 9, 10, 2, 11, 12, 13, 14, 15, 15, 16, 17, 18, 19, - 20, 21, 22, 2, 23, 24, 25, 26, 0, 0, 27, 28, 29, 15, 30, 31, - 0, 32, 33, 0, 34, 35, 0, 0, 0, 0, 36, 37, 0, 0, 38, 2, - 39, 0, 0, 40, 41, 42, 43, 0, 44, 0, 0, 45, 46, 0, 43, 0, - 47, 0, 0, 45, 48, 44, 0, 49, 47, 0, 0, 45, 50, 0, 43, 0, - 44, 0, 0, 51, 46, 52, 43, 0, 53, 0, 0, 0, 54, 0, 0, 0, - 28, 0, 0, 55, 56, 57, 43, 0, 44, 0, 0, 51, 58, 0, 43, 0, - 44, 0, 0, 0, 46, 0, 43, 0, 0, 0, 0, 0, 59, 60, 0, 0, - 0, 0, 0, 61, 62, 0, 0, 0, 0, 0, 0, 63, 64, 0, 0, 0, - 0, 65, 0, 66, 0, 0, 0, 67, 68, 69, 2, 70, 52, 0, 0, 0, - 0, 0, 71, 72, 0, 73, 28, 74, 75, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 76, 0, 76, 0, 43, 0, 43, 0, 0, 0, 77, 78, 79, 0, 0, - 80, 0, 15, 15, 15, 15, 15, 81, 82, 15, 83, 0, 0, 0, 0, 0, - 0, 0, 84, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 86, 0, 0, 0, 87, 88, 89, 0, 0, 0, 90, 0, 0, 0, 0, - 91, 0, 0, 92, 53, 0, 93, 91, 94, 0, 95, 0, 0, 0, 96, 94, - 0, 0, 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 100, 101, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 102, - 103, 0, 104, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 2, 2, 28, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 94, - 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 2, 2, - 0, 0, 106, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 20, 108, 0, 20, 0, 0, 0, 0, 0, 94, - 109, 0, 57, 0, 15, 15, 15, 110, 0, 0, 0, 0, 111, 0, 2, 94, - 0, 0, 112, 0, 113, 94, 0, 0, 39, 0, 0, 114, 0, 0, 115, 0, - 0, 0, 116, 117, 118, 0, 0, 45, 0, 0, 0, 119, 44, 0, 120, 52, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, - 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, - 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 2, 2, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 2, 5, 6, 0, 0, 0, 0, 7, 8, 9, 10, 2, 11, 12, + 13, 14, 15, 15, 16, 17, 18, 19, 20, 21, 22, 2, 23, 24, 25, 26, + 0, 0, 27, 28, 29, 15, 30, 31, 0, 32, 33, 0, 34, 35, 0, 0, + 0, 0, 36, 37, 0, 38, 39, 2, 40, 0, 0, 41, 42, 43, 44, 0, + 45, 0, 0, 46, 47, 0, 44, 0, 48, 0, 0, 46, 49, 45, 0, 50, + 48, 0, 0, 46, 51, 0, 44, 0, 45, 0, 0, 52, 47, 53, 44, 0, + 54, 0, 0, 0, 55, 0, 0, 0, 28, 0, 0, 56, 57, 58, 44, 0, + 45, 0, 0, 52, 59, 0, 44, 0, 45, 0, 0, 0, 47, 0, 44, 0, + 0, 0, 0, 0, 60, 61, 0, 0, 0, 0, 0, 62, 63, 0, 0, 0, + 0, 0, 0, 64, 65, 0, 0, 0, 0, 66, 0, 67, 0, 0, 0, 68, + 69, 70, 2, 71, 53, 0, 0, 0, 0, 0, 72, 73, 0, 74, 28, 75, + 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, + 0, 77, 0, 77, 0, 44, 0, 44, 0, 0, 0, 78, 79, 80, 0, 0, + 81, 0, 15, 15, 15, 15, 15, 82, 83, 15, 84, 0, 0, 0, 0, 0, + 0, 0, 85, 86, 0, 0, 0, 0, 0, 87, 0, 0, 0, 88, 89, 90, + 0, 0, 0, 91, 0, 0, 0, 0, 92, 0, 0, 93, 54, 0, 94, 92, + 95, 0, 96, 0, 0, 0, 97, 95, 0, 0, 98, 99, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 100, 101, 102, 0, 0, 0, 0, 2, 2, 2, 103, + 104, 0, 105, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 2, 2, 28, + 0, 0, 0, 0, 0, 0, 20, 95, 0, 0, 0, 0, 0, 0, 0, 20, + 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 107, 0, 0, 0, 0, 0, + 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 109, + 0, 56, 0, 0, 0, 0, 0, 95, 110, 0, 58, 0, 15, 15, 15, 111, + 0, 0, 0, 0, 112, 0, 2, 95, 0, 0, 113, 0, 114, 95, 0, 0, + 40, 0, 0, 115, 0, 0, 116, 0, 0, 0, 117, 118, 119, 0, 0, 46, + 0, 0, 0, 120, 45, 0, 121, 53, 0, 0, 0, 0, 0, 0, 122, 0, + 0, 123, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 125, 126, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 128, 129, 130, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, 133, 0, 0, 0, 0, 0, - 44, 0, 0, 134, 135, 0, 0, 20, 94, 0, 0, 136, 0, 0, 0, 0, - 39, 0, 137, 138, 0, 0, 0, 139, 94, 0, 0, 140, 0, 0, 0, 0, - 0, 0, 20, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 142, 0, - 44, 0, 0, 45, 28, 0, 143, 138, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 145, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 28, 0, 0, 0, - 0, 0, 0, 147, 28, 0, 0, 0, 0, 0, 148, 149, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, - 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 39, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 91, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 151, 152, 153, 0, 106, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 0, 0, - 44, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, + 131, 132, 133, 0, 0, 0, 0, 0, 45, 0, 0, 134, 135, 0, 0, 20, + 95, 0, 0, 136, 0, 0, 0, 0, 40, 0, 137, 138, 0, 0, 0, 139, + 95, 0, 0, 140, 141, 0, 0, 0, 0, 0, 20, 142, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 20, 143, 0, 95, 0, 0, 46, 28, 0, 144, 138, + 0, 0, 0, 134, 61, 0, 0, 0, 0, 0, 0, 145, 146, 0, 0, 0, + 0, 0, 0, 147, 28, 121, 0, 0, 0, 0, 0, 148, 28, 0, 0, 0, + 0, 0, 149, 150, 0, 0, 0, 0, 0, 72, 151, 0, 0, 0, 0, 0, + 0, 0, 0, 152, 0, 0, 0, 0, 0, 153, 154, 155, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 135, 0, 0, 0, 0, + 20, 40, 0, 0, 0, 0, 0, 0, 0, 156, 92, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 157, 158, 159, 0, 107, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 77, 0, 0, 0, 2, 2, 2, 160, 2, 2, 71, 116, + 161, 94, 4, 0, 0, 0, 0, 0, 162, 163, 164, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 135, 0, 0, 15, 15, 15, 15, 165, 0, 0, 0, + 45, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, }; static RE_UINT8 re_joining_type_stage_4[] = { @@ -10307,37 +10910,40 @@ static RE_UINT8 re_joining_type_stage_4[] = { 0, 0, 0, 3, 31, 32, 22, 33, 15, 15, 34, 23, 2, 2, 8, 35, 15, 15, 32, 15, 15, 15, 13, 36, 24, 36, 22, 15, 0, 37, 2, 2, 9, 0, 0, 0, 0, 0, 18, 15, 15, 15, 38, 2, 2, 0, 39, 0, - 0, 37, 6, 2, 2, 5, 5, 4, 36, 33, 12, 13, 15, 40, 5, 0, - 15, 15, 25, 41, 42, 0, 0, 0, 0, 2, 2, 2, 8, 0, 0, 0, - 0, 0, 43, 9, 5, 2, 9, 1, 5, 2, 0, 0, 37, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 9, 5, 9, 0, 1, 7, 0, 0, 0, - 7, 3, 27, 4, 4, 1, 0, 0, 5, 6, 9, 1, 0, 0, 0, 27, - 0, 43, 0, 0, 43, 0, 0, 0, 9, 0, 0, 1, 0, 0, 0, 37, - 9, 37, 28, 4, 0, 7, 0, 0, 0, 43, 0, 4, 0, 0, 43, 0, - 37, 44, 0, 0, 1, 2, 8, 0, 0, 3, 2, 8, 1, 2, 6, 9, - 0, 0, 2, 4, 0, 0, 4, 0, 0, 45, 1, 0, 5, 2, 2, 8, - 2, 28, 0, 5, 2, 2, 5, 2, 2, 2, 2, 9, 0, 0, 0, 5, - 28, 2, 7, 7, 0, 0, 4, 37, 5, 9, 0, 0, 43, 7, 0, 1, - 37, 9, 0, 0, 0, 6, 2, 4, 0, 43, 5, 2, 2, 0, 0, 1, - 0, 46, 47, 4, 15, 15, 0, 0, 0, 46, 15, 15, 15, 15, 48, 0, - 8, 3, 9, 0, 43, 0, 5, 0, 0, 3, 27, 0, 0, 43, 2, 8, - 44, 5, 2, 9, 3, 2, 2, 27, 2, 2, 2, 8, 2, 0, 0, 0, - 0, 28, 8, 9, 0, 0, 3, 2, 4, 0, 0, 0, 37, 4, 6, 4, - 0, 43, 4, 45, 0, 0, 0, 2, 2, 37, 0, 0, 8, 2, 2, 2, - 28, 2, 9, 1, 0, 9, 4, 0, 2, 4, 0, 2, 0, 0, 3, 49, - 0, 0, 37, 8, 2, 9, 37, 2, 0, 0, 37, 4, 0, 0, 7, 0, - 8, 2, 2, 4, 43, 43, 3, 0, 50, 0, 0, 0, 0, 9, 0, 0, - 0, 37, 2, 4, 0, 3, 2, 2, 3, 37, 4, 9, 0, 1, 0, 0, - 0, 0, 5, 8, 7, 7, 0, 0, 3, 0, 0, 9, 28, 27, 9, 37, - 0, 0, 0, 4, 0, 1, 9, 1, 0, 0, 0, 43, 2, 2, 2, 4, + 0, 37, 6, 2, 2, 5, 5, 4, 36, 25, 12, 15, 15, 40, 5, 0, + 15, 15, 25, 41, 42, 43, 12, 44, 0, 2, 2, 2, 6, 2, 2, 2, + 8, 0, 0, 0, 0, 0, 45, 9, 5, 2, 9, 1, 5, 2, 0, 0, + 37, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 9, 5, 9, 0, 1, + 7, 0, 0, 0, 7, 3, 27, 4, 4, 1, 0, 0, 5, 6, 9, 1, + 0, 0, 0, 27, 0, 45, 0, 0, 45, 0, 0, 0, 9, 0, 0, 1, + 0, 0, 0, 37, 9, 37, 28, 4, 0, 7, 0, 0, 0, 45, 0, 4, + 0, 0, 45, 0, 37, 46, 0, 0, 1, 2, 8, 0, 0, 3, 2, 8, + 1, 2, 6, 9, 0, 0, 2, 4, 0, 0, 4, 0, 0, 47, 1, 0, + 5, 2, 2, 8, 2, 28, 0, 5, 2, 2, 5, 2, 2, 2, 2, 9, + 0, 0, 0, 5, 28, 2, 7, 7, 0, 0, 4, 37, 5, 9, 0, 0, + 45, 7, 0, 1, 37, 9, 0, 0, 0, 6, 2, 4, 0, 45, 5, 2, + 2, 0, 0, 1, 0, 48, 49, 4, 15, 15, 0, 0, 0, 50, 15, 15, + 15, 15, 51, 0, 8, 3, 9, 0, 45, 0, 5, 0, 0, 3, 27, 0, + 0, 45, 2, 8, 46, 5, 2, 9, 3, 2, 2, 27, 2, 2, 2, 8, + 2, 0, 0, 0, 0, 28, 8, 9, 0, 0, 3, 2, 4, 0, 0, 0, + 37, 4, 6, 4, 0, 45, 4, 47, 0, 0, 0, 2, 2, 37, 0, 0, + 8, 2, 2, 2, 28, 2, 9, 1, 0, 9, 4, 0, 2, 4, 3, 2, + 0, 0, 3, 52, 0, 0, 37, 8, 2, 9, 37, 2, 0, 0, 37, 4, + 0, 0, 7, 0, 8, 2, 2, 4, 45, 45, 3, 0, 53, 0, 0, 0, + 0, 4, 0, 0, 0, 37, 2, 4, 0, 3, 2, 2, 3, 37, 4, 9, + 0, 1, 0, 0, 0, 0, 5, 8, 7, 7, 0, 0, 3, 0, 0, 9, + 28, 27, 9, 37, 0, 0, 0, 4, 0, 1, 9, 1, 0, 0, 0, 45, 0, 0, 5, 0, 0, 37, 8, 0, 5, 7, 0, 2, 0, 0, 8, 3, - 15, 51, 52, 53, 14, 54, 15, 12, 55, 56, 46, 13, 24, 22, 12, 57, - 55, 0, 0, 0, 0, 0, 20, 58, 0, 0, 2, 2, 2, 8, 0, 0, + 15, 54, 55, 56, 14, 57, 15, 12, 58, 59, 48, 13, 24, 22, 12, 60, + 58, 0, 0, 0, 0, 0, 20, 61, 0, 0, 2, 2, 2, 8, 0, 0, 3, 8, 7, 1, 0, 3, 2, 5, 2, 9, 0, 0, 3, 0, 0, 0, - 0, 37, 2, 8, 4, 28, 0, 0, 3, 2, 8, 0, 0, 37, 2, 9, - 3, 2, 44, 3, 28, 0, 0, 0, 37, 4, 0, 6, 3, 2, 8, 45, - 0, 0, 3, 1, 2, 6, 0, 0, 0, 0, 0, 7, 0, 3, 4, 0, - 3, 2, 2, 2, 8, 5, 2, 0, + 0, 37, 2, 8, 0, 0, 37, 9, 4, 28, 0, 45, 3, 2, 8, 0, + 0, 37, 2, 9, 3, 2, 46, 3, 28, 0, 0, 0, 37, 4, 0, 6, + 3, 2, 8, 47, 0, 0, 3, 1, 2, 6, 0, 0, 37, 6, 2, 0, + 2, 8, 2, 6, 37, 2, 2, 2, 2, 2, 37, 2, 28, 7, 0, 0, + 0, 0, 0, 7, 0, 3, 4, 0, 3, 2, 2, 2, 8, 5, 2, 0, + 2, 8, 3, 2, 0, 9, 0, 0, 2, 8, 2, 2, 2, 2, 27, 2, + 6, 28, 8, 0, 15, 2, 8, 0, }; static RE_UINT8 re_joining_type_stage_5[] = { @@ -10351,14 +10957,15 @@ static RE_UINT8 re_joining_type_stage_5[] = { 5, 0, 5, 5, 5, 5, 3, 3, 2, 0, 0, 2, 3, 5, 2, 2, 2, 3, 3, 3, 2, 2, 3, 2, 3, 2, 3, 2, 0, 3, 2, 2, 3, 2, 2, 2, 0, 0, 5, 5, 2, 2, 2, 5, 0, 0, 1, 0, - 3, 2, 0, 0, 3, 0, 3, 2, 2, 3, 3, 0, 0, 0, 5, 0, - 5, 0, 5, 0, 0, 5, 0, 5, 0, 0, 0, 2, 0, 0, 1, 5, - 2, 5, 2, 0, 0, 1, 5, 5, 2, 2, 4, 0, 2, 3, 0, 3, - 0, 3, 3, 0, 0, 4, 3, 3, 2, 2, 2, 4, 2, 3, 0, 0, - 3, 5, 5, 0, 3, 2, 3, 3, 3, 2, 2, 0, + 3, 2, 0, 0, 3, 0, 3, 2, 2, 3, 3, 2, 2, 0, 2, 2, + 2, 2, 0, 0, 0, 0, 5, 0, 5, 0, 5, 0, 0, 5, 0, 5, + 0, 0, 0, 2, 0, 0, 1, 5, 0, 5, 5, 2, 2, 5, 2, 0, + 0, 1, 5, 5, 2, 2, 4, 0, 2, 3, 0, 3, 0, 3, 3, 0, + 0, 4, 3, 3, 2, 2, 2, 4, 2, 3, 0, 0, 3, 5, 5, 0, + 3, 2, 3, 3, 3, 2, 2, 0, }; -/* Joining_Type: 2252 bytes. */ +/* Joining_Type: 2384 bytes. */ RE_UINT32 re_get_joining_type(RE_UINT32 ch) { RE_UINT32 code; @@ -10366,12 +10973,12 @@ RE_UINT32 re_get_joining_type(RE_UINT32 ch) { RE_UINT32 pos; RE_UINT32 value; - f = ch >> 13; - code = ch ^ (f << 13); + f = ch >> 12; + code = ch ^ (f << 12); pos = (RE_UINT32)re_joining_type_stage_1[f] << 5; - f = code >> 8; - code ^= f << 8; - pos = (RE_UINT32)re_joining_type_stage_2[pos + f] << 4; + f = code >> 7; + code ^= f << 7; + pos = (RE_UINT32)re_joining_type_stage_2[pos + f] << 3; f = code >> 4; code ^= f << 4; pos = (RE_UINT32)re_joining_type_stage_3[pos + f] << 2; @@ -10387,9 +10994,9 @@ RE_UINT32 re_get_joining_type(RE_UINT32 ch) { static RE_UINT8 re_line_break_stage_1[] = { 0, 1, 2, 3, 4, 5, 5, 5, 5, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 10, 10, 16, 10, 10, 10, 10, 17, 10, 18, 19, 20, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 21, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 21, + 12, 13, 14, 15, 16, 10, 17, 5, 18, 10, 10, 19, 10, 20, 21, 22, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 23, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 23, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -10400,7 +11007,7 @@ static RE_UINT8 re_line_break_stage_1[] = { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 22, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 24, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, }; @@ -10431,26 +11038,30 @@ static RE_UINT8 re_line_break_stage_2[] = { 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 79, 79, 79, 79, 111, 112, 2, 2, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 110, 123, 124, 125, 2, 126, 127, 110, 2, 2, 128, 110, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 110, 110, 110, 138, 110, 110, 110, - 139, 140, 141, 142, 143, 144, 145, 110, 110, 146, 110, 147, 148, 149, 110, 110, - 110, 150, 110, 110, 110, 151, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 2, 2, 2, 2, 2, 2, 2, 152, 153, 110, 110, 110, 110, 110, 110, 110, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 110, 110, 139, 110, 110, 110, + 140, 141, 142, 143, 144, 145, 146, 110, 147, 148, 110, 149, 150, 151, 152, 110, + 110, 153, 110, 110, 110, 154, 110, 110, 155, 156, 110, 110, 110, 110, 110, 110, + 2, 2, 2, 2, 2, 2, 2, 157, 158, 2, 159, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 2, 2, 2, 2, 154, 155, 156, 2, 157, 110, 110, 110, 110, 110, 110, 110, + 2, 2, 2, 2, 160, 161, 162, 2, 163, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 2, 2, 2, 164, 165, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 2, 2, 2, 2, 158, 159, 160, 161, 110, 110, 110, 110, 110, 110, 162, 163, - 164, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 110, 110, 110, 110, 110, 110, 110, 110, 165, 166, 110, 110, 110, 110, 110, 110, - 2, 167, 168, 169, 170, 110, 171, 110, 172, 173, 174, 2, 2, 175, 2, 176, - 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 2, 177, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 178, 179, 110, 110, - 180, 181, 182, 183, 184, 110, 185, 186, 79, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 2, 2, 2, 2, 166, 167, 168, 169, 110, 110, 110, 110, 110, 110, 170, 171, + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 172, + 79, 79, 79, 79, 79, 173, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 174, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 175, 176, 110, 110, 110, 110, 110, 110, + 2, 177, 178, 179, 180, 110, 181, 110, 182, 183, 184, 2, 2, 185, 2, 186, + 2, 2, 2, 2, 187, 188, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 189, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 2, 190, 191, 110, 110, 110, 110, 110, 110, 110, 110, 110, 192, 193, 110, 110, + 79, 79, 194, 195, 79, 79, 79, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 208, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 196, - 197, 110, 198, 199, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 208, + 209, 110, 210, 211, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, }; @@ -10462,98 +11073,104 @@ static RE_UINT16 re_line_break_stage_3[] = { 22, 23, 1, 24, 25, 26, 27, 28, 29, 30, 4, 4, 31, 1, 32, 33, 4, 4, 4, 4, 4, 34, 35, 36, 37, 38, 4, 1, 39, 4, 4, 4, 4, 4, 40, 41, 36, 4, 31, 42, 4, 43, 44, 45, 4, 46, 47, 47, - 47, 47, 4, 48, 47, 47, 49, 1, 50, 4, 4, 51, 1, 52, 53, 4, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 55, 56, 63, 64, 65, 66, 67, - 68, 18, 56, 69, 70, 71, 60, 72, 73, 55, 56, 69, 74, 75, 60, 76, - 77, 78, 79, 80, 81, 82, 66, 83, 84, 85, 56, 86, 87, 88, 60, 89, - 90, 85, 56, 91, 87, 92, 60, 93, 90, 85, 4, 94, 95, 96, 60, 97, - 98, 99, 4, 100, 101, 102, 66, 103, 104, 105, 105, 106, 107, 108, 47, 47, - 109, 110, 111, 112, 113, 114, 47, 47, 115, 116, 36, 117, 118, 4, 119, 120, - 121, 122, 1, 123, 124, 125, 47, 47, 105, 105, 105, 105, 126, 105, 105, 105, - 105, 127, 4, 4, 128, 4, 4, 4, 129, 129, 129, 129, 129, 129, 130, 130, - 130, 130, 131, 132, 132, 132, 132, 132, 4, 4, 4, 4, 133, 134, 4, 4, - 133, 4, 4, 135, 136, 137, 4, 4, 4, 136, 4, 4, 4, 138, 139, 119, - 4, 140, 4, 4, 4, 4, 4, 141, 142, 4, 4, 4, 4, 4, 4, 4, - 142, 143, 4, 4, 4, 4, 144, 145, 146, 147, 4, 148, 4, 149, 146, 150, - 105, 105, 105, 105, 105, 151, 152, 140, 153, 152, 4, 4, 4, 4, 4, 76, - 4, 4, 154, 4, 4, 4, 4, 155, 4, 45, 156, 156, 157, 105, 158, 159, - 105, 105, 160, 105, 161, 162, 4, 4, 4, 163, 105, 105, 105, 164, 105, 165, - 152, 152, 158, 166, 47, 47, 47, 47, 167, 4, 4, 168, 169, 170, 171, 172, - 173, 4, 174, 36, 4, 4, 40, 175, 4, 4, 168, 176, 177, 36, 4, 178, - 47, 47, 47, 47, 76, 179, 180, 181, 4, 4, 4, 4, 1, 1, 1, 182, - 4, 183, 4, 4, 183, 184, 4, 185, 4, 4, 4, 186, 186, 187, 4, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 119, 198, 199, 200, 1, 1, 201, - 202, 203, 204, 4, 4, 205, 206, 207, 208, 207, 4, 4, 4, 209, 4, 4, - 210, 211, 212, 213, 214, 215, 216, 4, 217, 218, 219, 220, 4, 4, 4, 4, - 221, 222, 223, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 224, - 4, 4, 225, 47, 226, 47, 227, 227, 227, 227, 227, 227, 227, 227, 227, 228, - 227, 227, 227, 227, 206, 227, 227, 229, 227, 230, 231, 232, 233, 234, 235, 4, - 236, 237, 4, 238, 239, 4, 240, 241, 4, 242, 4, 243, 244, 245, 246, 247, - 248, 4, 4, 4, 4, 249, 250, 251, 227, 252, 4, 4, 253, 4, 254, 4, - 255, 256, 4, 4, 4, 221, 4, 257, 4, 4, 4, 4, 4, 258, 4, 259, - 4, 260, 4, 261, 56, 262, 47, 47, 4, 4, 45, 4, 4, 45, 4, 4, - 4, 4, 4, 4, 4, 4, 263, 264, 4, 4, 128, 4, 4, 4, 265, 266, - 4, 225, 267, 267, 267, 267, 1, 1, 268, 269, 270, 271, 272, 47, 47, 47, - 273, 274, 273, 273, 273, 273, 273, 275, 273, 273, 273, 273, 273, 273, 273, 273, - 273, 273, 273, 273, 273, 276, 47, 277, 278, 279, 280, 281, 282, 273, 283, 273, - 284, 285, 286, 273, 283, 273, 284, 287, 288, 273, 289, 290, 273, 273, 273, 273, - 291, 273, 273, 292, 273, 273, 275, 293, 273, 291, 273, 273, 294, 273, 273, 273, - 273, 273, 273, 273, 273, 273, 273, 291, 273, 273, 273, 273, 4, 4, 4, 4, - 273, 295, 273, 273, 273, 273, 273, 273, 296, 273, 273, 273, 297, 4, 4, 178, - 298, 4, 299, 47, 4, 4, 263, 300, 4, 301, 4, 4, 4, 4, 4, 302, - 45, 4, 185, 262, 47, 47, 47, 303, 304, 4, 305, 306, 4, 4, 4, 307, - 308, 4, 4, 168, 309, 152, 1, 310, 36, 4, 311, 4, 312, 313, 129, 314, - 50, 4, 4, 315, 316, 317, 105, 318, 4, 4, 319, 320, 321, 322, 105, 105, - 105, 105, 105, 105, 323, 324, 31, 325, 326, 327, 267, 4, 4, 4, 328, 47, - 47, 47, 47, 47, 4, 4, 329, 152, 330, 331, 332, 333, 332, 334, 332, 330, - 331, 332, 333, 332, 334, 332, 330, 331, 332, 333, 332, 334, 332, 330, 331, 332, - 333, 332, 334, 332, 330, 331, 332, 333, 332, 334, 332, 330, 331, 332, 333, 332, - 334, 332, 330, 331, 332, 333, 332, 334, 332, 330, 331, 332, 333, 332, 334, 332, - 333, 332, 335, 130, 336, 132, 132, 337, 338, 338, 338, 338, 338, 338, 338, 338, - 47, 47, 47, 47, 47, 47, 47, 47, 225, 339, 340, 341, 342, 4, 4, 4, - 4, 4, 4, 4, 262, 343, 4, 4, 4, 4, 4, 344, 47, 4, 4, 4, - 4, 345, 4, 4, 76, 47, 47, 346, 1, 347, 348, 349, 350, 351, 352, 186, - 4, 4, 4, 4, 4, 4, 4, 353, 354, 355, 273, 356, 273, 357, 358, 359, - 4, 360, 4, 45, 361, 362, 363, 364, 365, 4, 137, 366, 185, 185, 47, 47, - 4, 4, 4, 4, 4, 4, 4, 226, 367, 4, 4, 368, 4, 4, 4, 4, - 119, 369, 71, 47, 47, 4, 4, 370, 4, 119, 4, 4, 4, 71, 33, 369, - 4, 4, 371, 4, 226, 4, 4, 372, 4, 373, 4, 4, 374, 375, 47, 47, - 4, 185, 152, 47, 47, 47, 47, 47, 4, 4, 76, 4, 4, 4, 376, 47, - 4, 4, 4, 225, 4, 155, 76, 47, 377, 4, 4, 378, 4, 379, 4, 4, - 4, 45, 303, 47, 47, 47, 47, 47, 4, 380, 4, 381, 47, 47, 47, 47, - 4, 4, 4, 382, 47, 47, 47, 47, 383, 384, 4, 385, 76, 386, 4, 4, - 4, 4, 47, 47, 4, 4, 387, 388, 4, 4, 4, 389, 4, 260, 4, 390, - 4, 391, 392, 47, 47, 47, 47, 47, 4, 4, 4, 4, 145, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 4, 45, 173, 4, 4, 393, 394, 345, 395, 396, - 173, 4, 4, 397, 398, 4, 145, 152, 173, 4, 312, 399, 400, 4, 4, 401, - 173, 4, 4, 315, 402, 403, 20, 141, 4, 18, 404, 405, 47, 47, 47, 47, - 47, 47, 47, 4, 4, 263, 406, 152, 73, 55, 56, 69, 74, 407, 408, 409, - 4, 4, 4, 1, 410, 152, 47, 47, 4, 4, 263, 411, 412, 47, 47, 47, - 4, 4, 4, 1, 413, 152, 47, 47, 4, 4, 31, 414, 152, 47, 47, 47, - 47, 47, 4, 4, 4, 4, 36, 415, 47, 47, 47, 47, 4, 4, 4, 145, - 4, 145, 47, 47, 47, 47, 47, 47, 4, 4, 4, 4, 4, 4, 45, 416, - 4, 4, 4, 4, 4, 417, 4, 4, 418, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 419, 4, 4, 45, 47, 47, 47, 47, 47, - 4, 4, 4, 145, 4, 45, 420, 47, 47, 47, 47, 47, 47, 4, 185, 421, - 4, 4, 4, 422, 423, 424, 18, 425, 4, 47, 47, 47, 47, 47, 47, 47, - 4, 4, 4, 4, 141, 426, 1, 166, 396, 173, 47, 47, 47, 47, 47, 47, - 427, 47, 47, 47, 47, 47, 47, 47, 4, 4, 4, 4, 4, 4, 226, 119, - 145, 428, 429, 47, 47, 47, 47, 47, 4, 4, 4, 4, 4, 4, 4, 155, - 4, 4, 21, 4, 4, 4, 430, 1, 431, 4, 432, 4, 4, 185, 47, 47, - 4, 4, 4, 4, 433, 47, 47, 47, 4, 4, 4, 4, 4, 225, 4, 262, - 4, 4, 4, 4, 4, 186, 4, 4, 4, 146, 434, 435, 436, 4, 4, 4, - 437, 438, 4, 439, 440, 85, 4, 4, 4, 4, 260, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 441, 442, 442, 442, 4, 4, 4, 4, 443, 320, 47, 47, - 436, 4, 444, 445, 446, 447, 448, 449, 450, 369, 451, 369, 47, 47, 47, 262, - 273, 273, 277, 273, 273, 273, 273, 273, 273, 275, 291, 290, 290, 290, 273, 276, - 452, 227, 453, 227, 227, 227, 454, 227, 227, 455, 47, 47, 47, 47, 456, 457, - 458, 273, 273, 292, 459, 427, 47, 47, 273, 273, 296, 273, 273, 273, 273, 289, - 273, 460, 273, 461, 291, 462, 273, 463, 273, 273, 464, 465, 273, 273, 273, 291, - 466, 467, 468, 469, 470, 273, 273, 274, 273, 273, 471, 273, 273, 472, 273, 473, - 273, 273, 273, 273, 474, 4, 4, 475, 273, 273, 273, 273, 273, 47, 296, 275, - 4, 4, 4, 4, 4, 4, 4, 371, 4, 4, 4, 4, 4, 141, 47, 47, - 369, 4, 4, 4, 76, 140, 4, 4, 76, 4, 185, 47, 47, 47, 47, 47, - 273, 273, 273, 273, 273, 273, 273, 289, 476, 47, 1, 1, 1, 1, 1, 1, + 47, 47, 4, 48, 47, 49, 50, 1, 51, 4, 4, 52, 1, 53, 54, 4, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 56, 57, 64, 65, 66, 67, 68, + 69, 18, 57, 70, 71, 72, 61, 73, 74, 56, 57, 70, 75, 76, 61, 77, + 78, 79, 80, 81, 82, 83, 67, 84, 85, 86, 57, 87, 88, 89, 61, 90, + 91, 86, 57, 92, 88, 93, 61, 94, 95, 86, 4, 96, 97, 98, 61, 99, + 100, 101, 4, 102, 103, 104, 67, 105, 106, 107, 107, 108, 109, 110, 47, 47, + 111, 112, 113, 114, 115, 116, 47, 47, 117, 118, 36, 119, 120, 4, 121, 122, + 123, 124, 1, 125, 126, 127, 47, 47, 107, 107, 107, 107, 128, 107, 107, 107, + 107, 129, 4, 4, 130, 4, 4, 4, 131, 131, 131, 131, 131, 131, 132, 132, + 132, 132, 133, 134, 134, 134, 134, 134, 4, 4, 4, 4, 135, 136, 4, 4, + 135, 4, 4, 137, 138, 139, 4, 4, 4, 138, 4, 4, 4, 140, 141, 121, + 4, 142, 4, 4, 4, 4, 4, 143, 144, 4, 4, 4, 4, 4, 4, 4, + 144, 145, 4, 4, 4, 4, 146, 147, 148, 149, 4, 150, 4, 151, 148, 152, + 107, 107, 107, 107, 107, 153, 154, 142, 155, 154, 4, 4, 4, 4, 4, 77, + 156, 4, 157, 4, 4, 4, 4, 158, 4, 45, 159, 159, 160, 107, 161, 162, + 107, 107, 163, 107, 164, 165, 4, 4, 4, 166, 107, 107, 107, 167, 107, 168, + 154, 154, 161, 169, 47, 47, 47, 47, 170, 4, 4, 171, 172, 173, 174, 175, + 176, 4, 177, 36, 4, 4, 40, 178, 4, 4, 171, 179, 180, 36, 4, 181, + 147, 47, 47, 47, 77, 182, 183, 184, 4, 4, 4, 4, 1, 1, 1, 185, + 4, 143, 4, 4, 143, 186, 4, 187, 4, 4, 4, 188, 188, 189, 4, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 121, 200, 201, 202, 1, 1, 203, + 204, 205, 206, 4, 4, 207, 208, 209, 210, 209, 4, 4, 4, 211, 4, 4, + 212, 213, 214, 215, 216, 217, 218, 4, 219, 220, 221, 222, 4, 4, 223, 4, + 224, 225, 226, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 227, + 4, 4, 228, 47, 229, 47, 230, 230, 230, 230, 230, 230, 230, 230, 230, 231, + 230, 230, 230, 230, 208, 230, 230, 232, 230, 233, 234, 235, 236, 237, 238, 4, + 239, 240, 4, 241, 242, 4, 243, 244, 4, 245, 4, 246, 247, 248, 249, 250, + 251, 4, 4, 4, 4, 252, 253, 254, 230, 255, 4, 4, 256, 4, 257, 4, + 258, 259, 4, 4, 4, 224, 4, 260, 4, 4, 4, 4, 4, 261, 4, 262, + 4, 263, 4, 264, 57, 265, 266, 47, 4, 4, 45, 4, 4, 45, 4, 4, + 4, 4, 4, 4, 4, 4, 267, 268, 4, 4, 130, 4, 4, 4, 269, 270, + 4, 228, 271, 271, 271, 271, 1, 1, 272, 273, 274, 275, 276, 47, 47, 47, + 277, 278, 277, 277, 277, 277, 277, 279, 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 280, 47, 281, 282, 283, 284, 285, 286, 277, 287, 277, + 288, 289, 290, 277, 287, 277, 288, 291, 292, 277, 293, 294, 277, 277, 277, 277, + 295, 277, 277, 296, 277, 277, 279, 297, 277, 295, 277, 277, 298, 277, 277, 277, + 277, 277, 277, 277, 277, 277, 277, 295, 277, 277, 277, 277, 4, 4, 4, 4, + 277, 299, 277, 277, 277, 277, 277, 277, 300, 277, 277, 277, 301, 4, 4, 181, + 302, 4, 303, 47, 4, 4, 267, 304, 4, 305, 4, 4, 4, 4, 4, 306, + 4, 4, 45, 77, 47, 47, 47, 307, 308, 4, 309, 310, 4, 4, 4, 311, + 312, 4, 4, 171, 313, 154, 1, 314, 36, 4, 315, 4, 316, 317, 131, 318, + 51, 4, 4, 319, 320, 321, 107, 322, 4, 4, 323, 324, 325, 326, 107, 107, + 107, 107, 107, 107, 327, 328, 31, 329, 330, 331, 271, 4, 4, 4, 158, 4, + 4, 4, 4, 4, 4, 4, 332, 154, 333, 334, 335, 336, 335, 337, 335, 333, + 334, 335, 336, 335, 337, 335, 333, 334, 335, 336, 335, 337, 335, 333, 334, 335, + 336, 335, 337, 335, 333, 334, 335, 336, 335, 337, 335, 333, 334, 335, 336, 335, + 337, 335, 333, 334, 335, 336, 335, 337, 335, 333, 334, 335, 336, 335, 337, 335, + 336, 335, 338, 132, 339, 134, 134, 340, 341, 341, 341, 341, 341, 341, 341, 341, + 47, 47, 47, 47, 47, 47, 47, 47, 228, 342, 343, 344, 345, 4, 4, 4, + 4, 4, 4, 4, 265, 346, 4, 4, 4, 4, 4, 347, 47, 4, 4, 4, + 4, 348, 4, 4, 77, 47, 47, 349, 1, 350, 1, 351, 352, 353, 354, 188, + 4, 4, 4, 4, 4, 4, 4, 355, 356, 357, 277, 358, 277, 359, 360, 361, + 277, 362, 277, 295, 363, 364, 365, 366, 367, 4, 139, 368, 187, 187, 47, 47, + 4, 4, 4, 4, 4, 4, 4, 229, 369, 4, 4, 370, 4, 4, 4, 4, + 45, 371, 72, 47, 47, 4, 4, 372, 4, 121, 4, 4, 4, 72, 33, 371, + 4, 4, 373, 4, 229, 4, 4, 374, 4, 375, 4, 4, 376, 377, 47, 47, + 4, 187, 154, 4, 4, 376, 4, 371, 4, 4, 77, 4, 4, 4, 378, 47, + 4, 4, 4, 228, 4, 158, 77, 47, 379, 4, 4, 380, 4, 381, 4, 4, + 4, 45, 307, 47, 47, 47, 4, 382, 4, 383, 4, 384, 47, 47, 47, 47, + 4, 4, 4, 385, 4, 348, 4, 4, 386, 387, 4, 388, 77, 389, 4, 4, + 4, 4, 47, 47, 4, 4, 390, 391, 4, 4, 4, 392, 4, 263, 4, 393, + 4, 394, 395, 47, 47, 47, 47, 47, 4, 4, 4, 4, 147, 47, 47, 47, + 4, 4, 4, 396, 4, 4, 4, 397, 47, 47, 47, 47, 47, 47, 4, 45, + 176, 4, 4, 398, 399, 348, 400, 401, 176, 4, 4, 402, 403, 4, 147, 154, + 176, 4, 316, 404, 405, 4, 4, 406, 176, 4, 4, 319, 407, 408, 20, 409, + 4, 18, 410, 411, 47, 47, 47, 47, 412, 37, 413, 4, 4, 267, 414, 154, + 415, 56, 57, 70, 75, 416, 417, 418, 4, 4, 4, 419, 420, 421, 47, 47, + 4, 4, 4, 1, 422, 154, 47, 47, 4, 4, 267, 423, 424, 425, 47, 47, + 4, 4, 4, 1, 426, 154, 427, 47, 4, 4, 31, 428, 154, 47, 47, 47, + 107, 429, 163, 430, 47, 47, 47, 47, 47, 47, 4, 4, 4, 4, 36, 431, + 47, 47, 47, 47, 4, 4, 4, 147, 57, 4, 267, 432, 433, 36, 121, 434, + 4, 435, 124, 324, 47, 47, 47, 47, 4, 142, 47, 47, 47, 47, 47, 47, + 4, 4, 4, 4, 4, 4, 45, 436, 4, 4, 4, 4, 373, 47, 47, 47, + 4, 4, 4, 4, 4, 437, 4, 4, 438, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 439, 4, 4, 45, 47, 47, 47, 47, 47, + 4, 4, 4, 4, 440, 4, 4, 4, 4, 4, 4, 4, 228, 47, 47, 47, + 4, 4, 4, 147, 4, 45, 441, 47, 47, 47, 47, 47, 47, 4, 187, 442, + 4, 4, 4, 443, 444, 445, 18, 446, 4, 47, 47, 47, 47, 47, 47, 47, + 4, 4, 4, 4, 409, 447, 1, 169, 401, 176, 47, 47, 47, 47, 448, 47, + 277, 277, 277, 277, 277, 277, 300, 47, 277, 277, 277, 277, 277, 277, 277, 449, + 450, 47, 47, 47, 47, 47, 47, 47, 4, 4, 4, 4, 4, 4, 229, 121, + 147, 451, 452, 47, 47, 47, 47, 47, 4, 4, 4, 4, 4, 4, 4, 158, + 4, 4, 21, 4, 4, 4, 453, 1, 454, 4, 455, 4, 4, 4, 147, 47, + 4, 4, 4, 4, 456, 47, 47, 47, 4, 4, 4, 4, 4, 228, 4, 265, + 4, 4, 4, 4, 4, 188, 4, 4, 4, 148, 457, 458, 459, 4, 4, 4, + 460, 461, 4, 462, 463, 86, 4, 4, 4, 4, 263, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 464, 465, 465, 465, 1, 1, 1, 466, 1, 1, 467, 468, + 469, 470, 23, 47, 47, 47, 47, 47, 432, 471, 472, 47, 47, 47, 47, 47, + 4, 4, 4, 4, 473, 324, 47, 47, 4, 4, 4, 4, 474, 475, 47, 47, + 459, 4, 476, 477, 478, 479, 480, 481, 482, 371, 483, 371, 47, 47, 47, 265, + 484, 230, 485, 230, 230, 230, 486, 230, 230, 230, 484, 277, 277, 277, 487, 488, + 489, 490, 277, 491, 492, 277, 277, 493, 277, 277, 277, 277, 494, 495, 496, 497, + 498, 277, 499, 500, 277, 277, 277, 277, 501, 502, 503, 504, 505, 277, 277, 506, + 277, 507, 277, 277, 277, 508, 277, 509, 277, 277, 277, 277, 510, 4, 4, 511, + 277, 277, 512, 513, 495, 277, 277, 277, 4, 4, 4, 4, 4, 4, 4, 514, + 4, 4, 4, 4, 4, 503, 277, 277, 515, 4, 4, 4, 516, 505, 4, 4, + 516, 4, 517, 277, 277, 277, 277, 277, 277, 518, 519, 520, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 277, 277, 293, 521, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 47, }; @@ -10582,221 +11199,243 @@ static RE_UINT8 re_line_break_stage_4[] = { 0, 0, 14, 14, 57, 38, 36, 36, 14, 14, 14, 0, 0, 19, 0, 0, 0, 0, 19, 0, 19, 0, 0, 36, 14, 14, 14, 14, 14, 14, 14, 38, 14, 14, 14, 14, 19, 0, 36, 38, 36, 36, 36, 36, 36, 36, 36, 36, - 14, 38, 36, 36, 36, 36, 36, 36, 36, 36, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 44, 0, - 19, 0, 0, 0, 14, 14, 14, 14, 14, 0, 58, 12, 12, 12, 12, 12, - 19, 0, 39, 14, 14, 14, 38, 39, 38, 39, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 38, 14, 14, 14, 38, 38, 36, 14, 14, 36, 44, 0, - 0, 0, 52, 42, 52, 42, 0, 38, 36, 36, 36, 42, 36, 36, 14, 39, - 14, 0, 36, 12, 12, 12, 12, 12, 14, 50, 14, 14, 49, 9, 36, 36, - 42, 0, 39, 14, 14, 38, 36, 39, 38, 14, 39, 38, 14, 36, 52, 0, - 0, 52, 36, 42, 52, 42, 0, 36, 42, 36, 36, 36, 39, 14, 38, 38, - 36, 36, 36, 12, 12, 12, 12, 12, 0, 14, 19, 36, 36, 36, 36, 36, - 42, 0, 39, 14, 14, 14, 14, 39, 38, 14, 39, 14, 14, 36, 44, 0, - 0, 0, 0, 42, 0, 42, 0, 36, 38, 36, 36, 36, 36, 36, 36, 36, - 9, 36, 36, 36, 36, 36, 36, 36, 42, 0, 39, 14, 14, 14, 38, 39, - 0, 0, 52, 42, 52, 42, 0, 36, 36, 36, 36, 0, 36, 36, 14, 39, - 14, 14, 14, 14, 36, 36, 36, 36, 36, 44, 39, 14, 14, 38, 36, 14, - 38, 14, 14, 36, 39, 38, 38, 14, 36, 39, 38, 36, 14, 38, 36, 14, - 14, 14, 14, 14, 14, 36, 36, 0, 0, 52, 36, 0, 52, 0, 0, 36, - 38, 36, 36, 42, 36, 36, 36, 36, 14, 14, 14, 14, 9, 38, 36, 36, - 0, 0, 39, 14, 14, 14, 38, 14, 38, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 36, 39, 0, 0, 0, 52, 0, 52, 0, 0, 36, - 36, 36, 42, 52, 14, 36, 36, 36, 36, 36, 36, 36, 14, 14, 14, 14, - 42, 0, 39, 14, 14, 14, 38, 14, 14, 14, 39, 14, 14, 36, 44, 0, - 36, 36, 42, 52, 36, 36, 36, 38, 39, 38, 36, 36, 36, 36, 36, 36, - 14, 14, 14, 14, 14, 38, 39, 0, 0, 0, 52, 0, 52, 0, 0, 38, - 36, 36, 36, 42, 36, 36, 36, 36, 14, 14, 14, 36, 59, 14, 14, 14, + 14, 14, 38, 14, 14, 14, 14, 36, 36, 36, 0, 0, 0, 0, 0, 0, + 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 0, 44, 0, 19, 0, 0, 0, 14, 14, 14, 14, + 14, 0, 58, 12, 12, 12, 12, 12, 19, 0, 39, 14, 14, 14, 38, 39, + 38, 39, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 38, 14, 14, 14, + 38, 38, 36, 14, 14, 36, 44, 0, 0, 0, 52, 42, 52, 42, 0, 38, + 36, 36, 36, 42, 36, 36, 14, 39, 14, 0, 36, 12, 12, 12, 12, 12, + 14, 50, 14, 14, 49, 9, 36, 36, 42, 0, 39, 14, 14, 38, 36, 39, + 38, 14, 39, 38, 14, 36, 52, 0, 0, 52, 36, 42, 52, 42, 0, 36, + 42, 36, 36, 36, 39, 14, 38, 38, 36, 36, 36, 12, 12, 12, 12, 12, + 0, 14, 19, 36, 36, 36, 36, 36, 42, 0, 39, 14, 14, 14, 14, 39, + 38, 14, 39, 14, 14, 36, 44, 0, 0, 0, 0, 42, 0, 42, 0, 36, + 38, 36, 36, 36, 36, 36, 36, 36, 9, 36, 36, 36, 39, 36, 36, 36, + 42, 0, 39, 14, 14, 14, 38, 39, 0, 0, 52, 42, 52, 42, 0, 36, + 36, 36, 36, 0, 36, 36, 14, 39, 14, 14, 14, 14, 36, 36, 36, 36, + 36, 44, 39, 14, 14, 38, 36, 14, 38, 14, 14, 36, 39, 38, 38, 14, + 36, 39, 38, 36, 14, 38, 36, 14, 14, 14, 14, 14, 14, 36, 36, 0, + 0, 52, 36, 0, 52, 0, 0, 36, 38, 36, 36, 42, 36, 36, 36, 36, + 14, 14, 14, 14, 9, 38, 36, 36, 0, 0, 39, 14, 14, 14, 38, 14, + 38, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 36, 39, 0, + 0, 0, 52, 0, 52, 0, 0, 36, 36, 36, 42, 52, 14, 38, 36, 36, + 36, 36, 36, 36, 14, 14, 14, 14, 19, 0, 39, 14, 14, 14, 38, 14, + 14, 14, 39, 14, 14, 36, 44, 0, 36, 36, 42, 52, 36, 36, 36, 38, + 39, 38, 36, 36, 36, 36, 36, 36, 42, 0, 39, 14, 14, 14, 38, 14, + 14, 14, 14, 14, 14, 38, 39, 0, 0, 0, 52, 0, 52, 0, 0, 14, + 36, 36, 14, 19, 14, 14, 14, 14, 14, 14, 14, 14, 49, 14, 14, 14, 36, 0, 39, 14, 14, 14, 14, 14, 14, 14, 14, 38, 36, 14, 14, 14, 14, 39, 14, 14, 14, 14, 39, 36, 14, 14, 14, 38, 36, 52, 36, 42, 0, 0, 52, 52, 0, 0, 0, 0, 36, 0, 38, 36, 36, 36, 36, 36, - 60, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 62, 36, 63, 61, 61, 61, 61, 61, 61, 61, 64, - 12, 12, 12, 12, 12, 58, 36, 36, 60, 62, 62, 60, 62, 62, 60, 36, - 36, 36, 61, 61, 60, 61, 61, 61, 60, 61, 60, 60, 36, 61, 60, 61, - 61, 61, 61, 61, 61, 60, 61, 36, 61, 61, 62, 62, 61, 61, 61, 36, - 12, 12, 12, 12, 12, 36, 61, 61, 32, 65, 29, 65, 66, 67, 68, 53, - 53, 69, 56, 14, 0, 14, 14, 14, 14, 14, 43, 19, 19, 70, 70, 0, + 59, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 61, 36, 62, 60, 60, 60, 60, 60, 60, 60, 63, + 12, 12, 12, 12, 12, 58, 36, 36, 59, 61, 61, 59, 61, 61, 59, 36, + 36, 36, 60, 60, 59, 60, 60, 60, 59, 60, 59, 59, 36, 60, 59, 60, + 60, 60, 60, 60, 60, 59, 60, 36, 60, 60, 61, 61, 60, 60, 60, 36, + 12, 12, 12, 12, 12, 36, 60, 60, 32, 64, 29, 64, 65, 66, 67, 53, + 53, 68, 56, 14, 0, 14, 14, 14, 14, 14, 43, 19, 19, 69, 69, 0, 14, 14, 14, 14, 39, 14, 14, 14, 14, 14, 14, 14, 14, 14, 38, 36, 42, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 14, 14, 19, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 58, - 14, 14, 14, 44, 14, 14, 38, 14, 65, 71, 14, 14, 72, 73, 36, 36, - 12, 12, 12, 12, 12, 58, 14, 14, 12, 12, 12, 12, 12, 61, 61, 61, - 14, 14, 14, 39, 36, 36, 39, 36, 74, 74, 74, 74, 74, 74, 74, 74, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 14, 14, 14, 14, 38, 14, 14, 36, + 14, 14, 14, 44, 14, 14, 38, 14, 64, 70, 14, 14, 71, 72, 36, 36, + 12, 12, 12, 12, 12, 58, 14, 14, 12, 12, 12, 12, 12, 60, 60, 60, + 14, 14, 14, 39, 36, 36, 39, 36, 73, 73, 73, 73, 73, 73, 73, 73, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 14, 14, 14, 14, 38, 14, 14, 36, 14, 14, 14, 38, 38, 14, 14, 36, 38, 14, 14, 36, 14, 14, 14, 38, 38, 14, 14, 36, 14, 14, 14, 14, 14, 14, 14, 38, 14, 14, 14, 14, 14, 14, 14, 14, 14, 38, 42, 0, 27, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 36, 36, 36, 14, 14, 38, 36, 36, 36, 36, 36, - 77, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 78, 36, + 14, 14, 14, 14, 14, 36, 36, 36, 14, 14, 14, 36, 14, 14, 14, 36, + 76, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 77, 36, 14, 14, 14, 14, 14, 27, 58, 14, 14, 14, 14, 14, 38, 36, 36, 36, 14, 14, 14, 14, 14, 14, 38, 14, 14, 0, 52, 36, 36, 36, 36, 36, 14, 0, 1, 41, 36, 36, 36, 36, 14, 0, 36, 36, 36, 36, 36, 36, - 38, 0, 36, 36, 36, 36, 36, 36, 61, 61, 58, 79, 77, 80, 61, 36, - 12, 12, 12, 12, 12, 36, 36, 36, 14, 53, 58, 29, 53, 19, 0, 73, - 14, 14, 14, 14, 19, 38, 36, 36, 14, 14, 14, 36, 36, 36, 36, 36, - 0, 0, 0, 0, 0, 0, 36, 36, 38, 36, 53, 12, 12, 12, 12, 12, - 61, 61, 61, 61, 61, 61, 61, 36, 61, 61, 62, 36, 36, 36, 36, 36, - 61, 61, 61, 61, 61, 61, 36, 36, 61, 61, 61, 61, 61, 36, 36, 36, - 12, 12, 12, 12, 12, 62, 36, 61, 14, 14, 14, 19, 0, 0, 36, 14, - 61, 61, 61, 61, 61, 61, 61, 62, 61, 61, 61, 61, 61, 61, 62, 42, - 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 44, 14, 14, 14, 14, 14, - 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 44, 14, 14, 14, 36, 36, - 12, 12, 12, 12, 12, 58, 27, 58, 77, 14, 14, 14, 14, 19, 0, 0, - 0, 0, 14, 14, 14, 14, 38, 36, 0, 44, 14, 14, 14, 14, 14, 14, - 19, 0, 0, 0, 0, 0, 0, 14, 0, 0, 36, 36, 36, 36, 14, 14, - 0, 0, 0, 0, 36, 81, 58, 58, 12, 12, 12, 12, 12, 36, 39, 14, - 14, 14, 14, 14, 14, 14, 14, 58, 0, 44, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 44, 14, 19, 14, 14, 0, 44, 38, 0, 36, 36, 36, - 0, 0, 0, 36, 36, 36, 0, 0, 14, 14, 14, 36, 14, 14, 14, 36, + 38, 0, 36, 36, 36, 36, 36, 36, 60, 60, 58, 78, 76, 79, 60, 36, + 12, 12, 12, 12, 12, 36, 36, 36, 14, 53, 58, 29, 53, 19, 0, 72, + 14, 14, 19, 44, 14, 14, 14, 14, 14, 14, 14, 14, 19, 38, 36, 36, + 14, 14, 14, 36, 36, 36, 36, 36, 0, 0, 0, 0, 0, 0, 36, 36, + 38, 36, 53, 12, 12, 12, 12, 12, 60, 60, 60, 60, 60, 60, 60, 36, + 60, 60, 61, 36, 36, 36, 36, 36, 60, 60, 60, 60, 60, 60, 36, 36, + 60, 60, 60, 60, 60, 36, 36, 36, 12, 12, 12, 12, 12, 61, 36, 60, + 14, 14, 14, 19, 0, 0, 36, 14, 60, 60, 60, 60, 60, 60, 60, 61, + 60, 60, 60, 60, 60, 60, 61, 42, 0, 0, 0, 0, 0, 0, 0, 52, + 0, 0, 44, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, + 0, 0, 44, 14, 14, 14, 36, 36, 12, 12, 12, 12, 12, 58, 27, 58, + 76, 14, 14, 14, 14, 19, 0, 0, 0, 0, 14, 14, 14, 14, 38, 36, + 0, 44, 14, 14, 14, 14, 14, 14, 19, 0, 0, 0, 0, 0, 0, 14, + 0, 0, 36, 36, 36, 36, 14, 14, 0, 0, 0, 0, 36, 80, 58, 58, + 12, 12, 12, 12, 12, 36, 39, 14, 14, 14, 14, 14, 14, 14, 14, 58, + 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 14, 19, 14, + 14, 0, 44, 38, 0, 36, 36, 36, 0, 0, 0, 36, 36, 42, 0, 0, 14, 14, 14, 14, 39, 39, 39, 39, 14, 14, 14, 14, 14, 14, 14, 36, 14, 14, 38, 14, 14, 14, 14, 14, 14, 14, 36, 14, 14, 14, 39, 14, - 36, 14, 38, 14, 14, 14, 32, 38, 58, 58, 58, 82, 58, 83, 0, 0, - 82, 58, 84, 25, 85, 86, 85, 86, 28, 14, 87, 88, 89, 0, 0, 33, + 36, 14, 38, 14, 14, 14, 32, 38, 58, 58, 58, 81, 58, 82, 83, 0, + 81, 58, 84, 25, 85, 86, 85, 86, 28, 14, 87, 88, 89, 0, 0, 33, 50, 50, 50, 50, 7, 90, 91, 14, 14, 14, 92, 93, 91, 14, 14, 14, - 14, 14, 14, 77, 58, 58, 27, 58, 94, 14, 38, 0, 0, 0, 0, 0, - 14, 36, 25, 14, 14, 14, 16, 95, 24, 28, 25, 14, 14, 14, 16, 78, - 23, 23, 23, 6, 23, 23, 23, 23, 23, 23, 23, 22, 23, 6, 23, 23, + 14, 14, 14, 76, 58, 58, 27, 58, 94, 14, 38, 0, 0, 0, 0, 0, + 14, 36, 25, 14, 14, 14, 16, 95, 24, 28, 25, 14, 14, 14, 16, 77, + 23, 23, 23, 6, 23, 23, 23, 23, 23, 23, 23, 22, 23, 6, 23, 22, 23, 23, 23, 23, 23, 23, 23, 23, 52, 36, 36, 36, 36, 36, 36, 36, 14, 49, 24, 14, 49, 14, 14, 14, 14, 24, 14, 96, 14, 14, 14, 14, 24, 25, 14, 14, 14, 24, 14, 14, 14, 14, 28, 14, 14, 24, 14, 25, 28, 28, 28, 28, 28, 28, 14, 14, 28, 28, 28, 28, 28, 14, 14, 14, - 14, 14, 14, 14, 24, 36, 36, 36, 14, 25, 25, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 24, 14, 36, 36, 14, 25, 25, 14, 14, 14, 14, 14, 25, 28, 14, 24, 25, 24, 14, 24, 24, 23, 24, 14, 14, 25, 24, 28, 25, 24, 24, 24, 28, 28, 25, 25, 14, 14, 28, 28, 14, 14, 28, 14, 14, 14, 14, 14, 25, 14, 25, 14, 14, 25, 14, 14, 14, 14, 14, 14, 28, 14, 28, 28, 14, 28, 14, 28, 14, 28, 14, 28, 14, 14, 14, 14, 14, 14, 24, 14, 24, 14, 14, 14, 14, 14, 24, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 24, 14, 14, 14, 14, 70, 70, 14, 14, - 14, 25, 14, 14, 14, 97, 14, 14, 14, 14, 14, 14, 16, 98, 14, 14, - 97, 97, 14, 14, 14, 38, 36, 36, 14, 14, 14, 38, 36, 36, 36, 36, - 14, 14, 14, 14, 14, 38, 36, 36, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 25, 28, 28, 25, 14, 14, 14, 14, 14, - 14, 28, 28, 14, 14, 14, 14, 14, 28, 24, 28, 28, 28, 14, 14, 14, - 14, 28, 14, 28, 14, 14, 28, 14, 28, 14, 14, 28, 25, 24, 14, 28, - 28, 14, 14, 14, 14, 14, 14, 14, 14, 28, 28, 14, 14, 14, 14, 24, - 97, 97, 24, 25, 24, 14, 14, 28, 14, 14, 97, 28, 99, 97, 97, 97, - 14, 14, 14, 14, 100, 97, 14, 14, 25, 25, 14, 14, 14, 14, 14, 14, - 28, 24, 28, 24, 101, 25, 28, 24, 14, 14, 14, 14, 14, 14, 14, 100, - 14, 14, 14, 14, 14, 14, 14, 28, 14, 14, 14, 14, 14, 14, 100, 97, - 97, 97, 97, 97, 101, 28, 102, 100, 97, 102, 101, 28, 97, 28, 101, 102, - 97, 24, 14, 14, 28, 101, 28, 28, 102, 97, 97, 102, 97, 101, 102, 97, - 97, 97, 99, 14, 97, 97, 97, 14, 14, 14, 14, 24, 14, 7, 85, 85, - 5, 53, 14, 14, 70, 70, 70, 70, 70, 70, 70, 28, 28, 28, 28, 28, - 28, 28, 14, 14, 14, 14, 14, 14, 14, 14, 16, 98, 14, 14, 14, 14, - 14, 14, 14, 70, 70, 70, 70, 70, 14, 16, 103, 103, 103, 103, 103, 103, - 103, 103, 103, 103, 98, 14, 14, 14, 14, 14, 14, 14, 14, 14, 70, 14, - 14, 14, 24, 28, 28, 14, 14, 14, 14, 14, 36, 14, 14, 14, 14, 14, - 14, 14, 14, 36, 14, 14, 14, 14, 14, 14, 14, 14, 14, 36, 39, 14, - 14, 36, 36, 36, 36, 36, 36, 36, 14, 14, 14, 14, 14, 14, 14, 19, - 0, 14, 36, 36, 104, 58, 77, 105, 14, 14, 14, 14, 36, 36, 36, 39, + 14, 14, 14, 14, 14, 14, 14, 24, 14, 14, 14, 14, 14, 14, 14, 97, + 14, 14, 14, 14, 69, 69, 14, 14, 14, 25, 14, 14, 14, 98, 14, 14, + 14, 14, 14, 14, 16, 99, 14, 14, 98, 98, 14, 14, 14, 14, 14, 38, + 14, 14, 14, 38, 36, 36, 36, 36, 14, 14, 14, 14, 14, 38, 36, 36, + 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 25, + 28, 28, 25, 14, 14, 14, 14, 14, 14, 28, 28, 14, 14, 14, 14, 14, + 28, 24, 28, 28, 28, 14, 14, 14, 14, 28, 14, 28, 14, 14, 28, 14, + 28, 14, 14, 28, 25, 24, 14, 28, 28, 14, 14, 14, 14, 14, 14, 14, + 14, 28, 28, 14, 14, 14, 14, 24, 98, 98, 24, 25, 24, 14, 14, 28, + 14, 14, 98, 28, 100, 98, 101, 98, 14, 14, 14, 14, 102, 98, 14, 14, + 25, 25, 14, 14, 14, 14, 14, 14, 28, 24, 28, 24, 103, 25, 28, 24, + 14, 14, 14, 14, 14, 14, 14, 102, 14, 14, 14, 14, 14, 14, 14, 28, + 14, 14, 14, 14, 14, 14, 102, 98, 98, 98, 98, 98, 103, 28, 104, 102, + 98, 104, 103, 28, 98, 28, 103, 104, 98, 24, 14, 14, 28, 103, 28, 28, + 104, 98, 98, 104, 101, 103, 104, 98, 98, 98, 100, 14, 98, 105, 105, 14, + 14, 14, 14, 24, 14, 7, 85, 85, 5, 53, 100, 14, 69, 69, 69, 69, + 69, 69, 69, 28, 28, 28, 28, 28, 28, 28, 14, 14, 14, 14, 14, 14, + 14, 14, 16, 99, 14, 14, 14, 14, 14, 14, 14, 69, 69, 69, 69, 69, + 14, 16, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 99, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 69, 14, 14, 14, 24, 28, 28, 14, 14, 14, + 14, 14, 36, 14, 14, 14, 14, 14, 14, 14, 14, 36, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 36, 39, 14, 14, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 14, 14, 14, 14, 14, 14, 14, 14, 14, 19, + 0, 14, 36, 36, 107, 58, 76, 108, 14, 14, 14, 14, 36, 36, 36, 39, 41, 36, 36, 36, 36, 36, 36, 42, 14, 14, 14, 38, 14, 14, 14, 38, - 85, 85, 85, 85, 85, 85, 85, 58, 58, 58, 58, 27, 106, 14, 85, 14, - 85, 70, 70, 70, 70, 58, 58, 56, 58, 27, 77, 14, 14, 107, 58, 77, - 58, 108, 36, 36, 36, 36, 36, 36, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 109, 97, 97, 97, 97, 36, 36, 36, 36, 36, 36, - 97, 97, 97, 36, 36, 36, 36, 36, 97, 97, 97, 97, 97, 97, 36, 36, - 18, 110, 111, 97, 70, 70, 70, 70, 70, 97, 70, 70, 70, 70, 112, 113, - 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 114, 97, 97, 111, 115, 97, - 116, 117, 117, 117, 117, 97, 97, 97, 97, 117, 97, 97, 97, 97, 97, 97, - 97, 117, 117, 117, 97, 97, 97, 118, 97, 97, 117, 119, 42, 120, 91, 115, - 121, 117, 117, 117, 117, 97, 97, 97, 97, 97, 117, 118, 97, 111, 122, 115, - 36, 36, 109, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 36, - 109, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 123, - 97, 97, 97, 97, 97, 123, 36, 36, 124, 124, 124, 124, 124, 124, 124, 124, - 97, 97, 97, 97, 28, 28, 28, 28, 97, 97, 111, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 123, 36, 97, 97, 97, 123, 36, 36, 36, 36, - 14, 14, 14, 14, 14, 14, 27, 105, 12, 12, 12, 12, 12, 14, 36, 36, - 0, 44, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 42, + 85, 85, 85, 85, 85, 85, 85, 58, 58, 58, 58, 27, 109, 14, 85, 14, + 85, 69, 69, 69, 69, 58, 58, 56, 58, 27, 76, 14, 14, 110, 58, 76, + 58, 109, 41, 36, 36, 36, 36, 36, 98, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 111, 98, 98, 98, 98, 36, 36, 36, 36, 36, 36, + 98, 98, 98, 36, 36, 36, 36, 36, 98, 98, 98, 98, 98, 98, 36, 36, + 18, 112, 113, 98, 69, 69, 69, 69, 69, 98, 69, 69, 69, 69, 114, 115, + 98, 98, 98, 98, 98, 0, 0, 0, 98, 98, 116, 98, 98, 113, 117, 98, + 118, 119, 119, 119, 119, 98, 98, 98, 98, 119, 98, 98, 98, 98, 98, 98, + 98, 119, 119, 119, 98, 98, 98, 120, 98, 98, 119, 121, 42, 122, 91, 117, + 123, 119, 119, 119, 119, 98, 98, 98, 98, 98, 119, 120, 98, 113, 124, 117, + 36, 36, 111, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 36, + 111, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 125, + 98, 98, 98, 98, 98, 125, 36, 36, 126, 126, 126, 126, 126, 126, 126, 126, + 98, 98, 98, 98, 28, 28, 28, 28, 98, 98, 113, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 125, 36, 98, 98, 98, 125, 36, 36, 36, 36, + 14, 14, 14, 14, 14, 14, 27, 108, 12, 12, 12, 12, 12, 14, 36, 36, + 0, 44, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 27, 58, 58, 36, 36, 36, 36, 36, 36, 36, 39, 14, 14, 14, 14, 14, 44, 14, 44, 14, 19, 14, 14, 14, 19, 0, 0, 14, 14, 36, 36, - 14, 14, 14, 14, 125, 36, 36, 36, 14, 14, 65, 53, 36, 36, 36, 36, - 0, 14, 14, 14, 14, 14, 14, 14, 0, 0, 52, 36, 36, 36, 36, 58, - 0, 14, 14, 14, 14, 14, 36, 36, 14, 14, 14, 0, 0, 0, 0, 58, + 14, 14, 14, 14, 127, 36, 36, 36, 14, 14, 64, 53, 36, 36, 36, 36, + 0, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 36, 36, 36, 36, 58, + 0, 14, 14, 14, 14, 14, 29, 36, 14, 14, 14, 0, 0, 0, 0, 58, 14, 14, 14, 19, 0, 0, 0, 0, 0, 0, 36, 36, 36, 36, 36, 39, - 74, 74, 74, 74, 74, 74, 126, 36, 14, 19, 0, 0, 0, 0, 0, 0, + 73, 73, 73, 73, 73, 73, 128, 36, 14, 19, 0, 0, 0, 0, 0, 0, 44, 14, 14, 27, 58, 14, 14, 39, 12, 12, 12, 12, 12, 36, 36, 14, - 12, 12, 12, 12, 12, 61, 61, 62, 14, 14, 14, 14, 19, 0, 0, 0, + 12, 12, 12, 12, 12, 60, 60, 61, 14, 14, 14, 14, 19, 0, 0, 0, 0, 0, 0, 52, 36, 36, 36, 36, 14, 19, 14, 14, 14, 14, 0, 36, - 12, 12, 12, 12, 12, 36, 27, 58, 61, 62, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 60, 61, 61, 58, 14, 19, 52, 36, 36, 36, 36, + 12, 12, 12, 12, 12, 36, 27, 58, 60, 61, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 59, 60, 60, 58, 14, 19, 52, 36, 36, 36, 36, 39, 14, 14, 38, 39, 14, 14, 38, 39, 14, 14, 38, 36, 36, 36, 36, - 36, 36, 14, 36, 36, 36, 36, 36, 14, 19, 0, 0, 0, 1, 0, 36, - 127, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 127, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 127, 128, 128, 128, - 128, 128, 127, 128, 128, 128, 128, 128, 128, 128, 36, 36, 36, 36, 36, 36, - 75, 75, 75, 129, 36, 130, 76, 76, 76, 76, 76, 76, 76, 76, 36, 36, - 131, 131, 131, 131, 131, 131, 131, 131, 36, 39, 14, 14, 36, 36, 132, 133, - 46, 46, 46, 46, 48, 46, 46, 46, 46, 46, 46, 47, 46, 46, 47, 47, - 46, 132, 47, 46, 46, 46, 46, 46, 36, 39, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 103, 36, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 125, 36, 134, 135, 57, 136, 137, 36, 36, 36, - 0, 0, 0, 0, 0, 0, 0, 36, 97, 97, 138, 103, 103, 103, 103, 103, - 103, 103, 110, 138, 110, 97, 97, 97, 110, 78, 91, 53, 138, 103, 103, 110, - 97, 97, 97, 123, 139, 140, 36, 36, 14, 14, 14, 14, 14, 14, 38, 141, - 104, 97, 6, 97, 70, 97, 110, 110, 97, 97, 97, 97, 97, 91, 97, 142, - 97, 97, 97, 97, 97, 138, 143, 97, 97, 97, 97, 97, 97, 138, 143, 138, - 113, 70, 93, 144, 124, 124, 124, 124, 145, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 91, 36, 14, 14, 14, 36, 14, 14, 14, - 36, 14, 14, 14, 36, 14, 38, 36, 22, 97, 139, 146, 14, 14, 14, 38, + 14, 19, 0, 0, 0, 1, 0, 36, 129, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 129, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 129, 130, 130, 130, 130, 130, 129, 130, 130, 130, 130, 130, + 130, 130, 36, 36, 36, 36, 36, 36, 74, 74, 74, 131, 36, 132, 75, 75, + 75, 75, 75, 75, 75, 75, 36, 36, 133, 133, 133, 133, 133, 133, 133, 133, + 36, 39, 14, 14, 36, 36, 134, 135, 46, 46, 46, 46, 48, 46, 46, 46, + 46, 46, 46, 47, 46, 46, 47, 47, 46, 134, 47, 46, 46, 46, 46, 46, + 36, 39, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 106, + 36, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 127, 36, + 136, 137, 57, 138, 139, 36, 36, 36, 98, 98, 140, 106, 106, 106, 106, 106, + 106, 106, 112, 140, 112, 98, 98, 98, 112, 77, 91, 53, 140, 106, 106, 112, + 98, 98, 98, 125, 141, 142, 36, 36, 14, 14, 14, 14, 14, 14, 38, 143, + 107, 98, 6, 98, 69, 98, 112, 112, 98, 98, 98, 98, 98, 91, 98, 144, + 98, 98, 98, 98, 98, 140, 145, 98, 98, 98, 98, 98, 98, 140, 145, 140, + 115, 69, 93, 119, 126, 126, 126, 126, 120, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 91, 36, 98, 98, 98, 36, 98, 98, 98, + 36, 98, 98, 98, 36, 98, 125, 36, 22, 98, 141, 146, 14, 14, 14, 38, 36, 36, 36, 36, 42, 0, 147, 36, 14, 14, 14, 14, 14, 14, 39, 14, 14, 14, 14, 14, 14, 38, 14, 39, 58, 41, 36, 39, 14, 14, 14, 14, 14, 14, 36, 39, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 36, 36, 14, 14, 14, 14, 14, 14, 19, 36, 14, 14, 36, 36, 36, 36, 36, 36, - 14, 14, 14, 0, 0, 52, 36, 36, 14, 14, 14, 14, 14, 14, 14, 81, - 14, 14, 36, 36, 14, 14, 14, 14, 77, 14, 14, 36, 36, 36, 36, 36, + 14, 14, 14, 0, 0, 52, 36, 36, 14, 14, 14, 14, 14, 14, 14, 80, + 14, 14, 36, 36, 14, 14, 14, 14, 76, 14, 14, 36, 36, 36, 36, 36, 14, 14, 36, 36, 36, 36, 36, 39, 14, 14, 14, 36, 38, 14, 14, 14, - 14, 14, 14, 39, 38, 36, 38, 39, 14, 14, 14, 81, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 36, 81, 14, 14, 14, 14, 14, 36, 36, 39, - 14, 14, 14, 14, 36, 36, 36, 14, 19, 0, 42, 52, 36, 36, 0, 0, - 14, 14, 39, 14, 39, 14, 14, 14, 14, 14, 36, 36, 0, 52, 36, 42, - 58, 58, 58, 58, 38, 36, 36, 36, 14, 14, 19, 52, 36, 39, 14, 14, - 58, 58, 58, 148, 36, 36, 36, 36, 14, 14, 14, 36, 81, 58, 58, 58, - 14, 38, 36, 36, 14, 14, 14, 14, 14, 36, 36, 36, 39, 14, 38, 36, - 36, 36, 36, 36, 39, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, - 0, 0, 0, 1, 77, 14, 14, 36, 14, 14, 14, 12, 12, 12, 12, 12, - 36, 36, 36, 36, 36, 36, 36, 42, 0, 0, 0, 0, 0, 44, 14, 58, - 58, 36, 36, 36, 36, 36, 36, 36, 0, 0, 52, 12, 12, 12, 12, 12, - 58, 58, 36, 36, 36, 36, 36, 36, 14, 19, 32, 38, 36, 36, 36, 36, - 44, 14, 27, 77, 41, 36, 39, 36, 12, 12, 12, 12, 12, 38, 36, 36, - 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 58, 27, 77, 36, - 0, 0, 0, 0, 0, 52, 36, 36, 36, 36, 36, 42, 36, 36, 39, 14, - 14, 0, 36, 0, 0, 0, 52, 36, 0, 0, 52, 36, 36, 36, 36, 36, + 14, 14, 14, 39, 38, 36, 38, 39, 14, 14, 14, 80, 14, 14, 14, 14, + 14, 38, 14, 36, 36, 39, 14, 14, 14, 14, 14, 14, 14, 14, 36, 80, + 14, 14, 14, 14, 14, 36, 36, 39, 14, 14, 14, 14, 36, 36, 14, 14, + 19, 0, 42, 52, 36, 36, 0, 0, 14, 14, 39, 14, 39, 14, 14, 14, + 14, 14, 36, 36, 0, 52, 36, 42, 58, 58, 58, 58, 38, 36, 36, 36, + 14, 14, 19, 52, 36, 39, 14, 14, 58, 58, 58, 148, 36, 36, 36, 36, + 14, 14, 14, 36, 80, 58, 58, 58, 14, 38, 36, 36, 14, 14, 14, 14, + 14, 36, 36, 36, 39, 14, 38, 36, 36, 36, 36, 36, 39, 14, 14, 14, + 14, 38, 36, 36, 36, 36, 36, 36, 14, 38, 36, 36, 36, 14, 14, 14, + 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 1, 76, 14, 14, 36, + 14, 14, 14, 12, 12, 12, 12, 12, 36, 36, 36, 36, 36, 36, 36, 42, + 0, 0, 0, 0, 0, 44, 14, 58, 58, 36, 36, 36, 36, 36, 36, 36, + 0, 0, 52, 12, 12, 12, 12, 12, 58, 58, 36, 36, 36, 36, 36, 36, + 14, 19, 32, 38, 36, 36, 36, 36, 44, 14, 27, 76, 76, 0, 44, 36, + 12, 12, 12, 12, 12, 32, 27, 58, 14, 14, 38, 36, 36, 36, 36, 36, + 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 58, 27, 76, 52, + 14, 14, 14, 38, 38, 14, 14, 39, 14, 14, 14, 14, 27, 36, 36, 36, + 0, 0, 0, 0, 0, 52, 36, 36, 0, 0, 39, 14, 14, 14, 38, 39, + 38, 36, 36, 42, 36, 36, 39, 14, 14, 0, 36, 0, 0, 0, 52, 36, + 0, 0, 52, 36, 36, 36, 36, 36, 14, 14, 19, 0, 0, 0, 0, 0, + 0, 0, 0, 44, 14, 27, 58, 76, 12, 12, 12, 12, 12, 80, 39, 36, 0, 0, 14, 14, 36, 36, 36, 36, 0, 0, 0, 36, 0, 0, 0, 0, - 149, 58, 53, 14, 27, 36, 36, 36, 1, 77, 38, 36, 36, 36, 36, 36, - 0, 0, 0, 0, 36, 36, 36, 36, 14, 38, 36, 36, 36, 36, 36, 39, - 58, 58, 41, 36, 36, 36, 36, 36, 14, 14, 14, 14, 150, 70, 113, 14, - 14, 98, 14, 70, 70, 14, 14, 14, 14, 14, 14, 14, 16, 113, 14, 14, - 12, 12, 12, 12, 12, 36, 36, 58, 0, 0, 1, 36, 36, 36, 36, 36, - 0, 0, 0, 1, 58, 14, 14, 14, 14, 14, 77, 36, 36, 36, 36, 36, - 12, 12, 12, 12, 12, 39, 14, 14, 14, 14, 14, 14, 36, 36, 39, 14, - 19, 0, 0, 0, 0, 0, 0, 0, 97, 36, 36, 36, 36, 36, 36, 36, - 14, 14, 14, 14, 14, 36, 19, 1, 0, 0, 36, 36, 36, 36, 36, 36, - 14, 14, 19, 0, 0, 14, 19, 0, 0, 44, 19, 0, 0, 0, 14, 14, - 14, 14, 14, 14, 14, 0, 0, 14, 14, 0, 44, 36, 36, 36, 36, 36, - 36, 38, 39, 38, 39, 14, 38, 14, 14, 14, 14, 14, 14, 39, 39, 14, - 14, 14, 39, 14, 14, 14, 14, 14, 14, 14, 14, 39, 14, 38, 39, 14, - 14, 14, 38, 14, 14, 14, 38, 14, 14, 14, 14, 14, 14, 39, 14, 38, - 14, 14, 38, 38, 36, 14, 14, 14, 14, 14, 14, 14, 14, 14, 36, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 38, 39, 14, 14, 14, 14, + 149, 58, 53, 14, 27, 58, 58, 58, 58, 58, 58, 58, 14, 14, 0, 36, + 1, 76, 38, 36, 36, 36, 36, 36, 64, 64, 64, 64, 64, 64, 150, 36, + 0, 0, 0, 0, 36, 36, 36, 36, 60, 60, 60, 60, 60, 36, 59, 60, + 12, 12, 12, 12, 12, 60, 58, 151, 14, 38, 36, 36, 36, 36, 36, 39, + 0, 0, 0, 52, 0, 0, 0, 0, 27, 58, 58, 36, 36, 36, 36, 36, + 152, 14, 14, 14, 14, 14, 14, 14, 36, 0, 0, 0, 0, 0, 0, 0, + 58, 58, 41, 36, 36, 36, 36, 36, 14, 14, 14, 14, 153, 69, 115, 14, + 14, 99, 14, 69, 69, 14, 14, 14, 14, 14, 14, 14, 16, 115, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 69, 12, 12, 12, 12, 12, 36, 36, 58, + 0, 0, 1, 36, 36, 36, 36, 36, 0, 0, 0, 1, 58, 14, 14, 14, + 14, 14, 76, 36, 36, 36, 36, 36, 12, 12, 12, 12, 12, 39, 14, 14, + 14, 14, 14, 14, 36, 36, 39, 14, 19, 0, 0, 0, 0, 0, 0, 0, + 154, 36, 36, 36, 36, 36, 36, 36, 98, 125, 36, 36, 36, 36, 36, 36, + 98, 36, 36, 36, 36, 36, 36, 36, 14, 14, 14, 14, 14, 36, 19, 1, + 0, 0, 36, 36, 36, 36, 36, 36, 14, 14, 19, 0, 0, 14, 19, 0, + 0, 44, 19, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 0, 0, 14, + 14, 0, 44, 36, 36, 36, 36, 36, 36, 38, 39, 38, 39, 14, 38, 14, + 14, 14, 14, 14, 14, 39, 39, 14, 14, 14, 39, 14, 14, 14, 14, 14, + 14, 14, 14, 39, 14, 38, 39, 14, 14, 14, 38, 14, 14, 14, 38, 14, + 14, 14, 14, 14, 14, 39, 14, 38, 14, 14, 38, 38, 36, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 36, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 0, 0, 0, 44, 14, 19, 0, 0, 0, 0, 0, 0, 0, 0, 44, 14, + 14, 14, 19, 14, 14, 14, 14, 14, 14, 14, 44, 27, 58, 76, 36, 36, + 36, 36, 36, 36, 36, 42, 0, 0, 0, 0, 0, 0, 52, 42, 0, 0, + 0, 42, 52, 0, 0, 52, 36, 36, 14, 14, 38, 39, 14, 14, 14, 14, + 14, 14, 0, 0, 0, 52, 36, 36, 12, 12, 12, 12, 12, 36, 36, 153, 39, 38, 38, 39, 39, 14, 14, 14, 14, 38, 14, 14, 39, 39, 36, 36, 36, 38, 36, 39, 39, 39, 39, 14, 39, 38, 38, 39, 39, 39, 39, 39, 39, 38, 38, 39, 14, 38, 14, 14, 14, 38, 14, 14, 39, 14, 38, 38, 14, 14, 14, 14, 14, 39, 14, 14, 39, 14, 39, 14, 14, 39, 14, 14, - 28, 28, 28, 28, 28, 28, 151, 36, 28, 28, 28, 28, 28, 28, 28, 38, - 28, 28, 28, 28, 28, 14, 36, 36, 28, 28, 28, 28, 28, 151, 36, 36, - 36, 36, 36, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 97, 123, 36, 36, 36, 36, 36, 36, 97, 97, 97, 97, 123, 36, 36, 36, - 97, 97, 97, 97, 97, 97, 14, 97, 97, 97, 99, 100, 97, 97, 100, 97, - 36, 36, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 36, 36, 36, 36, - 100, 100, 100, 97, 97, 97, 97, 99, 99, 100, 97, 97, 97, 97, 97, 97, - 14, 14, 14, 100, 97, 97, 97, 97, 97, 97, 97, 99, 14, 14, 14, 14, - 14, 14, 100, 97, 97, 97, 97, 97, 97, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 123, 36, 36, 97, 97, 109, 97, 97, 97, 97, 97, - 97, 97, 14, 14, 14, 14, 97, 97, 97, 97, 14, 14, 14, 97, 97, 97, - 97, 123, 109, 97, 97, 97, 97, 97, 14, 14, 14, 85, 153, 91, 14, 14, - 42, 36, 36, 36, 36, 36, 36, 36, + 28, 28, 28, 28, 28, 28, 104, 98, 28, 28, 28, 28, 28, 28, 28, 102, + 28, 28, 28, 28, 28, 14, 98, 98, 98, 98, 98, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 98, 98, 101, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 14, 98, 98, 98, 100, 102, 98, 98, 102, 98, + 98, 101, 156, 98, 98, 105, 98, 98, 98, 98, 98, 98, 98, 157, 158, 158, + 98, 105, 98, 105, 105, 105, 105, 105, 156, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 105, 105, 98, 98, 156, 105, 105, 105, 105, 156, 98, 156, 98, + 101, 105, 101, 105, 98, 98, 98, 98, 102, 102, 102, 98, 98, 156, 98, 100, + 100, 102, 98, 98, 98, 98, 98, 98, 14, 14, 14, 102, 98, 98, 98, 98, + 98, 98, 98, 100, 14, 14, 14, 14, 14, 14, 102, 98, 98, 98, 98, 98, + 98, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 98, 98, 98, + 98, 98, 101, 98, 98, 156, 98, 98, 156, 98, 101, 156, 98, 98, 98, 98, + 98, 98, 14, 14, 14, 14, 98, 98, 98, 98, 14, 14, 14, 98, 98, 98, + 98, 98, 101, 105, 98, 101, 105, 105, 14, 14, 14, 85, 159, 91, 14, 14, + 98, 101, 98, 98, 98, 98, 98, 98, 98, 98, 105, 156, 98, 98, 98, 98, + 14, 14, 98, 98, 98, 98, 98, 98, 14, 14, 14, 14, 14, 14, 98, 98, + 14, 14, 14, 14, 98, 98, 98, 98, 14, 14, 14, 14, 14, 14, 14, 98, + 98, 98, 98, 98, 105, 105, 105, 156, 98, 98, 98, 156, 98, 98, 98, 98, + 156, 101, 105, 105, 105, 98, 105, 156, 42, 36, 36, 36, 36, 36, 36, 36, }; static RE_UINT8 re_line_break_stage_5[] = { @@ -10807,22 +11446,22 @@ static RE_UINT8 re_line_break_stage_5[] = { 12, 17, 16, 4, 4, 4, 4, 16, 0, 0, 8, 12, 12, 0, 0, 12, 0, 8, 18, 0, 0, 16, 18, 16, 16, 12, 6, 16, 37, 37, 37, 0, 37, 12, 12, 10, 10, 10, 16, 6, 16, 0, 6, 6, 10, 11, 11, 12, - 6, 12, 8, 6, 18, 18, 0, 10, 0, 24, 24, 24, 24, 0, 0, 9, - 24, 12, 17, 17, 4, 17, 17, 18, 4, 6, 4, 12, 1, 2, 18, 17, - 12, 4, 4, 0, 31, 31, 32, 32, 33, 33, 18, 12, 2, 0, 5, 24, - 18, 9, 0, 18, 18, 4, 18, 28, 26, 25, 3, 3, 1, 3, 14, 14, + 6, 12, 8, 6, 18, 18, 0, 24, 24, 24, 24, 0, 0, 9, 24, 12, + 17, 17, 4, 17, 17, 18, 4, 6, 4, 12, 1, 2, 18, 17, 12, 4, + 4, 0, 31, 31, 32, 32, 33, 33, 18, 12, 2, 0, 5, 24, 18, 9, + 0, 18, 18, 4, 18, 28, 16, 42, 26, 25, 3, 3, 1, 3, 14, 14, 14, 18, 20, 20, 3, 25, 5, 5, 8, 1, 2, 5, 30, 12, 2, 25, - 9, 12, 13, 13, 2, 12, 13, 12, 12, 13, 13, 25, 25, 13, 2, 1, - 0, 6, 6, 18, 1, 18, 26, 26, 1, 0, 0, 13, 2, 13, 13, 5, - 5, 1, 2, 2, 13, 16, 5, 13, 0, 38, 13, 38, 38, 13, 38, 0, - 16, 5, 5, 38, 38, 5, 13, 0, 38, 38, 10, 12, 31, 0, 34, 35, - 35, 35, 32, 0, 0, 33, 27, 27, 0, 37, 16, 37, 8, 2, 2, 8, - 6, 1, 2, 14, 13, 1, 13, 9, 10, 13, 0, 30, 13, 6, 13, 2, - 12, 38, 38, 12, 9, 0, 23, 25, 14, 0, 16, 17, 1, 1, 25, 0, - 39, 39, 3, 5, + 9, 12, 12, 14, 13, 13, 2, 12, 13, 12, 13, 40, 12, 13, 13, 25, + 25, 13, 40, 40, 2, 1, 0, 6, 6, 18, 1, 18, 26, 26, 0, 13, + 2, 13, 13, 5, 5, 1, 2, 2, 13, 16, 5, 13, 0, 38, 13, 38, + 38, 13, 38, 0, 16, 5, 5, 38, 38, 5, 13, 0, 38, 38, 10, 12, + 31, 0, 34, 35, 35, 35, 32, 0, 0, 33, 27, 27, 0, 37, 16, 37, + 8, 2, 2, 8, 6, 1, 2, 14, 13, 1, 13, 9, 10, 13, 0, 30, + 13, 6, 13, 2, 9, 0, 23, 25, 14, 0, 16, 17, 17, 0, 18, 24, + 17, 6, 1, 1, 5, 0, 39, 39, 40, 13, 13, 41, 41, 41, 3, 5, }; -/* Line_Break: 8332 bytes. */ +/* Line_Break: 8960 bytes. */ RE_UINT32 re_get_line_break(RE_UINT32 ch) { RE_UINT32 code; @@ -10883,92 +11522,95 @@ static RE_UINT8 re_numeric_type_stage_2[] = { 1, 1, 1, 1, 1, 1, 50, 1, 51, 52, 53, 54, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 55, 1, 1, 1, 1, 1, 15, - 1, 56, 57, 58, 59, 1, 1, 1, 60, 61, 62, 63, 1, 1, 64, 1, - 65, 66, 54, 1, 67, 1, 68, 1, 69, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 70, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 71, 72, 1, 1, 1, 1, - 1, 1, 1, 73, 1, 1, 1, 74, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 75, 1, 1, 1, 1, 1, 1, 1, - 1, 76, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 77, 78, 1, 1, 1, 1, 1, 1, 1, 79, 80, 81, 1, 1, 1, 1, - 1, 1, 1, 82, 1, 1, 1, 1, 1, 83, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 84, 1, 1, 1, 1, - 1, 1, 85, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 82, 1, 1, 1, 1, 1, 1, 1, + 1, 56, 57, 58, 59, 1, 1, 1, 60, 61, 62, 63, 64, 1, 65, 1, + 66, 67, 54, 1, 9, 1, 68, 69, 70, 1, 1, 1, 71, 1, 1, 1, + 1, 1, 1, 1, 72, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 73, 74, 1, 1, 1, 1, + 1, 1, 1, 75, 1, 1, 1, 76, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 77, 53, 1, 1, 1, 1, 1, 1, + 1, 78, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 79, 80, 1, 1, 1, 1, 1, 1, 1, 81, 82, 83, 1, 1, 1, 1, + 1, 1, 1, 84, 1, 1, 1, 1, 1, 85, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 86, 1, 1, 1, 1, + 1, 1, 87, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 84, 1, 1, 1, 1, 1, 1, 1, }; static RE_UINT8 re_numeric_type_stage_3[] = { - 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 0, - 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 4, - 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 4, - 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 1, 0, 0, 0, 1, 0, - 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, - 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, - 0, 0, 0, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 0, 0, 0, 14, 0, 0, 0, 0, 0, 15, 0, 0, 0, - 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 17, 0, 0, 0, 0, 0, 18, 19, 20, 0, 0, 0, - 0, 0, 0, 21, 22, 0, 0, 23, 0, 0, 0, 24, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 26, 27, 28, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 29, 0, 0, 0, 0, 30, 31, 0, 30, 32, 0, 0, - 33, 0, 0, 0, 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, - 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 26, 0, 38, 39, 40, 41, - 36, 0, 0, 42, 0, 0, 0, 0, 43, 0, 44, 45, 0, 0, 0, 0, - 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48, 0, - 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 50, 0, 0, 0, 51, - 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, - 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, - 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, - 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, - 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, - 0, 42, 0, 0, 0, 0, 0, 0, 0, 58, 59, 60, 0, 0, 0, 56, - 0, 3, 0, 0, 0, 0, 0, 61, 0, 62, 0, 0, 0, 0, 1, 0, - 3, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 63, 0, 55, 64, 26, - 65, 66, 19, 67, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, - 0, 70, 71, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 3, 0, 0, - 0, 0, 73, 74, 0, 75, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 77, 78, 79, 0, 0, 80, 0, 0, 73, 73, 0, 81, 0, 0, - 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 83, 84, 0, 0, 0, 1, - 0, 85, 0, 0, 0, 0, 1, 86, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 87, - 19, 19, 19, 88, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, - 0, 0, 89, 90, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 92, 93, 0, 0, 0, 0, 0, 0, 75, 0, - 94, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 43, 0, 0, 0, 95, - 0, 58, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 96, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 97, 98, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, - 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 4, + 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 4, + 0, 0, 9, 10, 0, 0, 0, 4, 0, 0, 1, 0, 0, 0, 1, 0, + 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, + 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, + 0, 0, 0, 0, 0, 0, 0, 14, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 15, 0, 0, 0, 0, 0, 16, 0, 0, 0, + 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 17, 18, 0, 0, 0, 0, 0, 19, 20, 21, 0, 0, 0, + 0, 0, 0, 22, 23, 0, 0, 24, 0, 0, 0, 25, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 0, 31, 32, 0, 31, 33, 0, 0, + 34, 0, 0, 0, 35, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, + 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 27, 0, 39, 40, 41, 42, + 37, 0, 0, 43, 0, 0, 0, 0, 44, 0, 45, 46, 0, 0, 0, 0, + 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 49, 0, + 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 52, + 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, + 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, + 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, + 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, + 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, + 0, 43, 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, 0, 0, 0, 57, + 0, 3, 0, 0, 0, 0, 0, 62, 0, 63, 0, 0, 0, 0, 1, 0, + 3, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 64, 0, 56, 65, 27, + 66, 67, 20, 68, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, + 0, 71, 72, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 74, 75, 0, 76, 0, 77, 78, 0, 0, 0, 0, 79, 80, 20, + 0, 0, 81, 82, 83, 0, 0, 84, 0, 0, 74, 74, 0, 85, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0, 0, + 0, 0, 88, 89, 0, 0, 0, 1, 0, 90, 0, 0, 0, 0, 1, 91, + 0, 0, 1, 0, 0, 0, 3, 0, 0, 92, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 94, 95, 0, 0, 0, 0, + 20, 20, 20, 96, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 97, 98, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 100, 101, 0, 0, 0, 0, 0, 0, 76, 0, + 102, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 44, 0, 0, 0, 103, + 0, 59, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 104, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 105, 106, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, + 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, }; static RE_UINT8 re_numeric_type_stage_4[] = { 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 3, 4, 1, 2, 0, 0, 5, 1, 0, 0, 5, 1, 6, 7, 5, 1, 8, 0, 5, 1, 9, 0, - 5, 1, 0, 10, 5, 1, 11, 0, 1, 12, 13, 0, 0, 14, 15, 16, - 0, 17, 18, 0, 1, 2, 19, 7, 0, 0, 1, 20, 1, 2, 1, 2, - 0, 0, 21, 22, 23, 22, 0, 0, 0, 0, 19, 19, 19, 19, 19, 19, - 24, 7, 0, 0, 23, 25, 26, 27, 19, 23, 25, 13, 0, 28, 29, 30, - 0, 0, 31, 32, 23, 33, 34, 0, 0, 0, 0, 35, 36, 0, 0, 0, - 37, 7, 0, 9, 0, 0, 38, 0, 19, 7, 0, 0, 0, 19, 37, 19, - 0, 0, 37, 19, 35, 0, 0, 0, 39, 0, 0, 0, 0, 40, 0, 0, - 0, 35, 0, 0, 41, 42, 0, 0, 0, 43, 44, 0, 0, 0, 0, 36, - 18, 0, 0, 36, 0, 18, 0, 0, 0, 0, 18, 0, 43, 0, 0, 0, - 45, 0, 0, 0, 0, 46, 0, 0, 47, 43, 0, 0, 48, 0, 0, 0, - 0, 0, 0, 39, 0, 0, 42, 42, 0, 0, 0, 40, 0, 0, 0, 17, - 0, 49, 18, 0, 0, 0, 0, 45, 0, 43, 0, 0, 0, 0, 40, 0, - 0, 0, 45, 0, 0, 45, 39, 0, 42, 0, 0, 0, 45, 43, 0, 0, - 0, 0, 0, 18, 17, 19, 0, 0, 0, 0, 11, 0, 0, 39, 39, 18, - 0, 0, 50, 0, 36, 19, 19, 19, 19, 19, 13, 0, 19, 19, 19, 18, - 0, 51, 0, 0, 37, 19, 19, 13, 13, 0, 0, 0, 42, 40, 0, 0, - 0, 0, 52, 0, 0, 0, 0, 19, 0, 0, 0, 37, 36, 19, 0, 0, - 0, 0, 17, 13, 53, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 55, - 0, 56, 0, 0, 0, 37, 0, 0, 23, 25, 19, 10, 0, 0, 57, 58, - 59, 1, 0, 0, 0, 0, 5, 1, 37, 19, 16, 0, 1, 12, 9, 0, - 19, 10, 0, 0, 0, 0, 1, 60, 7, 0, 0, 0, 19, 19, 7, 0, - 0, 5, 1, 1, 1, 1, 1, 1, 23, 61, 0, 0, 40, 0, 0, 0, - 39, 43, 0, 43, 0, 40, 0, 35, 0, 0, 0, 42, + 5, 1, 0, 10, 0, 0, 0, 10, 5, 1, 11, 12, 1, 13, 14, 0, + 0, 15, 16, 17, 0, 18, 12, 0, 1, 2, 11, 7, 0, 0, 1, 19, + 1, 2, 1, 2, 0, 0, 20, 21, 22, 21, 0, 0, 0, 0, 11, 11, + 11, 11, 11, 11, 23, 7, 0, 0, 22, 24, 25, 26, 11, 22, 24, 14, + 0, 27, 28, 29, 0, 0, 30, 31, 22, 32, 33, 0, 0, 0, 0, 34, + 35, 0, 0, 0, 36, 7, 0, 9, 0, 0, 37, 0, 11, 7, 0, 0, + 0, 11, 36, 11, 0, 0, 36, 11, 34, 0, 0, 0, 38, 0, 0, 0, + 0, 39, 0, 0, 0, 34, 0, 0, 40, 41, 0, 0, 0, 42, 43, 0, + 0, 0, 0, 35, 12, 0, 0, 35, 0, 12, 0, 0, 0, 0, 12, 0, + 42, 0, 0, 0, 44, 0, 0, 0, 0, 45, 0, 0, 46, 42, 0, 0, + 47, 0, 0, 0, 0, 0, 0, 38, 0, 0, 41, 41, 0, 0, 0, 39, + 0, 0, 0, 18, 0, 48, 12, 0, 0, 0, 0, 44, 0, 42, 0, 0, + 0, 0, 39, 0, 0, 0, 44, 0, 0, 44, 38, 0, 41, 0, 0, 0, + 44, 42, 0, 0, 0, 0, 0, 12, 18, 11, 0, 0, 0, 0, 49, 0, + 0, 38, 38, 12, 0, 0, 50, 0, 35, 11, 11, 11, 11, 11, 14, 0, + 11, 11, 11, 12, 0, 51, 0, 0, 36, 11, 11, 14, 14, 0, 0, 0, + 41, 39, 0, 0, 0, 0, 52, 0, 0, 0, 0, 11, 0, 0, 0, 36, + 35, 11, 0, 0, 0, 0, 0, 53, 0, 0, 18, 14, 0, 0, 0, 54, + 11, 11, 8, 11, 55, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 57, + 0, 53, 0, 0, 0, 36, 0, 0, 0, 0, 0, 8, 22, 24, 11, 10, + 0, 0, 58, 59, 60, 1, 0, 0, 0, 0, 5, 1, 36, 11, 17, 0, + 0, 0, 1, 61, 1, 13, 9, 0, 0, 0, 1, 13, 11, 17, 0, 0, + 11, 10, 0, 0, 0, 0, 1, 62, 7, 0, 0, 0, 11, 11, 7, 0, + 0, 5, 1, 1, 1, 1, 1, 1, 22, 63, 0, 0, 39, 0, 0, 0, + 38, 42, 0, 42, 0, 39, 0, 34, 0, 0, 0, 41, }; static RE_UINT8 re_numeric_type_stage_5[] = { @@ -10977,35 +11619,36 @@ static RE_UINT8 re_numeric_type_stage_5[] = { 0, 2, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, - 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, - 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, - 3, 3, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 2, 2, 2, - 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, - 1, 1, 1, 0, 0, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, - 0, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 0, 0, 0, 0, 0, 0, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, - 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, - 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, - 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 3, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 3, 3, 2, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 0, 0, 1, 1, 1, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 1, 1, 0, 0, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, + 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, + 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, - 0, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2, 2, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 1, 1, 0, 0, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, + 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 1, 1, 0, 0, 0, 0, 3, 3, 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 0, 0, 0, }; -/* Numeric_Type: 2252 bytes. */ +/* Numeric_Type: 2316 bytes. */ RE_UINT32 re_get_numeric_type(RE_UINT32 ch) { RE_UINT32 code; @@ -11066,18 +11709,18 @@ static RE_UINT8 re_numeric_value_stage_2[] = { 1, 1, 1, 1, 1, 1, 50, 1, 51, 52, 53, 54, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 55, 1, 1, 1, 1, 1, 15, - 1, 56, 57, 58, 59, 1, 1, 1, 60, 61, 62, 63, 1, 1, 64, 1, - 65, 66, 54, 1, 67, 1, 68, 1, 69, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 70, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 71, 72, 1, 1, 1, 1, - 1, 1, 1, 73, 1, 1, 1, 74, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 75, 1, 1, 1, 1, 1, 1, 1, - 1, 76, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 77, 78, 1, 1, 1, 1, 1, 1, 1, 79, 80, 81, 1, 1, 1, 1, - 1, 1, 1, 82, 1, 1, 1, 1, 1, 83, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 84, 1, 1, 1, 1, - 1, 1, 85, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 86, 1, 1, 1, 1, 1, 1, 1, + 1, 56, 57, 58, 59, 1, 1, 1, 60, 61, 62, 63, 64, 1, 65, 1, + 66, 67, 54, 1, 9, 1, 68, 69, 70, 1, 1, 1, 71, 1, 1, 1, + 1, 1, 1, 1, 72, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 73, 74, 1, 1, 1, 1, + 1, 1, 1, 75, 1, 1, 1, 76, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 77, 53, 1, 1, 1, 1, 1, 1, + 1, 78, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 79, 80, 1, 1, 1, 1, 1, 1, 1, 81, 82, 83, 1, 1, 1, 1, + 1, 1, 1, 84, 1, 1, 1, 1, 1, 85, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 86, 1, 1, 1, 1, + 1, 1, 87, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 88, 1, 1, 1, 1, 1, 1, 1, }; static RE_UINT8 re_numeric_value_stage_3[] = { @@ -11085,46 +11728,47 @@ static RE_UINT8 re_numeric_value_stage_3[] = { 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 4, - 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 1, 0, 0, 0, 1, 0, - 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, - 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, - 0, 0, 0, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 0, 0, 0, 14, 0, 0, 0, 0, 0, 13, 0, 0, 0, - 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, - 0, 0, 0, 15, 3, 0, 0, 0, 0, 0, 16, 17, 18, 0, 0, 0, - 0, 0, 0, 19, 20, 0, 0, 21, 0, 0, 0, 22, 23, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 24, 25, 26, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 27, 0, 0, 0, 0, 28, 29, 0, 28, 30, 0, 0, - 31, 0, 0, 0, 32, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, - 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 36, 0, 37, 38, 39, 40, - 41, 0, 0, 42, 0, 0, 0, 0, 43, 0, 44, 45, 0, 0, 0, 0, - 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48, 0, - 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 50, 0, 0, 0, 51, - 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, - 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, - 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, - 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, - 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, - 0, 62, 0, 0, 0, 0, 0, 0, 0, 63, 64, 65, 0, 0, 0, 66, - 0, 3, 0, 0, 0, 0, 0, 67, 0, 68, 0, 0, 0, 0, 1, 0, + 0, 0, 9, 10, 0, 0, 0, 4, 0, 0, 1, 0, 0, 0, 1, 0, + 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, + 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, + 0, 0, 0, 0, 0, 0, 0, 14, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 15, 0, 0, 0, 0, 0, 14, 0, 0, 0, + 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 3, 0, 0, 0, 0, 0, 17, 18, 19, 0, 0, 0, + 0, 0, 0, 20, 21, 0, 0, 22, 0, 0, 0, 23, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 25, 26, 27, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 28, 0, 0, 0, 0, 29, 30, 0, 29, 31, 0, 0, + 32, 0, 0, 0, 33, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, + 0, 0, 35, 0, 0, 0, 0, 0, 36, 0, 37, 0, 38, 39, 40, 41, + 42, 0, 0, 43, 0, 0, 0, 0, 44, 0, 45, 46, 0, 0, 0, 0, + 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 49, 0, + 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 52, + 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, + 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, + 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, + 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, + 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, + 0, 63, 0, 0, 0, 0, 0, 0, 0, 64, 65, 66, 0, 0, 0, 67, + 0, 3, 0, 0, 0, 0, 0, 68, 0, 69, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 69, 0, 70, 71, 72, - 73, 74, 75, 76, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, - 0, 79, 80, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 3, 0, 0, - 0, 0, 82, 83, 0, 84, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 86, 87, 88, 0, 0, 89, 0, 0, 90, 90, 0, 91, 0, 0, - 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 93, 94, 0, 0, 0, 1, - 0, 95, 0, 0, 0, 0, 1, 96, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 97, - 98, 99, 100, 101, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, - 0, 0, 102, 103, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 105, 106, 0, 0, 0, 0, 0, 0, 107, 0, - 108, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 110, 0, 0, 0, 111, - 0, 112, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 0, - 0, 0, 0, 0, 120, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 70, 0, 71, 72, 73, + 74, 75, 76, 77, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, + 0, 80, 81, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 83, 84, 0, 85, 0, 86, 87, 0, 0, 0, 0, 88, 89, 90, + 0, 0, 91, 92, 93, 0, 0, 94, 0, 0, 95, 95, 0, 96, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 98, 0, 0, 0, 0, + 0, 0, 99, 100, 0, 0, 0, 1, 0, 101, 0, 0, 0, 0, 1, 102, + 0, 0, 1, 0, 0, 0, 3, 0, 0, 103, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 105, 106, 0, 0, 0, 0, + 107, 108, 109, 110, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 111, 112, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 114, 115, 0, 0, 0, 0, 0, 0, 116, 0, + 117, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 119, 0, 0, 0, 120, + 0, 121, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 123, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 124, 125, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, + 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 129, 0, 0, 0, }; static RE_UINT8 re_numeric_value_stage_4[] = { @@ -11132,118 +11776,126 @@ static RE_UINT8 re_numeric_value_stage_4[] = { 0, 0, 0, 0, 4, 0, 5, 6, 1, 2, 3, 0, 0, 0, 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 7, 8, 9, 0, 10, 11, 0, 0, 7, 8, 9, 12, 13, 0, 0, 0, 7, 8, 9, 14, 0, 0, 0, - 0, 7, 8, 9, 0, 0, 1, 15, 0, 7, 8, 9, 16, 17, 0, 0, - 1, 2, 18, 19, 20, 0, 0, 0, 0, 0, 21, 2, 22, 23, 24, 25, - 0, 0, 0, 26, 27, 0, 0, 0, 1, 2, 3, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 1, 2, 28, 0, 0, 0, 0, 0, 29, 2, 3, 0, - 0, 0, 0, 0, 30, 31, 32, 33, 34, 35, 36, 37, 34, 35, 36, 37, - 38, 39, 40, 0, 0, 0, 0, 0, 34, 35, 36, 41, 42, 34, 35, 36, - 41, 42, 34, 35, 36, 41, 42, 0, 0, 0, 43, 44, 45, 46, 2, 47, - 0, 0, 0, 0, 0, 48, 49, 50, 34, 35, 51, 49, 50, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, - 21, 2, 3, 0, 0, 0, 54, 0, 0, 0, 0, 0, 48, 55, 0, 0, - 34, 35, 56, 0, 0, 0, 0, 0, 0, 0, 57, 58, 59, 60, 61, 62, - 0, 0, 0, 0, 63, 64, 65, 66, 0, 67, 0, 0, 0, 0, 0, 0, - 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, - 0, 0, 0, 70, 0, 0, 0, 0, 71, 72, 73, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 75, 0, 76, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 77, 78, 0, 0, 0, 0, 0, 0, 79, - 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, - 0, 0, 0, 0, 81, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, - 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 0, 0, 0, 0, - 86, 87, 0, 88, 0, 0, 0, 0, 89, 80, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 5, 0, 5, 0, - 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 92, - 0, 0, 0, 15, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, - 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, - 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 97, 0, 98, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 99, 68, 0, 0, 0, - 0, 0, 0, 0, 75, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, - 0, 0, 0, 0, 0, 103, 0, 0, 0, 48, 49, 104, 0, 0, 0, 0, - 0, 0, 0, 0, 105, 106, 0, 0, 0, 0, 107, 0, 108, 0, 75, 0, - 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 110, 0, 111, 8, 9, 57, 58, 112, 113, - 114, 115, 116, 117, 118, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 122, 131, 132, 0, 0, 0, 133, 0, 0, 0, 0, 0, - 21, 2, 22, 23, 24, 134, 135, 0, 136, 0, 0, 0, 0, 0, 0, 0, - 137, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 140, 0, 0, - 0, 0, 0, 0, 0, 0, 141, 142, 0, 0, 0, 0, 0, 0, 21, 143, - 0, 111, 144, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 147, 0, - 34, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, - 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 111, 145, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 34, 148, 0, 0, 21, 151, 0, 0, 0, 0, - 34, 35, 152, 153, 154, 155, 156, 157, 0, 0, 0, 0, 48, 49, 50, 158, - 159, 160, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, - 21, 2, 22, 23, 24, 161, 0, 0, 1, 2, 22, 23, 162, 0, 0, 0, - 8, 9, 49, 163, 35, 164, 2, 165, 166, 167, 9, 168, 169, 168, 170, 171, - 172, 173, 174, 175, 144, 176, 177, 178, 179, 180, 181, 182, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 183, 184, 185, 0, 0, 0, 0, 0, 0, 0, - 34, 35, 152, 153, 186, 0, 0, 0, 0, 0, 0, 7, 8, 9, 1, 2, - 187, 8, 9, 1, 2, 187, 8, 9, 0, 111, 8, 9, 0, 0, 0, 0, - 188, 49, 104, 29, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, - 0, 189, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, - 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, - 190, 0, 0, 88, 0, 0, 0, 88, 0, 0, 101, 0, 0, 0, 0, 73, - 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 80, 0, - 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 191, 0, 0, 0, 0, - 0, 0, 0, 0, 192, 0, 0, 0, + 0, 7, 8, 9, 0, 0, 1, 15, 0, 0, 0, 0, 0, 0, 16, 17, + 0, 7, 8, 9, 18, 19, 20, 0, 1, 2, 21, 22, 23, 0, 0, 0, + 0, 0, 24, 2, 25, 26, 27, 28, 0, 0, 0, 29, 30, 0, 0, 0, + 1, 2, 3, 0, 1, 2, 3, 0, 0, 0, 0, 0, 1, 2, 31, 0, + 0, 0, 0, 0, 32, 2, 3, 0, 0, 0, 0, 0, 33, 34, 35, 36, + 37, 38, 39, 40, 37, 38, 39, 40, 41, 42, 43, 0, 0, 0, 0, 0, + 37, 38, 39, 44, 45, 37, 38, 39, 44, 45, 37, 38, 39, 44, 45, 0, + 0, 0, 46, 47, 48, 49, 2, 50, 0, 0, 0, 0, 0, 51, 52, 53, + 37, 38, 54, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, + 0, 56, 0, 0, 0, 0, 0, 0, 24, 2, 3, 0, 0, 0, 57, 0, + 0, 0, 0, 0, 51, 58, 0, 0, 37, 38, 59, 0, 0, 0, 0, 0, + 0, 0, 60, 61, 62, 63, 64, 65, 0, 0, 0, 0, 66, 67, 68, 69, + 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, + 74, 75, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, + 0, 0, 0, 78, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, + 81, 0, 0, 0, 0, 0, 0, 82, 0, 0, 83, 0, 0, 0, 0, 0, + 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, + 0, 85, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, + 0, 0, 87, 88, 0, 0, 0, 0, 89, 90, 0, 91, 0, 0, 0, 0, + 92, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, + 0, 0, 0, 0, 5, 0, 5, 0, 0, 0, 0, 0, 0, 0, 94, 0, + 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 15, 78, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 0, + 0, 0, 0, 0, 98, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, + 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, + 0, 0, 0, 102, 71, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, + 103, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 84, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 106, 0, 0, + 0, 51, 52, 107, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 0, 0, + 0, 0, 110, 0, 111, 0, 78, 0, 0, 0, 0, 0, 106, 0, 0, 0, + 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, + 0, 114, 8, 9, 60, 61, 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 125, 134, 135, 0, + 0, 0, 136, 0, 0, 0, 0, 0, 24, 2, 25, 26, 27, 137, 138, 0, + 139, 0, 0, 0, 0, 0, 0, 0, 140, 0, 141, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 142, 143, 0, 0, 0, 0, 0, 0, 0, 0, 144, 145, + 0, 0, 0, 0, 0, 0, 24, 146, 0, 114, 147, 148, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 114, 148, 0, 0, 0, 0, 0, 149, 150, 0, + 0, 0, 0, 0, 0, 0, 0, 151, 37, 38, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 37, 166, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168, + 0, 0, 114, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 166, + 0, 0, 24, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 171, + 37, 38, 152, 153, 172, 155, 173, 174, 0, 0, 0, 0, 51, 52, 53, 175, + 176, 177, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, + 24, 2, 25, 26, 27, 178, 0, 0, 0, 0, 0, 0, 1, 2, 25, 0, + 1, 2, 25, 26, 179, 0, 0, 0, 0, 0, 0, 0, 1, 2, 180, 52, + 53, 175, 176, 84, 0, 0, 0, 0, 8, 9, 52, 181, 38, 182, 2, 180, + 183, 184, 9, 185, 186, 185, 187, 188, 189, 190, 191, 192, 147, 193, 194, 195, + 196, 197, 198, 199, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 200, 201, + 202, 0, 0, 0, 0, 0, 0, 0, 37, 38, 152, 153, 203, 0, 0, 0, + 0, 0, 0, 7, 8, 9, 1, 2, 204, 8, 9, 1, 2, 204, 8, 9, + 0, 114, 8, 9, 0, 0, 0, 0, 205, 52, 107, 32, 0, 0, 0, 0, + 73, 0, 0, 0, 0, 0, 0, 0, 0, 206, 0, 0, 0, 0, 0, 0, + 101, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 94, 0, 0, 0, 0, 0, 207, 0, 0, 91, 0, 0, 0, 91, + 0, 0, 104, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 76, 0, + 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 110, 0, + 0, 0, 0, 208, 0, 0, 0, 0, 0, 0, 0, 0, 209, 0, 0, 0, }; static RE_UINT8 re_numeric_value_stage_5[] = { - 0, 0, 0, 0, 2, 23, 25, 27, 29, 31, 33, 35, 37, 39, 0, 0, - 0, 0, 25, 27, 0, 23, 0, 0, 11, 15, 19, 0, 0, 0, 2, 23, - 25, 27, 29, 31, 33, 35, 37, 39, 3, 6, 9, 11, 19, 46, 0, 0, - 0, 0, 11, 15, 19, 3, 6, 9, 40, 85, 94, 0, 23, 25, 27, 0, - 40, 85, 94, 11, 15, 19, 0, 0, 37, 39, 15, 24, 26, 28, 30, 32, - 34, 36, 38, 1, 0, 23, 25, 27, 37, 39, 40, 50, 60, 70, 80, 81, - 82, 83, 84, 85, 103, 0, 0, 0, 0, 0, 47, 48, 49, 0, 0, 0, - 37, 39, 23, 0, 2, 0, 0, 0, 7, 5, 4, 12, 18, 10, 14, 16, - 20, 8, 21, 6, 13, 17, 22, 23, 23, 25, 27, 29, 31, 33, 35, 37, - 39, 40, 41, 42, 80, 85, 89, 94, 94, 98, 103, 0, 0, 33, 80, 107, - 112, 2, 0, 0, 43, 44, 45, 46, 47, 48, 49, 50, 0, 0, 2, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 23, 25, 27, 37, 39, 40, 2, - 0, 0, 23, 25, 27, 29, 31, 33, 35, 37, 39, 40, 39, 40, 23, 25, - 0, 15, 0, 0, 0, 0, 0, 2, 40, 50, 60, 0, 27, 29, 0, 0, - 39, 40, 0, 0, 40, 50, 60, 70, 80, 81, 82, 83, 0, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 0, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 0, 31, 0, 0, - 0, 0, 0, 25, 0, 0, 31, 0, 0, 35, 0, 0, 23, 0, 0, 35, - 0, 0, 0, 103, 0, 27, 0, 0, 0, 39, 0, 0, 25, 0, 0, 0, - 31, 0, 29, 0, 0, 0, 0, 116, 40, 0, 0, 0, 0, 0, 0, 94, - 27, 0, 0, 0, 85, 0, 0, 0, 116, 0, 0, 0, 0, 0, 118, 0, - 0, 25, 0, 37, 0, 33, 0, 0, 0, 40, 0, 94, 50, 60, 0, 0, - 70, 0, 0, 0, 0, 27, 27, 27, 0, 0, 0, 29, 0, 0, 23, 0, - 0, 0, 39, 50, 0, 0, 40, 0, 37, 0, 0, 0, 0, 0, 35, 0, - 0, 0, 39, 0, 0, 0, 85, 0, 0, 0, 29, 0, 0, 0, 25, 0, - 0, 94, 0, 0, 0, 0, 33, 0, 33, 0, 0, 0, 0, 0, 2, 0, - 35, 37, 39, 2, 11, 15, 19, 3, 6, 9, 0, 0, 0, 0, 0, 27, - 0, 0, 0, 40, 0, 33, 0, 33, 0, 40, 0, 0, 0, 0, 0, 23, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 11, 15, 23, 31, - 80, 89, 98, 107, 31, 40, 80, 85, 89, 94, 98, 31, 40, 80, 85, 89, - 94, 103, 107, 40, 23, 23, 23, 25, 25, 25, 25, 31, 40, 40, 40, 40, - 40, 60, 80, 80, 80, 80, 85, 87, 89, 89, 89, 89, 80, 15, 15, 18, - 19, 0, 0, 0, 0, 0, 2, 11, 86, 87, 88, 89, 90, 91, 92, 93, - 23, 31, 40, 80, 0, 84, 0, 0, 0, 0, 93, 0, 0, 23, 25, 40, - 50, 85, 0, 0, 23, 25, 27, 40, 50, 85, 94, 103, 29, 31, 40, 50, - 25, 27, 29, 29, 31, 40, 50, 85, 0, 0, 23, 40, 50, 85, 25, 27, - 40, 50, 85, 94, 0, 23, 80, 0, 0, 23, 40, 50, 29, 40, 50, 85, - 39, 40, 50, 60, 70, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 15, 11, 12, 18, 0, 50, 60, 70, 80, 81, 82, 83, 84, - 85, 94, 2, 23, 94, 0, 0, 0, 82, 83, 84, 0, 35, 37, 39, 29, - 39, 23, 25, 27, 37, 39, 23, 25, 27, 29, 31, 25, 27, 27, 29, 31, - 23, 25, 27, 27, 29, 31, 113, 114, 29, 31, 27, 27, 29, 29, 29, 29, - 33, 35, 35, 35, 37, 37, 39, 39, 39, 39, 25, 27, 29, 31, 33, 23, - 31, 31, 25, 27, 23, 25, 12, 18, 21, 12, 18, 6, 11, 8, 11, 11, - 15, 12, 18, 70, 80, 29, 31, 33, 35, 37, 39, 0, 37, 39, 0, 40, - 85, 103, 115, 116, 117, 118, 0, 0, 83, 84, 0, 0, 37, 39, 2, 23, - 2, 2, 23, 25, 29, 0, 0, 0, 0, 0, 0, 60, 0, 29, 0, 0, - 39, 0, 0, 0, + 0, 0, 0, 0, 2, 32, 34, 36, 38, 40, 42, 44, 46, 48, 0, 0, + 0, 0, 34, 36, 0, 32, 0, 0, 17, 22, 27, 0, 0, 0, 2, 32, + 34, 36, 38, 40, 42, 44, 46, 48, 7, 11, 15, 17, 27, 55, 0, 0, + 0, 0, 17, 22, 27, 7, 11, 15, 49, 94, 103, 0, 32, 34, 36, 0, + 3, 4, 5, 6, 9, 13, 16, 0, 49, 94, 103, 17, 22, 27, 7, 11, + 15, 0, 0, 0, 46, 48, 22, 33, 35, 37, 39, 41, 43, 45, 47, 1, + 0, 32, 34, 36, 46, 48, 49, 59, 69, 79, 89, 90, 91, 92, 93, 94, + 112, 0, 0, 0, 0, 0, 56, 57, 58, 0, 0, 0, 46, 48, 32, 0, + 2, 0, 0, 0, 12, 10, 9, 18, 26, 16, 20, 24, 28, 14, 29, 11, + 19, 25, 30, 32, 32, 34, 36, 38, 40, 42, 44, 46, 48, 49, 50, 51, + 89, 94, 98, 103, 103, 107, 112, 0, 0, 42, 89, 116, 121, 2, 0, 0, + 52, 53, 54, 55, 56, 57, 58, 59, 0, 0, 2, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 32, 34, 36, 46, 48, 49, 2, 0, 0, 32, 34, + 36, 38, 40, 42, 44, 46, 48, 49, 48, 49, 32, 34, 0, 22, 0, 0, + 0, 0, 0, 2, 49, 59, 69, 0, 36, 38, 0, 0, 48, 49, 0, 0, + 49, 59, 69, 79, 89, 90, 91, 92, 0, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 0, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 0, 40, 0, 0, 0, 0, 0, 34, + 0, 0, 40, 0, 0, 44, 0, 0, 32, 0, 0, 44, 0, 0, 0, 112, + 0, 36, 0, 0, 0, 48, 0, 0, 34, 0, 0, 0, 40, 0, 38, 0, + 0, 0, 0, 133, 49, 0, 0, 0, 0, 0, 0, 103, 36, 0, 0, 0, + 94, 0, 0, 0, 133, 0, 0, 0, 0, 0, 135, 0, 0, 34, 0, 46, + 0, 42, 0, 0, 0, 49, 0, 103, 59, 69, 0, 0, 79, 0, 0, 0, + 0, 36, 36, 36, 0, 0, 0, 38, 0, 0, 32, 0, 0, 0, 48, 59, + 0, 0, 49, 0, 46, 0, 0, 0, 0, 0, 44, 0, 0, 0, 48, 0, + 0, 0, 94, 0, 0, 0, 38, 0, 0, 0, 34, 0, 0, 103, 0, 0, + 0, 0, 42, 0, 42, 0, 0, 0, 0, 0, 2, 0, 44, 46, 48, 2, + 17, 22, 27, 7, 11, 15, 0, 0, 0, 0, 0, 36, 0, 0, 0, 49, + 0, 42, 0, 42, 0, 49, 0, 0, 0, 0, 0, 32, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 17, 22, 32, 40, 89, 98, 107, 116, + 40, 49, 89, 94, 98, 103, 107, 40, 49, 89, 94, 98, 103, 112, 116, 49, + 32, 32, 32, 34, 34, 34, 34, 40, 49, 49, 49, 49, 49, 69, 89, 89, + 89, 89, 94, 96, 98, 98, 98, 98, 89, 22, 22, 26, 27, 0, 0, 0, + 0, 0, 2, 17, 95, 96, 97, 98, 99, 100, 101, 102, 32, 40, 49, 89, + 0, 93, 0, 0, 0, 0, 102, 0, 0, 32, 34, 49, 59, 94, 0, 0, + 32, 34, 36, 49, 59, 94, 103, 112, 38, 40, 49, 59, 34, 36, 38, 38, + 40, 49, 59, 94, 0, 0, 32, 49, 59, 94, 34, 36, 31, 22, 0, 0, + 48, 49, 59, 69, 79, 89, 90, 91, 0, 0, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 124, 125, 127, 128, 129, 130, 131, 8, 14, + 17, 18, 21, 22, 23, 26, 27, 29, 49, 59, 94, 103, 0, 32, 89, 0, + 0, 32, 49, 59, 38, 49, 59, 94, 0, 0, 32, 40, 49, 89, 94, 103, + 92, 93, 94, 95, 100, 101, 102, 22, 17, 18, 26, 0, 59, 69, 79, 89, + 90, 91, 92, 93, 94, 103, 2, 32, 103, 0, 0, 0, 91, 92, 93, 0, + 46, 48, 32, 34, 44, 46, 48, 38, 48, 32, 34, 36, 36, 38, 40, 34, + 36, 36, 38, 40, 32, 34, 36, 36, 38, 40, 123, 126, 38, 40, 36, 36, + 38, 38, 38, 38, 42, 44, 44, 44, 46, 46, 48, 48, 48, 48, 34, 36, + 38, 40, 42, 32, 40, 40, 34, 36, 32, 34, 18, 26, 29, 18, 26, 11, + 17, 14, 17, 17, 22, 18, 26, 79, 89, 38, 40, 42, 44, 46, 48, 0, + 46, 48, 0, 49, 94, 112, 132, 133, 134, 135, 0, 0, 92, 93, 0, 0, + 46, 48, 2, 32, 2, 2, 32, 34, 38, 0, 0, 0, 0, 0, 0, 69, + 0, 38, 0, 0, 48, 0, 0, 0, }; -/* Numeric_Value: 3108 bytes. */ +/* Numeric_Value: 3264 bytes. */ RE_UINT32 re_get_numeric_value(RE_UINT32 ch) { RE_UINT32 code; @@ -11344,9 +11996,9 @@ RE_UINT32 re_get_bidi_mirrored(RE_UINT32 ch) { return value; } -/* Indic_Matra_Category. */ +/* Indic_Positional_Category. */ -static RE_UINT8 re_indic_matra_category_stage_1[] = { +static RE_UINT8 re_indic_positional_category_stage_1[] = { 0, 1, 1, 1, 1, 2, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -11358,106 +12010,134 @@ static RE_UINT8 re_indic_matra_category_stage_1[] = { 1, 1, 1, 1, 1, 1, 1, 1, }; -static RE_UINT8 re_indic_matra_category_stage_2[] = { +static RE_UINT8 re_indic_positional_category_stage_2[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, - 8, 0, 0, 0, 0, 0, 0, 9, 0, 10, 11, 12, 13, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 9, 0, 10, 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 14, 15, 16, 17, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, - 19, 20, 21, 22, 23, 24, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, + 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 0, 0, 28, 0, 0, 0, }; -static RE_UINT8 re_indic_matra_category_stage_3[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 0, 5, 6, 7, 4, 0, - 0, 0, 0, 5, 8, 0, 0, 9, 0, 0, 0, 5, 10, 0, 4, 0, - 0, 0, 0, 11, 12, 13, 4, 0, 0, 0, 0, 14, 15, 7, 0, 0, - 0, 0, 0, 16, 17, 18, 4, 0, 0, 0, 0, 11, 19, 20, 4, 0, - 0, 0, 0, 14, 21, 7, 4, 0, 0, 0, 0, 0, 22, 23, 0, 24, - 0, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 27, 28, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 29, 30, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 31, 32, 0, 33, 34, 35, 36, 37, 0, 0, 0, 0, 0, 0, - 0, 38, 0, 38, 0, 39, 0, 39, 0, 0, 0, 40, 41, 42, 0, 0, - 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 44, 45, 0, 0, 0, - 0, 46, 0, 0, 0, 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 50, 51, 0, 0, 0, 0, 0, 52, 0, 0, 0, 53, 24, - 0, 0, 54, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 56, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 58, 59, 0, 0, 0, - 0, 0, 0, 0, 60, 61, 0, 0, 0, 0, 0, 62, 63, 0, 0, 0, - 0, 0, 64, 65, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 67, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, - 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 70, 71, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, - 0, 0, 73, 74, 0, 0, 0, 0, 0, 0, 0, 75, 45, 0, 0, 0, - 0, 0, 76, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, - 0, 0, 0, 14, 79, 7, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 81, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 83, 0, 0, 0, 0, - 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 71, 0, 0, 0, 0, +static RE_UINT8 re_indic_positional_category_stage_3[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 2, 3, 4, 5, 0, 6, 0, 0, 7, 8, 9, 5, 0, + 10, 0, 0, 7, 11, 0, 0, 12, 10, 0, 0, 7, 13, 0, 5, 0, + 6, 0, 0, 14, 15, 16, 5, 0, 17, 0, 0, 18, 19, 9, 0, 0, + 20, 0, 0, 21, 22, 23, 5, 0, 6, 0, 0, 14, 24, 25, 5, 0, + 6, 0, 0, 18, 26, 9, 5, 0, 27, 0, 0, 0, 28, 29, 0, 27, + 0, 0, 0, 30, 31, 0, 0, 0, 0, 0, 0, 32, 33, 0, 0, 0, + 0, 34, 0, 35, 0, 0, 0, 36, 37, 38, 39, 40, 41, 0, 0, 0, + 0, 0, 42, 43, 0, 44, 45, 46, 47, 48, 0, 0, 0, 0, 0, 0, + 0, 49, 0, 49, 0, 50, 0, 50, 0, 0, 0, 51, 52, 53, 0, 0, + 0, 0, 54, 55, 0, 0, 0, 0, 0, 0, 0, 56, 57, 0, 0, 0, + 0, 58, 0, 0, 0, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 62, 0, 0, 63, 64, 0, 65, 66, 67, 0, 68, 0, 0, 0, 69, 70, + 0, 0, 71, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 74, 75, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, + 77, 0, 78, 0, 0, 0, 0, 0, 79, 0, 0, 80, 81, 0, 82, 83, + 0, 0, 84, 0, 85, 70, 0, 0, 1, 0, 0, 86, 87, 0, 88, 0, + 0, 0, 89, 90, 91, 0, 0, 92, 0, 0, 0, 93, 94, 0, 95, 96, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, + 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 100, 0, 0, 101, 102, 0, 0, 0, 67, 0, 0, 103, 0, 0, 0, 0, + 104, 0, 105, 106, 0, 0, 0, 107, 67, 0, 0, 108, 109, 0, 0, 0, + 0, 0, 110, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 113, 0, + 6, 0, 0, 18, 114, 9, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 117, 118, 0, 0, 0, 0, 0, 0, 119, 120, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 122, 123, 124, 0, 0, + 0, 0, 0, 125, 126, 0, 0, 0, 0, 0, 127, 128, 0, 0, 0, 0, + 0, 129, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 121, 131, 0, 0, 0, 0, 0, 132, 133, 134, 0, 0, 0, 0, }; -static RE_UINT8 re_indic_matra_category_stage_4[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, - 3, 4, 5, 6, 1, 7, 3, 8, 0, 0, 9, 4, 0, 0, 0, 0, - 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, - 3, 4, 10, 11, 12, 13, 14, 0, 0, 0, 0, 15, 0, 0, 0, 0, - 3, 10, 0, 9, 16, 9, 17, 0, 9, 0, 0, 0, 0, 0, 0, 0, - 3, 4, 5, 9, 18, 15, 3, 0, 0, 0, 0, 0, 0, 0, 0, 19, - 3, 4, 10, 11, 20, 13, 21, 0, 0, 0, 0, 18, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 7, 17, 10, 0, 22, 12, 23, 24, 0, - 0, 0, 0, 0, 0, 0, 0, 6, 1, 7, 25, 6, 26, 6, 6, 0, - 0, 0, 9, 10, 0, 0, 0, 0, 27, 7, 25, 18, 28, 29, 6, 0, - 0, 0, 15, 25, 0, 0, 0, 0, 7, 3, 10, 22, 12, 23, 24, 0, - 0, 0, 0, 0, 0, 16, 0, 15, 7, 6, 10, 10, 2, 30, 31, 32, - 0, 7, 0, 0, 0, 0, 0, 0, 19, 7, 6, 6, 4, 10, 0, 0, - 33, 33, 34, 9, 0, 0, 0, 16, 19, 7, 6, 6, 4, 9, 0, 0, - 33, 33, 35, 0, 0, 0, 0, 0, 36, 37, 4, 38, 38, 6, 6, 0, - 37, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 19, 17, - 39, 6, 6, 0, 0, 16, 0, 0, 0, 0, 0, 7, 4, 0, 0, 0, - 0, 25, 0, 15, 25, 0, 0, 0, 9, 6, 16, 0, 0, 0, 0, 0, - 0, 15, 40, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, - 0, 17, 10, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 19, 6, 17, 4, 41, 42, 22, 23, 0, 19, 6, 6, 6, - 6, 9, 0, 0, 0, 0, 0, 0, 6, 43, 44, 45, 16, 0, 0, 0, - 7, 7, 2, 22, 7, 8, 7, 7, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 9, 39, 19, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, - 15, 1, 19, 6, 17, 5, 43, 22, 22, 40, 16, 0, 0, 0, 0, 0, - 0, 0, 15, 6, 4, 46, 47, 22, 23, 18, 25, 0, 0, 0, 0, 0, - 0, 0, 17, 8, 6, 25, 0, 0, 0, 0, 0, 15, 6, 7, 19, 19, - 0, 0, 0, 2, 48, 7, 10, 0, 0, 0, 22, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 0, 0, 0, 0, 0, 15, 3, 1, 0, 0, 0, 0, - 0, 0, 15, 7, 7, 7, 7, 7, 7, 7, 10, 0, 0, 0, 0, 0, - 0, 0, 0, 36, 4, 17, 4, 10, 0, 15, 0, 0, 0, 0, 0, 0, - 0, 0, 7, 6, 4, 22, 16, 0, 49, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 9, 6, 17, 50, 40, 10, 12, 0, 0, 0, 0, 0, - 1, 6, 51, 52, 53, 54, 34, 16, 0, 0, 0, 0, 0, 11, 5, 8, - 0, 15, 19, 7, 43, 25, 36, 0, 55, 4, 9, 56, 0, 0, 10, 0, - 0, 0, 0, 0, 6, 6, 4, 4, 4, 6, 6, 16, 0, 0, 0, 0, - 2, 3, 5, 1, 3, 0, 0, 0, 0, 0, 0, 9, 6, 4, 40, 38, - 17, 10, 16, 0, 0, 0, 0, 0, 0, 15, 8, 4, 4, 4, 6, 18, - 0, 0, 0, 0, 0, 0, 7, 3, 6, 29, 15, 9, 0, 0, 0, 0, - 2, 3, 5, 6, 16, 10, 0, 0, 1, 7, 25, 11, 12, 13, 32, 0, - 2, 3, 4, 4, 39, 57, 32, 58, 0, 10, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15, 8, 4, 4, 0, 48, 31, 0, 36, - 7, 3, 4, 4, 5, 1, 25, 36, 0, 0, 0, 0, 0, 0, 9, 8, +static RE_UINT8 re_indic_positional_category_stage_4[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 1, 2, 8, 5, 9, + 10, 7, 1, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, + 10, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, + 5, 6, 3, 11, 12, 13, 14, 0, 0, 0, 0, 15, 0, 0, 0, 0, + 10, 2, 0, 0, 0, 0, 0, 0, 5, 3, 0, 10, 16, 10, 17, 0, + 1, 0, 18, 0, 0, 0, 0, 0, 5, 6, 7, 10, 19, 15, 5, 0, + 0, 0, 0, 0, 0, 0, 3, 20, 5, 6, 3, 11, 21, 13, 22, 0, + 0, 0, 0, 19, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 8, 2, 23, 0, 24, 12, 25, 26, 0, + 2, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 2, 8, 23, 1, 27, 1, 1, 0, 0, 0, 10, 3, 0, 0, 0, 0, + 28, 8, 23, 19, 29, 30, 1, 0, 0, 0, 15, 23, 0, 0, 0, 0, + 8, 5, 3, 24, 12, 25, 26, 0, 0, 8, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 0, 15, 8, 1, 3, 3, 4, 31, 32, 33, + 20, 8, 1, 1, 6, 3, 0, 0, 34, 34, 35, 10, 1, 1, 1, 16, + 20, 8, 1, 1, 6, 10, 3, 0, 34, 34, 36, 0, 1, 1, 1, 0, + 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 18, 18, 10, 0, 0, 4, + 18, 37, 6, 38, 38, 1, 1, 2, 37, 1, 3, 1, 0, 0, 18, 6, + 6, 6, 6, 6, 18, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 15, 20, 17, 39, 1, 1, 17, 23, 2, 18, 3, + 0, 0, 0, 8, 6, 0, 0, 6, 3, 8, 23, 15, 8, 8, 8, 0, + 10, 1, 16, 0, 0, 0, 0, 0, 0, 40, 41, 2, 8, 8, 5, 15, + 0, 0, 0, 0, 0, 8, 20, 0, 0, 17, 3, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 17, 6, 42, + 43, 24, 25, 2, 20, 1, 1, 1, 1, 10, 0, 0, 0, 0, 10, 0, + 1, 40, 44, 45, 2, 8, 0, 0, 8, 40, 8, 8, 5, 17, 0, 0, + 8, 8, 46, 34, 8, 35, 8, 8, 23, 0, 0, 0, 8, 0, 0, 0, + 0, 0, 0, 10, 39, 20, 0, 0, 0, 0, 11, 40, 1, 17, 6, 3, + 15, 2, 20, 1, 17, 7, 40, 24, 24, 41, 1, 1, 1, 1, 16, 18, + 1, 1, 23, 0, 0, 0, 0, 0, 0, 0, 2, 1, 6, 47, 48, 24, + 25, 19, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 1, + 1, 1, 0, 0, 0, 0, 0, 0, 1, 23, 0, 0, 0, 0, 0, 0, + 15, 6, 17, 9, 1, 23, 6, 0, 0, 0, 0, 2, 1, 8, 20, 20, + 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 49, 8, 7, 1, + 1, 1, 24, 17, 0, 0, 0, 0, 1, 16, 50, 6, 6, 1, 6, 6, + 2, 51, 51, 51, 52, 0, 18, 0, 0, 0, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 16, 0, 10, 0, 0, + 0, 15, 5, 2, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 18, 6, 0, 0, 0, 0, 18, 6, 17, 6, 7, + 0, 10, 8, 1, 6, 24, 2, 8, 53, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 17, 54, + 41, 40, 55, 3, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 15, 2, 0, 2, 1, 56, 57, 58, 46, 35, 1, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 9, + 0, 0, 15, 0, 0, 0, 0, 0, 0, 15, 20, 8, 40, 23, 5, 0, + 59, 6, 10, 52, 0, 0, 6, 7, 0, 0, 0, 0, 17, 3, 0, 0, + 20, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 6, 6, + 6, 1, 1, 16, 0, 0, 0, 0, 4, 5, 7, 2, 5, 3, 0, 0, + 1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 6, 41, 38, + 17, 3, 16, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, + 0, 15, 9, 6, 6, 6, 1, 19, 23, 0, 0, 0, 0, 10, 3, 0, + 0, 0, 0, 0, 0, 0, 8, 5, 1, 30, 2, 1, 0, 0, 0, 16, + 0, 0, 0, 0, 0, 0, 0, 10, 4, 5, 7, 1, 17, 3, 0, 0, + 2, 8, 23, 11, 12, 13, 33, 0, 0, 8, 0, 1, 1, 1, 16, 0, + 1, 1, 16, 0, 0, 0, 0, 0, 0, 0, 15, 9, 6, 6, 6, 1, + 8, 7, 2, 3, 0, 0, 0, 0, 4, 5, 6, 6, 39, 60, 33, 26, + 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 9, 6, 6, 0, 49, 32, 1, 5, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 6, 0, 8, 5, 6, 6, 7, 2, 20, 5, + 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 20, 9, + 6, 1, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 10, + 8, 1, 6, 41, 7, 1, 0, 0, 1, 6, 6, 3, 1, 1, 1, 5, + 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 15, 6, 6, 6, + 39, 7, 20, 16, 0, 0, 0, 0, }; -static RE_UINT8 re_indic_matra_category_stage_5[] = { - 0, 0, 5, 1, 1, 2, 1, 6, 6, 6, 6, 5, 5, 5, 1, 1, - 2, 1, 0, 5, 6, 0, 0, 2, 2, 0, 0, 4, 4, 6, 0, 1, - 5, 0, 5, 6, 5, 8, 1, 5, 9, 0, 10, 6, 2, 2, 4, 4, - 4, 5, 1, 0, 7, 0, 8, 1, 8, 0, 8, 8, 9, 2, 4, 10, - 4, 1, 3, 3, 3, 1, 3, 0, 0, 6, 5, 7, 7, 7, 6, 2, - 2, 5, 9, 10, 4, 2, 6, 1, 1, 8, 8, 5, 6, 11, 7, 12, - 2, 9, 11, 0, 5, 2, 6, 3, 3, 5, 5, 3, 1, 3, 0, 13, - 13, 0, 5, 9, 4, 0, +static RE_UINT8 re_indic_positional_category_stage_5[] = { + 0, 0, 5, 5, 5, 1, 6, 0, 1, 2, 1, 6, 6, 6, 6, 5, + 1, 1, 2, 1, 0, 5, 0, 2, 2, 0, 0, 4, 4, 6, 0, 1, + 5, 0, 5, 6, 0, 6, 5, 8, 1, 5, 9, 0, 10, 6, 1, 0, + 2, 2, 4, 4, 4, 5, 7, 0, 8, 1, 8, 0, 8, 8, 9, 2, + 4, 10, 4, 1, 3, 3, 3, 1, 3, 0, 5, 7, 7, 7, 6, 2, + 6, 1, 2, 5, 9, 10, 4, 2, 1, 8, 8, 5, 1, 3, 6, 11, + 7, 12, 2, 9, 13, 6, 13, 13, 13, 0, 11, 0, 5, 2, 2, 6, + 6, 3, 3, 5, 5, 3, 0, 13, 5, 9, }; -/* Indic_Matra_Category: 1486 bytes. */ +/* Indic_Positional_Category: 1930 bytes. */ -RE_UINT32 re_get_indic_matra_category(RE_UINT32 ch) { +RE_UINT32 re_get_indic_positional_category(RE_UINT32 ch) { RE_UINT32 code; RE_UINT32 f; RE_UINT32 pos; @@ -11465,17 +12145,17 @@ RE_UINT32 re_get_indic_matra_category(RE_UINT32 ch) { f = ch >> 13; code = ch ^ (f << 13); - pos = (RE_UINT32)re_indic_matra_category_stage_1[f] << 5; + pos = (RE_UINT32)re_indic_positional_category_stage_1[f] << 5; f = code >> 8; code ^= f << 8; - pos = (RE_UINT32)re_indic_matra_category_stage_2[pos + f] << 4; + pos = (RE_UINT32)re_indic_positional_category_stage_2[pos + f] << 4; f = code >> 4; code ^= f << 4; - pos = (RE_UINT32)re_indic_matra_category_stage_3[pos + f] << 3; + pos = (RE_UINT32)re_indic_positional_category_stage_3[pos + f] << 3; f = code >> 1; code ^= f << 1; - pos = (RE_UINT32)re_indic_matra_category_stage_4[pos + f] << 1; - value = re_indic_matra_category_stage_5[pos + code]; + pos = (RE_UINT32)re_indic_positional_category_stage_4[pos + f] << 1; + value = re_indic_positional_category_stage_5[pos + code]; return value; } @@ -11496,154 +12176,170 @@ static RE_UINT8 re_indic_syllabic_category_stage_1[] = { static RE_UINT8 re_indic_syllabic_category_stage_2[] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 1, 1, 1, 1, 1, 1, 10, 1, 11, 12, 13, 14, 1, 1, 1, - 15, 1, 1, 1, 1, 16, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 9, 1, 1, 1, 1, 1, 1, 10, 1, 11, 12, 13, 14, 15, 1, 1, + 16, 1, 1, 1, 1, 17, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 17, 18, 19, 20, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 18, 19, 20, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 1, 1, 1, 1, 1, - 22, 23, 24, 25, 26, 27, 28, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 1, 1, 1, 1, 1, + 23, 24, 25, 26, 27, 28, 29, 30, 1, 1, 1, 1, 31, 1, 1, 1, }; static RE_UINT8 re_indic_syllabic_category_stage_3[] = { - 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 4, 0, 0, + 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 3, 4, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 11, 19, - 20, 14, 15, 21, 22, 23, 24, 25, 26, 27, 15, 28, 29, 0, 11, 0, - 13, 14, 15, 28, 30, 31, 11, 32, 33, 34, 35, 36, 37, 38, 24, 0, - 39, 40, 15, 41, 42, 43, 11, 0, 44, 40, 15, 45, 42, 46, 11, 0, - 44, 40, 7, 47, 48, 38, 11, 49, 50, 51, 7, 52, 53, 54, 24, 55, - 56, 7, 57, 58, 59, 2, 0, 0, 60, 61, 62, 63, 64, 65, 0, 0, - 0, 0, 66, 67, 68, 7, 69, 70, 71, 72, 73, 74, 0, 0, 0, 0, - 7, 7, 75, 76, 77, 78, 79, 80, 81, 82, 0, 0, 0, 0, 0, 0, - 83, 84, 85, 84, 85, 86, 83, 87, 7, 7, 88, 89, 90, 91, 2, 0, - 92, 57, 93, 94, 24, 7, 95, 96, 7, 7, 97, 98, 99, 2, 0, 0, - 7, 100, 7, 7, 101, 102, 103, 104, 2, 2, 0, 0, 0, 0, 0, 0, - 105, 85, 7, 106, 107, 2, 0, 0, 108, 7, 109, 110, 7, 7, 111, 112, - 7, 7, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 0, 116, 117, 118, - 119, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, - 122, 7, 123, 0, 7, 124, 125, 126, 127, 128, 7, 129, 130, 2, 131, 132, - 133, 7, 134, 7, 135, 136, 0, 0, 137, 7, 7, 138, 139, 2, 140, 141, - 142, 7, 143, 144, 145, 2, 7, 146, 7, 7, 7, 147, 148, 0, 149, 150, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 152, 153, 2, - 154, 155, 7, 156, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 158, 85, 7, 159, 160, 161, 162, 163, 164, 7, 7, 165, 0, 0, 0, 0, - 166, 7, 167, 168, 0, 169, 7, 170, 171, 172, 7, 173, 174, 2, 175, 176, - 177, 178, 179, 180, 0, 0, 0, 0, 0, 0, 0, 181, 7, 182, 183, 2, - 13, 14, 15, 28, 30, 38, 184, 185, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 186, 7, 7, 187, 188, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 189, 7, 190, 191, 192, 0, 0, 0, - 189, 7, 7, 193, 0, 2, 0, 0, 181, 7, 194, 195, 2, 0, 0, 0, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 12, 20, + 21, 15, 16, 22, 23, 24, 25, 26, 27, 28, 16, 29, 30, 0, 12, 31, + 14, 15, 16, 29, 32, 33, 12, 34, 35, 36, 37, 38, 39, 40, 25, 0, + 41, 42, 16, 43, 44, 45, 12, 0, 46, 42, 16, 47, 44, 48, 12, 49, + 46, 42, 8, 50, 51, 52, 12, 53, 54, 55, 8, 56, 57, 58, 25, 59, + 60, 8, 61, 62, 63, 2, 0, 0, 64, 65, 66, 67, 68, 69, 0, 0, + 0, 0, 70, 71, 72, 8, 73, 74, 75, 76, 77, 78, 79, 0, 0, 0, + 8, 8, 80, 81, 82, 83, 84, 85, 86, 87, 0, 0, 0, 0, 0, 0, + 88, 89, 90, 89, 90, 91, 88, 92, 8, 8, 93, 94, 95, 96, 2, 0, + 97, 61, 98, 99, 25, 8, 100, 101, 8, 8, 102, 103, 104, 2, 0, 0, + 8, 105, 8, 8, 106, 107, 108, 109, 2, 2, 0, 0, 0, 0, 0, 0, + 110, 90, 8, 111, 112, 2, 0, 0, 113, 8, 114, 115, 8, 8, 116, 117, + 8, 8, 118, 119, 120, 0, 0, 0, 0, 0, 0, 0, 0, 121, 122, 123, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, + 125, 126, 0, 0, 0, 0, 0, 127, 128, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, + 130, 8, 131, 0, 8, 132, 133, 134, 135, 136, 8, 137, 138, 2, 139, 122, + 140, 8, 141, 8, 142, 143, 0, 0, 144, 8, 8, 145, 146, 2, 147, 148, + 149, 8, 150, 151, 152, 2, 8, 153, 8, 8, 8, 154, 155, 0, 156, 157, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 159, 160, 2, + 161, 162, 8, 163, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 165, 90, 8, 166, 167, 168, 169, 170, 171, 8, 8, 172, 0, 0, 0, 0, + 173, 8, 174, 175, 0, 176, 8, 177, 178, 179, 8, 180, 181, 2, 182, 183, + 184, 185, 186, 187, 0, 0, 0, 0, 188, 189, 190, 191, 8, 192, 193, 2, + 194, 15, 16, 29, 32, 40, 195, 196, 0, 0, 0, 0, 0, 0, 0, 0, + 197, 8, 8, 198, 199, 2, 0, 0, 200, 8, 8, 201, 202, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 197, 8, 203, 204, 205, 206, 0, 0, + 197, 8, 8, 207, 208, 2, 0, 0, 191, 8, 209, 210, 2, 0, 0, 0, + 8, 211, 212, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 214, 8, 203, 215, 216, 70, 217, 218, 8, 219, 76, 220, 0, 0, 0, 0, }; static RE_UINT8 re_indic_syllabic_category_stage_4[] = { 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 3, 0, 4, 0, 0, 0, - 0, 5, 0, 0, 6, 7, 7, 7, 7, 8, 9, 9, 9, 9, 9, 9, - 9, 9, 10, 11, 12, 12, 12, 13, 14, 15, 9, 9, 16, 17, 2, 2, - 18, 7, 9, 9, 19, 20, 7, 21, 21, 8, 9, 9, 9, 9, 22, 9, - 23, 24, 25, 11, 12, 26, 26, 27, 0, 28, 0, 29, 25, 0, 0, 0, - 19, 20, 30, 31, 22, 32, 25, 33, 34, 28, 26, 35, 0, 0, 36, 23, - 0, 17, 2, 2, 37, 38, 0, 0, 19, 20, 7, 39, 39, 8, 9, 9, - 22, 36, 25, 11, 12, 40, 40, 35, 12, 26, 26, 35, 0, 41, 0, 29, - 42, 0, 0, 0, 43, 20, 30, 18, 44, 45, 32, 22, 46, 47, 48, 24, - 9, 9, 25, 41, 34, 41, 49, 35, 0, 28, 0, 0, 6, 20, 7, 44, - 44, 8, 9, 9, 9, 9, 25, 50, 12, 49, 49, 35, 0, 51, 25, 0, - 19, 20, 7, 44, 9, 36, 25, 11, 0, 51, 0, 52, 9, 9, 48, 50, - 12, 49, 49, 53, 0, 0, 54, 55, 56, 20, 7, 7, 7, 30, 24, 9, - 29, 9, 9, 42, 9, 48, 57, 28, 12, 58, 12, 12, 41, 0, 0, 0, - 36, 9, 9, 9, 9, 9, 9, 48, 12, 12, 59, 0, 12, 40, 60, 61, - 32, 62, 23, 42, 0, 9, 36, 9, 36, 63, 24, 32, 12, 12, 40, 64, - 12, 65, 60, 66, 2, 2, 3, 9, 2, 2, 2, 2, 2, 0, 0, 0, - 9, 9, 36, 9, 9, 9, 9, 47, 15, 12, 12, 67, 68, 69, 70, 71, - 72, 72, 73, 72, 72, 72, 72, 72, 72, 72, 72, 74, 75, 7, 76, 12, - 12, 77, 78, 79, 2, 2, 3, 80, 81, 16, 82, 83, 84, 85, 86, 87, - 88, 89, 9, 9, 90, 91, 60, 92, 2, 2, 93, 94, 95, 9, 9, 22, - 10, 96, 0, 0, 95, 9, 9, 9, 10, 0, 0, 0, 97, 0, 0, 0, - 98, 7, 7, 7, 7, 41, 12, 12, 12, 67, 99, 100, 101, 0, 0, 102, - 103, 9, 9, 9, 12, 12, 104, 0, 105, 106, 107, 0, 108, 109, 109, 110, - 111, 112, 0, 0, 9, 9, 9, 0, 12, 12, 12, 12, 113, 106, 114, 0, - 9, 115, 12, 0, 9, 9, 9, 75, 95, 116, 106, 117, 118, 12, 12, 12, - 12, 86, 114, 0, 119, 120, 7, 7, 9, 121, 12, 12, 12, 122, 9, 0, - 123, 7, 124, 9, 125, 12, 126, 127, 2, 2, 128, 129, 9, 130, 12, 12, - 131, 0, 0, 0, 9, 132, 12, 113, 106, 133, 0, 0, 2, 2, 3, 36, - 134, 60, 60, 60, 114, 0, 0, 0, 135, 136, 0, 0, 0, 0, 0, 137, - 138, 4, 0, 0, 0, 0, 0, 4, 39, 139, 140, 9, 115, 12, 0, 0, - 9, 9, 9, 141, 142, 143, 144, 9, 145, 0, 0, 0, 146, 7, 7, 7, - 124, 9, 9, 9, 9, 147, 12, 12, 12, 148, 0, 0, 149, 149, 149, 149, - 150, 0, 0, 0, 2, 2, 151, 9, 141, 109, 152, 114, 9, 115, 12, 153, - 154, 0, 0, 0, 155, 7, 8, 95, 156, 12, 12, 157, 148, 0, 0, 0, - 9, 62, 9, 9, 2, 2, 151, 48, 7, 124, 9, 9, 9, 9, 88, 12, - 158, 159, 0, 0, 106, 106, 106, 160, 36, 0, 161, 87, 12, 12, 12, 91, - 162, 0, 0, 0, 124, 9, 115, 12, 0, 163, 0, 0, 9, 9, 9, 81, - 164, 9, 165, 106, 166, 12, 34, 167, 88, 51, 0, 168, 9, 36, 36, 9, - 9, 0, 0, 169, 2, 2, 0, 0, 170, 20, 7, 7, 9, 9, 12, 12, - 12, 171, 0, 0, 172, 173, 173, 173, 173, 174, 2, 2, 0, 0, 0, 175, - 176, 7, 7, 8, 12, 12, 177, 0, 176, 95, 9, 9, 9, 115, 12, 12, - 178, 179, 2, 2, 109, 180, 9, 9, 156, 0, 0, 0, 176, 7, 7, 7, - 8, 9, 9, 9, 115, 12, 12, 12, 181, 0, 0, 0, 182, 2, 2, 2, - 2, 183, 0, 0, 7, 7, 9, 9, 29, 9, 9, 9, 9, 9, 9, 12, - 12, 184, 0, 0, 7, 7, 124, 9, 9, 9, 9, 140, 12, 12, 185, 0, - 16, 186, 149, 187, 149, 187, 0, 0, 20, 7, 7, 95, 12, 12, 12, 188, - 189, 102, 0, 0, 7, 7, 7, 124, 9, 9, 9, 115, 12, 94, 12, 190, - 191, 0, 0, 0, 12, 12, 12, 192, 9, 9, 140, 193, 12, 194, 0, 0, + 5, 0, 0, 0, 0, 6, 0, 0, 7, 8, 8, 8, 8, 9, 10, 10, + 10, 10, 10, 10, 10, 10, 11, 12, 13, 13, 13, 14, 15, 16, 10, 10, + 17, 18, 2, 2, 19, 8, 10, 10, 20, 21, 8, 22, 22, 9, 10, 10, + 10, 10, 23, 10, 24, 25, 26, 12, 13, 27, 27, 28, 0, 29, 0, 30, + 26, 0, 0, 0, 20, 21, 31, 32, 23, 33, 26, 34, 35, 29, 27, 36, + 0, 0, 37, 24, 0, 18, 2, 2, 38, 39, 0, 0, 20, 21, 8, 40, + 40, 9, 10, 10, 23, 37, 26, 12, 13, 41, 41, 36, 0, 0, 42, 0, + 13, 27, 27, 36, 0, 43, 0, 30, 42, 0, 0, 0, 44, 21, 31, 19, + 45, 46, 33, 23, 47, 48, 49, 25, 10, 10, 26, 43, 35, 43, 50, 36, + 0, 29, 0, 0, 7, 21, 8, 45, 45, 9, 10, 10, 10, 10, 26, 51, + 13, 50, 50, 36, 0, 52, 49, 0, 20, 21, 8, 45, 10, 37, 26, 12, + 0, 52, 0, 53, 54, 0, 0, 0, 10, 10, 49, 51, 13, 50, 50, 55, + 0, 56, 0, 32, 0, 0, 57, 58, 59, 21, 8, 8, 8, 31, 25, 10, + 30, 10, 10, 42, 10, 49, 60, 29, 13, 61, 13, 13, 43, 0, 0, 0, + 37, 10, 10, 10, 10, 10, 10, 49, 13, 13, 62, 0, 13, 41, 63, 64, + 33, 65, 24, 42, 0, 10, 37, 10, 37, 66, 25, 33, 13, 13, 41, 67, + 13, 68, 63, 69, 2, 2, 3, 10, 2, 2, 2, 2, 2, 70, 71, 0, + 10, 10, 37, 10, 10, 10, 10, 48, 16, 13, 13, 72, 73, 74, 75, 76, + 77, 77, 78, 77, 77, 77, 77, 77, 77, 77, 77, 79, 0, 80, 0, 0, + 81, 8, 82, 13, 13, 83, 84, 85, 2, 2, 3, 86, 87, 17, 88, 89, + 90, 91, 92, 93, 94, 95, 10, 10, 96, 97, 63, 98, 2, 2, 99, 100, + 101, 10, 10, 23, 11, 102, 0, 0, 101, 10, 10, 10, 11, 0, 0, 0, + 103, 0, 0, 0, 104, 8, 8, 8, 8, 43, 13, 13, 13, 72, 105, 106, + 107, 0, 0, 108, 109, 10, 10, 10, 13, 13, 110, 0, 111, 112, 113, 0, + 114, 115, 115, 116, 117, 118, 0, 0, 10, 10, 10, 0, 13, 13, 13, 13, + 119, 112, 120, 0, 10, 121, 13, 0, 10, 10, 10, 81, 101, 122, 112, 123, + 124, 13, 13, 13, 13, 92, 125, 126, 127, 128, 8, 8, 10, 129, 13, 13, + 13, 130, 10, 0, 131, 8, 132, 10, 133, 13, 134, 135, 2, 2, 136, 137, + 10, 138, 13, 13, 139, 0, 0, 0, 10, 140, 13, 119, 112, 141, 0, 0, + 2, 2, 3, 37, 142, 143, 143, 143, 144, 0, 0, 0, 145, 146, 144, 0, + 0, 0, 147, 0, 0, 0, 0, 148, 149, 4, 0, 0, 0, 150, 0, 0, + 5, 150, 0, 0, 0, 0, 0, 4, 40, 151, 152, 10, 121, 13, 0, 0, + 10, 10, 10, 153, 154, 155, 156, 10, 157, 0, 0, 0, 158, 8, 8, 8, + 132, 10, 10, 10, 10, 159, 13, 13, 13, 160, 0, 0, 143, 143, 143, 143, + 2, 2, 161, 10, 153, 115, 162, 120, 10, 121, 13, 163, 164, 0, 0, 0, + 165, 8, 9, 101, 166, 13, 13, 167, 168, 0, 0, 0, 10, 169, 10, 10, + 2, 2, 161, 49, 8, 132, 10, 10, 10, 10, 94, 13, 170, 171, 0, 0, + 112, 112, 112, 172, 37, 173, 174, 93, 13, 13, 13, 97, 175, 0, 0, 0, + 132, 10, 121, 13, 0, 176, 0, 0, 10, 10, 10, 87, 177, 10, 178, 112, + 179, 13, 35, 180, 94, 52, 0, 72, 10, 37, 37, 10, 10, 0, 181, 182, + 2, 2, 0, 0, 183, 184, 8, 8, 10, 10, 13, 13, 13, 185, 0, 0, + 186, 187, 187, 187, 187, 188, 2, 2, 0, 0, 0, 189, 190, 8, 8, 9, + 13, 13, 191, 0, 190, 101, 10, 10, 10, 121, 13, 13, 192, 193, 2, 2, + 115, 194, 10, 10, 166, 0, 0, 0, 190, 8, 8, 8, 9, 10, 10, 10, + 121, 13, 13, 13, 195, 0, 196, 68, 197, 2, 2, 2, 2, 198, 0, 0, + 8, 8, 10, 10, 30, 10, 10, 10, 10, 10, 10, 13, 13, 199, 0, 200, + 8, 49, 23, 30, 10, 10, 10, 30, 10, 10, 48, 0, 8, 8, 132, 10, + 10, 10, 10, 152, 13, 13, 201, 0, 7, 21, 8, 22, 17, 202, 143, 146, + 143, 146, 0, 0, 8, 8, 8, 132, 10, 94, 13, 13, 203, 204, 0, 0, + 21, 8, 8, 101, 13, 13, 13, 205, 206, 207, 0, 0, 10, 10, 10, 121, + 13, 100, 13, 208, 209, 0, 0, 0, 0, 0, 8, 100, 13, 13, 13, 210, + 68, 0, 0, 0, 10, 10, 152, 211, 13, 212, 0, 0, 10, 10, 26, 213, + 13, 13, 214, 0, 2, 2, 2, 0, 8, 8, 45, 132, 13, 35, 13, 208, + 207, 0, 0, 0, 2, 2, 2, 198, 25, 10, 10, 10, 215, 77, 77, 77, + 13, 216, 0, 0, }; static RE_UINT8 re_indic_syllabic_category_stage_5[] = { - 0, 0, 0, 0, 0, 11, 0, 0, 29, 29, 29, 29, 29, 29, 0, 0, - 11, 0, 0, 0, 0, 0, 0, 11, 1, 1, 1, 2, 8, 8, 8, 8, - 8, 12, 12, 12, 12, 12, 12, 12, 12, 12, 9, 9, 4, 3, 9, 9, - 9, 9, 9, 9, 9, 5, 9, 9, 0, 22, 22, 0, 0, 9, 9, 9, - 8, 8, 9, 9, 0, 0, 29, 29, 0, 0, 8, 8, 0, 1, 1, 2, - 0, 8, 8, 8, 8, 0, 0, 8, 12, 0, 12, 12, 12, 0, 12, 0, - 0, 0, 12, 12, 12, 12, 0, 0, 9, 0, 0, 9, 9, 5, 13, 0, - 0, 0, 0, 9, 12, 12, 0, 12, 8, 8, 8, 0, 0, 0, 0, 8, - 0, 12, 12, 0, 4, 0, 9, 9, 9, 9, 9, 0, 9, 5, 0, 0, - 0, 12, 12, 12, 1, 23, 11, 11, 0, 17, 0, 0, 8, 8, 0, 8, - 9, 9, 0, 9, 0, 0, 9, 9, 0, 12, 0, 0, 0, 0, 1, 20, - 8, 0, 8, 8, 8, 12, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, - 12, 12, 12, 0, 9, 0, 9, 9, 0, 3, 9, 9, 0, 9, 9, 0, - 0, 0, 12, 0, 9, 5, 14, 0, 0, 0, 13, 13, 13, 13, 13, 13, - 0, 0, 1, 2, 0, 0, 5, 0, 9, 0, 9, 0, 9, 9, 6, 0, - 22, 22, 22, 22, 0, 1, 6, 0, 12, 0, 0, 12, 0, 12, 0, 12, - 17, 17, 0, 0, 9, 0, 0, 0, 0, 1, 0, 0, 9, 9, 1, 2, - 9, 9, 1, 1, 6, 3, 0, 0, 19, 19, 19, 19, 19, 16, 16, 16, - 16, 16, 16, 16, 0, 16, 16, 16, 16, 0, 0, 0, 12, 8, 8, 8, - 8, 8, 8, 9, 9, 9, 1, 22, 2, 7, 6, 17, 17, 17, 17, 12, - 0, 0, 11, 0, 12, 12, 8, 8, 9, 9, 12, 12, 12, 12, 17, 17, - 17, 12, 9, 22, 22, 12, 12, 9, 9, 22, 22, 22, 22, 22, 12, 12, - 12, 9, 9, 9, 9, 12, 12, 12, 12, 12, 17, 9, 9, 9, 9, 22, - 22, 22, 12, 22, 29, 29, 22, 22, 9, 9, 0, 0, 8, 8, 8, 12, - 6, 0, 0, 0, 12, 0, 9, 9, 12, 12, 12, 8, 9, 25, 25, 25, - 15, 0, 0, 0, 0, 6, 7, 0, 3, 0, 0, 0, 11, 12, 12, 12, - 9, 16, 16, 16, 18, 18, 1, 18, 18, 18, 18, 18, 18, 0, 0, 0, - 12, 12, 12, 10, 10, 10, 10, 10, 10, 10, 0, 0, 21, 21, 21, 21, - 21, 0, 0, 0, 9, 18, 18, 18, 22, 22, 0, 0, 12, 12, 12, 9, - 12, 17, 17, 18, 18, 18, 18, 0, 7, 9, 9, 9, 1, 1, 1, 15, - 2, 8, 8, 8, 4, 9, 9, 9, 5, 12, 12, 12, 1, 15, 2, 8, - 8, 8, 12, 12, 12, 16, 16, 16, 9, 9, 6, 7, 16, 16, 12, 12, - 29, 29, 3, 12, 12, 12, 18, 18, 8, 8, 4, 9, 18, 18, 6, 6, - 16, 16, 9, 9, 1, 1, 0, 4, 22, 22, 22, 0, 0, 0, 2, 2, - 22, 0, 0, 0, 26, 27, 0, 0, 0, 0, 11, 11, 8, 8, 6, 12, - 12, 12, 12, 1, 12, 12, 10, 10, 10, 10, 12, 12, 12, 12, 10, 16, - 16, 12, 12, 12, 12, 16, 12, 1, 1, 2, 8, 8, 18, 9, 9, 9, - 5, 0, 0, 0, 24, 24, 24, 24, 24, 24, 0, 0, 29, 29, 12, 12, - 10, 10, 10, 22, 9, 9, 9, 18, 18, 18, 18, 6, 1, 1, 15, 2, - 12, 12, 12, 4, 9, 16, 17, 17, 9, 9, 9, 17, 17, 17, 17, 0, - 18, 18, 0, 0, 0, 0, 12, 22, 21, 22, 21, 0, 0, 2, 7, 0, - 12, 8, 12, 12, 12, 12, 12, 18, 18, 18, 18, 9, 22, 6, 0, 0, - 9, 0, 1, 2, 0, 0, 0, 7, 1, 1, 2, 0, 9, 9, 5, 0, - 0, 0, 30, 30, 30, 30, 30, 30, 30, 30, 29, 29, 0, 0, 0, 28, - 1, 1, 2, 8, 9, 5, 4, 0, 9, 9, 9, 7, 6, 0, 29, 29, - 10, 12, 12, 12, 5, 3, 0, 0, 0, 29, 29, 29, 29, 0, 0, 0, - 1, 5, 4, 23, 9, 4, 6, 0, 0, 0, 24, 24, 24, 0, 0, 0, - 9, 9, 9, 1, 1, 2, 5, 4, 1, 1, 2, 5, 4, 0, 0, 0, - 9, 1, 2, 5, 2, 9, 9, 9, 9, 9, 5, 4, + 0, 0, 0, 0, 0, 11, 0, 0, 33, 33, 33, 33, 33, 33, 0, 0, + 11, 0, 0, 0, 0, 0, 28, 28, 0, 0, 0, 11, 1, 1, 1, 2, + 8, 8, 8, 8, 8, 12, 12, 12, 12, 12, 12, 12, 12, 12, 9, 9, + 4, 3, 9, 9, 9, 9, 9, 9, 9, 5, 9, 9, 0, 26, 26, 0, + 0, 9, 9, 9, 8, 8, 9, 9, 0, 0, 33, 33, 0, 0, 8, 8, + 0, 1, 1, 2, 0, 8, 8, 8, 8, 0, 0, 8, 12, 0, 12, 12, + 12, 0, 12, 0, 0, 0, 12, 12, 12, 12, 0, 0, 9, 0, 0, 9, + 9, 5, 13, 0, 0, 0, 0, 9, 12, 12, 0, 12, 8, 8, 8, 0, + 0, 0, 0, 8, 0, 12, 12, 0, 4, 0, 9, 9, 9, 9, 9, 0, + 9, 5, 0, 0, 0, 12, 12, 12, 1, 25, 11, 11, 0, 19, 0, 0, + 8, 8, 0, 8, 9, 9, 0, 9, 0, 12, 0, 0, 0, 0, 9, 9, + 0, 0, 1, 22, 8, 0, 8, 8, 8, 12, 0, 0, 0, 0, 0, 12, + 12, 0, 0, 0, 12, 12, 12, 0, 9, 0, 9, 9, 0, 3, 9, 9, + 0, 9, 9, 0, 0, 0, 12, 0, 0, 14, 14, 0, 9, 5, 16, 0, + 13, 13, 13, 9, 0, 0, 13, 13, 13, 13, 13, 13, 0, 0, 1, 2, + 0, 0, 5, 0, 9, 0, 9, 0, 9, 9, 6, 0, 24, 24, 24, 24, + 29, 1, 6, 0, 12, 0, 0, 12, 0, 12, 0, 12, 19, 19, 0, 0, + 9, 0, 0, 0, 0, 1, 0, 0, 0, 28, 0, 28, 0, 4, 0, 0, + 9, 9, 1, 2, 9, 9, 1, 1, 6, 3, 0, 0, 21, 21, 21, 21, + 21, 18, 18, 18, 18, 18, 18, 18, 0, 18, 18, 18, 18, 0, 0, 0, + 0, 0, 28, 0, 12, 8, 8, 8, 8, 8, 8, 9, 9, 9, 1, 24, + 2, 7, 6, 19, 19, 19, 19, 12, 0, 0, 11, 0, 12, 12, 8, 8, + 9, 9, 12, 12, 12, 12, 19, 19, 19, 12, 9, 24, 24, 12, 12, 9, + 9, 24, 24, 24, 24, 24, 12, 12, 12, 9, 9, 9, 9, 12, 12, 12, + 12, 12, 19, 9, 9, 9, 9, 24, 24, 24, 12, 24, 33, 33, 24, 24, + 9, 9, 0, 0, 8, 8, 8, 12, 6, 0, 0, 0, 12, 0, 9, 9, + 12, 12, 12, 8, 9, 27, 27, 28, 17, 29, 28, 28, 28, 6, 7, 28, + 3, 28, 0, 0, 11, 12, 12, 12, 9, 18, 18, 18, 20, 20, 1, 20, + 20, 20, 20, 20, 20, 20, 9, 28, 12, 12, 12, 10, 10, 10, 10, 10, + 10, 10, 0, 0, 23, 23, 23, 23, 23, 0, 0, 0, 9, 20, 20, 20, + 24, 24, 0, 0, 12, 12, 12, 9, 12, 19, 19, 20, 20, 20, 20, 0, + 7, 9, 9, 9, 24, 24, 28, 28, 28, 0, 0, 28, 1, 1, 1, 17, + 2, 8, 8, 8, 4, 9, 9, 9, 5, 12, 12, 12, 1, 17, 2, 8, + 8, 8, 12, 12, 12, 18, 18, 18, 9, 9, 6, 7, 18, 18, 12, 12, + 33, 33, 3, 12, 12, 12, 20, 20, 8, 8, 4, 9, 20, 20, 6, 6, + 18, 18, 9, 9, 1, 1, 28, 4, 26, 26, 26, 0, 26, 26, 26, 26, + 26, 26, 0, 0, 0, 0, 2, 2, 26, 0, 0, 0, 0, 0, 0, 28, + 30, 31, 0, 0, 11, 11, 11, 11, 28, 0, 0, 0, 8, 8, 6, 12, + 12, 12, 12, 1, 12, 12, 10, 10, 10, 10, 12, 12, 12, 12, 10, 18, + 18, 12, 12, 12, 12, 18, 12, 1, 1, 2, 8, 8, 20, 9, 9, 9, + 5, 1, 0, 0, 33, 33, 12, 12, 10, 10, 10, 24, 9, 9, 9, 20, + 20, 20, 20, 6, 1, 1, 17, 2, 12, 12, 12, 4, 9, 18, 19, 19, + 5, 0, 0, 0, 12, 9, 0, 12, 9, 9, 9, 19, 19, 19, 19, 0, + 20, 20, 0, 0, 11, 11, 11, 0, 0, 0, 12, 24, 23, 24, 23, 0, + 0, 2, 7, 0, 12, 8, 12, 12, 12, 12, 12, 20, 20, 20, 20, 9, + 24, 6, 0, 0, 4, 4, 4, 0, 0, 0, 0, 7, 1, 1, 2, 14, + 14, 8, 8, 8, 9, 9, 5, 0, 0, 0, 34, 34, 34, 34, 34, 34, + 34, 34, 33, 33, 0, 0, 0, 32, 1, 1, 2, 8, 9, 5, 4, 0, + 9, 9, 9, 7, 6, 0, 33, 33, 10, 12, 12, 12, 5, 3, 15, 15, + 0, 0, 4, 9, 0, 33, 33, 33, 33, 0, 0, 0, 1, 5, 4, 25, + 0, 0, 26, 0, 9, 4, 6, 0, 0, 0, 26, 26, 9, 9, 5, 1, + 1, 2, 4, 3, 9, 9, 9, 1, 1, 2, 5, 4, 3, 0, 0, 0, + 1, 1, 2, 5, 4, 0, 0, 0, 9, 1, 2, 5, 2, 9, 9, 9, + 9, 9, 5, 4, 0, 19, 19, 19, 9, 9, 9, 6, 0, 0, 18, 18, + 9, 1, 1, 0, }; -/* Indic_Syllabic_Category: 2324 bytes. */ +/* Indic_Syllabic_Category: 2560 bytes. */ RE_UINT32 re_get_indic_syllabic_category(RE_UINT32 ch) { RE_UINT32 code; @@ -11678,31 +12374,33 @@ static RE_UINT8 re_alphanumeric_stage_1[] = { static RE_UINT8 re_alphanumeric_stage_2[] = { 0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, 10, 11, 7, 7, 7, 7, 12, 13, 13, 13, 13, 14, - 15, 16, 17, 18, 19, 13, 20, 13, 13, 13, 13, 13, 13, 21, 13, 13, - 13, 13, 13, 13, 13, 13, 22, 23, 13, 13, 24, 13, 13, 25, 26, 13, + 15, 16, 17, 18, 19, 13, 20, 13, 21, 13, 13, 13, 13, 22, 7, 7, + 23, 24, 13, 13, 13, 13, 25, 26, 13, 13, 27, 13, 28, 29, 30, 13, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 27, 7, 28, 29, 13, 13, 13, 13, 13, 13, 13, 30, + 7, 7, 7, 7, 31, 7, 32, 33, 7, 34, 13, 13, 13, 13, 13, 35, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, }; static RE_UINT8 re_alphanumeric_stage_3[] = { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 1, 17, 18, 19, 1, 20, 21, 22, 23, 24, 25, 26, 27, 1, 28, - 29, 30, 31, 31, 32, 31, 31, 31, 31, 31, 31, 31, 33, 34, 35, 31, - 36, 37, 31, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 38, 1, 1, 1, 1, 1, 1, 1, 1, 1, 39, - 1, 1, 1, 1, 40, 1, 41, 42, 43, 44, 45, 46, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 47, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 1, 48, 49, 1, 50, 51, 52, 53, 54, 55, 56, 57, 58, 1, 59, - 60, 61, 62, 63, 64, 31, 31, 31, 65, 66, 67, 68, 69, 70, 71, 31, - 72, 31, 73, 31, 31, 31, 31, 31, 1, 1, 1, 74, 75, 31, 31, 31, - 1, 1, 1, 1, 76, 31, 31, 31, 1, 1, 77, 78, 31, 31, 31, 79, - 80, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 81, 31, 31, 31, - 31, 31, 31, 31, 82, 83, 84, 85, 86, 31, 31, 31, 31, 31, 87, 31, - 31, 88, 31, 31, 31, 31, 31, 31, 1, 1, 1, 1, 1, 1, 89, 1, - 1, 1, 1, 1, 1, 1, 1, 90, 91, 31, 31, 31, 31, 31, 31, 31, - 1, 1, 91, 31, 31, 31, 31, 31, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 1, 17, 18, 19, 1, 20, 21, 22, 23, 24, 25, 26, 27, 1, 28, + 29, 30, 31, 31, 32, 31, 31, 31, 31, 31, 31, 31, 33, 34, 35, 31, + 36, 37, 31, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 38, 1, 1, 1, 1, 1, 1, 1, 1, 1, 39, + 1, 1, 1, 1, 40, 1, 41, 42, 43, 44, 45, 46, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 47, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 1, 48, 49, 1, 50, 51, 52, 53, 54, 55, 56, 57, 58, 1, 59, + 60, 61, 62, 63, 64, 31, 31, 31, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 31, 74, 31, 75, 31, 31, 31, 1, 1, 1, 76, 77, 78, 31, 31, + 1, 1, 1, 1, 79, 31, 31, 31, 31, 31, 31, 31, 1, 1, 80, 31, + 1, 1, 81, 82, 31, 31, 31, 83, 1, 1, 1, 1, 1, 1, 1, 84, + 1, 1, 85, 31, 31, 31, 31, 31, 86, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 87, 31, 31, 31, 31, 31, 31, 31, 88, 89, 90, 91, + 92, 31, 31, 31, 31, 31, 31, 31, 93, 94, 31, 31, 31, 31, 95, 31, + 31, 96, 31, 31, 31, 31, 31, 31, 1, 1, 1, 1, 1, 1, 97, 1, + 1, 1, 1, 1, 1, 1, 1, 98, 99, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 100, 31, 1, 1, 101, 31, 31, 31, 31, 31, }; static RE_UINT8 re_alphanumeric_stage_4[] = { @@ -11710,48 +12408,53 @@ static RE_UINT8 re_alphanumeric_stage_4[] = { 5, 5, 5, 5, 5, 5, 6, 7, 0, 0, 8, 9, 10, 11, 5, 12, 5, 5, 5, 5, 13, 5, 5, 5, 5, 14, 15, 16, 17, 18, 19, 20, 21, 5, 22, 23, 5, 5, 24, 25, 26, 5, 27, 5, 5, 28, 5, 29, - 30, 31, 32, 0, 0, 33, 0, 34, 5, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 47, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 49, 60, 61, 62, 63, 60, 64, 65, 66, 67, 68, 69, 70, - 16, 71, 72, 0, 73, 74, 75, 0, 76, 77, 78, 79, 80, 81, 0, 0, - 5, 82, 83, 84, 85, 5, 86, 87, 5, 5, 88, 5, 89, 90, 91, 5, - 92, 5, 93, 0, 94, 5, 5, 95, 16, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 96, 2, 5, 5, 97, 98, 99, 99, 100, 5, 101, 102, 77, - 1, 5, 5, 103, 5, 104, 5, 105, 106, 107, 108, 109, 5, 110, 111, 0, - 112, 5, 106, 113, 111, 114, 0, 0, 5, 115, 116, 0, 5, 117, 5, 118, - 5, 105, 119, 120, 0, 0, 0, 121, 5, 5, 5, 5, 5, 5, 0, 122, - 123, 5, 124, 120, 5, 125, 126, 127, 0, 0, 0, 128, 129, 0, 0, 0, - 130, 131, 132, 5, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 134, 5, 77, 5, 135, 106, 5, 5, 5, 5, 136, - 5, 86, 5, 137, 138, 139, 139, 5, 0, 140, 0, 0, 0, 0, 0, 0, - 141, 142, 16, 5, 143, 16, 5, 87, 144, 145, 5, 5, 146, 71, 0, 26, - 5, 5, 5, 5, 5, 105, 0, 0, 5, 5, 5, 5, 5, 5, 31, 0, - 5, 5, 5, 5, 31, 0, 26, 120, 147, 148, 5, 149, 150, 5, 5, 94, - 151, 152, 5, 5, 153, 154, 0, 151, 155, 17, 5, 99, 5, 5, 156, 157, - 5, 104, 33, 81, 5, 158, 159, 160, 5, 138, 161, 162, 5, 106, 163, 164, - 165, 166, 87, 167, 0, 0, 5, 168, 5, 5, 5, 5, 5, 169, 170, 112, - 5, 5, 5, 171, 5, 5, 172, 0, 173, 174, 175, 5, 5, 28, 176, 5, - 5, 120, 26, 5, 177, 5, 17, 178, 0, 0, 0, 179, 5, 5, 5, 81, - 1, 2, 2, 108, 5, 106, 180, 0, 181, 182, 183, 0, 5, 5, 5, 71, - 0, 0, 5, 95, 0, 0, 0, 0, 0, 0, 0, 0, 81, 5, 184, 0, - 5, 26, 104, 71, 120, 5, 185, 0, 5, 5, 5, 5, 120, 77, 0, 0, - 5, 186, 5, 187, 0, 0, 0, 0, 5, 138, 105, 17, 0, 0, 0, 0, - 188, 189, 105, 138, 106, 0, 0, 0, 105, 172, 0, 0, 5, 190, 0, 0, - 191, 99, 0, 81, 81, 0, 78, 192, 5, 105, 105, 33, 28, 0, 0, 0, - 5, 5, 133, 0, 0, 0, 0, 0, 5, 5, 193, 56, 152, 32, 26, 194, - 5, 195, 26, 196, 5, 5, 197, 0, 198, 199, 0, 0, 0, 26, 5, 194, - 50, 47, 200, 187, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 201, 0, - 0, 0, 0, 0, 5, 202, 0, 0, 5, 106, 203, 0, 5, 105, 77, 0, - 0, 0, 0, 0, 0, 5, 5, 204, 0, 0, 0, 0, 0, 0, 5, 32, - 5, 5, 5, 5, 32, 0, 0, 0, 5, 5, 5, 146, 0, 0, 0, 0, - 5, 146, 0, 0, 0, 0, 0, 0, 5, 32, 106, 77, 0, 0, 26, 205, - 5, 138, 156, 206, 94, 0, 0, 0, 5, 5, 207, 106, 176, 0, 0, 0, - 208, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 209, 210, 0, 0, 0, - 5, 5, 211, 5, 212, 213, 214, 5, 215, 216, 217, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 218, 219, 87, 211, 211, 135, 135, 220, 220, 221, 5, - 5, 5, 5, 5, 5, 5, 192, 0, 214, 222, 223, 224, 225, 226, 0, 0, - 0, 26, 83, 83, 77, 0, 0, 0, 5, 5, 5, 5, 5, 5, 138, 0, - 5, 95, 5, 5, 5, 5, 5, 5, 120, 0, 0, 0, 0, 0, 0, 0, + 30, 31, 32, 0, 0, 33, 34, 35, 5, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 48, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 58, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 16, 73, 74, 0, 75, 76, 77, 0, 78, 79, 80, 81, 82, 83, 0, 0, + 5, 84, 85, 86, 87, 5, 88, 89, 5, 5, 90, 5, 91, 92, 93, 5, + 94, 5, 95, 0, 96, 5, 5, 97, 16, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 98, 2, 5, 5, 99, 100, 101, 101, 102, 5, 103, 104, 79, + 1, 5, 5, 105, 5, 106, 5, 107, 108, 109, 110, 111, 5, 112, 113, 0, + 114, 5, 108, 115, 113, 116, 0, 0, 5, 117, 118, 0, 5, 119, 5, 120, + 5, 107, 121, 122, 123, 0, 0, 124, 5, 5, 5, 5, 5, 5, 0, 125, + 97, 5, 126, 122, 5, 127, 128, 129, 0, 0, 0, 130, 131, 0, 0, 0, + 132, 133, 134, 5, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 135, 5, 79, 5, 136, 108, 5, 5, 5, 5, 137, + 5, 88, 5, 138, 139, 140, 140, 5, 0, 141, 0, 0, 0, 0, 0, 0, + 142, 143, 16, 5, 144, 16, 5, 89, 145, 146, 5, 5, 147, 73, 0, 26, + 5, 5, 5, 5, 5, 107, 0, 0, 5, 5, 5, 5, 5, 5, 107, 0, + 5, 5, 5, 5, 31, 0, 26, 122, 148, 149, 5, 150, 5, 5, 5, 96, + 151, 152, 5, 5, 153, 154, 0, 151, 155, 17, 5, 101, 5, 5, 156, 157, + 5, 106, 158, 83, 5, 159, 160, 161, 5, 139, 162, 163, 5, 108, 164, 165, + 166, 167, 89, 168, 5, 5, 5, 169, 5, 5, 5, 5, 5, 170, 171, 114, + 5, 5, 5, 172, 5, 5, 173, 0, 174, 175, 176, 5, 5, 28, 177, 5, + 5, 122, 26, 5, 178, 5, 17, 179, 0, 0, 0, 180, 5, 5, 5, 83, + 1, 2, 2, 110, 5, 108, 181, 0, 182, 183, 184, 0, 5, 5, 5, 73, + 0, 0, 5, 185, 0, 0, 0, 0, 0, 0, 0, 0, 83, 5, 186, 0, + 5, 26, 106, 73, 122, 5, 187, 0, 5, 5, 5, 5, 122, 85, 188, 114, + 5, 189, 5, 190, 0, 0, 0, 0, 5, 139, 107, 17, 0, 0, 0, 0, + 191, 192, 107, 139, 108, 0, 0, 193, 107, 173, 0, 0, 5, 194, 0, 0, + 195, 101, 0, 83, 83, 0, 80, 196, 5, 107, 107, 158, 28, 0, 0, 0, + 5, 5, 123, 0, 5, 158, 5, 158, 5, 5, 197, 57, 152, 32, 26, 198, + 5, 199, 26, 200, 5, 5, 201, 0, 202, 203, 0, 0, 204, 205, 5, 198, + 39, 48, 206, 190, 0, 0, 0, 0, 5, 5, 207, 0, 5, 5, 208, 0, + 0, 0, 0, 0, 5, 209, 210, 0, 5, 108, 211, 0, 5, 107, 79, 0, + 212, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 213, + 0, 0, 0, 0, 0, 0, 5, 32, 214, 215, 216, 217, 178, 218, 0, 0, + 5, 5, 5, 5, 173, 0, 0, 0, 5, 5, 5, 147, 5, 5, 5, 5, + 5, 5, 190, 0, 0, 0, 0, 0, 5, 147, 0, 0, 0, 0, 0, 0, + 5, 5, 219, 0, 0, 0, 0, 0, 5, 32, 108, 79, 0, 0, 26, 220, + 5, 139, 221, 222, 96, 0, 0, 0, 5, 5, 223, 108, 177, 0, 0, 78, + 5, 5, 5, 5, 5, 5, 5, 31, 5, 5, 5, 5, 5, 5, 5, 158, + 224, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 225, 226, 0, 0, 0, + 5, 5, 227, 5, 228, 229, 230, 5, 231, 232, 233, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 234, 235, 89, 227, 227, 136, 136, 214, 214, 236, 5, + 237, 238, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 196, 0, + 5, 5, 239, 0, 0, 0, 0, 0, 230, 240, 241, 242, 243, 244, 0, 0, + 0, 26, 85, 85, 79, 0, 0, 0, 5, 5, 5, 5, 5, 5, 139, 0, + 5, 185, 5, 5, 5, 5, 5, 5, 122, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 224, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, }; static RE_UINT8 re_alphanumeric_stage_5[] = { @@ -11763,58 +12466,63 @@ static RE_UINT8 re_alphanumeric_stage_5[] = { 255, 7, 7, 0, 0, 0, 255, 7, 255, 255, 255, 254, 255, 195, 255, 255, 255, 255, 239, 31, 254, 225, 255, 159, 0, 0, 255, 255, 0, 224, 255, 255, 255, 255, 3, 0, 255, 7, 48, 4, 255, 255, 255, 252, 255, 31, 0, 0, - 255, 255, 255, 1, 255, 255, 7, 0, 240, 3, 255, 255, 255, 255, 255, 239, - 255, 223, 225, 255, 207, 255, 254, 255, 239, 159, 249, 255, 255, 253, 197, 227, - 159, 89, 128, 176, 207, 255, 3, 0, 238, 135, 249, 255, 255, 253, 109, 195, - 135, 25, 2, 94, 192, 255, 63, 0, 238, 191, 251, 255, 255, 253, 237, 227, - 191, 27, 1, 0, 207, 255, 0, 0, 238, 159, 249, 255, 159, 25, 192, 176, - 207, 255, 2, 0, 236, 199, 61, 214, 24, 199, 255, 195, 199, 29, 129, 0, - 192, 255, 0, 0, 239, 223, 253, 255, 255, 253, 255, 227, 223, 29, 96, 3, - 238, 223, 253, 255, 255, 253, 239, 227, 223, 29, 96, 64, 207, 255, 6, 0, - 255, 255, 255, 231, 223, 93, 128, 0, 207, 255, 0, 252, 236, 255, 127, 252, - 255, 255, 251, 47, 127, 128, 95, 255, 192, 255, 12, 0, 255, 255, 255, 7, - 127, 32, 255, 3, 150, 37, 240, 254, 174, 236, 255, 59, 95, 32, 255, 243, - 1, 0, 0, 0, 255, 3, 0, 0, 255, 254, 255, 255, 255, 31, 254, 255, - 3, 255, 255, 254, 255, 255, 255, 31, 255, 255, 127, 249, 255, 3, 255, 255, - 231, 193, 255, 255, 127, 64, 255, 51, 191, 32, 255, 255, 255, 255, 255, 247, - 255, 61, 127, 61, 255, 61, 255, 255, 255, 255, 61, 127, 61, 255, 127, 255, - 255, 255, 61, 255, 255, 255, 255, 135, 255, 255, 0, 0, 255, 255, 31, 0, - 255, 159, 255, 255, 255, 199, 255, 1, 255, 223, 15, 0, 255, 255, 15, 0, - 255, 223, 13, 0, 255, 255, 207, 255, 255, 1, 128, 16, 255, 255, 255, 0, - 255, 7, 255, 255, 255, 255, 63, 0, 255, 255, 255, 127, 255, 15, 255, 1, - 192, 255, 255, 255, 255, 63, 31, 0, 255, 15, 255, 255, 255, 3, 255, 3, - 255, 255, 255, 15, 254, 255, 31, 0, 128, 0, 0, 0, 255, 255, 239, 255, - 239, 15, 255, 3, 255, 243, 255, 255, 191, 255, 3, 0, 255, 227, 255, 255, - 255, 255, 255, 63, 0, 222, 111, 0, 128, 255, 31, 0, 255, 255, 63, 63, - 63, 63, 255, 170, 255, 255, 223, 95, 220, 31, 207, 15, 255, 31, 220, 31, - 0, 0, 2, 128, 0, 0, 255, 31, 132, 252, 47, 62, 80, 189, 255, 243, - 224, 67, 0, 0, 255, 1, 0, 0, 0, 0, 192, 255, 255, 127, 255, 255, - 31, 120, 12, 0, 255, 128, 0, 0, 255, 255, 127, 0, 127, 127, 127, 127, - 0, 128, 0, 0, 224, 0, 0, 0, 254, 3, 62, 31, 255, 255, 127, 224, - 224, 255, 255, 255, 255, 63, 254, 255, 255, 127, 0, 0, 255, 31, 255, 255, - 255, 15, 0, 0, 255, 127, 240, 143, 255, 255, 255, 191, 0, 0, 128, 255, - 252, 255, 255, 255, 255, 121, 255, 255, 255, 63, 3, 0, 187, 247, 255, 255, - 15, 0, 255, 3, 0, 0, 252, 8, 255, 255, 247, 255, 0, 128, 255, 3, - 223, 255, 255, 127, 255, 63, 255, 3, 255, 255, 127, 196, 5, 0, 0, 56, - 255, 255, 60, 0, 126, 126, 126, 0, 127, 127, 255, 255, 48, 0, 0, 0, - 255, 7, 255, 3, 15, 0, 255, 255, 127, 248, 255, 255, 255, 63, 255, 255, - 255, 255, 255, 3, 127, 0, 248, 224, 255, 253, 127, 95, 219, 255, 255, 255, - 0, 0, 248, 255, 255, 255, 252, 255, 0, 0, 255, 15, 0, 0, 223, 255, - 252, 252, 252, 28, 255, 239, 255, 255, 127, 255, 255, 183, 255, 63, 255, 63, - 255, 255, 1, 0, 15, 255, 62, 0, 255, 0, 255, 255, 15, 0, 0, 0, - 63, 253, 255, 255, 255, 255, 191, 145, 255, 255, 255, 192, 111, 240, 239, 254, + 255, 255, 255, 1, 255, 255, 223, 63, 0, 0, 240, 255, 248, 3, 255, 255, + 255, 255, 255, 239, 255, 223, 225, 255, 207, 255, 254, 255, 239, 159, 249, 255, + 255, 253, 197, 227, 159, 89, 128, 176, 207, 255, 3, 0, 238, 135, 249, 255, + 255, 253, 109, 195, 135, 25, 2, 94, 192, 255, 63, 0, 238, 191, 251, 255, + 255, 253, 237, 227, 191, 27, 1, 0, 207, 255, 0, 2, 238, 159, 249, 255, + 159, 25, 192, 176, 207, 255, 2, 0, 236, 199, 61, 214, 24, 199, 255, 195, + 199, 29, 129, 0, 192, 255, 0, 0, 239, 223, 253, 255, 255, 253, 255, 227, + 223, 29, 96, 7, 207, 255, 0, 0, 255, 253, 239, 227, 223, 29, 96, 64, + 207, 255, 6, 0, 238, 223, 253, 255, 255, 255, 255, 231, 223, 93, 240, 128, + 207, 255, 0, 252, 236, 255, 127, 252, 255, 255, 251, 47, 127, 128, 95, 255, + 192, 255, 12, 0, 255, 255, 255, 7, 127, 32, 255, 3, 150, 37, 240, 254, + 174, 236, 255, 59, 95, 32, 255, 243, 1, 0, 0, 0, 255, 3, 0, 0, + 255, 254, 255, 255, 255, 31, 254, 255, 3, 255, 255, 254, 255, 255, 255, 31, + 255, 255, 127, 249, 255, 3, 255, 255, 231, 193, 255, 255, 127, 64, 255, 51, + 191, 32, 255, 255, 255, 255, 255, 247, 255, 61, 127, 61, 255, 61, 255, 255, + 255, 255, 61, 127, 61, 255, 127, 255, 255, 255, 61, 255, 255, 255, 255, 135, + 255, 255, 0, 0, 255, 255, 63, 63, 255, 159, 255, 255, 255, 199, 255, 1, + 255, 223, 15, 0, 255, 255, 15, 0, 255, 223, 13, 0, 255, 255, 207, 255, + 255, 1, 128, 16, 255, 255, 255, 0, 255, 7, 255, 255, 255, 255, 63, 0, + 255, 255, 255, 127, 255, 15, 255, 1, 192, 255, 255, 255, 255, 63, 31, 0, + 255, 15, 255, 255, 255, 3, 255, 3, 255, 255, 255, 15, 254, 255, 31, 0, + 128, 0, 0, 0, 255, 255, 239, 255, 239, 15, 255, 3, 255, 243, 255, 255, + 191, 255, 3, 0, 255, 227, 255, 255, 255, 255, 255, 63, 255, 1, 0, 0, + 0, 222, 111, 0, 128, 255, 31, 0, 63, 63, 255, 170, 255, 255, 223, 95, + 220, 31, 207, 15, 255, 31, 220, 31, 0, 0, 2, 128, 0, 0, 255, 31, + 132, 252, 47, 62, 80, 189, 255, 243, 224, 67, 0, 0, 0, 0, 192, 255, + 255, 127, 255, 255, 31, 120, 12, 0, 255, 128, 0, 0, 255, 255, 127, 0, + 127, 127, 127, 127, 0, 128, 0, 0, 224, 0, 0, 0, 254, 3, 62, 31, + 255, 255, 127, 224, 224, 255, 255, 255, 255, 63, 254, 255, 255, 127, 0, 0, + 255, 31, 255, 255, 255, 15, 0, 0, 255, 127, 240, 143, 0, 0, 128, 255, + 252, 255, 255, 255, 255, 249, 255, 255, 255, 127, 255, 0, 187, 247, 255, 255, + 47, 0, 255, 3, 0, 0, 252, 40, 255, 255, 7, 0, 255, 255, 247, 255, + 0, 128, 255, 3, 223, 255, 255, 127, 255, 63, 255, 3, 255, 255, 127, 196, + 5, 0, 0, 56, 255, 255, 60, 0, 126, 126, 126, 0, 127, 127, 255, 255, + 63, 0, 255, 255, 255, 7, 255, 3, 15, 0, 255, 255, 127, 248, 255, 255, + 255, 63, 255, 255, 255, 255, 255, 3, 127, 0, 248, 224, 255, 253, 127, 95, + 219, 255, 255, 255, 0, 0, 248, 255, 255, 255, 252, 255, 0, 0, 255, 15, + 0, 0, 223, 255, 252, 252, 252, 28, 255, 239, 255, 255, 127, 255, 255, 183, + 255, 63, 255, 63, 255, 255, 31, 0, 255, 255, 1, 0, 15, 255, 62, 0, + 255, 255, 15, 255, 255, 0, 255, 255, 15, 0, 0, 0, 63, 253, 255, 255, + 255, 255, 191, 145, 255, 255, 55, 0, 255, 255, 255, 192, 111, 240, 239, 254, 31, 0, 0, 0, 63, 0, 0, 0, 255, 1, 255, 3, 255, 255, 199, 255, - 255, 255, 71, 0, 30, 0, 255, 7, 255, 255, 251, 255, 255, 255, 159, 0, - 159, 25, 128, 224, 179, 0, 255, 3, 255, 255, 63, 127, 17, 0, 255, 3, - 255, 3, 0, 128, 255, 63, 0, 0, 248, 255, 255, 224, 31, 0, 255, 255, + 255, 255, 71, 0, 30, 0, 255, 23, 255, 255, 251, 255, 255, 255, 159, 64, + 127, 189, 255, 191, 255, 1, 255, 255, 159, 25, 129, 224, 187, 7, 255, 3, + 179, 0, 255, 3, 255, 255, 63, 127, 0, 0, 0, 63, 17, 0, 255, 3, + 255, 255, 255, 227, 255, 3, 0, 128, 255, 253, 255, 255, 255, 255, 127, 127, + 1, 0, 255, 3, 0, 0, 252, 255, 255, 254, 127, 0, 127, 0, 0, 0, + 255, 63, 0, 0, 15, 0, 255, 3, 248, 255, 255, 224, 31, 0, 255, 255, 3, 0, 0, 0, 255, 7, 255, 31, 255, 1, 255, 67, 255, 255, 223, 255, 255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123, 95, 252, 253, 255, 63, 255, 255, 255, 253, 255, 255, 247, - 255, 253, 255, 255, 247, 207, 255, 255, 150, 254, 247, 10, 132, 234, 150, 170, - 150, 247, 247, 94, 255, 251, 255, 15, 238, 251, 255, 15, + 247, 207, 255, 255, 127, 255, 255, 249, 219, 7, 0, 0, 143, 0, 255, 3, + 150, 254, 247, 10, 132, 234, 150, 170, 150, 247, 247, 94, 255, 251, 255, 15, + 238, 251, 255, 15, }; -/* Alphanumeric: 2037 bytes. */ +/* Alphanumeric: 2229 bytes. */ RE_UINT32 re_get_alphanumeric(RE_UINT32 ch) { RE_UINT32 code; @@ -11904,15 +12612,15 @@ RE_UINT32 re_get_blank(RE_UINT32 ch) { /* Graph. */ static RE_UINT8 re_graph_stage_1[] = { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 10, 12, 13, 14, - 3, 3, 3, 3, 3, 15, 10, 16, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 17, 10, 10, 10, 10, 10, 10, 10, 3, 3, 3, 3, 3, 3, 3, 18, - 3, 3, 3, 3, 3, 3, 3, 18, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 3, 3, 3, 3, 3, 16, 17, 18, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 20, 19, 19, 19, 19, 19, 19, 19, 3, 3, 3, 3, 3, 3, 3, 21, + 3, 3, 3, 3, 3, 3, 3, 21, }; static RE_UINT8 re_graph_stage_2[] = { @@ -11924,17 +12632,20 @@ static RE_UINT8 re_graph_stage_2[] = { 10, 10, 26, 27, 28, 29, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 30, 31, 31, 31, 31, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 31, 31, - 10, 49, 50, 31, 31, 31, 31, 31, 10, 10, 51, 31, 31, 31, 31, 31, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 31, + 10, 50, 51, 31, 31, 31, 31, 31, 10, 10, 52, 31, 31, 31, 31, 31, + 31, 31, 10, 53, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 10, 54, 31, 55, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 56, 10, 57, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 58, 31, 31, 31, 31, 31, 59, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 60, 61, 62, 63, 10, 64, 31, 31, + 65, 31, 31, 31, 66, 31, 31, 67, 68, 69, 10, 70, 71, 31, 31, 31, + 10, 10, 10, 72, 10, 10, 10, 10, 10, 10, 10, 73, 74, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 75, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 10, 76, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 10, 52, 31, 53, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 54, 31, 31, 31, 31, 31, 55, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 56, 57, 58, 59, 31, 31, 31, 31, - 31, 31, 31, 31, 60, 31, 31, 61, 62, 63, 64, 65, 66, 31, 31, 31, - 10, 10, 10, 67, 10, 10, 10, 10, 10, 10, 10, 68, 69, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 10, 69, 31, 31, - 70, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 71, + 77, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 78, }; static RE_UINT8 re_graph_stage_3[] = { @@ -11945,35 +12656,39 @@ static RE_UINT8 re_graph_stage_3[] = { 2, 2, 2, 43, 2, 2, 2, 2, 2, 44, 45, 46, 47, 48, 49, 50, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 51, 52, 53, 54, 2, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 2, 68, 2, 69, - 70, 71, 67, 72, 2, 2, 2, 73, 2, 2, 2, 2, 74, 75, 76, 77, - 78, 79, 80, 81, 2, 2, 82, 2, 2, 2, 2, 2, 2, 2, 2, 13, - 83, 84, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 85, 86, 87, - 88, 89, 2, 90, 91, 92, 93, 94, 2, 95, 96, 97, 2, 2, 2, 98, - 99, 99, 100, 2, 101, 2, 102, 103, 89, 2, 2, 1, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 59, 2, 2, 2, 2, 2, 2, 2, 2, 104, - 2, 2, 105, 106, 2, 2, 2, 2, 107, 2, 108, 57, 2, 2, 109, 110, - 111, 57, 2, 112, 2, 113, 2, 114, 115, 116, 2, 117, 118, 119, 67, 120, - 2, 2, 2, 2, 2, 2, 103, 121, 67, 67, 67, 67, 67, 67, 67, 67, + 70, 71, 72, 73, 2, 2, 2, 74, 2, 2, 2, 2, 75, 76, 77, 78, + 79, 80, 81, 82, 2, 2, 83, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 84, 85, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 86, 87, 88, + 89, 90, 2, 91, 92, 93, 94, 95, 2, 96, 97, 98, 2, 2, 2, 99, + 100, 100, 101, 2, 102, 2, 103, 104, 90, 2, 2, 1, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 59, 2, 2, 2, 2, 2, 2, 2, 2, 105, + 2, 2, 106, 107, 2, 2, 2, 2, 108, 2, 2, 57, 2, 2, 109, 110, + 111, 57, 2, 112, 2, 113, 2, 114, 115, 116, 2, 117, 118, 119, 2, 120, + 2, 2, 2, 2, 2, 2, 104, 121, 67, 67, 67, 67, 67, 67, 67, 67, 2, 122, 2, 123, 124, 125, 2, 126, 2, 2, 2, 2, 2, 127, 128, 129, - 130, 131, 2, 132, 99, 2, 1, 133, 134, 135, 2, 13, 136, 2, 137, 138, - 67, 67, 139, 140, 103, 141, 108, 142, 2, 2, 143, 67, 144, 145, 67, 67, - 2, 2, 2, 2, 115, 146, 67, 67, 147, 148, 149, 67, 150, 67, 151, 67, - 152, 153, 154, 155, 156, 157, 158, 67, 2, 159, 67, 67, 67, 67, 67, 67, - 67, 160, 67, 67, 67, 67, 67, 67, 2, 161, 2, 162, 76, 163, 2, 164, - 165, 67, 166, 167, 24, 168, 67, 67, 67, 67, 2, 169, 67, 67, 170, 171, - 2, 172, 57, 171, 67, 67, 67, 67, 67, 67, 173, 174, 67, 67, 67, 67, - 67, 67, 67, 52, 67, 67, 67, 67, 2, 2, 2, 2, 2, 2, 175, 67, - 2, 176, 67, 67, 67, 67, 67, 67, 177, 67, 67, 67, 67, 67, 67, 67, - 52, 178, 67, 179, 2, 180, 181, 67, 67, 67, 67, 67, 2, 182, 183, 67, - 184, 67, 67, 67, 67, 67, 67, 67, 2, 185, 186, 67, 67, 67, 67, 67, - 2, 2, 2, 59, 187, 2, 2, 188, 2, 189, 67, 67, 2, 190, 67, 67, - 2, 191, 192, 193, 194, 195, 2, 2, 2, 2, 196, 2, 2, 2, 2, 197, - 2, 2, 2, 198, 67, 67, 67, 67, 199, 200, 201, 202, 67, 67, 67, 67, - 62, 2, 203, 204, 205, 62, 206, 207, 208, 209, 67, 67, 210, 211, 2, 212, - 2, 2, 2, 1, 2, 213, 214, 2, 2, 215, 2, 216, 2, 97, 2, 217, - 218, 219, 220, 67, 67, 67, 67, 67, 2, 2, 2, 221, 2, 2, 2, 2, - 2, 2, 2, 2, 50, 2, 2, 2, 188, 67, 67, 67, 67, 67, 67, 67, - 222, 2, 67, 67, 2, 2, 2, 223, 2, 2, 2, 2, 2, 2, 2, 211, + 49, 130, 2, 131, 100, 2, 1, 132, 133, 134, 2, 13, 135, 2, 136, 137, + 67, 67, 138, 139, 104, 140, 141, 142, 2, 2, 143, 144, 145, 146, 67, 67, + 2, 2, 2, 2, 115, 147, 67, 67, 148, 149, 150, 151, 152, 67, 153, 128, + 154, 155, 156, 157, 158, 159, 160, 67, 2, 72, 161, 162, 67, 67, 67, 67, + 67, 163, 67, 67, 67, 67, 67, 67, 2, 164, 2, 165, 77, 166, 2, 167, + 168, 67, 169, 170, 171, 172, 67, 67, 2, 173, 2, 174, 67, 67, 175, 176, + 2, 177, 57, 178, 179, 67, 67, 67, 67, 67, 180, 181, 67, 67, 67, 67, + 67, 67, 67, 52, 67, 67, 67, 67, 182, 183, 184, 67, 67, 67, 67, 67, + 2, 2, 2, 2, 2, 2, 123, 67, 2, 185, 2, 2, 2, 186, 67, 67, + 187, 67, 67, 67, 67, 67, 67, 67, 2, 188, 67, 67, 67, 67, 67, 67, + 52, 189, 67, 190, 2, 191, 192, 67, 67, 67, 67, 67, 2, 193, 194, 195, + 2, 2, 2, 2, 2, 2, 2, 196, 2, 2, 2, 161, 67, 67, 67, 67, + 197, 67, 67, 67, 67, 67, 67, 67, 2, 198, 199, 67, 67, 67, 67, 67, + 2, 2, 2, 59, 200, 2, 2, 201, 2, 202, 67, 67, 2, 203, 67, 67, + 2, 204, 205, 206, 207, 208, 2, 2, 2, 2, 209, 2, 2, 2, 2, 210, + 2, 2, 211, 67, 67, 67, 67, 67, 212, 67, 67, 67, 67, 67, 67, 67, + 2, 2, 2, 213, 2, 214, 67, 67, 215, 216, 217, 218, 67, 67, 67, 67, + 62, 2, 219, 220, 221, 62, 196, 222, 223, 224, 67, 67, 2, 2, 2, 2, + 2, 2, 2, 225, 2, 98, 2, 226, 83, 227, 228, 67, 229, 230, 231, 232, + 2, 2, 2, 233, 2, 2, 2, 2, 2, 2, 2, 2, 234, 2, 2, 2, + 235, 2, 2, 2, 2, 2, 2, 2, 2, 2, 236, 67, 67, 67, 67, 67, + 176, 67, 67, 67, 67, 67, 67, 67, 237, 2, 67, 67, 2, 2, 2, 238, + 2, 2, 2, 2, 2, 2, 2, 239, }; static RE_UINT8 re_graph_stage_4[] = { @@ -11981,85 +12696,90 @@ static RE_UINT8 re_graph_stage_4[] = { 5, 2, 6, 2, 2, 2, 2, 1, 2, 7, 1, 2, 8, 1, 2, 2, 9, 2, 10, 11, 2, 12, 2, 2, 13, 2, 2, 2, 14, 2, 2, 2, 2, 2, 2, 15, 2, 2, 2, 10, 2, 2, 16, 3, 2, 17, 0, 0, - 0, 0, 2, 18, 0, 0, 19, 2, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 21, 22, 29, 30, 31, 32, 33, 34, 6, 22, 35, 36, 37, 26, 15, - 38, 21, 22, 35, 39, 40, 26, 9, 41, 42, 43, 44, 45, 46, 32, 10, - 47, 48, 22, 49, 50, 51, 26, 52, 53, 48, 22, 54, 50, 55, 26, 56, - 53, 48, 2, 14, 57, 58, 26, 59, 60, 61, 2, 62, 63, 64, 32, 65, - 1, 2, 2, 66, 2, 27, 0, 0, 67, 68, 69, 70, 71, 72, 0, 0, - 73, 2, 74, 1, 2, 73, 2, 12, 12, 10, 0, 0, 75, 2, 2, 2, - 76, 77, 2, 2, 76, 2, 2, 78, 79, 80, 2, 2, 2, 79, 2, 2, - 2, 14, 2, 74, 2, 81, 2, 2, 2, 2, 2, 11, 1, 74, 2, 2, - 2, 2, 2, 82, 12, 11, 2, 83, 2, 84, 12, 85, 2, 16, 81, 81, - 3, 81, 2, 2, 2, 2, 2, 9, 2, 2, 10, 2, 2, 2, 2, 33, - 2, 3, 27, 27, 86, 2, 16, 11, 2, 2, 27, 2, 81, 87, 2, 2, - 2, 88, 2, 2, 2, 3, 2, 89, 81, 81, 16, 3, 0, 0, 0, 0, - 27, 2, 2, 74, 2, 2, 2, 90, 2, 2, 2, 91, 49, 2, 2, 2, - 9, 2, 2, 92, 2, 2, 2, 93, 2, 94, 2, 2, 94, 95, 2, 16, - 2, 2, 2, 96, 96, 97, 2, 98, 99, 2, 100, 2, 2, 3, 96, 101, - 3, 74, 2, 16, 0, 2, 2, 37, 81, 2, 2, 2, 2, 2, 83, 0, - 10, 0, 2, 2, 2, 2, 2, 26, 2, 102, 2, 49, 22, 15, 0, 0, - 2, 2, 3, 2, 2, 3, 2, 2, 2, 2, 2, 103, 2, 2, 75, 2, - 2, 2, 104, 105, 2, 83, 106, 106, 106, 106, 2, 2, 18, 0, 0, 0, - 2, 107, 2, 2, 2, 2, 2, 84, 2, 33, 0, 27, 1, 2, 2, 2, - 2, 7, 2, 2, 108, 2, 16, 1, 3, 2, 2, 10, 2, 2, 84, 2, - 74, 0, 0, 0, 74, 2, 2, 2, 83, 2, 2, 2, 2, 2, 27, 0, - 2, 13, 2, 2, 3, 2, 16, 15, 0, 0, 0, 109, 2, 2, 27, 81, - 110, 81, 2, 27, 2, 111, 2, 74, 13, 44, 2, 3, 2, 2, 2, 83, - 16, 72, 2, 2, 18, 99, 2, 83, 112, 113, 106, 2, 2, 2, 114, 0, - 2, 2, 16, 81, 115, 2, 2, 27, 2, 2, 16, 2, 2, 81, 0, 0, + 0, 0, 2, 18, 0, 19, 2, 2, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 21, 22, 29, 30, 31, 32, 33, 34, 6, 22, 35, 36, 37, 26, 38, + 39, 21, 22, 35, 40, 41, 26, 9, 42, 43, 44, 45, 46, 47, 32, 10, + 48, 49, 22, 50, 51, 52, 26, 53, 48, 49, 22, 54, 51, 55, 26, 56, + 57, 49, 2, 14, 58, 19, 26, 2, 59, 60, 2, 61, 62, 63, 32, 64, + 1, 2, 2, 65, 2, 27, 0, 0, 66, 67, 68, 69, 70, 71, 0, 0, + 72, 2, 73, 1, 2, 72, 2, 12, 12, 10, 0, 0, 74, 2, 2, 2, + 75, 76, 2, 2, 75, 2, 2, 77, 78, 79, 2, 2, 2, 78, 2, 2, + 2, 14, 2, 73, 2, 80, 2, 2, 2, 2, 2, 81, 1, 73, 2, 2, + 2, 2, 2, 82, 12, 11, 2, 83, 2, 84, 12, 85, 2, 16, 80, 80, + 3, 80, 2, 2, 2, 2, 2, 9, 2, 2, 10, 2, 2, 2, 2, 33, + 2, 3, 27, 27, 86, 2, 16, 11, 2, 2, 27, 2, 80, 87, 2, 2, + 2, 88, 2, 2, 2, 3, 2, 89, 80, 80, 16, 3, 0, 0, 0, 0, + 27, 2, 2, 73, 2, 2, 2, 90, 2, 2, 2, 91, 50, 2, 2, 2, + 82, 0, 0, 0, 9, 2, 2, 92, 2, 2, 2, 93, 2, 81, 2, 2, + 81, 94, 2, 16, 2, 2, 2, 95, 95, 96, 2, 97, 98, 2, 99, 2, + 2, 3, 95, 100, 3, 73, 2, 3, 0, 2, 2, 37, 27, 2, 2, 2, + 2, 2, 83, 0, 10, 0, 2, 2, 2, 2, 2, 26, 2, 101, 2, 50, + 22, 15, 102, 0, 2, 2, 3, 2, 2, 3, 2, 2, 2, 2, 2, 103, + 2, 2, 74, 2, 2, 2, 104, 105, 2, 83, 106, 106, 106, 106, 2, 2, + 11, 0, 0, 0, 2, 107, 2, 2, 2, 2, 2, 84, 2, 33, 0, 27, + 1, 2, 2, 2, 2, 7, 2, 2, 108, 2, 16, 1, 3, 2, 2, 10, + 2, 2, 84, 2, 2, 33, 0, 0, 73, 2, 2, 2, 83, 2, 2, 2, + 2, 2, 27, 0, 2, 2, 3, 9, 0, 0, 0, 109, 2, 2, 27, 80, + 110, 80, 2, 16, 2, 111, 2, 73, 13, 45, 2, 3, 2, 2, 2, 83, + 16, 71, 2, 2, 112, 98, 2, 83, 113, 114, 106, 2, 2, 2, 33, 2, + 2, 2, 16, 80, 115, 2, 2, 27, 2, 2, 16, 2, 2, 80, 0, 0, 83, 116, 2, 117, 118, 2, 2, 2, 15, 119, 2, 2, 0, 2, 2, 2, - 2, 120, 2, 2, 9, 0, 0, 16, 2, 81, 16, 2, 2, 121, 122, 96, - 2, 2, 2, 89, 123, 124, 106, 125, 126, 2, 80, 127, 16, 16, 0, 0, - 128, 2, 2, 129, 74, 27, 37, 0, 0, 2, 2, 16, 2, 74, 2, 2, - 2, 37, 2, 27, 10, 2, 2, 10, 130, 33, 0, 0, 2, 16, 81, 0, - 2, 2, 9, 2, 2, 2, 111, 0, 2, 33, 9, 0, 131, 2, 2, 132, - 2, 133, 2, 2, 2, 3, 109, 0, 2, 134, 2, 135, 2, 2, 2, 136, - 137, 138, 2, 139, 9, 82, 2, 2, 2, 2, 0, 0, 2, 2, 115, 83, - 2, 2, 2, 59, 2, 102, 2, 140, 2, 141, 142, 0, 82, 0, 0, 0, - 0, 0, 2, 3, 16, 120, 2, 143, 15, 2, 82, 81, 84, 2, 2, 83, - 144, 10, 1, 11, 2, 6, 2, 16, 0, 0, 0, 2, 2, 2, 10, 81, - 39, 145, 146, 11, 9, 81, 0, 0, 2, 2, 2, 102, 81, 0, 0, 0, - 11, 81, 0, 0, 0, 0, 2, 2, 2, 2, 2, 147, 2, 82, 0, 0, - 2, 2, 3, 11, 2, 2, 3, 0, 2, 3, 44, 0, 0, 2, 16, 33, - 33, 107, 6, 148, 2, 0, 0, 0, 11, 2, 2, 3, 143, 2, 0, 0, - 15, 0, 0, 0, 2, 2, 10, 74, 82, 72, 84, 0, 2, 2, 7, 2, - 2, 16, 0, 0, 33, 0, 0, 0, 2, 83, 2, 15, 2, 96, 2, 2, - 2, 12, 149, 150, 151, 2, 2, 2, 152, 153, 2, 154, 155, 48, 2, 2, - 2, 2, 102, 2, 88, 2, 2, 2, 156, 83, 0, 0, 151, 2, 157, 158, - 159, 160, 161, 162, 107, 27, 163, 27, 0, 0, 0, 15, 2, 84, 3, 1, - 1, 1, 2, 33, 74, 2, 3, 2, 2, 10, 0, 0, 0, 0, 32, 2, - 18, 2, 2, 10, 82, 15, 0, 0, 2, 2, 74, 2, 2, 2, 2, 16, - 3, 19, 2, 9, 10, 2, 2, 107, 2, 2, 151, 2, 164, 2, 2, 2, - 2, 0, 74, 84, 2, 11, 0, 0, 27, 2, 2, 2, 9, 81, 2, 2, - 9, 2, 16, 0, 2, 83, 0, 0, 165, 0, 2, 2, 2, 2, 2, 0, + 2, 120, 2, 2, 9, 0, 0, 16, 2, 121, 122, 95, 2, 2, 2, 89, + 123, 124, 106, 125, 126, 2, 79, 127, 16, 16, 0, 0, 128, 2, 2, 129, + 3, 27, 37, 0, 0, 2, 2, 16, 2, 73, 2, 2, 2, 37, 2, 27, + 10, 2, 2, 10, 2, 13, 2, 2, 130, 33, 0, 0, 2, 16, 80, 2, + 2, 130, 2, 27, 2, 2, 9, 2, 2, 2, 111, 0, 2, 33, 9, 0, + 131, 2, 2, 132, 2, 133, 2, 2, 2, 3, 109, 0, 0, 0, 2, 134, + 2, 135, 2, 136, 2, 2, 2, 137, 138, 139, 2, 140, 9, 82, 2, 2, + 2, 2, 0, 0, 2, 2, 115, 83, 2, 2, 2, 141, 2, 101, 2, 142, + 2, 143, 144, 0, 2, 2, 2, 112, 2, 2, 2, 145, 0, 0, 2, 3, + 16, 120, 2, 146, 15, 2, 82, 80, 84, 2, 2, 83, 16, 2, 1, 11, + 2, 6, 2, 3, 147, 13, 80, 2, 2, 2, 10, 80, 20, 21, 22, 35, + 40, 148, 149, 11, 2, 150, 0, 0, 9, 80, 0, 0, 2, 2, 2, 101, + 2, 16, 0, 0, 11, 80, 73, 0, 80, 0, 0, 0, 2, 50, 27, 2, + 0, 0, 2, 2, 2, 2, 2, 151, 22, 2, 2, 79, 33, 2, 73, 2, + 2, 120, 72, 83, 2, 2, 3, 11, 84, 0, 0, 0, 2, 2, 3, 0, + 83, 0, 0, 0, 2, 3, 45, 0, 0, 2, 16, 33, 33, 107, 6, 152, + 2, 0, 0, 0, 11, 2, 2, 3, 146, 2, 0, 0, 0, 0, 37, 0, + 2, 2, 73, 0, 15, 0, 0, 0, 2, 2, 10, 73, 82, 71, 84, 0, + 2, 2, 7, 2, 2, 2, 82, 0, 33, 0, 0, 0, 2, 83, 2, 15, + 2, 95, 2, 2, 2, 12, 153, 154, 155, 2, 2, 2, 156, 157, 2, 158, + 159, 49, 2, 2, 2, 2, 101, 2, 88, 2, 2, 2, 27, 98, 1, 0, + 79, 160, 161, 0, 162, 83, 0, 0, 10, 45, 0, 0, 155, 2, 163, 164, + 165, 166, 167, 168, 107, 27, 169, 27, 0, 0, 0, 15, 2, 84, 3, 1, + 1, 1, 2, 33, 73, 2, 3, 2, 0, 0, 32, 2, 112, 2, 2, 27, + 82, 15, 0, 0, 2, 112, 73, 83, 2, 11, 0, 0, 9, 80, 2, 2, + 9, 2, 16, 0, 0, 3, 9, 170, 27, 3, 0, 0, 2, 15, 0, 0, + 37, 0, 0, 0, 2, 83, 0, 0, 2, 2, 2, 11, 2, 16, 2, 2, + 2, 2, 15, 0, 171, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 16, }; static RE_UINT8 re_graph_stage_5[] = { 0, 0, 254, 255, 255, 255, 255, 127, 255, 252, 240, 215, 251, 255, 127, 254, 255, 230, 255, 0, 255, 7, 31, 0, 255, 223, 255, 191, 255, 231, 3, 0, - 255, 63, 255, 79, 7, 0, 240, 255, 239, 159, 249, 255, 255, 253, 197, 243, + 255, 63, 255, 79, 223, 63, 240, 255, 239, 159, 249, 255, 255, 253, 197, 243, 159, 121, 128, 176, 207, 255, 255, 15, 238, 135, 109, 211, 135, 57, 2, 94, - 192, 255, 63, 0, 238, 191, 237, 243, 191, 59, 1, 0, 238, 159, 159, 57, - 192, 176, 236, 199, 61, 214, 24, 199, 255, 195, 199, 61, 129, 0, 239, 223, - 253, 255, 255, 227, 223, 61, 96, 3, 0, 255, 238, 223, 239, 243, 96, 64, - 6, 0, 223, 125, 128, 0, 63, 254, 236, 255, 127, 252, 251, 47, 127, 132, - 95, 255, 28, 0, 255, 135, 150, 37, 240, 254, 174, 236, 255, 59, 95, 63, - 255, 243, 255, 254, 255, 31, 191, 32, 255, 61, 127, 61, 61, 127, 61, 255, - 127, 255, 255, 3, 255, 1, 127, 0, 15, 0, 13, 0, 241, 255, 255, 199, - 255, 207, 255, 159, 15, 240, 255, 248, 127, 3, 63, 240, 63, 63, 255, 170, - 223, 255, 207, 239, 220, 127, 0, 248, 255, 124, 243, 255, 63, 255, 15, 254, - 255, 128, 1, 128, 127, 127, 255, 251, 224, 255, 128, 255, 31, 192, 15, 128, - 126, 126, 126, 0, 48, 0, 127, 248, 248, 224, 127, 95, 219, 255, 248, 255, + 192, 255, 63, 0, 238, 191, 237, 243, 191, 59, 1, 0, 3, 2, 238, 159, + 159, 57, 192, 176, 236, 199, 61, 214, 24, 199, 255, 195, 199, 61, 129, 0, + 239, 223, 253, 255, 255, 227, 223, 61, 96, 7, 0, 255, 239, 243, 96, 64, + 6, 0, 238, 223, 223, 253, 236, 255, 127, 252, 251, 47, 127, 132, 95, 255, + 28, 0, 255, 135, 150, 37, 240, 254, 174, 236, 255, 59, 95, 63, 255, 243, + 255, 254, 255, 31, 191, 32, 255, 61, 127, 61, 61, 127, 61, 255, 127, 255, + 255, 3, 63, 63, 255, 1, 127, 0, 15, 0, 13, 0, 241, 255, 255, 199, + 255, 207, 255, 159, 15, 240, 255, 248, 127, 3, 63, 248, 255, 170, 223, 255, + 207, 239, 220, 127, 0, 248, 255, 124, 243, 255, 63, 255, 0, 240, 15, 254, + 255, 128, 1, 128, 127, 127, 255, 251, 224, 255, 128, 255, 63, 192, 15, 128, + 7, 0, 126, 126, 126, 0, 127, 248, 248, 224, 127, 95, 219, 255, 248, 255, 252, 255, 247, 255, 127, 15, 252, 252, 252, 28, 0, 62, 255, 239, 255, 183, - 135, 255, 143, 255, 15, 255, 63, 253, 191, 145, 191, 255, 255, 143, 255, 131, - 255, 192, 111, 240, 239, 254, 15, 135, 7, 255, 3, 30, 0, 254, 0, 128, - 255, 33, 128, 224, 207, 31, 7, 128, 255, 224, 100, 222, 255, 235, 239, 255, - 191, 231, 223, 223, 255, 123, 95, 252, 159, 255, 150, 254, 247, 10, 132, 234, - 150, 170, 150, 247, 247, 94, 238, 251, 231, 255, 2, 0, + 135, 255, 143, 255, 15, 255, 63, 253, 191, 145, 191, 255, 55, 248, 255, 143, + 255, 131, 255, 240, 111, 240, 239, 254, 15, 135, 63, 254, 7, 255, 3, 30, + 0, 254, 7, 252, 0, 128, 127, 189, 129, 224, 207, 31, 255, 43, 7, 128, + 255, 224, 100, 222, 255, 235, 239, 255, 191, 231, 223, 223, 255, 123, 95, 252, + 255, 249, 219, 7, 159, 255, 150, 254, 247, 10, 132, 234, 150, 170, 150, 247, + 247, 94, 238, 251, 249, 127, 2, 0, }; -/* Graph: 2244 bytes. */ +/* Graph: 2424 bytes. */ RE_UINT32 re_get_graph(RE_UINT32 ch) { RE_UINT32 code; @@ -12088,15 +12808,15 @@ RE_UINT32 re_get_graph(RE_UINT32 ch) { /* Print. */ static RE_UINT8 re_print_stage_1[] = { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 10, 12, 13, 14, - 3, 3, 3, 3, 3, 15, 10, 16, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 17, 10, 10, 10, 10, 10, 10, 10, 3, 3, 3, 3, 3, 3, 3, 18, - 3, 3, 3, 3, 3, 3, 3, 18, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 3, 3, 3, 3, 3, 16, 17, 18, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 20, 19, 19, 19, 19, 19, 19, 19, 3, 3, 3, 3, 3, 3, 3, 21, + 3, 3, 3, 3, 3, 3, 3, 21, }; static RE_UINT8 re_print_stage_2[] = { @@ -12108,17 +12828,20 @@ static RE_UINT8 re_print_stage_2[] = { 10, 10, 26, 27, 28, 29, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 30, 31, 31, 31, 31, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 31, 31, - 10, 49, 50, 31, 31, 31, 31, 31, 10, 10, 51, 31, 31, 31, 31, 31, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 31, + 10, 50, 51, 31, 31, 31, 31, 31, 10, 10, 52, 31, 31, 31, 31, 31, + 31, 31, 10, 53, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 10, 54, 31, 55, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 56, 10, 57, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 58, 31, 31, 31, 31, 31, 59, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 60, 61, 62, 63, 10, 64, 31, 31, + 65, 31, 31, 31, 66, 31, 31, 67, 68, 69, 10, 70, 71, 31, 31, 31, + 10, 10, 10, 72, 10, 10, 10, 10, 10, 10, 10, 73, 74, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 75, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 10, 76, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 10, 52, 31, 53, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 54, 31, 31, 31, 31, 31, 55, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 56, 57, 58, 59, 31, 31, 31, 31, - 31, 31, 31, 31, 60, 31, 31, 61, 62, 63, 64, 65, 66, 31, 31, 31, - 10, 10, 10, 67, 10, 10, 10, 10, 10, 10, 10, 68, 69, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 10, 69, 31, 31, - 70, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 71, + 77, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 78, }; static RE_UINT8 re_print_stage_3[] = { @@ -12129,35 +12852,39 @@ static RE_UINT8 re_print_stage_3[] = { 2, 2, 2, 43, 2, 2, 2, 2, 2, 44, 45, 46, 47, 48, 49, 50, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 51, 52, 53, 54, 2, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 2, 68, 2, 69, - 70, 71, 67, 72, 2, 2, 2, 73, 2, 2, 2, 2, 74, 75, 76, 77, - 78, 79, 80, 81, 2, 2, 82, 2, 2, 2, 2, 2, 2, 2, 2, 13, - 83, 84, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 85, 86, 87, - 88, 89, 2, 90, 91, 92, 93, 94, 2, 95, 96, 97, 2, 2, 2, 98, - 2, 99, 100, 2, 101, 2, 102, 103, 89, 2, 2, 1, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 59, 2, 2, 2, 2, 2, 2, 2, 2, 104, - 2, 2, 105, 106, 2, 2, 2, 2, 107, 2, 108, 57, 2, 2, 109, 110, - 111, 57, 2, 112, 2, 113, 2, 114, 115, 116, 2, 117, 118, 119, 67, 120, - 2, 2, 2, 2, 2, 2, 103, 121, 67, 67, 67, 67, 67, 67, 67, 67, + 70, 71, 72, 73, 2, 2, 2, 74, 2, 2, 2, 2, 75, 76, 77, 78, + 79, 80, 81, 82, 2, 2, 83, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 84, 85, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 86, 87, 88, + 89, 90, 2, 91, 92, 93, 94, 95, 2, 96, 97, 98, 2, 2, 2, 99, + 2, 100, 101, 2, 102, 2, 103, 104, 90, 2, 2, 1, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 59, 2, 2, 2, 2, 2, 2, 2, 2, 105, + 2, 2, 106, 107, 2, 2, 2, 2, 108, 2, 2, 57, 2, 2, 109, 110, + 111, 57, 2, 112, 2, 113, 2, 114, 115, 116, 2, 117, 118, 119, 2, 120, + 2, 2, 2, 2, 2, 2, 104, 121, 67, 67, 67, 67, 67, 67, 67, 67, 2, 122, 2, 123, 124, 125, 2, 126, 2, 2, 2, 2, 2, 127, 128, 129, - 130, 131, 2, 132, 99, 2, 1, 133, 134, 135, 2, 13, 136, 2, 137, 138, - 67, 67, 51, 139, 103, 140, 108, 141, 2, 2, 142, 67, 143, 144, 67, 67, - 2, 2, 2, 2, 115, 145, 67, 67, 146, 147, 148, 67, 149, 67, 150, 67, - 151, 152, 153, 154, 155, 156, 157, 67, 2, 158, 67, 67, 67, 67, 67, 67, - 67, 159, 67, 67, 67, 67, 67, 67, 2, 160, 2, 161, 76, 162, 2, 163, - 164, 67, 165, 166, 24, 167, 67, 67, 67, 67, 2, 168, 67, 67, 169, 170, - 2, 171, 57, 170, 67, 67, 67, 67, 67, 67, 0, 172, 67, 67, 67, 67, - 67, 67, 67, 52, 67, 67, 67, 67, 2, 2, 2, 2, 2, 2, 173, 67, - 2, 174, 67, 67, 67, 67, 67, 67, 175, 67, 67, 67, 67, 67, 67, 67, - 52, 176, 67, 177, 2, 178, 179, 67, 67, 67, 67, 67, 2, 180, 181, 67, - 182, 67, 67, 67, 67, 67, 67, 67, 2, 183, 184, 67, 67, 67, 67, 67, - 2, 2, 2, 59, 185, 2, 2, 186, 2, 187, 67, 67, 2, 188, 67, 67, - 2, 189, 190, 191, 192, 193, 2, 2, 2, 2, 194, 2, 2, 2, 2, 195, - 2, 2, 2, 196, 67, 67, 67, 67, 197, 198, 199, 200, 67, 67, 67, 67, - 62, 2, 201, 202, 203, 62, 204, 205, 206, 207, 67, 67, 208, 209, 2, 210, - 2, 2, 2, 1, 2, 211, 212, 2, 2, 213, 2, 214, 2, 97, 2, 215, - 216, 217, 218, 67, 67, 67, 67, 67, 2, 2, 2, 219, 2, 2, 2, 2, - 2, 2, 2, 2, 50, 2, 2, 2, 186, 67, 67, 67, 67, 67, 67, 67, - 220, 2, 67, 67, 2, 2, 2, 221, 2, 2, 2, 2, 2, 2, 2, 209, + 49, 130, 2, 131, 100, 2, 1, 132, 133, 134, 2, 13, 135, 2, 136, 137, + 67, 67, 51, 138, 104, 139, 140, 141, 2, 2, 142, 143, 144, 145, 67, 67, + 2, 2, 2, 2, 115, 146, 67, 67, 147, 148, 149, 150, 151, 67, 152, 128, + 153, 154, 155, 156, 157, 158, 159, 67, 2, 72, 160, 161, 67, 67, 67, 67, + 67, 162, 67, 67, 67, 67, 67, 67, 2, 163, 2, 164, 77, 165, 2, 166, + 167, 67, 168, 169, 170, 171, 67, 67, 2, 172, 2, 173, 67, 67, 174, 175, + 2, 176, 57, 177, 178, 67, 67, 67, 67, 67, 0, 179, 67, 67, 67, 67, + 67, 67, 67, 52, 67, 67, 67, 67, 180, 181, 182, 67, 67, 67, 67, 67, + 2, 2, 2, 2, 2, 2, 123, 67, 2, 183, 2, 2, 2, 184, 67, 67, + 185, 67, 67, 67, 67, 67, 67, 67, 2, 186, 67, 67, 67, 67, 67, 67, + 52, 187, 67, 188, 2, 189, 190, 67, 67, 67, 67, 67, 2, 191, 192, 193, + 2, 2, 2, 2, 2, 2, 2, 194, 2, 2, 2, 160, 67, 67, 67, 67, + 195, 67, 67, 67, 67, 67, 67, 67, 2, 196, 197, 67, 67, 67, 67, 67, + 2, 2, 2, 59, 198, 2, 2, 199, 2, 200, 67, 67, 2, 201, 67, 67, + 2, 202, 203, 204, 205, 206, 2, 2, 2, 2, 207, 2, 2, 2, 2, 208, + 2, 2, 209, 67, 67, 67, 67, 67, 210, 67, 67, 67, 67, 67, 67, 67, + 2, 2, 2, 211, 2, 212, 67, 67, 213, 214, 215, 216, 67, 67, 67, 67, + 62, 2, 217, 218, 219, 62, 194, 220, 221, 222, 67, 67, 2, 2, 2, 2, + 2, 2, 2, 223, 2, 98, 2, 224, 83, 225, 226, 67, 227, 228, 229, 230, + 2, 2, 2, 231, 2, 2, 2, 2, 2, 2, 2, 2, 232, 2, 2, 2, + 233, 2, 2, 2, 2, 2, 2, 2, 2, 2, 234, 67, 67, 67, 67, 67, + 175, 67, 67, 67, 67, 67, 67, 67, 235, 2, 67, 67, 2, 2, 2, 236, + 2, 2, 2, 2, 2, 2, 2, 237, }; static RE_UINT8 re_print_stage_4[] = { @@ -12165,85 +12892,90 @@ static RE_UINT8 re_print_stage_4[] = { 4, 1, 5, 1, 1, 1, 1, 6, 1, 7, 6, 1, 8, 6, 1, 1, 9, 1, 10, 11, 1, 12, 1, 1, 13, 1, 1, 1, 14, 1, 1, 1, 1, 1, 1, 15, 1, 1, 1, 10, 1, 1, 16, 2, 1, 17, 0, 0, - 0, 0, 1, 18, 0, 0, 19, 1, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 21, 22, 29, 30, 31, 32, 33, 34, 5, 22, 35, 36, 37, 26, 15, - 38, 21, 22, 35, 39, 40, 26, 9, 41, 42, 43, 44, 45, 46, 32, 10, - 47, 48, 22, 49, 50, 51, 26, 52, 53, 48, 22, 54, 50, 55, 26, 56, - 53, 48, 1, 14, 57, 58, 26, 59, 60, 61, 1, 62, 63, 64, 32, 65, - 6, 1, 1, 66, 1, 27, 0, 0, 67, 68, 69, 70, 71, 72, 0, 0, - 73, 1, 74, 6, 1, 73, 1, 12, 12, 10, 0, 0, 75, 1, 1, 1, - 76, 77, 1, 1, 76, 1, 1, 78, 79, 80, 1, 1, 1, 79, 1, 1, - 1, 14, 1, 74, 1, 81, 1, 1, 1, 1, 1, 11, 1, 74, 1, 1, - 1, 1, 1, 82, 12, 11, 1, 83, 1, 84, 12, 85, 1, 16, 81, 81, - 2, 81, 1, 1, 1, 1, 1, 9, 1, 1, 10, 1, 1, 1, 1, 33, - 1, 2, 27, 27, 86, 1, 16, 11, 1, 1, 27, 1, 81, 87, 1, 1, - 1, 88, 1, 1, 1, 2, 1, 89, 81, 81, 16, 2, 0, 0, 0, 0, - 27, 1, 1, 74, 1, 1, 1, 90, 1, 1, 1, 91, 49, 1, 1, 1, - 9, 1, 1, 92, 1, 1, 1, 93, 1, 94, 1, 1, 94, 95, 1, 16, - 1, 1, 1, 96, 96, 97, 1, 98, 1, 1, 3, 1, 1, 1, 96, 99, - 2, 74, 1, 16, 0, 1, 1, 37, 81, 1, 1, 1, 1, 1, 83, 0, - 10, 0, 1, 1, 1, 1, 1, 26, 1, 100, 1, 49, 22, 15, 0, 0, - 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 101, 1, 1, 75, 1, - 1, 1, 102, 103, 1, 83, 104, 104, 104, 104, 1, 1, 18, 0, 0, 0, - 1, 105, 1, 1, 1, 1, 1, 84, 1, 33, 0, 27, 6, 1, 1, 1, - 1, 7, 1, 1, 106, 1, 16, 6, 2, 1, 1, 10, 1, 1, 84, 1, - 74, 0, 0, 0, 74, 1, 1, 1, 83, 1, 1, 1, 1, 1, 27, 0, - 1, 13, 1, 1, 2, 1, 16, 15, 0, 0, 0, 107, 1, 1, 27, 81, - 108, 81, 1, 27, 1, 109, 1, 74, 13, 44, 1, 2, 1, 1, 1, 83, - 16, 72, 1, 1, 18, 110, 1, 83, 111, 112, 104, 1, 1, 1, 113, 0, - 1, 1, 16, 81, 114, 1, 1, 27, 1, 1, 16, 1, 1, 81, 0, 0, + 0, 0, 1, 18, 0, 19, 1, 1, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 21, 22, 29, 30, 31, 32, 33, 34, 5, 22, 35, 36, 37, 26, 38, + 39, 21, 22, 35, 40, 41, 26, 9, 42, 43, 44, 45, 46, 47, 32, 10, + 48, 49, 22, 50, 51, 52, 26, 53, 48, 49, 22, 54, 51, 55, 26, 56, + 57, 49, 1, 14, 58, 19, 26, 1, 59, 60, 1, 61, 62, 63, 32, 64, + 6, 1, 1, 65, 1, 27, 0, 0, 66, 67, 68, 69, 70, 71, 0, 0, + 72, 1, 73, 6, 1, 72, 1, 12, 12, 10, 0, 0, 74, 1, 1, 1, + 75, 76, 1, 1, 75, 1, 1, 77, 78, 79, 1, 1, 1, 78, 1, 1, + 1, 14, 1, 73, 1, 80, 1, 1, 1, 1, 1, 81, 1, 73, 1, 1, + 1, 1, 1, 82, 12, 11, 1, 83, 1, 84, 12, 85, 1, 16, 80, 80, + 2, 80, 1, 1, 1, 1, 1, 9, 1, 1, 10, 1, 1, 1, 1, 33, + 1, 2, 27, 27, 86, 1, 16, 11, 1, 1, 27, 1, 80, 87, 1, 1, + 1, 88, 1, 1, 1, 2, 1, 89, 80, 80, 16, 2, 0, 0, 0, 0, + 27, 1, 1, 73, 1, 1, 1, 90, 1, 1, 1, 91, 50, 1, 1, 1, + 82, 0, 0, 0, 9, 1, 1, 92, 1, 1, 1, 93, 1, 81, 1, 1, + 81, 94, 1, 16, 1, 1, 1, 95, 95, 96, 1, 97, 1, 1, 3, 1, + 1, 1, 95, 98, 2, 73, 1, 2, 0, 1, 1, 37, 27, 1, 1, 1, + 1, 1, 83, 0, 10, 0, 1, 1, 1, 1, 1, 26, 1, 99, 1, 50, + 22, 15, 100, 0, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 101, + 1, 1, 74, 1, 1, 1, 102, 103, 1, 83, 104, 104, 104, 104, 1, 1, + 11, 0, 0, 0, 1, 105, 1, 1, 1, 1, 1, 84, 1, 33, 0, 27, + 6, 1, 1, 1, 1, 7, 1, 1, 106, 1, 16, 6, 2, 1, 1, 10, + 1, 1, 84, 1, 1, 33, 0, 0, 73, 1, 1, 1, 83, 1, 1, 1, + 1, 1, 27, 0, 1, 1, 2, 9, 0, 0, 0, 107, 1, 1, 27, 80, + 108, 80, 1, 16, 1, 109, 1, 73, 13, 45, 1, 2, 1, 1, 1, 83, + 16, 71, 1, 1, 110, 111, 1, 83, 112, 113, 104, 1, 1, 1, 33, 1, + 1, 1, 16, 80, 114, 1, 1, 27, 1, 1, 16, 1, 1, 80, 0, 0, 83, 115, 1, 116, 117, 1, 1, 1, 15, 118, 1, 1, 0, 1, 1, 1, - 1, 119, 1, 1, 9, 0, 0, 16, 1, 81, 16, 1, 1, 120, 121, 96, - 1, 1, 1, 89, 122, 123, 104, 124, 125, 1, 80, 126, 16, 16, 0, 0, - 127, 1, 1, 128, 74, 27, 37, 0, 0, 1, 1, 16, 1, 37, 1, 27, - 10, 1, 1, 10, 129, 33, 0, 0, 1, 16, 81, 0, 1, 1, 9, 1, - 1, 1, 109, 0, 1, 33, 9, 0, 130, 1, 1, 131, 1, 132, 1, 1, - 1, 2, 107, 0, 1, 133, 1, 134, 1, 1, 1, 135, 136, 137, 1, 138, - 9, 82, 1, 1, 1, 1, 0, 0, 1, 1, 114, 83, 1, 1, 1, 59, - 1, 100, 1, 139, 1, 140, 141, 0, 82, 0, 0, 0, 0, 0, 1, 2, - 16, 119, 1, 142, 15, 1, 82, 81, 84, 1, 1, 83, 143, 10, 6, 11, - 1, 5, 1, 16, 0, 0, 0, 1, 1, 1, 10, 81, 39, 144, 145, 11, - 9, 81, 0, 0, 1, 1, 1, 100, 81, 0, 0, 0, 11, 81, 0, 0, - 1, 1, 1, 146, 1, 82, 0, 0, 1, 1, 2, 11, 1, 1, 2, 0, - 1, 2, 44, 0, 0, 1, 16, 33, 33, 105, 5, 147, 1, 0, 0, 0, - 11, 1, 1, 2, 142, 1, 0, 0, 15, 0, 0, 0, 1, 1, 10, 74, - 82, 72, 84, 0, 1, 1, 7, 1, 1, 16, 0, 0, 33, 0, 0, 0, - 1, 83, 1, 15, 1, 96, 1, 1, 1, 12, 148, 149, 150, 1, 1, 1, - 151, 152, 1, 153, 154, 48, 1, 1, 1, 1, 100, 1, 88, 1, 1, 1, - 155, 83, 0, 0, 150, 1, 156, 157, 158, 159, 160, 161, 105, 27, 162, 27, - 0, 0, 0, 15, 1, 84, 2, 6, 6, 6, 1, 33, 74, 1, 2, 1, - 1, 10, 0, 0, 0, 0, 32, 1, 18, 1, 1, 10, 82, 15, 0, 0, - 1, 1, 74, 1, 1, 1, 1, 16, 2, 19, 1, 9, 10, 1, 1, 105, - 1, 1, 150, 1, 163, 1, 1, 1, 1, 0, 74, 84, 1, 11, 0, 0, - 27, 1, 1, 1, 9, 81, 1, 1, 9, 1, 16, 0, 1, 83, 0, 0, - 164, 0, 1, 1, 1, 1, 1, 0, + 1, 119, 1, 1, 9, 0, 0, 16, 1, 120, 121, 95, 1, 1, 1, 89, + 122, 123, 104, 124, 125, 1, 79, 126, 16, 16, 0, 0, 127, 1, 1, 128, + 2, 27, 37, 0, 0, 1, 1, 16, 1, 37, 1, 27, 10, 1, 1, 10, + 1, 13, 1, 1, 129, 33, 0, 0, 1, 16, 80, 1, 1, 129, 1, 27, + 1, 1, 9, 1, 1, 1, 109, 0, 1, 33, 9, 0, 130, 1, 1, 131, + 1, 132, 1, 1, 1, 2, 107, 0, 0, 0, 1, 133, 1, 134, 1, 135, + 1, 1, 1, 136, 137, 138, 1, 139, 9, 82, 1, 1, 1, 1, 0, 0, + 1, 1, 114, 83, 1, 1, 1, 140, 1, 99, 1, 141, 1, 142, 143, 0, + 1, 1, 1, 110, 1, 1, 1, 144, 0, 0, 1, 2, 16, 119, 1, 145, + 15, 1, 82, 80, 84, 1, 1, 83, 16, 1, 6, 11, 1, 5, 1, 2, + 146, 13, 80, 1, 1, 1, 10, 80, 20, 21, 22, 35, 40, 147, 148, 11, + 1, 149, 0, 0, 9, 80, 0, 0, 1, 1, 1, 99, 1, 16, 0, 0, + 11, 80, 73, 0, 80, 0, 0, 0, 1, 50, 27, 1, 1, 1, 1, 150, + 22, 1, 1, 79, 33, 1, 73, 1, 1, 119, 72, 83, 1, 1, 2, 11, + 84, 0, 0, 0, 1, 1, 2, 0, 83, 0, 0, 0, 1, 2, 45, 0, + 0, 1, 16, 33, 33, 105, 5, 151, 1, 0, 0, 0, 11, 1, 1, 2, + 145, 1, 0, 0, 0, 0, 37, 0, 1, 1, 73, 0, 15, 0, 0, 0, + 1, 1, 10, 73, 82, 71, 84, 0, 1, 1, 7, 1, 1, 1, 82, 0, + 33, 0, 0, 0, 1, 83, 1, 15, 1, 95, 1, 1, 1, 12, 152, 153, + 154, 1, 1, 1, 155, 156, 1, 157, 158, 49, 1, 1, 1, 1, 99, 1, + 88, 1, 1, 1, 27, 111, 6, 0, 79, 159, 160, 0, 161, 83, 0, 0, + 10, 45, 0, 0, 154, 1, 162, 163, 164, 165, 166, 167, 105, 27, 168, 27, + 0, 0, 0, 15, 1, 84, 2, 6, 6, 6, 1, 33, 73, 1, 2, 1, + 0, 0, 32, 1, 110, 1, 1, 27, 82, 15, 0, 0, 1, 110, 73, 83, + 1, 11, 0, 0, 9, 80, 1, 1, 9, 1, 16, 0, 0, 2, 9, 169, + 27, 2, 0, 0, 1, 15, 0, 0, 37, 0, 0, 0, 1, 83, 0, 0, + 1, 1, 1, 11, 1, 16, 1, 1, 1, 1, 15, 0, 170, 0, 1, 1, + 1, 1, 1, 0, 1, 1, 1, 16, }; static RE_UINT8 re_print_stage_5[] = { 0, 0, 255, 255, 255, 127, 255, 252, 240, 215, 251, 255, 254, 255, 127, 254, 255, 230, 255, 0, 255, 7, 31, 0, 255, 223, 255, 191, 255, 231, 3, 0, - 255, 63, 255, 79, 7, 0, 240, 255, 239, 159, 249, 255, 255, 253, 197, 243, + 255, 63, 255, 79, 223, 63, 240, 255, 239, 159, 249, 255, 255, 253, 197, 243, 159, 121, 128, 176, 207, 255, 255, 15, 238, 135, 109, 211, 135, 57, 2, 94, - 192, 255, 63, 0, 238, 191, 237, 243, 191, 59, 1, 0, 238, 159, 159, 57, - 192, 176, 236, 199, 61, 214, 24, 199, 255, 195, 199, 61, 129, 0, 239, 223, - 253, 255, 255, 227, 223, 61, 96, 3, 0, 255, 238, 223, 239, 243, 96, 64, - 6, 0, 223, 125, 128, 0, 63, 254, 236, 255, 127, 252, 251, 47, 127, 132, - 95, 255, 28, 0, 255, 135, 150, 37, 240, 254, 174, 236, 255, 59, 95, 63, - 255, 243, 255, 254, 255, 31, 191, 32, 255, 61, 127, 61, 61, 127, 61, 255, - 127, 255, 255, 3, 255, 1, 127, 0, 15, 0, 13, 0, 241, 255, 255, 199, - 255, 207, 255, 159, 15, 240, 255, 248, 127, 3, 63, 240, 63, 63, 255, 170, - 223, 255, 207, 239, 220, 127, 243, 255, 63, 255, 15, 254, 255, 128, 1, 128, - 127, 127, 255, 251, 224, 255, 128, 255, 31, 192, 15, 128, 0, 248, 126, 126, - 126, 0, 48, 0, 127, 248, 248, 224, 127, 95, 219, 255, 248, 255, 252, 255, + 192, 255, 63, 0, 238, 191, 237, 243, 191, 59, 1, 0, 3, 2, 238, 159, + 159, 57, 192, 176, 236, 199, 61, 214, 24, 199, 255, 195, 199, 61, 129, 0, + 239, 223, 253, 255, 255, 227, 223, 61, 96, 7, 0, 255, 239, 243, 96, 64, + 6, 0, 238, 223, 223, 253, 236, 255, 127, 252, 251, 47, 127, 132, 95, 255, + 28, 0, 255, 135, 150, 37, 240, 254, 174, 236, 255, 59, 95, 63, 255, 243, + 255, 254, 255, 31, 191, 32, 255, 61, 127, 61, 61, 127, 61, 255, 127, 255, + 255, 3, 63, 63, 255, 1, 127, 0, 15, 0, 13, 0, 241, 255, 255, 199, + 255, 207, 255, 159, 15, 240, 255, 248, 127, 3, 63, 248, 255, 170, 223, 255, + 207, 239, 220, 127, 243, 255, 63, 255, 0, 240, 15, 254, 255, 128, 1, 128, + 127, 127, 255, 251, 224, 255, 128, 255, 63, 192, 15, 128, 7, 0, 0, 248, + 126, 126, 126, 0, 127, 248, 248, 224, 127, 95, 219, 255, 248, 255, 252, 255, 247, 255, 127, 15, 252, 252, 252, 28, 0, 62, 255, 239, 255, 183, 135, 255, - 143, 255, 15, 255, 63, 253, 191, 145, 191, 255, 255, 143, 255, 131, 255, 192, - 111, 240, 239, 254, 15, 135, 7, 255, 3, 30, 0, 254, 0, 128, 255, 33, - 128, 224, 207, 31, 7, 128, 255, 224, 100, 222, 255, 235, 239, 255, 191, 231, - 223, 223, 255, 123, 95, 252, 159, 255, 150, 254, 247, 10, 132, 234, 150, 170, - 150, 247, 247, 94, 238, 251, 231, 255, 2, 0, + 143, 255, 15, 255, 63, 253, 191, 145, 191, 255, 55, 248, 255, 143, 255, 131, + 255, 240, 111, 240, 239, 254, 15, 135, 63, 254, 7, 255, 3, 30, 0, 254, + 7, 252, 0, 128, 127, 189, 129, 224, 207, 31, 255, 43, 7, 128, 255, 224, + 100, 222, 255, 235, 239, 255, 191, 231, 223, 223, 255, 123, 95, 252, 255, 249, + 219, 7, 159, 255, 150, 254, 247, 10, 132, 234, 150, 170, 150, 247, 247, 94, + 238, 251, 249, 127, 2, 0, }; -/* Print: 2234 bytes. */ +/* Print: 2414 bytes. */ RE_UINT32 re_get_print(RE_UINT32 ch) { RE_UINT32 code; @@ -12280,31 +13012,34 @@ static RE_UINT8 re_word_stage_1[] = { static RE_UINT8 re_word_stage_2[] = { 0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, 10, 11, 7, 7, 7, 7, 12, 13, 13, 13, 13, 14, - 15, 16, 17, 18, 19, 13, 20, 13, 13, 13, 13, 13, 13, 21, 13, 13, - 13, 13, 13, 13, 13, 13, 22, 23, 13, 13, 24, 13, 13, 25, 26, 13, + 15, 16, 17, 18, 19, 13, 20, 13, 21, 13, 13, 13, 13, 22, 7, 7, + 23, 24, 13, 13, 13, 13, 25, 26, 13, 13, 27, 28, 29, 30, 31, 13, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 27, 7, 28, 29, 13, 13, 13, 13, 13, 13, 13, 30, + 7, 7, 7, 7, 32, 7, 33, 34, 7, 35, 13, 13, 13, 13, 13, 36, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 31, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 37, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, }; static RE_UINT8 re_word_stage_3[] = { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 1, 17, 18, 19, 1, 20, 21, 22, 23, 24, 25, 26, 27, 1, 28, - 29, 30, 31, 31, 32, 31, 31, 31, 31, 31, 31, 31, 33, 34, 35, 31, - 36, 37, 31, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 38, 1, 1, 1, 1, 1, 1, 1, 1, 1, 39, - 1, 1, 1, 1, 40, 1, 41, 42, 43, 44, 45, 46, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 47, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 1, 48, 49, 1, 50, 51, 52, 53, 54, 55, 56, 57, 58, 1, 59, - 60, 61, 62, 63, 64, 31, 31, 31, 65, 66, 67, 68, 69, 70, 71, 31, - 72, 31, 73, 31, 31, 31, 31, 31, 1, 1, 1, 74, 75, 31, 31, 31, - 1, 1, 1, 1, 76, 31, 31, 31, 1, 1, 77, 78, 31, 31, 31, 79, - 80, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 81, 31, 31, 31, - 31, 82, 83, 31, 84, 85, 86, 87, 88, 31, 31, 31, 31, 31, 89, 31, - 31, 90, 31, 31, 31, 31, 31, 31, 1, 1, 1, 1, 1, 1, 91, 1, - 1, 1, 1, 1, 1, 1, 1, 92, 93, 31, 31, 31, 31, 31, 31, 31, - 1, 1, 93, 31, 31, 31, 31, 31, 31, 94, 31, 31, 31, 31, 31, 31, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 1, 17, 18, 19, 1, 20, 21, 22, 23, 24, 25, 26, 27, 1, 28, + 29, 30, 31, 31, 32, 31, 31, 31, 31, 31, 31, 31, 33, 34, 35, 31, + 36, 37, 31, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 38, 1, 1, 1, 1, 1, 1, 1, 1, 1, 39, + 1, 1, 1, 1, 40, 1, 41, 42, 43, 44, 45, 46, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 47, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 1, 48, 49, 1, 50, 51, 52, 53, 54, 55, 56, 57, 58, 1, 59, + 60, 61, 62, 63, 64, 31, 31, 31, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 31, 74, 31, 75, 31, 31, 31, 1, 1, 1, 76, 77, 78, 31, 31, + 1, 1, 1, 1, 79, 31, 31, 31, 31, 31, 31, 31, 1, 1, 80, 31, + 1, 1, 81, 82, 31, 31, 31, 83, 1, 1, 1, 1, 1, 1, 1, 84, + 1, 1, 85, 31, 31, 31, 31, 31, 86, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 87, 31, 31, 31, 31, 88, 89, 31, 90, 91, 92, 93, + 31, 31, 94, 31, 31, 31, 31, 31, 95, 31, 31, 31, 31, 31, 31, 31, + 96, 97, 31, 31, 31, 31, 98, 31, 31, 99, 31, 31, 31, 31, 31, 31, + 1, 1, 1, 1, 1, 1, 100, 1, 1, 1, 1, 1, 1, 1, 1, 101, + 102, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 103, 31, + 1, 1, 104, 31, 31, 31, 31, 31, 31, 105, 31, 31, 31, 31, 31, 31, }; static RE_UINT8 re_word_stage_4[] = { @@ -12312,50 +13047,55 @@ static RE_UINT8 re_word_stage_4[] = { 6, 6, 6, 6, 6, 6, 7, 8, 6, 6, 6, 9, 10, 11, 6, 12, 6, 6, 6, 6, 11, 6, 6, 6, 6, 13, 14, 15, 16, 17, 18, 19, 20, 6, 6, 21, 6, 6, 22, 23, 24, 6, 25, 6, 6, 26, 6, 27, - 6, 28, 29, 0, 0, 30, 0, 31, 6, 6, 6, 32, 33, 34, 35, 36, + 6, 28, 29, 0, 0, 30, 31, 11, 6, 6, 6, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 42, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 44, 55, 56, 57, 58, 55, 59, 60, 61, 62, 63, 64, 65, - 15, 66, 67, 0, 68, 69, 70, 0, 71, 72, 73, 74, 75, 76, 77, 0, - 6, 6, 78, 6, 79, 6, 80, 81, 6, 6, 82, 6, 83, 84, 85, 6, - 86, 6, 59, 0, 87, 6, 6, 88, 15, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 89, 3, 6, 6, 90, 91, 88, 92, 93, 6, 6, 94, 95, - 96, 6, 6, 97, 6, 98, 6, 99, 100, 101, 102, 103, 6, 104, 105, 0, - 29, 6, 100, 106, 105, 107, 0, 0, 6, 6, 108, 109, 6, 6, 6, 92, - 6, 97, 110, 79, 0, 0, 111, 112, 6, 6, 6, 6, 6, 6, 6, 113, - 114, 6, 115, 79, 6, 116, 117, 118, 119, 120, 121, 122, 123, 0, 24, 124, - 125, 126, 127, 6, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 129, 6, 95, 6, 130, 100, 6, 6, 6, 6, 131, - 6, 80, 6, 132, 133, 134, 134, 6, 0, 135, 0, 0, 0, 0, 0, 0, - 136, 137, 15, 6, 138, 15, 6, 81, 139, 140, 6, 6, 141, 66, 0, 24, - 6, 6, 6, 6, 6, 99, 0, 0, 6, 6, 6, 6, 6, 6, 142, 0, - 6, 6, 6, 6, 142, 0, 24, 79, 143, 144, 6, 145, 17, 6, 6, 26, - 146, 147, 6, 6, 148, 149, 0, 146, 6, 150, 6, 92, 6, 6, 151, 152, - 6, 153, 92, 76, 6, 6, 154, 100, 6, 133, 155, 156, 6, 6, 157, 158, - 159, 160, 81, 161, 0, 0, 6, 162, 6, 6, 6, 6, 6, 163, 164, 29, - 6, 6, 6, 153, 6, 6, 165, 0, 166, 167, 168, 6, 6, 26, 169, 6, - 6, 79, 24, 6, 170, 6, 150, 171, 87, 172, 173, 174, 6, 6, 6, 76, - 1, 2, 3, 102, 6, 100, 175, 0, 176, 177, 178, 0, 6, 6, 6, 66, - 0, 0, 6, 88, 0, 0, 0, 179, 0, 0, 0, 0, 76, 6, 124, 180, - 6, 24, 98, 66, 79, 6, 181, 0, 6, 6, 6, 6, 79, 95, 0, 0, - 6, 182, 6, 183, 0, 0, 0, 0, 6, 133, 99, 150, 0, 0, 0, 0, - 184, 185, 99, 133, 100, 0, 0, 0, 99, 165, 0, 0, 6, 186, 0, 0, - 187, 188, 0, 76, 76, 0, 73, 189, 6, 99, 99, 30, 26, 0, 0, 0, - 6, 6, 128, 0, 0, 0, 0, 0, 6, 6, 189, 190, 6, 66, 24, 191, - 6, 192, 24, 193, 6, 6, 194, 0, 195, 97, 0, 0, 0, 24, 6, 196, - 45, 42, 197, 198, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 199, 0, - 0, 0, 0, 0, 6, 200, 180, 0, 6, 6, 201, 0, 6, 97, 95, 0, - 0, 0, 0, 0, 0, 6, 6, 202, 0, 0, 0, 0, 0, 0, 6, 203, - 6, 6, 6, 6, 203, 0, 0, 0, 6, 6, 6, 141, 0, 0, 0, 0, - 6, 141, 0, 0, 0, 0, 0, 0, 6, 203, 100, 95, 0, 0, 24, 103, - 6, 133, 204, 205, 87, 0, 0, 0, 6, 6, 206, 100, 207, 0, 0, 0, - 208, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 209, 210, 0, 0, 0, - 0, 0, 0, 211, 212, 213, 0, 0, 0, 0, 214, 0, 0, 0, 0, 0, - 6, 6, 192, 6, 215, 216, 217, 6, 218, 219, 220, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 221, 222, 81, 192, 192, 130, 130, 223, 223, 224, 6, - 6, 6, 6, 6, 6, 6, 225, 0, 217, 226, 227, 228, 229, 230, 0, 0, - 0, 24, 78, 78, 95, 0, 0, 0, 6, 6, 6, 6, 6, 6, 133, 0, - 6, 88, 6, 6, 6, 6, 6, 6, 79, 0, 0, 0, 0, 0, 0, 0, - 6, 6, 6, 6, 6, 6, 6, 87, + 52, 53, 54, 55, 52, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 15, 67, 68, 0, 69, 70, 71, 0, 72, 73, 74, 75, 76, 77, 78, 0, + 6, 6, 79, 6, 80, 6, 81, 82, 6, 6, 83, 6, 84, 85, 86, 6, + 87, 6, 60, 0, 88, 6, 6, 89, 15, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 90, 3, 6, 6, 91, 92, 93, 94, 95, 6, 6, 96, 97, + 98, 6, 6, 99, 6, 100, 6, 101, 102, 103, 104, 105, 6, 106, 107, 0, + 29, 6, 102, 108, 107, 109, 0, 0, 6, 6, 110, 111, 6, 6, 6, 94, + 6, 99, 112, 80, 113, 0, 114, 115, 6, 6, 6, 6, 6, 6, 6, 116, + 89, 6, 117, 80, 6, 118, 119, 120, 121, 122, 123, 124, 125, 0, 24, 126, + 127, 128, 129, 6, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 130, 6, 97, 6, 131, 102, 6, 6, 6, 6, 132, + 6, 81, 6, 133, 134, 135, 135, 6, 0, 136, 0, 0, 0, 0, 0, 0, + 137, 138, 15, 6, 139, 15, 6, 82, 140, 141, 6, 6, 142, 67, 0, 24, + 6, 6, 6, 6, 6, 101, 0, 0, 6, 6, 6, 6, 6, 6, 101, 0, + 6, 6, 6, 6, 143, 0, 24, 80, 144, 145, 6, 146, 6, 6, 6, 26, + 147, 148, 6, 6, 149, 150, 0, 147, 6, 151, 6, 94, 6, 6, 152, 153, + 6, 154, 94, 77, 6, 6, 155, 102, 6, 134, 156, 157, 6, 6, 158, 159, + 160, 161, 82, 162, 6, 6, 6, 163, 6, 6, 6, 6, 6, 164, 165, 29, + 6, 6, 6, 154, 6, 6, 166, 0, 167, 168, 169, 6, 6, 26, 170, 6, + 6, 80, 24, 6, 171, 6, 151, 172, 88, 173, 174, 175, 6, 6, 6, 77, + 1, 2, 3, 104, 6, 102, 176, 0, 177, 178, 179, 0, 6, 6, 6, 67, + 0, 0, 6, 93, 0, 0, 0, 180, 0, 0, 0, 0, 77, 6, 126, 181, + 6, 24, 100, 67, 80, 6, 182, 0, 6, 6, 6, 6, 80, 79, 183, 29, + 6, 184, 6, 185, 0, 0, 0, 0, 6, 134, 101, 151, 0, 0, 0, 0, + 186, 187, 101, 134, 102, 0, 0, 188, 101, 166, 0, 0, 6, 189, 0, 0, + 190, 191, 0, 77, 77, 0, 74, 192, 6, 101, 101, 193, 26, 0, 0, 0, + 6, 6, 113, 0, 6, 193, 6, 193, 6, 6, 192, 194, 6, 67, 24, 195, + 6, 196, 24, 197, 6, 6, 198, 0, 199, 200, 0, 0, 201, 202, 6, 203, + 33, 42, 204, 205, 0, 0, 0, 0, 6, 6, 203, 0, 6, 6, 206, 0, + 0, 0, 0, 0, 6, 207, 208, 0, 6, 6, 209, 0, 6, 99, 97, 0, + 210, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 211, + 0, 0, 0, 0, 0, 0, 6, 212, 213, 5, 214, 215, 171, 216, 0, 0, + 6, 6, 6, 6, 166, 0, 0, 0, 6, 6, 6, 142, 6, 6, 6, 6, + 6, 6, 185, 0, 0, 0, 0, 0, 6, 142, 0, 0, 0, 0, 0, 0, + 6, 6, 192, 0, 0, 0, 0, 0, 6, 212, 102, 97, 0, 0, 24, 105, + 6, 134, 217, 218, 88, 0, 0, 0, 6, 6, 219, 102, 220, 0, 0, 181, + 6, 6, 6, 6, 6, 6, 6, 143, 6, 6, 6, 6, 6, 6, 6, 193, + 221, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 222, 223, 0, 0, 0, + 0, 0, 0, 224, 225, 226, 0, 0, 0, 0, 227, 0, 0, 0, 0, 0, + 6, 6, 196, 6, 228, 229, 230, 6, 231, 232, 233, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 234, 235, 82, 196, 196, 131, 131, 213, 213, 236, 6, + 6, 237, 6, 238, 239, 240, 0, 0, 241, 242, 0, 0, 0, 0, 0, 0, + 6, 6, 6, 6, 6, 6, 243, 0, 6, 6, 203, 0, 0, 0, 0, 0, + 230, 244, 245, 246, 247, 248, 0, 0, 0, 24, 79, 79, 97, 0, 0, 0, + 6, 6, 6, 6, 6, 6, 134, 0, 6, 93, 6, 6, 6, 6, 6, 6, + 80, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 221, 0, 0, + 80, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 6, 6, 88, }; static RE_UINT8 re_word_stage_5[] = { @@ -12366,60 +13106,65 @@ static RE_UINT8 re_word_stage_5[] = { 255, 0, 254, 255, 255, 255, 255, 191, 182, 0, 255, 255, 255, 7, 7, 0, 0, 0, 255, 7, 255, 195, 255, 255, 255, 255, 239, 159, 255, 253, 255, 159, 0, 0, 255, 255, 255, 231, 255, 255, 255, 255, 3, 0, 255, 255, 63, 4, - 255, 63, 0, 0, 255, 255, 255, 15, 255, 255, 7, 0, 240, 255, 255, 255, + 255, 63, 0, 0, 255, 255, 255, 15, 255, 255, 223, 63, 0, 0, 240, 255, 207, 255, 254, 255, 239, 159, 249, 255, 255, 253, 197, 243, 159, 121, 128, 176, 207, 255, 3, 0, 238, 135, 249, 255, 255, 253, 109, 211, 135, 57, 2, 94, 192, 255, 63, 0, 238, 191, 251, 255, 255, 253, 237, 243, 191, 59, 1, 0, - 207, 255, 0, 0, 238, 159, 249, 255, 159, 57, 192, 176, 207, 255, 2, 0, + 207, 255, 0, 2, 238, 159, 249, 255, 159, 57, 192, 176, 207, 255, 2, 0, 236, 199, 61, 214, 24, 199, 255, 195, 199, 61, 129, 0, 192, 255, 0, 0, - 239, 223, 253, 255, 255, 253, 255, 227, 223, 61, 96, 3, 238, 223, 253, 255, - 255, 253, 239, 243, 223, 61, 96, 64, 207, 255, 6, 0, 255, 255, 255, 231, - 223, 125, 128, 0, 207, 255, 0, 252, 236, 255, 127, 252, 255, 255, 251, 47, - 127, 132, 95, 255, 192, 255, 12, 0, 255, 255, 255, 7, 255, 127, 255, 3, - 150, 37, 240, 254, 174, 236, 255, 59, 95, 63, 255, 243, 1, 0, 0, 3, - 255, 3, 160, 194, 255, 254, 255, 255, 255, 31, 254, 255, 223, 255, 255, 254, - 255, 255, 255, 31, 64, 0, 0, 0, 255, 3, 255, 255, 255, 255, 255, 63, - 191, 32, 255, 255, 255, 255, 255, 247, 255, 61, 127, 61, 255, 61, 255, 255, - 255, 255, 61, 127, 61, 255, 127, 255, 255, 255, 61, 255, 255, 255, 0, 0, - 255, 255, 31, 0, 255, 159, 255, 255, 255, 199, 255, 1, 255, 223, 31, 0, - 255, 255, 15, 0, 255, 223, 13, 0, 255, 255, 143, 48, 255, 3, 0, 0, - 0, 56, 255, 3, 255, 255, 255, 0, 255, 7, 255, 255, 255, 255, 63, 0, - 255, 255, 255, 127, 255, 15, 255, 15, 192, 255, 255, 255, 255, 63, 31, 0, - 255, 15, 255, 255, 255, 3, 255, 3, 255, 255, 255, 159, 128, 0, 255, 127, - 255, 15, 255, 3, 0, 248, 15, 0, 255, 227, 255, 255, 0, 0, 247, 255, - 255, 255, 127, 3, 255, 255, 63, 240, 255, 255, 63, 63, 63, 63, 255, 170, - 255, 255, 223, 95, 220, 31, 207, 15, 255, 31, 220, 31, 0, 48, 0, 0, - 0, 0, 0, 128, 1, 0, 16, 0, 0, 0, 2, 128, 0, 0, 255, 31, - 255, 255, 1, 0, 132, 252, 47, 62, 80, 189, 255, 243, 224, 67, 0, 0, - 255, 1, 0, 0, 0, 0, 192, 255, 255, 127, 255, 255, 31, 248, 15, 0, - 255, 128, 0, 128, 255, 255, 127, 0, 127, 127, 127, 127, 0, 128, 0, 0, - 224, 0, 0, 0, 254, 255, 62, 31, 255, 255, 127, 230, 224, 255, 255, 255, - 255, 63, 254, 255, 255, 127, 0, 0, 255, 31, 0, 0, 255, 31, 255, 255, - 255, 15, 0, 0, 255, 255, 247, 191, 0, 0, 128, 255, 252, 255, 255, 255, - 255, 121, 255, 255, 255, 63, 3, 0, 255, 0, 0, 0, 31, 0, 255, 3, - 255, 255, 255, 8, 255, 63, 255, 255, 1, 128, 255, 3, 255, 63, 255, 3, - 255, 255, 127, 252, 7, 0, 0, 56, 255, 255, 124, 0, 126, 126, 126, 0, - 127, 127, 255, 255, 48, 0, 0, 0, 255, 55, 255, 3, 15, 0, 255, 255, - 127, 248, 255, 255, 255, 255, 255, 3, 127, 0, 248, 224, 255, 253, 127, 95, - 219, 255, 255, 255, 0, 0, 248, 255, 255, 255, 252, 255, 0, 0, 255, 15, - 255, 63, 24, 0, 0, 224, 0, 0, 0, 0, 223, 255, 252, 252, 252, 28, - 255, 239, 255, 255, 127, 255, 255, 183, 255, 63, 255, 63, 0, 0, 0, 32, - 1, 0, 0, 0, 15, 255, 62, 0, 255, 0, 255, 255, 15, 0, 0, 0, - 63, 253, 255, 255, 255, 255, 191, 145, 255, 255, 255, 192, 111, 240, 239, 254, - 255, 255, 15, 135, 127, 0, 0, 0, 192, 255, 0, 128, 255, 1, 255, 3, - 255, 255, 223, 255, 255, 255, 79, 0, 31, 0, 255, 7, 255, 255, 251, 255, - 255, 7, 255, 3, 159, 57, 128, 224, 207, 31, 31, 0, 191, 0, 255, 3, - 255, 255, 63, 255, 17, 0, 255, 3, 255, 3, 0, 128, 255, 255, 255, 1, - 15, 0, 255, 3, 248, 255, 255, 224, 31, 0, 255, 255, 0, 128, 255, 255, - 3, 0, 0, 0, 255, 7, 255, 31, 255, 1, 255, 99, 224, 227, 7, 248, - 231, 15, 0, 0, 0, 60, 0, 0, 28, 0, 0, 0, 255, 255, 255, 223, - 100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123, - 95, 252, 253, 255, 63, 255, 255, 255, 253, 255, 255, 247, 255, 253, 255, 255, - 247, 207, 255, 255, 31, 0, 127, 0, 150, 254, 247, 10, 132, 234, 150, 170, - 150, 247, 247, 94, 255, 251, 255, 15, 238, 251, 255, 15, + 239, 223, 253, 255, 255, 253, 255, 227, 223, 61, 96, 7, 207, 255, 0, 0, + 255, 253, 239, 243, 223, 61, 96, 64, 207, 255, 6, 0, 238, 223, 253, 255, + 255, 255, 255, 231, 223, 125, 240, 128, 207, 255, 0, 252, 236, 255, 127, 252, + 255, 255, 251, 47, 127, 132, 95, 255, 192, 255, 12, 0, 255, 255, 255, 7, + 255, 127, 255, 3, 150, 37, 240, 254, 174, 236, 255, 59, 95, 63, 255, 243, + 1, 0, 0, 3, 255, 3, 160, 194, 255, 254, 255, 255, 255, 31, 254, 255, + 223, 255, 255, 254, 255, 255, 255, 31, 64, 0, 0, 0, 255, 3, 255, 255, + 255, 255, 255, 63, 191, 32, 255, 255, 255, 255, 255, 247, 255, 61, 127, 61, + 255, 61, 255, 255, 255, 255, 61, 127, 61, 255, 127, 255, 255, 255, 61, 255, + 255, 255, 0, 0, 255, 255, 63, 63, 255, 159, 255, 255, 255, 199, 255, 1, + 255, 223, 31, 0, 255, 255, 31, 0, 255, 255, 15, 0, 255, 223, 13, 0, + 255, 255, 143, 48, 255, 3, 0, 0, 0, 56, 255, 3, 255, 255, 255, 0, + 255, 7, 255, 255, 255, 255, 63, 0, 255, 255, 255, 127, 255, 15, 255, 15, + 192, 255, 255, 255, 255, 63, 31, 0, 255, 15, 255, 255, 255, 3, 255, 3, + 255, 255, 255, 159, 128, 0, 255, 127, 255, 15, 255, 3, 0, 248, 15, 0, + 255, 227, 255, 255, 255, 1, 0, 0, 0, 0, 247, 255, 255, 255, 127, 3, + 255, 255, 63, 248, 63, 63, 255, 170, 255, 255, 223, 95, 220, 31, 207, 15, + 255, 31, 220, 31, 0, 48, 0, 0, 0, 0, 0, 128, 1, 0, 16, 0, + 0, 0, 2, 128, 0, 0, 255, 31, 255, 255, 1, 0, 132, 252, 47, 62, + 80, 189, 255, 243, 224, 67, 0, 0, 0, 0, 192, 255, 255, 127, 255, 255, + 31, 248, 15, 0, 255, 128, 0, 128, 255, 255, 127, 0, 127, 127, 127, 127, + 0, 128, 0, 0, 224, 0, 0, 0, 254, 255, 62, 31, 255, 255, 127, 230, + 224, 255, 255, 255, 255, 63, 254, 255, 255, 127, 0, 0, 255, 31, 0, 0, + 255, 31, 255, 255, 255, 15, 0, 0, 255, 255, 247, 191, 0, 0, 128, 255, + 252, 255, 255, 255, 255, 249, 255, 255, 255, 127, 255, 0, 255, 0, 0, 0, + 63, 0, 255, 3, 255, 255, 255, 40, 255, 63, 255, 255, 1, 128, 255, 3, + 255, 63, 255, 3, 255, 255, 127, 252, 7, 0, 0, 56, 255, 255, 124, 0, + 126, 126, 126, 0, 127, 127, 255, 255, 63, 0, 255, 255, 255, 55, 255, 3, + 15, 0, 255, 255, 127, 248, 255, 255, 255, 255, 255, 3, 127, 0, 248, 224, + 255, 253, 127, 95, 219, 255, 255, 255, 0, 0, 248, 255, 255, 255, 252, 255, + 0, 0, 255, 15, 255, 255, 24, 0, 0, 224, 0, 0, 0, 0, 223, 255, + 252, 252, 252, 28, 255, 239, 255, 255, 127, 255, 255, 183, 255, 63, 255, 63, + 0, 0, 0, 32, 1, 0, 0, 0, 15, 255, 62, 0, 255, 255, 15, 255, + 255, 0, 255, 255, 15, 0, 0, 0, 63, 253, 255, 255, 255, 255, 191, 145, + 255, 255, 55, 0, 255, 255, 255, 192, 111, 240, 239, 254, 255, 255, 15, 135, + 127, 0, 0, 0, 255, 255, 7, 0, 192, 255, 0, 128, 255, 1, 255, 3, + 255, 255, 223, 255, 255, 255, 79, 0, 31, 28, 255, 23, 255, 255, 251, 255, + 255, 255, 255, 64, 127, 189, 255, 191, 255, 1, 255, 255, 255, 7, 255, 3, + 159, 57, 129, 224, 207, 31, 31, 0, 191, 0, 255, 3, 255, 255, 63, 255, + 1, 0, 0, 63, 17, 0, 255, 3, 255, 255, 255, 227, 255, 3, 0, 128, + 255, 255, 255, 1, 255, 253, 255, 255, 1, 0, 255, 3, 0, 0, 252, 255, + 255, 254, 127, 0, 15, 0, 255, 3, 248, 255, 255, 224, 31, 0, 255, 255, + 0, 128, 255, 255, 3, 0, 0, 0, 255, 7, 255, 31, 255, 1, 255, 99, + 224, 227, 7, 248, 231, 15, 0, 0, 0, 60, 0, 0, 28, 0, 0, 0, + 255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223, + 255, 255, 255, 123, 95, 252, 253, 255, 63, 255, 255, 255, 253, 255, 255, 247, + 247, 207, 255, 255, 255, 255, 127, 248, 255, 31, 32, 0, 16, 0, 0, 248, + 254, 255, 0, 0, 127, 255, 255, 249, 219, 7, 0, 0, 31, 0, 127, 0, + 150, 254, 247, 10, 132, 234, 150, 170, 150, 247, 247, 94, 255, 251, 255, 15, + 238, 251, 255, 15, }; -/* Word: 2102 bytes. */ +/* Word: 2310 bytes. */ RE_UINT32 re_get_word(RE_UINT32 ch) { RE_UINT32 code; @@ -12453,21 +13198,22 @@ static RE_UINT8 re_xdigit_stage_1[] = { }; static RE_UINT8 re_xdigit_stage_2[] = { - 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 4, - 5, 6, 2, 2, 2, 2, 7, 2, 2, 2, 2, 2, 2, 8, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 0, 1, 2, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 5, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 7, + 8, 4, 9, 10, 4, 4, 4, 4, 4, 4, 4, 4, 4, 11, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 12, 4, 4, 13, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, }; static RE_UINT8 re_xdigit_stage_3[] = { 0, 1, 1, 1, 1, 1, 2, 3, 1, 4, 4, 4, 4, 4, 5, 6, 7, 1, 1, 1, 1, 1, 1, 8, 9, 10, 11, 12, 13, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 6, 1, 14, 15, 16, 17, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, - 1, 1, 1, 1, 19, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 20, 21, 17, 1, 14, 1, 22, 1, 8, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 16, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 24, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 1, + 14, 15, 16, 17, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, + 1, 1, 1, 1, 19, 1, 1, 1, 20, 21, 17, 1, 5, 1, 22, 23, + 8, 1, 1, 1, 16, 1, 1, 1, 1, 1, 24, 16, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 25, 1, 16, 1, 1, 1, 1, 1, 1, }; static RE_UINT8 re_xdigit_stage_4[] = { @@ -12476,8 +13222,8 @@ static RE_UINT8 re_xdigit_stage_4[] = { 2, 2, 2, 3, 6, 2, 2, 2, 2, 7, 2, 6, 2, 2, 8, 2, 2, 6, 0, 2, 2, 8, 2, 2, 2, 2, 2, 6, 4, 2, 2, 9, 2, 6, 2, 2, 2, 2, 2, 0, 10, 11, 2, 2, 2, 2, 3, 2, - 2, 5, 2, 0, 12, 2, 2, 6, 2, 6, 2, 4, 2, 3, 2, 2, - 2, 2, 2, 13, + 2, 5, 2, 0, 12, 2, 2, 6, 2, 6, 2, 4, 0, 2, 2, 2, + 2, 3, 2, 2, 2, 2, 2, 13, }; static RE_UINT8 re_xdigit_stage_5[] = { @@ -12490,7 +13236,7 @@ static RE_UINT8 re_xdigit_stage_5[] = { 0, 0, 0, 0, 0, 0, 192, 255, 0, 192, 255, 255, 255, 255, 255, 255, }; -/* XDigit: 421 bytes. */ +/* XDigit: 441 bytes. */ RE_UINT32 re_get_xdigit(RE_UINT32 ch) { RE_UINT32 code; @@ -12500,10 +13246,10 @@ RE_UINT32 re_get_xdigit(RE_UINT32 ch) { f = ch >> 16; code = ch ^ (f << 16); - pos = (RE_UINT32)re_xdigit_stage_1[f] << 4; - f = code >> 12; - code ^= f << 12; - pos = (RE_UINT32)re_xdigit_stage_2[pos + f] << 4; + pos = (RE_UINT32)re_xdigit_stage_1[f] << 5; + f = code >> 11; + code ^= f << 11; + pos = (RE_UINT32)re_xdigit_stage_2[pos + f] << 3; f = code >> 8; code ^= f << 8; pos = (RE_UINT32)re_xdigit_stage_3[pos + f] << 2; @@ -12576,31 +13322,33 @@ static RE_UINT8 re_posix_alnum_stage_1[] = { static RE_UINT8 re_posix_alnum_stage_2[] = { 0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, 10, 11, 7, 7, 7, 7, 12, 13, 13, 13, 13, 14, - 15, 16, 17, 18, 19, 13, 20, 13, 13, 13, 13, 13, 13, 21, 13, 13, - 13, 13, 13, 13, 13, 13, 22, 23, 13, 13, 24, 13, 13, 25, 26, 13, + 15, 16, 17, 18, 19, 13, 20, 13, 21, 13, 13, 13, 13, 22, 7, 7, + 23, 24, 13, 13, 13, 13, 25, 26, 13, 13, 27, 13, 28, 29, 30, 13, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 27, 7, 28, 29, 13, 13, 13, 13, 13, 13, 13, 30, + 7, 7, 7, 7, 31, 7, 32, 33, 7, 34, 13, 13, 13, 13, 13, 35, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, }; static RE_UINT8 re_posix_alnum_stage_3[] = { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 1, 17, 18, 19, 1, 20, 21, 22, 23, 24, 25, 26, 27, 1, 28, - 29, 30, 31, 31, 32, 31, 31, 31, 31, 31, 31, 31, 33, 34, 35, 31, - 36, 37, 31, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 38, 1, 1, 1, 1, 1, 1, 1, 1, 1, 39, - 1, 1, 1, 1, 40, 1, 41, 42, 43, 44, 45, 46, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 47, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 1, 48, 49, 1, 50, 51, 52, 53, 54, 55, 56, 57, 58, 1, 59, - 60, 61, 62, 63, 64, 31, 31, 31, 65, 66, 67, 68, 69, 70, 71, 31, - 72, 31, 73, 31, 31, 31, 31, 31, 1, 1, 1, 74, 75, 31, 31, 31, - 1, 1, 1, 1, 76, 31, 31, 31, 1, 1, 77, 78, 31, 31, 31, 79, - 80, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 81, 31, 31, 31, - 31, 31, 31, 31, 82, 83, 84, 85, 86, 31, 31, 31, 31, 31, 87, 31, - 31, 88, 31, 31, 31, 31, 31, 31, 1, 1, 1, 1, 1, 1, 89, 1, - 1, 1, 1, 1, 1, 1, 1, 90, 91, 31, 31, 31, 31, 31, 31, 31, - 1, 1, 91, 31, 31, 31, 31, 31, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 1, 17, 18, 19, 1, 20, 21, 22, 23, 24, 25, 26, 27, 1, 28, + 29, 30, 31, 31, 32, 31, 31, 31, 31, 31, 31, 31, 33, 34, 35, 31, + 36, 37, 31, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 38, 1, 1, 1, 1, 1, 1, 1, 1, 1, 39, + 1, 1, 1, 1, 40, 1, 41, 42, 43, 44, 45, 46, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 47, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 1, 48, 49, 1, 50, 51, 52, 53, 54, 55, 56, 57, 58, 1, 59, + 60, 61, 62, 63, 64, 31, 31, 31, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 31, 74, 31, 75, 31, 31, 31, 1, 1, 1, 76, 77, 78, 31, 31, + 1, 1, 1, 1, 79, 31, 31, 31, 31, 31, 31, 31, 1, 1, 80, 31, + 1, 1, 81, 82, 31, 31, 31, 83, 1, 1, 1, 1, 1, 1, 1, 84, + 1, 1, 85, 31, 31, 31, 31, 31, 86, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 87, 31, 31, 31, 31, 31, 31, 31, 88, 89, 90, 91, + 92, 31, 31, 31, 31, 31, 31, 31, 93, 94, 31, 31, 31, 31, 95, 31, + 31, 96, 31, 31, 31, 31, 31, 31, 1, 1, 1, 1, 1, 1, 97, 1, + 1, 1, 1, 1, 1, 1, 1, 98, 99, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 100, 31, 1, 1, 101, 31, 31, 31, 31, 31, }; static RE_UINT8 re_posix_alnum_stage_4[] = { @@ -12608,48 +13356,53 @@ static RE_UINT8 re_posix_alnum_stage_4[] = { 5, 5, 5, 5, 5, 5, 6, 7, 0, 0, 8, 9, 10, 11, 5, 12, 5, 5, 5, 5, 13, 5, 5, 5, 5, 14, 15, 16, 17, 18, 19, 20, 21, 5, 22, 23, 5, 5, 24, 25, 26, 5, 27, 5, 5, 28, 29, 30, - 31, 32, 33, 0, 0, 34, 0, 35, 5, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 48, 52, 53, 54, 55, 56, 0, - 57, 58, 59, 50, 60, 61, 62, 63, 60, 64, 65, 66, 67, 68, 69, 70, - 16, 71, 72, 0, 73, 74, 75, 0, 76, 0, 77, 78, 79, 80, 0, 0, - 5, 81, 26, 82, 83, 5, 84, 85, 5, 5, 86, 5, 87, 88, 89, 5, - 90, 5, 91, 0, 92, 5, 5, 93, 16, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 94, 2, 5, 5, 95, 96, 97, 97, 98, 5, 99, 100, 0, - 0, 5, 5, 101, 5, 102, 5, 103, 104, 105, 26, 106, 5, 107, 108, 0, - 109, 5, 104, 110, 0, 111, 0, 0, 5, 112, 113, 0, 5, 114, 5, 115, - 5, 103, 116, 117, 0, 0, 0, 118, 5, 5, 5, 5, 5, 5, 0, 119, - 120, 5, 121, 117, 5, 122, 123, 124, 0, 0, 0, 125, 126, 0, 0, 0, - 127, 128, 129, 5, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 131, 5, 108, 5, 132, 104, 5, 5, 5, 5, 133, - 5, 84, 5, 134, 135, 136, 136, 5, 0, 137, 0, 0, 0, 0, 0, 0, - 138, 139, 16, 5, 140, 16, 5, 85, 141, 142, 5, 5, 143, 71, 0, 26, - 5, 5, 5, 5, 5, 103, 0, 0, 5, 5, 5, 5, 5, 5, 32, 0, - 5, 5, 5, 5, 32, 0, 26, 117, 144, 145, 5, 146, 147, 5, 5, 92, - 148, 149, 5, 5, 150, 151, 0, 148, 152, 17, 5, 97, 5, 5, 50, 153, - 29, 102, 34, 80, 5, 154, 137, 155, 5, 135, 156, 157, 5, 104, 158, 159, - 160, 161, 85, 162, 0, 0, 5, 163, 5, 5, 5, 5, 5, 164, 165, 109, - 5, 5, 5, 166, 5, 5, 167, 0, 168, 169, 170, 5, 5, 28, 171, 5, - 5, 117, 26, 5, 172, 5, 17, 173, 0, 0, 0, 174, 5, 5, 5, 80, - 0, 2, 2, 175, 5, 104, 176, 0, 177, 178, 179, 0, 5, 5, 5, 71, - 0, 0, 5, 93, 0, 0, 0, 0, 0, 0, 0, 0, 80, 5, 180, 0, - 5, 26, 102, 71, 117, 5, 181, 0, 5, 5, 5, 5, 117, 0, 0, 0, - 5, 182, 5, 50, 0, 0, 0, 0, 5, 135, 103, 17, 0, 0, 0, 0, - 183, 184, 103, 135, 104, 0, 0, 0, 103, 167, 0, 0, 5, 185, 0, 0, - 186, 97, 0, 80, 80, 0, 77, 187, 5, 103, 103, 34, 28, 0, 0, 0, - 5, 5, 130, 0, 0, 0, 0, 0, 5, 5, 188, 0, 149, 33, 26, 130, - 5, 34, 26, 189, 5, 5, 190, 0, 191, 192, 0, 0, 0, 26, 5, 130, - 51, 48, 193, 50, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 194, 0, - 0, 0, 0, 0, 5, 195, 0, 0, 5, 104, 196, 0, 5, 103, 0, 0, - 0, 0, 0, 0, 0, 5, 5, 197, 0, 0, 0, 0, 0, 0, 5, 33, - 5, 5, 5, 5, 33, 0, 0, 0, 5, 5, 5, 143, 0, 0, 0, 0, - 5, 143, 0, 0, 0, 0, 0, 0, 5, 33, 104, 0, 0, 0, 26, 156, - 5, 135, 50, 198, 92, 0, 0, 0, 5, 5, 199, 104, 171, 0, 0, 0, - 200, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 201, 202, 0, 0, 0, - 5, 5, 203, 5, 204, 205, 206, 5, 207, 208, 209, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 210, 211, 85, 203, 203, 132, 132, 212, 212, 213, 0, - 5, 5, 5, 5, 5, 5, 187, 0, 206, 214, 215, 216, 217, 218, 0, 0, - 0, 26, 219, 219, 108, 0, 0, 0, 5, 5, 5, 5, 5, 5, 135, 0, - 5, 93, 5, 5, 5, 5, 5, 5, 117, 0, 0, 0, 0, 0, 0, 0, + 31, 32, 33, 0, 0, 34, 35, 36, 5, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 49, 53, 54, 55, 56, 57, 0, + 58, 59, 60, 61, 58, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 16, 73, 74, 0, 75, 76, 77, 0, 78, 0, 79, 80, 81, 82, 0, 0, + 5, 83, 26, 84, 85, 5, 86, 87, 5, 5, 88, 5, 89, 90, 91, 5, + 92, 5, 93, 0, 94, 5, 5, 95, 16, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 96, 2, 5, 5, 97, 98, 99, 99, 100, 5, 101, 102, 0, + 0, 5, 5, 103, 5, 104, 5, 105, 106, 107, 26, 108, 5, 109, 110, 0, + 111, 5, 106, 112, 0, 113, 0, 0, 5, 114, 115, 0, 5, 116, 5, 117, + 5, 105, 118, 119, 120, 0, 0, 121, 5, 5, 5, 5, 5, 5, 0, 122, + 95, 5, 123, 119, 5, 124, 125, 126, 0, 0, 0, 127, 128, 0, 0, 0, + 129, 130, 131, 5, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 132, 5, 110, 5, 133, 106, 5, 5, 5, 5, 134, + 5, 86, 5, 135, 136, 137, 137, 5, 0, 138, 0, 0, 0, 0, 0, 0, + 139, 140, 16, 5, 141, 16, 5, 87, 142, 143, 5, 5, 144, 73, 0, 26, + 5, 5, 5, 5, 5, 105, 0, 0, 5, 5, 5, 5, 5, 5, 105, 0, + 5, 5, 5, 5, 32, 0, 26, 119, 145, 146, 5, 147, 5, 5, 5, 94, + 148, 149, 5, 5, 150, 151, 0, 148, 152, 17, 5, 99, 5, 5, 153, 154, + 29, 104, 155, 82, 5, 156, 138, 157, 5, 136, 158, 159, 5, 106, 160, 161, + 162, 163, 87, 164, 5, 5, 5, 165, 5, 5, 5, 5, 5, 166, 167, 111, + 5, 5, 5, 168, 5, 5, 169, 0, 170, 171, 172, 5, 5, 28, 173, 5, + 5, 119, 26, 5, 174, 5, 17, 175, 0, 0, 0, 176, 5, 5, 5, 82, + 0, 2, 2, 177, 5, 106, 178, 0, 179, 180, 181, 0, 5, 5, 5, 73, + 0, 0, 5, 182, 0, 0, 0, 0, 0, 0, 0, 0, 82, 5, 183, 0, + 5, 26, 104, 73, 119, 5, 184, 0, 5, 5, 5, 5, 119, 26, 185, 111, + 5, 186, 5, 61, 0, 0, 0, 0, 5, 136, 105, 17, 0, 0, 0, 0, + 187, 188, 105, 136, 106, 0, 0, 189, 105, 169, 0, 0, 5, 190, 0, 0, + 191, 99, 0, 82, 82, 0, 79, 192, 5, 105, 105, 155, 28, 0, 0, 0, + 5, 5, 120, 0, 5, 155, 5, 155, 5, 5, 193, 0, 149, 33, 26, 120, + 5, 155, 26, 194, 5, 5, 195, 0, 196, 197, 0, 0, 198, 199, 5, 120, + 40, 49, 200, 61, 0, 0, 0, 0, 5, 5, 201, 0, 5, 5, 202, 0, + 0, 0, 0, 0, 5, 203, 204, 0, 5, 106, 205, 0, 5, 105, 0, 0, + 206, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 207, + 0, 0, 0, 0, 0, 0, 5, 33, 208, 209, 78, 210, 174, 211, 0, 0, + 5, 5, 5, 5, 169, 0, 0, 0, 5, 5, 5, 144, 5, 5, 5, 5, + 5, 5, 61, 0, 0, 0, 0, 0, 5, 144, 0, 0, 0, 0, 0, 0, + 5, 5, 212, 0, 0, 0, 0, 0, 5, 33, 106, 0, 0, 0, 26, 158, + 5, 136, 61, 213, 94, 0, 0, 0, 5, 5, 214, 106, 173, 0, 0, 78, + 5, 5, 5, 5, 5, 5, 5, 32, 5, 5, 5, 5, 5, 5, 5, 155, + 215, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 216, 217, 0, 0, 0, + 5, 5, 218, 5, 219, 220, 221, 5, 222, 223, 224, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 225, 226, 87, 218, 218, 133, 133, 208, 208, 227, 0, + 228, 229, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 192, 0, + 5, 5, 230, 0, 0, 0, 0, 0, 221, 231, 232, 233, 234, 235, 0, 0, + 0, 26, 236, 236, 110, 0, 0, 0, 5, 5, 5, 5, 5, 5, 136, 0, + 5, 182, 5, 5, 5, 5, 5, 5, 119, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 215, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, }; static RE_UINT8 re_posix_alnum_stage_5[] = { @@ -12661,56 +13414,61 @@ static RE_UINT8 re_posix_alnum_stage_5[] = { 255, 7, 7, 0, 0, 0, 255, 7, 255, 255, 255, 254, 0, 192, 255, 255, 255, 255, 239, 31, 254, 225, 0, 156, 0, 0, 255, 255, 0, 224, 255, 255, 255, 255, 3, 0, 0, 252, 255, 255, 255, 7, 48, 4, 255, 255, 255, 252, - 255, 31, 0, 0, 255, 255, 255, 1, 255, 255, 7, 0, 240, 3, 255, 255, - 255, 255, 255, 239, 255, 223, 225, 255, 15, 0, 254, 255, 239, 159, 249, 255, - 255, 253, 197, 227, 159, 89, 128, 176, 15, 0, 3, 0, 238, 135, 249, 255, - 255, 253, 109, 195, 135, 25, 2, 94, 0, 0, 63, 0, 238, 191, 251, 255, - 255, 253, 237, 227, 191, 27, 1, 0, 15, 0, 0, 0, 238, 159, 249, 255, - 159, 25, 192, 176, 15, 0, 2, 0, 236, 199, 61, 214, 24, 199, 255, 195, - 199, 29, 129, 0, 239, 223, 253, 255, 255, 253, 255, 227, 223, 29, 96, 3, - 238, 223, 253, 255, 255, 253, 239, 227, 223, 29, 96, 64, 15, 0, 6, 0, - 255, 255, 255, 231, 223, 93, 128, 0, 15, 0, 0, 252, 236, 255, 127, 252, - 255, 255, 251, 47, 127, 128, 95, 255, 0, 0, 12, 0, 255, 255, 255, 7, - 127, 32, 0, 0, 150, 37, 240, 254, 174, 236, 255, 59, 95, 32, 0, 240, - 1, 0, 0, 0, 255, 254, 255, 255, 255, 31, 254, 255, 3, 255, 255, 254, - 255, 255, 255, 31, 255, 255, 127, 249, 231, 193, 255, 255, 127, 64, 0, 48, - 191, 32, 255, 255, 255, 255, 255, 247, 255, 61, 127, 61, 255, 61, 255, 255, - 255, 255, 61, 127, 61, 255, 127, 255, 255, 255, 61, 255, 255, 255, 255, 135, - 255, 255, 0, 0, 255, 255, 31, 0, 255, 159, 255, 255, 255, 199, 255, 1, - 255, 223, 15, 0, 255, 255, 15, 0, 255, 223, 13, 0, 255, 255, 207, 255, - 255, 1, 128, 16, 255, 255, 255, 0, 255, 7, 255, 255, 255, 255, 63, 0, - 255, 255, 255, 127, 255, 15, 255, 1, 255, 63, 31, 0, 255, 15, 255, 255, - 255, 3, 0, 0, 255, 255, 255, 15, 254, 255, 31, 0, 128, 0, 0, 0, - 255, 255, 239, 255, 239, 15, 0, 0, 255, 243, 0, 252, 191, 255, 3, 0, - 0, 224, 0, 252, 255, 255, 255, 63, 0, 222, 111, 0, 128, 255, 31, 0, - 255, 255, 63, 63, 63, 63, 255, 170, 255, 255, 223, 95, 220, 31, 207, 15, - 255, 31, 220, 31, 0, 0, 2, 128, 0, 0, 255, 31, 132, 252, 47, 62, - 80, 189, 255, 243, 224, 67, 0, 0, 255, 1, 0, 0, 0, 0, 192, 255, - 255, 127, 255, 255, 31, 120, 12, 0, 255, 128, 0, 0, 255, 255, 127, 0, - 127, 127, 127, 127, 0, 128, 0, 0, 224, 0, 0, 0, 254, 3, 62, 31, - 255, 255, 127, 224, 224, 255, 255, 255, 255, 63, 254, 255, 255, 127, 0, 0, - 255, 31, 255, 255, 0, 12, 0, 0, 255, 127, 240, 143, 255, 255, 255, 191, - 0, 0, 128, 255, 252, 255, 255, 255, 255, 121, 255, 255, 255, 63, 3, 0, - 187, 247, 255, 255, 0, 0, 252, 8, 255, 255, 247, 255, 223, 255, 0, 124, - 255, 63, 0, 0, 255, 255, 127, 196, 5, 0, 0, 56, 255, 255, 60, 0, - 126, 126, 126, 0, 127, 127, 255, 255, 48, 0, 0, 0, 255, 7, 0, 0, - 15, 0, 255, 255, 127, 248, 255, 255, 255, 63, 255, 255, 255, 255, 255, 3, - 127, 0, 248, 224, 255, 253, 127, 95, 219, 255, 255, 255, 0, 0, 248, 255, - 255, 255, 252, 255, 0, 0, 255, 15, 0, 0, 223, 255, 192, 255, 255, 255, - 252, 252, 252, 28, 255, 239, 255, 255, 127, 255, 255, 183, 255, 63, 255, 63, - 255, 255, 1, 0, 15, 255, 62, 0, 255, 0, 255, 255, 63, 253, 255, 255, - 255, 255, 191, 145, 255, 255, 255, 192, 111, 240, 239, 254, 31, 0, 0, 0, - 63, 0, 0, 0, 255, 255, 71, 0, 30, 0, 0, 4, 255, 255, 251, 255, - 255, 255, 159, 0, 159, 25, 128, 224, 179, 0, 0, 0, 255, 255, 63, 127, - 17, 0, 0, 0, 0, 0, 0, 128, 248, 255, 255, 224, 31, 0, 255, 255, - 3, 0, 0, 0, 255, 7, 255, 31, 255, 1, 255, 67, 255, 255, 223, 255, - 255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223, - 255, 255, 255, 123, 95, 252, 253, 255, 63, 255, 255, 255, 253, 255, 255, 247, - 255, 253, 255, 255, 247, 15, 0, 0, 150, 254, 247, 10, 132, 234, 150, 170, - 150, 247, 247, 94, 255, 251, 255, 15, 238, 251, 255, 15, 255, 3, 255, 255, + 255, 31, 0, 0, 255, 255, 255, 1, 255, 255, 223, 63, 0, 0, 240, 255, + 248, 3, 255, 255, 255, 255, 255, 239, 255, 223, 225, 255, 15, 0, 254, 255, + 239, 159, 249, 255, 255, 253, 197, 227, 159, 89, 128, 176, 15, 0, 3, 0, + 238, 135, 249, 255, 255, 253, 109, 195, 135, 25, 2, 94, 0, 0, 63, 0, + 238, 191, 251, 255, 255, 253, 237, 227, 191, 27, 1, 0, 15, 0, 0, 2, + 238, 159, 249, 255, 159, 25, 192, 176, 15, 0, 2, 0, 236, 199, 61, 214, + 24, 199, 255, 195, 199, 29, 129, 0, 239, 223, 253, 255, 255, 253, 255, 227, + 223, 29, 96, 7, 15, 0, 0, 0, 255, 253, 239, 227, 223, 29, 96, 64, + 15, 0, 6, 0, 238, 223, 253, 255, 255, 255, 255, 231, 223, 93, 240, 128, + 15, 0, 0, 252, 236, 255, 127, 252, 255, 255, 251, 47, 127, 128, 95, 255, + 0, 0, 12, 0, 255, 255, 255, 7, 127, 32, 0, 0, 150, 37, 240, 254, + 174, 236, 255, 59, 95, 32, 0, 240, 1, 0, 0, 0, 255, 254, 255, 255, + 255, 31, 254, 255, 3, 255, 255, 254, 255, 255, 255, 31, 255, 255, 127, 249, + 231, 193, 255, 255, 127, 64, 0, 48, 191, 32, 255, 255, 255, 255, 255, 247, + 255, 61, 127, 61, 255, 61, 255, 255, 255, 255, 61, 127, 61, 255, 127, 255, + 255, 255, 61, 255, 255, 255, 255, 135, 255, 255, 0, 0, 255, 255, 63, 63, + 255, 159, 255, 255, 255, 199, 255, 1, 255, 223, 15, 0, 255, 255, 15, 0, + 255, 223, 13, 0, 255, 255, 207, 255, 255, 1, 128, 16, 255, 255, 255, 0, + 255, 7, 255, 255, 255, 255, 63, 0, 255, 255, 255, 127, 255, 15, 255, 1, + 255, 63, 31, 0, 255, 15, 255, 255, 255, 3, 0, 0, 255, 255, 255, 15, + 254, 255, 31, 0, 128, 0, 0, 0, 255, 255, 239, 255, 239, 15, 0, 0, + 255, 243, 0, 252, 191, 255, 3, 0, 0, 224, 0, 252, 255, 255, 255, 63, + 255, 1, 0, 0, 0, 222, 111, 0, 128, 255, 31, 0, 63, 63, 255, 170, + 255, 255, 223, 95, 220, 31, 207, 15, 255, 31, 220, 31, 0, 0, 2, 128, + 0, 0, 255, 31, 132, 252, 47, 62, 80, 189, 255, 243, 224, 67, 0, 0, + 0, 0, 192, 255, 255, 127, 255, 255, 31, 120, 12, 0, 255, 128, 0, 0, + 255, 255, 127, 0, 127, 127, 127, 127, 0, 128, 0, 0, 224, 0, 0, 0, + 254, 3, 62, 31, 255, 255, 127, 224, 224, 255, 255, 255, 255, 63, 254, 255, + 255, 127, 0, 0, 255, 31, 255, 255, 0, 12, 0, 0, 255, 127, 240, 143, + 0, 0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255, 255, 127, 255, 0, + 187, 247, 255, 255, 47, 0, 0, 0, 0, 0, 252, 40, 255, 255, 7, 0, + 255, 255, 247, 255, 223, 255, 0, 124, 255, 63, 0, 0, 255, 255, 127, 196, + 5, 0, 0, 56, 255, 255, 60, 0, 126, 126, 126, 0, 127, 127, 255, 255, + 63, 0, 255, 255, 255, 7, 0, 0, 15, 0, 255, 255, 127, 248, 255, 255, + 255, 63, 255, 255, 255, 255, 255, 3, 127, 0, 248, 224, 255, 253, 127, 95, + 219, 255, 255, 255, 0, 0, 248, 255, 255, 255, 252, 255, 0, 0, 255, 15, + 0, 0, 223, 255, 192, 255, 255, 255, 252, 252, 252, 28, 255, 239, 255, 255, + 127, 255, 255, 183, 255, 63, 255, 63, 255, 255, 31, 0, 255, 255, 1, 0, + 15, 255, 62, 0, 255, 255, 15, 255, 255, 0, 255, 255, 63, 253, 255, 255, + 255, 255, 191, 145, 255, 255, 55, 0, 255, 255, 255, 192, 111, 240, 239, 254, + 31, 0, 0, 0, 63, 0, 0, 0, 255, 255, 71, 0, 30, 0, 0, 20, + 255, 255, 251, 255, 255, 255, 159, 64, 127, 189, 255, 191, 255, 1, 255, 255, + 159, 25, 129, 224, 187, 7, 0, 0, 179, 0, 0, 0, 255, 255, 63, 127, + 0, 0, 0, 63, 17, 0, 0, 0, 255, 255, 255, 227, 0, 0, 0, 128, + 255, 253, 255, 255, 255, 255, 127, 127, 0, 0, 252, 255, 255, 254, 127, 0, + 127, 0, 0, 0, 248, 255, 255, 224, 31, 0, 255, 255, 3, 0, 0, 0, + 255, 7, 255, 31, 255, 1, 255, 67, 255, 255, 223, 255, 255, 255, 255, 223, + 100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123, + 95, 252, 253, 255, 63, 255, 255, 255, 253, 255, 255, 247, 247, 15, 0, 0, + 127, 255, 255, 249, 219, 7, 0, 0, 143, 0, 0, 0, 150, 254, 247, 10, + 132, 234, 150, 170, 150, 247, 247, 94, 255, 251, 255, 15, 238, 251, 255, 15, + 255, 3, 255, 255, }; -/* Posix_AlNum: 2009 bytes. */ +/* Posix_AlNum: 2197 bytes. */ RE_UINT32 re_get_posix_alnum(RE_UINT32 ch) { RE_UINT32 code; @@ -12744,139 +13502,121 @@ static RE_UINT8 re_posix_punct_stage_1[] = { }; static RE_UINT8 re_posix_punct_stage_2[] = { - 0, 1, 2, 3, 4, 5, 5, 5, 5, 5, 6, 5, 5, 5, 5, 7, - 8, 9, 10, 5, 5, 5, 11, 5, 5, 5, 5, 12, 5, 13, 14, 15, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 9, 10, 7, 7, 7, 7, 7, 7, 7, 7, 7, 11, + 12, 13, 14, 15, 16, 7, 7, 7, 7, 7, 7, 7, 7, 17, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 18, 7, 7, 19, 20, 7, 21, 22, 23, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, }; static RE_UINT8 re_posix_punct_stage_3[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 27, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 28, 29, 30, 31, 26, 26, 26, 26, 26, 26, 26, 32, 33, 34, - 35, 36, 37, 26, 38, 39, 26, 26, 40, 41, 42, 43, 26, 26, 26, 26, - 26, 26, 44, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 45, 26, 26, - 26, 26, 26, 26, 26, 26, 46, 26, 47, 48, 26, 49, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 50, 51, 52, 53, 54, 55, 26, 26, 26, + 16, 1, 1, 17, 18, 1, 19, 20, 21, 22, 23, 24, 25, 1, 1, 26, + 27, 28, 29, 30, 31, 29, 29, 32, 29, 29, 29, 33, 34, 35, 36, 37, + 38, 39, 40, 29, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 41, 1, 1, 1, 1, 1, 1, 42, 1, 43, 44, + 45, 46, 47, 48, 1, 1, 1, 1, 1, 1, 1, 49, 1, 50, 51, 52, + 1, 53, 1, 54, 1, 55, 1, 1, 56, 57, 58, 59, 1, 1, 1, 1, + 60, 61, 62, 1, 63, 64, 65, 66, 1, 1, 1, 1, 67, 1, 1, 1, + 1, 1, 1, 1, 68, 1, 1, 1, 1, 1, 69, 70, 1, 1, 1, 1, + 1, 1, 1, 1, 71, 1, 1, 1, 72, 73, 74, 75, 1, 1, 76, 77, + 29, 29, 78, 1, 1, 1, 1, 1, 1, 79, 1, 1, 1, 1, 10, 1, + 80, 81, 82, 29, 29, 29, 83, 84, 85, 86, 1, 1, 1, 1, 1, 1, }; static RE_UINT8 re_posix_punct_stage_4[] = { - 0, 1, 2, 3, 4, 4, 4, 4, 4, 4, 4, 5, 4, 6, 7, 8, - 4, 4, 9, 4, 4, 10, 11, 12, 13, 14, 4, 15, 16, 4, 4, 17, - 18, 19, 4, 4, 4, 20, 4, 21, 4, 4, 4, 22, 4, 23, 4, 24, - 4, 25, 4, 4, 4, 26, 4, 27, 25, 28, 4, 4, 29, 4, 30, 31, - 4, 32, 33, 34, 4, 4, 4, 4, 4, 4, 4, 4, 4, 35, 36, 4, - 37, 4, 4, 4, 4, 4, 4, 4, 4, 38, 39, 40, 41, 4, 4, 42, - 43, 4, 4, 4, 4, 44, 4, 45, 33, 4, 46, 4, 4, 47, 4, 48, - 49, 50, 4, 51, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 52, 53, - 54, 55, 56, 4, 57, 58, 59, 60, 60, 60, 60, 60, 60, 60, 60, 61, - 62, 43, 63, 4, 60, 60, 60, 60, 60, 60, 60, 60, 60, 64, 65, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 66, 67, 68, - 4, 4, 4, 69, 4, 23, 4, 4, 70, 71, 72, 73, 60, 60, 60, 74, - 75, 4, 76, 34, 4, 4, 77, 78, 79, 80, 81, 82, 60, 60, 60, 60, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 60, - 4, 4, 59, 83, 4, 4, 4, 4, 84, 85, 4, 86, 87, 4, 88, 4, - 89, 90, 4, 91, 92, 93, 4, 94, 4, 95, 4, 96, 4, 97, 4, 98, - 4, 4, 4, 4, 99, 4, 100, 101, 4, 4, 4, 4, 50, 4, 4, 102, - 103, 104, 4, 4, 105, 106, 4, 107, 4, 4, 4, 4, 108, 109, 110, 111, - 4, 4, 4, 4, 4, 4, 93, 112, 4, 4, 4, 4, 4, 113, 4, 4, - 4, 114, 4, 4, 115, 4, 4, 4, 4, 116, 4, 117, 109, 4, 118, 4, - 4, 119, 120, 101, 4, 121, 4, 122, 123, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 124, 4, 4, 4, 125, 4, 126, 4, 4, 4, 4, 4, 4, - 4, 127, 4, 4, 4, 4, 4, 4, 4, 92, 4, 128, 129, 130, 4, 4, - 4, 4, 131, 4, 4, 4, 4, 4, 60, 60, 60, 64, 132, 133, 134, 135, - 60, 136, 4, 4, 60, 137, 4, 4, 4, 4, 4, 138, 139, 140, 141, 142, - 4, 4, 4, 22, 4, 4, 4, 4, 143, 60, 144, 145, 146, 147, 148, 149, - 150, 151, 4, 4, 152, 153, 60, 154, 60, 60, 60, 82, 60, 155, 156, 60, - 60, 157, 60, 158, 60, 73, 60, 159, 160, 161, 162, 4, 4, 4, 4, 4, + 0, 1, 2, 3, 0, 4, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 6, 7, 0, 0, 0, 8, 9, 0, 0, 10, + 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 12, 0, 13, 14, 15, 16, + 17, 0, 0, 18, 0, 0, 19, 20, 21, 0, 0, 0, 0, 0, 0, 22, + 0, 23, 14, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 25, + 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 28, + 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 30, 31, 0, 0, 0, 32, + 0, 29, 33, 0, 0, 0, 0, 0, 34, 35, 0, 0, 36, 37, 38, 0, + 0, 0, 39, 0, 37, 0, 0, 40, 0, 0, 0, 41, 42, 0, 0, 0, + 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 45, 0, 0, 46, + 0, 47, 0, 0, 0, 0, 48, 0, 49, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 0, 37, 51, 37, 0, 0, 0, 0, 52, 0, 0, + 0, 0, 12, 53, 0, 0, 0, 54, 0, 55, 0, 37, 0, 0, 56, 0, + 0, 0, 0, 0, 0, 57, 58, 59, 60, 61, 62, 63, 64, 62, 0, 0, + 65, 66, 67, 0, 68, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 62, 51, 69, 49, 0, 54, 70, 0, 0, + 51, 51, 51, 70, 71, 51, 51, 51, 51, 51, 51, 72, 73, 74, 75, 76, + 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 27, 0, 0, 0, 0, + 51, 78, 79, 0, 80, 51, 51, 81, 51, 51, 51, 51, 51, 51, 70, 82, + 83, 84, 0, 0, 45, 43, 0, 40, 0, 0, 0, 0, 85, 0, 51, 86, + 62, 87, 88, 51, 87, 89, 51, 62, 0, 0, 0, 0, 0, 0, 51, 51, + 0, 0, 0, 0, 60, 51, 69, 37, 90, 0, 0, 91, 0, 0, 0, 92, + 93, 94, 0, 0, 95, 0, 0, 0, 0, 96, 0, 97, 0, 0, 98, 99, + 0, 98, 29, 0, 0, 0, 100, 0, 0, 0, 54, 101, 0, 0, 37, 26, + 0, 0, 40, 0, 0, 0, 0, 102, 0, 103, 0, 0, 0, 104, 94, 0, + 0, 37, 0, 0, 0, 0, 0, 105, 42, 60, 106, 107, 0, 0, 0, 0, + 1, 2, 2, 108, 0, 0, 0, 109, 110, 111, 0, 112, 113, 43, 60, 114, + 0, 0, 0, 0, 29, 0, 27, 0, 0, 0, 0, 30, 0, 0, 0, 0, + 0, 0, 5, 115, 0, 0, 0, 0, 29, 29, 0, 0, 0, 0, 0, 0, + 0, 0, 116, 29, 0, 0, 117, 118, 0, 112, 0, 0, 119, 0, 0, 0, + 0, 0, 120, 0, 0, 121, 94, 0, 0, 0, 86, 122, 0, 0, 123, 0, + 0, 124, 0, 0, 0, 103, 0, 0, 0, 0, 125, 0, 0, 0, 126, 0, + 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 128, 129, 0, 0, 0, 0, + 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 130, 26, 0, 0, 0, 0, + 0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 132, + 0, 111, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, + 51, 51, 51, 51, 51, 51, 51, 70, 51, 135, 51, 136, 137, 138, 51, 41, + 51, 51, 139, 0, 0, 0, 0, 0, 51, 51, 93, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 140, 40, 132, 132, 30, 30, 103, 103, 141, 0, + 0, 142, 0, 143, 144, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, + 51, 145, 51, 51, 81, 146, 147, 70, 60, 148, 39, 149, 87, 129, 0, 150, + 151, 152, 153, 0, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 154, 155, + 51, 51, 51, 81, 51, 51, 156, 0, 145, 51, 157, 51, 61, 21, 0, 0, + 23, 158, 159, 0, 160, 0, 43, 0, }; static RE_UINT8 re_posix_punct_stage_5[] = { 0, 0, 0, 0, 254, 255, 0, 252, 1, 0, 0, 248, 1, 0, 0, 120, - 0, 0, 0, 0, 254, 219, 211, 137, 0, 0, 128, 0, 0, 0, 128, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 252, 255, 224, 175, 255, 255, - 0, 0, 0, 0, 0, 0, 32, 64, 176, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 64, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 252, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 64, - 73, 0, 0, 0, 0, 0, 24, 0, 192, 255, 0, 200, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 16, 64, 0, 2, 0, 96, - 255, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 3, - 0, 0, 0, 0, 0, 0, 255, 127, 0, 0, 0, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 48, 0, 1, 0, 0, 0, 0, 0, 0, 0, 12, 12, - 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 248, 7, 0, 0, 0, 0, 0, 0, 0, 128, - 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 16, 0, - 0, 128, 0, 12, 0, 0, 0, 0, 254, 255, 255, 252, 0, 0, 80, 61, - 32, 0, 0, 0, 0, 0, 0, 192, 191, 223, 255, 7, 0, 0, 0, 0, - 0, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 255, 1, 0, 0, - 0, 0, 255, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, - 0, 0, 112, 15, 0, 0, 0, 0, 255, 7, 0, 0, 0, 0, 0, 0, - 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 255, 255, 255, 255, - 0, 0, 0, 0, 127, 63, 0, 0, 0, 0, 0, 252, 255, 7, 240, 31, - 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0, 248, - 0, 0, 0, 0, 0, 0, 0, 192, 255, 0, 8, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 160, 3, 224, 0, 224, 0, 224, 0, 96, + 254, 219, 211, 137, 0, 0, 128, 0, 60, 0, 252, 255, 224, 175, 255, 255, + 0, 0, 32, 64, 176, 0, 0, 0, 0, 0, 64, 0, 4, 0, 0, 0, + 0, 0, 0, 252, 0, 230, 0, 0, 0, 0, 0, 64, 73, 0, 0, 0, + 0, 0, 24, 0, 192, 255, 0, 200, 0, 60, 0, 0, 0, 0, 16, 64, + 0, 2, 0, 96, 255, 63, 0, 0, 0, 0, 192, 3, 0, 0, 255, 127, + 48, 0, 1, 0, 0, 0, 12, 12, 0, 0, 3, 0, 0, 0, 1, 0, + 0, 0, 248, 7, 0, 0, 0, 128, 0, 128, 0, 0, 0, 0, 0, 2, + 0, 0, 16, 0, 0, 128, 0, 12, 254, 255, 255, 252, 0, 0, 80, 61, + 32, 0, 0, 0, 0, 0, 0, 192, 191, 223, 255, 7, 0, 252, 0, 0, + 0, 0, 0, 8, 255, 1, 0, 0, 0, 0, 255, 3, 1, 0, 0, 0, + 0, 96, 0, 0, 0, 0, 0, 24, 0, 56, 0, 0, 0, 0, 96, 0, + 0, 0, 112, 15, 255, 7, 0, 0, 49, 0, 0, 0, 255, 255, 255, 255, + 127, 63, 0, 0, 255, 7, 240, 31, 0, 0, 0, 240, 0, 0, 0, 248, + 255, 0, 8, 0, 0, 0, 0, 160, 3, 224, 0, 224, 0, 224, 0, 96, 0, 0, 255, 255, 255, 0, 255, 255, 255, 255, 255, 127, 0, 0, 0, 124, - 0, 124, 0, 0, 255, 255, 255, 63, 123, 3, 208, 193, 175, 66, 0, 12, - 31, 188, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 7, - 255, 255, 255, 255, 127, 0, 0, 0, 0, 0, 0, 240, 255, 255, 63, 0, - 255, 255, 255, 255, 255, 255, 63, 0, 0, 0, 240, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 207, 255, 255, 255, 63, 255, 255, 255, 255, 227, - 255, 253, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 7, 0, 222, - 255, 255, 255, 255, 255, 127, 255, 255, 7, 0, 0, 0, 0, 0, 0, 0, - 255, 255, 255, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 0, - 255, 255, 63, 0, 0, 0, 255, 15, 30, 255, 255, 255, 1, 0, 193, 224, - 0, 0, 0, 24, 1, 0, 0, 0, 0, 0, 195, 255, 0, 0, 0, 0, - 255, 255, 255, 255, 15, 0, 0, 0, 255, 255, 255, 127, 0, 252, 255, 255, - 255, 0, 1, 0, 255, 255, 255, 255, 0, 252, 255, 255, 255, 255, 1, 0, - 255, 255, 255, 255, 255, 255, 255, 127, 127, 0, 0, 0, 0, 0, 0, 192, - 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 64, - 0, 0, 0, 0, 0, 0, 252, 0, 255, 255, 127, 0, 3, 0, 0, 0, - 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 192, 3, - 0, 0, 0, 0, 0, 0, 240, 0, 0, 192, 0, 0, 0, 0, 0, 7, - 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, - 254, 63, 0, 192, 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, 128, 3, - 0, 0, 0, 192, 0, 0, 3, 0, 0, 0, 0, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 252, 255, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 255, 3, 0, 0, 255, 255, - 255, 255, 247, 255, 127, 15, 0, 0, 254, 255, 0, 252, 1, 0, 0, 248, - 1, 0, 0, 248, 63, 0, 0, 0, 0, 0, 0, 0, 127, 127, 0, 48, - 7, 0, 0, 0, 0, 0, 128, 255, 0, 0, 0, 0, 0, 0, 0, 254, - 255, 19, 255, 15, 1, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 31, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, - 0, 0, 128, 0, 0, 0, 128, 1, 0, 0, 0, 128, 0, 0, 0, 128, - 0, 0, 255, 1, 0, 0, 0, 128, 0, 1, 0, 0, 0, 0, 127, 0, - 0, 0, 0, 30, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 216, 15, 0, 0, 0, 0, 0, 48, 0, - 224, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 64, 0, 0, 0, 0, 0, 0, 0, 254, 3, 0, 0, 0, 0, 0, 0, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, - 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 128, 255, - 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, - 255, 255, 255, 255, 127, 254, 255, 255, 255, 255, 255, 255, 31, 28, 0, 0, - 24, 240, 255, 255, 255, 195, 255, 255, 255, 255, 255, 63, 0, 0, 0, 0, - 35, 0, 0, 0, 0, 0, 0, 0, 255, 255, 127, 0, 0, 0, 0, 0, - 2, 0, 0, 8, 0, 0, 0, 8, 0, 0, 32, 0, 0, 0, 32, 0, - 0, 128, 0, 0, 0, 128, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, - 8, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 15, 255, 255, - 255, 255, 15, 0, 255, 127, 254, 255, 254, 255, 254, 255, 255, 255, 63, 0, - 0, 0, 255, 255, 255, 127, 0, 0, 0, 252, 0, 0, 0, 12, 0, 0, - 0, 252, 255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 192, 255, 255, 255, - 7, 0, 255, 255, 255, 255, 255, 7, 255, 1, 3, 0, 0, 0, 0, 0, - 255, 255, 255, 255, 255, 31, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, - 255, 127, 240, 255, 255, 255, 255, 0, 255, 7, 255, 255, 255, 255, 255, 251, - 255, 255, 255, 255, 239, 255, 255, 255, 231, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 0, 0, 255, 31, 15, 0, 255, 255, 31, 0, 0, 0, 0, 0, - 255, 15, 255, 255, 255, 255, 255, 255, 255, 0, 255, 3, 255, 255, 255, 255, - 255, 0, 255, 255, 255, 63, 0, 0, + 0, 124, 0, 0, 123, 3, 208, 193, 175, 66, 0, 12, 31, 188, 0, 0, + 0, 12, 255, 255, 127, 0, 0, 0, 255, 255, 63, 0, 0, 0, 240, 255, + 255, 255, 207, 255, 255, 255, 63, 255, 255, 255, 255, 227, 255, 253, 3, 0, + 0, 240, 0, 0, 224, 7, 0, 222, 255, 127, 255, 255, 31, 0, 0, 0, + 255, 255, 255, 251, 255, 255, 15, 0, 0, 0, 255, 15, 30, 255, 255, 255, + 1, 0, 193, 224, 0, 0, 195, 255, 15, 0, 0, 0, 0, 252, 255, 255, + 255, 0, 1, 0, 255, 255, 1, 0, 0, 224, 0, 0, 0, 0, 8, 64, + 0, 0, 252, 0, 255, 255, 127, 0, 3, 0, 0, 0, 0, 6, 0, 0, + 0, 15, 192, 3, 0, 0, 240, 0, 0, 192, 0, 0, 0, 0, 0, 23, + 254, 63, 0, 192, 0, 0, 128, 3, 0, 8, 0, 0, 0, 2, 0, 0, + 0, 0, 252, 255, 0, 0, 0, 48, 255, 255, 247, 255, 127, 15, 0, 0, + 63, 0, 0, 0, 127, 127, 0, 48, 7, 0, 0, 0, 0, 0, 128, 255, + 0, 0, 0, 254, 255, 115, 255, 15, 255, 255, 255, 31, 0, 0, 128, 1, + 0, 0, 255, 1, 0, 1, 0, 0, 0, 0, 127, 0, 0, 0, 0, 30, + 128, 63, 0, 0, 0, 0, 0, 216, 0, 0, 48, 0, 224, 35, 0, 232, + 0, 0, 0, 63, 0, 248, 0, 40, 64, 0, 0, 0, 254, 255, 255, 0, + 14, 0, 0, 0, 255, 31, 0, 0, 62, 0, 0, 0, 0, 0, 31, 0, + 0, 0, 32, 0, 48, 0, 0, 0, 0, 0, 0, 144, 127, 254, 255, 255, + 31, 28, 0, 0, 24, 240, 255, 255, 255, 195, 255, 255, 35, 0, 0, 0, + 2, 0, 0, 8, 8, 0, 0, 0, 0, 0, 128, 7, 0, 224, 223, 255, + 239, 15, 0, 0, 255, 15, 255, 255, 255, 127, 254, 255, 254, 255, 254, 255, + 255, 127, 0, 0, 0, 12, 0, 0, 192, 255, 255, 255, 7, 0, 255, 255, + 255, 255, 255, 15, 255, 1, 3, 0, 255, 255, 7, 0, 255, 31, 127, 0, + 255, 255, 31, 0, 255, 0, 255, 3, 255, 0, 249, 127, 255, 15, 255, 127, + 255, 255, 3, 0, }; -/* Posix_Punct: 1945 bytes. */ +/* Posix_Punct: 1645 bytes. */ RE_UINT32 re_get_posix_punct(RE_UINT32 ch) { RE_UINT32 code; @@ -12886,16 +13626,16 @@ RE_UINT32 re_get_posix_punct(RE_UINT32 ch) { f = ch >> 16; code = ch ^ (f << 16); - pos = (RE_UINT32)re_posix_punct_stage_1[f] << 4; - f = code >> 12; - code ^= f << 12; + pos = (RE_UINT32)re_posix_punct_stage_1[f] << 5; + f = code >> 11; + code ^= f << 11; pos = (RE_UINT32)re_posix_punct_stage_2[pos + f] << 3; - f = code >> 9; - code ^= f << 9; + f = code >> 8; + code ^= f << 8; pos = (RE_UINT32)re_posix_punct_stage_3[pos + f] << 3; - f = code >> 6; - code ^= f << 6; - pos = (RE_UINT32)re_posix_punct_stage_4[pos + f] << 6; + f = code >> 5; + code ^= f << 5; + pos = (RE_UINT32)re_posix_punct_stage_4[pos + f] << 5; pos += code; value = (re_posix_punct_stage_5[pos >> 3] >> (pos & 0x7)) & 0x1; @@ -12955,7 +13695,7 @@ RE_UINT32 re_get_posix_xdigit(RE_UINT32 ch) { /* All_Cases. */ static RE_UINT8 re_all_cases_stage_1[] = { - 0, 1, 2, 2, 2, 3, 2, 4, 5, 2, 2, 2, 2, 2, 2, 2, + 0, 1, 2, 2, 2, 3, 2, 4, 5, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -12968,16 +13708,18 @@ static RE_UINT8 re_all_cases_stage_1[] = { static RE_UINT8 re_all_cases_stage_2[] = { 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 8, 9, 10, - 6, 11, 6, 6, 12, 6, 6, 6, 6, 6, 6, 6, 13, 14, 6, 6, + 7, 6, 6, 8, 6, 6, 6, 6, 6, 6, 6, 6, 9, 10, 11, 12, + 6, 13, 6, 6, 14, 6, 6, 6, 6, 6, 6, 6, 15, 16, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 15, 16, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 17, 18, 6, 6, 6, 19, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 17, 6, 6, 6, 18, - 6, 6, 6, 6, 19, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 20, 6, 6, 6, 21, + 6, 6, 6, 6, 22, 6, 6, 6, 6, 6, 6, 6, 23, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 24, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 25, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, }; @@ -12987,40 +13729,52 @@ static RE_UINT8 re_all_cases_stage_3[] = { 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 18, 18, 18, 18, 18, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 21, 34, 18, 18, 35, 18, 18, 18, 18, 18, 36, 18, 37, 38, 39, 18, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 18, 18, 18, 63, 64, - 65, 65, 11, 11, 11, 11, 15, 15, 15, 15, 66, 66, 18, 18, 18, 18, - 67, 68, 18, 18, 18, 18, 18, 18, 69, 70, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 0, 71, 72, 72, 72, 73, 0, 74, 75, 75, 75, - 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 46, 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 18, 18, 18, 64, 65, + 66, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 75, 76, 18, 18, 18, + 77, 78, 18, 18, 18, 18, 18, 18, 79, 80, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 81, 82, 82, 82, 83, 0, 84, 85, 85, 85, + 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 77, 77, 77, 77, 78, 79, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, + 0, 0, 0, 0, 87, 87, 87, 87, 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 81, 18, 18, 18, - 18, 18, 82, 83, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 84, 85, 86, 87, 84, 85, 84, 85, 86, 87, 88, 89, 84, 85, 90, 91, - 84, 85, 84, 85, 84, 85, 92, 93, 94, 95, 96, 97, 98, 99, 94, 100, - 0, 0, 0, 0, 101, 102, 103, 0, 0, 104, 0, 0, 105, 105, 106, 106, - 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 91, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 108, 109, 109, 109, 110, 110, 110, 111, 0, 0, - 72, 72, 72, 72, 72, 73, 75, 75, 75, 75, 75, 76, 112, 113, 114, 115, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 37, 116, 117, 0, - 118, 118, 118, 118, 119, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 93, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 18, 18, 18, 18, 18, 82, 0, 0, - 18, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 18, 68, 18, 18, 18, 18, 18, 18, 18, 0, 121, - 18, 122, 37, 0, 18, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 96, 18, 18, 18, + 18, 18, 97, 98, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 99, 100, 91, 92, 99, 100, 99, 100, 91, 92, 101, 102, 99, 100, 103, 104, + 99, 100, 99, 100, 99, 100, 105, 106, 107, 108, 109, 110, 111, 112, 107, 113, + 0, 0, 0, 0, 114, 115, 116, 0, 0, 117, 0, 0, 118, 118, 119, 119, + 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 121, 122, 122, 122, 123, 123, 123, 124, 0, 0, + 82, 82, 82, 82, 82, 83, 85, 85, 85, 85, 85, 86, 125, 126, 127, 128, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 37, 129, 130, 0, + 131, 131, 131, 131, 132, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 18, 134, 18, 18, 18, 97, 0, 0, + 18, 18, 18, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 78, 18, 78, 18, 18, 18, 18, 18, 18, 18, 0, 135, + 18, 136, 51, 18, 18, 137, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 0, 0, 0, 0, 0, 0, 0, 0, + 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 11, 11, 4, 5, 15, 15, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 125, 125, 125, 125, 125, 126, 126, 126, 126, 126, 0, 0, 0, 0, 0, 0, + 142, 142, 142, 142, 142, 143, 143, 143, 143, 143, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 142, 142, 142, 142, 144, 143, 143, 143, 143, 145, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 146, 146, 146, 146, 146, 146, 147, 0, 148, 148, 148, 148, 148, 148, 149, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 11, 11, 11, 11, 15, 15, 15, 15, 0, 0, 0, 0, + 150, 150, 150, 150, 151, 152, 152, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; @@ -13045,53 +13799,66 @@ static RE_UINT8 re_all_cases_stage_4[] = { 15, 14, 15, 14, 15, 42, 14, 15, 0, 39, 40, 41, 14, 15, 43, 44, 45, 0, 14, 15, 14, 15, 14, 15, 14, 15, 14, 15, 0, 0, 0, 0, 0, 0, 46, 14, 15, 47, 48, 49, 49, 14, 15, 50, 51, 52, 14, 15, - 53, 54, 55, 56, 57, 0, 58, 58, 0, 59, 0, 60, 0, 0, 0, 0, - 58, 0, 0, 61, 0, 62, 63, 0, 64, 65, 0, 66, 0, 0, 0, 65, - 0, 67, 68, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, - 71, 0, 0, 71, 0, 0, 0, 0, 71, 72, 73, 73, 74, 0, 0, 0, - 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, - 14, 15, 14, 15, 0, 0, 14, 15, 0, 0, 0, 33, 33, 33, 0, 0, - 0, 0, 0, 0, 0, 0, 77, 0, 78, 78, 78, 0, 79, 0, 80, 80, - 81, 1, 82, 1, 1, 83, 1, 1, 84, 85, 86, 1, 87, 1, 1, 1, - 88, 89, 0, 90, 1, 1, 91, 1, 1, 92, 1, 1, 93, 94, 94, 94, - 95, 5, 96, 5, 5, 97, 5, 5, 98, 99, 100, 5, 101, 5, 5, 5, - 102, 103, 104, 105, 5, 5, 106, 5, 5, 107, 5, 5, 108, 109, 109, 110, - 111, 112, 0, 0, 0, 113, 114, 115, 116, 117, 118, 0, 119, 120, 0, 14, - 15, 121, 14, 15, 0, 45, 45, 45, 122, 122, 122, 122, 122, 122, 122, 122, - 123, 123, 123, 123, 123, 123, 123, 123, 14, 15, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 15, 14, 15, 14, 15, 124, 14, 15, 14, 15, 14, 15, 14, - 15, 14, 15, 14, 15, 14, 15, 125, 0, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 0, - 0, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 0, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 0, 128, 0, 0, 0, 0, 0, 128, 0, 0, - 0, 129, 0, 0, 0, 130, 0, 0, 131, 132, 14, 15, 14, 15, 14, 15, - 14, 15, 14, 15, 14, 15, 0, 0, 0, 0, 0, 133, 0, 0, 134, 0, - 110, 110, 110, 110, 110, 110, 110, 110, 115, 115, 115, 115, 115, 115, 115, 115, - 110, 110, 110, 110, 110, 110, 0, 0, 115, 115, 115, 115, 115, 115, 0, 0, - 0, 110, 0, 110, 0, 110, 0, 110, 0, 115, 0, 115, 0, 115, 0, 115, - 135, 135, 136, 136, 136, 136, 137, 137, 138, 138, 139, 139, 140, 140, 0, 0, - 110, 110, 0, 141, 0, 0, 0, 0, 115, 115, 142, 142, 143, 0, 144, 0, - 0, 0, 0, 141, 0, 0, 0, 0, 145, 145, 145, 145, 143, 0, 0, 0, - 110, 110, 0, 146, 0, 0, 0, 0, 115, 115, 147, 147, 0, 0, 0, 0, - 110, 110, 0, 148, 0, 118, 0, 0, 115, 115, 149, 149, 121, 0, 0, 0, - 150, 150, 151, 151, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, - 0, 0, 153, 154, 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 156, 0, 157, 157, 157, 157, 157, 157, 157, 157, - 158, 158, 158, 158, 158, 158, 158, 158, 0, 0, 0, 14, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 0, 0, 0, 0, 0, 0, - 14, 15, 161, 162, 163, 164, 165, 14, 15, 14, 15, 14, 15, 166, 167, 168, - 169, 0, 14, 15, 0, 14, 15, 0, 0, 0, 0, 0, 0, 0, 170, 170, - 0, 0, 0, 14, 15, 14, 15, 0, 0, 0, 14, 15, 0, 0, 0, 0, - 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 0, 171, - 0, 0, 0, 0, 0, 171, 0, 0, 0, 14, 15, 14, 15, 172, 14, 15, - 0, 0, 0, 14, 15, 173, 0, 0, 14, 15, 174, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 14, 15, 0, 175, 175, 175, 175, 175, 175, 175, 175, - 176, 176, 176, 176, 176, 176, 176, 176, + 53, 54, 55, 56, 57, 0, 58, 58, 0, 59, 0, 60, 61, 0, 0, 0, + 58, 62, 0, 63, 0, 64, 65, 0, 66, 67, 65, 68, 69, 0, 0, 67, + 0, 70, 71, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, + 74, 0, 0, 74, 0, 0, 0, 75, 74, 76, 77, 77, 78, 0, 0, 0, + 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 81, 0, + 0, 0, 0, 0, 0, 82, 0, 0, 14, 15, 14, 15, 0, 0, 14, 15, + 0, 0, 0, 33, 33, 33, 0, 83, 0, 0, 0, 0, 0, 0, 84, 0, + 85, 85, 85, 0, 86, 0, 87, 87, 88, 1, 89, 1, 1, 90, 1, 1, + 91, 92, 93, 1, 94, 1, 1, 1, 95, 96, 0, 97, 1, 1, 98, 1, + 1, 99, 1, 1, 100, 101, 101, 101, 102, 5, 103, 5, 5, 104, 5, 5, + 105, 106, 107, 5, 108, 5, 5, 5, 109, 110, 111, 112, 5, 5, 113, 5, + 5, 114, 5, 5, 115, 116, 116, 117, 118, 119, 0, 0, 0, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 0, 14, 15, 129, 14, 15, 0, 45, 45, 45, + 130, 130, 130, 130, 130, 130, 130, 130, 1, 1, 131, 1, 132, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 133, 1, 1, 134, 135, 1, 1, 1, 1, 1, + 1, 1, 136, 1, 1, 1, 1, 1, 5, 5, 137, 5, 138, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 139, 5, 5, 140, 141, 5, 5, 5, 5, 5, + 5, 5, 142, 5, 5, 5, 5, 5, 143, 143, 143, 143, 143, 143, 143, 143, + 14, 15, 144, 145, 14, 15, 14, 15, 14, 15, 0, 0, 0, 0, 0, 0, + 0, 0, 14, 15, 14, 15, 14, 15, 146, 14, 15, 14, 15, 14, 15, 14, + 15, 14, 15, 14, 15, 14, 15, 147, 0, 148, 148, 148, 148, 148, 148, 148, + 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 0, + 0, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 0, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 0, 150, 0, 0, 0, 0, 0, 150, 0, 0, + 151, 151, 151, 151, 151, 151, 151, 151, 117, 117, 117, 117, 117, 117, 0, 0, + 122, 122, 122, 122, 122, 122, 0, 0, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 0, 0, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 162, 0, 0, + 163, 164, 14, 15, 14, 15, 14, 15, 14, 15, 14, 15, 14, 15, 0, 0, + 0, 0, 0, 165, 0, 0, 166, 0, 117, 117, 117, 117, 117, 117, 117, 117, + 122, 122, 122, 122, 122, 122, 122, 122, 0, 117, 0, 117, 0, 117, 0, 117, + 0, 122, 0, 122, 0, 122, 0, 122, 167, 167, 168, 168, 168, 168, 169, 169, + 170, 170, 171, 171, 172, 172, 0, 0, 117, 117, 0, 173, 0, 0, 0, 0, + 122, 122, 174, 174, 175, 0, 176, 0, 0, 0, 0, 173, 0, 0, 0, 0, + 177, 177, 177, 177, 175, 0, 0, 0, 117, 117, 0, 178, 0, 0, 0, 0, + 122, 122, 179, 179, 0, 0, 0, 0, 117, 117, 0, 180, 0, 125, 0, 0, + 122, 122, 181, 181, 129, 0, 0, 0, 182, 182, 183, 183, 175, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 184, 0, 0, 0, 185, 186, 0, 0, 0, 0, + 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, + 189, 189, 189, 189, 189, 189, 189, 189, 190, 190, 190, 190, 190, 190, 190, 190, + 0, 0, 0, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 0, 0, 0, 0, 0, 0, 14, 15, 193, 194, 195, 196, 197, 14, + 15, 14, 15, 14, 15, 198, 199, 200, 201, 0, 14, 15, 0, 14, 15, 0, + 0, 0, 0, 0, 0, 0, 202, 202, 0, 0, 0, 14, 15, 14, 15, 0, + 0, 0, 14, 15, 0, 0, 0, 0, 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 0, 203, 0, 0, 0, 0, 0, 203, 0, 0, + 14, 15, 204, 205, 14, 15, 14, 15, 0, 14, 15, 14, 15, 206, 14, 15, + 0, 0, 0, 14, 15, 207, 0, 0, 14, 15, 208, 209, 210, 211, 208, 0, + 212, 213, 214, 215, 14, 15, 14, 15, 0, 0, 0, 216, 0, 0, 0, 0, + 217, 217, 217, 217, 217, 217, 217, 217, 0, 0, 0, 0, 0, 14, 15, 0, + 218, 218, 218, 218, 218, 218, 218, 218, 219, 219, 219, 219, 219, 219, 219, 219, + 218, 218, 218, 218, 0, 0, 0, 0, 219, 219, 219, 219, 0, 0, 0, 0, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 0, 0, 0, 0, 0, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 0, 0, 0, 0, 0, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 0, 0, 0, 0, }; -/* All_Cases: 1984 bytes. */ +/* All_Cases: 2424 bytes. */ static RE_AllCases re_all_cases_table[] = { {{ 0, 0, 0}}, @@ -13155,22 +13922,29 @@ static RE_AllCases re_all_cases_table[] = { {{ -205, 0, 0}}, {{ -202, 0, 0}}, {{ -203, 0, 0}}, + {{ 42319, 0, 0}}, + {{ 42315, 0, 0}}, {{ -207, 0, 0}}, {{ 42280, 0, 0}}, {{ 42308, 0, 0}}, {{ -209, 0, 0}}, {{ -211, 0, 0}}, {{ 10743, 0, 0}}, + {{ 42305, 0, 0}}, {{ 10749, 0, 0}}, {{ -213, 0, 0}}, {{ -214, 0, 0}}, {{ 10727, 0, 0}}, {{ -218, 0, 0}}, + {{ 42282, 0, 0}}, {{ -69, 0, 0}}, {{ -217, 0, 0}}, {{ -71, 0, 0}}, {{ -219, 0, 0}}, + {{ 42261, 0, 0}}, + {{ 42258, 0, 0}}, {{ 84, 116, 7289}}, + {{ 116, 0, 0}}, {{ 38, 0, 0}}, {{ 37, 0, 0}}, {{ 64, 0, 0}}, @@ -13213,16 +13987,41 @@ static RE_AllCases re_all_cases_table[] = { {{ -86, -54, 0}}, {{ -80, -48, 0}}, {{ 7, 0, 0}}, + {{ -116, 0, 0}}, {{ -92, -60, -35}}, {{ -96, -64, 0}}, {{ -7, 0, 0}}, {{ 80, 0, 0}}, + {{ 32, 6254, 0}}, + {{ 32, 6253, 0}}, + {{ 32, 6244, 0}}, + {{ 32, 6242, 0}}, + {{ 32, 6242, 6243}}, + {{ 32, 6236, 0}}, + {{ -32, 6222, 0}}, + {{ -32, 6221, 0}}, + {{ -32, 6212, 0}}, + {{ -32, 6210, 0}}, + {{ -32, 6210, 6211}}, + {{ -32, 6204, 0}}, {{ -80, 0, 0}}, + {{ 1, 6181, 0}}, + {{ -1, 6180, 0}}, {{ 15, 0, 0}}, {{ -15, 0, 0}}, {{ 48, 0, 0}}, {{ -48, 0, 0}}, {{ 7264, 0, 0}}, + {{ 38864, 0, 0}}, + {{ -6254, -6222, 0}}, + {{ -6253, -6221, 0}}, + {{ -6244, -6212, 0}}, + {{ -6242, -6210, 0}}, + {{ -6242, -6210, 1}}, + {{ -6243, -6211, -1}}, + {{ -6236, -6204, 0}}, + {{ -6181, -6180, 0}}, + {{ 35266, 35267, 0}}, {{ 35332, 0, 0}}, {{ 3814, 0, 0}}, {{ 1, 59, 0}}, @@ -13266,14 +14065,27 @@ static RE_AllCases re_all_cases_table[] = { {{-10782, 0, 0}}, {{-10815, 0, 0}}, {{ -7264, 0, 0}}, + {{-35266, 1, 0}}, + {{-35267, -1, 0}}, {{-35332, 0, 0}}, {{-42280, 0, 0}}, {{-42308, 0, 0}}, + {{-42319, 0, 0}}, + {{-42315, 0, 0}}, + {{-42305, 0, 0}}, + {{-42258, 0, 0}}, + {{-42282, 0, 0}}, + {{-42261, 0, 0}}, + {{ 928, 0, 0}}, + {{ -928, 0, 0}}, + {{-38864, 0, 0}}, {{ 40, 0, 0}}, {{ -40, 0, 0}}, + {{ 34, 0, 0}}, + {{ -34, 0, 0}}, }; -/* All_Cases: 2124 bytes. */ +/* All_Cases: 2664 bytes. */ int re_get_all_cases(RE_UINT32 ch, RE_UINT32* codepoints) { RE_UINT32 code; @@ -13311,7 +14123,7 @@ int re_get_all_cases(RE_UINT32 ch, RE_UINT32* codepoints) { /* Simple_Case_Folding. */ static RE_UINT8 re_simple_case_folding_stage_1[] = { - 0, 1, 2, 2, 2, 3, 2, 4, 5, 2, 2, 2, 2, 2, 2, 2, + 0, 1, 2, 2, 2, 3, 2, 4, 5, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -13324,16 +14136,18 @@ static RE_UINT8 re_simple_case_folding_stage_1[] = { static RE_UINT8 re_simple_case_folding_stage_2[] = { 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 8, 9, - 6, 10, 6, 6, 11, 6, 6, 6, 6, 6, 6, 6, 12, 6, 6, 6, + 7, 6, 6, 8, 6, 6, 6, 6, 6, 6, 6, 6, 9, 6, 10, 11, + 6, 12, 6, 6, 13, 6, 6, 6, 6, 6, 6, 6, 14, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 13, 14, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 15, 16, 6, 6, 6, 17, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 15, - 6, 6, 6, 6, 16, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 18, + 6, 6, 6, 6, 19, 6, 6, 6, 6, 6, 6, 6, 20, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 21, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 22, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, }; @@ -13344,33 +14158,45 @@ static RE_UINT8 re_simple_case_folding_stage_3[] = { 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 8, 20, 6, 6, 21, 6, 6, 6, 6, 6, 22, 6, 23, 24, 25, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 27, 0, - 28, 29, 1, 2, 30, 31, 0, 0, 32, 33, 34, 6, 6, 6, 35, 36, - 37, 37, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, - 38, 7, 6, 6, 6, 6, 6, 6, 39, 40, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 0, 41, 42, 42, 42, 43, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 27, 28, + 29, 30, 1, 2, 31, 32, 0, 0, 33, 34, 35, 6, 6, 6, 36, 37, + 38, 38, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, + 39, 7, 6, 6, 6, 6, 6, 6, 40, 41, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 42, 43, 43, 43, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 44, 44, 44, 44, 45, 46, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 45, 45, 45, 45, 46, 47, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 47, 48, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 0, 49, 0, 50, 0, 49, 0, 49, 0, 50, 0, 51, 0, 49, 0, 0, - 0, 49, 0, 49, 0, 49, 0, 52, 0, 53, 0, 54, 0, 55, 0, 56, - 0, 0, 0, 0, 57, 58, 59, 0, 0, 0, 0, 0, 60, 60, 0, 0, - 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 6, 51, 52, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 0, 53, 0, 48, 0, 53, 0, 53, 0, 48, 0, 54, 0, 53, 0, 0, + 0, 53, 0, 53, 0, 53, 0, 55, 0, 56, 0, 57, 0, 58, 0, 59, + 0, 0, 0, 0, 60, 61, 62, 0, 0, 0, 0, 0, 63, 63, 0, 0, + 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 62, 63, 63, 63, 0, 0, 0, 0, 0, 0, - 42, 42, 42, 42, 42, 43, 0, 0, 0, 0, 0, 0, 64, 65, 66, 67, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 23, 68, 32, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 47, 0, 0, - 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 7, 6, 7, 6, 6, 6, 6, 6, 6, 6, 0, 69, - 6, 70, 23, 0, 6, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 65, 66, 66, 66, 0, 0, 0, 0, 0, 0, + 43, 43, 43, 43, 43, 44, 0, 0, 0, 0, 0, 0, 67, 68, 69, 70, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 23, 71, 33, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 51, 0, 0, + 6, 6, 6, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 6, 7, 6, 6, 6, 6, 6, 6, 6, 0, 72, + 6, 73, 27, 6, 6, 74, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72, 72, 72, 72, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 77, 77, 77, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 77, 77, 77, 77, 78, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 79, 79, 79, 79, 79, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 81, 81, 81, 81, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; @@ -13389,32 +14215,37 @@ static RE_UINT8 re_simple_case_folding_stage_4[] = { 23, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 24, 3, 0, 25, 26, 0, 0, 3, 0, 27, 28, 29, 3, 0, 0, 0, 0, 0, 0, 30, 0, 0, 3, 0, 3, 0, 0, 0, 3, 0, - 0, 0, 0, 0, 0, 0, 31, 0, 32, 32, 32, 0, 33, 0, 34, 34, - 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, - 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, - 36, 37, 0, 0, 0, 38, 39, 0, 40, 41, 0, 0, 42, 43, 0, 3, - 0, 44, 3, 0, 0, 23, 23, 23, 45, 45, 45, 45, 45, 45, 45, 45, - 3, 0, 0, 0, 0, 0, 0, 0, 46, 3, 0, 3, 0, 3, 0, 3, - 0, 3, 0, 3, 0, 3, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 0, 48, - 0, 0, 0, 0, 0, 48, 0, 0, 3, 0, 3, 0, 3, 0, 0, 0, - 0, 0, 0, 49, 0, 0, 50, 0, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 0, 0, 0, 51, 0, 51, 0, 51, 0, 51, - 51, 51, 52, 52, 53, 0, 54, 0, 55, 55, 55, 55, 53, 0, 0, 0, - 51, 51, 56, 56, 0, 0, 0, 0, 51, 51, 57, 57, 44, 0, 0, 0, - 58, 58, 59, 59, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, - 0, 0, 61, 62, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, - 64, 64, 64, 64, 64, 64, 64, 64, 0, 0, 0, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 3, 0, 66, 67, 68, 0, 0, 3, 0, 3, 0, 3, 0, 69, 70, 71, - 72, 0, 3, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 73, 73, - 0, 0, 0, 3, 0, 3, 0, 0, 0, 3, 0, 3, 0, 74, 3, 0, - 0, 0, 0, 3, 0, 75, 0, 0, 3, 0, 76, 0, 0, 0, 0, 0, - 77, 77, 77, 77, 77, 77, 77, 77, + 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 31, 0, + 32, 32, 32, 0, 33, 0, 34, 34, 1, 1, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 0, 0, 0, 38, 39, 0, + 40, 41, 0, 0, 42, 43, 0, 3, 0, 44, 3, 0, 0, 23, 23, 23, + 45, 45, 45, 45, 45, 45, 45, 45, 3, 0, 0, 0, 0, 0, 0, 0, + 46, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 0, + 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 0, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 0, 48, 0, 0, 0, 0, 0, 48, 0, 0, + 49, 49, 49, 49, 49, 49, 0, 0, 50, 51, 52, 53, 53, 54, 55, 56, + 57, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, 3, 0, 0, 0, + 0, 0, 0, 58, 0, 0, 59, 0, 49, 49, 49, 49, 49, 49, 49, 49, + 0, 49, 0, 49, 0, 49, 0, 49, 49, 49, 60, 60, 61, 0, 62, 0, + 63, 63, 63, 63, 61, 0, 0, 0, 49, 49, 64, 64, 0, 0, 0, 0, + 49, 49, 65, 65, 44, 0, 0, 0, 66, 66, 67, 67, 61, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 69, 70, 0, 0, 0, 0, + 0, 0, 71, 0, 0, 0, 0, 0, 72, 72, 72, 72, 72, 72, 72, 72, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 3, 0, 74, 75, 76, 0, 0, 3, + 0, 3, 0, 3, 0, 77, 78, 79, 80, 0, 3, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 81, 81, 0, 0, 0, 3, 0, 3, 0, 0, + 0, 3, 0, 3, 0, 82, 3, 0, 0, 0, 0, 3, 0, 83, 0, 0, + 3, 0, 84, 85, 86, 87, 84, 0, 88, 89, 90, 91, 3, 0, 3, 0, + 92, 92, 92, 92, 92, 92, 92, 92, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 0, 0, 0, 0, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 0, 0, 0, 0, 0, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 0, 0, 0, 0, 0, 0, }; -/* Simple_Case_Folding: 1456 bytes. */ +/* Simple_Case_Folding: 1760 bytes. */ static RE_INT32 re_simple_case_folding_table[] = { 0, @@ -13466,9 +14297,17 @@ static RE_INT32 re_simple_case_folding_table[] = { 15, 48, 7264, + -8, + -6222, + -6221, + -6212, + -6210, + -6211, + -6204, + -6180, + 35267, -58, -7615, - -8, -74, -9, -7173, @@ -13494,10 +14333,19 @@ static RE_INT32 re_simple_case_folding_table[] = { -35332, -42280, -42308, + -42319, + -42315, + -42305, + -42258, + -42282, + -42261, + 928, + -38864, 40, + 34, }; -/* Simple_Case_Folding: 312 bytes. */ +/* Simple_Case_Folding: 380 bytes. */ RE_UINT32 re_get_simple_case_folding(RE_UINT32 ch) { RE_UINT32 code; @@ -13525,7 +14373,7 @@ RE_UINT32 re_get_simple_case_folding(RE_UINT32 ch) { /* Full_Case_Folding. */ static RE_UINT8 re_full_case_folding_stage_1[] = { - 0, 1, 2, 2, 2, 3, 2, 4, 5, 2, 2, 2, 2, 2, 2, 2, + 0, 1, 2, 2, 2, 3, 2, 4, 5, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -13538,56 +14386,70 @@ static RE_UINT8 re_full_case_folding_stage_1[] = { static RE_UINT8 re_full_case_folding_stage_2[] = { 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 8, 9, - 6, 10, 6, 6, 11, 6, 6, 6, 6, 6, 6, 6, 12, 6, 6, 6, + 7, 6, 6, 8, 6, 6, 6, 6, 6, 6, 6, 6, 9, 6, 10, 11, + 6, 12, 6, 6, 13, 6, 6, 6, 6, 6, 6, 6, 14, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 13, 14, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 15, 16, 6, 6, 6, 17, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 15, 6, 6, 6, 16, - 6, 6, 6, 6, 17, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 18, 6, 6, 6, 19, + 6, 6, 6, 6, 20, 6, 6, 6, 6, 6, 6, 6, 21, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 22, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 23, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, }; static RE_UINT8 re_full_case_folding_stage_3[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4, 0, 2, 2, 5, 6, 0, 0, 0, 0, - 7, 7, 7, 7, 7, 7, 8, 9, 9, 10, 7, 7, 7, 7, 7, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 9, 22, 7, 7, 23, 7, - 7, 7, 7, 7, 24, 7, 25, 26, 27, 7, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 29, 0, - 30, 31, 32, 2, 33, 34, 35, 0, 36, 37, 38, 7, 7, 7, 39, 40, - 41, 41, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, - 42, 43, 7, 7, 7, 7, 7, 7, 44, 45, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 0, 46, 47, 47, 47, 48, 0, 0, 0, 0, 0, - 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 50, 50, 50, 50, 51, 52, 0, 0, 0, 0, 0, 0, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 53, 54, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 0, 55, 0, 56, 0, 55, 0, 55, 0, 56, 57, 58, 0, 55, 0, 0, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 0, 0, 0, 0, 75, 76, 77, 0, 0, 0, 0, 0, 78, 78, 0, 0, - 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 80, 81, 81, 81, 0, 0, 0, 0, 0, 0, - 47, 47, 47, 47, 47, 48, 0, 0, 0, 0, 0, 0, 82, 83, 84, 85, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 25, 86, 36, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 87, 0, 0, - 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 43, 7, 43, 7, 7, 7, 7, 7, 7, 7, 0, 88, - 7, 89, 25, 0, 7, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 91, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 93, 93, 93, 93, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 0, 2, 2, 5, 6, 0, 0, 0, 0, + 7, 7, 7, 7, 7, 7, 8, 9, 9, 10, 7, 7, 7, 7, 7, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 9, 22, 7, 7, 23, 7, + 7, 7, 7, 7, 24, 7, 25, 26, 27, 7, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 29, 30, + 31, 32, 33, 2, 34, 35, 36, 0, 37, 38, 39, 7, 7, 7, 40, 41, + 42, 42, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, + 43, 44, 7, 7, 7, 7, 7, 7, 45, 46, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 47, 48, 48, 48, 49, 0, 0, 0, 0, 0, + 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 51, 51, 51, 51, 52, 53, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 55, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 57, 58, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 0, 59, 0, 54, 0, 59, 0, 59, 0, 54, 60, 61, 0, 59, 0, 0, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 0, 0, 0, 0, 78, 79, 80, 0, 0, 0, 0, 0, 81, 81, 0, 0, + 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 83, 84, 84, 84, 0, 0, 0, 0, 0, 0, + 48, 48, 48, 48, 48, 49, 0, 0, 0, 0, 0, 0, 85, 86, 87, 88, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 25, 89, 37, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 90, 0, 0, + 7, 7, 7, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 44, 7, 44, 7, 7, 7, 7, 7, 7, 7, 0, 91, + 7, 92, 29, 7, 7, 93, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 98, 98, 98, 98, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 98, 98, 98, 98, 99, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 100, 100, 100, 100, 100, 100, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 102, 102, 102, 102, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; static RE_UINT8 re_full_case_folding_stage_4[] = { @@ -13606,41 +14468,46 @@ static RE_UINT8 re_full_case_folding_stage_4[] = { 27, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 28, 4, 0, 29, 30, 0, 0, 4, 0, 31, 32, 33, 4, 0, 0, 0, 0, 0, 0, 34, 0, 0, 4, 0, 4, 0, 0, 0, 4, 0, - 0, 0, 0, 0, 0, 0, 35, 0, 36, 36, 36, 0, 37, 0, 38, 38, - 39, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, - 42, 43, 0, 0, 0, 44, 45, 0, 46, 47, 0, 0, 48, 49, 0, 4, - 0, 50, 4, 0, 0, 27, 27, 27, 51, 51, 51, 51, 51, 51, 51, 51, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 0, 4, 0, - 52, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 0, - 0, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, - 53, 53, 53, 53, 53, 53, 53, 0, 0, 0, 0, 0, 0, 0, 0, 54, - 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 0, 55, - 0, 0, 0, 0, 0, 55, 0, 0, 4, 0, 4, 0, 4, 0, 56, 57, - 58, 59, 60, 61, 0, 0, 62, 0, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 0, 0, 64, 0, 65, 0, 66, 0, 67, 0, - 0, 63, 0, 63, 0, 63, 0, 63, 68, 68, 68, 68, 68, 68, 68, 68, - 69, 69, 69, 69, 69, 69, 69, 69, 70, 70, 70, 70, 70, 70, 70, 70, - 71, 71, 71, 71, 71, 71, 71, 71, 72, 72, 72, 72, 72, 72, 72, 72, - 73, 73, 73, 73, 73, 73, 73, 73, 0, 0, 74, 75, 76, 0, 77, 78, - 63, 63, 79, 79, 80, 0, 81, 0, 0, 0, 82, 83, 84, 0, 85, 86, - 87, 87, 87, 87, 88, 0, 0, 0, 0, 0, 89, 90, 0, 0, 91, 92, - 63, 63, 93, 93, 0, 0, 0, 0, 0, 0, 94, 95, 96, 0, 97, 98, - 63, 63, 99, 99, 50, 0, 0, 0, 0, 0, 100, 101, 102, 0, 103, 104, - 105, 105, 106, 106, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, - 0, 0, 109, 110, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, - 112, 112, 112, 112, 112, 112, 112, 112, 0, 0, 0, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 4, 0, 114, 115, 116, 0, 0, 4, 0, 4, 0, 4, 0, 117, 118, 119, - 120, 0, 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 121, 121, - 0, 0, 0, 4, 0, 4, 0, 0, 4, 0, 4, 0, 4, 0, 0, 0, - 0, 4, 0, 4, 0, 122, 4, 0, 0, 0, 0, 4, 0, 123, 0, 0, - 4, 0, 124, 0, 0, 0, 0, 0, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 0, 132, 133, 134, 135, 136, 137, 137, 137, 137, 137, 137, 137, 137, + 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 35, 0, + 36, 36, 36, 0, 37, 0, 38, 38, 39, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 41, 42, 43, 0, 0, 0, 44, 45, 0, + 46, 47, 0, 0, 48, 49, 0, 4, 0, 50, 4, 0, 0, 27, 27, 27, + 51, 51, 51, 51, 51, 51, 51, 51, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 0, 4, 0, 4, 0, 52, 4, 0, 4, 0, 4, 0, 4, + 0, 4, 0, 4, 0, 4, 0, 0, 0, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 0, + 0, 0, 0, 0, 0, 0, 0, 54, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 0, 55, 0, 0, 0, 0, 0, 55, 0, 0, + 56, 56, 56, 56, 56, 56, 0, 0, 57, 58, 59, 60, 60, 61, 62, 63, + 64, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 0, 4, 0, 65, 66, + 67, 68, 69, 70, 0, 0, 71, 0, 56, 56, 56, 56, 56, 56, 56, 56, + 72, 0, 73, 0, 74, 0, 75, 0, 0, 56, 0, 56, 0, 56, 0, 56, + 76, 76, 76, 76, 76, 76, 76, 76, 77, 77, 77, 77, 77, 77, 77, 77, + 78, 78, 78, 78, 78, 78, 78, 78, 79, 79, 79, 79, 79, 79, 79, 79, + 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, + 0, 0, 82, 83, 84, 0, 85, 86, 56, 56, 87, 87, 88, 0, 89, 0, + 0, 0, 90, 91, 92, 0, 93, 94, 95, 95, 95, 95, 96, 0, 0, 0, + 0, 0, 97, 98, 0, 0, 99, 100, 56, 56, 101, 101, 0, 0, 0, 0, + 0, 0, 102, 103, 104, 0, 105, 106, 56, 56, 107, 107, 50, 0, 0, 0, + 0, 0, 108, 109, 110, 0, 111, 112, 113, 113, 114, 114, 115, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 117, 118, 0, 0, 0, 0, + 0, 0, 119, 0, 0, 0, 0, 0, 120, 120, 120, 120, 120, 120, 120, 120, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 4, 0, 122, 123, 124, 0, 0, 4, + 0, 4, 0, 4, 0, 125, 126, 127, 128, 0, 4, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 129, 129, 0, 0, 0, 4, 0, 4, 0, 0, + 4, 0, 4, 0, 4, 0, 0, 0, 0, 4, 0, 4, 0, 130, 4, 0, + 0, 0, 0, 4, 0, 131, 0, 0, 4, 0, 132, 133, 134, 135, 132, 0, + 136, 137, 138, 139, 4, 0, 4, 0, 140, 140, 140, 140, 140, 140, 140, 140, + 141, 142, 143, 144, 145, 146, 147, 0, 0, 0, 0, 148, 149, 150, 151, 152, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 0, 0, 0, 0, + 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 0, 0, 0, 0, 0, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 0, 0, 0, 0, 0, 0, }; -/* Full_Case_Folding: 1656 bytes. */ +/* Full_Case_Folding: 1960 bytes. */ static RE_FullCaseFolding re_full_case_folding_table[] = { { 0, { 0, 0}}, @@ -13699,6 +14566,15 @@ static RE_FullCaseFolding re_full_case_folding_table[] = { { 48, { 0, 0}}, { -34, {1410, 0}}, { 7264, { 0, 0}}, + { -8, { 0, 0}}, + { -6222, { 0, 0}}, + { -6221, { 0, 0}}, + { -6212, { 0, 0}}, + { -6210, { 0, 0}}, + { -6211, { 0, 0}}, + { -6204, { 0, 0}}, + { -6180, { 0, 0}}, + { 35267, { 0, 0}}, { -7726, { 817, 0}}, { -7715, { 776, 0}}, { -7713, { 778, 0}}, @@ -13706,7 +14582,6 @@ static RE_FullCaseFolding re_full_case_folding_table[] = { { -7737, { 702, 0}}, { -58, { 0, 0}}, { -7723, { 115, 0}}, - { -8, { 0, 0}}, { -7051, { 787, 0}}, { -7053, { 787, 768}}, { -7055, { 787, 769}}, @@ -13768,6 +14643,14 @@ static RE_FullCaseFolding re_full_case_folding_table[] = { {-35332, { 0, 0}}, {-42280, { 0, 0}}, {-42308, { 0, 0}}, + {-42319, { 0, 0}}, + {-42315, { 0, 0}}, + {-42305, { 0, 0}}, + {-42258, { 0, 0}}, + {-42282, { 0, 0}}, + {-42261, { 0, 0}}, + { 928, { 0, 0}}, + {-38864, { 0, 0}}, {-64154, { 102, 0}}, {-64155, { 105, 0}}, {-64156, { 108, 0}}, @@ -13781,9 +14664,10 @@ static RE_FullCaseFolding re_full_case_folding_table[] = { {-62872, {1398, 0}}, {-62883, {1389, 0}}, { 40, { 0, 0}}, + { 34, { 0, 0}}, }; -/* Full_Case_Folding: 1104 bytes. */ +/* Full_Case_Folding: 1240 bytes. */ int re_get_full_case_folding(RE_UINT32 ch, RE_UINT32* codepoints) { RE_UINT32 code; @@ -13873,10 +14757,11 @@ RE_GetPropertyFunc re_get_property[] = { re_get_logical_order_exception, re_get_other_id_start, re_get_other_id_continue, - re_get_sterm, + re_get_sentence_terminal, re_get_variation_selector, re_get_pattern_white_space, re_get_pattern_syntax, + re_get_prepended_concatenation_mark, re_get_hangul_syllable_type, re_get_bidi_class, re_get_canonical_combining_class, @@ -13888,7 +14773,7 @@ RE_GetPropertyFunc re_get_property[] = { re_get_numeric_type, re_get_numeric_value, re_get_bidi_mirrored, - re_get_indic_matra_category, + re_get_indic_positional_category, re_get_indic_syllabic_category, re_get_alphanumeric, re_get_any, diff --git a/src/regex/_regex_unicode.h b/src/regex/_regex_unicode.h index 112f1b20bd..98d214f4b6 100644 --- a/src/regex/_regex_unicode.h +++ b/src/regex/_regex_unicode.h @@ -24,7 +24,7 @@ typedef struct RE_Property { typedef struct RE_PropertyValue { RE_UINT16 name; RE_UINT8 value_set; - RE_UINT8 id; + RE_UINT16 id; } RE_PropertyValue; typedef RE_UINT32 (*RE_GetPropertyFunc)(RE_UINT32 ch); @@ -83,24 +83,24 @@ typedef RE_UINT32 (*RE_GetPropertyFunc)(RE_UINT32 ch); #define RE_PROP_S_MASK 0x0F000000 #define RE_PROP_Z_MASK 0x00007000 -#define RE_PROP_ALNUM 0x460001 +#define RE_PROP_ALNUM 0x470001 #define RE_PROP_ALPHA 0x070001 -#define RE_PROP_ANY 0x470001 +#define RE_PROP_ANY 0x480001 #define RE_PROP_ASCII 0x010001 -#define RE_PROP_BLANK 0x480001 +#define RE_PROP_BLANK 0x490001 #define RE_PROP_CNTRL 0x00000F #define RE_PROP_DIGIT 0x000009 -#define RE_PROP_GRAPH 0x490001 +#define RE_PROP_GRAPH 0x4A0001 #define RE_PROP_LOWER 0x080001 -#define RE_PROP_PRINT 0x4A0001 +#define RE_PROP_PRINT 0x4B0001 #define RE_PROP_SPACE 0x190001 #define RE_PROP_UPPER 0x090001 -#define RE_PROP_WORD 0x4B0001 -#define RE_PROP_XDIGIT 0x4C0001 -#define RE_PROP_POSIX_ALNUM 0x4E0001 -#define RE_PROP_POSIX_DIGIT 0x4D0001 -#define RE_PROP_POSIX_PUNCT 0x4F0001 -#define RE_PROP_POSIX_XDIGIT 0x500001 +#define RE_PROP_WORD 0x4C0001 +#define RE_PROP_XDIGIT 0x4D0001 +#define RE_PROP_POSIX_ALNUM 0x4F0001 +#define RE_PROP_POSIX_DIGIT 0x4E0001 +#define RE_PROP_POSIX_PUNCT 0x500001 +#define RE_PROP_POSIX_XDIGIT 0x510001 #define RE_BREAK_OTHER 0 #define RE_BREAK_DOUBLEQUOTE 1 @@ -119,26 +119,36 @@ typedef RE_UINT32 (*RE_GetPropertyFunc)(RE_UINT32 ch); #define RE_BREAK_MIDNUMLET 14 #define RE_BREAK_NUMERIC 15 #define RE_BREAK_EXTENDNUMLET 16 +#define RE_BREAK_EBASE 17 +#define RE_BREAK_EMODIFIER 18 +#define RE_BREAK_ZWJ 19 +#define RE_BREAK_GLUEAFTERZWJ 20 +#define RE_BREAK_EBASEGAZ 21 #define RE_GBREAK_OTHER 0 -#define RE_GBREAK_CR 1 -#define RE_GBREAK_LF 2 -#define RE_GBREAK_CONTROL 3 -#define RE_GBREAK_EXTEND 4 -#define RE_GBREAK_REGIONALINDICATOR 5 -#define RE_GBREAK_SPACINGMARK 6 -#define RE_GBREAK_L 7 -#define RE_GBREAK_V 8 -#define RE_GBREAK_T 9 -#define RE_GBREAK_LV 10 -#define RE_GBREAK_LVT 11 -#define RE_GBREAK_PREPEND 12 +#define RE_GBREAK_PREPEND 1 +#define RE_GBREAK_CR 2 +#define RE_GBREAK_LF 3 +#define RE_GBREAK_CONTROL 4 +#define RE_GBREAK_EXTEND 5 +#define RE_GBREAK_REGIONALINDICATOR 6 +#define RE_GBREAK_SPACINGMARK 7 +#define RE_GBREAK_L 8 +#define RE_GBREAK_V 9 +#define RE_GBREAK_T 10 +#define RE_GBREAK_LV 11 +#define RE_GBREAK_LVT 12 +#define RE_GBREAK_EBASE 13 +#define RE_GBREAK_EMODIFIER 14 +#define RE_GBREAK_ZWJ 15 +#define RE_GBREAK_GLUEAFTERZWJ 16 +#define RE_GBREAK_EBASEGAZ 17 -extern char* re_strings[1261]; -extern RE_Property re_properties[147]; -extern RE_PropertyValue re_property_values[1372]; +extern char* re_strings[1336]; +extern RE_Property re_properties[150]; +extern RE_PropertyValue re_property_values[1469]; extern RE_UINT16 re_expand_on_folding[104]; -extern RE_GetPropertyFunc re_get_property[81]; +extern RE_GetPropertyFunc re_get_property[82]; RE_UINT32 re_get_general_category(RE_UINT32 ch); RE_UINT32 re_get_block(RE_UINT32 ch); @@ -193,10 +203,11 @@ RE_UINT32 re_get_soft_dotted(RE_UINT32 ch); RE_UINT32 re_get_logical_order_exception(RE_UINT32 ch); RE_UINT32 re_get_other_id_start(RE_UINT32 ch); RE_UINT32 re_get_other_id_continue(RE_UINT32 ch); -RE_UINT32 re_get_sterm(RE_UINT32 ch); +RE_UINT32 re_get_sentence_terminal(RE_UINT32 ch); RE_UINT32 re_get_variation_selector(RE_UINT32 ch); RE_UINT32 re_get_pattern_white_space(RE_UINT32 ch); RE_UINT32 re_get_pattern_syntax(RE_UINT32 ch); +RE_UINT32 re_get_prepended_concatenation_mark(RE_UINT32 ch); RE_UINT32 re_get_hangul_syllable_type(RE_UINT32 ch); RE_UINT32 re_get_bidi_class(RE_UINT32 ch); RE_UINT32 re_get_canonical_combining_class(RE_UINT32 ch); @@ -208,7 +219,7 @@ RE_UINT32 re_get_line_break(RE_UINT32 ch); RE_UINT32 re_get_numeric_type(RE_UINT32 ch); RE_UINT32 re_get_numeric_value(RE_UINT32 ch); RE_UINT32 re_get_bidi_mirrored(RE_UINT32 ch); -RE_UINT32 re_get_indic_matra_category(RE_UINT32 ch); +RE_UINT32 re_get_indic_positional_category(RE_UINT32 ch); RE_UINT32 re_get_indic_syllabic_category(RE_UINT32 ch); RE_UINT32 re_get_alphanumeric(RE_UINT32 ch); RE_UINT32 re_get_any(RE_UINT32 ch);