From d5b1faca6f8b145c9e3c9841eef6fefc505ee739 Mon Sep 17 00:00:00 2001 From: Benny Wong Date: Wed, 8 Jul 2020 01:14:04 -0400 Subject: [PATCH 01/60] [Autolink] Store positioning info for url_match Currently for the autolink extensioon, only `www_match` correctly returns correct positioning when calling `cmark_node_get_start_line`/`cmark_node_get_start_column`/`cmark_node_get_end_line`/`cmark_node_get_end_column`. This PR adds positioning support for the `url_match` function. --- extensions/autolink.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/extensions/autolink.c b/extensions/autolink.c index 41564ee4c..24b413a68 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -245,6 +245,11 @@ static cmark_node *url_match(cmark_parser *parser, cmark_node *parent, cmark_node *text = cmark_node_new_with_mem(CMARK_NODE_TEXT, parser->mem); text->as.literal = url; cmark_node_append_child(node, text); + + node->start_line = text->start_line = node->end_line = text->end_line = cmark_inline_parser_get_line(inline_parser); + + node->start_column = text->start_column = max_rewind - rewind; + node->end_column = text->end_column = cmark_inline_parser_get_column(inline_parser) - 1; return node; } From 4517fef666cc106d44fc101d2f81b35354022928 Mon Sep 17 00:00:00 2001 From: Ryan Mulligan Date: Thu, 25 Nov 2021 13:56:53 -0800 Subject: [PATCH 02/60] cmark-gfm-core-extensions: use stdbool.h instead of private header fixes #244 --- extensions/cmark-gfm-core-extensions.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/cmark-gfm-core-extensions.h b/extensions/cmark-gfm-core-extensions.h index 0645915f9..3a32f76b0 100644 --- a/extensions/cmark-gfm-core-extensions.h +++ b/extensions/cmark-gfm-core-extensions.h @@ -7,7 +7,7 @@ extern "C" { #include "cmark-gfm-extension_api.h" #include "cmark-gfm-extensions_export.h" -#include "config.h" // for bool +#include #include CMARK_GFM_EXTENSIONS_EXPORT From f13693d7af2e857771175360ca30f9d8c774be3a Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 17 Jan 2022 16:48:22 -0800 Subject: [PATCH 03/60] man: Switch --safe option for --unsafe in man page The old --safe option is now the default, to get the previous default behavior, use the --unsafe flag. Signed-off-by: Keith Packard --- man/man1/cmark-gfm.1 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/man/man1/cmark-gfm.1 b/man/man1/cmark-gfm.1 index 5c68d79c3..4fca62732 100644 --- a/man/man1/cmark-gfm.1 +++ b/man/man1/cmark-gfm.1 @@ -58,10 +58,10 @@ be rendered as curly quotes, depending on their position. \f[C]\-\-\-\f[] will be rendered as an em-dash. \f[C]...\f[] will be rendered as ellipses. .TP 12n -.B \-\-safe -Do not render raw HTML or potentially dangerous URLs. -(Raw HTML is replaced by a placeholder comment; potentially -dangerous URLs are replaced by empty strings.) Dangerous +.B \-\-unsafe +Render raw HTML and potentially dangerous URLs. +(Raw HTML is not replaced by a placeholder comment; potentially +dangerous URLs are not replaced by empty strings.) Dangerous URLs are those that begin with `javascript:`, `vbscript:`, `file:`, or `data:` (except for `image/png`, `image/gif`, `image/jpeg`, or `image/webp` mime types). From 78e3f1d0736e9382b483d1ff7d321a6d995d923a Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Fri, 30 Sep 2022 17:00:01 +0100 Subject: [PATCH 04/60] Fix GHSL-2022-091: use growable array rather than appending to a singly-linked-list for better efficiency. --- extensions/table.c | 72 ++++++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/extensions/table.c b/extensions/table.c index b9bf48404..d319d6edc 100644 --- a/extensions/table.c +++ b/extensions/table.c @@ -14,10 +14,15 @@ cmark_node_type CMARK_NODE_TABLE, CMARK_NODE_TABLE_ROW, CMARK_NODE_TABLE_CELL; +typedef struct { + cmark_strbuf *buf; + int start_offset, end_offset, internal_offset; +} node_cell; + typedef struct { uint16_t n_columns; int paragraph_offset; - cmark_llist *cells; + node_cell *cells; } table_row; typedef struct { @@ -29,24 +34,24 @@ typedef struct { bool is_header; } node_table_row; -typedef struct { - cmark_strbuf *buf; - int start_offset, end_offset, internal_offset; -} node_cell; - -static void free_table_cell(cmark_mem *mem, void *data) { - node_cell *cell = (node_cell *)data; +static void free_table_cell(cmark_mem *mem, node_cell *cell) { cmark_strbuf_free((cmark_strbuf *)cell->buf); mem->free(cell->buf); - mem->free(cell); +} + +static void free_row_cells(cmark_mem *mem, table_row *row) { + while (row->n_columns > 0) { + free_table_cell(mem, &row->cells[--row->n_columns]); + } + mem->free(row->cells); + row->cells = NULL; } static void free_table_row(cmark_mem *mem, table_row *row) { if (!row) return; - cmark_llist_free_full(mem, row->cells, (cmark_free_func)free_table_cell); - + free_row_cells(mem, row); mem->free(row); } @@ -152,24 +157,29 @@ static table_row *row_from_string(cmark_syntax_extension *self, cell_matched); cmark_strbuf_trim(cell_buf); - node_cell *cell = (node_cell *)parser->mem->calloc(1, sizeof(*cell)); + const uint32_t n_columns = row->n_columns + 1; + // realloc when n_columns is a power of 2 + if ((n_columns & (n_columns-1)) == 0) { + // make sure we never wrap row->n_columns + // offset will != len and our exit will clean up as intended + if (n_columns > UINT16_MAX) { + int_overflow_abort = 1; + break; + } + // Use realloc to double the size of the buffer. + row->cells = (node_cell *)parser->mem->realloc(row->cells, (2 * n_columns - 1) * sizeof(node_cell)); + } + row->n_columns = n_columns; + node_cell *cell = &row->cells[n_columns-1]; cell->buf = cell_buf; cell->start_offset = offset; cell->end_offset = offset + cell_matched - 1; + cell->internal_offset = 0; while (cell->start_offset > 0 && string[cell->start_offset - 1] != '|') { --cell->start_offset; ++cell->internal_offset; } - - // make sure we never wrap row->n_columns - // offset will != len and our exit will clean up as intended - if (row->n_columns == UINT16_MAX) { - int_overflow_abort = 1; - break; - } - row->n_columns += 1; - row->cells = cmark_llist_append(parser->mem, row->cells, cell); } offset += cell_matched + pipe_matched; @@ -187,9 +197,7 @@ static table_row *row_from_string(cmark_syntax_extension *self, if (row_end_offset && offset != len) { row->paragraph_offset = offset; - cmark_llist_free_full(parser->mem, row->cells, (cmark_free_func)free_table_cell); - row->cells = NULL; - row->n_columns = 0; + free_row_cells(parser->mem, row); // Scan past the (optional) leading pipe. offset += scan_table_cell_end(string, len, offset); @@ -303,9 +311,8 @@ static cmark_node *try_opening_table_header(cmark_syntax_extension *self, // since we populate the alignments array based on marker_row->cells uint8_t *alignments = (uint8_t *)parser->mem->calloc(marker_row->n_columns, sizeof(uint8_t)); - cmark_llist *it = marker_row->cells; - for (i = 0; it; it = it->next, ++i) { - node_cell *node = (node_cell *)it->data; + for (i = 0; i < marker_row->n_columns; ++i) { + node_cell *node = &marker_row->cells[i]; bool left = node->buf->ptr[0] == ':', right = node->buf->ptr[node->buf->size - 1] == ':'; if (left && right) @@ -328,10 +335,8 @@ static cmark_node *try_opening_table_header(cmark_syntax_extension *self, ntr->is_header = true; { - cmark_llist *tmp; - - for (tmp = header_row->cells; tmp; tmp = tmp->next) { - node_cell *cell = (node_cell *) tmp->data; + for (i = 0; i < header_row->n_columns; ++i) { + node_cell *cell = &header_row->cells[i]; cmark_node *header_cell = cmark_parser_add_child(parser, table_header, CMARK_NODE_TABLE_CELL, parent_container->start_column + cell->start_offset); header_cell->start_line = header_cell->end_line = parent_container->start_line; @@ -378,11 +383,10 @@ static cmark_node *try_opening_table_row(cmark_syntax_extension *self, } { - cmark_llist *tmp; int i, table_columns = get_n_table_columns(parent_container); - for (tmp = row->cells, i = 0; tmp && i < table_columns; tmp = tmp->next, ++i) { - node_cell *cell = (node_cell *) tmp->data; + for (i = 0; i < row->n_columns && i < table_columns; ++i) { + node_cell *cell = &row->cells[i]; cmark_node *node = cmark_parser_add_child(parser, table_row_block, CMARK_NODE_TABLE_CELL, parent_container->start_column + cell->start_offset); node->internal_offset = cell->internal_offset; From 75008f1e46580748edb971bc0784ca185cfecef9 Mon Sep 17 00:00:00 2001 From: Nick Wellnhofer Date: Tue, 13 Jul 2021 18:00:09 +0200 Subject: [PATCH 05/60] Fix quadratic behavior when parsing emphasis Delimiters can be deleted, so store delimiter positions instead of pointers in `openers_bottom`. Besides causing undefined behavior when reading a dangling pointer, this could also result in quadratic behavior when parsing emphasis. Fixes #389. --- src/cmark-gfm-extension_api.h | 1 + src/inlines.c | 26 ++++++++++++++------------ 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/cmark-gfm-extension_api.h b/src/cmark-gfm-extension_api.h index 9403c4f00..bb92a59bf 100644 --- a/src/cmark-gfm-extension_api.h +++ b/src/cmark-gfm-extension_api.h @@ -114,6 +114,7 @@ typedef struct delimiter { struct delimiter *previous; struct delimiter *next; cmark_node *inl_text; + bufsize_t position; bufsize_t length; unsigned char delim_char; int can_open; diff --git a/src/inlines.c b/src/inlines.c index 3cd3bc3d0..e1243ca2f 100644 --- a/src/inlines.c +++ b/src/inlines.c @@ -35,7 +35,6 @@ static const char *RIGHTSINGLEQUOTE = "\xE2\x80\x99"; typedef struct bracket { struct bracket *previous; - struct delimiter *previous_delimiter; cmark_node *inl_text; bufsize_t position; bool image; @@ -505,6 +504,7 @@ static void push_delimiter(subject *subj, unsigned char c, bool can_open, delim->can_open = can_open; delim->can_close = can_close; delim->inl_text = inl_text; + delim->position = subj->pos; delim->length = inl_text->as.literal.len; delim->previous = subj->last_delim; delim->next = NULL; @@ -525,7 +525,6 @@ static void push_bracket(subject *subj, bool image, cmark_node *inl_text) { b->active = true; b->inl_text = inl_text; b->previous = subj->last_bracket; - b->previous_delimiter = subj->last_delim; b->position = subj->pos; b->bracket_after = false; if (image) { @@ -640,12 +639,12 @@ static cmark_syntax_extension *get_extension_for_special_char(cmark_parser *pars return NULL; } -static void process_emphasis(cmark_parser *parser, subject *subj, delimiter *stack_bottom) { +static void process_emphasis(cmark_parser *parser, subject *subj, bufsize_t stack_bottom) { delimiter *closer = subj->last_delim; delimiter *opener; delimiter *old_closer; bool opener_found; - delimiter *openers_bottom[3][128]; + bufsize_t openers_bottom[3][128]; int i; // initialize openers_bottom: @@ -658,7 +657,9 @@ static void process_emphasis(cmark_parser *parser, subject *subj, delimiter *sta } // move back to first relevant delim. - while (closer != NULL && closer->previous != stack_bottom) { + while (closer != NULL && + closer->previous != NULL && + closer->previous->position >= stack_bottom) { closer = closer->previous; } @@ -669,8 +670,8 @@ static void process_emphasis(cmark_parser *parser, subject *subj, delimiter *sta // Now look backwards for first matching opener: opener = closer->previous; opener_found = false; - while (opener != NULL && opener != stack_bottom && - opener != openers_bottom[closer->length % 3][closer->delim_char]) { + while (opener != NULL && opener->position >= stack_bottom && + opener->position >= openers_bottom[closer->length % 3][closer->delim_char]) { if (opener->can_open && opener->delim_char == closer->delim_char) { // interior closer of size 2 can't match opener of size 1 // or of size 1 can't match 2 @@ -716,7 +717,7 @@ static void process_emphasis(cmark_parser *parser, subject *subj, delimiter *sta if (!opener_found) { // set lower bound for future searches for openers openers_bottom[old_closer->length % 3][old_closer->delim_char] = - old_closer->previous; + old_closer->position; if (!old_closer->can_open) { // we can remove a closer that can't be an // opener, once we've seen there's no @@ -729,7 +730,8 @@ static void process_emphasis(cmark_parser *parser, subject *subj, delimiter *sta } } // free all delimiters in list until stack_bottom: - while (subj->last_delim != NULL && subj->last_delim != stack_bottom) { + while (subj->last_delim != NULL && + subj->last_delim->position >= stack_bottom) { remove_delimiter(subj, subj->last_delim); } } @@ -1193,7 +1195,7 @@ static cmark_node *handle_close_bracket(cmark_parser *parser, subject *subj) { // being replacing the opening '[' text node with a `^footnote-ref]` node. cmark_node_insert_before(opener->inl_text, fnref); - process_emphasis(parser, subj, opener->previous_delimiter); + process_emphasis(parser, subj, opener->position); // sometimes, the footnote reference text gets parsed into multiple nodes // i.e. '[^example]' parsed into '[', '^exam', 'ple]'. // this happens for ex with the autolink extension. when the autolinker @@ -1245,7 +1247,7 @@ static cmark_node *handle_close_bracket(cmark_parser *parser, subject *subj) { // Free the bracket [: cmark_node_free(opener->inl_text); - process_emphasis(parser, subj, opener->previous_delimiter); + process_emphasis(parser, subj, opener->position); pop_bracket(subj); // Now, if we have a link, we also want to deactivate earlier link @@ -1470,7 +1472,7 @@ void cmark_parse_inlines(cmark_parser *parser, while (!is_eof(&subj) && parse_inline(parser, &subj, parent, options)) ; - process_emphasis(parser, &subj, NULL); + process_emphasis(parser, &subj, 0); // free bracket and delim stack while (subj.last_delim) { remove_delimiter(&subj, subj.last_delim); From 9f02cba2f7120e47b45c91ecf4e01cb7483fa546 Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Sun, 9 Oct 2022 22:03:36 +0100 Subject: [PATCH 06/60] Add a flag to avoid quadratic loop in try_opening_table_header --- extensions/table.c | 5 +++++ src/node.h | 1 + 2 files changed, 6 insertions(+) diff --git a/extensions/table.c b/extensions/table.c index b9bf48404..9fce51e8d 100644 --- a/extensions/table.c +++ b/extensions/table.c @@ -240,6 +240,10 @@ static cmark_node *try_opening_table_header(cmark_syntax_extension *self, const char *parent_string; uint16_t i; + if (parent_container->flags & CMARK_NODE__TABLE_VISITED) { + return parent_container; + } + if (!scan_table_start(input, len, cmark_parser_get_first_nonspace(parser))) { return parent_container; } @@ -267,6 +271,7 @@ static cmark_node *try_opening_table_header(cmark_syntax_extension *self, free_table_row(parser->mem, marker_row); free_table_row(parser->mem, header_row); cmark_arena_pop(); + parent_container->flags |= CMARK_NODE__TABLE_VISITED; return parent_container; } diff --git a/src/node.h b/src/node.h index b094c16e6..7ee0d6523 100644 --- a/src/node.h +++ b/src/node.h @@ -52,6 +52,7 @@ enum cmark_node__internal_flags { CMARK_NODE__OPEN = (1 << 0), CMARK_NODE__LAST_LINE_BLANK = (1 << 1), CMARK_NODE__LAST_LINE_CHECKED = (1 << 2), + CMARK_NODE__TABLE_VISITED = (1 << 3), }; struct cmark_node { From a1129ab99a41771f0f40280c858176ef7d2d3174 Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Mon, 10 Oct 2022 17:08:38 +0100 Subject: [PATCH 07/60] Refactor cell append code into a separate function. --- extensions/table.c | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/extensions/table.c b/extensions/table.c index d319d6edc..0c2598868 100644 --- a/extensions/table.c +++ b/extensions/table.c @@ -116,6 +116,24 @@ static cmark_strbuf *unescape_pipes(cmark_mem *mem, unsigned char *string, bufsi return res; } +// Adds a new cell to the end of the row. A pointer to the new cell is returned +// for the caller to initialize. +static node_cell* append_row_cell(cmark_mem *mem, table_row *row) { + const uint32_t n_columns = row->n_columns + 1; + // realloc when n_columns is a power of 2 + if ((n_columns & (n_columns-1)) == 0) { + // make sure we never wrap row->n_columns + // offset will != len and our exit will clean up as intended + if (n_columns > UINT16_MAX) { + return NULL; + } + // Use realloc to double the size of the buffer. + row->cells = (node_cell *)mem->realloc(row->cells, (2 * n_columns - 1) * sizeof(node_cell)); + } + row->n_columns = n_columns; + return &row->cells[n_columns-1]; +} + static table_row *row_from_string(cmark_syntax_extension *self, cmark_parser *parser, unsigned char *string, int len) { @@ -157,20 +175,11 @@ static table_row *row_from_string(cmark_syntax_extension *self, cell_matched); cmark_strbuf_trim(cell_buf); - const uint32_t n_columns = row->n_columns + 1; - // realloc when n_columns is a power of 2 - if ((n_columns & (n_columns-1)) == 0) { - // make sure we never wrap row->n_columns - // offset will != len and our exit will clean up as intended - if (n_columns > UINT16_MAX) { - int_overflow_abort = 1; - break; - } - // Use realloc to double the size of the buffer. - row->cells = (node_cell *)parser->mem->realloc(row->cells, (2 * n_columns - 1) * sizeof(node_cell)); + node_cell *cell = append_row_cell(parser->mem, row); + if (!cell) { + int_overflow_abort = 1; + break; } - row->n_columns = n_columns; - node_cell *cell = &row->cells[n_columns-1]; cell->buf = cell_buf; cell->start_offset = offset; cell->end_offset = offset + cell_matched - 1; From 8d4b76b07424b69e5f9dd05ef948bcc2f43126f3 Mon Sep 17 00:00:00 2001 From: Nick Wellnhofer Date: Mon, 22 Mar 2021 20:28:51 +0100 Subject: [PATCH 08/60] Fix quadratic behavior with inline HTML Repeated starting sequences like ``, `?>` and `]]>` from the respective regex. Since these regexes are already constructed to match lazily, they will stop before an ending sequence. To check whether an ending sequence was found, we can simply test whether the input buffer is large enough to hold the match plus a potential suffix. If the regex doesn't find the ending sequence, it will match so many characters that this test is guaranteed to fail. In this case, we set a flag to avoid further attempts to execute the regex. To check which inline HTML regex to use, we inspect the start of the text buffer. This allows some fixed characters to be removed from the start of some regexes. `matchlen` is adjusted with a single addition that accounts for both the relevant prefix and suffix. Fixes #299. --- src/inlines.c | 53 +- src/scanners.c | 24284 ++++++++++++++++++++++++++-------------------- src/scanners.h | 8 + src/scanners.re | 57 +- 4 files changed, 14024 insertions(+), 10378 deletions(-) diff --git a/src/inlines.c b/src/inlines.c index 3cd3bc3d0..84319b21f 100644 --- a/src/inlines.c +++ b/src/inlines.c @@ -45,9 +45,14 @@ typedef struct bracket { bool in_bracket_image1; } bracket; +#define FLAG_SKIP_HTML_CDATA (1u << 0) +#define FLAG_SKIP_HTML_DECLARATION (1u << 1) +#define FLAG_SKIP_HTML_PI (1u << 2) + typedef struct subject{ cmark_mem *mem; cmark_chunk input; + unsigned flags; int line; bufsize_t pos; int block_offset; @@ -163,6 +168,7 @@ static void subject_from_buf(cmark_mem *mem, int line_number, int block_offset, int i; e->mem = mem; e->input = *chunk; + e->flags = 0; e->line = line_number; e->pos = 0; e->block_offset = block_offset; @@ -899,7 +905,52 @@ static cmark_node *handle_pointy_brace(subject *subj, int options) { } // finally, try to match an html tag - matchlen = scan_html_tag(&subj->input, subj->pos); + if (subj->pos + 2 <= subj->input.len) { + int c = subj->input.data[subj->pos]; + if (c == '!') { + c = subj->input.data[subj->pos+1]; + if (c == '-') { + matchlen = scan_html_comment(&subj->input, subj->pos + 2); + if (matchlen > 0) + matchlen += 2; // prefix "<-" + } else if (c == '[') { + if ((subj->flags & FLAG_SKIP_HTML_CDATA) == 0) { + matchlen = scan_html_cdata(&subj->input, subj->pos + 2); + if (matchlen > 0) { + // The regex doesn't require the final "]]>". But if we're not at + // the end of input, it must come after the match. Otherwise, + // disable subsequent scans to avoid quadratic behavior. + matchlen += 5; // prefix "![", suffix "]]>" + if (subj->pos + matchlen > subj->input.len) { + subj->flags |= FLAG_SKIP_HTML_CDATA; + matchlen = 0; + } + } + } + } else if ((subj->flags & FLAG_SKIP_HTML_DECLARATION) == 0) { + matchlen = scan_html_declaration(&subj->input, subj->pos + 1); + if (matchlen > 0) { + matchlen += 2; // prefix "!", suffix ">" + if (subj->pos + matchlen > subj->input.len) { + subj->flags |= FLAG_SKIP_HTML_DECLARATION; + matchlen = 0; + } + } + } + } else if (c == '?') { + if ((subj->flags & FLAG_SKIP_HTML_PI) == 0) { + // Note that we allow an empty match. + matchlen = scan_html_pi(&subj->input, subj->pos + 1); + matchlen += 3; // prefix "?", suffix "?>" + if (subj->pos + matchlen > subj->input.len) { + subj->flags |= FLAG_SKIP_HTML_PI; + matchlen = 0; + } + } + } else { + matchlen = scan_html_tag(&subj->input, subj->pos); + } + } if (matchlen > 0) { contents = cmark_chunk_dup(&subj->input, subj->pos - 1, matchlen + 1); subj->pos += matchlen; diff --git a/src/scanners.c b/src/scanners.c index 285b7a314..19720601d 100644 --- a/src/scanners.c +++ b/src/scanners.c @@ -1,10508 +1,14056 @@ -/* Generated by re2c 1.3 */ -#include -#include "chunk.h" +/* Generated by re2c 3.0 */ #include "scanners.h" +#include "chunk.h" +#include -bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c, bufsize_t offset) -{ - bufsize_t res; - unsigned char *ptr = (unsigned char *)c->data; +bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c, + bufsize_t offset) { + bufsize_t res; + unsigned char *ptr = (unsigned char *)c->data; - if (ptr == NULL || offset > c->len) { - return 0; - } else { - unsigned char lim = ptr[c->len]; + if (ptr == NULL || offset > c->len) { + return 0; + } else { + unsigned char lim = ptr[c->len]; - ptr[c->len] = '\0'; - res = scanner(ptr + offset); - ptr[c->len] = lim; - } + ptr[c->len] = '\0'; + res = scanner(ptr + offset); + ptr[c->len] = lim; + } - return res; + return res; } - - // Try to match a scheme including colon. -bufsize_t _scan_scheme(const unsigned char *p) -{ +bufsize_t _scan_scheme(const unsigned char *p) { const unsigned char *marker = NULL; const unsigned char *start = p; -{ - unsigned char yych; - yych = *p; - if (yych <= '@') goto yy2; - if (yych <= 'Z') goto yy4; - if (yych <= '`') goto yy2; - if (yych <= 'z') goto yy4; -yy2: - ++p; -yy3: - { return 0; } -yy4: - yych = *(marker = ++p); - if (yych <= '/') { - if (yych <= '+') { - if (yych <= '*') goto yy3; - } else { - if (yych <= ',') goto yy3; - if (yych >= '/') goto yy3; - } - } else { - if (yych <= 'Z') { - if (yych <= '9') goto yy5; - if (yych <= '@') goto yy3; - } else { - if (yych <= '`') goto yy3; - if (yych >= '{') goto yy3; - } - } -yy5: - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych == '+') goto yy7; - } else { - if (yych != '/') goto yy7; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych >= 'A') goto yy7; - } else { - if (yych <= '`') goto yy6; - if (yych <= 'z') goto yy7; - } - } -yy6: - p = marker; - goto yy3; -yy7: - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych == '+') goto yy10; - goto yy6; - } else { - if (yych == '/') goto yy6; - goto yy10; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - goto yy10; - } else { - if (yych <= '`') goto yy6; - if (yych <= 'z') goto yy10; - goto yy6; - } - } -yy8: - ++p; - { return (bufsize_t)(p - start); } -yy10: - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy6; - } else { - if (yych == '/') goto yy6; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy8; - if (yych <= '@') goto yy6; - } else { - if (yych <= '`') goto yy6; - if (yych >= '{') goto yy6; - } - } - yych = *++p; - if (yych == ':') goto yy8; - goto yy6; -} - + { + unsigned char yych; + yych = *p; + if (yych <= '@') + goto yy1; + if (yych <= 'Z') + goto yy3; + if (yych <= '`') + goto yy1; + if (yych <= 'z') + goto yy3; + yy1: + ++p; + yy2 : { return 0; } + yy3: + yych = *(marker = ++p); + if (yych <= '/') { + if (yych <= '+') { + if (yych <= '*') + goto yy2; + } else { + if (yych <= ',') + goto yy2; + if (yych >= '/') + goto yy2; + } + } else { + if (yych <= 'Z') { + if (yych <= '9') + goto yy4; + if (yych <= '@') + goto yy2; + } else { + if (yych <= '`') + goto yy2; + if (yych >= '{') + goto yy2; + } + } + yy4: + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych == '+') + goto yy6; + } else { + if (yych != '/') + goto yy6; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych >= 'A') + goto yy6; + } else { + if (yych <= '`') + goto yy5; + if (yych <= 'z') + goto yy6; + } + } + yy5: + p = marker; + goto yy2; + yy6: + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych == '+') + goto yy8; + goto yy5; + } else { + if (yych == '/') + goto yy5; + goto yy8; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + goto yy8; + } else { + if (yych <= '`') + goto yy5; + if (yych <= 'z') + goto yy8; + goto yy5; + } + } + yy7: + ++p; + { return (bufsize_t)(p - start); } + yy8: + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy5; + } else { + if (yych == '/') + goto yy5; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy7; + if (yych <= '@') + goto yy5; + } else { + if (yych <= '`') + goto yy5; + if (yych >= '{') + goto yy5; + } + } + yych = *++p; + if (yych == ':') + goto yy7; + goto yy5; + } } // Try to match URI autolink after first <, returning number of chars matched. -bufsize_t _scan_autolink_uri(const unsigned char *p) -{ +bufsize_t _scan_autolink_uri(const unsigned char *p) { const unsigned char *marker = NULL; const unsigned char *start = p; -{ - unsigned char yych; - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 0, 128, 0, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - yych = *p; - if (yych <= '@') goto yy41; - if (yych <= 'Z') goto yy43; - if (yych <= '`') goto yy41; - if (yych <= 'z') goto yy43; -yy41: - ++p; -yy42: - { return 0; } -yy43: - yych = *(marker = ++p); - if (yych <= '/') { - if (yych <= '+') { - if (yych <= '*') goto yy42; - } else { - if (yych <= ',') goto yy42; - if (yych >= '/') goto yy42; - } - } else { - if (yych <= 'Z') { - if (yych <= '9') goto yy44; - if (yych <= '@') goto yy42; - } else { - if (yych <= '`') goto yy42; - if (yych >= '{') goto yy42; - } - } -yy44: - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych == '+') goto yy46; - } else { - if (yych != '/') goto yy46; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych >= 'A') goto yy46; - } else { - if (yych <= '`') goto yy45; - if (yych <= 'z') goto yy46; - } - } -yy45: - p = marker; - goto yy42; -yy46: - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych == '+') goto yy49; - goto yy45; - } else { - if (yych == '/') goto yy45; - goto yy49; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - goto yy49; - } else { - if (yych <= '`') goto yy45; - if (yych <= 'z') goto yy49; - goto yy45; - } - } -yy47: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy47; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '<') goto yy45; - if (yych <= '>') goto yy50; - goto yy45; - } else { - if (yych <= 0xDF) goto yy52; - if (yych <= 0xE0) goto yy53; - goto yy54; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy55; - if (yych <= 0xEF) goto yy54; - goto yy56; - } else { - if (yych <= 0xF3) goto yy57; - if (yych <= 0xF4) goto yy58; - goto yy45; - } - } -yy49: - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych == '+') goto yy59; - goto yy45; - } else { - if (yych == '/') goto yy45; - goto yy59; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - goto yy59; - } else { - if (yych <= '`') goto yy45; - if (yych <= 'z') goto yy59; - goto yy45; - } - } -yy50: - ++p; - { return (bufsize_t)(p - start); } -yy52: - yych = *++p; - if (yych <= 0x7F) goto yy45; - if (yych <= 0xBF) goto yy47; - goto yy45; -yy53: - yych = *++p; - if (yych <= 0x9F) goto yy45; - if (yych <= 0xBF) goto yy52; - goto yy45; -yy54: - yych = *++p; - if (yych <= 0x7F) goto yy45; - if (yych <= 0xBF) goto yy52; - goto yy45; -yy55: - yych = *++p; - if (yych <= 0x7F) goto yy45; - if (yych <= 0x9F) goto yy52; - goto yy45; -yy56: - yych = *++p; - if (yych <= 0x8F) goto yy45; - if (yych <= 0xBF) goto yy54; - goto yy45; -yy57: - yych = *++p; - if (yych <= 0x7F) goto yy45; - if (yych <= 0xBF) goto yy54; - goto yy45; -yy58: - yych = *++p; - if (yych <= 0x7F) goto yy45; - if (yych <= 0x8F) goto yy54; - goto yy45; -yy59: - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych <= '9') { - if (yych <= ',') { - if (yych != '+') goto yy45; - } else { - if (yych == '/') goto yy45; - } - } else { - if (yych <= 'Z') { - if (yych <= ':') goto yy47; - if (yych <= '@') goto yy45; - } else { - if (yych <= '`') goto yy45; - if (yych >= '{') goto yy45; - } - } - yych = *++p; - if (yych == ':') goto yy47; - goto yy45; + { + unsigned char yych; + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 0, 128, 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }; + yych = *p; + if (yych <= '@') + goto yy10; + if (yych <= 'Z') + goto yy12; + if (yych <= '`') + goto yy10; + if (yych <= 'z') + goto yy12; + yy10: + ++p; + yy11 : { return 0; } + yy12: + yych = *(marker = ++p); + if (yych <= '/') { + if (yych <= '+') { + if (yych <= '*') + goto yy11; + } else { + if (yych <= ',') + goto yy11; + if (yych >= '/') + goto yy11; + } + } else { + if (yych <= 'Z') { + if (yych <= '9') + goto yy13; + if (yych <= '@') + goto yy11; + } else { + if (yych <= '`') + goto yy11; + if (yych >= '{') + goto yy11; + } + } + yy13: + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych == '+') + goto yy15; + } else { + if (yych != '/') + goto yy15; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych >= 'A') + goto yy15; + } else { + if (yych <= '`') + goto yy14; + if (yych <= 'z') + goto yy15; + } + } + yy14: + p = marker; + goto yy11; + yy15: + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych == '+') + goto yy17; + goto yy14; + } else { + if (yych == '/') + goto yy14; + goto yy17; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + goto yy17; + } else { + if (yych <= '`') + goto yy14; + if (yych <= 'z') + goto yy17; + goto yy14; + } + } + yy16: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy16; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '<') + goto yy14; + if (yych <= '>') + goto yy18; + goto yy14; + } else { + if (yych <= 0xDF) + goto yy19; + if (yych <= 0xE0) + goto yy20; + goto yy21; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy22; + if (yych <= 0xEF) + goto yy21; + goto yy23; + } else { + if (yych <= 0xF3) + goto yy24; + if (yych <= 0xF4) + goto yy25; + goto yy14; + } + } + yy17: + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych == '+') + goto yy26; + goto yy14; + } else { + if (yych == '/') + goto yy14; + goto yy26; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + goto yy26; + } else { + if (yych <= '`') + goto yy14; + if (yych <= 'z') + goto yy26; + goto yy14; + } + } + yy18: + ++p; + { return (bufsize_t)(p - start); } + yy19: + yych = *++p; + if (yych <= 0x7F) + goto yy14; + if (yych <= 0xBF) + goto yy16; + goto yy14; + yy20: + yych = *++p; + if (yych <= 0x9F) + goto yy14; + if (yych <= 0xBF) + goto yy19; + goto yy14; + yy21: + yych = *++p; + if (yych <= 0x7F) + goto yy14; + if (yych <= 0xBF) + goto yy19; + goto yy14; + yy22: + yych = *++p; + if (yych <= 0x7F) + goto yy14; + if (yych <= 0x9F) + goto yy19; + goto yy14; + yy23: + yych = *++p; + if (yych <= 0x8F) + goto yy14; + if (yych <= 0xBF) + goto yy21; + goto yy14; + yy24: + yych = *++p; + if (yych <= 0x7F) + goto yy14; + if (yych <= 0xBF) + goto yy21; + goto yy14; + yy25: + yych = *++p; + if (yych <= 0x7F) + goto yy14; + if (yych <= 0x8F) + goto yy21; + goto yy14; + yy26: + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych <= '9') { + if (yych <= ',') { + if (yych != '+') + goto yy14; + } else { + if (yych == '/') + goto yy14; + } + } else { + if (yych <= 'Z') { + if (yych <= ':') + goto yy16; + if (yych <= '@') + goto yy14; + } else { + if (yych <= '`') + goto yy14; + if (yych >= '{') + goto yy14; + } + } + yych = *++p; + if (yych == ':') + goto yy16; + goto yy14; + } } +// Try to match email autolink after first <, returning num of chars matched. +bufsize_t _scan_autolink_email(const unsigned char *p) { + const unsigned char *marker = NULL; + const unsigned char *start = p; + + { + unsigned char yych; + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 128, 0, 128, 128, 128, 128, 128, 0, 0, + 128, 128, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 128, 0, 128, 0, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 0, 0, 0, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }; + yych = *p; + if (yych <= '9') { + if (yych <= '\'') { + if (yych == '!') + goto yy30; + if (yych >= '#') + goto yy30; + } else { + if (yych <= ')') + goto yy28; + if (yych != ',') + goto yy30; + } + } else { + if (yych <= '?') { + if (yych == '=') + goto yy30; + if (yych >= '?') + goto yy30; + } else { + if (yych <= 'Z') { + if (yych >= 'A') + goto yy30; + } else { + if (yych <= ']') + goto yy28; + if (yych <= '~') + goto yy30; + } + } + } + yy28: + ++p; + yy29 : { return 0; } + yy30: + yych = *(marker = ++p); + if (yych <= ',') { + if (yych <= '"') { + if (yych == '!') + goto yy32; + goto yy29; + } else { + if (yych <= '\'') + goto yy32; + if (yych <= ')') + goto yy29; + if (yych <= '+') + goto yy32; + goto yy29; + } + } else { + if (yych <= '>') { + if (yych <= '9') + goto yy32; + if (yych == '=') + goto yy32; + goto yy29; + } else { + if (yych <= 'Z') + goto yy32; + if (yych <= ']') + goto yy29; + if (yych <= '~') + goto yy32; + goto yy29; + } + } + yy31: + yych = *++p; + yy32: + if (yybm[0 + yych] & 128) { + goto yy31; + } + if (yych <= '>') + goto yy33; + if (yych <= '@') + goto yy34; + yy33: + p = marker; + goto yy29; + yy34: + yych = *++p; + if (yych <= '@') { + if (yych <= '/') + goto yy33; + if (yych >= ':') + goto yy33; + } else { + if (yych <= 'Z') + goto yy35; + if (yych <= '`') + goto yy33; + if (yych >= '{') + goto yy33; + } + yy35: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy36; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy36; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy36; + goto yy33; + } + } + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy38; + if (yych <= '/') + goto yy33; + goto yy39; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy39; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy39; + goto yy33; + } + } + yy36: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych <= '-') + goto yy38; + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy39; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy39; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy39; + goto yy33; + } + } + yy37: + ++p; + { return (bufsize_t)(p - start); } + yy38: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy40; + if (yych <= '/') + goto yy33; + goto yy41; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy41; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy41; + goto yy33; + } + } + yy39: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy41; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy41; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy41; + goto yy33; + } + } + yy40: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy42; + if (yych <= '/') + goto yy33; + goto yy43; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy43; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy43; + goto yy33; + } + } + yy41: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy43; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy43; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy43; + goto yy33; + } + } + yy42: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy44; + if (yych <= '/') + goto yy33; + goto yy45; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy45; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy45; + goto yy33; + } + } + yy43: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy45; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy45; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy45; + goto yy33; + } + } + yy44: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy46; + if (yych <= '/') + goto yy33; + goto yy47; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy47; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy47; + goto yy33; + } + } + yy45: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy47; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy47; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy47; + goto yy33; + } + } + yy46: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy48; + if (yych <= '/') + goto yy33; + goto yy49; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy49; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy49; + goto yy33; + } + } + yy47: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy49; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy49; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy49; + goto yy33; + } + } + yy48: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy50; + if (yych <= '/') + goto yy33; + goto yy51; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy51; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy51; + goto yy33; + } + } + yy49: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy51; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy51; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy51; + goto yy33; + } + } + yy50: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy52; + if (yych <= '/') + goto yy33; + goto yy53; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy53; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy53; + goto yy33; + } + } + yy51: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy53; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy53; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy53; + goto yy33; + } + } + yy52: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy54; + if (yych <= '/') + goto yy33; + goto yy55; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy55; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy55; + goto yy33; + } + } + yy53: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy55; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy55; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy55; + goto yy33; + } + } + yy54: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy56; + if (yych <= '/') + goto yy33; + goto yy57; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy57; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy57; + goto yy33; + } + } + yy55: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy57; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy57; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy57; + goto yy33; + } + } + yy56: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy58; + if (yych <= '/') + goto yy33; + goto yy59; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy59; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy59; + goto yy33; + } + } + yy57: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy59; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy59; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy59; + goto yy33; + } + } + yy58: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy60; + if (yych <= '/') + goto yy33; + goto yy61; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy61; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy61; + goto yy33; + } + } + yy59: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy61; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy61; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy61; + goto yy33; + } + } + yy60: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy62; + if (yych <= '/') + goto yy33; + goto yy63; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy63; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy63; + goto yy33; + } + } + yy61: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy63; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy63; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy63; + goto yy33; + } + } + yy62: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy64; + if (yych <= '/') + goto yy33; + goto yy65; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy65; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy65; + goto yy33; + } + } + yy63: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy65; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy65; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy65; + goto yy33; + } + } + yy64: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy66; + if (yych <= '/') + goto yy33; + goto yy67; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy67; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy67; + goto yy33; + } + } + yy65: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy67; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy67; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy67; + goto yy33; + } + } + yy66: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy68; + if (yych <= '/') + goto yy33; + goto yy69; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy69; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy69; + goto yy33; + } + } + yy67: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy69; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy69; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy69; + goto yy33; + } + } + yy68: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy70; + if (yych <= '/') + goto yy33; + goto yy71; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy71; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy71; + goto yy33; + } + } + yy69: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy71; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy71; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy71; + goto yy33; + } + } + yy70: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy72; + if (yych <= '/') + goto yy33; + goto yy73; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy73; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy73; + goto yy33; + } + } + yy71: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy73; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy73; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy73; + goto yy33; + } + } + yy72: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy74; + if (yych <= '/') + goto yy33; + goto yy75; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy75; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy75; + goto yy33; + } + } + yy73: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy75; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy75; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy75; + goto yy33; + } + } + yy74: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy76; + if (yych <= '/') + goto yy33; + goto yy77; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy77; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy77; + goto yy33; + } + } + yy75: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy77; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy77; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy77; + goto yy33; + } + } + yy76: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy78; + if (yych <= '/') + goto yy33; + goto yy79; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy79; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy79; + goto yy33; + } + } + yy77: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy79; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy79; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy79; + goto yy33; + } + } + yy78: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy80; + if (yych <= '/') + goto yy33; + goto yy81; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy81; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy81; + goto yy33; + } + } + yy79: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy81; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy81; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy81; + goto yy33; + } + } + yy80: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy82; + if (yych <= '/') + goto yy33; + goto yy83; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy83; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy83; + goto yy33; + } + } + yy81: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy83; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy83; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy83; + goto yy33; + } + } + yy82: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy84; + if (yych <= '/') + goto yy33; + goto yy85; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy85; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy85; + goto yy33; + } + } + yy83: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy85; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy85; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy85; + goto yy33; + } + } + yy84: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy86; + if (yych <= '/') + goto yy33; + goto yy87; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy87; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy87; + goto yy33; + } + } + yy85: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy87; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy87; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy87; + goto yy33; + } + } + yy86: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy88; + if (yych <= '/') + goto yy33; + goto yy89; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy89; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy89; + goto yy33; + } + } + yy87: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy89; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy89; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy89; + goto yy33; + } + } + yy88: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy90; + if (yych <= '/') + goto yy33; + goto yy91; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy91; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy91; + goto yy33; + } + } + yy89: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy91; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy91; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy91; + goto yy33; + } + } + yy90: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy92; + if (yych <= '/') + goto yy33; + goto yy93; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy93; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy93; + goto yy33; + } + } + yy91: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy93; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy93; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy93; + goto yy33; + } + } + yy92: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy94; + if (yych <= '/') + goto yy33; + goto yy95; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy95; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy95; + goto yy33; + } + } + yy93: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy95; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy95; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy95; + goto yy33; + } + } + yy94: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy96; + if (yych <= '/') + goto yy33; + goto yy97; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy97; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy97; + goto yy33; + } + } + yy95: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy97; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy97; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy97; + goto yy33; + } + } + yy96: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy98; + if (yych <= '/') + goto yy33; + goto yy99; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy99; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy99; + goto yy33; + } + } + yy97: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy99; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy99; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy99; + goto yy33; + } + } + yy98: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy100; + if (yych <= '/') + goto yy33; + goto yy101; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy101; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy101; + goto yy33; + } + } + yy99: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy101; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy101; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy101; + goto yy33; + } + } + yy100: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy102; + if (yych <= '/') + goto yy33; + goto yy103; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy103; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy103; + goto yy33; + } + } + yy101: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy103; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy103; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy103; + goto yy33; + } + } + yy102: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy104; + if (yych <= '/') + goto yy33; + goto yy105; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy105; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy105; + goto yy33; + } + } + yy103: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy105; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy105; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy105; + goto yy33; + } + } + yy104: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy106; + if (yych <= '/') + goto yy33; + goto yy107; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy107; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy107; + goto yy33; + } + } + yy105: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy107; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy107; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy107; + goto yy33; + } + } + yy106: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy108; + if (yych <= '/') + goto yy33; + goto yy109; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy109; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy109; + goto yy33; + } + } + yy107: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy109; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy109; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy109; + goto yy33; + } + } + yy108: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy110; + if (yych <= '/') + goto yy33; + goto yy111; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy111; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy111; + goto yy33; + } + } + yy109: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy111; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy111; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy111; + goto yy33; + } + } + yy110: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy112; + if (yych <= '/') + goto yy33; + goto yy113; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy113; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy113; + goto yy33; + } + } + yy111: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy113; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy113; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy113; + goto yy33; + } + } + yy112: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy114; + if (yych <= '/') + goto yy33; + goto yy115; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy115; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy115; + goto yy33; + } + } + yy113: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy115; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy115; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy115; + goto yy33; + } + } + yy114: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy116; + if (yych <= '/') + goto yy33; + goto yy117; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy117; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy117; + goto yy33; + } + } + yy115: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy117; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy117; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy117; + goto yy33; + } + } + yy116: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy118; + if (yych <= '/') + goto yy33; + goto yy119; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy119; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy119; + goto yy33; + } + } + yy117: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy119; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy119; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy119; + goto yy33; + } + } + yy118: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy120; + if (yych <= '/') + goto yy33; + goto yy121; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy121; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy121; + goto yy33; + } + } + yy119: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy121; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy121; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy121; + goto yy33; + } + } + yy120: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy122; + if (yych <= '/') + goto yy33; + goto yy123; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy123; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy123; + goto yy33; + } + } + yy121: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy123; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy123; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy123; + goto yy33; + } + } + yy122: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy124; + if (yych <= '/') + goto yy33; + goto yy125; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy125; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy125; + goto yy33; + } + } + yy123: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy125; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy125; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy125; + goto yy33; + } + } + yy124: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy126; + if (yych <= '/') + goto yy33; + goto yy127; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy127; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy127; + goto yy33; + } + } + yy125: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy127; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy127; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy127; + goto yy33; + } + } + yy126: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy128; + if (yych <= '/') + goto yy33; + goto yy129; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy129; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy129; + goto yy33; + } + } + yy127: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy129; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy129; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy129; + goto yy33; + } + } + yy128: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy130; + if (yych <= '/') + goto yy33; + goto yy131; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy131; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy131; + goto yy33; + } + } + yy129: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy131; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy131; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy131; + goto yy33; + } + } + yy130: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy132; + if (yych <= '/') + goto yy33; + goto yy133; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy133; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy133; + goto yy33; + } + } + yy131: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy133; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy133; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy133; + goto yy33; + } + } + yy132: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy134; + if (yych <= '/') + goto yy33; + goto yy135; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy135; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy135; + goto yy33; + } + } + yy133: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy135; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy135; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy135; + goto yy33; + } + } + yy134: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy136; + if (yych <= '/') + goto yy33; + goto yy137; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy137; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy137; + goto yy33; + } + } + yy135: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy137; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy137; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy137; + goto yy33; + } + } + yy136: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy138; + if (yych <= '/') + goto yy33; + goto yy139; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy139; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy139; + goto yy33; + } + } + yy137: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy139; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy139; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy139; + goto yy33; + } + } + yy138: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy140; + if (yych <= '/') + goto yy33; + goto yy141; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy141; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy141; + goto yy33; + } + } + yy139: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy141; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy141; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy141; + goto yy33; + } + } + yy140: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy142; + if (yych <= '/') + goto yy33; + goto yy143; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy143; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy143; + goto yy33; + } + } + yy141: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy143; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy143; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy143; + goto yy33; + } + } + yy142: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy144; + if (yych <= '/') + goto yy33; + goto yy145; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy145; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy145; + goto yy33; + } + } + yy143: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy145; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy145; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy145; + goto yy33; + } + } + yy144: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy146; + if (yych <= '/') + goto yy33; + goto yy147; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy147; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy147; + goto yy33; + } + } + yy145: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy147; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy147; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy147; + goto yy33; + } + } + yy146: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy148; + if (yych <= '/') + goto yy33; + goto yy149; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy149; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy149; + goto yy33; + } + } + yy147: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy149; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy149; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy149; + goto yy33; + } + } + yy148: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy150; + if (yych <= '/') + goto yy33; + goto yy151; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy151; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy151; + goto yy33; + } + } + yy149: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy151; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy151; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy151; + goto yy33; + } + } + yy150: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy152; + if (yych <= '/') + goto yy33; + goto yy153; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy153; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy153; + goto yy33; + } + } + yy151: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy153; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy153; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy153; + goto yy33; + } + } + yy152: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy154; + if (yych <= '/') + goto yy33; + goto yy155; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy155; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy155; + goto yy33; + } + } + yy153: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy155; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy155; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy155; + goto yy33; + } + } + yy154: + yych = *++p; + if (yych <= '9') { + if (yych == '-') + goto yy156; + if (yych <= '/') + goto yy33; + goto yy157; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy33; + goto yy157; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy157; + goto yy33; + } + } + yy155: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= ',') + goto yy33; + if (yych >= '.') + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy157; + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + goto yy157; + } else { + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy157; + goto yy33; + } + } + yy156: + yych = *++p; + if (yych <= '@') { + if (yych <= '/') + goto yy33; + if (yych <= '9') + goto yy158; + goto yy33; + } else { + if (yych <= 'Z') + goto yy158; + if (yych <= '`') + goto yy33; + if (yych <= 'z') + goto yy158; + goto yy33; + } + yy157: + yych = *++p; + if (yych <= '=') { + if (yych <= '.') { + if (yych <= '-') + goto yy33; + goto yy34; + } else { + if (yych <= '/') + goto yy33; + if (yych >= ':') + goto yy33; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy37; + if (yych <= '@') + goto yy33; + } else { + if (yych <= '`') + goto yy33; + if (yych >= '{') + goto yy33; + } + } + yy158: + yych = *++p; + if (yych == '.') + goto yy34; + if (yych == '>') + goto yy37; + goto yy33; + } } -// Try to match email autolink after first <, returning num of chars matched. -bufsize_t _scan_autolink_email(const unsigned char *p) -{ +// Try to match an HTML tag after first <, returning num of chars matched. +bufsize_t _scan_html_tag(const unsigned char *p) { const unsigned char *marker = NULL; const unsigned char *start = p; -{ - unsigned char yych; - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 128, 0, 128, 128, 128, 128, 128, - 0, 0, 128, 128, 0, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 128, 0, 128, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - yych = *p; - if (yych <= '9') { - if (yych <= '\'') { - if (yych == '!') goto yy91; - if (yych >= '#') goto yy91; - } else { - if (yych <= ')') goto yy89; - if (yych != ',') goto yy91; - } - } else { - if (yych <= '?') { - if (yych == '=') goto yy91; - if (yych >= '?') goto yy91; - } else { - if (yych <= 'Z') { - if (yych >= 'A') goto yy91; - } else { - if (yych <= ']') goto yy89; - if (yych <= '~') goto yy91; - } - } - } -yy89: - ++p; -yy90: - { return 0; } -yy91: - yych = *(marker = ++p); - if (yych <= ',') { - if (yych <= '"') { - if (yych == '!') goto yy93; - goto yy90; - } else { - if (yych <= '\'') goto yy93; - if (yych <= ')') goto yy90; - if (yych <= '+') goto yy93; - goto yy90; - } - } else { - if (yych <= '>') { - if (yych <= '9') goto yy93; - if (yych == '=') goto yy93; - goto yy90; - } else { - if (yych <= 'Z') goto yy93; - if (yych <= ']') goto yy90; - if (yych <= '~') goto yy93; - goto yy90; - } - } -yy92: - yych = *++p; -yy93: - if (yybm[0+yych] & 128) { - goto yy92; - } - if (yych <= '>') goto yy94; - if (yych <= '@') goto yy95; -yy94: - p = marker; - goto yy90; -yy95: - yych = *++p; - if (yych <= '@') { - if (yych <= '/') goto yy94; - if (yych >= ':') goto yy94; - } else { - if (yych <= 'Z') goto yy96; - if (yych <= '`') goto yy94; - if (yych >= '{') goto yy94; - } -yy96: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy98; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy98; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy98; - goto yy94; - } - } - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy101; - if (yych <= '/') goto yy94; - goto yy102; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy102; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy102; - goto yy94; - } - } -yy98: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych <= '-') goto yy101; - goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy102; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy102; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy102; - goto yy94; - } - } -yy99: - ++p; - { return (bufsize_t)(p - start); } -yy101: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy103; - if (yych <= '/') goto yy94; - goto yy104; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy104; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy104; - goto yy94; - } - } -yy102: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy104; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy104; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy104; - goto yy94; - } - } -yy103: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy105; - if (yych <= '/') goto yy94; - goto yy106; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy106; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy106; - goto yy94; - } - } -yy104: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy106; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy106; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy106; - goto yy94; - } - } -yy105: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy107; - if (yych <= '/') goto yy94; - goto yy108; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy108; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy108; - goto yy94; - } - } -yy106: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy108; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy108; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy108; - goto yy94; - } - } -yy107: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy109; - if (yych <= '/') goto yy94; - goto yy110; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy110; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy110; - goto yy94; - } - } -yy108: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy110; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy110; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy110; - goto yy94; - } - } -yy109: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy111; - if (yych <= '/') goto yy94; - goto yy112; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy112; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy112; - goto yy94; - } - } -yy110: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy112; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy112; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy112; - goto yy94; - } - } -yy111: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy113; - if (yych <= '/') goto yy94; - goto yy114; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy114; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy114; - goto yy94; - } - } -yy112: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy114; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy114; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy114; - goto yy94; - } - } -yy113: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy115; - if (yych <= '/') goto yy94; - goto yy116; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy116; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy116; - goto yy94; - } - } -yy114: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy116; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy116; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy116; - goto yy94; - } - } -yy115: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy117; - if (yych <= '/') goto yy94; - goto yy118; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy118; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy118; - goto yy94; - } - } -yy116: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy118; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy118; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy118; - goto yy94; - } - } -yy117: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy119; - if (yych <= '/') goto yy94; - goto yy120; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy120; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy120; - goto yy94; - } - } -yy118: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy120; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy120; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy120; - goto yy94; - } - } -yy119: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy121; - if (yych <= '/') goto yy94; - goto yy122; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy122; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy122; - goto yy94; - } - } -yy120: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy122; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy122; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy122; - goto yy94; - } - } -yy121: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy123; - if (yych <= '/') goto yy94; - goto yy124; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy124; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy124; - goto yy94; - } - } -yy122: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy124; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy124; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy124; - goto yy94; - } - } -yy123: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy125; - if (yych <= '/') goto yy94; - goto yy126; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy126; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy126; - goto yy94; - } - } -yy124: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy126; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy126; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy126; - goto yy94; - } - } -yy125: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy127; - if (yych <= '/') goto yy94; - goto yy128; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy128; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy128; - goto yy94; - } - } -yy126: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy128; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy128; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy128; - goto yy94; - } - } -yy127: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy129; - if (yych <= '/') goto yy94; - goto yy130; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy130; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy130; - goto yy94; - } - } -yy128: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy130; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy130; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy130; - goto yy94; - } - } -yy129: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy131; - if (yych <= '/') goto yy94; - goto yy132; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy132; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy132; - goto yy94; - } - } -yy130: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy132; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy132; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy132; - goto yy94; - } - } -yy131: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy133; - if (yych <= '/') goto yy94; - goto yy134; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy134; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy134; - goto yy94; - } - } -yy132: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy134; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy134; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy134; - goto yy94; - } - } -yy133: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy135; - if (yych <= '/') goto yy94; - goto yy136; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy136; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy136; - goto yy94; - } - } -yy134: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy136; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy136; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy136; - goto yy94; - } - } -yy135: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy137; - if (yych <= '/') goto yy94; - goto yy138; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy138; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy138; - goto yy94; - } - } -yy136: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy138; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy138; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy138; - goto yy94; - } - } -yy137: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy139; - if (yych <= '/') goto yy94; - goto yy140; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy140; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy140; - goto yy94; - } - } -yy138: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy140; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy140; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy140; - goto yy94; - } - } -yy139: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy141; - if (yych <= '/') goto yy94; - goto yy142; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy142; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy142; - goto yy94; - } - } -yy140: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy142; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy142; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy142; - goto yy94; - } - } -yy141: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy143; - if (yych <= '/') goto yy94; - goto yy144; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy144; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy144; - goto yy94; - } - } -yy142: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy144; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy144; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy144; - goto yy94; - } - } -yy143: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy145; - if (yych <= '/') goto yy94; - goto yy146; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy146; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy146; - goto yy94; - } - } -yy144: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy146; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy146; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy146; - goto yy94; - } - } -yy145: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy147; - if (yych <= '/') goto yy94; - goto yy148; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy148; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy148; - goto yy94; - } - } -yy146: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy148; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy148; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy148; - goto yy94; - } - } -yy147: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy149; - if (yych <= '/') goto yy94; - goto yy150; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy150; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy150; - goto yy94; - } - } -yy148: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy150; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy150; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy150; - goto yy94; - } - } -yy149: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy151; - if (yych <= '/') goto yy94; - goto yy152; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy152; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy152; - goto yy94; - } - } -yy150: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy152; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy152; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy152; - goto yy94; - } - } -yy151: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy153; - if (yych <= '/') goto yy94; - goto yy154; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy154; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy154; - goto yy94; - } - } -yy152: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy154; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy154; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy154; - goto yy94; - } - } -yy153: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy155; - if (yych <= '/') goto yy94; - goto yy156; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy156; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy156; - goto yy94; - } - } -yy154: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy156; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy156; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy156; - goto yy94; - } - } -yy155: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy157; - if (yych <= '/') goto yy94; - goto yy158; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy158; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy158; - goto yy94; - } - } -yy156: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy158; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy158; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy158; - goto yy94; - } - } -yy157: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy159; - if (yych <= '/') goto yy94; - goto yy160; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy160; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy160; - goto yy94; - } - } -yy158: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy160; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy160; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy160; - goto yy94; - } - } -yy159: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy161; - if (yych <= '/') goto yy94; - goto yy162; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy162; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy162; - goto yy94; - } - } -yy160: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy162; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy162; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy162; - goto yy94; - } - } -yy161: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy163; - if (yych <= '/') goto yy94; - goto yy164; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy164; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy164; - goto yy94; - } - } -yy162: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy164; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy164; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy164; - goto yy94; - } - } -yy163: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy165; - if (yych <= '/') goto yy94; - goto yy166; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy166; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy166; - goto yy94; - } - } -yy164: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy166; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy166; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy166; - goto yy94; - } - } -yy165: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy167; - if (yych <= '/') goto yy94; - goto yy168; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy168; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy168; - goto yy94; - } - } -yy166: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy168; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy168; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy168; - goto yy94; - } - } -yy167: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy169; - if (yych <= '/') goto yy94; - goto yy170; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy170; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy170; - goto yy94; - } - } -yy168: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy170; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy170; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy170; - goto yy94; - } - } -yy169: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy171; - if (yych <= '/') goto yy94; - goto yy172; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy172; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy172; - goto yy94; - } - } -yy170: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy172; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy172; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy172; - goto yy94; - } - } -yy171: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy173; - if (yych <= '/') goto yy94; - goto yy174; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy174; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy174; - goto yy94; - } - } -yy172: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy174; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy174; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy174; - goto yy94; - } - } -yy173: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy175; - if (yych <= '/') goto yy94; - goto yy176; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy176; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy176; - goto yy94; - } - } -yy174: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy176; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy176; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy176; - goto yy94; - } - } -yy175: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy177; - if (yych <= '/') goto yy94; - goto yy178; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy178; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy178; - goto yy94; - } - } -yy176: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy178; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy178; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy178; - goto yy94; - } - } -yy177: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy179; - if (yych <= '/') goto yy94; - goto yy180; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy180; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy180; - goto yy94; - } - } -yy178: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy180; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy180; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy180; - goto yy94; - } - } -yy179: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy181; - if (yych <= '/') goto yy94; - goto yy182; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy182; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy182; - goto yy94; - } - } -yy180: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy182; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy182; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy182; - goto yy94; - } - } -yy181: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy183; - if (yych <= '/') goto yy94; - goto yy184; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy184; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy184; - goto yy94; - } - } -yy182: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy184; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy184; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy184; - goto yy94; - } - } -yy183: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy185; - if (yych <= '/') goto yy94; - goto yy186; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy186; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy186; - goto yy94; - } - } -yy184: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy186; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy186; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy186; - goto yy94; - } - } -yy185: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy187; - if (yych <= '/') goto yy94; - goto yy188; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy188; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy188; - goto yy94; - } - } -yy186: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy188; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy188; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy188; - goto yy94; - } - } -yy187: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy189; - if (yych <= '/') goto yy94; - goto yy190; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy190; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy190; - goto yy94; - } - } -yy188: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy190; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy190; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy190; - goto yy94; - } - } -yy189: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy191; - if (yych <= '/') goto yy94; - goto yy192; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy192; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy192; - goto yy94; - } - } -yy190: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy192; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy192; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy192; - goto yy94; - } - } -yy191: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy193; - if (yych <= '/') goto yy94; - goto yy194; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy194; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy194; - goto yy94; - } - } -yy192: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy194; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy194; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy194; - goto yy94; - } - } -yy193: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy195; - if (yych <= '/') goto yy94; - goto yy196; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy196; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy196; - goto yy94; - } - } -yy194: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy196; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy196; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy196; - goto yy94; - } - } -yy195: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy197; - if (yych <= '/') goto yy94; - goto yy198; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy198; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy198; - goto yy94; - } - } -yy196: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy198; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy198; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy198; - goto yy94; - } - } -yy197: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy199; - if (yych <= '/') goto yy94; - goto yy200; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy200; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy200; - goto yy94; - } - } -yy198: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy200; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy200; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy200; - goto yy94; - } - } -yy199: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy201; - if (yych <= '/') goto yy94; - goto yy202; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy202; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy202; - goto yy94; - } - } -yy200: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy202; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy202; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy202; - goto yy94; - } - } -yy201: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy203; - if (yych <= '/') goto yy94; - goto yy204; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy204; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy204; - goto yy94; - } - } -yy202: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy204; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy204; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy204; - goto yy94; - } - } -yy203: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy205; - if (yych <= '/') goto yy94; - goto yy206; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy206; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy206; - goto yy94; - } - } -yy204: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy206; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy206; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy206; - goto yy94; - } - } -yy205: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy207; - if (yych <= '/') goto yy94; - goto yy208; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy208; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy208; - goto yy94; - } - } -yy206: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy208; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy208; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy208; - goto yy94; - } - } -yy207: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy209; - if (yych <= '/') goto yy94; - goto yy210; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy210; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy210; - goto yy94; - } - } -yy208: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy210; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy210; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy210; - goto yy94; - } - } -yy209: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy211; - if (yych <= '/') goto yy94; - goto yy212; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy212; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy212; - goto yy94; - } - } -yy210: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy212; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy212; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy212; - goto yy94; - } - } -yy211: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy213; - if (yych <= '/') goto yy94; - goto yy214; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy214; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy214; - goto yy94; - } - } -yy212: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy214; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy214; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy214; - goto yy94; - } - } -yy213: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy215; - if (yych <= '/') goto yy94; - goto yy216; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy216; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy216; - goto yy94; - } - } -yy214: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy216; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy216; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy216; - goto yy94; - } - } -yy215: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy217; - if (yych <= '/') goto yy94; - goto yy218; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy218; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy218; - goto yy94; - } - } -yy216: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy218; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy218; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy218; - goto yy94; - } - } -yy217: - yych = *++p; - if (yych <= '9') { - if (yych == '-') goto yy219; - if (yych <= '/') goto yy94; - goto yy220; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy94; - goto yy220; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy220; - goto yy94; - } - } -yy218: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= ',') goto yy94; - if (yych >= '.') goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy220; - goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - goto yy220; - } else { - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy220; - goto yy94; - } - } -yy219: - yych = *++p; - if (yych <= '@') { - if (yych <= '/') goto yy94; - if (yych <= '9') goto yy221; - goto yy94; - } else { - if (yych <= 'Z') goto yy221; - if (yych <= '`') goto yy94; - if (yych <= 'z') goto yy221; - goto yy94; - } -yy220: - yych = *++p; - if (yych <= '=') { - if (yych <= '.') { - if (yych <= '-') goto yy94; - goto yy95; - } else { - if (yych <= '/') goto yy94; - if (yych >= ':') goto yy94; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy99; - if (yych <= '@') goto yy94; - } else { - if (yych <= '`') goto yy94; - if (yych >= '{') goto yy94; - } - } -yy221: - yych = *++p; - if (yych == '.') goto yy95; - if (yych == '>') goto yy99; - goto yy94; + { + unsigned char yych; + static const unsigned char yybm[] = { + 0, 224, 224, 224, 224, 224, 224, 224, 224, 200, 200, 200, 200, 200, + 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, + 224, 224, 224, 224, 200, 224, 128, 224, 224, 224, 224, 64, 224, 224, + 224, 224, 224, 244, 240, 224, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 240, 224, 192, 192, 192, 224, 224, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 224, 224, 224, 224, 240, 192, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 224, 224, 224, + 224, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }; + yych = *p; + if (yych <= '@') { + if (yych == '/') + goto yy162; + } else { + if (yych <= 'Z') + goto yy163; + if (yych <= '`') + goto yy160; + if (yych <= 'z') + goto yy163; + } + yy160: + ++p; + yy161 : { return 0; } + yy162: + yych = *(marker = ++p); + if (yych <= '@') + goto yy161; + if (yych <= 'Z') + goto yy164; + if (yych <= '`') + goto yy161; + if (yych <= 'z') + goto yy164; + goto yy161; + yy163: + yych = *(marker = ++p); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych <= 0x08) + goto yy161; + if (yych <= '\r') + goto yy168; + goto yy161; + } else { + if (yych <= ' ') + goto yy168; + if (yych == '-') + goto yy168; + goto yy161; + } + } else { + if (yych <= '@') { + if (yych <= '9') + goto yy168; + if (yych == '>') + goto yy168; + goto yy161; + } else { + if (yych <= 'Z') + goto yy168; + if (yych <= '`') + goto yy161; + if (yych <= 'z') + goto yy168; + goto yy161; + } + } + yy164: + yych = *++p; + if (yybm[0 + yych] & 4) { + goto yy164; + } + if (yych <= 0x1F) { + if (yych <= 0x08) + goto yy165; + if (yych <= '\r') + goto yy171; + } else { + if (yych <= ' ') + goto yy171; + if (yych == '>') + goto yy170; + } + yy165: + p = marker; + goto yy161; + yy166: + yych = *++p; + if (yybm[0 + yych] & 8) { + goto yy166; + } + if (yych <= '>') { + if (yych <= '9') { + if (yych == '/') + goto yy169; + goto yy165; + } else { + if (yych <= ':') + goto yy172; + if (yych <= '=') + goto yy165; + goto yy170; + } + } else { + if (yych <= '^') { + if (yych <= '@') + goto yy165; + if (yych <= 'Z') + goto yy172; + goto yy165; + } else { + if (yych == '`') + goto yy165; + if (yych <= 'z') + goto yy172; + goto yy165; + } + } + yy167: + yych = *++p; + yy168: + if (yybm[0 + yych] & 8) { + goto yy166; + } + if (yych <= '=') { + if (yych <= '.') { + if (yych == '-') + goto yy167; + goto yy165; + } else { + if (yych <= '/') + goto yy169; + if (yych <= '9') + goto yy167; + goto yy165; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy170; + if (yych <= '@') + goto yy165; + goto yy167; + } else { + if (yych <= '`') + goto yy165; + if (yych <= 'z') + goto yy167; + goto yy165; + } + } + yy169: + yych = *++p; + if (yych != '>') + goto yy165; + yy170: + ++p; + { return (bufsize_t)(p - start); } + yy171: + yych = *++p; + if (yych <= 0x1F) { + if (yych <= 0x08) + goto yy165; + if (yych <= '\r') + goto yy171; + goto yy165; + } else { + if (yych <= ' ') + goto yy171; + if (yych == '>') + goto yy170; + goto yy165; + } + yy172: + yych = *++p; + if (yybm[0 + yych] & 16) { + goto yy172; + } + if (yych <= ',') { + if (yych <= '\r') { + if (yych <= 0x08) + goto yy165; + } else { + if (yych != ' ') + goto yy165; + } + } else { + if (yych <= '<') { + if (yych <= '/') + goto yy169; + goto yy165; + } else { + if (yych <= '=') + goto yy174; + if (yych <= '>') + goto yy170; + goto yy165; + } + } + yy173: + yych = *++p; + if (yych <= '<') { + if (yych <= ' ') { + if (yych <= 0x08) + goto yy165; + if (yych <= '\r') + goto yy173; + if (yych <= 0x1F) + goto yy165; + goto yy173; + } else { + if (yych <= '/') { + if (yych <= '.') + goto yy165; + goto yy169; + } else { + if (yych == ':') + goto yy172; + goto yy165; + } + } + } else { + if (yych <= 'Z') { + if (yych <= '=') + goto yy174; + if (yych <= '>') + goto yy170; + if (yych <= '@') + goto yy165; + goto yy172; + } else { + if (yych <= '_') { + if (yych <= '^') + goto yy165; + goto yy172; + } else { + if (yych <= '`') + goto yy165; + if (yych <= 'z') + goto yy172; + goto yy165; + } + } + } + yy174: + yych = *++p; + if (yybm[0 + yych] & 32) { + goto yy175; + } + if (yych <= 0xE0) { + if (yych <= '"') { + if (yych <= 0x00) + goto yy165; + if (yych <= ' ') + goto yy174; + goto yy176; + } else { + if (yych <= '\'') + goto yy177; + if (yych <= 0xC1) + goto yy165; + if (yych <= 0xDF) + goto yy178; + goto yy179; + } + } else { + if (yych <= 0xEF) { + if (yych == 0xED) + goto yy181; + goto yy180; + } else { + if (yych <= 0xF0) + goto yy182; + if (yych <= 0xF3) + goto yy183; + if (yych <= 0xF4) + goto yy184; + goto yy165; + } + } + yy175: + yych = *++p; + if (yybm[0 + yych] & 32) { + goto yy175; + } + if (yych <= 0xE0) { + if (yych <= '=') { + if (yych <= 0x00) + goto yy165; + if (yych <= ' ') + goto yy166; + goto yy165; + } else { + if (yych <= '>') + goto yy170; + if (yych <= 0xC1) + goto yy165; + if (yych <= 0xDF) + goto yy178; + goto yy179; + } + } else { + if (yych <= 0xEF) { + if (yych == 0xED) + goto yy181; + goto yy180; + } else { + if (yych <= 0xF0) + goto yy182; + if (yych <= 0xF3) + goto yy183; + if (yych <= 0xF4) + goto yy184; + goto yy165; + } + } + yy176: + yych = *++p; + if (yybm[0 + yych] & 64) { + goto yy176; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= 0x00) + goto yy165; + if (yych <= '"') + goto yy185; + goto yy165; + } else { + if (yych <= 0xDF) + goto yy186; + if (yych <= 0xE0) + goto yy187; + goto yy188; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy189; + if (yych <= 0xEF) + goto yy188; + goto yy190; + } else { + if (yych <= 0xF3) + goto yy191; + if (yych <= 0xF4) + goto yy192; + goto yy165; + } + } + yy177: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy177; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= 0x00) + goto yy165; + if (yych <= '\'') + goto yy185; + goto yy165; + } else { + if (yych <= 0xDF) + goto yy193; + if (yych <= 0xE0) + goto yy194; + goto yy195; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy196; + if (yych <= 0xEF) + goto yy195; + goto yy197; + } else { + if (yych <= 0xF3) + goto yy198; + if (yych <= 0xF4) + goto yy199; + goto yy165; + } + } + yy178: + yych = *++p; + if (yych <= 0x7F) + goto yy165; + if (yych <= 0xBF) + goto yy175; + goto yy165; + yy179: + yych = *++p; + if (yych <= 0x9F) + goto yy165; + if (yych <= 0xBF) + goto yy178; + goto yy165; + yy180: + yych = *++p; + if (yych <= 0x7F) + goto yy165; + if (yych <= 0xBF) + goto yy178; + goto yy165; + yy181: + yych = *++p; + if (yych <= 0x7F) + goto yy165; + if (yych <= 0x9F) + goto yy178; + goto yy165; + yy182: + yych = *++p; + if (yych <= 0x8F) + goto yy165; + if (yych <= 0xBF) + goto yy180; + goto yy165; + yy183: + yych = *++p; + if (yych <= 0x7F) + goto yy165; + if (yych <= 0xBF) + goto yy180; + goto yy165; + yy184: + yych = *++p; + if (yych <= 0x7F) + goto yy165; + if (yych <= 0x8F) + goto yy180; + goto yy165; + yy185: + yych = *++p; + if (yybm[0 + yych] & 8) { + goto yy166; + } + if (yych == '/') + goto yy169; + if (yych == '>') + goto yy170; + goto yy165; + yy186: + yych = *++p; + if (yych <= 0x7F) + goto yy165; + if (yych <= 0xBF) + goto yy176; + goto yy165; + yy187: + yych = *++p; + if (yych <= 0x9F) + goto yy165; + if (yych <= 0xBF) + goto yy186; + goto yy165; + yy188: + yych = *++p; + if (yych <= 0x7F) + goto yy165; + if (yych <= 0xBF) + goto yy186; + goto yy165; + yy189: + yych = *++p; + if (yych <= 0x7F) + goto yy165; + if (yych <= 0x9F) + goto yy186; + goto yy165; + yy190: + yych = *++p; + if (yych <= 0x8F) + goto yy165; + if (yych <= 0xBF) + goto yy188; + goto yy165; + yy191: + yych = *++p; + if (yych <= 0x7F) + goto yy165; + if (yych <= 0xBF) + goto yy188; + goto yy165; + yy192: + yych = *++p; + if (yych <= 0x7F) + goto yy165; + if (yych <= 0x8F) + goto yy188; + goto yy165; + yy193: + yych = *++p; + if (yych <= 0x7F) + goto yy165; + if (yych <= 0xBF) + goto yy177; + goto yy165; + yy194: + yych = *++p; + if (yych <= 0x9F) + goto yy165; + if (yych <= 0xBF) + goto yy193; + goto yy165; + yy195: + yych = *++p; + if (yych <= 0x7F) + goto yy165; + if (yych <= 0xBF) + goto yy193; + goto yy165; + yy196: + yych = *++p; + if (yych <= 0x7F) + goto yy165; + if (yych <= 0x9F) + goto yy193; + goto yy165; + yy197: + yych = *++p; + if (yych <= 0x8F) + goto yy165; + if (yych <= 0xBF) + goto yy195; + goto yy165; + yy198: + yych = *++p; + if (yych <= 0x7F) + goto yy165; + if (yych <= 0xBF) + goto yy195; + goto yy165; + yy199: + yych = *++p; + if (yych <= 0x7F) + goto yy165; + if (yych <= 0x8F) + goto yy195; + goto yy165; + } } +// Try to (liberally) match an HTML tag after first <, returning num of chars +// matched. +bufsize_t _scan_liberal_html_tag(const unsigned char *p) { + const unsigned char *marker = NULL; + const unsigned char *start = p; + + { + unsigned char yych; + unsigned int yyaccept = 0; + static const unsigned char yybm[] = { + 0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }; + yych = *p; + if (yych <= 0xE0) { + if (yych <= '\n') { + if (yych <= 0x00) + goto yy201; + if (yych <= '\t') + goto yy203; + } else { + if (yych <= 0x7F) + goto yy203; + if (yych <= 0xC1) + goto yy201; + if (yych <= 0xDF) + goto yy204; + goto yy205; + } + } else { + if (yych <= 0xEF) { + if (yych == 0xED) + goto yy207; + goto yy206; + } else { + if (yych <= 0xF0) + goto yy208; + if (yych <= 0xF3) + goto yy209; + if (yych <= 0xF4) + goto yy210; + } + } + yy201: + ++p; + yy202 : { return 0; } + yy203: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= '\n') { + if (yych <= 0x00) + goto yy202; + if (yych <= '\t') + goto yy212; + goto yy202; + } else { + if (yych <= 0x7F) + goto yy212; + if (yych <= 0xC1) + goto yy202; + if (yych <= 0xF4) + goto yy212; + goto yy202; + } + yy204: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy202; + if (yych <= 0xBF) + goto yy211; + goto yy202; + yy205: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x9F) + goto yy202; + if (yych <= 0xBF) + goto yy216; + goto yy202; + yy206: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy202; + if (yych <= 0xBF) + goto yy216; + goto yy202; + yy207: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy202; + if (yych <= 0x9F) + goto yy216; + goto yy202; + yy208: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x8F) + goto yy202; + if (yych <= 0xBF) + goto yy218; + goto yy202; + yy209: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy202; + if (yych <= 0xBF) + goto yy218; + goto yy202; + yy210: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy202; + if (yych <= 0x8F) + goto yy218; + goto yy202; + yy211: + yych = *++p; + yy212: + if (yybm[0 + yych] & 64) { + goto yy211; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy213; + if (yych <= '>') + goto yy214; + } else { + if (yych <= 0xDF) + goto yy216; + if (yych <= 0xE0) + goto yy217; + goto yy218; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy219; + if (yych <= 0xEF) + goto yy218; + goto yy220; + } else { + if (yych <= 0xF3) + goto yy221; + if (yych <= 0xF4) + goto yy222; + } + } + yy213: + p = marker; + if (yyaccept == 0) { + goto yy202; + } else { + goto yy215; + } + yy214: + yyaccept = 1; + yych = *(marker = ++p); + if (yybm[0 + yych] & 64) { + goto yy211; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy215; + if (yych <= '>') + goto yy214; + } else { + if (yych <= 0xDF) + goto yy216; + if (yych <= 0xE0) + goto yy217; + goto yy218; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy219; + if (yych <= 0xEF) + goto yy218; + goto yy220; + } else { + if (yych <= 0xF3) + goto yy221; + if (yych <= 0xF4) + goto yy222; + } + } + yy215 : { return (bufsize_t)(p - start); } + yy216: + yych = *++p; + if (yych <= 0x7F) + goto yy213; + if (yych <= 0xBF) + goto yy211; + goto yy213; + yy217: + yych = *++p; + if (yych <= 0x9F) + goto yy213; + if (yych <= 0xBF) + goto yy216; + goto yy213; + yy218: + yych = *++p; + if (yych <= 0x7F) + goto yy213; + if (yych <= 0xBF) + goto yy216; + goto yy213; + yy219: + yych = *++p; + if (yych <= 0x7F) + goto yy213; + if (yych <= 0x9F) + goto yy216; + goto yy213; + yy220: + yych = *++p; + if (yych <= 0x8F) + goto yy213; + if (yych <= 0xBF) + goto yy218; + goto yy213; + yy221: + yych = *++p; + if (yych <= 0x7F) + goto yy213; + if (yych <= 0xBF) + goto yy218; + goto yy213; + yy222: + yych = *++p; + if (yych <= 0x7F) + goto yy213; + if (yych <= 0x8F) + goto yy218; + goto yy213; + } } -// Try to match an HTML tag after first <, returning num of chars matched. -bufsize_t _scan_html_tag(const unsigned char *p) -{ +bufsize_t _scan_html_comment(const unsigned char *p) { const unsigned char *marker = NULL; const unsigned char *start = p; -{ - unsigned char yych; - static const unsigned char yybm[] = { - /* table 1 .. 8: 0 */ - 0, 250, 250, 250, 250, 250, 250, 250, - 250, 235, 235, 235, 235, 235, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 250, - 235, 250, 202, 250, 250, 250, 250, 170, - 250, 250, 250, 250, 250, 246, 254, 250, - 254, 254, 254, 254, 254, 254, 254, 254, - 254, 254, 254, 250, 234, 234, 232, 250, - 250, 254, 254, 254, 254, 254, 254, 254, - 254, 254, 254, 254, 254, 254, 254, 254, - 254, 254, 254, 254, 254, 254, 254, 254, - 254, 254, 254, 250, 250, 122, 250, 254, - 234, 254, 254, 254, 254, 254, 254, 254, - 254, 254, 254, 254, 254, 254, 254, 254, - 254, 254, 254, 254, 254, 254, 254, 254, - 254, 254, 254, 250, 250, 250, 250, 250, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - /* table 9 .. 11: 256 */ - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 192, 128, 128, - 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 128, 128, 128, 128, 128, 0, - 128, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 128, 128, 128, 128, 128, - 128, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 128, 128, 128, 128, 128, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - yych = *p; - if (yych <= '>') { - if (yych <= '!') { - if (yych >= '!') goto yy226; - } else { - if (yych == '/') goto yy227; - } - } else { - if (yych <= 'Z') { - if (yych <= '?') goto yy228; - if (yych >= 'A') goto yy229; - } else { - if (yych <= '`') goto yy224; - if (yych <= 'z') goto yy229; - } - } -yy224: - ++p; -yy225: - { return 0; } -yy226: - yych = *(marker = ++p); - if (yybm[256+yych] & 32) { - goto yy232; - } - if (yych == '-') goto yy230; - if (yych <= '@') goto yy225; - if (yych <= '[') goto yy234; - goto yy225; -yy227: - yych = *(marker = ++p); - if (yych <= '@') goto yy225; - if (yych <= 'Z') goto yy235; - if (yych <= '`') goto yy225; - if (yych <= 'z') goto yy235; - goto yy225; -yy228: - yych = *(marker = ++p); - if (yych <= 0x00) goto yy225; - if (yych <= 0x7F) goto yy238; - if (yych <= 0xC1) goto yy225; - if (yych <= 0xF4) goto yy238; - goto yy225; -yy229: - yych = *(marker = ++p); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych <= 0x08) goto yy225; - if (yych <= '\r') goto yy250; - goto yy225; - } else { - if (yych <= ' ') goto yy250; - if (yych == '-') goto yy250; - goto yy225; - } - } else { - if (yych <= '@') { - if (yych <= '9') goto yy250; - if (yych == '>') goto yy250; - goto yy225; - } else { - if (yych <= 'Z') goto yy250; - if (yych <= '`') goto yy225; - if (yych <= 'z') goto yy250; - goto yy225; - } - } -yy230: - yych = *++p; - if (yych == '-') goto yy254; -yy231: - p = marker; - goto yy225; -yy232: - yych = *++p; - if (yybm[256+yych] & 32) { - goto yy232; - } - if (yych <= 0x08) goto yy231; - if (yych <= '\r') goto yy255; - if (yych == ' ') goto yy255; - goto yy231; -yy234: - yych = *++p; - if (yych == 'C') goto yy257; - if (yych == 'c') goto yy257; - goto yy231; -yy235: - yych = *++p; - if (yybm[256+yych] & 64) { - goto yy235; - } - if (yych <= 0x1F) { - if (yych <= 0x08) goto yy231; - if (yych <= '\r') goto yy258; - goto yy231; - } else { - if (yych <= ' ') goto yy258; - if (yych == '>') goto yy252; - goto yy231; - } -yy237: - yych = *++p; -yy238: - if (yybm[256+yych] & 128) { - goto yy237; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x00) goto yy231; - if (yych >= '@') goto yy231; - } else { - if (yych <= 0xDF) goto yy240; - if (yych <= 0xE0) goto yy241; - goto yy242; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy243; - if (yych <= 0xEF) goto yy242; - goto yy244; - } else { - if (yych <= 0xF3) goto yy245; - if (yych <= 0xF4) goto yy246; - goto yy231; - } - } - yych = *++p; - if (yych <= 0xE0) { - if (yych <= '>') { - if (yych <= 0x00) goto yy231; - if (yych <= '=') goto yy237; - goto yy252; - } else { - if (yych <= 0x7F) goto yy237; - if (yych <= 0xC1) goto yy231; - if (yych >= 0xE0) goto yy241; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) goto yy243; - goto yy242; - } else { - if (yych <= 0xF0) goto yy244; - if (yych <= 0xF3) goto yy245; - if (yych <= 0xF4) goto yy246; - goto yy231; - } - } -yy240: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0xBF) goto yy237; - goto yy231; -yy241: - yych = *++p; - if (yych <= 0x9F) goto yy231; - if (yych <= 0xBF) goto yy240; - goto yy231; -yy242: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0xBF) goto yy240; - goto yy231; -yy243: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0x9F) goto yy240; - goto yy231; -yy244: - yych = *++p; - if (yych <= 0x8F) goto yy231; - if (yych <= 0xBF) goto yy242; - goto yy231; -yy245: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0xBF) goto yy242; - goto yy231; -yy246: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0x8F) goto yy242; - goto yy231; -yy247: - yych = *++p; - if (yybm[0+yych] & 1) { - goto yy247; - } - if (yych <= '>') { - if (yych <= '9') { - if (yych == '/') goto yy251; - goto yy231; - } else { - if (yych <= ':') goto yy260; - if (yych <= '=') goto yy231; - goto yy252; - } - } else { - if (yych <= '^') { - if (yych <= '@') goto yy231; - if (yych <= 'Z') goto yy260; - goto yy231; - } else { - if (yych == '`') goto yy231; - if (yych <= 'z') goto yy260; - goto yy231; - } - } -yy249: - yych = *++p; -yy250: - if (yybm[0+yych] & 1) { - goto yy247; - } - if (yych <= '=') { - if (yych <= '.') { - if (yych == '-') goto yy249; - goto yy231; - } else { - if (yych <= '/') goto yy251; - if (yych <= '9') goto yy249; - goto yy231; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy252; - if (yych <= '@') goto yy231; - goto yy249; - } else { - if (yych <= '`') goto yy231; - if (yych <= 'z') goto yy249; - goto yy231; - } - } -yy251: - yych = *++p; - if (yych != '>') goto yy231; -yy252: - ++p; - { return (bufsize_t)(p - start); } -yy254: - yych = *++p; - if (yych == '-') goto yy264; - if (yych == '>') goto yy231; - goto yy263; -yy255: - yych = *++p; - if (yybm[0+yych] & 2) { - goto yy255; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x00) goto yy231; - if (yych <= '>') goto yy252; - goto yy231; - } else { - if (yych <= 0xDF) goto yy272; - if (yych <= 0xE0) goto yy273; - goto yy274; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy275; - if (yych <= 0xEF) goto yy274; - goto yy276; - } else { - if (yych <= 0xF3) goto yy277; - if (yych <= 0xF4) goto yy278; - goto yy231; - } - } -yy257: - yych = *++p; - if (yych == 'D') goto yy279; - if (yych == 'd') goto yy279; - goto yy231; -yy258: - yych = *++p; - if (yych <= 0x1F) { - if (yych <= 0x08) goto yy231; - if (yych <= '\r') goto yy258; - goto yy231; - } else { - if (yych <= ' ') goto yy258; - if (yych == '>') goto yy252; - goto yy231; - } -yy260: - yych = *++p; - if (yybm[0+yych] & 4) { - goto yy260; - } - if (yych <= ',') { - if (yych <= '\r') { - if (yych <= 0x08) goto yy231; - goto yy280; - } else { - if (yych == ' ') goto yy280; - goto yy231; - } - } else { - if (yych <= '<') { - if (yych <= '/') goto yy251; - goto yy231; - } else { - if (yych <= '=') goto yy282; - if (yych <= '>') goto yy252; - goto yy231; - } - } -yy262: - yych = *++p; -yy263: - if (yybm[0+yych] & 8) { - goto yy262; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x00) goto yy231; - if (yych <= '-') goto yy284; - goto yy231; - } else { - if (yych <= 0xDF) goto yy265; - if (yych <= 0xE0) goto yy266; - goto yy267; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy268; - if (yych <= 0xEF) goto yy267; - goto yy269; - } else { - if (yych <= 0xF3) goto yy270; - if (yych <= 0xF4) goto yy271; - goto yy231; - } - } -yy264: - yych = *++p; - if (yych == '-') goto yy251; - if (yych == '>') goto yy231; - goto yy263; -yy265: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0xBF) goto yy262; - goto yy231; -yy266: - yych = *++p; - if (yych <= 0x9F) goto yy231; - if (yych <= 0xBF) goto yy265; - goto yy231; -yy267: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0xBF) goto yy265; - goto yy231; -yy268: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0x9F) goto yy265; - goto yy231; -yy269: - yych = *++p; - if (yych <= 0x8F) goto yy231; - if (yych <= 0xBF) goto yy267; - goto yy231; -yy270: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0xBF) goto yy267; - goto yy231; -yy271: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0x8F) goto yy267; - goto yy231; -yy272: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0xBF) goto yy255; - goto yy231; -yy273: - yych = *++p; - if (yych <= 0x9F) goto yy231; - if (yych <= 0xBF) goto yy272; - goto yy231; -yy274: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0xBF) goto yy272; - goto yy231; -yy275: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0x9F) goto yy272; - goto yy231; -yy276: - yych = *++p; - if (yych <= 0x8F) goto yy231; - if (yych <= 0xBF) goto yy274; - goto yy231; -yy277: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0xBF) goto yy274; - goto yy231; -yy278: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0x8F) goto yy274; - goto yy231; -yy279: - yych = *++p; - if (yych == 'A') goto yy285; - if (yych == 'a') goto yy285; - goto yy231; -yy280: - yych = *++p; - if (yych <= '<') { - if (yych <= ' ') { - if (yych <= 0x08) goto yy231; - if (yych <= '\r') goto yy280; - if (yych <= 0x1F) goto yy231; - goto yy280; - } else { - if (yych <= '/') { - if (yych <= '.') goto yy231; - goto yy251; - } else { - if (yych == ':') goto yy260; - goto yy231; - } - } - } else { - if (yych <= 'Z') { - if (yych <= '=') goto yy282; - if (yych <= '>') goto yy252; - if (yych <= '@') goto yy231; - goto yy260; - } else { - if (yych <= '_') { - if (yych <= '^') goto yy231; - goto yy260; - } else { - if (yych <= '`') goto yy231; - if (yych <= 'z') goto yy260; - goto yy231; - } - } - } -yy282: - yych = *++p; - if (yybm[0+yych] & 16) { - goto yy286; - } - if (yych <= 0xE0) { - if (yych <= '"') { - if (yych <= 0x00) goto yy231; - if (yych <= ' ') goto yy282; - goto yy288; - } else { - if (yych <= '\'') goto yy290; - if (yych <= 0xC1) goto yy231; - if (yych <= 0xDF) goto yy292; - goto yy293; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) goto yy295; - goto yy294; - } else { - if (yych <= 0xF0) goto yy296; - if (yych <= 0xF3) goto yy297; - if (yych <= 0xF4) goto yy298; - goto yy231; - } - } -yy284: - yych = *++p; - if (yybm[0+yych] & 8) { - goto yy262; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x00) goto yy231; - if (yych <= '-') goto yy251; - goto yy231; - } else { - if (yych <= 0xDF) goto yy265; - if (yych <= 0xE0) goto yy266; - goto yy267; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy268; - if (yych <= 0xEF) goto yy267; - goto yy269; - } else { - if (yych <= 0xF3) goto yy270; - if (yych <= 0xF4) goto yy271; - goto yy231; - } - } -yy285: - yych = *++p; - if (yych == 'T') goto yy299; - if (yych == 't') goto yy299; - goto yy231; -yy286: - yych = *++p; - if (yybm[0+yych] & 16) { - goto yy286; - } - if (yych <= 0xE0) { - if (yych <= '=') { - if (yych <= 0x00) goto yy231; - if (yych <= ' ') goto yy247; - goto yy231; - } else { - if (yych <= '>') goto yy252; - if (yych <= 0xC1) goto yy231; - if (yych <= 0xDF) goto yy292; - goto yy293; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) goto yy295; - goto yy294; - } else { - if (yych <= 0xF0) goto yy296; - if (yych <= 0xF3) goto yy297; - if (yych <= 0xF4) goto yy298; - goto yy231; - } - } -yy288: - yych = *++p; - if (yybm[0+yych] & 32) { - goto yy288; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x00) goto yy231; - if (yych <= '"') goto yy300; - goto yy231; - } else { - if (yych <= 0xDF) goto yy301; - if (yych <= 0xE0) goto yy302; - goto yy303; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy304; - if (yych <= 0xEF) goto yy303; - goto yy305; - } else { - if (yych <= 0xF3) goto yy306; - if (yych <= 0xF4) goto yy307; - goto yy231; - } - } -yy290: - yych = *++p; - if (yybm[0+yych] & 64) { - goto yy290; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x00) goto yy231; - if (yych <= '\'') goto yy300; - goto yy231; - } else { - if (yych <= 0xDF) goto yy308; - if (yych <= 0xE0) goto yy309; - goto yy310; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy311; - if (yych <= 0xEF) goto yy310; - goto yy312; - } else { - if (yych <= 0xF3) goto yy313; - if (yych <= 0xF4) goto yy314; - goto yy231; - } - } -yy292: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0xBF) goto yy286; - goto yy231; -yy293: - yych = *++p; - if (yych <= 0x9F) goto yy231; - if (yych <= 0xBF) goto yy292; - goto yy231; -yy294: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0xBF) goto yy292; - goto yy231; -yy295: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0x9F) goto yy292; - goto yy231; -yy296: - yych = *++p; - if (yych <= 0x8F) goto yy231; - if (yych <= 0xBF) goto yy294; - goto yy231; -yy297: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0xBF) goto yy294; - goto yy231; -yy298: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0x8F) goto yy294; - goto yy231; -yy299: - yych = *++p; - if (yych == 'A') goto yy315; - if (yych == 'a') goto yy315; - goto yy231; -yy300: - yych = *++p; - if (yybm[0+yych] & 1) { - goto yy247; - } - if (yych == '/') goto yy251; - if (yych == '>') goto yy252; - goto yy231; -yy301: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0xBF) goto yy288; - goto yy231; -yy302: - yych = *++p; - if (yych <= 0x9F) goto yy231; - if (yych <= 0xBF) goto yy301; - goto yy231; -yy303: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0xBF) goto yy301; - goto yy231; -yy304: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0x9F) goto yy301; - goto yy231; -yy305: - yych = *++p; - if (yych <= 0x8F) goto yy231; - if (yych <= 0xBF) goto yy303; - goto yy231; -yy306: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0xBF) goto yy303; - goto yy231; -yy307: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0x8F) goto yy303; - goto yy231; -yy308: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0xBF) goto yy290; - goto yy231; -yy309: - yych = *++p; - if (yych <= 0x9F) goto yy231; - if (yych <= 0xBF) goto yy308; - goto yy231; -yy310: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0xBF) goto yy308; - goto yy231; -yy311: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0x9F) goto yy308; - goto yy231; -yy312: - yych = *++p; - if (yych <= 0x8F) goto yy231; - if (yych <= 0xBF) goto yy310; - goto yy231; -yy313: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0xBF) goto yy310; - goto yy231; -yy314: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0x8F) goto yy310; - goto yy231; -yy315: - yych = *++p; - if (yych != '[') goto yy231; -yy316: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy316; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x00) goto yy231; - if (yych >= '^') goto yy231; - } else { - if (yych <= 0xDF) goto yy319; - if (yych <= 0xE0) goto yy320; - goto yy321; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy322; - if (yych <= 0xEF) goto yy321; - goto yy323; - } else { - if (yych <= 0xF3) goto yy324; - if (yych <= 0xF4) goto yy325; - goto yy231; - } - } - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy316; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x00) goto yy231; - if (yych <= ']') goto yy326; - goto yy231; - } else { - if (yych <= 0xDF) goto yy319; - if (yych <= 0xE0) goto yy320; - goto yy321; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy322; - if (yych <= 0xEF) goto yy321; - goto yy323; - } else { - if (yych <= 0xF3) goto yy324; - if (yych <= 0xF4) goto yy325; - goto yy231; - } - } -yy319: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0xBF) goto yy316; - goto yy231; -yy320: - yych = *++p; - if (yych <= 0x9F) goto yy231; - if (yych <= 0xBF) goto yy319; - goto yy231; -yy321: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0xBF) goto yy319; - goto yy231; -yy322: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0x9F) goto yy319; - goto yy231; -yy323: - yych = *++p; - if (yych <= 0x8F) goto yy231; - if (yych <= 0xBF) goto yy321; - goto yy231; -yy324: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0xBF) goto yy321; - goto yy231; -yy325: - yych = *++p; - if (yych <= 0x7F) goto yy231; - if (yych <= 0x8F) goto yy321; - goto yy231; -yy326: - yych = *++p; - if (yych <= 0xE0) { - if (yych <= '>') { - if (yych <= 0x00) goto yy231; - if (yych <= '=') goto yy316; - goto yy252; - } else { - if (yych <= 0x7F) goto yy316; - if (yych <= 0xC1) goto yy231; - if (yych <= 0xDF) goto yy319; - goto yy320; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) goto yy322; - goto yy321; - } else { - if (yych <= 0xF0) goto yy323; - if (yych <= 0xF3) goto yy324; - if (yych <= 0xF4) goto yy325; - goto yy231; - } - } + { + unsigned char yych; + static const unsigned char yybm[] = { + 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }; + yych = *p; + if (yych == '-') + goto yy225; + ++p; + yy224 : { return 0; } + yy225: + yych = *(marker = ++p); + if (yych != '-') + goto yy224; + yy226: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy226; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= 0x00) + goto yy227; + if (yych <= '-') + goto yy228; + } else { + if (yych <= 0xDF) + goto yy229; + if (yych <= 0xE0) + goto yy230; + goto yy231; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy232; + if (yych <= 0xEF) + goto yy231; + goto yy233; + } else { + if (yych <= 0xF3) + goto yy234; + if (yych <= 0xF4) + goto yy235; + } + } + yy227: + p = marker; + goto yy224; + yy228: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy226; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= 0x00) + goto yy227; + if (yych <= '-') + goto yy236; + goto yy227; + } else { + if (yych <= 0xDF) + goto yy229; + if (yych <= 0xE0) + goto yy230; + goto yy231; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy232; + if (yych <= 0xEF) + goto yy231; + goto yy233; + } else { + if (yych <= 0xF3) + goto yy234; + if (yych <= 0xF4) + goto yy235; + goto yy227; + } + } + yy229: + yych = *++p; + if (yych <= 0x7F) + goto yy227; + if (yych <= 0xBF) + goto yy226; + goto yy227; + yy230: + yych = *++p; + if (yych <= 0x9F) + goto yy227; + if (yych <= 0xBF) + goto yy229; + goto yy227; + yy231: + yych = *++p; + if (yych <= 0x7F) + goto yy227; + if (yych <= 0xBF) + goto yy229; + goto yy227; + yy232: + yych = *++p; + if (yych <= 0x7F) + goto yy227; + if (yych <= 0x9F) + goto yy229; + goto yy227; + yy233: + yych = *++p; + if (yych <= 0x8F) + goto yy227; + if (yych <= 0xBF) + goto yy231; + goto yy227; + yy234: + yych = *++p; + if (yych <= 0x7F) + goto yy227; + if (yych <= 0xBF) + goto yy231; + goto yy227; + yy235: + yych = *++p; + if (yych <= 0x7F) + goto yy227; + if (yych <= 0x8F) + goto yy231; + goto yy227; + yy236: + yych = *++p; + if (yych <= 0xE0) { + if (yych <= '>') { + if (yych <= 0x00) + goto yy227; + if (yych <= '=') + goto yy226; + } else { + if (yych <= 0x7F) + goto yy226; + if (yych <= 0xC1) + goto yy227; + if (yych <= 0xDF) + goto yy229; + goto yy230; + } + } else { + if (yych <= 0xEF) { + if (yych == 0xED) + goto yy232; + goto yy231; + } else { + if (yych <= 0xF0) + goto yy233; + if (yych <= 0xF3) + goto yy234; + if (yych <= 0xF4) + goto yy235; + goto yy227; + } + } + ++p; + { return (bufsize_t)(p - start); } + } } +bufsize_t _scan_html_pi(const unsigned char *p) { + const unsigned char *marker = NULL; + const unsigned char *start = p; + + { + unsigned char yych; + unsigned int yyaccept = 0; + static const unsigned char yybm[] = { + 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 0, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }; + yych = *p; + if (yybm[0 + yych] & 128) { + goto yy240; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= 0x00) + goto yy238; + if (yych <= '?') + goto yy243; + } else { + if (yych <= 0xDF) + goto yy244; + if (yych <= 0xE0) + goto yy245; + goto yy246; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy247; + if (yych <= 0xEF) + goto yy246; + goto yy248; + } else { + if (yych <= 0xF3) + goto yy249; + if (yych <= 0xF4) + goto yy250; + } + } + yy238: + ++p; + yy239 : { return 0; } + yy240: + yyaccept = 0; + yych = *(marker = ++p); + yy241: + if (yybm[0 + yych] & 128) { + goto yy240; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= 0x00) + goto yy242; + if (yych <= '?') + goto yy251; + } else { + if (yych <= 0xDF) + goto yy253; + if (yych <= 0xE0) + goto yy254; + goto yy255; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy256; + if (yych <= 0xEF) + goto yy255; + goto yy257; + } else { + if (yych <= 0xF3) + goto yy258; + if (yych <= 0xF4) + goto yy259; + } + } + yy242 : { return (bufsize_t)(p - start); } + yy243: + yyaccept = 1; + yych = *(marker = ++p); + if (yych <= '?') { + if (yych <= 0x00) + goto yy239; + if (yych <= '=') + goto yy241; + if (yych <= '>') + goto yy239; + goto yy240; + } else { + if (yych <= 0x7F) + goto yy241; + if (yych <= 0xC1) + goto yy239; + if (yych <= 0xF4) + goto yy241; + goto yy239; + } + yy244: + yych = *++p; + if (yych <= 0x7F) + goto yy239; + if (yych <= 0xBF) + goto yy240; + goto yy239; + yy245: + yyaccept = 1; + yych = *(marker = ++p); + if (yych <= 0x9F) + goto yy239; + if (yych <= 0xBF) + goto yy253; + goto yy239; + yy246: + yyaccept = 1; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy239; + if (yych <= 0xBF) + goto yy253; + goto yy239; + yy247: + yyaccept = 1; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy239; + if (yych <= 0x9F) + goto yy253; + goto yy239; + yy248: + yyaccept = 1; + yych = *(marker = ++p); + if (yych <= 0x8F) + goto yy239; + if (yych <= 0xBF) + goto yy255; + goto yy239; + yy249: + yyaccept = 1; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy239; + if (yych <= 0xBF) + goto yy255; + goto yy239; + yy250: + yyaccept = 1; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy239; + if (yych <= 0x8F) + goto yy255; + goto yy239; + yy251: + yych = *++p; + if (yych <= 0xE0) { + if (yych <= '>') { + if (yych <= 0x00) + goto yy252; + if (yych <= '=') + goto yy240; + } else { + if (yych <= 0x7F) + goto yy240; + if (yych <= 0xC1) + goto yy252; + if (yych <= 0xDF) + goto yy253; + goto yy254; + } + } else { + if (yych <= 0xEF) { + if (yych == 0xED) + goto yy256; + goto yy255; + } else { + if (yych <= 0xF0) + goto yy257; + if (yych <= 0xF3) + goto yy258; + if (yych <= 0xF4) + goto yy259; + } + } + yy252: + p = marker; + if (yyaccept == 0) { + goto yy242; + } else { + goto yy239; + } + yy253: + yych = *++p; + if (yych <= 0x7F) + goto yy252; + if (yych <= 0xBF) + goto yy240; + goto yy252; + yy254: + yych = *++p; + if (yych <= 0x9F) + goto yy252; + if (yych <= 0xBF) + goto yy253; + goto yy252; + yy255: + yych = *++p; + if (yych <= 0x7F) + goto yy252; + if (yych <= 0xBF) + goto yy253; + goto yy252; + yy256: + yych = *++p; + if (yych <= 0x7F) + goto yy252; + if (yych <= 0x9F) + goto yy253; + goto yy252; + yy257: + yych = *++p; + if (yych <= 0x8F) + goto yy252; + if (yych <= 0xBF) + goto yy255; + goto yy252; + yy258: + yych = *++p; + if (yych <= 0x7F) + goto yy252; + if (yych <= 0xBF) + goto yy255; + goto yy252; + yy259: + yych = *++p; + if (yych <= 0x7F) + goto yy252; + if (yych <= 0x8F) + goto yy255; + goto yy252; + } } -// Try to (liberally) match an HTML tag after first <, returning num of chars matched. -bufsize_t _scan_liberal_html_tag(const unsigned char *p) -{ +bufsize_t _scan_html_declaration(const unsigned char *p) { const unsigned char *marker = NULL; const unsigned char *start = p; -{ - unsigned char yych; - unsigned int yyaccept = 0; - static const unsigned char yybm[] = { - 0, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 0, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 128, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 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, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - yych = *p; - if (yych <= 0xE0) { - if (yych <= '\n') { - if (yych <= 0x00) goto yy329; - if (yych <= '\t') goto yy331; - } else { - if (yych <= 0x7F) goto yy331; - if (yych <= 0xC1) goto yy329; - if (yych <= 0xDF) goto yy332; - goto yy333; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) goto yy335; - goto yy334; - } else { - if (yych <= 0xF0) goto yy336; - if (yych <= 0xF3) goto yy337; - if (yych <= 0xF4) goto yy338; - } - } -yy329: - ++p; -yy330: - { return 0; } -yy331: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= '\n') { - if (yych <= 0x00) goto yy330; - if (yych <= '\t') goto yy340; - goto yy330; - } else { - if (yych <= 0x7F) goto yy340; - if (yych <= 0xC1) goto yy330; - if (yych <= 0xF4) goto yy340; - goto yy330; - } -yy332: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy330; - if (yych <= 0xBF) goto yy339; - goto yy330; -yy333: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x9F) goto yy330; - if (yych <= 0xBF) goto yy345; - goto yy330; -yy334: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy330; - if (yych <= 0xBF) goto yy345; - goto yy330; -yy335: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy330; - if (yych <= 0x9F) goto yy345; - goto yy330; -yy336: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x8F) goto yy330; - if (yych <= 0xBF) goto yy347; - goto yy330; -yy337: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy330; - if (yych <= 0xBF) goto yy347; - goto yy330; -yy338: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy330; - if (yych <= 0x8F) goto yy347; - goto yy330; -yy339: - yych = *++p; -yy340: - if (yybm[0+yych] & 64) { - goto yy339; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') goto yy341; - if (yych <= '>') goto yy342; - } else { - if (yych <= 0xDF) goto yy345; - if (yych <= 0xE0) goto yy346; - goto yy347; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy348; - if (yych <= 0xEF) goto yy347; - goto yy349; - } else { - if (yych <= 0xF3) goto yy350; - if (yych <= 0xF4) goto yy351; - } - } -yy341: - p = marker; - if (yyaccept == 0) { - goto yy330; - } else { - goto yy344; - } -yy342: - yyaccept = 1; - yych = *(marker = ++p); - if (yybm[0+yych] & 64) { - goto yy339; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') goto yy344; - if (yych <= '>') goto yy342; - } else { - if (yych <= 0xDF) goto yy345; - if (yych <= 0xE0) goto yy346; - goto yy347; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy348; - if (yych <= 0xEF) goto yy347; - goto yy349; - } else { - if (yych <= 0xF3) goto yy350; - if (yych <= 0xF4) goto yy351; - } - } -yy344: - { return (bufsize_t)(p - start); } -yy345: - yych = *++p; - if (yych <= 0x7F) goto yy341; - if (yych <= 0xBF) goto yy339; - goto yy341; -yy346: - yych = *++p; - if (yych <= 0x9F) goto yy341; - if (yych <= 0xBF) goto yy345; - goto yy341; -yy347: - yych = *++p; - if (yych <= 0x7F) goto yy341; - if (yych <= 0xBF) goto yy345; - goto yy341; -yy348: - yych = *++p; - if (yych <= 0x7F) goto yy341; - if (yych <= 0x9F) goto yy345; - goto yy341; -yy349: - yych = *++p; - if (yych <= 0x8F) goto yy341; - if (yych <= 0xBF) goto yy347; - goto yy341; -yy350: - yych = *++p; - if (yych <= 0x7F) goto yy341; - if (yych <= 0xBF) goto yy347; - goto yy341; -yy351: - yych = *++p; - if (yych <= 0x7F) goto yy341; - if (yych <= 0x8F) goto yy347; - goto yy341; + { + unsigned char yych; + unsigned int yyaccept = 0; + static const unsigned char yybm[] = { + 0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 0, 64, 64, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }; + yych = *p; + if (yych <= '@') + goto yy261; + if (yych <= 'Z') + goto yy263; + yy261: + ++p; + yy262 : { return 0; } + yy263: + yyaccept = 0; + yych = *(marker = ++p); + if (yybm[0 + yych] & 128) { + goto yy266; + } + if (yych <= 0x08) + goto yy262; + if (yych <= '\r') + goto yy264; + if (yych != ' ') + goto yy262; + yy264: + yyaccept = 1; + yych = *(marker = ++p); + if (yybm[0 + yych] & 64) { + goto yy264; + } + if (yych <= 0xED) { + if (yych <= 0xDF) { + if (yych >= 0xC2) + goto yy268; + } else { + if (yych <= 0xE0) + goto yy269; + if (yych <= 0xEC) + goto yy270; + goto yy271; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xEF) + goto yy270; + goto yy272; + } else { + if (yych <= 0xF3) + goto yy273; + if (yych <= 0xF4) + goto yy274; + } + } + yy265 : { return (bufsize_t)(p - start); } + yy266: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy266; + } + if (yych <= 0x08) + goto yy267; + if (yych <= '\r') + goto yy264; + if (yych == ' ') + goto yy264; + yy267: + p = marker; + if (yyaccept == 0) { + goto yy262; + } else { + goto yy265; + } + yy268: + yych = *++p; + if (yych <= 0x7F) + goto yy267; + if (yych <= 0xBF) + goto yy264; + goto yy267; + yy269: + yych = *++p; + if (yych <= 0x9F) + goto yy267; + if (yych <= 0xBF) + goto yy268; + goto yy267; + yy270: + yych = *++p; + if (yych <= 0x7F) + goto yy267; + if (yych <= 0xBF) + goto yy268; + goto yy267; + yy271: + yych = *++p; + if (yych <= 0x7F) + goto yy267; + if (yych <= 0x9F) + goto yy268; + goto yy267; + yy272: + yych = *++p; + if (yych <= 0x8F) + goto yy267; + if (yych <= 0xBF) + goto yy270; + goto yy267; + yy273: + yych = *++p; + if (yych <= 0x7F) + goto yy267; + if (yych <= 0xBF) + goto yy270; + goto yy267; + yy274: + yych = *++p; + if (yych <= 0x7F) + goto yy267; + if (yych <= 0x8F) + goto yy270; + goto yy267; + } } +bufsize_t _scan_html_cdata(const unsigned char *p) { + const unsigned char *marker = NULL; + const unsigned char *start = p; + + { + unsigned char yych; + unsigned int yyaccept = 0; + static const unsigned char yybm[] = { + 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }; + yych = *p; + if (yych == 'C') + goto yy277; + if (yych == 'c') + goto yy277; + ++p; + yy276 : { return 0; } + yy277: + yyaccept = 0; + yych = *(marker = ++p); + if (yych == 'D') + goto yy278; + if (yych != 'd') + goto yy276; + yy278: + yych = *++p; + if (yych == 'A') + goto yy280; + if (yych == 'a') + goto yy280; + yy279: + p = marker; + if (yyaccept == 0) { + goto yy276; + } else { + goto yy284; + } + yy280: + yych = *++p; + if (yych == 'T') + goto yy281; + if (yych != 't') + goto yy279; + yy281: + yych = *++p; + if (yych == 'A') + goto yy282; + if (yych != 'a') + goto yy279; + yy282: + yych = *++p; + if (yych != '[') + goto yy279; + yy283: + yyaccept = 1; + yych = *(marker = ++p); + if (yybm[0 + yych] & 128) { + goto yy283; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= 0x00) + goto yy284; + if (yych <= ']') + goto yy285; + } else { + if (yych <= 0xDF) + goto yy286; + if (yych <= 0xE0) + goto yy287; + goto yy288; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy289; + if (yych <= 0xEF) + goto yy288; + goto yy290; + } else { + if (yych <= 0xF3) + goto yy291; + if (yych <= 0xF4) + goto yy292; + } + } + yy284 : { return (bufsize_t)(p - start); } + yy285: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy283; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= 0x00) + goto yy279; + if (yych <= ']') + goto yy293; + goto yy279; + } else { + if (yych <= 0xDF) + goto yy286; + if (yych <= 0xE0) + goto yy287; + goto yy288; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy289; + if (yych <= 0xEF) + goto yy288; + goto yy290; + } else { + if (yych <= 0xF3) + goto yy291; + if (yych <= 0xF4) + goto yy292; + goto yy279; + } + } + yy286: + yych = *++p; + if (yych <= 0x7F) + goto yy279; + if (yych <= 0xBF) + goto yy283; + goto yy279; + yy287: + yych = *++p; + if (yych <= 0x9F) + goto yy279; + if (yych <= 0xBF) + goto yy286; + goto yy279; + yy288: + yych = *++p; + if (yych <= 0x7F) + goto yy279; + if (yych <= 0xBF) + goto yy286; + goto yy279; + yy289: + yych = *++p; + if (yych <= 0x7F) + goto yy279; + if (yych <= 0x9F) + goto yy286; + goto yy279; + yy290: + yych = *++p; + if (yych <= 0x8F) + goto yy279; + if (yych <= 0xBF) + goto yy288; + goto yy279; + yy291: + yych = *++p; + if (yych <= 0x7F) + goto yy279; + if (yych <= 0xBF) + goto yy288; + goto yy279; + yy292: + yych = *++p; + if (yych <= 0x7F) + goto yy279; + if (yych <= 0x8F) + goto yy288; + goto yy279; + yy293: + yych = *++p; + if (yych <= 0xE0) { + if (yych <= '>') { + if (yych <= 0x00) + goto yy279; + if (yych <= '=') + goto yy283; + goto yy279; + } else { + if (yych <= 0x7F) + goto yy283; + if (yych <= 0xC1) + goto yy279; + if (yych <= 0xDF) + goto yy286; + goto yy287; + } + } else { + if (yych <= 0xEF) { + if (yych == 0xED) + goto yy289; + goto yy288; + } else { + if (yych <= 0xF0) + goto yy290; + if (yych <= 0xF3) + goto yy291; + if (yych <= 0xF4) + goto yy292; + goto yy279; + } + } + } } // Try to match an HTML block tag start line, returning // an integer code for the type of block (1-6, matching the spec). // #7 is handled by a separate function, below. -bufsize_t _scan_html_block_start(const unsigned char *p) -{ +bufsize_t _scan_html_block_start(const unsigned char *p) { const unsigned char *marker = NULL; -{ - unsigned char yych; - yych = *p; - if (yych == '<') goto yy356; - ++p; -yy355: - { return 0; } -yy356: - yych = *(marker = ++p); - switch (yych) { - case '!': goto yy357; - case '/': goto yy359; - case '?': goto yy360; - case 'A': - case 'a': goto yy362; - case 'B': - case 'b': goto yy363; - case 'C': - case 'c': goto yy364; - case 'D': - case 'd': goto yy365; - case 'F': - case 'f': goto yy366; - case 'H': - case 'h': goto yy367; - case 'I': - case 'i': goto yy368; - case 'L': - case 'l': goto yy369; - case 'M': - case 'm': goto yy370; - case 'N': - case 'n': goto yy371; - case 'O': - case 'o': goto yy372; - case 'P': - case 'p': goto yy373; - case 'S': - case 's': goto yy374; - case 'T': - case 't': goto yy375; - case 'U': - case 'u': goto yy376; - default: goto yy355; - } -yy357: - yych = *++p; - if (yych <= '@') { - if (yych == '-') goto yy377; - } else { - if (yych <= 'Z') goto yy378; - if (yych <= '[') goto yy380; - } -yy358: - p = marker; - goto yy355; -yy359: - yych = *++p; - switch (yych) { - case 'A': - case 'a': goto yy362; - case 'B': - case 'b': goto yy363; - case 'C': - case 'c': goto yy364; - case 'D': - case 'd': goto yy365; - case 'F': - case 'f': goto yy366; - case 'H': - case 'h': goto yy367; - case 'I': - case 'i': goto yy368; - case 'L': - case 'l': goto yy369; - case 'M': - case 'm': goto yy370; - case 'N': - case 'n': goto yy371; - case 'O': - case 'o': goto yy372; - case 'P': - case 'p': goto yy381; - case 'S': - case 's': goto yy382; - case 'T': - case 't': goto yy375; - case 'U': - case 'u': goto yy376; - default: goto yy358; - } -yy360: - ++p; - { return 3; } -yy362: - yych = *++p; - if (yych <= 'S') { - if (yych <= 'D') { - if (yych <= 'C') goto yy358; - goto yy383; - } else { - if (yych <= 'Q') goto yy358; - if (yych <= 'R') goto yy384; - goto yy385; - } - } else { - if (yych <= 'q') { - if (yych == 'd') goto yy383; - goto yy358; - } else { - if (yych <= 'r') goto yy384; - if (yych <= 's') goto yy385; - goto yy358; - } - } -yy363: - yych = *++p; - if (yych <= 'O') { - if (yych <= 'K') { - if (yych == 'A') goto yy386; - goto yy358; - } else { - if (yych <= 'L') goto yy387; - if (yych <= 'N') goto yy358; - goto yy388; - } - } else { - if (yych <= 'k') { - if (yych == 'a') goto yy386; - goto yy358; - } else { - if (yych <= 'l') goto yy387; - if (yych == 'o') goto yy388; - goto yy358; - } - } -yy364: - yych = *++p; - if (yych <= 'O') { - if (yych <= 'D') { - if (yych == 'A') goto yy389; - goto yy358; - } else { - if (yych <= 'E') goto yy390; - if (yych <= 'N') goto yy358; - goto yy391; - } - } else { - if (yych <= 'd') { - if (yych == 'a') goto yy389; - goto yy358; - } else { - if (yych <= 'e') goto yy390; - if (yych == 'o') goto yy391; - goto yy358; - } - } -yy365: - yych = *++p; - switch (yych) { - case 'D': - case 'L': - case 'T': - case 'd': - case 'l': - case 't': goto yy392; - case 'E': - case 'e': goto yy393; - case 'I': - case 'i': goto yy394; - default: goto yy358; - } -yy366: - yych = *++p; - if (yych <= 'R') { - if (yych <= 'N') { - if (yych == 'I') goto yy395; - goto yy358; - } else { - if (yych <= 'O') goto yy396; - if (yych <= 'Q') goto yy358; - goto yy397; - } - } else { - if (yych <= 'n') { - if (yych == 'i') goto yy395; - goto yy358; - } else { - if (yych <= 'o') goto yy396; - if (yych == 'r') goto yy397; - goto yy358; - } - } -yy367: - yych = *++p; - if (yych <= 'S') { - if (yych <= 'D') { - if (yych <= '0') goto yy358; - if (yych <= '6') goto yy392; - goto yy358; - } else { - if (yych <= 'E') goto yy398; - if (yych == 'R') goto yy392; - goto yy358; - } - } else { - if (yych <= 'q') { - if (yych <= 'T') goto yy399; - if (yych == 'e') goto yy398; - goto yy358; - } else { - if (yych <= 'r') goto yy392; - if (yych == 't') goto yy399; - goto yy358; - } - } -yy368: - yych = *++p; - if (yych == 'F') goto yy400; - if (yych == 'f') goto yy400; - goto yy358; -yy369: - yych = *++p; - if (yych <= 'I') { - if (yych == 'E') goto yy401; - if (yych <= 'H') goto yy358; - goto yy402; - } else { - if (yych <= 'e') { - if (yych <= 'd') goto yy358; - goto yy401; - } else { - if (yych == 'i') goto yy402; - goto yy358; - } - } -yy370: - yych = *++p; - if (yych <= 'E') { - if (yych == 'A') goto yy403; - if (yych <= 'D') goto yy358; - goto yy404; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy358; - goto yy403; - } else { - if (yych == 'e') goto yy404; - goto yy358; - } - } -yy371: - yych = *++p; - if (yych <= 'O') { - if (yych == 'A') goto yy405; - if (yych <= 'N') goto yy358; - goto yy406; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy358; - goto yy405; - } else { - if (yych == 'o') goto yy406; - goto yy358; - } - } -yy372: - yych = *++p; - if (yych <= 'P') { - if (yych == 'L') goto yy392; - if (yych <= 'O') goto yy358; - goto yy407; - } else { - if (yych <= 'l') { - if (yych <= 'k') goto yy358; - goto yy392; - } else { - if (yych == 'p') goto yy407; - goto yy358; - } - } -yy373: - yych = *++p; - if (yych <= '>') { - if (yych <= ' ') { - if (yych <= 0x08) goto yy358; - if (yych <= '\r') goto yy408; - if (yych <= 0x1F) goto yy358; - goto yy408; - } else { - if (yych == '/') goto yy410; - if (yych <= '=') goto yy358; - goto yy408; - } - } else { - if (yych <= 'R') { - if (yych == 'A') goto yy411; - if (yych <= 'Q') goto yy358; - goto yy412; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy358; - goto yy411; - } else { - if (yych == 'r') goto yy412; - goto yy358; - } - } - } -yy374: - yych = *++p; - if (yych <= 'U') { - if (yych <= 'D') { - if (yych == 'C') goto yy413; - goto yy358; - } else { - if (yych <= 'E') goto yy414; - if (yych <= 'S') goto yy358; - if (yych <= 'T') goto yy415; - goto yy416; - } - } else { - if (yych <= 'e') { - if (yych == 'c') goto yy413; - if (yych <= 'd') goto yy358; - goto yy414; - } else { - if (yych <= 's') goto yy358; - if (yych <= 't') goto yy415; - if (yych <= 'u') goto yy416; - goto yy358; - } - } -yy375: - yych = *++p; - switch (yych) { - case 'A': - case 'a': goto yy417; - case 'B': - case 'b': goto yy418; - case 'D': - case 'd': goto yy392; - case 'F': - case 'f': goto yy419; - case 'H': - case 'h': goto yy420; - case 'I': - case 'i': goto yy421; - case 'R': - case 'r': goto yy422; - default: goto yy358; - } -yy376: - yych = *++p; - if (yych == 'L') goto yy392; - if (yych == 'l') goto yy392; - goto yy358; -yy377: - yych = *++p; - if (yych == '-') goto yy423; - goto yy358; -yy378: - ++p; - { return 4; } -yy380: - yych = *++p; - if (yych == 'C') goto yy425; - if (yych == 'c') goto yy425; - goto yy358; -yy381: - yych = *++p; - if (yych <= '/') { - if (yych <= 0x1F) { - if (yych <= 0x08) goto yy358; - if (yych <= '\r') goto yy408; - goto yy358; - } else { - if (yych <= ' ') goto yy408; - if (yych <= '.') goto yy358; - goto yy410; - } - } else { - if (yych <= '@') { - if (yych == '>') goto yy408; - goto yy358; - } else { - if (yych <= 'A') goto yy411; - if (yych == 'a') goto yy411; - goto yy358; - } - } -yy382: - yych = *++p; - if (yych <= 'U') { - if (yych == 'E') goto yy414; - if (yych <= 'T') goto yy358; - goto yy416; - } else { - if (yych <= 'e') { - if (yych <= 'd') goto yy358; - goto yy414; - } else { - if (yych == 'u') goto yy416; - goto yy358; - } - } -yy383: - yych = *++p; - if (yych == 'D') goto yy426; - if (yych == 'd') goto yy426; - goto yy358; -yy384: - yych = *++p; - if (yych == 'T') goto yy427; - if (yych == 't') goto yy427; - goto yy358; -yy385: - yych = *++p; - if (yych == 'I') goto yy428; - if (yych == 'i') goto yy428; - goto yy358; -yy386: - yych = *++p; - if (yych == 'S') goto yy429; - if (yych == 's') goto yy429; - goto yy358; -yy387: - yych = *++p; - if (yych == 'O') goto yy430; - if (yych == 'o') goto yy430; - goto yy358; -yy388: - yych = *++p; - if (yych == 'D') goto yy431; - if (yych == 'd') goto yy431; - goto yy358; -yy389: - yych = *++p; - if (yych == 'P') goto yy432; - if (yych == 'p') goto yy432; - goto yy358; -yy390: - yych = *++p; - if (yych == 'N') goto yy433; - if (yych == 'n') goto yy433; - goto yy358; -yy391: - yych = *++p; - if (yych == 'L') goto yy434; - if (yych == 'l') goto yy434; - goto yy358; -yy392: - yych = *++p; - if (yych <= ' ') { - if (yych <= 0x08) goto yy358; - if (yych <= '\r') goto yy408; - if (yych <= 0x1F) goto yy358; - goto yy408; - } else { - if (yych <= '/') { - if (yych <= '.') goto yy358; - goto yy410; - } else { - if (yych == '>') goto yy408; - goto yy358; - } - } -yy393: - yych = *++p; - if (yych == 'T') goto yy435; - if (yych == 't') goto yy435; - goto yy358; -yy394: - yych = *++p; - if (yych <= 'V') { - if (yych <= 'Q') { - if (yych == 'A') goto yy436; - goto yy358; - } else { - if (yych <= 'R') goto yy392; - if (yych <= 'U') goto yy358; - goto yy392; - } - } else { - if (yych <= 'q') { - if (yych == 'a') goto yy436; - goto yy358; - } else { - if (yych <= 'r') goto yy392; - if (yych == 'v') goto yy392; - goto yy358; - } - } -yy395: - yych = *++p; - if (yych <= 'G') { - if (yych == 'E') goto yy437; - if (yych <= 'F') goto yy358; - goto yy438; - } else { - if (yych <= 'e') { - if (yych <= 'd') goto yy358; - goto yy437; - } else { - if (yych == 'g') goto yy438; - goto yy358; - } - } -yy396: - yych = *++p; - if (yych <= 'R') { - if (yych == 'O') goto yy433; - if (yych <= 'Q') goto yy358; - goto yy439; - } else { - if (yych <= 'o') { - if (yych <= 'n') goto yy358; - goto yy433; - } else { - if (yych == 'r') goto yy439; - goto yy358; - } - } -yy397: - yych = *++p; - if (yych == 'A') goto yy440; - if (yych == 'a') goto yy440; - goto yy358; -yy398: - yych = *++p; - if (yych == 'A') goto yy441; - if (yych == 'a') goto yy441; - goto yy358; -yy399: - yych = *++p; - if (yych == 'M') goto yy376; - if (yych == 'm') goto yy376; - goto yy358; -yy400: - yych = *++p; - if (yych == 'R') goto yy442; - if (yych == 'r') goto yy442; - goto yy358; -yy401: - yych = *++p; - if (yych == 'G') goto yy443; - if (yych == 'g') goto yy443; - goto yy358; -yy402: - yych = *++p; - if (yych <= '/') { - if (yych <= 0x1F) { - if (yych <= 0x08) goto yy358; - if (yych <= '\r') goto yy408; - goto yy358; - } else { - if (yych <= ' ') goto yy408; - if (yych <= '.') goto yy358; - goto yy410; - } - } else { - if (yych <= 'M') { - if (yych == '>') goto yy408; - goto yy358; - } else { - if (yych <= 'N') goto yy444; - if (yych == 'n') goto yy444; - goto yy358; - } - } -yy403: - yych = *++p; - if (yych == 'I') goto yy445; - if (yych == 'i') goto yy445; - goto yy358; -yy404: - yych = *++p; - if (yych == 'N') goto yy446; - if (yych == 'n') goto yy446; - goto yy358; -yy405: - yych = *++p; - if (yych == 'V') goto yy392; - if (yych == 'v') goto yy392; - goto yy358; -yy406: - yych = *++p; - if (yych == 'F') goto yy447; - if (yych == 'f') goto yy447; - goto yy358; -yy407: - yych = *++p; - if (yych == 'T') goto yy448; - if (yych == 't') goto yy448; - goto yy358; -yy408: - ++p; - { return 6; } -yy410: - yych = *++p; - if (yych == '>') goto yy408; - goto yy358; -yy411: - yych = *++p; - if (yych == 'R') goto yy449; - if (yych == 'r') goto yy449; - goto yy358; -yy412: - yych = *++p; - if (yych == 'E') goto yy450; - if (yych == 'e') goto yy450; - goto yy358; -yy413: - yych = *++p; - if (yych == 'R') goto yy451; - if (yych == 'r') goto yy451; - goto yy358; -yy414: - yych = *++p; - if (yych == 'C') goto yy432; - if (yych == 'c') goto yy432; - goto yy358; -yy415: - yych = *++p; - if (yych == 'Y') goto yy452; - if (yych == 'y') goto yy452; - goto yy358; -yy416: - yych = *++p; - if (yych == 'M') goto yy453; - if (yych == 'm') goto yy453; - goto yy358; -yy417: - yych = *++p; - if (yych == 'B') goto yy454; - if (yych == 'b') goto yy454; - goto yy358; -yy418: - yych = *++p; - if (yych == 'O') goto yy388; - if (yych == 'o') goto yy388; - goto yy358; -yy419: - yych = *++p; - if (yych == 'O') goto yy455; - if (yych == 'o') goto yy455; - goto yy358; -yy420: - yych = *++p; - if (yych <= '/') { - if (yych <= 0x1F) { - if (yych <= 0x08) goto yy358; - if (yych <= '\r') goto yy408; - goto yy358; - } else { - if (yych <= ' ') goto yy408; - if (yych <= '.') goto yy358; - goto yy410; - } - } else { - if (yych <= 'D') { - if (yych == '>') goto yy408; - goto yy358; - } else { - if (yych <= 'E') goto yy456; - if (yych == 'e') goto yy456; - goto yy358; - } - } -yy421: - yych = *++p; - if (yych == 'T') goto yy454; - if (yych == 't') goto yy454; - goto yy358; -yy422: - yych = *++p; - if (yych <= '/') { - if (yych <= 0x1F) { - if (yych <= 0x08) goto yy358; - if (yych <= '\r') goto yy408; - goto yy358; - } else { - if (yych <= ' ') goto yy408; - if (yych <= '.') goto yy358; - goto yy410; - } - } else { - if (yych <= '@') { - if (yych == '>') goto yy408; - goto yy358; - } else { - if (yych <= 'A') goto yy457; - if (yych == 'a') goto yy457; - goto yy358; - } - } -yy423: - ++p; - { return 2; } -yy425: - yych = *++p; - if (yych == 'D') goto yy458; - if (yych == 'd') goto yy458; - goto yy358; -yy426: - yych = *++p; - if (yych == 'R') goto yy459; - if (yych == 'r') goto yy459; - goto yy358; -yy427: - yych = *++p; - if (yych == 'I') goto yy460; - if (yych == 'i') goto yy460; - goto yy358; -yy428: - yych = *++p; - if (yych == 'D') goto yy461; - if (yych == 'd') goto yy461; - goto yy358; -yy429: - yych = *++p; - if (yych == 'E') goto yy462; - if (yych == 'e') goto yy462; - goto yy358; -yy430: - yych = *++p; - if (yych == 'C') goto yy463; - if (yych == 'c') goto yy463; - goto yy358; -yy431: - yych = *++p; - if (yych == 'Y') goto yy392; - if (yych == 'y') goto yy392; - goto yy358; -yy432: - yych = *++p; - if (yych == 'T') goto yy464; - if (yych == 't') goto yy464; - goto yy358; -yy433: - yych = *++p; - if (yych == 'T') goto yy465; - if (yych == 't') goto yy465; - goto yy358; -yy434: - yych = *++p; - if (yych <= '/') { - if (yych <= 0x1F) { - if (yych <= 0x08) goto yy358; - if (yych <= '\r') goto yy408; - goto yy358; - } else { - if (yych <= ' ') goto yy408; - if (yych <= '.') goto yy358; - goto yy410; - } - } else { - if (yych <= 'F') { - if (yych == '>') goto yy408; - goto yy358; - } else { - if (yych <= 'G') goto yy466; - if (yych == 'g') goto yy466; - goto yy358; - } - } -yy435: - yych = *++p; - if (yych == 'A') goto yy467; - if (yych == 'a') goto yy467; - goto yy358; -yy436: - yych = *++p; - if (yych == 'L') goto yy468; - if (yych == 'l') goto yy468; - goto yy358; -yy437: - yych = *++p; - if (yych == 'L') goto yy469; - if (yych == 'l') goto yy469; - goto yy358; -yy438: - yych = *++p; - if (yych <= 'U') { - if (yych == 'C') goto yy470; - if (yych <= 'T') goto yy358; - goto yy471; - } else { - if (yych <= 'c') { - if (yych <= 'b') goto yy358; - goto yy470; - } else { - if (yych == 'u') goto yy471; - goto yy358; - } - } -yy439: - yych = *++p; - if (yych == 'M') goto yy392; - if (yych == 'm') goto yy392; - goto yy358; -yy440: - yych = *++p; - if (yych == 'M') goto yy472; - if (yych == 'm') goto yy472; - goto yy358; -yy441: - yych = *++p; - if (yych == 'D') goto yy473; - if (yych == 'd') goto yy473; - goto yy358; -yy442: - yych = *++p; - if (yych == 'A') goto yy474; - if (yych == 'a') goto yy474; - goto yy358; -yy443: - yych = *++p; - if (yych == 'E') goto yy475; - if (yych == 'e') goto yy475; - goto yy358; -yy444: - yych = *++p; - if (yych == 'K') goto yy392; - if (yych == 'k') goto yy392; - goto yy358; -yy445: - yych = *++p; - if (yych == 'N') goto yy392; - if (yych == 'n') goto yy392; - goto yy358; -yy446: - yych = *++p; - if (yych == 'U') goto yy476; - if (yych == 'u') goto yy476; - goto yy358; -yy447: - yych = *++p; - if (yych == 'R') goto yy477; - if (yych == 'r') goto yy477; - goto yy358; -yy448: - yych = *++p; - if (yych <= 'I') { - if (yych == 'G') goto yy466; - if (yych <= 'H') goto yy358; - goto yy478; - } else { - if (yych <= 'g') { - if (yych <= 'f') goto yy358; - goto yy466; - } else { - if (yych == 'i') goto yy478; - goto yy358; - } - } -yy449: - yych = *++p; - if (yych == 'A') goto yy439; - if (yych == 'a') goto yy439; - goto yy358; -yy450: - yych = *++p; - if (yych <= 0x1F) { - if (yych <= 0x08) goto yy358; - if (yych <= '\r') goto yy479; - goto yy358; - } else { - if (yych <= ' ') goto yy479; - if (yych == '>') goto yy479; - goto yy358; - } -yy451: - yych = *++p; - if (yych == 'I') goto yy481; - if (yych == 'i') goto yy481; - goto yy358; -yy452: - yych = *++p; - if (yych == 'L') goto yy412; - if (yych == 'l') goto yy412; - goto yy358; -yy453: - yych = *++p; - if (yych == 'M') goto yy482; - if (yych == 'm') goto yy482; - goto yy358; -yy454: - yych = *++p; - if (yych == 'L') goto yy461; - if (yych == 'l') goto yy461; - goto yy358; -yy455: - yych = *++p; - if (yych == 'O') goto yy483; - if (yych == 'o') goto yy483; - goto yy358; -yy456: - yych = *++p; - if (yych == 'A') goto yy484; - if (yych == 'a') goto yy484; - goto yy358; -yy457: - yych = *++p; - if (yych == 'C') goto yy444; - if (yych == 'c') goto yy444; - goto yy358; -yy458: - yych = *++p; - if (yych == 'A') goto yy485; - if (yych == 'a') goto yy485; - goto yy358; -yy459: - yych = *++p; - if (yych == 'E') goto yy486; - if (yych == 'e') goto yy486; - goto yy358; -yy460: - yych = *++p; - if (yych == 'C') goto yy454; - if (yych == 'c') goto yy454; - goto yy358; -yy461: - yych = *++p; - if (yych == 'E') goto yy392; - if (yych == 'e') goto yy392; - goto yy358; -yy462: - yych = *++p; - if (yych <= '/') { - if (yych <= 0x1F) { - if (yych <= 0x08) goto yy358; - if (yych <= '\r') goto yy408; - goto yy358; - } else { - if (yych <= ' ') goto yy408; - if (yych <= '.') goto yy358; - goto yy410; - } - } else { - if (yych <= 'E') { - if (yych == '>') goto yy408; - goto yy358; - } else { - if (yych <= 'F') goto yy487; - if (yych == 'f') goto yy487; - goto yy358; - } - } -yy463: - yych = *++p; - if (yych == 'K') goto yy488; - if (yych == 'k') goto yy488; - goto yy358; -yy464: - yych = *++p; - if (yych == 'I') goto yy478; - if (yych == 'i') goto yy478; - goto yy358; -yy465: - yych = *++p; - if (yych == 'E') goto yy489; - if (yych == 'e') goto yy489; - goto yy358; -yy466: - yych = *++p; - if (yych == 'R') goto yy490; - if (yych == 'r') goto yy490; - goto yy358; -yy467: - yych = *++p; - if (yych == 'I') goto yy491; - if (yych == 'i') goto yy491; - goto yy358; -yy468: - yych = *++p; - if (yych == 'O') goto yy492; - if (yych == 'o') goto yy492; - goto yy358; -yy469: - yych = *++p; - if (yych == 'D') goto yy493; - if (yych == 'd') goto yy493; - goto yy358; -yy470: - yych = *++p; - if (yych == 'A') goto yy389; - if (yych == 'a') goto yy389; - goto yy358; -yy471: - yych = *++p; - if (yych == 'R') goto yy461; - if (yych == 'r') goto yy461; - goto yy358; -yy472: - yych = *++p; - if (yych == 'E') goto yy494; - if (yych == 'e') goto yy494; - goto yy358; -yy473: - yych = *++p; - if (yych <= '/') { - if (yych <= 0x1F) { - if (yych <= 0x08) goto yy358; - if (yych <= '\r') goto yy408; - goto yy358; - } else { - if (yych <= ' ') goto yy408; - if (yych <= '.') goto yy358; - goto yy410; - } - } else { - if (yych <= 'D') { - if (yych == '>') goto yy408; - goto yy358; - } else { - if (yych <= 'E') goto yy489; - if (yych == 'e') goto yy489; - goto yy358; - } - } -yy474: - yych = *++p; - if (yych == 'M') goto yy461; - if (yych == 'm') goto yy461; - goto yy358; -yy475: - yych = *++p; - if (yych == 'N') goto yy484; - if (yych == 'n') goto yy484; - goto yy358; -yy476: - yych = *++p; - if (yych <= '/') { - if (yych <= 0x1F) { - if (yych <= 0x08) goto yy358; - if (yych <= '\r') goto yy408; - goto yy358; - } else { - if (yych <= ' ') goto yy408; - if (yych <= '.') goto yy358; - goto yy410; - } - } else { - if (yych <= 'H') { - if (yych == '>') goto yy408; - goto yy358; - } else { - if (yych <= 'I') goto yy495; - if (yych == 'i') goto yy495; - goto yy358; - } - } -yy477: - yych = *++p; - if (yych == 'A') goto yy496; - if (yych == 'a') goto yy496; - goto yy358; -yy478: - yych = *++p; - if (yych == 'O') goto yy445; - if (yych == 'o') goto yy445; - goto yy358; -yy479: - ++p; - { return 1; } -yy481: - yych = *++p; - if (yych == 'P') goto yy497; - if (yych == 'p') goto yy497; - goto yy358; -yy482: - yych = *++p; - if (yych == 'A') goto yy498; - if (yych == 'a') goto yy498; - goto yy358; -yy483: - yych = *++p; - if (yych == 'T') goto yy392; - if (yych == 't') goto yy392; - goto yy358; -yy484: - yych = *++p; - if (yych == 'D') goto yy392; - if (yych == 'd') goto yy392; - goto yy358; -yy485: - yych = *++p; - if (yych == 'T') goto yy499; - if (yych == 't') goto yy499; - goto yy358; -yy486: - yych = *++p; - if (yych == 'S') goto yy500; - if (yych == 's') goto yy500; - goto yy358; -yy487: - yych = *++p; - if (yych == 'O') goto yy501; - if (yych == 'o') goto yy501; - goto yy358; -yy488: - yych = *++p; - if (yych == 'Q') goto yy502; - if (yych == 'q') goto yy502; - goto yy358; -yy489: - yych = *++p; - if (yych == 'R') goto yy392; - if (yych == 'r') goto yy392; - goto yy358; -yy490: - yych = *++p; - if (yych == 'O') goto yy503; - if (yych == 'o') goto yy503; - goto yy358; -yy491: - yych = *++p; - if (yych == 'L') goto yy500; - if (yych == 'l') goto yy500; - goto yy358; -yy492: - yych = *++p; - if (yych == 'G') goto yy392; - if (yych == 'g') goto yy392; - goto yy358; -yy493: - yych = *++p; - if (yych == 'S') goto yy504; - if (yych == 's') goto yy504; - goto yy358; -yy494: - yych = *++p; - if (yych <= '/') { - if (yych <= 0x1F) { - if (yych <= 0x08) goto yy358; - if (yych <= '\r') goto yy408; - goto yy358; - } else { - if (yych <= ' ') goto yy408; - if (yych <= '.') goto yy358; - goto yy410; - } - } else { - if (yych <= 'R') { - if (yych == '>') goto yy408; - goto yy358; - } else { - if (yych <= 'S') goto yy504; - if (yych == 's') goto yy504; - goto yy358; - } - } -yy495: - yych = *++p; - if (yych == 'T') goto yy505; - if (yych == 't') goto yy505; - goto yy358; -yy496: - yych = *++p; - if (yych == 'M') goto yy506; - if (yych == 'm') goto yy506; - goto yy358; -yy497: - yych = *++p; - if (yych == 'T') goto yy450; - if (yych == 't') goto yy450; - goto yy358; -yy498: - yych = *++p; - if (yych == 'R') goto yy431; - if (yych == 'r') goto yy431; - goto yy358; -yy499: - yych = *++p; - if (yych == 'A') goto yy507; - if (yych == 'a') goto yy507; - goto yy358; -yy500: - yych = *++p; - if (yych == 'S') goto yy392; - if (yych == 's') goto yy392; - goto yy358; -yy501: - yych = *++p; - if (yych == 'N') goto yy483; - if (yych == 'n') goto yy483; - goto yy358; -yy502: - yych = *++p; - if (yych == 'U') goto yy508; - if (yych == 'u') goto yy508; - goto yy358; -yy503: - yych = *++p; - if (yych == 'U') goto yy509; - if (yych == 'u') goto yy509; - goto yy358; -yy504: - yych = *++p; - if (yych == 'E') goto yy483; - if (yych == 'e') goto yy483; - goto yy358; -yy505: - yych = *++p; - if (yych == 'E') goto yy439; - if (yych == 'e') goto yy439; - goto yy358; -yy506: - yych = *++p; - if (yych == 'E') goto yy500; - if (yych == 'e') goto yy500; - goto yy358; -yy507: - yych = *++p; - if (yych == '[') goto yy510; - goto yy358; -yy508: - yych = *++p; - if (yych == 'O') goto yy512; - if (yych == 'o') goto yy512; - goto yy358; -yy509: - yych = *++p; - if (yych == 'P') goto yy392; - if (yych == 'p') goto yy392; - goto yy358; -yy510: - ++p; - { return 5; } -yy512: - yych = *++p; - if (yych == 'T') goto yy461; - if (yych == 't') goto yy461; - goto yy358; -} - + { + unsigned char yych; + yych = *p; + if (yych == '<') + goto yy296; + ++p; + yy295 : { return 0; } + yy296: + yych = *(marker = ++p); + switch (yych) { + case '!': + goto yy297; + case '/': + goto yy299; + case '?': + goto yy300; + case 'A': + case 'a': + goto yy301; + case 'B': + case 'b': + goto yy302; + case 'C': + case 'c': + goto yy303; + case 'D': + case 'd': + goto yy304; + case 'F': + case 'f': + goto yy305; + case 'H': + case 'h': + goto yy306; + case 'I': + case 'i': + goto yy307; + case 'L': + case 'l': + goto yy308; + case 'M': + case 'm': + goto yy309; + case 'N': + case 'n': + goto yy310; + case 'O': + case 'o': + goto yy311; + case 'P': + case 'p': + goto yy312; + case 'S': + case 's': + goto yy313; + case 'T': + case 't': + goto yy314; + case 'U': + case 'u': + goto yy315; + default: + goto yy295; + } + yy297: + yych = *++p; + if (yych <= '@') { + if (yych == '-') + goto yy316; + } else { + if (yych <= 'Z') + goto yy317; + if (yych <= '[') + goto yy318; + } + yy298: + p = marker; + goto yy295; + yy299: + yych = *++p; + switch (yych) { + case 'A': + case 'a': + goto yy301; + case 'B': + case 'b': + goto yy302; + case 'C': + case 'c': + goto yy303; + case 'D': + case 'd': + goto yy304; + case 'F': + case 'f': + goto yy305; + case 'H': + case 'h': + goto yy306; + case 'I': + case 'i': + goto yy307; + case 'L': + case 'l': + goto yy308; + case 'M': + case 'm': + goto yy309; + case 'N': + case 'n': + goto yy310; + case 'O': + case 'o': + goto yy311; + case 'P': + case 'p': + goto yy319; + case 'S': + case 's': + goto yy320; + case 'T': + case 't': + goto yy321; + case 'U': + case 'u': + goto yy315; + default: + goto yy298; + } + yy300: + ++p; + { return 3; } + yy301: + yych = *++p; + if (yych <= 'S') { + if (yych <= 'D') { + if (yych <= 'C') + goto yy298; + goto yy322; + } else { + if (yych <= 'Q') + goto yy298; + if (yych <= 'R') + goto yy323; + goto yy324; + } + } else { + if (yych <= 'q') { + if (yych == 'd') + goto yy322; + goto yy298; + } else { + if (yych <= 'r') + goto yy323; + if (yych <= 's') + goto yy324; + goto yy298; + } + } + yy302: + yych = *++p; + if (yych <= 'O') { + if (yych <= 'K') { + if (yych == 'A') + goto yy325; + goto yy298; + } else { + if (yych <= 'L') + goto yy326; + if (yych <= 'N') + goto yy298; + goto yy327; + } + } else { + if (yych <= 'k') { + if (yych == 'a') + goto yy325; + goto yy298; + } else { + if (yych <= 'l') + goto yy326; + if (yych == 'o') + goto yy327; + goto yy298; + } + } + yy303: + yych = *++p; + if (yych <= 'O') { + if (yych <= 'D') { + if (yych == 'A') + goto yy328; + goto yy298; + } else { + if (yych <= 'E') + goto yy329; + if (yych <= 'N') + goto yy298; + goto yy330; + } + } else { + if (yych <= 'd') { + if (yych == 'a') + goto yy328; + goto yy298; + } else { + if (yych <= 'e') + goto yy329; + if (yych == 'o') + goto yy330; + goto yy298; + } + } + yy304: + yych = *++p; + switch (yych) { + case 'D': + case 'L': + case 'T': + case 'd': + case 'l': + case 't': + goto yy331; + case 'E': + case 'e': + goto yy332; + case 'I': + case 'i': + goto yy333; + default: + goto yy298; + } + yy305: + yych = *++p; + if (yych <= 'R') { + if (yych <= 'N') { + if (yych == 'I') + goto yy334; + goto yy298; + } else { + if (yych <= 'O') + goto yy335; + if (yych <= 'Q') + goto yy298; + goto yy336; + } + } else { + if (yych <= 'n') { + if (yych == 'i') + goto yy334; + goto yy298; + } else { + if (yych <= 'o') + goto yy335; + if (yych == 'r') + goto yy336; + goto yy298; + } + } + yy306: + yych = *++p; + if (yych <= 'S') { + if (yych <= 'D') { + if (yych <= '0') + goto yy298; + if (yych <= '6') + goto yy331; + goto yy298; + } else { + if (yych <= 'E') + goto yy337; + if (yych == 'R') + goto yy331; + goto yy298; + } + } else { + if (yych <= 'q') { + if (yych <= 'T') + goto yy338; + if (yych == 'e') + goto yy337; + goto yy298; + } else { + if (yych <= 'r') + goto yy331; + if (yych == 't') + goto yy338; + goto yy298; + } + } + yy307: + yych = *++p; + if (yych == 'F') + goto yy339; + if (yych == 'f') + goto yy339; + goto yy298; + yy308: + yych = *++p; + if (yych <= 'I') { + if (yych == 'E') + goto yy340; + if (yych <= 'H') + goto yy298; + goto yy341; + } else { + if (yych <= 'e') { + if (yych <= 'd') + goto yy298; + goto yy340; + } else { + if (yych == 'i') + goto yy341; + goto yy298; + } + } + yy309: + yych = *++p; + if (yych <= 'E') { + if (yych == 'A') + goto yy342; + if (yych <= 'D') + goto yy298; + goto yy343; + } else { + if (yych <= 'a') { + if (yych <= '`') + goto yy298; + goto yy342; + } else { + if (yych == 'e') + goto yy343; + goto yy298; + } + } + yy310: + yych = *++p; + if (yych <= 'O') { + if (yych == 'A') + goto yy344; + if (yych <= 'N') + goto yy298; + goto yy345; + } else { + if (yych <= 'a') { + if (yych <= '`') + goto yy298; + goto yy344; + } else { + if (yych == 'o') + goto yy345; + goto yy298; + } + } + yy311: + yych = *++p; + if (yych <= 'P') { + if (yych == 'L') + goto yy331; + if (yych <= 'O') + goto yy298; + goto yy346; + } else { + if (yych <= 'l') { + if (yych <= 'k') + goto yy298; + goto yy331; + } else { + if (yych == 'p') + goto yy346; + goto yy298; + } + } + yy312: + yych = *++p; + if (yych <= '>') { + if (yych <= ' ') { + if (yych <= 0x08) + goto yy298; + if (yych <= '\r') + goto yy347; + if (yych <= 0x1F) + goto yy298; + goto yy347; + } else { + if (yych == '/') + goto yy348; + if (yych <= '=') + goto yy298; + goto yy347; + } + } else { + if (yych <= 'R') { + if (yych == 'A') + goto yy349; + if (yych <= 'Q') + goto yy298; + goto yy350; + } else { + if (yych <= 'a') { + if (yych <= '`') + goto yy298; + goto yy349; + } else { + if (yych == 'r') + goto yy350; + goto yy298; + } + } + } + yy313: + yych = *++p; + switch (yych) { + case 'C': + case 'c': + goto yy351; + case 'E': + case 'e': + goto yy352; + case 'O': + case 'o': + goto yy353; + case 'T': + case 't': + goto yy354; + case 'U': + case 'u': + goto yy355; + default: + goto yy298; + } + yy314: + yych = *++p; + switch (yych) { + case 'A': + case 'a': + goto yy356; + case 'B': + case 'b': + goto yy357; + case 'D': + case 'd': + goto yy331; + case 'E': + case 'e': + goto yy358; + case 'F': + case 'f': + goto yy359; + case 'H': + case 'h': + goto yy360; + case 'I': + case 'i': + goto yy361; + case 'R': + case 'r': + goto yy362; + default: + goto yy298; + } + yy315: + yych = *++p; + if (yych == 'L') + goto yy331; + if (yych == 'l') + goto yy331; + goto yy298; + yy316: + yych = *++p; + if (yych == '-') + goto yy363; + goto yy298; + yy317: + ++p; + { return 4; } + yy318: + yych = *++p; + if (yych == 'C') + goto yy364; + if (yych == 'c') + goto yy364; + goto yy298; + yy319: + yych = *++p; + if (yych <= '/') { + if (yych <= 0x1F) { + if (yych <= 0x08) + goto yy298; + if (yych <= '\r') + goto yy347; + goto yy298; + } else { + if (yych <= ' ') + goto yy347; + if (yych <= '.') + goto yy298; + goto yy348; + } + } else { + if (yych <= '@') { + if (yych == '>') + goto yy347; + goto yy298; + } else { + if (yych <= 'A') + goto yy349; + if (yych == 'a') + goto yy349; + goto yy298; + } + } + yy320: + yych = *++p; + if (yych <= 'U') { + if (yych <= 'N') { + if (yych == 'E') + goto yy352; + goto yy298; + } else { + if (yych <= 'O') + goto yy353; + if (yych <= 'T') + goto yy298; + goto yy355; + } + } else { + if (yych <= 'n') { + if (yych == 'e') + goto yy352; + goto yy298; + } else { + if (yych <= 'o') + goto yy353; + if (yych == 'u') + goto yy355; + goto yy298; + } + } + yy321: + yych = *++p; + switch (yych) { + case 'A': + case 'a': + goto yy356; + case 'B': + case 'b': + goto yy357; + case 'D': + case 'd': + goto yy331; + case 'F': + case 'f': + goto yy359; + case 'H': + case 'h': + goto yy360; + case 'I': + case 'i': + goto yy361; + case 'R': + case 'r': + goto yy362; + default: + goto yy298; + } + yy322: + yych = *++p; + if (yych == 'D') + goto yy365; + if (yych == 'd') + goto yy365; + goto yy298; + yy323: + yych = *++p; + if (yych == 'T') + goto yy366; + if (yych == 't') + goto yy366; + goto yy298; + yy324: + yych = *++p; + if (yych == 'I') + goto yy367; + if (yych == 'i') + goto yy367; + goto yy298; + yy325: + yych = *++p; + if (yych == 'S') + goto yy368; + if (yych == 's') + goto yy368; + goto yy298; + yy326: + yych = *++p; + if (yych == 'O') + goto yy369; + if (yych == 'o') + goto yy369; + goto yy298; + yy327: + yych = *++p; + if (yych == 'D') + goto yy370; + if (yych == 'd') + goto yy370; + goto yy298; + yy328: + yych = *++p; + if (yych == 'P') + goto yy371; + if (yych == 'p') + goto yy371; + goto yy298; + yy329: + yych = *++p; + if (yych == 'N') + goto yy372; + if (yych == 'n') + goto yy372; + goto yy298; + yy330: + yych = *++p; + if (yych == 'L') + goto yy373; + if (yych == 'l') + goto yy373; + goto yy298; + yy331: + yych = *++p; + if (yych <= ' ') { + if (yych <= 0x08) + goto yy298; + if (yych <= '\r') + goto yy347; + if (yych <= 0x1F) + goto yy298; + goto yy347; + } else { + if (yych <= '/') { + if (yych <= '.') + goto yy298; + goto yy348; + } else { + if (yych == '>') + goto yy347; + goto yy298; + } + } + yy332: + yych = *++p; + if (yych == 'T') + goto yy374; + if (yych == 't') + goto yy374; + goto yy298; + yy333: + yych = *++p; + if (yych <= 'V') { + if (yych <= 'Q') { + if (yych == 'A') + goto yy375; + goto yy298; + } else { + if (yych <= 'R') + goto yy331; + if (yych <= 'U') + goto yy298; + goto yy331; + } + } else { + if (yych <= 'q') { + if (yych == 'a') + goto yy375; + goto yy298; + } else { + if (yych <= 'r') + goto yy331; + if (yych == 'v') + goto yy331; + goto yy298; + } + } + yy334: + yych = *++p; + if (yych <= 'G') { + if (yych == 'E') + goto yy376; + if (yych <= 'F') + goto yy298; + goto yy377; + } else { + if (yych <= 'e') { + if (yych <= 'd') + goto yy298; + goto yy376; + } else { + if (yych == 'g') + goto yy377; + goto yy298; + } + } + yy335: + yych = *++p; + if (yych <= 'R') { + if (yych == 'O') + goto yy372; + if (yych <= 'Q') + goto yy298; + goto yy378; + } else { + if (yych <= 'o') { + if (yych <= 'n') + goto yy298; + goto yy372; + } else { + if (yych == 'r') + goto yy378; + goto yy298; + } + } + yy336: + yych = *++p; + if (yych == 'A') + goto yy379; + if (yych == 'a') + goto yy379; + goto yy298; + yy337: + yych = *++p; + if (yych == 'A') + goto yy380; + if (yych == 'a') + goto yy380; + goto yy298; + yy338: + yych = *++p; + if (yych == 'M') + goto yy315; + if (yych == 'm') + goto yy315; + goto yy298; + yy339: + yych = *++p; + if (yych == 'R') + goto yy381; + if (yych == 'r') + goto yy381; + goto yy298; + yy340: + yych = *++p; + if (yych == 'G') + goto yy382; + if (yych == 'g') + goto yy382; + goto yy298; + yy341: + yych = *++p; + if (yych <= '/') { + if (yych <= 0x1F) { + if (yych <= 0x08) + goto yy298; + if (yych <= '\r') + goto yy347; + goto yy298; + } else { + if (yych <= ' ') + goto yy347; + if (yych <= '.') + goto yy298; + goto yy348; + } + } else { + if (yych <= 'M') { + if (yych == '>') + goto yy347; + goto yy298; + } else { + if (yych <= 'N') + goto yy383; + if (yych == 'n') + goto yy383; + goto yy298; + } + } + yy342: + yych = *++p; + if (yych == 'I') + goto yy384; + if (yych == 'i') + goto yy384; + goto yy298; + yy343: + yych = *++p; + if (yych == 'N') + goto yy385; + if (yych == 'n') + goto yy385; + goto yy298; + yy344: + yych = *++p; + if (yych == 'V') + goto yy331; + if (yych == 'v') + goto yy331; + goto yy298; + yy345: + yych = *++p; + if (yych == 'F') + goto yy386; + if (yych == 'f') + goto yy386; + goto yy298; + yy346: + yych = *++p; + if (yych == 'T') + goto yy387; + if (yych == 't') + goto yy387; + goto yy298; + yy347: + ++p; + { return 6; } + yy348: + yych = *++p; + if (yych == '>') + goto yy347; + goto yy298; + yy349: + yych = *++p; + if (yych == 'R') + goto yy388; + if (yych == 'r') + goto yy388; + goto yy298; + yy350: + yych = *++p; + if (yych == 'E') + goto yy389; + if (yych == 'e') + goto yy389; + goto yy298; + yy351: + yych = *++p; + if (yych == 'R') + goto yy390; + if (yych == 'r') + goto yy390; + goto yy298; + yy352: + yych = *++p; + if (yych == 'C') + goto yy371; + if (yych == 'c') + goto yy371; + goto yy298; + yy353: + yych = *++p; + if (yych == 'U') + goto yy391; + if (yych == 'u') + goto yy391; + goto yy298; + yy354: + yych = *++p; + if (yych == 'Y') + goto yy392; + if (yych == 'y') + goto yy392; + goto yy298; + yy355: + yych = *++p; + if (yych == 'M') + goto yy393; + if (yych == 'm') + goto yy393; + goto yy298; + yy356: + yych = *++p; + if (yych == 'B') + goto yy394; + if (yych == 'b') + goto yy394; + goto yy298; + yy357: + yych = *++p; + if (yych == 'O') + goto yy327; + if (yych == 'o') + goto yy327; + goto yy298; + yy358: + yych = *++p; + if (yych == 'X') + goto yy395; + if (yych == 'x') + goto yy395; + goto yy298; + yy359: + yych = *++p; + if (yych == 'O') + goto yy396; + if (yych == 'o') + goto yy396; + goto yy298; + yy360: + yych = *++p; + if (yych <= '/') { + if (yych <= 0x1F) { + if (yych <= 0x08) + goto yy298; + if (yych <= '\r') + goto yy347; + goto yy298; + } else { + if (yych <= ' ') + goto yy347; + if (yych <= '.') + goto yy298; + goto yy348; + } + } else { + if (yych <= 'D') { + if (yych == '>') + goto yy347; + goto yy298; + } else { + if (yych <= 'E') + goto yy397; + if (yych == 'e') + goto yy397; + goto yy298; + } + } + yy361: + yych = *++p; + if (yych == 'T') + goto yy394; + if (yych == 't') + goto yy394; + goto yy298; + yy362: + yych = *++p; + if (yych <= '/') { + if (yych <= 0x1F) { + if (yych <= 0x08) + goto yy298; + if (yych <= '\r') + goto yy347; + goto yy298; + } else { + if (yych <= ' ') + goto yy347; + if (yych <= '.') + goto yy298; + goto yy348; + } + } else { + if (yych <= '@') { + if (yych == '>') + goto yy347; + goto yy298; + } else { + if (yych <= 'A') + goto yy398; + if (yych == 'a') + goto yy398; + goto yy298; + } + } + yy363: + ++p; + { return 2; } + yy364: + yych = *++p; + if (yych == 'D') + goto yy399; + if (yych == 'd') + goto yy399; + goto yy298; + yy365: + yych = *++p; + if (yych == 'R') + goto yy400; + if (yych == 'r') + goto yy400; + goto yy298; + yy366: + yych = *++p; + if (yych == 'I') + goto yy401; + if (yych == 'i') + goto yy401; + goto yy298; + yy367: + yych = *++p; + if (yych == 'D') + goto yy402; + if (yych == 'd') + goto yy402; + goto yy298; + yy368: + yych = *++p; + if (yych == 'E') + goto yy403; + if (yych == 'e') + goto yy403; + goto yy298; + yy369: + yych = *++p; + if (yych == 'C') + goto yy404; + if (yych == 'c') + goto yy404; + goto yy298; + yy370: + yych = *++p; + if (yych == 'Y') + goto yy331; + if (yych == 'y') + goto yy331; + goto yy298; + yy371: + yych = *++p; + if (yych == 'T') + goto yy405; + if (yych == 't') + goto yy405; + goto yy298; + yy372: + yych = *++p; + if (yych == 'T') + goto yy406; + if (yych == 't') + goto yy406; + goto yy298; + yy373: + yych = *++p; + if (yych <= '/') { + if (yych <= 0x1F) { + if (yych <= 0x08) + goto yy298; + if (yych <= '\r') + goto yy347; + goto yy298; + } else { + if (yych <= ' ') + goto yy347; + if (yych <= '.') + goto yy298; + goto yy348; + } + } else { + if (yych <= 'F') { + if (yych == '>') + goto yy347; + goto yy298; + } else { + if (yych <= 'G') + goto yy407; + if (yych == 'g') + goto yy407; + goto yy298; + } + } + yy374: + yych = *++p; + if (yych == 'A') + goto yy408; + if (yych == 'a') + goto yy408; + goto yy298; + yy375: + yych = *++p; + if (yych == 'L') + goto yy409; + if (yych == 'l') + goto yy409; + goto yy298; + yy376: + yych = *++p; + if (yych == 'L') + goto yy410; + if (yych == 'l') + goto yy410; + goto yy298; + yy377: + yych = *++p; + if (yych <= 'U') { + if (yych == 'C') + goto yy411; + if (yych <= 'T') + goto yy298; + goto yy412; + } else { + if (yych <= 'c') { + if (yych <= 'b') + goto yy298; + goto yy411; + } else { + if (yych == 'u') + goto yy412; + goto yy298; + } + } + yy378: + yych = *++p; + if (yych == 'M') + goto yy331; + if (yych == 'm') + goto yy331; + goto yy298; + yy379: + yych = *++p; + if (yych == 'M') + goto yy413; + if (yych == 'm') + goto yy413; + goto yy298; + yy380: + yych = *++p; + if (yych == 'D') + goto yy414; + if (yych == 'd') + goto yy414; + goto yy298; + yy381: + yych = *++p; + if (yych == 'A') + goto yy415; + if (yych == 'a') + goto yy415; + goto yy298; + yy382: + yych = *++p; + if (yych == 'E') + goto yy416; + if (yych == 'e') + goto yy416; + goto yy298; + yy383: + yych = *++p; + if (yych == 'K') + goto yy331; + if (yych == 'k') + goto yy331; + goto yy298; + yy384: + yych = *++p; + if (yych == 'N') + goto yy331; + if (yych == 'n') + goto yy331; + goto yy298; + yy385: + yych = *++p; + if (yych == 'U') + goto yy417; + if (yych == 'u') + goto yy417; + goto yy298; + yy386: + yych = *++p; + if (yych == 'R') + goto yy418; + if (yych == 'r') + goto yy418; + goto yy298; + yy387: + yych = *++p; + if (yych <= 'I') { + if (yych == 'G') + goto yy407; + if (yych <= 'H') + goto yy298; + goto yy419; + } else { + if (yych <= 'g') { + if (yych <= 'f') + goto yy298; + goto yy407; + } else { + if (yych == 'i') + goto yy419; + goto yy298; + } + } + yy388: + yych = *++p; + if (yych == 'A') + goto yy378; + if (yych == 'a') + goto yy378; + goto yy298; + yy389: + yych = *++p; + if (yych <= 0x1F) { + if (yych <= 0x08) + goto yy298; + if (yych <= '\r') + goto yy420; + goto yy298; + } else { + if (yych <= ' ') + goto yy420; + if (yych == '>') + goto yy420; + goto yy298; + } + yy390: + yych = *++p; + if (yych == 'I') + goto yy421; + if (yych == 'i') + goto yy421; + goto yy298; + yy391: + yych = *++p; + if (yych == 'R') + goto yy422; + if (yych == 'r') + goto yy422; + goto yy298; + yy392: + yych = *++p; + if (yych == 'L') + goto yy350; + if (yych == 'l') + goto yy350; + goto yy298; + yy393: + yych = *++p; + if (yych == 'M') + goto yy423; + if (yych == 'm') + goto yy423; + goto yy298; + yy394: + yych = *++p; + if (yych == 'L') + goto yy402; + if (yych == 'l') + goto yy402; + goto yy298; + yy395: + yych = *++p; + if (yych == 'T') + goto yy424; + if (yych == 't') + goto yy424; + goto yy298; + yy396: + yych = *++p; + if (yych == 'O') + goto yy425; + if (yych == 'o') + goto yy425; + goto yy298; + yy397: + yych = *++p; + if (yych == 'A') + goto yy426; + if (yych == 'a') + goto yy426; + goto yy298; + yy398: + yych = *++p; + if (yych == 'C') + goto yy383; + if (yych == 'c') + goto yy383; + goto yy298; + yy399: + yych = *++p; + if (yych == 'A') + goto yy427; + if (yych == 'a') + goto yy427; + goto yy298; + yy400: + yych = *++p; + if (yych == 'E') + goto yy428; + if (yych == 'e') + goto yy428; + goto yy298; + yy401: + yych = *++p; + if (yych == 'C') + goto yy394; + if (yych == 'c') + goto yy394; + goto yy298; + yy402: + yych = *++p; + if (yych == 'E') + goto yy331; + if (yych == 'e') + goto yy331; + goto yy298; + yy403: + yych = *++p; + if (yych <= '/') { + if (yych <= 0x1F) { + if (yych <= 0x08) + goto yy298; + if (yych <= '\r') + goto yy347; + goto yy298; + } else { + if (yych <= ' ') + goto yy347; + if (yych <= '.') + goto yy298; + goto yy348; + } + } else { + if (yych <= 'E') { + if (yych == '>') + goto yy347; + goto yy298; + } else { + if (yych <= 'F') + goto yy429; + if (yych == 'f') + goto yy429; + goto yy298; + } + } + yy404: + yych = *++p; + if (yych == 'K') + goto yy430; + if (yych == 'k') + goto yy430; + goto yy298; + yy405: + yych = *++p; + if (yych == 'I') + goto yy419; + if (yych == 'i') + goto yy419; + goto yy298; + yy406: + yych = *++p; + if (yych == 'E') + goto yy431; + if (yych == 'e') + goto yy431; + goto yy298; + yy407: + yych = *++p; + if (yych == 'R') + goto yy432; + if (yych == 'r') + goto yy432; + goto yy298; + yy408: + yych = *++p; + if (yych == 'I') + goto yy433; + if (yych == 'i') + goto yy433; + goto yy298; + yy409: + yych = *++p; + if (yych == 'O') + goto yy434; + if (yych == 'o') + goto yy434; + goto yy298; + yy410: + yych = *++p; + if (yych == 'D') + goto yy435; + if (yych == 'd') + goto yy435; + goto yy298; + yy411: + yych = *++p; + if (yych == 'A') + goto yy328; + if (yych == 'a') + goto yy328; + goto yy298; + yy412: + yych = *++p; + if (yych == 'R') + goto yy402; + if (yych == 'r') + goto yy402; + goto yy298; + yy413: + yych = *++p; + if (yych == 'E') + goto yy436; + if (yych == 'e') + goto yy436; + goto yy298; + yy414: + yych = *++p; + if (yych <= '/') { + if (yych <= 0x1F) { + if (yych <= 0x08) + goto yy298; + if (yych <= '\r') + goto yy347; + goto yy298; + } else { + if (yych <= ' ') + goto yy347; + if (yych <= '.') + goto yy298; + goto yy348; + } + } else { + if (yych <= 'D') { + if (yych == '>') + goto yy347; + goto yy298; + } else { + if (yych <= 'E') + goto yy431; + if (yych == 'e') + goto yy431; + goto yy298; + } + } + yy415: + yych = *++p; + if (yych == 'M') + goto yy402; + if (yych == 'm') + goto yy402; + goto yy298; + yy416: + yych = *++p; + if (yych == 'N') + goto yy426; + if (yych == 'n') + goto yy426; + goto yy298; + yy417: + yych = *++p; + if (yych <= '/') { + if (yych <= 0x1F) { + if (yych <= 0x08) + goto yy298; + if (yych <= '\r') + goto yy347; + goto yy298; + } else { + if (yych <= ' ') + goto yy347; + if (yych <= '.') + goto yy298; + goto yy348; + } + } else { + if (yych <= 'H') { + if (yych == '>') + goto yy347; + goto yy298; + } else { + if (yych <= 'I') + goto yy437; + if (yych == 'i') + goto yy437; + goto yy298; + } + } + yy418: + yych = *++p; + if (yych == 'A') + goto yy438; + if (yych == 'a') + goto yy438; + goto yy298; + yy419: + yych = *++p; + if (yych == 'O') + goto yy384; + if (yych == 'o') + goto yy384; + goto yy298; + yy420: + ++p; + { return 1; } + yy421: + yych = *++p; + if (yych == 'P') + goto yy439; + if (yych == 'p') + goto yy439; + goto yy298; + yy422: + yych = *++p; + if (yych == 'C') + goto yy402; + if (yych == 'c') + goto yy402; + goto yy298; + yy423: + yych = *++p; + if (yych == 'A') + goto yy440; + if (yych == 'a') + goto yy440; + goto yy298; + yy424: + yych = *++p; + if (yych == 'A') + goto yy441; + if (yych == 'a') + goto yy441; + goto yy298; + yy425: + yych = *++p; + if (yych == 'T') + goto yy331; + if (yych == 't') + goto yy331; + goto yy298; + yy426: + yych = *++p; + if (yych == 'D') + goto yy331; + if (yych == 'd') + goto yy331; + goto yy298; + yy427: + yych = *++p; + if (yych == 'T') + goto yy442; + if (yych == 't') + goto yy442; + goto yy298; + yy428: + yych = *++p; + if (yych == 'S') + goto yy443; + if (yych == 's') + goto yy443; + goto yy298; + yy429: + yych = *++p; + if (yych == 'O') + goto yy444; + if (yych == 'o') + goto yy444; + goto yy298; + yy430: + yych = *++p; + if (yych == 'Q') + goto yy445; + if (yych == 'q') + goto yy445; + goto yy298; + yy431: + yych = *++p; + if (yych == 'R') + goto yy331; + if (yych == 'r') + goto yy331; + goto yy298; + yy432: + yych = *++p; + if (yych == 'O') + goto yy446; + if (yych == 'o') + goto yy446; + goto yy298; + yy433: + yych = *++p; + if (yych == 'L') + goto yy443; + if (yych == 'l') + goto yy443; + goto yy298; + yy434: + yych = *++p; + if (yych == 'G') + goto yy331; + if (yych == 'g') + goto yy331; + goto yy298; + yy435: + yych = *++p; + if (yych == 'S') + goto yy447; + if (yych == 's') + goto yy447; + goto yy298; + yy436: + yych = *++p; + if (yych <= '/') { + if (yych <= 0x1F) { + if (yych <= 0x08) + goto yy298; + if (yych <= '\r') + goto yy347; + goto yy298; + } else { + if (yych <= ' ') + goto yy347; + if (yych <= '.') + goto yy298; + goto yy348; + } + } else { + if (yych <= 'R') { + if (yych == '>') + goto yy347; + goto yy298; + } else { + if (yych <= 'S') + goto yy447; + if (yych == 's') + goto yy447; + goto yy298; + } + } + yy437: + yych = *++p; + if (yych == 'T') + goto yy448; + if (yych == 't') + goto yy448; + goto yy298; + yy438: + yych = *++p; + if (yych == 'M') + goto yy449; + if (yych == 'm') + goto yy449; + goto yy298; + yy439: + yych = *++p; + if (yych == 'T') + goto yy389; + if (yych == 't') + goto yy389; + goto yy298; + yy440: + yych = *++p; + if (yych == 'R') + goto yy370; + if (yych == 'r') + goto yy370; + goto yy298; + yy441: + yych = *++p; + if (yych == 'R') + goto yy450; + if (yych == 'r') + goto yy450; + goto yy298; + yy442: + yych = *++p; + if (yych == 'A') + goto yy451; + if (yych == 'a') + goto yy451; + goto yy298; + yy443: + yych = *++p; + if (yych == 'S') + goto yy331; + if (yych == 's') + goto yy331; + goto yy298; + yy444: + yych = *++p; + if (yych == 'N') + goto yy425; + if (yych == 'n') + goto yy425; + goto yy298; + yy445: + yych = *++p; + if (yych == 'U') + goto yy452; + if (yych == 'u') + goto yy452; + goto yy298; + yy446: + yych = *++p; + if (yych == 'U') + goto yy453; + if (yych == 'u') + goto yy453; + goto yy298; + yy447: + yych = *++p; + if (yych == 'E') + goto yy425; + if (yych == 'e') + goto yy425; + goto yy298; + yy448: + yych = *++p; + if (yych == 'E') + goto yy378; + if (yych == 'e') + goto yy378; + goto yy298; + yy449: + yych = *++p; + if (yych == 'E') + goto yy443; + if (yych == 'e') + goto yy443; + goto yy298; + yy450: + yych = *++p; + if (yych == 'E') + goto yy454; + if (yych == 'e') + goto yy454; + goto yy298; + yy451: + yych = *++p; + if (yych == '[') + goto yy455; + goto yy298; + yy452: + yych = *++p; + if (yych == 'O') + goto yy456; + if (yych == 'o') + goto yy456; + goto yy298; + yy453: + yych = *++p; + if (yych == 'P') + goto yy331; + if (yych == 'p') + goto yy331; + goto yy298; + yy454: + yych = *++p; + if (yych == 'A') + goto yy389; + if (yych == 'a') + goto yy389; + goto yy298; + yy455: + ++p; + { return 5; } + yy456: + yych = *++p; + if (yych == 'T') + goto yy402; + if (yych == 't') + goto yy402; + goto yy298; + } } // Try to match an HTML block tag start line of type 7, returning // 7 if successful, 0 if not. -bufsize_t _scan_html_block_start_7(const unsigned char *p) -{ +bufsize_t _scan_html_block_start_7(const unsigned char *p) { const unsigned char *marker = NULL; -{ - unsigned char yych; - unsigned int yyaccept = 0; - static const unsigned char yybm[] = { - 0, 224, 224, 224, 224, 224, 224, 224, - 224, 198, 210, 194, 198, 194, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 198, 224, 128, 224, 224, 224, 224, 64, - 224, 224, 224, 224, 224, 233, 232, 224, - 233, 233, 233, 233, 233, 233, 233, 233, - 233, 233, 232, 224, 192, 192, 192, 224, - 224, 233, 233, 233, 233, 233, 233, 233, - 233, 233, 233, 233, 233, 233, 233, 233, - 233, 233, 233, 233, 233, 233, 233, 233, - 233, 233, 233, 224, 224, 224, 224, 232, - 192, 233, 233, 233, 233, 233, 233, 233, - 233, 233, 233, 233, 233, 233, 233, 233, - 233, 233, 233, 233, 233, 233, 233, 233, - 233, 233, 233, 224, 224, 224, 224, 224, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - yych = *p; - if (yych == '<') goto yy517; - ++p; -yy516: - { return 0; } -yy517: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= '@') { - if (yych != '/') goto yy516; - } else { - if (yych <= 'Z') goto yy520; - if (yych <= '`') goto yy516; - if (yych <= 'z') goto yy520; - goto yy516; - } - yych = *++p; - if (yych <= '@') goto yy519; - if (yych <= 'Z') goto yy522; - if (yych <= '`') goto yy519; - if (yych <= 'z') goto yy522; -yy519: - p = marker; - if (yyaccept == 0) { - goto yy516; - } else { - goto yy535; - } -yy520: - yych = *++p; - if (yybm[0+yych] & 2) { - goto yy524; - } - if (yych <= '=') { - if (yych <= '.') { - if (yych == '-') goto yy520; - goto yy519; - } else { - if (yych <= '/') goto yy526; - if (yych <= '9') goto yy520; - goto yy519; - } - } else { - if (yych <= 'Z') { - if (yych <= '>') goto yy527; - if (yych <= '@') goto yy519; - goto yy520; - } else { - if (yych <= '`') goto yy519; - if (yych <= 'z') goto yy520; - goto yy519; - } - } -yy522: - yych = *++p; - if (yych <= '/') { - if (yych <= 0x1F) { - if (yych <= 0x08) goto yy519; - if (yych <= '\r') goto yy529; - goto yy519; - } else { - if (yych <= ' ') goto yy529; - if (yych == '-') goto yy522; - goto yy519; - } - } else { - if (yych <= '@') { - if (yych <= '9') goto yy522; - if (yych == '>') goto yy527; - goto yy519; - } else { - if (yych <= 'Z') goto yy522; - if (yych <= '`') goto yy519; - if (yych <= 'z') goto yy522; - goto yy519; - } - } -yy524: - yych = *++p; - if (yybm[0+yych] & 2) { - goto yy524; - } - if (yych <= '>') { - if (yych <= '9') { - if (yych != '/') goto yy519; - } else { - if (yych <= ':') goto yy531; - if (yych <= '=') goto yy519; - goto yy527; - } - } else { - if (yych <= '^') { - if (yych <= '@') goto yy519; - if (yych <= 'Z') goto yy531; - goto yy519; - } else { - if (yych == '`') goto yy519; - if (yych <= 'z') goto yy531; - goto yy519; - } - } -yy526: - yych = *++p; - if (yych != '>') goto yy519; -yy527: - yych = *++p; - if (yybm[0+yych] & 4) { - goto yy527; - } - if (yych <= 0x08) goto yy519; - if (yych <= '\n') goto yy533; - if (yych <= '\v') goto yy519; - if (yych <= '\r') goto yy536; - goto yy519; -yy529: - yych = *++p; - if (yych <= 0x1F) { - if (yych <= 0x08) goto yy519; - if (yych <= '\r') goto yy529; - goto yy519; - } else { - if (yych <= ' ') goto yy529; - if (yych == '>') goto yy527; - goto yy519; - } -yy531: - yych = *++p; - if (yybm[0+yych] & 8) { - goto yy531; - } - if (yych <= ',') { - if (yych <= '\r') { - if (yych <= 0x08) goto yy519; - goto yy537; - } else { - if (yych == ' ') goto yy537; - goto yy519; - } - } else { - if (yych <= '<') { - if (yych <= '/') goto yy526; - goto yy519; - } else { - if (yych <= '=') goto yy539; - if (yych <= '>') goto yy527; - goto yy519; - } - } -yy533: - yyaccept = 1; - yych = *(marker = ++p); - if (yybm[0+yych] & 4) { - goto yy527; - } - if (yych <= 0x08) goto yy535; - if (yych <= '\n') goto yy533; - if (yych <= '\v') goto yy535; - if (yych <= '\r') goto yy536; -yy535: - { return 7; } -yy536: - ++p; - goto yy535; -yy537: - yych = *++p; - if (yych <= '<') { - if (yych <= ' ') { - if (yych <= 0x08) goto yy519; - if (yych <= '\r') goto yy537; - if (yych <= 0x1F) goto yy519; - goto yy537; - } else { - if (yych <= '/') { - if (yych <= '.') goto yy519; - goto yy526; - } else { - if (yych == ':') goto yy531; - goto yy519; - } - } - } else { - if (yych <= 'Z') { - if (yych <= '=') goto yy539; - if (yych <= '>') goto yy527; - if (yych <= '@') goto yy519; - goto yy531; - } else { - if (yych <= '_') { - if (yych <= '^') goto yy519; - goto yy531; - } else { - if (yych <= '`') goto yy519; - if (yych <= 'z') goto yy531; - goto yy519; - } - } - } -yy539: - yych = *++p; - if (yybm[0+yych] & 32) { - goto yy541; - } - if (yych <= 0xE0) { - if (yych <= '"') { - if (yych <= 0x00) goto yy519; - if (yych <= ' ') goto yy539; - goto yy543; - } else { - if (yych <= '\'') goto yy545; - if (yych <= 0xC1) goto yy519; - if (yych <= 0xDF) goto yy547; - goto yy548; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) goto yy550; - goto yy549; - } else { - if (yych <= 0xF0) goto yy551; - if (yych <= 0xF3) goto yy552; - if (yych <= 0xF4) goto yy553; - goto yy519; - } - } -yy541: - yych = *++p; - if (yybm[0+yych] & 32) { - goto yy541; - } - if (yych <= 0xE0) { - if (yych <= '=') { - if (yych <= 0x00) goto yy519; - if (yych <= ' ') goto yy524; - goto yy519; - } else { - if (yych <= '>') goto yy527; - if (yych <= 0xC1) goto yy519; - if (yych <= 0xDF) goto yy547; - goto yy548; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) goto yy550; - goto yy549; - } else { - if (yych <= 0xF0) goto yy551; - if (yych <= 0xF3) goto yy552; - if (yych <= 0xF4) goto yy553; - goto yy519; - } - } -yy543: - yych = *++p; - if (yybm[0+yych] & 64) { - goto yy543; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x00) goto yy519; - if (yych <= '"') goto yy554; - goto yy519; - } else { - if (yych <= 0xDF) goto yy555; - if (yych <= 0xE0) goto yy556; - goto yy557; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy558; - if (yych <= 0xEF) goto yy557; - goto yy559; - } else { - if (yych <= 0xF3) goto yy560; - if (yych <= 0xF4) goto yy561; - goto yy519; - } - } -yy545: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy545; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x00) goto yy519; - if (yych <= '\'') goto yy554; - goto yy519; - } else { - if (yych <= 0xDF) goto yy562; - if (yych <= 0xE0) goto yy563; - goto yy564; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy565; - if (yych <= 0xEF) goto yy564; - goto yy566; - } else { - if (yych <= 0xF3) goto yy567; - if (yych <= 0xF4) goto yy568; - goto yy519; - } - } -yy547: - yych = *++p; - if (yych <= 0x7F) goto yy519; - if (yych <= 0xBF) goto yy541; - goto yy519; -yy548: - yych = *++p; - if (yych <= 0x9F) goto yy519; - if (yych <= 0xBF) goto yy547; - goto yy519; -yy549: - yych = *++p; - if (yych <= 0x7F) goto yy519; - if (yych <= 0xBF) goto yy547; - goto yy519; -yy550: - yych = *++p; - if (yych <= 0x7F) goto yy519; - if (yych <= 0x9F) goto yy547; - goto yy519; -yy551: - yych = *++p; - if (yych <= 0x8F) goto yy519; - if (yych <= 0xBF) goto yy549; - goto yy519; -yy552: - yych = *++p; - if (yych <= 0x7F) goto yy519; - if (yych <= 0xBF) goto yy549; - goto yy519; -yy553: - yych = *++p; - if (yych <= 0x7F) goto yy519; - if (yych <= 0x8F) goto yy549; - goto yy519; -yy554: - yych = *++p; - if (yybm[0+yych] & 2) { - goto yy524; - } - if (yych == '/') goto yy526; - if (yych == '>') goto yy527; - goto yy519; -yy555: - yych = *++p; - if (yych <= 0x7F) goto yy519; - if (yych <= 0xBF) goto yy543; - goto yy519; -yy556: - yych = *++p; - if (yych <= 0x9F) goto yy519; - if (yych <= 0xBF) goto yy555; - goto yy519; -yy557: - yych = *++p; - if (yych <= 0x7F) goto yy519; - if (yych <= 0xBF) goto yy555; - goto yy519; -yy558: - yych = *++p; - if (yych <= 0x7F) goto yy519; - if (yych <= 0x9F) goto yy555; - goto yy519; -yy559: - yych = *++p; - if (yych <= 0x8F) goto yy519; - if (yych <= 0xBF) goto yy557; - goto yy519; -yy560: - yych = *++p; - if (yych <= 0x7F) goto yy519; - if (yych <= 0xBF) goto yy557; - goto yy519; -yy561: - yych = *++p; - if (yych <= 0x7F) goto yy519; - if (yych <= 0x8F) goto yy557; - goto yy519; -yy562: - yych = *++p; - if (yych <= 0x7F) goto yy519; - if (yych <= 0xBF) goto yy545; - goto yy519; -yy563: - yych = *++p; - if (yych <= 0x9F) goto yy519; - if (yych <= 0xBF) goto yy562; - goto yy519; -yy564: - yych = *++p; - if (yych <= 0x7F) goto yy519; - if (yych <= 0xBF) goto yy562; - goto yy519; -yy565: - yych = *++p; - if (yych <= 0x7F) goto yy519; - if (yych <= 0x9F) goto yy562; - goto yy519; -yy566: - yych = *++p; - if (yych <= 0x8F) goto yy519; - if (yych <= 0xBF) goto yy564; - goto yy519; -yy567: - yych = *++p; - if (yych <= 0x7F) goto yy519; - if (yych <= 0xBF) goto yy564; - goto yy519; -yy568: - yych = *++p; - if (yych <= 0x7F) goto yy519; - if (yych <= 0x8F) goto yy564; - goto yy519; -} - + { + unsigned char yych; + unsigned int yyaccept = 0; + static const unsigned char yybm[] = { + 0, 224, 224, 224, 224, 224, 224, 224, 224, 198, 210, 194, 198, 194, + 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, + 224, 224, 224, 224, 198, 224, 128, 224, 224, 224, 224, 64, 224, 224, + 224, 224, 224, 233, 232, 224, 233, 233, 233, 233, 233, 233, 233, 233, + 233, 233, 232, 224, 192, 192, 192, 224, 224, 233, 233, 233, 233, 233, + 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, + 233, 233, 233, 233, 233, 233, 233, 224, 224, 224, 224, 232, 192, 233, + 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, + 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 224, 224, 224, + 224, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }; + yych = *p; + if (yych == '<') + goto yy459; + ++p; + yy458 : { return 0; } + yy459: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= '@') { + if (yych != '/') + goto yy458; + } else { + if (yych <= 'Z') + goto yy461; + if (yych <= '`') + goto yy458; + if (yych <= 'z') + goto yy461; + goto yy458; + } + yych = *++p; + if (yych <= '@') + goto yy460; + if (yych <= 'Z') + goto yy462; + if (yych <= '`') + goto yy460; + if (yych <= 'z') + goto yy462; + yy460: + p = marker; + if (yyaccept == 0) { + goto yy458; + } else { + goto yy469; + } + yy461: + yych = *++p; + if (yybm[0 + yych] & 2) { + goto yy463; + } + if (yych <= '=') { + if (yych <= '.') { + if (yych == '-') + goto yy461; + goto yy460; + } else { + if (yych <= '/') + goto yy464; + if (yych <= '9') + goto yy461; + goto yy460; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy465; + if (yych <= '@') + goto yy460; + goto yy461; + } else { + if (yych <= '`') + goto yy460; + if (yych <= 'z') + goto yy461; + goto yy460; + } + } + yy462: + yych = *++p; + if (yych <= '/') { + if (yych <= 0x1F) { + if (yych <= 0x08) + goto yy460; + if (yych <= '\r') + goto yy466; + goto yy460; + } else { + if (yych <= ' ') + goto yy466; + if (yych == '-') + goto yy462; + goto yy460; + } + } else { + if (yych <= '@') { + if (yych <= '9') + goto yy462; + if (yych == '>') + goto yy465; + goto yy460; + } else { + if (yych <= 'Z') + goto yy462; + if (yych <= '`') + goto yy460; + if (yych <= 'z') + goto yy462; + goto yy460; + } + } + yy463: + yych = *++p; + if (yybm[0 + yych] & 2) { + goto yy463; + } + if (yych <= '>') { + if (yych <= '9') { + if (yych != '/') + goto yy460; + } else { + if (yych <= ':') + goto yy467; + if (yych <= '=') + goto yy460; + goto yy465; + } + } else { + if (yych <= '^') { + if (yych <= '@') + goto yy460; + if (yych <= 'Z') + goto yy467; + goto yy460; + } else { + if (yych == '`') + goto yy460; + if (yych <= 'z') + goto yy467; + goto yy460; + } + } + yy464: + yych = *++p; + if (yych != '>') + goto yy460; + yy465: + yych = *++p; + if (yybm[0 + yych] & 4) { + goto yy465; + } + if (yych <= 0x08) + goto yy460; + if (yych <= '\n') + goto yy468; + if (yych <= '\v') + goto yy460; + if (yych <= '\r') + goto yy470; + goto yy460; + yy466: + yych = *++p; + if (yych <= 0x1F) { + if (yych <= 0x08) + goto yy460; + if (yych <= '\r') + goto yy466; + goto yy460; + } else { + if (yych <= ' ') + goto yy466; + if (yych == '>') + goto yy465; + goto yy460; + } + yy467: + yych = *++p; + if (yybm[0 + yych] & 8) { + goto yy467; + } + if (yych <= ',') { + if (yych <= '\r') { + if (yych <= 0x08) + goto yy460; + goto yy471; + } else { + if (yych == ' ') + goto yy471; + goto yy460; + } + } else { + if (yych <= '<') { + if (yych <= '/') + goto yy464; + goto yy460; + } else { + if (yych <= '=') + goto yy472; + if (yych <= '>') + goto yy465; + goto yy460; + } + } + yy468: + yyaccept = 1; + yych = *(marker = ++p); + if (yybm[0 + yych] & 4) { + goto yy465; + } + if (yych <= 0x08) + goto yy469; + if (yych <= '\n') + goto yy468; + if (yych <= '\v') + goto yy469; + if (yych <= '\r') + goto yy470; + yy469 : { return 7; } + yy470: + ++p; + goto yy469; + yy471: + yych = *++p; + if (yych <= '<') { + if (yych <= ' ') { + if (yych <= 0x08) + goto yy460; + if (yych <= '\r') + goto yy471; + if (yych <= 0x1F) + goto yy460; + goto yy471; + } else { + if (yych <= '/') { + if (yych <= '.') + goto yy460; + goto yy464; + } else { + if (yych == ':') + goto yy467; + goto yy460; + } + } + } else { + if (yych <= 'Z') { + if (yych <= '=') + goto yy472; + if (yych <= '>') + goto yy465; + if (yych <= '@') + goto yy460; + goto yy467; + } else { + if (yych <= '_') { + if (yych <= '^') + goto yy460; + goto yy467; + } else { + if (yych <= '`') + goto yy460; + if (yych <= 'z') + goto yy467; + goto yy460; + } + } + } + yy472: + yych = *++p; + if (yybm[0 + yych] & 32) { + goto yy473; + } + if (yych <= 0xE0) { + if (yych <= '"') { + if (yych <= 0x00) + goto yy460; + if (yych <= ' ') + goto yy472; + goto yy474; + } else { + if (yych <= '\'') + goto yy475; + if (yych <= 0xC1) + goto yy460; + if (yych <= 0xDF) + goto yy476; + goto yy477; + } + } else { + if (yych <= 0xEF) { + if (yych == 0xED) + goto yy479; + goto yy478; + } else { + if (yych <= 0xF0) + goto yy480; + if (yych <= 0xF3) + goto yy481; + if (yych <= 0xF4) + goto yy482; + goto yy460; + } + } + yy473: + yych = *++p; + if (yybm[0 + yych] & 32) { + goto yy473; + } + if (yych <= 0xE0) { + if (yych <= '=') { + if (yych <= 0x00) + goto yy460; + if (yych <= ' ') + goto yy463; + goto yy460; + } else { + if (yych <= '>') + goto yy465; + if (yych <= 0xC1) + goto yy460; + if (yych <= 0xDF) + goto yy476; + goto yy477; + } + } else { + if (yych <= 0xEF) { + if (yych == 0xED) + goto yy479; + goto yy478; + } else { + if (yych <= 0xF0) + goto yy480; + if (yych <= 0xF3) + goto yy481; + if (yych <= 0xF4) + goto yy482; + goto yy460; + } + } + yy474: + yych = *++p; + if (yybm[0 + yych] & 64) { + goto yy474; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= 0x00) + goto yy460; + if (yych <= '"') + goto yy483; + goto yy460; + } else { + if (yych <= 0xDF) + goto yy484; + if (yych <= 0xE0) + goto yy485; + goto yy486; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy487; + if (yych <= 0xEF) + goto yy486; + goto yy488; + } else { + if (yych <= 0xF3) + goto yy489; + if (yych <= 0xF4) + goto yy490; + goto yy460; + } + } + yy475: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy475; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= 0x00) + goto yy460; + if (yych <= '\'') + goto yy483; + goto yy460; + } else { + if (yych <= 0xDF) + goto yy491; + if (yych <= 0xE0) + goto yy492; + goto yy493; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy494; + if (yych <= 0xEF) + goto yy493; + goto yy495; + } else { + if (yych <= 0xF3) + goto yy496; + if (yych <= 0xF4) + goto yy497; + goto yy460; + } + } + yy476: + yych = *++p; + if (yych <= 0x7F) + goto yy460; + if (yych <= 0xBF) + goto yy473; + goto yy460; + yy477: + yych = *++p; + if (yych <= 0x9F) + goto yy460; + if (yych <= 0xBF) + goto yy476; + goto yy460; + yy478: + yych = *++p; + if (yych <= 0x7F) + goto yy460; + if (yych <= 0xBF) + goto yy476; + goto yy460; + yy479: + yych = *++p; + if (yych <= 0x7F) + goto yy460; + if (yych <= 0x9F) + goto yy476; + goto yy460; + yy480: + yych = *++p; + if (yych <= 0x8F) + goto yy460; + if (yych <= 0xBF) + goto yy478; + goto yy460; + yy481: + yych = *++p; + if (yych <= 0x7F) + goto yy460; + if (yych <= 0xBF) + goto yy478; + goto yy460; + yy482: + yych = *++p; + if (yych <= 0x7F) + goto yy460; + if (yych <= 0x8F) + goto yy478; + goto yy460; + yy483: + yych = *++p; + if (yybm[0 + yych] & 2) { + goto yy463; + } + if (yych == '/') + goto yy464; + if (yych == '>') + goto yy465; + goto yy460; + yy484: + yych = *++p; + if (yych <= 0x7F) + goto yy460; + if (yych <= 0xBF) + goto yy474; + goto yy460; + yy485: + yych = *++p; + if (yych <= 0x9F) + goto yy460; + if (yych <= 0xBF) + goto yy484; + goto yy460; + yy486: + yych = *++p; + if (yych <= 0x7F) + goto yy460; + if (yych <= 0xBF) + goto yy484; + goto yy460; + yy487: + yych = *++p; + if (yych <= 0x7F) + goto yy460; + if (yych <= 0x9F) + goto yy484; + goto yy460; + yy488: + yych = *++p; + if (yych <= 0x8F) + goto yy460; + if (yych <= 0xBF) + goto yy486; + goto yy460; + yy489: + yych = *++p; + if (yych <= 0x7F) + goto yy460; + if (yych <= 0xBF) + goto yy486; + goto yy460; + yy490: + yych = *++p; + if (yych <= 0x7F) + goto yy460; + if (yych <= 0x8F) + goto yy486; + goto yy460; + yy491: + yych = *++p; + if (yych <= 0x7F) + goto yy460; + if (yych <= 0xBF) + goto yy475; + goto yy460; + yy492: + yych = *++p; + if (yych <= 0x9F) + goto yy460; + if (yych <= 0xBF) + goto yy491; + goto yy460; + yy493: + yych = *++p; + if (yych <= 0x7F) + goto yy460; + if (yych <= 0xBF) + goto yy491; + goto yy460; + yy494: + yych = *++p; + if (yych <= 0x7F) + goto yy460; + if (yych <= 0x9F) + goto yy491; + goto yy460; + yy495: + yych = *++p; + if (yych <= 0x8F) + goto yy460; + if (yych <= 0xBF) + goto yy493; + goto yy460; + yy496: + yych = *++p; + if (yych <= 0x7F) + goto yy460; + if (yych <= 0xBF) + goto yy493; + goto yy460; + yy497: + yych = *++p; + if (yych <= 0x7F) + goto yy460; + if (yych <= 0x8F) + goto yy493; + goto yy460; + } } // Try to match an HTML block end line of type 1 -bufsize_t _scan_html_block_end_1(const unsigned char *p) -{ +bufsize_t _scan_html_block_end_1(const unsigned char *p) { const unsigned char *marker = NULL; const unsigned char *start = p; -{ - unsigned char yych; - unsigned int yyaccept = 0; - static const unsigned char yybm[] = { - 0, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 0, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 128, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 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, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - yych = *p; - if (yych <= 0xDF) { - if (yych <= ';') { - if (yych <= 0x00) goto yy571; - if (yych != '\n') goto yy573; - } else { - if (yych <= '<') goto yy574; - if (yych <= 0x7F) goto yy573; - if (yych >= 0xC2) goto yy575; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) goto yy576; - if (yych == 0xED) goto yy578; - goto yy577; - } else { - if (yych <= 0xF0) goto yy579; - if (yych <= 0xF3) goto yy580; - if (yych <= 0xF4) goto yy581; - } - } -yy571: - ++p; -yy572: - { return 0; } -yy573: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= '\n') { - if (yych <= 0x00) goto yy572; - if (yych <= '\t') goto yy583; - goto yy572; - } else { - if (yych <= 0x7F) goto yy583; - if (yych <= 0xC1) goto yy572; - if (yych <= 0xF4) goto yy583; - goto yy572; - } -yy574: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= '.') { - if (yych <= 0x00) goto yy572; - if (yych == '\n') goto yy572; - goto yy583; - } else { - if (yych <= 0x7F) { - if (yych <= '/') goto yy594; - goto yy583; - } else { - if (yych <= 0xC1) goto yy572; - if (yych <= 0xF4) goto yy583; - goto yy572; - } - } -yy575: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy572; - if (yych <= 0xBF) goto yy582; - goto yy572; -yy576: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x9F) goto yy572; - if (yych <= 0xBF) goto yy587; - goto yy572; -yy577: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy572; - if (yych <= 0xBF) goto yy587; - goto yy572; -yy578: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy572; - if (yych <= 0x9F) goto yy587; - goto yy572; -yy579: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x8F) goto yy572; - if (yych <= 0xBF) goto yy589; - goto yy572; -yy580: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy572; - if (yych <= 0xBF) goto yy589; - goto yy572; -yy581: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy572; - if (yych <= 0x8F) goto yy589; - goto yy572; -yy582: - yych = *++p; -yy583: - if (yybm[0+yych] & 64) { - goto yy582; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') goto yy584; - if (yych <= '<') goto yy585; - } else { - if (yych <= 0xDF) goto yy587; - if (yych <= 0xE0) goto yy588; - goto yy589; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy590; - if (yych <= 0xEF) goto yy589; - goto yy591; - } else { - if (yych <= 0xF3) goto yy592; - if (yych <= 0xF4) goto yy593; - } - } -yy584: - p = marker; - if (yyaccept == 0) { - goto yy572; - } else { - goto yy604; - } -yy585: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy585; - } - if (yych <= 0xDF) { - if (yych <= '.') { - if (yych <= 0x00) goto yy584; - if (yych == '\n') goto yy584; - goto yy582; - } else { - if (yych <= '/') goto yy594; - if (yych <= 0x7F) goto yy582; - if (yych <= 0xC1) goto yy584; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) goto yy588; - if (yych == 0xED) goto yy590; - goto yy589; - } else { - if (yych <= 0xF0) goto yy591; - if (yych <= 0xF3) goto yy592; - if (yych <= 0xF4) goto yy593; - goto yy584; - } - } -yy587: - yych = *++p; - if (yych <= 0x7F) goto yy584; - if (yych <= 0xBF) goto yy582; - goto yy584; -yy588: - yych = *++p; - if (yych <= 0x9F) goto yy584; - if (yych <= 0xBF) goto yy587; - goto yy584; -yy589: - yych = *++p; - if (yych <= 0x7F) goto yy584; - if (yych <= 0xBF) goto yy587; - goto yy584; -yy590: - yych = *++p; - if (yych <= 0x7F) goto yy584; - if (yych <= 0x9F) goto yy587; - goto yy584; -yy591: - yych = *++p; - if (yych <= 0x8F) goto yy584; - if (yych <= 0xBF) goto yy589; - goto yy584; -yy592: - yych = *++p; - if (yych <= 0x7F) goto yy584; - if (yych <= 0xBF) goto yy589; - goto yy584; -yy593: - yych = *++p; - if (yych <= 0x7F) goto yy584; - if (yych <= 0x8F) goto yy589; - goto yy584; -yy594: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy585; - } - if (yych <= 's') { - if (yych <= 'P') { - if (yych <= '\t') { - if (yych <= 0x00) goto yy584; - goto yy582; - } else { - if (yych <= '\n') goto yy584; - if (yych <= 'O') goto yy582; - } - } else { - if (yych <= 'o') { - if (yych == 'S') goto yy596; - goto yy582; - } else { - if (yych <= 'p') goto yy595; - if (yych <= 'r') goto yy582; - goto yy596; - } - } - } else { - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x7F) goto yy582; - goto yy584; - } else { - if (yych <= 0xDF) goto yy587; - if (yych <= 0xE0) goto yy588; - goto yy589; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy590; - if (yych <= 0xEF) goto yy589; - goto yy591; - } else { - if (yych <= 0xF3) goto yy592; - if (yych <= 0xF4) goto yy593; - goto yy584; - } - } - } -yy595: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy585; - } - if (yych <= 0xC1) { - if (yych <= 'Q') { - if (yych <= 0x00) goto yy584; - if (yych == '\n') goto yy584; - goto yy582; - } else { - if (yych <= 'q') { - if (yych <= 'R') goto yy597; - goto yy582; - } else { - if (yych <= 'r') goto yy597; - if (yych <= 0x7F) goto yy582; - goto yy584; - } - } - } else { - if (yych <= 0xED) { - if (yych <= 0xDF) goto yy587; - if (yych <= 0xE0) goto yy588; - if (yych <= 0xEC) goto yy589; - goto yy590; - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) goto yy589; - goto yy591; - } else { - if (yych <= 0xF3) goto yy592; - if (yych <= 0xF4) goto yy593; - goto yy584; - } - } - } -yy596: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy585; - } - if (yych <= 't') { - if (yych <= 'C') { - if (yych <= '\t') { - if (yych <= 0x00) goto yy584; - goto yy582; - } else { - if (yych <= '\n') goto yy584; - if (yych <= 'B') goto yy582; - goto yy598; - } - } else { - if (yych <= 'b') { - if (yych == 'T') goto yy599; - goto yy582; - } else { - if (yych <= 'c') goto yy598; - if (yych <= 's') goto yy582; - goto yy599; - } - } - } else { - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x7F) goto yy582; - goto yy584; - } else { - if (yych <= 0xDF) goto yy587; - if (yych <= 0xE0) goto yy588; - goto yy589; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy590; - if (yych <= 0xEF) goto yy589; - goto yy591; - } else { - if (yych <= 0xF3) goto yy592; - if (yych <= 0xF4) goto yy593; - goto yy584; - } - } - } -yy597: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy585; - } - if (yych <= 0xC1) { - if (yych <= 'D') { - if (yych <= 0x00) goto yy584; - if (yych == '\n') goto yy584; - goto yy582; - } else { - if (yych <= 'd') { - if (yych <= 'E') goto yy600; - goto yy582; - } else { - if (yych <= 'e') goto yy600; - if (yych <= 0x7F) goto yy582; - goto yy584; - } - } - } else { - if (yych <= 0xED) { - if (yych <= 0xDF) goto yy587; - if (yych <= 0xE0) goto yy588; - if (yych <= 0xEC) goto yy589; - goto yy590; - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) goto yy589; - goto yy591; - } else { - if (yych <= 0xF3) goto yy592; - if (yych <= 0xF4) goto yy593; - goto yy584; - } - } - } -yy598: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy585; - } - if (yych <= 0xC1) { - if (yych <= 'Q') { - if (yych <= 0x00) goto yy584; - if (yych == '\n') goto yy584; - goto yy582; - } else { - if (yych <= 'q') { - if (yych <= 'R') goto yy601; - goto yy582; - } else { - if (yych <= 'r') goto yy601; - if (yych <= 0x7F) goto yy582; - goto yy584; - } - } - } else { - if (yych <= 0xED) { - if (yych <= 0xDF) goto yy587; - if (yych <= 0xE0) goto yy588; - if (yych <= 0xEC) goto yy589; - goto yy590; - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) goto yy589; - goto yy591; - } else { - if (yych <= 0xF3) goto yy592; - if (yych <= 0xF4) goto yy593; - goto yy584; - } - } - } -yy599: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy585; - } - if (yych <= 0xC1) { - if (yych <= 'X') { - if (yych <= 0x00) goto yy584; - if (yych == '\n') goto yy584; - goto yy582; - } else { - if (yych <= 'x') { - if (yych <= 'Y') goto yy602; - goto yy582; - } else { - if (yych <= 'y') goto yy602; - if (yych <= 0x7F) goto yy582; - goto yy584; - } - } - } else { - if (yych <= 0xED) { - if (yych <= 0xDF) goto yy587; - if (yych <= 0xE0) goto yy588; - if (yych <= 0xEC) goto yy589; - goto yy590; - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) goto yy589; - goto yy591; - } else { - if (yych <= 0xF3) goto yy592; - if (yych <= 0xF4) goto yy593; - goto yy584; - } - } - } -yy600: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy585; - } - if (yych <= 0xDF) { - if (yych <= '=') { - if (yych <= 0x00) goto yy584; - if (yych == '\n') goto yy584; - goto yy582; - } else { - if (yych <= '>') goto yy603; - if (yych <= 0x7F) goto yy582; - if (yych <= 0xC1) goto yy584; - goto yy587; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) goto yy588; - if (yych == 0xED) goto yy590; - goto yy589; - } else { - if (yych <= 0xF0) goto yy591; - if (yych <= 0xF3) goto yy592; - if (yych <= 0xF4) goto yy593; - goto yy584; - } - } -yy601: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy585; - } - if (yych <= 0xC1) { - if (yych <= 'H') { - if (yych <= 0x00) goto yy584; - if (yych == '\n') goto yy584; - goto yy582; - } else { - if (yych <= 'h') { - if (yych <= 'I') goto yy605; - goto yy582; - } else { - if (yych <= 'i') goto yy605; - if (yych <= 0x7F) goto yy582; - goto yy584; - } - } - } else { - if (yych <= 0xED) { - if (yych <= 0xDF) goto yy587; - if (yych <= 0xE0) goto yy588; - if (yych <= 0xEC) goto yy589; - goto yy590; - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) goto yy589; - goto yy591; - } else { - if (yych <= 0xF3) goto yy592; - if (yych <= 0xF4) goto yy593; - goto yy584; - } - } - } -yy602: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy585; - } - if (yych <= 0xC1) { - if (yych <= 'K') { - if (yych <= 0x00) goto yy584; - if (yych == '\n') goto yy584; - goto yy582; - } else { - if (yych <= 'k') { - if (yych <= 'L') goto yy597; - goto yy582; - } else { - if (yych <= 'l') goto yy597; - if (yych <= 0x7F) goto yy582; - goto yy584; - } - } - } else { - if (yych <= 0xED) { - if (yych <= 0xDF) goto yy587; - if (yych <= 0xE0) goto yy588; - if (yych <= 0xEC) goto yy589; - goto yy590; - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) goto yy589; - goto yy591; - } else { - if (yych <= 0xF3) goto yy592; - if (yych <= 0xF4) goto yy593; - goto yy584; - } - } - } -yy603: - yyaccept = 1; - yych = *(marker = ++p); - if (yybm[0+yych] & 64) { - goto yy582; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') goto yy604; - if (yych <= '<') goto yy585; - } else { - if (yych <= 0xDF) goto yy587; - if (yych <= 0xE0) goto yy588; - goto yy589; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy590; - if (yych <= 0xEF) goto yy589; - goto yy591; - } else { - if (yych <= 0xF3) goto yy592; - if (yych <= 0xF4) goto yy593; - } - } -yy604: - { return (bufsize_t)(p - start); } -yy605: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy585; - } - if (yych <= 0xC1) { - if (yych <= 'O') { - if (yych <= 0x00) goto yy584; - if (yych == '\n') goto yy584; - goto yy582; - } else { - if (yych <= 'o') { - if (yych >= 'Q') goto yy582; - } else { - if (yych <= 'p') goto yy606; - if (yych <= 0x7F) goto yy582; - goto yy584; - } - } - } else { - if (yych <= 0xED) { - if (yych <= 0xDF) goto yy587; - if (yych <= 0xE0) goto yy588; - if (yych <= 0xEC) goto yy589; - goto yy590; - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) goto yy589; - goto yy591; - } else { - if (yych <= 0xF3) goto yy592; - if (yych <= 0xF4) goto yy593; - goto yy584; - } - } - } -yy606: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy585; - } - if (yych <= 0xC1) { - if (yych <= 'S') { - if (yych <= 0x00) goto yy584; - if (yych == '\n') goto yy584; - goto yy582; - } else { - if (yych <= 's') { - if (yych <= 'T') goto yy600; - goto yy582; - } else { - if (yych <= 't') goto yy600; - if (yych <= 0x7F) goto yy582; - goto yy584; - } - } - } else { - if (yych <= 0xED) { - if (yych <= 0xDF) goto yy587; - if (yych <= 0xE0) goto yy588; - if (yych <= 0xEC) goto yy589; - goto yy590; - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) goto yy589; - goto yy591; - } else { - if (yych <= 0xF3) goto yy592; - if (yych <= 0xF4) goto yy593; - goto yy584; - } - } - } -} - + { + unsigned char yych; + unsigned int yyaccept = 0; + static const unsigned char yybm[] = { + 0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }; + yych = *p; + if (yych <= 0xDF) { + if (yych <= ';') { + if (yych <= 0x00) + goto yy499; + if (yych != '\n') + goto yy501; + } else { + if (yych <= '<') + goto yy502; + if (yych <= 0x7F) + goto yy501; + if (yych >= 0xC2) + goto yy503; + } + } else { + if (yych <= 0xEF) { + if (yych <= 0xE0) + goto yy504; + if (yych == 0xED) + goto yy506; + goto yy505; + } else { + if (yych <= 0xF0) + goto yy507; + if (yych <= 0xF3) + goto yy508; + if (yych <= 0xF4) + goto yy509; + } + } + yy499: + ++p; + yy500 : { return 0; } + yy501: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= '\n') { + if (yych <= 0x00) + goto yy500; + if (yych <= '\t') + goto yy511; + goto yy500; + } else { + if (yych <= 0x7F) + goto yy511; + if (yych <= 0xC1) + goto yy500; + if (yych <= 0xF4) + goto yy511; + goto yy500; + } + yy502: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= '.') { + if (yych <= 0x00) + goto yy500; + if (yych == '\n') + goto yy500; + goto yy511; + } else { + if (yych <= 0x7F) { + if (yych <= '/') + goto yy521; + goto yy511; + } else { + if (yych <= 0xC1) + goto yy500; + if (yych <= 0xF4) + goto yy511; + goto yy500; + } + } + yy503: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy500; + if (yych <= 0xBF) + goto yy510; + goto yy500; + yy504: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x9F) + goto yy500; + if (yych <= 0xBF) + goto yy514; + goto yy500; + yy505: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy500; + if (yych <= 0xBF) + goto yy514; + goto yy500; + yy506: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy500; + if (yych <= 0x9F) + goto yy514; + goto yy500; + yy507: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x8F) + goto yy500; + if (yych <= 0xBF) + goto yy516; + goto yy500; + yy508: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy500; + if (yych <= 0xBF) + goto yy516; + goto yy500; + yy509: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy500; + if (yych <= 0x8F) + goto yy516; + goto yy500; + yy510: + yych = *++p; + yy511: + if (yybm[0 + yych] & 64) { + goto yy510; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy512; + if (yych <= '<') + goto yy513; + } else { + if (yych <= 0xDF) + goto yy514; + if (yych <= 0xE0) + goto yy515; + goto yy516; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy517; + if (yych <= 0xEF) + goto yy516; + goto yy518; + } else { + if (yych <= 0xF3) + goto yy519; + if (yych <= 0xF4) + goto yy520; + } + } + yy512: + p = marker; + if (yyaccept == 0) { + goto yy500; + } else { + goto yy534; + } + yy513: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy513; + } + if (yych <= 0xDF) { + if (yych <= '.') { + if (yych <= 0x00) + goto yy512; + if (yych == '\n') + goto yy512; + goto yy510; + } else { + if (yych <= '/') + goto yy521; + if (yych <= 0x7F) + goto yy510; + if (yych <= 0xC1) + goto yy512; + } + } else { + if (yych <= 0xEF) { + if (yych <= 0xE0) + goto yy515; + if (yych == 0xED) + goto yy517; + goto yy516; + } else { + if (yych <= 0xF0) + goto yy518; + if (yych <= 0xF3) + goto yy519; + if (yych <= 0xF4) + goto yy520; + goto yy512; + } + } + yy514: + yych = *++p; + if (yych <= 0x7F) + goto yy512; + if (yych <= 0xBF) + goto yy510; + goto yy512; + yy515: + yych = *++p; + if (yych <= 0x9F) + goto yy512; + if (yych <= 0xBF) + goto yy514; + goto yy512; + yy516: + yych = *++p; + if (yych <= 0x7F) + goto yy512; + if (yych <= 0xBF) + goto yy514; + goto yy512; + yy517: + yych = *++p; + if (yych <= 0x7F) + goto yy512; + if (yych <= 0x9F) + goto yy514; + goto yy512; + yy518: + yych = *++p; + if (yych <= 0x8F) + goto yy512; + if (yych <= 0xBF) + goto yy516; + goto yy512; + yy519: + yych = *++p; + if (yych <= 0x7F) + goto yy512; + if (yych <= 0xBF) + goto yy516; + goto yy512; + yy520: + yych = *++p; + if (yych <= 0x7F) + goto yy512; + if (yych <= 0x8F) + goto yy516; + goto yy512; + yy521: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy513; + } + if (yych <= 's') { + if (yych <= 'R') { + if (yych <= '\n') { + if (yych <= 0x00) + goto yy512; + if (yych <= '\t') + goto yy510; + goto yy512; + } else { + if (yych != 'P') + goto yy510; + } + } else { + if (yych <= 'o') { + if (yych <= 'S') + goto yy523; + if (yych <= 'T') + goto yy524; + goto yy510; + } else { + if (yych <= 'p') + goto yy522; + if (yych <= 'r') + goto yy510; + goto yy523; + } + } + } else { + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= 't') + goto yy524; + if (yych <= 0x7F) + goto yy510; + goto yy512; + } else { + if (yych <= 0xDF) + goto yy514; + if (yych <= 0xE0) + goto yy515; + goto yy516; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy517; + if (yych <= 0xEF) + goto yy516; + goto yy518; + } else { + if (yych <= 0xF3) + goto yy519; + if (yych <= 0xF4) + goto yy520; + goto yy512; + } + } + } + yy522: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy513; + } + if (yych <= 0xC1) { + if (yych <= 'Q') { + if (yych <= 0x00) + goto yy512; + if (yych == '\n') + goto yy512; + goto yy510; + } else { + if (yych <= 'q') { + if (yych <= 'R') + goto yy525; + goto yy510; + } else { + if (yych <= 'r') + goto yy525; + if (yych <= 0x7F) + goto yy510; + goto yy512; + } + } + } else { + if (yych <= 0xED) { + if (yych <= 0xDF) + goto yy514; + if (yych <= 0xE0) + goto yy515; + if (yych <= 0xEC) + goto yy516; + goto yy517; + } else { + if (yych <= 0xF0) { + if (yych <= 0xEF) + goto yy516; + goto yy518; + } else { + if (yych <= 0xF3) + goto yy519; + if (yych <= 0xF4) + goto yy520; + goto yy512; + } + } + } + yy523: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy513; + } + if (yych <= 't') { + if (yych <= 'C') { + if (yych <= '\t') { + if (yych <= 0x00) + goto yy512; + goto yy510; + } else { + if (yych <= '\n') + goto yy512; + if (yych <= 'B') + goto yy510; + goto yy526; + } + } else { + if (yych <= 'b') { + if (yych == 'T') + goto yy527; + goto yy510; + } else { + if (yych <= 'c') + goto yy526; + if (yych <= 's') + goto yy510; + goto yy527; + } + } + } else { + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= 0x7F) + goto yy510; + goto yy512; + } else { + if (yych <= 0xDF) + goto yy514; + if (yych <= 0xE0) + goto yy515; + goto yy516; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy517; + if (yych <= 0xEF) + goto yy516; + goto yy518; + } else { + if (yych <= 0xF3) + goto yy519; + if (yych <= 0xF4) + goto yy520; + goto yy512; + } + } + } + yy524: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy513; + } + if (yych <= 0xC1) { + if (yych <= 'D') { + if (yych <= 0x00) + goto yy512; + if (yych == '\n') + goto yy512; + goto yy510; + } else { + if (yych <= 'd') { + if (yych <= 'E') + goto yy528; + goto yy510; + } else { + if (yych <= 'e') + goto yy528; + if (yych <= 0x7F) + goto yy510; + goto yy512; + } + } + } else { + if (yych <= 0xED) { + if (yych <= 0xDF) + goto yy514; + if (yych <= 0xE0) + goto yy515; + if (yych <= 0xEC) + goto yy516; + goto yy517; + } else { + if (yych <= 0xF0) { + if (yych <= 0xEF) + goto yy516; + goto yy518; + } else { + if (yych <= 0xF3) + goto yy519; + if (yych <= 0xF4) + goto yy520; + goto yy512; + } + } + } + yy525: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy513; + } + if (yych <= 0xC1) { + if (yych <= 'D') { + if (yych <= 0x00) + goto yy512; + if (yych == '\n') + goto yy512; + goto yy510; + } else { + if (yych <= 'd') { + if (yych <= 'E') + goto yy529; + goto yy510; + } else { + if (yych <= 'e') + goto yy529; + if (yych <= 0x7F) + goto yy510; + goto yy512; + } + } + } else { + if (yych <= 0xED) { + if (yych <= 0xDF) + goto yy514; + if (yych <= 0xE0) + goto yy515; + if (yych <= 0xEC) + goto yy516; + goto yy517; + } else { + if (yych <= 0xF0) { + if (yych <= 0xEF) + goto yy516; + goto yy518; + } else { + if (yych <= 0xF3) + goto yy519; + if (yych <= 0xF4) + goto yy520; + goto yy512; + } + } + } + yy526: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy513; + } + if (yych <= 0xC1) { + if (yych <= 'Q') { + if (yych <= 0x00) + goto yy512; + if (yych == '\n') + goto yy512; + goto yy510; + } else { + if (yych <= 'q') { + if (yych <= 'R') + goto yy530; + goto yy510; + } else { + if (yych <= 'r') + goto yy530; + if (yych <= 0x7F) + goto yy510; + goto yy512; + } + } + } else { + if (yych <= 0xED) { + if (yych <= 0xDF) + goto yy514; + if (yych <= 0xE0) + goto yy515; + if (yych <= 0xEC) + goto yy516; + goto yy517; + } else { + if (yych <= 0xF0) { + if (yych <= 0xEF) + goto yy516; + goto yy518; + } else { + if (yych <= 0xF3) + goto yy519; + if (yych <= 0xF4) + goto yy520; + goto yy512; + } + } + } + yy527: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy513; + } + if (yych <= 0xC1) { + if (yych <= 'X') { + if (yych <= 0x00) + goto yy512; + if (yych == '\n') + goto yy512; + goto yy510; + } else { + if (yych <= 'x') { + if (yych <= 'Y') + goto yy531; + goto yy510; + } else { + if (yych <= 'y') + goto yy531; + if (yych <= 0x7F) + goto yy510; + goto yy512; + } + } + } else { + if (yych <= 0xED) { + if (yych <= 0xDF) + goto yy514; + if (yych <= 0xE0) + goto yy515; + if (yych <= 0xEC) + goto yy516; + goto yy517; + } else { + if (yych <= 0xF0) { + if (yych <= 0xEF) + goto yy516; + goto yy518; + } else { + if (yych <= 0xF3) + goto yy519; + if (yych <= 0xF4) + goto yy520; + goto yy512; + } + } + } + yy528: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy513; + } + if (yych <= 0xC1) { + if (yych <= 'W') { + if (yych <= 0x00) + goto yy512; + if (yych == '\n') + goto yy512; + goto yy510; + } else { + if (yych <= 'w') { + if (yych <= 'X') + goto yy532; + goto yy510; + } else { + if (yych <= 'x') + goto yy532; + if (yych <= 0x7F) + goto yy510; + goto yy512; + } + } + } else { + if (yych <= 0xED) { + if (yych <= 0xDF) + goto yy514; + if (yych <= 0xE0) + goto yy515; + if (yych <= 0xEC) + goto yy516; + goto yy517; + } else { + if (yych <= 0xF0) { + if (yych <= 0xEF) + goto yy516; + goto yy518; + } else { + if (yych <= 0xF3) + goto yy519; + if (yych <= 0xF4) + goto yy520; + goto yy512; + } + } + } + yy529: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy513; + } + if (yych <= 0xDF) { + if (yych <= '=') { + if (yych <= 0x00) + goto yy512; + if (yych == '\n') + goto yy512; + goto yy510; + } else { + if (yych <= '>') + goto yy533; + if (yych <= 0x7F) + goto yy510; + if (yych <= 0xC1) + goto yy512; + goto yy514; + } + } else { + if (yych <= 0xEF) { + if (yych <= 0xE0) + goto yy515; + if (yych == 0xED) + goto yy517; + goto yy516; + } else { + if (yych <= 0xF0) + goto yy518; + if (yych <= 0xF3) + goto yy519; + if (yych <= 0xF4) + goto yy520; + goto yy512; + } + } + yy530: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy513; + } + if (yych <= 0xC1) { + if (yych <= 'H') { + if (yych <= 0x00) + goto yy512; + if (yych == '\n') + goto yy512; + goto yy510; + } else { + if (yych <= 'h') { + if (yych <= 'I') + goto yy535; + goto yy510; + } else { + if (yych <= 'i') + goto yy535; + if (yych <= 0x7F) + goto yy510; + goto yy512; + } + } + } else { + if (yych <= 0xED) { + if (yych <= 0xDF) + goto yy514; + if (yych <= 0xE0) + goto yy515; + if (yych <= 0xEC) + goto yy516; + goto yy517; + } else { + if (yych <= 0xF0) { + if (yych <= 0xEF) + goto yy516; + goto yy518; + } else { + if (yych <= 0xF3) + goto yy519; + if (yych <= 0xF4) + goto yy520; + goto yy512; + } + } + } + yy531: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy513; + } + if (yych <= 0xC1) { + if (yych <= 'K') { + if (yych <= 0x00) + goto yy512; + if (yych == '\n') + goto yy512; + goto yy510; + } else { + if (yych <= 'k') { + if (yych <= 'L') + goto yy525; + goto yy510; + } else { + if (yych <= 'l') + goto yy525; + if (yych <= 0x7F) + goto yy510; + goto yy512; + } + } + } else { + if (yych <= 0xED) { + if (yych <= 0xDF) + goto yy514; + if (yych <= 0xE0) + goto yy515; + if (yych <= 0xEC) + goto yy516; + goto yy517; + } else { + if (yych <= 0xF0) { + if (yych <= 0xEF) + goto yy516; + goto yy518; + } else { + if (yych <= 0xF3) + goto yy519; + if (yych <= 0xF4) + goto yy520; + goto yy512; + } + } + } + yy532: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy513; + } + if (yych <= 0xC1) { + if (yych <= 'S') { + if (yych <= 0x00) + goto yy512; + if (yych == '\n') + goto yy512; + goto yy510; + } else { + if (yych <= 's') { + if (yych <= 'T') + goto yy536; + goto yy510; + } else { + if (yych <= 't') + goto yy536; + if (yych <= 0x7F) + goto yy510; + goto yy512; + } + } + } else { + if (yych <= 0xED) { + if (yych <= 0xDF) + goto yy514; + if (yych <= 0xE0) + goto yy515; + if (yych <= 0xEC) + goto yy516; + goto yy517; + } else { + if (yych <= 0xF0) { + if (yych <= 0xEF) + goto yy516; + goto yy518; + } else { + if (yych <= 0xF3) + goto yy519; + if (yych <= 0xF4) + goto yy520; + goto yy512; + } + } + } + yy533: + yyaccept = 1; + yych = *(marker = ++p); + if (yybm[0 + yych] & 64) { + goto yy510; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy534; + if (yych <= '<') + goto yy513; + } else { + if (yych <= 0xDF) + goto yy514; + if (yych <= 0xE0) + goto yy515; + goto yy516; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy517; + if (yych <= 0xEF) + goto yy516; + goto yy518; + } else { + if (yych <= 0xF3) + goto yy519; + if (yych <= 0xF4) + goto yy520; + } + } + yy534 : { return (bufsize_t)(p - start); } + yy535: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy513; + } + if (yych <= 0xC1) { + if (yych <= 'O') { + if (yych <= 0x00) + goto yy512; + if (yych == '\n') + goto yy512; + goto yy510; + } else { + if (yych <= 'o') { + if (yych <= 'P') + goto yy537; + goto yy510; + } else { + if (yych <= 'p') + goto yy537; + if (yych <= 0x7F) + goto yy510; + goto yy512; + } + } + } else { + if (yych <= 0xED) { + if (yych <= 0xDF) + goto yy514; + if (yych <= 0xE0) + goto yy515; + if (yych <= 0xEC) + goto yy516; + goto yy517; + } else { + if (yych <= 0xF0) { + if (yych <= 0xEF) + goto yy516; + goto yy518; + } else { + if (yych <= 0xF3) + goto yy519; + if (yych <= 0xF4) + goto yy520; + goto yy512; + } + } + } + yy536: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy513; + } + if (yych <= 0xC1) { + if (yych <= '@') { + if (yych <= 0x00) + goto yy512; + if (yych == '\n') + goto yy512; + goto yy510; + } else { + if (yych <= '`') { + if (yych <= 'A') + goto yy538; + goto yy510; + } else { + if (yych <= 'a') + goto yy538; + if (yych <= 0x7F) + goto yy510; + goto yy512; + } + } + } else { + if (yych <= 0xED) { + if (yych <= 0xDF) + goto yy514; + if (yych <= 0xE0) + goto yy515; + if (yych <= 0xEC) + goto yy516; + goto yy517; + } else { + if (yych <= 0xF0) { + if (yych <= 0xEF) + goto yy516; + goto yy518; + } else { + if (yych <= 0xF3) + goto yy519; + if (yych <= 0xF4) + goto yy520; + goto yy512; + } + } + } + yy537: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy513; + } + if (yych <= 0xC1) { + if (yych <= 'S') { + if (yych <= 0x00) + goto yy512; + if (yych == '\n') + goto yy512; + goto yy510; + } else { + if (yych <= 's') { + if (yych <= 'T') + goto yy529; + goto yy510; + } else { + if (yych <= 't') + goto yy529; + if (yych <= 0x7F) + goto yy510; + goto yy512; + } + } + } else { + if (yych <= 0xED) { + if (yych <= 0xDF) + goto yy514; + if (yych <= 0xE0) + goto yy515; + if (yych <= 0xEC) + goto yy516; + goto yy517; + } else { + if (yych <= 0xF0) { + if (yych <= 0xEF) + goto yy516; + goto yy518; + } else { + if (yych <= 0xF3) + goto yy519; + if (yych <= 0xF4) + goto yy520; + goto yy512; + } + } + } + yy538: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy513; + } + if (yych <= 0xC1) { + if (yych <= 'Q') { + if (yych <= 0x00) + goto yy512; + if (yych == '\n') + goto yy512; + goto yy510; + } else { + if (yych <= 'q') { + if (yych >= 'S') + goto yy510; + } else { + if (yych <= 'r') + goto yy539; + if (yych <= 0x7F) + goto yy510; + goto yy512; + } + } + } else { + if (yych <= 0xED) { + if (yych <= 0xDF) + goto yy514; + if (yych <= 0xE0) + goto yy515; + if (yych <= 0xEC) + goto yy516; + goto yy517; + } else { + if (yych <= 0xF0) { + if (yych <= 0xEF) + goto yy516; + goto yy518; + } else { + if (yych <= 0xF3) + goto yy519; + if (yych <= 0xF4) + goto yy520; + goto yy512; + } + } + } + yy539: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy513; + } + if (yych <= 0xC1) { + if (yych <= 'D') { + if (yych <= 0x00) + goto yy512; + if (yych == '\n') + goto yy512; + goto yy510; + } else { + if (yych <= 'd') { + if (yych >= 'F') + goto yy510; + } else { + if (yych <= 'e') + goto yy540; + if (yych <= 0x7F) + goto yy510; + goto yy512; + } + } + } else { + if (yych <= 0xED) { + if (yych <= 0xDF) + goto yy514; + if (yych <= 0xE0) + goto yy515; + if (yych <= 0xEC) + goto yy516; + goto yy517; + } else { + if (yych <= 0xF0) { + if (yych <= 0xEF) + goto yy516; + goto yy518; + } else { + if (yych <= 0xF3) + goto yy519; + if (yych <= 0xF4) + goto yy520; + goto yy512; + } + } + } + yy540: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy513; + } + if (yych <= 0xC1) { + if (yych <= '@') { + if (yych <= 0x00) + goto yy512; + if (yych == '\n') + goto yy512; + goto yy510; + } else { + if (yych <= '`') { + if (yych <= 'A') + goto yy529; + goto yy510; + } else { + if (yych <= 'a') + goto yy529; + if (yych <= 0x7F) + goto yy510; + goto yy512; + } + } + } else { + if (yych <= 0xED) { + if (yych <= 0xDF) + goto yy514; + if (yych <= 0xE0) + goto yy515; + if (yych <= 0xEC) + goto yy516; + goto yy517; + } else { + if (yych <= 0xF0) { + if (yych <= 0xEF) + goto yy516; + goto yy518; + } else { + if (yych <= 0xF3) + goto yy519; + if (yych <= 0xF4) + goto yy520; + goto yy512; + } + } + } + } } // Try to match an HTML block end line of type 2 -bufsize_t _scan_html_block_end_2(const unsigned char *p) -{ +bufsize_t _scan_html_block_end_2(const unsigned char *p) { const unsigned char *marker = NULL; const unsigned char *start = p; -{ - unsigned char yych; - unsigned int yyaccept = 0; - static const unsigned char yybm[] = { - 0, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 0, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 128, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 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, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - yych = *p; - if (yych <= 0xDF) { - if (yych <= ',') { - if (yych <= 0x00) goto yy609; - if (yych != '\n') goto yy611; - } else { - if (yych <= '-') goto yy612; - if (yych <= 0x7F) goto yy611; - if (yych >= 0xC2) goto yy613; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) goto yy614; - if (yych == 0xED) goto yy616; - goto yy615; - } else { - if (yych <= 0xF0) goto yy617; - if (yych <= 0xF3) goto yy618; - if (yych <= 0xF4) goto yy619; - } - } -yy609: - ++p; -yy610: - { return 0; } -yy611: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= '\n') { - if (yych <= 0x00) goto yy610; - if (yych <= '\t') goto yy621; - goto yy610; - } else { - if (yych <= 0x7F) goto yy621; - if (yych <= 0xC1) goto yy610; - if (yych <= 0xF4) goto yy621; - goto yy610; - } -yy612: - yyaccept = 0; - yych = *(marker = ++p); - if (yybm[0+yych] & 128) { - goto yy631; - } - if (yych <= '\n') { - if (yych <= 0x00) goto yy610; - if (yych <= '\t') goto yy621; - goto yy610; - } else { - if (yych <= 0x7F) goto yy621; - if (yych <= 0xC1) goto yy610; - if (yych <= 0xF4) goto yy621; - goto yy610; - } -yy613: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy610; - if (yych <= 0xBF) goto yy620; - goto yy610; -yy614: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x9F) goto yy610; - if (yych <= 0xBF) goto yy624; - goto yy610; -yy615: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy610; - if (yych <= 0xBF) goto yy624; - goto yy610; -yy616: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy610; - if (yych <= 0x9F) goto yy624; - goto yy610; -yy617: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x8F) goto yy610; - if (yych <= 0xBF) goto yy626; - goto yy610; -yy618: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy610; - if (yych <= 0xBF) goto yy626; - goto yy610; -yy619: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy610; - if (yych <= 0x8F) goto yy626; - goto yy610; -yy620: - yych = *++p; -yy621: - if (yybm[0+yych] & 64) { - goto yy620; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') goto yy622; - if (yych <= '-') goto yy623; - } else { - if (yych <= 0xDF) goto yy624; - if (yych <= 0xE0) goto yy625; - goto yy626; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy627; - if (yych <= 0xEF) goto yy626; - goto yy628; - } else { - if (yych <= 0xF3) goto yy629; - if (yych <= 0xF4) goto yy630; - } - } -yy622: - p = marker; - if (yyaccept == 0) { - goto yy610; - } else { - goto yy634; - } -yy623: - yych = *++p; - if (yybm[0+yych] & 64) { - goto yy620; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') goto yy622; - if (yych <= '-') goto yy631; - goto yy622; - } else { - if (yych <= 0xDF) goto yy624; - if (yych <= 0xE0) goto yy625; - goto yy626; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy627; - if (yych <= 0xEF) goto yy626; - goto yy628; - } else { - if (yych <= 0xF3) goto yy629; - if (yych <= 0xF4) goto yy630; - goto yy622; - } - } -yy624: - yych = *++p; - if (yych <= 0x7F) goto yy622; - if (yych <= 0xBF) goto yy620; - goto yy622; -yy625: - yych = *++p; - if (yych <= 0x9F) goto yy622; - if (yych <= 0xBF) goto yy624; - goto yy622; -yy626: - yych = *++p; - if (yych <= 0x7F) goto yy622; - if (yych <= 0xBF) goto yy624; - goto yy622; -yy627: - yych = *++p; - if (yych <= 0x7F) goto yy622; - if (yych <= 0x9F) goto yy624; - goto yy622; -yy628: - yych = *++p; - if (yych <= 0x8F) goto yy622; - if (yych <= 0xBF) goto yy626; - goto yy622; -yy629: - yych = *++p; - if (yych <= 0x7F) goto yy622; - if (yych <= 0xBF) goto yy626; - goto yy622; -yy630: - yych = *++p; - if (yych <= 0x7F) goto yy622; - if (yych <= 0x8F) goto yy626; - goto yy622; -yy631: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy631; - } - if (yych <= 0xDF) { - if (yych <= '=') { - if (yych <= 0x00) goto yy622; - if (yych == '\n') goto yy622; - goto yy620; - } else { - if (yych <= '>') goto yy633; - if (yych <= 0x7F) goto yy620; - if (yych <= 0xC1) goto yy622; - goto yy624; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) goto yy625; - if (yych == 0xED) goto yy627; - goto yy626; - } else { - if (yych <= 0xF0) goto yy628; - if (yych <= 0xF3) goto yy629; - if (yych <= 0xF4) goto yy630; - goto yy622; - } - } -yy633: - yyaccept = 1; - yych = *(marker = ++p); - if (yybm[0+yych] & 64) { - goto yy620; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') goto yy634; - if (yych <= '-') goto yy623; - } else { - if (yych <= 0xDF) goto yy624; - if (yych <= 0xE0) goto yy625; - goto yy626; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy627; - if (yych <= 0xEF) goto yy626; - goto yy628; - } else { - if (yych <= 0xF3) goto yy629; - if (yych <= 0xF4) goto yy630; - } - } -yy634: - { return (bufsize_t)(p - start); } -} - + { + unsigned char yych; + unsigned int yyaccept = 0; + static const unsigned char yybm[] = { + 0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }; + yych = *p; + if (yych <= 0xDF) { + if (yych <= ',') { + if (yych <= 0x00) + goto yy542; + if (yych != '\n') + goto yy544; + } else { + if (yych <= '-') + goto yy545; + if (yych <= 0x7F) + goto yy544; + if (yych >= 0xC2) + goto yy546; + } + } else { + if (yych <= 0xEF) { + if (yych <= 0xE0) + goto yy547; + if (yych == 0xED) + goto yy549; + goto yy548; + } else { + if (yych <= 0xF0) + goto yy550; + if (yych <= 0xF3) + goto yy551; + if (yych <= 0xF4) + goto yy552; + } + } + yy542: + ++p; + yy543 : { return 0; } + yy544: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= '\n') { + if (yych <= 0x00) + goto yy543; + if (yych <= '\t') + goto yy554; + goto yy543; + } else { + if (yych <= 0x7F) + goto yy554; + if (yych <= 0xC1) + goto yy543; + if (yych <= 0xF4) + goto yy554; + goto yy543; + } + yy545: + yyaccept = 0; + yych = *(marker = ++p); + if (yybm[0 + yych] & 128) { + goto yy564; + } + if (yych <= '\n') { + if (yych <= 0x00) + goto yy543; + if (yych <= '\t') + goto yy554; + goto yy543; + } else { + if (yych <= 0x7F) + goto yy554; + if (yych <= 0xC1) + goto yy543; + if (yych <= 0xF4) + goto yy554; + goto yy543; + } + yy546: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy543; + if (yych <= 0xBF) + goto yy553; + goto yy543; + yy547: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x9F) + goto yy543; + if (yych <= 0xBF) + goto yy557; + goto yy543; + yy548: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy543; + if (yych <= 0xBF) + goto yy557; + goto yy543; + yy549: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy543; + if (yych <= 0x9F) + goto yy557; + goto yy543; + yy550: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x8F) + goto yy543; + if (yych <= 0xBF) + goto yy559; + goto yy543; + yy551: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy543; + if (yych <= 0xBF) + goto yy559; + goto yy543; + yy552: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy543; + if (yych <= 0x8F) + goto yy559; + goto yy543; + yy553: + yych = *++p; + yy554: + if (yybm[0 + yych] & 64) { + goto yy553; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy555; + if (yych <= '-') + goto yy556; + } else { + if (yych <= 0xDF) + goto yy557; + if (yych <= 0xE0) + goto yy558; + goto yy559; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy560; + if (yych <= 0xEF) + goto yy559; + goto yy561; + } else { + if (yych <= 0xF3) + goto yy562; + if (yych <= 0xF4) + goto yy563; + } + } + yy555: + p = marker; + if (yyaccept == 0) { + goto yy543; + } else { + goto yy566; + } + yy556: + yych = *++p; + if (yybm[0 + yych] & 64) { + goto yy553; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy555; + if (yych <= '-') + goto yy564; + goto yy555; + } else { + if (yych <= 0xDF) + goto yy557; + if (yych <= 0xE0) + goto yy558; + goto yy559; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy560; + if (yych <= 0xEF) + goto yy559; + goto yy561; + } else { + if (yych <= 0xF3) + goto yy562; + if (yych <= 0xF4) + goto yy563; + goto yy555; + } + } + yy557: + yych = *++p; + if (yych <= 0x7F) + goto yy555; + if (yych <= 0xBF) + goto yy553; + goto yy555; + yy558: + yych = *++p; + if (yych <= 0x9F) + goto yy555; + if (yych <= 0xBF) + goto yy557; + goto yy555; + yy559: + yych = *++p; + if (yych <= 0x7F) + goto yy555; + if (yych <= 0xBF) + goto yy557; + goto yy555; + yy560: + yych = *++p; + if (yych <= 0x7F) + goto yy555; + if (yych <= 0x9F) + goto yy557; + goto yy555; + yy561: + yych = *++p; + if (yych <= 0x8F) + goto yy555; + if (yych <= 0xBF) + goto yy559; + goto yy555; + yy562: + yych = *++p; + if (yych <= 0x7F) + goto yy555; + if (yych <= 0xBF) + goto yy559; + goto yy555; + yy563: + yych = *++p; + if (yych <= 0x7F) + goto yy555; + if (yych <= 0x8F) + goto yy559; + goto yy555; + yy564: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy564; + } + if (yych <= 0xDF) { + if (yych <= '=') { + if (yych <= 0x00) + goto yy555; + if (yych == '\n') + goto yy555; + goto yy553; + } else { + if (yych <= '>') + goto yy565; + if (yych <= 0x7F) + goto yy553; + if (yych <= 0xC1) + goto yy555; + goto yy557; + } + } else { + if (yych <= 0xEF) { + if (yych <= 0xE0) + goto yy558; + if (yych == 0xED) + goto yy560; + goto yy559; + } else { + if (yych <= 0xF0) + goto yy561; + if (yych <= 0xF3) + goto yy562; + if (yych <= 0xF4) + goto yy563; + goto yy555; + } + } + yy565: + yyaccept = 1; + yych = *(marker = ++p); + if (yybm[0 + yych] & 64) { + goto yy553; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy566; + if (yych <= '-') + goto yy556; + } else { + if (yych <= 0xDF) + goto yy557; + if (yych <= 0xE0) + goto yy558; + goto yy559; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy560; + if (yych <= 0xEF) + goto yy559; + goto yy561; + } else { + if (yych <= 0xF3) + goto yy562; + if (yych <= 0xF4) + goto yy563; + } + } + yy566 : { return (bufsize_t)(p - start); } + } } // Try to match an HTML block end line of type 3 -bufsize_t _scan_html_block_end_3(const unsigned char *p) -{ +bufsize_t _scan_html_block_end_3(const unsigned char *p) { const unsigned char *marker = NULL; const unsigned char *start = p; -{ - unsigned char yych; - unsigned int yyaccept = 0; - static const unsigned char yybm[] = { - 0, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 0, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 128, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 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, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - yych = *p; - if (yych <= 0xDF) { - if (yych <= '>') { - if (yych <= 0x00) goto yy637; - if (yych != '\n') goto yy639; - } else { - if (yych <= '?') goto yy640; - if (yych <= 0x7F) goto yy639; - if (yych >= 0xC2) goto yy641; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) goto yy642; - if (yych == 0xED) goto yy644; - goto yy643; - } else { - if (yych <= 0xF0) goto yy645; - if (yych <= 0xF3) goto yy646; - if (yych <= 0xF4) goto yy647; - } - } -yy637: - ++p; -yy638: - { return 0; } -yy639: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= '\n') { - if (yych <= 0x00) goto yy638; - if (yych <= '\t') goto yy649; - goto yy638; - } else { - if (yych <= 0x7F) goto yy649; - if (yych <= 0xC1) goto yy638; - if (yych <= 0xF4) goto yy649; - goto yy638; - } -yy640: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= '=') { - if (yych <= 0x00) goto yy638; - if (yych == '\n') goto yy638; - goto yy649; - } else { - if (yych <= 0x7F) { - if (yych <= '>') goto yy660; - goto yy649; - } else { - if (yych <= 0xC1) goto yy638; - if (yych <= 0xF4) goto yy649; - goto yy638; - } - } -yy641: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy638; - if (yych <= 0xBF) goto yy648; - goto yy638; -yy642: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x9F) goto yy638; - if (yych <= 0xBF) goto yy653; - goto yy638; -yy643: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy638; - if (yych <= 0xBF) goto yy653; - goto yy638; -yy644: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy638; - if (yych <= 0x9F) goto yy653; - goto yy638; -yy645: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x8F) goto yy638; - if (yych <= 0xBF) goto yy655; - goto yy638; -yy646: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy638; - if (yych <= 0xBF) goto yy655; - goto yy638; -yy647: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy638; - if (yych <= 0x8F) goto yy655; - goto yy638; -yy648: - yych = *++p; -yy649: - if (yybm[0+yych] & 64) { - goto yy648; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') goto yy650; - if (yych <= '?') goto yy651; - } else { - if (yych <= 0xDF) goto yy653; - if (yych <= 0xE0) goto yy654; - goto yy655; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy656; - if (yych <= 0xEF) goto yy655; - goto yy657; - } else { - if (yych <= 0xF3) goto yy658; - if (yych <= 0xF4) goto yy659; - } - } -yy650: - p = marker; - if (yyaccept == 0) { - goto yy638; - } else { - goto yy661; - } -yy651: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy651; - } - if (yych <= 0xDF) { - if (yych <= '=') { - if (yych <= 0x00) goto yy650; - if (yych == '\n') goto yy650; - goto yy648; - } else { - if (yych <= '>') goto yy660; - if (yych <= 0x7F) goto yy648; - if (yych <= 0xC1) goto yy650; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) goto yy654; - if (yych == 0xED) goto yy656; - goto yy655; - } else { - if (yych <= 0xF0) goto yy657; - if (yych <= 0xF3) goto yy658; - if (yych <= 0xF4) goto yy659; - goto yy650; - } - } -yy653: - yych = *++p; - if (yych <= 0x7F) goto yy650; - if (yych <= 0xBF) goto yy648; - goto yy650; -yy654: - yych = *++p; - if (yych <= 0x9F) goto yy650; - if (yych <= 0xBF) goto yy653; - goto yy650; -yy655: - yych = *++p; - if (yych <= 0x7F) goto yy650; - if (yych <= 0xBF) goto yy653; - goto yy650; -yy656: - yych = *++p; - if (yych <= 0x7F) goto yy650; - if (yych <= 0x9F) goto yy653; - goto yy650; -yy657: - yych = *++p; - if (yych <= 0x8F) goto yy650; - if (yych <= 0xBF) goto yy655; - goto yy650; -yy658: - yych = *++p; - if (yych <= 0x7F) goto yy650; - if (yych <= 0xBF) goto yy655; - goto yy650; -yy659: - yych = *++p; - if (yych <= 0x7F) goto yy650; - if (yych <= 0x8F) goto yy655; - goto yy650; -yy660: - yyaccept = 1; - yych = *(marker = ++p); - if (yybm[0+yych] & 64) { - goto yy648; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') goto yy661; - if (yych <= '?') goto yy651; - } else { - if (yych <= 0xDF) goto yy653; - if (yych <= 0xE0) goto yy654; - goto yy655; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy656; - if (yych <= 0xEF) goto yy655; - goto yy657; - } else { - if (yych <= 0xF3) goto yy658; - if (yych <= 0xF4) goto yy659; - } - } -yy661: - { return (bufsize_t)(p - start); } -} - + { + unsigned char yych; + unsigned int yyaccept = 0; + static const unsigned char yybm[] = { + 0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }; + yych = *p; + if (yych <= 0xDF) { + if (yych <= '>') { + if (yych <= 0x00) + goto yy568; + if (yych != '\n') + goto yy570; + } else { + if (yych <= '?') + goto yy571; + if (yych <= 0x7F) + goto yy570; + if (yych >= 0xC2) + goto yy572; + } + } else { + if (yych <= 0xEF) { + if (yych <= 0xE0) + goto yy573; + if (yych == 0xED) + goto yy575; + goto yy574; + } else { + if (yych <= 0xF0) + goto yy576; + if (yych <= 0xF3) + goto yy577; + if (yych <= 0xF4) + goto yy578; + } + } + yy568: + ++p; + yy569 : { return 0; } + yy570: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= '\n') { + if (yych <= 0x00) + goto yy569; + if (yych <= '\t') + goto yy580; + goto yy569; + } else { + if (yych <= 0x7F) + goto yy580; + if (yych <= 0xC1) + goto yy569; + if (yych <= 0xF4) + goto yy580; + goto yy569; + } + yy571: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= '=') { + if (yych <= 0x00) + goto yy569; + if (yych == '\n') + goto yy569; + goto yy580; + } else { + if (yych <= 0x7F) { + if (yych <= '>') + goto yy590; + goto yy580; + } else { + if (yych <= 0xC1) + goto yy569; + if (yych <= 0xF4) + goto yy580; + goto yy569; + } + } + yy572: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy569; + if (yych <= 0xBF) + goto yy579; + goto yy569; + yy573: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x9F) + goto yy569; + if (yych <= 0xBF) + goto yy583; + goto yy569; + yy574: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy569; + if (yych <= 0xBF) + goto yy583; + goto yy569; + yy575: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy569; + if (yych <= 0x9F) + goto yy583; + goto yy569; + yy576: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x8F) + goto yy569; + if (yych <= 0xBF) + goto yy585; + goto yy569; + yy577: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy569; + if (yych <= 0xBF) + goto yy585; + goto yy569; + yy578: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy569; + if (yych <= 0x8F) + goto yy585; + goto yy569; + yy579: + yych = *++p; + yy580: + if (yybm[0 + yych] & 64) { + goto yy579; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy581; + if (yych <= '?') + goto yy582; + } else { + if (yych <= 0xDF) + goto yy583; + if (yych <= 0xE0) + goto yy584; + goto yy585; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy586; + if (yych <= 0xEF) + goto yy585; + goto yy587; + } else { + if (yych <= 0xF3) + goto yy588; + if (yych <= 0xF4) + goto yy589; + } + } + yy581: + p = marker; + if (yyaccept == 0) { + goto yy569; + } else { + goto yy591; + } + yy582: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy582; + } + if (yych <= 0xDF) { + if (yych <= '=') { + if (yych <= 0x00) + goto yy581; + if (yych == '\n') + goto yy581; + goto yy579; + } else { + if (yych <= '>') + goto yy590; + if (yych <= 0x7F) + goto yy579; + if (yych <= 0xC1) + goto yy581; + } + } else { + if (yych <= 0xEF) { + if (yych <= 0xE0) + goto yy584; + if (yych == 0xED) + goto yy586; + goto yy585; + } else { + if (yych <= 0xF0) + goto yy587; + if (yych <= 0xF3) + goto yy588; + if (yych <= 0xF4) + goto yy589; + goto yy581; + } + } + yy583: + yych = *++p; + if (yych <= 0x7F) + goto yy581; + if (yych <= 0xBF) + goto yy579; + goto yy581; + yy584: + yych = *++p; + if (yych <= 0x9F) + goto yy581; + if (yych <= 0xBF) + goto yy583; + goto yy581; + yy585: + yych = *++p; + if (yych <= 0x7F) + goto yy581; + if (yych <= 0xBF) + goto yy583; + goto yy581; + yy586: + yych = *++p; + if (yych <= 0x7F) + goto yy581; + if (yych <= 0x9F) + goto yy583; + goto yy581; + yy587: + yych = *++p; + if (yych <= 0x8F) + goto yy581; + if (yych <= 0xBF) + goto yy585; + goto yy581; + yy588: + yych = *++p; + if (yych <= 0x7F) + goto yy581; + if (yych <= 0xBF) + goto yy585; + goto yy581; + yy589: + yych = *++p; + if (yych <= 0x7F) + goto yy581; + if (yych <= 0x8F) + goto yy585; + goto yy581; + yy590: + yyaccept = 1; + yych = *(marker = ++p); + if (yybm[0 + yych] & 64) { + goto yy579; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy591; + if (yych <= '?') + goto yy582; + } else { + if (yych <= 0xDF) + goto yy583; + if (yych <= 0xE0) + goto yy584; + goto yy585; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy586; + if (yych <= 0xEF) + goto yy585; + goto yy587; + } else { + if (yych <= 0xF3) + goto yy588; + if (yych <= 0xF4) + goto yy589; + } + } + yy591 : { return (bufsize_t)(p - start); } + } } // Try to match an HTML block end line of type 4 -bufsize_t _scan_html_block_end_4(const unsigned char *p) -{ +bufsize_t _scan_html_block_end_4(const unsigned char *p) { const unsigned char *marker = NULL; const unsigned char *start = p; -{ - unsigned char yych; - unsigned int yyaccept = 0; - static const unsigned char yybm[] = { - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 64, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - yych = *p; - if (yybm[0+yych] & 64) { - goto yy667; - } - if (yych <= 0xE0) { - if (yych <= '\n') { - if (yych <= 0x00) goto yy664; - if (yych <= '\t') goto yy666; - } else { - if (yych <= 0x7F) goto yy666; - if (yych <= 0xC1) goto yy664; - if (yych <= 0xDF) goto yy670; - goto yy671; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) goto yy673; - goto yy672; - } else { - if (yych <= 0xF0) goto yy674; - if (yych <= 0xF3) goto yy675; - if (yych <= 0xF4) goto yy676; - } - } -yy664: - ++p; -yy665: - { return 0; } -yy666: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= '\n') { - if (yych <= 0x00) goto yy665; - if (yych <= '\t') goto yy678; - goto yy665; - } else { - if (yych <= 0x7F) goto yy678; - if (yych <= 0xC1) goto yy665; - if (yych <= 0xF4) goto yy678; - goto yy665; - } -yy667: - yyaccept = 1; - yych = *(marker = ++p); - if (yybm[0+yych] & 128) { - goto yy677; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') goto yy669; - if (yych <= '>') goto yy667; - } else { - if (yych <= 0xDF) goto yy680; - if (yych <= 0xE0) goto yy681; - goto yy682; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy683; - if (yych <= 0xEF) goto yy682; - goto yy684; - } else { - if (yych <= 0xF3) goto yy685; - if (yych <= 0xF4) goto yy686; - } - } -yy669: - { return (bufsize_t)(p - start); } -yy670: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy665; - if (yych <= 0xBF) goto yy677; - goto yy665; -yy671: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x9F) goto yy665; - if (yych <= 0xBF) goto yy680; - goto yy665; -yy672: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy665; - if (yych <= 0xBF) goto yy680; - goto yy665; -yy673: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy665; - if (yych <= 0x9F) goto yy680; - goto yy665; -yy674: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x8F) goto yy665; - if (yych <= 0xBF) goto yy682; - goto yy665; -yy675: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy665; - if (yych <= 0xBF) goto yy682; - goto yy665; -yy676: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy665; - if (yych <= 0x8F) goto yy682; - goto yy665; -yy677: - yych = *++p; -yy678: - if (yybm[0+yych] & 128) { - goto yy677; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') goto yy679; - if (yych <= '>') goto yy667; - } else { - if (yych <= 0xDF) goto yy680; - if (yych <= 0xE0) goto yy681; - goto yy682; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy683; - if (yych <= 0xEF) goto yy682; - goto yy684; - } else { - if (yych <= 0xF3) goto yy685; - if (yych <= 0xF4) goto yy686; - } - } -yy679: - p = marker; - if (yyaccept == 0) { - goto yy665; - } else { - goto yy669; - } -yy680: - yych = *++p; - if (yych <= 0x7F) goto yy679; - if (yych <= 0xBF) goto yy677; - goto yy679; -yy681: - yych = *++p; - if (yych <= 0x9F) goto yy679; - if (yych <= 0xBF) goto yy680; - goto yy679; -yy682: - yych = *++p; - if (yych <= 0x7F) goto yy679; - if (yych <= 0xBF) goto yy680; - goto yy679; -yy683: - yych = *++p; - if (yych <= 0x7F) goto yy679; - if (yych <= 0x9F) goto yy680; - goto yy679; -yy684: - yych = *++p; - if (yych <= 0x8F) goto yy679; - if (yych <= 0xBF) goto yy682; - goto yy679; -yy685: - yych = *++p; - if (yych <= 0x7F) goto yy679; - if (yych <= 0xBF) goto yy682; - goto yy679; -yy686: - yych = *++p; - if (yych <= 0x7F) goto yy679; - if (yych <= 0x8F) goto yy682; - goto yy679; -} - + { + unsigned char yych; + unsigned int yyaccept = 0; + static const unsigned char yybm[] = { + 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 64, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }; + yych = *p; + if (yybm[0 + yych] & 64) { + goto yy596; + } + if (yych <= 0xE0) { + if (yych <= '\n') { + if (yych <= 0x00) + goto yy593; + if (yych <= '\t') + goto yy595; + } else { + if (yych <= 0x7F) + goto yy595; + if (yych <= 0xC1) + goto yy593; + if (yych <= 0xDF) + goto yy598; + goto yy599; + } + } else { + if (yych <= 0xEF) { + if (yych == 0xED) + goto yy601; + goto yy600; + } else { + if (yych <= 0xF0) + goto yy602; + if (yych <= 0xF3) + goto yy603; + if (yych <= 0xF4) + goto yy604; + } + } + yy593: + ++p; + yy594 : { return 0; } + yy595: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= '\n') { + if (yych <= 0x00) + goto yy594; + if (yych <= '\t') + goto yy606; + goto yy594; + } else { + if (yych <= 0x7F) + goto yy606; + if (yych <= 0xC1) + goto yy594; + if (yych <= 0xF4) + goto yy606; + goto yy594; + } + yy596: + yyaccept = 1; + yych = *(marker = ++p); + if (yybm[0 + yych] & 128) { + goto yy605; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy597; + if (yych <= '>') + goto yy596; + } else { + if (yych <= 0xDF) + goto yy608; + if (yych <= 0xE0) + goto yy609; + goto yy610; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy611; + if (yych <= 0xEF) + goto yy610; + goto yy612; + } else { + if (yych <= 0xF3) + goto yy613; + if (yych <= 0xF4) + goto yy614; + } + } + yy597 : { return (bufsize_t)(p - start); } + yy598: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy594; + if (yych <= 0xBF) + goto yy605; + goto yy594; + yy599: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x9F) + goto yy594; + if (yych <= 0xBF) + goto yy608; + goto yy594; + yy600: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy594; + if (yych <= 0xBF) + goto yy608; + goto yy594; + yy601: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy594; + if (yych <= 0x9F) + goto yy608; + goto yy594; + yy602: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x8F) + goto yy594; + if (yych <= 0xBF) + goto yy610; + goto yy594; + yy603: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy594; + if (yych <= 0xBF) + goto yy610; + goto yy594; + yy604: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy594; + if (yych <= 0x8F) + goto yy610; + goto yy594; + yy605: + yych = *++p; + yy606: + if (yybm[0 + yych] & 128) { + goto yy605; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy607; + if (yych <= '>') + goto yy596; + } else { + if (yych <= 0xDF) + goto yy608; + if (yych <= 0xE0) + goto yy609; + goto yy610; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy611; + if (yych <= 0xEF) + goto yy610; + goto yy612; + } else { + if (yych <= 0xF3) + goto yy613; + if (yych <= 0xF4) + goto yy614; + } + } + yy607: + p = marker; + if (yyaccept == 0) { + goto yy594; + } else { + goto yy597; + } + yy608: + yych = *++p; + if (yych <= 0x7F) + goto yy607; + if (yych <= 0xBF) + goto yy605; + goto yy607; + yy609: + yych = *++p; + if (yych <= 0x9F) + goto yy607; + if (yych <= 0xBF) + goto yy608; + goto yy607; + yy610: + yych = *++p; + if (yych <= 0x7F) + goto yy607; + if (yych <= 0xBF) + goto yy608; + goto yy607; + yy611: + yych = *++p; + if (yych <= 0x7F) + goto yy607; + if (yych <= 0x9F) + goto yy608; + goto yy607; + yy612: + yych = *++p; + if (yych <= 0x8F) + goto yy607; + if (yych <= 0xBF) + goto yy610; + goto yy607; + yy613: + yych = *++p; + if (yych <= 0x7F) + goto yy607; + if (yych <= 0xBF) + goto yy610; + goto yy607; + yy614: + yych = *++p; + if (yych <= 0x7F) + goto yy607; + if (yych <= 0x8F) + goto yy610; + goto yy607; + } } // Try to match an HTML block end line of type 5 -bufsize_t _scan_html_block_end_5(const unsigned char *p) -{ +bufsize_t _scan_html_block_end_5(const unsigned char *p) { const unsigned char *marker = NULL; const unsigned char *start = p; -{ - unsigned char yych; - unsigned int yyaccept = 0; - static const unsigned char yybm[] = { - 0, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 0, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 128, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 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, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - yych = *p; - if (yych <= 0xDF) { - if (yych <= '\\') { - if (yych <= 0x00) goto yy689; - if (yych != '\n') goto yy691; - } else { - if (yych <= ']') goto yy692; - if (yych <= 0x7F) goto yy691; - if (yych >= 0xC2) goto yy693; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) goto yy694; - if (yych == 0xED) goto yy696; - goto yy695; - } else { - if (yych <= 0xF0) goto yy697; - if (yych <= 0xF3) goto yy698; - if (yych <= 0xF4) goto yy699; - } - } -yy689: - ++p; -yy690: - { return 0; } -yy691: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= '\n') { - if (yych <= 0x00) goto yy690; - if (yych <= '\t') goto yy701; - goto yy690; - } else { - if (yych <= 0x7F) goto yy701; - if (yych <= 0xC1) goto yy690; - if (yych <= 0xF4) goto yy701; - goto yy690; - } -yy692: - yyaccept = 0; - yych = *(marker = ++p); - if (yybm[0+yych] & 128) { - goto yy711; - } - if (yych <= '\n') { - if (yych <= 0x00) goto yy690; - if (yych <= '\t') goto yy701; - goto yy690; - } else { - if (yych <= 0x7F) goto yy701; - if (yych <= 0xC1) goto yy690; - if (yych <= 0xF4) goto yy701; - goto yy690; - } -yy693: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy690; - if (yych <= 0xBF) goto yy700; - goto yy690; -yy694: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x9F) goto yy690; - if (yych <= 0xBF) goto yy704; - goto yy690; -yy695: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy690; - if (yych <= 0xBF) goto yy704; - goto yy690; -yy696: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy690; - if (yych <= 0x9F) goto yy704; - goto yy690; -yy697: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x8F) goto yy690; - if (yych <= 0xBF) goto yy706; - goto yy690; -yy698: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy690; - if (yych <= 0xBF) goto yy706; - goto yy690; -yy699: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) goto yy690; - if (yych <= 0x8F) goto yy706; - goto yy690; -yy700: - yych = *++p; -yy701: - if (yybm[0+yych] & 64) { - goto yy700; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') goto yy702; - if (yych <= ']') goto yy703; - } else { - if (yych <= 0xDF) goto yy704; - if (yych <= 0xE0) goto yy705; - goto yy706; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy707; - if (yych <= 0xEF) goto yy706; - goto yy708; - } else { - if (yych <= 0xF3) goto yy709; - if (yych <= 0xF4) goto yy710; - } - } -yy702: - p = marker; - if (yyaccept == 0) { - goto yy690; - } else { - goto yy714; - } -yy703: - yych = *++p; - if (yybm[0+yych] & 64) { - goto yy700; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') goto yy702; - if (yych <= ']') goto yy711; - goto yy702; - } else { - if (yych <= 0xDF) goto yy704; - if (yych <= 0xE0) goto yy705; - goto yy706; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy707; - if (yych <= 0xEF) goto yy706; - goto yy708; - } else { - if (yych <= 0xF3) goto yy709; - if (yych <= 0xF4) goto yy710; - goto yy702; - } - } -yy704: - yych = *++p; - if (yych <= 0x7F) goto yy702; - if (yych <= 0xBF) goto yy700; - goto yy702; -yy705: - yych = *++p; - if (yych <= 0x9F) goto yy702; - if (yych <= 0xBF) goto yy704; - goto yy702; -yy706: - yych = *++p; - if (yych <= 0x7F) goto yy702; - if (yych <= 0xBF) goto yy704; - goto yy702; -yy707: - yych = *++p; - if (yych <= 0x7F) goto yy702; - if (yych <= 0x9F) goto yy704; - goto yy702; -yy708: - yych = *++p; - if (yych <= 0x8F) goto yy702; - if (yych <= 0xBF) goto yy706; - goto yy702; -yy709: - yych = *++p; - if (yych <= 0x7F) goto yy702; - if (yych <= 0xBF) goto yy706; - goto yy702; -yy710: - yych = *++p; - if (yych <= 0x7F) goto yy702; - if (yych <= 0x8F) goto yy706; - goto yy702; -yy711: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy711; - } - if (yych <= 0xDF) { - if (yych <= '=') { - if (yych <= 0x00) goto yy702; - if (yych == '\n') goto yy702; - goto yy700; - } else { - if (yych <= '>') goto yy713; - if (yych <= 0x7F) goto yy700; - if (yych <= 0xC1) goto yy702; - goto yy704; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) goto yy705; - if (yych == 0xED) goto yy707; - goto yy706; - } else { - if (yych <= 0xF0) goto yy708; - if (yych <= 0xF3) goto yy709; - if (yych <= 0xF4) goto yy710; - goto yy702; - } - } -yy713: - yyaccept = 1; - yych = *(marker = ++p); - if (yybm[0+yych] & 64) { - goto yy700; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') goto yy714; - if (yych <= ']') goto yy703; - } else { - if (yych <= 0xDF) goto yy704; - if (yych <= 0xE0) goto yy705; - goto yy706; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy707; - if (yych <= 0xEF) goto yy706; - goto yy708; - } else { - if (yych <= 0xF3) goto yy709; - if (yych <= 0xF4) goto yy710; - } - } -yy714: - { return (bufsize_t)(p - start); } -} - + { + unsigned char yych; + unsigned int yyaccept = 0; + static const unsigned char yybm[] = { + 0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }; + yych = *p; + if (yych <= 0xDF) { + if (yych <= '\\') { + if (yych <= 0x00) + goto yy616; + if (yych != '\n') + goto yy618; + } else { + if (yych <= ']') + goto yy619; + if (yych <= 0x7F) + goto yy618; + if (yych >= 0xC2) + goto yy620; + } + } else { + if (yych <= 0xEF) { + if (yych <= 0xE0) + goto yy621; + if (yych == 0xED) + goto yy623; + goto yy622; + } else { + if (yych <= 0xF0) + goto yy624; + if (yych <= 0xF3) + goto yy625; + if (yych <= 0xF4) + goto yy626; + } + } + yy616: + ++p; + yy617 : { return 0; } + yy618: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= '\n') { + if (yych <= 0x00) + goto yy617; + if (yych <= '\t') + goto yy628; + goto yy617; + } else { + if (yych <= 0x7F) + goto yy628; + if (yych <= 0xC1) + goto yy617; + if (yych <= 0xF4) + goto yy628; + goto yy617; + } + yy619: + yyaccept = 0; + yych = *(marker = ++p); + if (yybm[0 + yych] & 128) { + goto yy638; + } + if (yych <= '\n') { + if (yych <= 0x00) + goto yy617; + if (yych <= '\t') + goto yy628; + goto yy617; + } else { + if (yych <= 0x7F) + goto yy628; + if (yych <= 0xC1) + goto yy617; + if (yych <= 0xF4) + goto yy628; + goto yy617; + } + yy620: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy617; + if (yych <= 0xBF) + goto yy627; + goto yy617; + yy621: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x9F) + goto yy617; + if (yych <= 0xBF) + goto yy631; + goto yy617; + yy622: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy617; + if (yych <= 0xBF) + goto yy631; + goto yy617; + yy623: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy617; + if (yych <= 0x9F) + goto yy631; + goto yy617; + yy624: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x8F) + goto yy617; + if (yych <= 0xBF) + goto yy633; + goto yy617; + yy625: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy617; + if (yych <= 0xBF) + goto yy633; + goto yy617; + yy626: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy617; + if (yych <= 0x8F) + goto yy633; + goto yy617; + yy627: + yych = *++p; + yy628: + if (yybm[0 + yych] & 64) { + goto yy627; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy629; + if (yych <= ']') + goto yy630; + } else { + if (yych <= 0xDF) + goto yy631; + if (yych <= 0xE0) + goto yy632; + goto yy633; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy634; + if (yych <= 0xEF) + goto yy633; + goto yy635; + } else { + if (yych <= 0xF3) + goto yy636; + if (yych <= 0xF4) + goto yy637; + } + } + yy629: + p = marker; + if (yyaccept == 0) { + goto yy617; + } else { + goto yy640; + } + yy630: + yych = *++p; + if (yybm[0 + yych] & 64) { + goto yy627; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy629; + if (yych <= ']') + goto yy638; + goto yy629; + } else { + if (yych <= 0xDF) + goto yy631; + if (yych <= 0xE0) + goto yy632; + goto yy633; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy634; + if (yych <= 0xEF) + goto yy633; + goto yy635; + } else { + if (yych <= 0xF3) + goto yy636; + if (yych <= 0xF4) + goto yy637; + goto yy629; + } + } + yy631: + yych = *++p; + if (yych <= 0x7F) + goto yy629; + if (yych <= 0xBF) + goto yy627; + goto yy629; + yy632: + yych = *++p; + if (yych <= 0x9F) + goto yy629; + if (yych <= 0xBF) + goto yy631; + goto yy629; + yy633: + yych = *++p; + if (yych <= 0x7F) + goto yy629; + if (yych <= 0xBF) + goto yy631; + goto yy629; + yy634: + yych = *++p; + if (yych <= 0x7F) + goto yy629; + if (yych <= 0x9F) + goto yy631; + goto yy629; + yy635: + yych = *++p; + if (yych <= 0x8F) + goto yy629; + if (yych <= 0xBF) + goto yy633; + goto yy629; + yy636: + yych = *++p; + if (yych <= 0x7F) + goto yy629; + if (yych <= 0xBF) + goto yy633; + goto yy629; + yy637: + yych = *++p; + if (yych <= 0x7F) + goto yy629; + if (yych <= 0x8F) + goto yy633; + goto yy629; + yy638: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy638; + } + if (yych <= 0xDF) { + if (yych <= '=') { + if (yych <= 0x00) + goto yy629; + if (yych == '\n') + goto yy629; + goto yy627; + } else { + if (yych <= '>') + goto yy639; + if (yych <= 0x7F) + goto yy627; + if (yych <= 0xC1) + goto yy629; + goto yy631; + } + } else { + if (yych <= 0xEF) { + if (yych <= 0xE0) + goto yy632; + if (yych == 0xED) + goto yy634; + goto yy633; + } else { + if (yych <= 0xF0) + goto yy635; + if (yych <= 0xF3) + goto yy636; + if (yych <= 0xF4) + goto yy637; + goto yy629; + } + } + yy639: + yyaccept = 1; + yych = *(marker = ++p); + if (yybm[0 + yych] & 64) { + goto yy627; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy640; + if (yych <= ']') + goto yy630; + } else { + if (yych <= 0xDF) + goto yy631; + if (yych <= 0xE0) + goto yy632; + goto yy633; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy634; + if (yych <= 0xEF) + goto yy633; + goto yy635; + } else { + if (yych <= 0xF3) + goto yy636; + if (yych <= 0xF4) + goto yy637; + } + } + yy640 : { return (bufsize_t)(p - start); } + } } // Try to match a link title (in single quotes, in double quotes, or // in parentheses), returning number of chars matched. Allow one // level of internal nesting (quotes within quotes). -bufsize_t _scan_link_title(const unsigned char *p) -{ +bufsize_t _scan_link_title(const unsigned char *p) { const unsigned char *marker = NULL; const unsigned char *start = p; -{ - unsigned char yych; - unsigned int yyaccept = 0; - static const unsigned char yybm[] = { - 0, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 192, 208, 208, 208, 208, 144, - 80, 80, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 32, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - yych = *p; - if (yych <= '&') { - if (yych == '"') goto yy719; - } else { - if (yych <= '\'') goto yy720; - if (yych <= '(') goto yy721; - } - ++p; -yy718: - { return 0; } -yy719: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x00) goto yy718; - if (yych <= 0x7F) goto yy723; - if (yych <= 0xC1) goto yy718; - if (yych <= 0xF4) goto yy723; - goto yy718; -yy720: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x00) goto yy718; - if (yych <= 0x7F) goto yy737; - if (yych <= 0xC1) goto yy718; - if (yych <= 0xF4) goto yy737; - goto yy718; -yy721: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= '(') { - if (yych <= 0x00) goto yy718; - if (yych <= '\'') goto yy750; - goto yy718; - } else { - if (yych <= 0x7F) goto yy750; - if (yych <= 0xC1) goto yy718; - if (yych <= 0xF4) goto yy750; - goto yy718; - } -yy722: - yych = *++p; -yy723: - if (yybm[0+yych] & 16) { - goto yy722; - } - if (yych <= 0xE0) { - if (yych <= '\\') { - if (yych <= 0x00) goto yy724; - if (yych <= '"') goto yy725; - goto yy727; - } else { - if (yych <= 0xC1) goto yy724; - if (yych <= 0xDF) goto yy729; - goto yy730; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) goto yy732; - goto yy731; - } else { - if (yych <= 0xF0) goto yy733; - if (yych <= 0xF3) goto yy734; - if (yych <= 0xF4) goto yy735; - } - } -yy724: - p = marker; - if (yyaccept <= 1) { - if (yyaccept == 0) { - goto yy718; - } else { - goto yy726; - } - } else { - if (yyaccept == 2) { - goto yy739; - } else { - goto yy752; - } - } -yy725: - ++p; -yy726: - { return (bufsize_t)(p - start); } -yy727: - yych = *++p; - if (yybm[0+yych] & 16) { - goto yy722; - } - if (yych <= 0xE0) { - if (yych <= '\\') { - if (yych <= 0x00) goto yy724; - if (yych <= '"') goto yy762; - goto yy727; - } else { - if (yych <= 0xC1) goto yy724; - if (yych >= 0xE0) goto yy730; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) goto yy732; - goto yy731; - } else { - if (yych <= 0xF0) goto yy733; - if (yych <= 0xF3) goto yy734; - if (yych <= 0xF4) goto yy735; - goto yy724; - } - } -yy729: - yych = *++p; - if (yych <= 0x7F) goto yy724; - if (yych <= 0xBF) goto yy722; - goto yy724; -yy730: - yych = *++p; - if (yych <= 0x9F) goto yy724; - if (yych <= 0xBF) goto yy729; - goto yy724; -yy731: - yych = *++p; - if (yych <= 0x7F) goto yy724; - if (yych <= 0xBF) goto yy729; - goto yy724; -yy732: - yych = *++p; - if (yych <= 0x7F) goto yy724; - if (yych <= 0x9F) goto yy729; - goto yy724; -yy733: - yych = *++p; - if (yych <= 0x8F) goto yy724; - if (yych <= 0xBF) goto yy731; - goto yy724; -yy734: - yych = *++p; - if (yych <= 0x7F) goto yy724; - if (yych <= 0xBF) goto yy731; - goto yy724; -yy735: - yych = *++p; - if (yych <= 0x7F) goto yy724; - if (yych <= 0x8F) goto yy731; - goto yy724; -yy736: - yych = *++p; -yy737: - if (yybm[0+yych] & 64) { - goto yy736; - } - if (yych <= 0xE0) { - if (yych <= '\\') { - if (yych <= 0x00) goto yy724; - if (yych >= '(') goto yy740; - } else { - if (yych <= 0xC1) goto yy724; - if (yych <= 0xDF) goto yy742; - goto yy743; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) goto yy745; - goto yy744; - } else { - if (yych <= 0xF0) goto yy746; - if (yych <= 0xF3) goto yy747; - if (yych <= 0xF4) goto yy748; - goto yy724; - } - } -yy738: - ++p; -yy739: - { return (bufsize_t)(p - start); } -yy740: - yych = *++p; - if (yybm[0+yych] & 64) { - goto yy736; - } - if (yych <= 0xE0) { - if (yych <= '\\') { - if (yych <= 0x00) goto yy724; - if (yych <= '\'') goto yy763; - goto yy740; - } else { - if (yych <= 0xC1) goto yy724; - if (yych >= 0xE0) goto yy743; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) goto yy745; - goto yy744; - } else { - if (yych <= 0xF0) goto yy746; - if (yych <= 0xF3) goto yy747; - if (yych <= 0xF4) goto yy748; - goto yy724; - } - } -yy742: - yych = *++p; - if (yych <= 0x7F) goto yy724; - if (yych <= 0xBF) goto yy736; - goto yy724; -yy743: - yych = *++p; - if (yych <= 0x9F) goto yy724; - if (yych <= 0xBF) goto yy742; - goto yy724; -yy744: - yych = *++p; - if (yych <= 0x7F) goto yy724; - if (yych <= 0xBF) goto yy742; - goto yy724; -yy745: - yych = *++p; - if (yych <= 0x7F) goto yy724; - if (yych <= 0x9F) goto yy742; - goto yy724; -yy746: - yych = *++p; - if (yych <= 0x8F) goto yy724; - if (yych <= 0xBF) goto yy744; - goto yy724; -yy747: - yych = *++p; - if (yych <= 0x7F) goto yy724; - if (yych <= 0xBF) goto yy744; - goto yy724; -yy748: - yych = *++p; - if (yych <= 0x7F) goto yy724; - if (yych <= 0x8F) goto yy744; - goto yy724; -yy749: - yych = *++p; -yy750: - if (yybm[0+yych] & 128) { - goto yy749; - } - if (yych <= 0xE0) { - if (yych <= '\\') { - if (yych <= '(') goto yy724; - if (yych >= '*') goto yy753; - } else { - if (yych <= 0xC1) goto yy724; - if (yych <= 0xDF) goto yy755; - goto yy756; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) goto yy758; - goto yy757; - } else { - if (yych <= 0xF0) goto yy759; - if (yych <= 0xF3) goto yy760; - if (yych <= 0xF4) goto yy761; - goto yy724; - } - } -yy751: - ++p; -yy752: - { return (bufsize_t)(p - start); } -yy753: - yych = *++p; - if (yych <= 0xDF) { - if (yych <= '[') { - if (yych <= 0x00) goto yy724; - if (yych == ')') goto yy764; - goto yy749; - } else { - if (yych <= '\\') goto yy753; - if (yych <= 0x7F) goto yy749; - if (yych <= 0xC1) goto yy724; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) goto yy756; - if (yych == 0xED) goto yy758; - goto yy757; - } else { - if (yych <= 0xF0) goto yy759; - if (yych <= 0xF3) goto yy760; - if (yych <= 0xF4) goto yy761; - goto yy724; - } - } -yy755: - yych = *++p; - if (yych <= 0x7F) goto yy724; - if (yych <= 0xBF) goto yy749; - goto yy724; -yy756: - yych = *++p; - if (yych <= 0x9F) goto yy724; - if (yych <= 0xBF) goto yy755; - goto yy724; -yy757: - yych = *++p; - if (yych <= 0x7F) goto yy724; - if (yych <= 0xBF) goto yy755; - goto yy724; -yy758: - yych = *++p; - if (yych <= 0x7F) goto yy724; - if (yych <= 0x9F) goto yy755; - goto yy724; -yy759: - yych = *++p; - if (yych <= 0x8F) goto yy724; - if (yych <= 0xBF) goto yy757; - goto yy724; -yy760: - yych = *++p; - if (yych <= 0x7F) goto yy724; - if (yych <= 0xBF) goto yy757; - goto yy724; -yy761: - yych = *++p; - if (yych <= 0x7F) goto yy724; - if (yych <= 0x8F) goto yy757; - goto yy724; -yy762: - yyaccept = 1; - yych = *(marker = ++p); - if (yybm[0+yych] & 16) { - goto yy722; - } - if (yych <= 0xE0) { - if (yych <= '\\') { - if (yych <= 0x00) goto yy726; - if (yych <= '"') goto yy725; - goto yy727; - } else { - if (yych <= 0xC1) goto yy726; - if (yych <= 0xDF) goto yy729; - goto yy730; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) goto yy732; - goto yy731; - } else { - if (yych <= 0xF0) goto yy733; - if (yych <= 0xF3) goto yy734; - if (yych <= 0xF4) goto yy735; - goto yy726; - } - } -yy763: - yyaccept = 2; - yych = *(marker = ++p); - if (yybm[0+yych] & 64) { - goto yy736; - } - if (yych <= 0xE0) { - if (yych <= '\\') { - if (yych <= 0x00) goto yy739; - if (yych <= '\'') goto yy738; - goto yy740; - } else { - if (yych <= 0xC1) goto yy739; - if (yych <= 0xDF) goto yy742; - goto yy743; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) goto yy745; - goto yy744; - } else { - if (yych <= 0xF0) goto yy746; - if (yych <= 0xF3) goto yy747; - if (yych <= 0xF4) goto yy748; - goto yy739; - } - } -yy764: - yyaccept = 3; - yych = *(marker = ++p); - if (yybm[0+yych] & 128) { - goto yy749; - } - if (yych <= 0xE0) { - if (yych <= '\\') { - if (yych <= '(') goto yy752; - if (yych <= ')') goto yy751; - goto yy753; - } else { - if (yych <= 0xC1) goto yy752; - if (yych <= 0xDF) goto yy755; - goto yy756; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) goto yy758; - goto yy757; - } else { - if (yych <= 0xF0) goto yy759; - if (yych <= 0xF3) goto yy760; - if (yych <= 0xF4) goto yy761; - goto yy752; - } - } -} - + { + unsigned char yych; + unsigned int yyaccept = 0; + static const unsigned char yybm[] = { + 0, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 208, 208, 208, 208, 192, 208, 208, 208, 208, 144, 80, 80, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 208, 208, 208, 208, 208, 208, 32, 208, 208, 208, 208, 208, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }; + yych = *p; + if (yych <= '&') { + if (yych == '"') + goto yy643; + } else { + if (yych <= '\'') + goto yy644; + if (yych <= '(') + goto yy645; + } + ++p; + yy642 : { return 0; } + yy643: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x00) + goto yy642; + if (yych <= 0x7F) + goto yy647; + if (yych <= 0xC1) + goto yy642; + if (yych <= 0xF4) + goto yy647; + goto yy642; + yy644: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x00) + goto yy642; + if (yych <= 0x7F) + goto yy660; + if (yych <= 0xC1) + goto yy642; + if (yych <= 0xF4) + goto yy660; + goto yy642; + yy645: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= '(') { + if (yych <= 0x00) + goto yy642; + if (yych <= '\'') + goto yy672; + goto yy642; + } else { + if (yych <= 0x7F) + goto yy672; + if (yych <= 0xC1) + goto yy642; + if (yych <= 0xF4) + goto yy672; + goto yy642; + } + yy646: + yych = *++p; + yy647: + if (yybm[0 + yych] & 16) { + goto yy646; + } + if (yych <= 0xE0) { + if (yych <= '\\') { + if (yych <= 0x00) + goto yy648; + if (yych <= '"') + goto yy649; + goto yy651; + } else { + if (yych <= 0xC1) + goto yy648; + if (yych <= 0xDF) + goto yy652; + goto yy653; + } + } else { + if (yych <= 0xEF) { + if (yych == 0xED) + goto yy655; + goto yy654; + } else { + if (yych <= 0xF0) + goto yy656; + if (yych <= 0xF3) + goto yy657; + if (yych <= 0xF4) + goto yy658; + } + } + yy648: + p = marker; + if (yyaccept <= 1) { + if (yyaccept == 0) { + goto yy642; + } else { + goto yy650; + } + } else { + if (yyaccept == 2) { + goto yy662; + } else { + goto yy674; + } + } + yy649: + ++p; + yy650 : { return (bufsize_t)(p - start); } + yy651: + yych = *++p; + if (yybm[0 + yych] & 16) { + goto yy646; + } + if (yych <= 0xE0) { + if (yych <= '\\') { + if (yych <= 0x00) + goto yy648; + if (yych <= '"') + goto yy683; + goto yy651; + } else { + if (yych <= 0xC1) + goto yy648; + if (yych >= 0xE0) + goto yy653; + } + } else { + if (yych <= 0xEF) { + if (yych == 0xED) + goto yy655; + goto yy654; + } else { + if (yych <= 0xF0) + goto yy656; + if (yych <= 0xF3) + goto yy657; + if (yych <= 0xF4) + goto yy658; + goto yy648; + } + } + yy652: + yych = *++p; + if (yych <= 0x7F) + goto yy648; + if (yych <= 0xBF) + goto yy646; + goto yy648; + yy653: + yych = *++p; + if (yych <= 0x9F) + goto yy648; + if (yych <= 0xBF) + goto yy652; + goto yy648; + yy654: + yych = *++p; + if (yych <= 0x7F) + goto yy648; + if (yych <= 0xBF) + goto yy652; + goto yy648; + yy655: + yych = *++p; + if (yych <= 0x7F) + goto yy648; + if (yych <= 0x9F) + goto yy652; + goto yy648; + yy656: + yych = *++p; + if (yych <= 0x8F) + goto yy648; + if (yych <= 0xBF) + goto yy654; + goto yy648; + yy657: + yych = *++p; + if (yych <= 0x7F) + goto yy648; + if (yych <= 0xBF) + goto yy654; + goto yy648; + yy658: + yych = *++p; + if (yych <= 0x7F) + goto yy648; + if (yych <= 0x8F) + goto yy654; + goto yy648; + yy659: + yych = *++p; + yy660: + if (yybm[0 + yych] & 64) { + goto yy659; + } + if (yych <= 0xE0) { + if (yych <= '\\') { + if (yych <= 0x00) + goto yy648; + if (yych >= '(') + goto yy663; + } else { + if (yych <= 0xC1) + goto yy648; + if (yych <= 0xDF) + goto yy664; + goto yy665; + } + } else { + if (yych <= 0xEF) { + if (yych == 0xED) + goto yy667; + goto yy666; + } else { + if (yych <= 0xF0) + goto yy668; + if (yych <= 0xF3) + goto yy669; + if (yych <= 0xF4) + goto yy670; + goto yy648; + } + } + yy661: + ++p; + yy662 : { return (bufsize_t)(p - start); } + yy663: + yych = *++p; + if (yybm[0 + yych] & 64) { + goto yy659; + } + if (yych <= 0xE0) { + if (yych <= '\\') { + if (yych <= 0x00) + goto yy648; + if (yych <= '\'') + goto yy684; + goto yy663; + } else { + if (yych <= 0xC1) + goto yy648; + if (yych >= 0xE0) + goto yy665; + } + } else { + if (yych <= 0xEF) { + if (yych == 0xED) + goto yy667; + goto yy666; + } else { + if (yych <= 0xF0) + goto yy668; + if (yych <= 0xF3) + goto yy669; + if (yych <= 0xF4) + goto yy670; + goto yy648; + } + } + yy664: + yych = *++p; + if (yych <= 0x7F) + goto yy648; + if (yych <= 0xBF) + goto yy659; + goto yy648; + yy665: + yych = *++p; + if (yych <= 0x9F) + goto yy648; + if (yych <= 0xBF) + goto yy664; + goto yy648; + yy666: + yych = *++p; + if (yych <= 0x7F) + goto yy648; + if (yych <= 0xBF) + goto yy664; + goto yy648; + yy667: + yych = *++p; + if (yych <= 0x7F) + goto yy648; + if (yych <= 0x9F) + goto yy664; + goto yy648; + yy668: + yych = *++p; + if (yych <= 0x8F) + goto yy648; + if (yych <= 0xBF) + goto yy666; + goto yy648; + yy669: + yych = *++p; + if (yych <= 0x7F) + goto yy648; + if (yych <= 0xBF) + goto yy666; + goto yy648; + yy670: + yych = *++p; + if (yych <= 0x7F) + goto yy648; + if (yych <= 0x8F) + goto yy666; + goto yy648; + yy671: + yych = *++p; + yy672: + if (yybm[0 + yych] & 128) { + goto yy671; + } + if (yych <= 0xE0) { + if (yych <= '\\') { + if (yych <= '(') + goto yy648; + if (yych >= '*') + goto yy675; + } else { + if (yych <= 0xC1) + goto yy648; + if (yych <= 0xDF) + goto yy676; + goto yy677; + } + } else { + if (yych <= 0xEF) { + if (yych == 0xED) + goto yy679; + goto yy678; + } else { + if (yych <= 0xF0) + goto yy680; + if (yych <= 0xF3) + goto yy681; + if (yych <= 0xF4) + goto yy682; + goto yy648; + } + } + yy673: + ++p; + yy674 : { return (bufsize_t)(p - start); } + yy675: + yych = *++p; + if (yych <= 0xDF) { + if (yych <= '[') { + if (yych <= 0x00) + goto yy648; + if (yych == ')') + goto yy685; + goto yy671; + } else { + if (yych <= '\\') + goto yy675; + if (yych <= 0x7F) + goto yy671; + if (yych <= 0xC1) + goto yy648; + } + } else { + if (yych <= 0xEF) { + if (yych <= 0xE0) + goto yy677; + if (yych == 0xED) + goto yy679; + goto yy678; + } else { + if (yych <= 0xF0) + goto yy680; + if (yych <= 0xF3) + goto yy681; + if (yych <= 0xF4) + goto yy682; + goto yy648; + } + } + yy676: + yych = *++p; + if (yych <= 0x7F) + goto yy648; + if (yych <= 0xBF) + goto yy671; + goto yy648; + yy677: + yych = *++p; + if (yych <= 0x9F) + goto yy648; + if (yych <= 0xBF) + goto yy676; + goto yy648; + yy678: + yych = *++p; + if (yych <= 0x7F) + goto yy648; + if (yych <= 0xBF) + goto yy676; + goto yy648; + yy679: + yych = *++p; + if (yych <= 0x7F) + goto yy648; + if (yych <= 0x9F) + goto yy676; + goto yy648; + yy680: + yych = *++p; + if (yych <= 0x8F) + goto yy648; + if (yych <= 0xBF) + goto yy678; + goto yy648; + yy681: + yych = *++p; + if (yych <= 0x7F) + goto yy648; + if (yych <= 0xBF) + goto yy678; + goto yy648; + yy682: + yych = *++p; + if (yych <= 0x7F) + goto yy648; + if (yych <= 0x8F) + goto yy678; + goto yy648; + yy683: + yyaccept = 1; + yych = *(marker = ++p); + if (yybm[0 + yych] & 16) { + goto yy646; + } + if (yych <= 0xE0) { + if (yych <= '\\') { + if (yych <= 0x00) + goto yy650; + if (yych <= '"') + goto yy649; + goto yy651; + } else { + if (yych <= 0xC1) + goto yy650; + if (yych <= 0xDF) + goto yy652; + goto yy653; + } + } else { + if (yych <= 0xEF) { + if (yych == 0xED) + goto yy655; + goto yy654; + } else { + if (yych <= 0xF0) + goto yy656; + if (yych <= 0xF3) + goto yy657; + if (yych <= 0xF4) + goto yy658; + goto yy650; + } + } + yy684: + yyaccept = 2; + yych = *(marker = ++p); + if (yybm[0 + yych] & 64) { + goto yy659; + } + if (yych <= 0xE0) { + if (yych <= '\\') { + if (yych <= 0x00) + goto yy662; + if (yych <= '\'') + goto yy661; + goto yy663; + } else { + if (yych <= 0xC1) + goto yy662; + if (yych <= 0xDF) + goto yy664; + goto yy665; + } + } else { + if (yych <= 0xEF) { + if (yych == 0xED) + goto yy667; + goto yy666; + } else { + if (yych <= 0xF0) + goto yy668; + if (yych <= 0xF3) + goto yy669; + if (yych <= 0xF4) + goto yy670; + goto yy662; + } + } + yy685: + yyaccept = 3; + yych = *(marker = ++p); + if (yybm[0 + yych] & 128) { + goto yy671; + } + if (yych <= 0xE0) { + if (yych <= '\\') { + if (yych <= '(') + goto yy674; + if (yych <= ')') + goto yy673; + goto yy675; + } else { + if (yych <= 0xC1) + goto yy674; + if (yych <= 0xDF) + goto yy676; + goto yy677; + } + } else { + if (yych <= 0xEF) { + if (yych == 0xED) + goto yy679; + goto yy678; + } else { + if (yych <= 0xF0) + goto yy680; + if (yych <= 0xF3) + goto yy681; + if (yych <= 0xF4) + goto yy682; + goto yy674; + } + } + } } // Match space characters, including newlines. -bufsize_t _scan_spacechars(const unsigned char *p) -{ - const unsigned char *start = p; \ - -{ - unsigned char yych; - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - yych = *p; - if (yybm[0+yych] & 128) { - goto yy769; - } - ++p; - { return 0; } -yy769: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy769; - } - { return (bufsize_t)(p - start); } -} +bufsize_t _scan_spacechars(const unsigned char *p) { + const unsigned char *start = p; + { + unsigned char yych; + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }; + yych = *p; + if (yybm[0 + yych] & 128) { + goto yy687; + } + ++p; + { return 0; } + yy687: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy687; + } + { return (bufsize_t)(p - start); } + } } // Match ATX heading start. -bufsize_t _scan_atx_heading_start(const unsigned char *p) -{ +bufsize_t _scan_atx_heading_start(const unsigned char *p) { const unsigned char *marker = NULL; const unsigned char *start = p; -{ - unsigned char yych; - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 128, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - yych = *p; - if (yych == '#') goto yy776; - ++p; -yy775: - { return 0; } -yy776: - yych = *(marker = ++p); - if (yybm[0+yych] & 128) { - goto yy777; - } - if (yych <= '\f') { - if (yych <= 0x08) goto yy775; - if (yych <= '\n') goto yy780; - goto yy775; - } else { - if (yych <= '\r') goto yy780; - if (yych == '#') goto yy781; - goto yy775; - } -yy777: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy777; - } -yy779: - { return (bufsize_t)(p - start); } -yy780: - ++p; - goto yy779; -yy781: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy777; - } - if (yych <= '\f') { - if (yych <= 0x08) goto yy782; - if (yych <= '\n') goto yy780; - } else { - if (yych <= '\r') goto yy780; - if (yych == '#') goto yy783; - } -yy782: - p = marker; - goto yy775; -yy783: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy777; - } - if (yych <= '\f') { - if (yych <= 0x08) goto yy782; - if (yych <= '\n') goto yy780; - goto yy782; - } else { - if (yych <= '\r') goto yy780; - if (yych != '#') goto yy782; - } - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy777; - } - if (yych <= '\f') { - if (yych <= 0x08) goto yy782; - if (yych <= '\n') goto yy780; - goto yy782; - } else { - if (yych <= '\r') goto yy780; - if (yych != '#') goto yy782; - } - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy777; - } - if (yych <= '\f') { - if (yych <= 0x08) goto yy782; - if (yych <= '\n') goto yy780; - goto yy782; - } else { - if (yych <= '\r') goto yy780; - if (yych != '#') goto yy782; - } - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy777; - } - if (yych <= 0x08) goto yy782; - if (yych <= '\n') goto yy780; - if (yych == '\r') goto yy780; - goto yy782; -} - + { + unsigned char yych; + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }; + yych = *p; + if (yych == '#') + goto yy690; + ++p; + yy689 : { return 0; } + yy690: + yych = *(marker = ++p); + if (yybm[0 + yych] & 128) { + goto yy691; + } + if (yych <= '\f') { + if (yych <= 0x08) + goto yy689; + if (yych <= '\n') + goto yy693; + goto yy689; + } else { + if (yych <= '\r') + goto yy693; + if (yych == '#') + goto yy694; + goto yy689; + } + yy691: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy691; + } + yy692 : { return (bufsize_t)(p - start); } + yy693: + ++p; + goto yy692; + yy694: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy691; + } + if (yych <= '\f') { + if (yych <= 0x08) + goto yy695; + if (yych <= '\n') + goto yy693; + } else { + if (yych <= '\r') + goto yy693; + if (yych == '#') + goto yy696; + } + yy695: + p = marker; + goto yy689; + yy696: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy691; + } + if (yych <= '\f') { + if (yych <= 0x08) + goto yy695; + if (yych <= '\n') + goto yy693; + goto yy695; + } else { + if (yych <= '\r') + goto yy693; + if (yych != '#') + goto yy695; + } + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy691; + } + if (yych <= '\f') { + if (yych <= 0x08) + goto yy695; + if (yych <= '\n') + goto yy693; + goto yy695; + } else { + if (yych <= '\r') + goto yy693; + if (yych != '#') + goto yy695; + } + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy691; + } + if (yych <= '\f') { + if (yych <= 0x08) + goto yy695; + if (yych <= '\n') + goto yy693; + goto yy695; + } else { + if (yych <= '\r') + goto yy693; + if (yych != '#') + goto yy695; + } + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy691; + } + if (yych <= 0x08) + goto yy695; + if (yych <= '\n') + goto yy693; + if (yych == '\r') + goto yy693; + goto yy695; + } } // Match setext heading line. Return 1 for level-1 heading, // 2 for level-2, 0 for no match. -bufsize_t _scan_setext_heading_line(const unsigned char *p) -{ +bufsize_t _scan_setext_heading_line(const unsigned char *p) { const unsigned char *marker = NULL; -{ - unsigned char yych; - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 32, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 32, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 64, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 128, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - yych = *p; - if (yych == '-') goto yy791; - if (yych == '=') goto yy792; - ++p; -yy790: - { return 0; } -yy791: - yych = *(marker = ++p); - if (yybm[0+yych] & 64) { - goto yy798; - } - if (yych <= '\f') { - if (yych <= 0x08) goto yy790; - if (yych <= '\n') goto yy794; - goto yy790; - } else { - if (yych <= '\r') goto yy794; - if (yych == ' ') goto yy794; - goto yy790; - } -yy792: - yych = *(marker = ++p); - if (yybm[0+yych] & 128) { - goto yy804; - } - if (yych <= '\f') { - if (yych <= 0x08) goto yy790; - if (yych <= '\n') goto yy801; - goto yy790; - } else { - if (yych <= '\r') goto yy801; - if (yych == ' ') goto yy801; - goto yy790; - } -yy793: - yych = *++p; -yy794: - if (yybm[0+yych] & 32) { - goto yy793; - } - if (yych <= 0x08) goto yy795; - if (yych <= '\n') goto yy796; - if (yych == '\r') goto yy796; -yy795: - p = marker; - goto yy790; -yy796: - ++p; - { return 2; } -yy798: - yych = *++p; - if (yybm[0+yych] & 32) { - goto yy793; - } - if (yych <= '\f') { - if (yych <= 0x08) goto yy795; - if (yych <= '\n') goto yy796; - goto yy795; - } else { - if (yych <= '\r') goto yy796; - if (yych == '-') goto yy798; - goto yy795; - } -yy800: - yych = *++p; -yy801: - if (yych <= '\f') { - if (yych <= 0x08) goto yy795; - if (yych <= '\t') goto yy800; - if (yych >= '\v') goto yy795; - } else { - if (yych <= '\r') goto yy802; - if (yych == ' ') goto yy800; - goto yy795; - } -yy802: - ++p; - { return 1; } -yy804: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy804; - } - if (yych <= '\f') { - if (yych <= 0x08) goto yy795; - if (yych <= '\t') goto yy800; - if (yych <= '\n') goto yy802; - goto yy795; - } else { - if (yych <= '\r') goto yy802; - if (yych == ' ') goto yy800; - goto yy795; - } -} - + { + unsigned char yych; + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }; + yych = *p; + if (yych == '-') + goto yy699; + if (yych == '=') + goto yy700; + ++p; + yy698 : { return 0; } + yy699: + yych = *(marker = ++p); + if (yybm[0 + yych] & 64) { + goto yy705; + } + if (yych <= '\f') { + if (yych <= 0x08) + goto yy698; + if (yych <= '\n') + goto yy702; + goto yy698; + } else { + if (yych <= '\r') + goto yy702; + if (yych == ' ') + goto yy702; + goto yy698; + } + yy700: + yych = *(marker = ++p); + if (yybm[0 + yych] & 128) { + goto yy709; + } + if (yych <= '\f') { + if (yych <= 0x08) + goto yy698; + if (yych <= '\n') + goto yy707; + goto yy698; + } else { + if (yych <= '\r') + goto yy707; + if (yych == ' ') + goto yy707; + goto yy698; + } + yy701: + yych = *++p; + yy702: + if (yybm[0 + yych] & 32) { + goto yy701; + } + if (yych <= 0x08) + goto yy703; + if (yych <= '\n') + goto yy704; + if (yych == '\r') + goto yy704; + yy703: + p = marker; + goto yy698; + yy704: + ++p; + { return 2; } + yy705: + yych = *++p; + if (yybm[0 + yych] & 32) { + goto yy701; + } + if (yych <= '\f') { + if (yych <= 0x08) + goto yy703; + if (yych <= '\n') + goto yy704; + goto yy703; + } else { + if (yych <= '\r') + goto yy704; + if (yych == '-') + goto yy705; + goto yy703; + } + yy706: + yych = *++p; + yy707: + if (yych <= '\f') { + if (yych <= 0x08) + goto yy703; + if (yych <= '\t') + goto yy706; + if (yych >= '\v') + goto yy703; + } else { + if (yych <= '\r') + goto yy708; + if (yych == ' ') + goto yy706; + goto yy703; + } + yy708: + ++p; + { return 1; } + yy709: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy709; + } + if (yych <= '\f') { + if (yych <= 0x08) + goto yy703; + if (yych <= '\t') + goto yy706; + if (yych <= '\n') + goto yy708; + goto yy703; + } else { + if (yych <= '\r') + goto yy708; + if (yych == ' ') + goto yy706; + goto yy703; + } + } } // Scan an opening code fence. -bufsize_t _scan_open_code_fence(const unsigned char *p) -{ +bufsize_t _scan_open_code_fence(const unsigned char *p) { const unsigned char *marker = NULL; const unsigned char *start = p; -{ - unsigned char yych; - static const unsigned char yybm[] = { - 0, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 0, 192, 192, 0, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, - 144, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 224, 192, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - yych = *p; - if (yych == '`') goto yy810; - if (yych == '~') goto yy811; - ++p; -yy809: - { return 0; } -yy810: - yych = *(marker = ++p); - if (yych == '`') goto yy812; - goto yy809; -yy811: - yych = *(marker = ++p); - if (yych == '~') goto yy814; - goto yy809; -yy812: - yych = *++p; - if (yybm[0+yych] & 16) { - goto yy815; - } -yy813: - p = marker; - goto yy809; -yy814: - yych = *++p; - if (yybm[0+yych] & 32) { - goto yy817; - } - goto yy813; -yy815: - yych = *++p; - if (yybm[0+yych] & 16) { - goto yy815; - } - if (yych <= 0xDF) { - if (yych <= '\f') { - if (yych <= 0x00) goto yy813; - if (yych == '\n') { - marker = p; - goto yy821; - } - marker = p; - goto yy819; - } else { - if (yych <= '\r') { - marker = p; - goto yy821; - } - if (yych <= 0x7F) { - marker = p; - goto yy819; - } - if (yych <= 0xC1) goto yy813; - marker = p; - goto yy823; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) { - marker = p; - goto yy824; - } - if (yych == 0xED) { - marker = p; - goto yy826; - } - marker = p; - goto yy825; - } else { - if (yych <= 0xF0) { - marker = p; - goto yy827; - } - if (yych <= 0xF3) { - marker = p; - goto yy828; - } - if (yych <= 0xF4) { - marker = p; - goto yy829; - } - goto yy813; - } - } -yy817: - yych = *++p; - if (yybm[0+yych] & 32) { - goto yy817; - } - if (yych <= 0xDF) { - if (yych <= '\f') { - if (yych <= 0x00) goto yy813; - if (yych == '\n') { - marker = p; - goto yy832; - } - marker = p; - goto yy830; - } else { - if (yych <= '\r') { - marker = p; - goto yy832; - } - if (yych <= 0x7F) { - marker = p; - goto yy830; - } - if (yych <= 0xC1) goto yy813; - marker = p; - goto yy834; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) { - marker = p; - goto yy835; - } - if (yych == 0xED) { - marker = p; - goto yy837; - } - marker = p; - goto yy836; - } else { - if (yych <= 0xF0) { - marker = p; - goto yy838; - } - if (yych <= 0xF3) { - marker = p; - goto yy839; - } - if (yych <= 0xF4) { - marker = p; - goto yy840; - } - goto yy813; - } - } -yy819: - yych = *++p; - if (yybm[0+yych] & 64) { - goto yy819; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x00) goto yy813; - if (yych >= 0x0E) goto yy813; - } else { - if (yych <= 0xDF) goto yy823; - if (yych <= 0xE0) goto yy824; - goto yy825; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy826; - if (yych <= 0xEF) goto yy825; - goto yy827; - } else { - if (yych <= 0xF3) goto yy828; - if (yych <= 0xF4) goto yy829; - goto yy813; - } - } -yy821: - ++p; - p = marker; - { return (bufsize_t)(p - start); } -yy823: - yych = *++p; - if (yych <= 0x7F) goto yy813; - if (yych <= 0xBF) goto yy819; - goto yy813; -yy824: - yych = *++p; - if (yych <= 0x9F) goto yy813; - if (yych <= 0xBF) goto yy823; - goto yy813; -yy825: - yych = *++p; - if (yych <= 0x7F) goto yy813; - if (yych <= 0xBF) goto yy823; - goto yy813; -yy826: - yych = *++p; - if (yych <= 0x7F) goto yy813; - if (yych <= 0x9F) goto yy823; - goto yy813; -yy827: - yych = *++p; - if (yych <= 0x8F) goto yy813; - if (yych <= 0xBF) goto yy825; - goto yy813; -yy828: - yych = *++p; - if (yych <= 0x7F) goto yy813; - if (yych <= 0xBF) goto yy825; - goto yy813; -yy829: - yych = *++p; - if (yych <= 0x7F) goto yy813; - if (yych <= 0x8F) goto yy825; - goto yy813; -yy830: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy830; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x00) goto yy813; - if (yych >= 0x0E) goto yy813; - } else { - if (yych <= 0xDF) goto yy834; - if (yych <= 0xE0) goto yy835; - goto yy836; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy837; - if (yych <= 0xEF) goto yy836; - goto yy838; - } else { - if (yych <= 0xF3) goto yy839; - if (yych <= 0xF4) goto yy840; - goto yy813; - } - } -yy832: - ++p; - p = marker; - { return (bufsize_t)(p - start); } -yy834: - yych = *++p; - if (yych <= 0x7F) goto yy813; - if (yych <= 0xBF) goto yy830; - goto yy813; -yy835: - yych = *++p; - if (yych <= 0x9F) goto yy813; - if (yych <= 0xBF) goto yy834; - goto yy813; -yy836: - yych = *++p; - if (yych <= 0x7F) goto yy813; - if (yych <= 0xBF) goto yy834; - goto yy813; -yy837: - yych = *++p; - if (yych <= 0x7F) goto yy813; - if (yych <= 0x9F) goto yy834; - goto yy813; -yy838: - yych = *++p; - if (yych <= 0x8F) goto yy813; - if (yych <= 0xBF) goto yy836; - goto yy813; -yy839: - yych = *++p; - if (yych <= 0x7F) goto yy813; - if (yych <= 0xBF) goto yy836; - goto yy813; -yy840: - yych = *++p; - if (yych <= 0x7F) goto yy813; - if (yych <= 0x8F) goto yy836; - goto yy813; -} - + { + unsigned char yych; + static const unsigned char yybm[] = { + 0, 192, 192, 192, 192, 192, 192, 192, 192, 192, 0, 192, 192, 0, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 144, 192, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 224, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }; + yych = *p; + if (yych == '`') + goto yy712; + if (yych == '~') + goto yy713; + ++p; + yy711 : { return 0; } + yy712: + yych = *(marker = ++p); + if (yych == '`') + goto yy714; + goto yy711; + yy713: + yych = *(marker = ++p); + if (yych == '~') + goto yy716; + goto yy711; + yy714: + yych = *++p; + if (yybm[0 + yych] & 16) { + goto yy717; + } + yy715: + p = marker; + goto yy711; + yy716: + yych = *++p; + if (yybm[0 + yych] & 32) { + goto yy718; + } + goto yy715; + yy717: + yych = *++p; + if (yybm[0 + yych] & 16) { + goto yy717; + } + if (yych <= 0xDF) { + if (yych <= '\f') { + if (yych <= 0x00) + goto yy715; + if (yych == '\n') { + marker = p; + goto yy720; + } + marker = p; + goto yy719; + } else { + if (yych <= '\r') { + marker = p; + goto yy720; + } + if (yych <= 0x7F) { + marker = p; + goto yy719; + } + if (yych <= 0xC1) + goto yy715; + marker = p; + goto yy721; + } + } else { + if (yych <= 0xEF) { + if (yych <= 0xE0) { + marker = p; + goto yy722; + } + if (yych == 0xED) { + marker = p; + goto yy724; + } + marker = p; + goto yy723; + } else { + if (yych <= 0xF0) { + marker = p; + goto yy725; + } + if (yych <= 0xF3) { + marker = p; + goto yy726; + } + if (yych <= 0xF4) { + marker = p; + goto yy727; + } + goto yy715; + } + } + yy718: + yych = *++p; + if (yybm[0 + yych] & 32) { + goto yy718; + } + if (yych <= 0xDF) { + if (yych <= '\f') { + if (yych <= 0x00) + goto yy715; + if (yych == '\n') { + marker = p; + goto yy729; + } + marker = p; + goto yy728; + } else { + if (yych <= '\r') { + marker = p; + goto yy729; + } + if (yych <= 0x7F) { + marker = p; + goto yy728; + } + if (yych <= 0xC1) + goto yy715; + marker = p; + goto yy730; + } + } else { + if (yych <= 0xEF) { + if (yych <= 0xE0) { + marker = p; + goto yy731; + } + if (yych == 0xED) { + marker = p; + goto yy733; + } + marker = p; + goto yy732; + } else { + if (yych <= 0xF0) { + marker = p; + goto yy734; + } + if (yych <= 0xF3) { + marker = p; + goto yy735; + } + if (yych <= 0xF4) { + marker = p; + goto yy736; + } + goto yy715; + } + } + yy719: + yych = *++p; + if (yybm[0 + yych] & 64) { + goto yy719; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= 0x00) + goto yy715; + if (yych >= 0x0E) + goto yy715; + } else { + if (yych <= 0xDF) + goto yy721; + if (yych <= 0xE0) + goto yy722; + goto yy723; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy724; + if (yych <= 0xEF) + goto yy723; + goto yy725; + } else { + if (yych <= 0xF3) + goto yy726; + if (yych <= 0xF4) + goto yy727; + goto yy715; + } + } + yy720: + ++p; + p = marker; + { return (bufsize_t)(p - start); } + yy721: + yych = *++p; + if (yych <= 0x7F) + goto yy715; + if (yych <= 0xBF) + goto yy719; + goto yy715; + yy722: + yych = *++p; + if (yych <= 0x9F) + goto yy715; + if (yych <= 0xBF) + goto yy721; + goto yy715; + yy723: + yych = *++p; + if (yych <= 0x7F) + goto yy715; + if (yych <= 0xBF) + goto yy721; + goto yy715; + yy724: + yych = *++p; + if (yych <= 0x7F) + goto yy715; + if (yych <= 0x9F) + goto yy721; + goto yy715; + yy725: + yych = *++p; + if (yych <= 0x8F) + goto yy715; + if (yych <= 0xBF) + goto yy723; + goto yy715; + yy726: + yych = *++p; + if (yych <= 0x7F) + goto yy715; + if (yych <= 0xBF) + goto yy723; + goto yy715; + yy727: + yych = *++p; + if (yych <= 0x7F) + goto yy715; + if (yych <= 0x8F) + goto yy723; + goto yy715; + yy728: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy728; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= 0x00) + goto yy715; + if (yych >= 0x0E) + goto yy715; + } else { + if (yych <= 0xDF) + goto yy730; + if (yych <= 0xE0) + goto yy731; + goto yy732; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy733; + if (yych <= 0xEF) + goto yy732; + goto yy734; + } else { + if (yych <= 0xF3) + goto yy735; + if (yych <= 0xF4) + goto yy736; + goto yy715; + } + } + yy729: + ++p; + p = marker; + { return (bufsize_t)(p - start); } + yy730: + yych = *++p; + if (yych <= 0x7F) + goto yy715; + if (yych <= 0xBF) + goto yy728; + goto yy715; + yy731: + yych = *++p; + if (yych <= 0x9F) + goto yy715; + if (yych <= 0xBF) + goto yy730; + goto yy715; + yy732: + yych = *++p; + if (yych <= 0x7F) + goto yy715; + if (yych <= 0xBF) + goto yy730; + goto yy715; + yy733: + yych = *++p; + if (yych <= 0x7F) + goto yy715; + if (yych <= 0x9F) + goto yy730; + goto yy715; + yy734: + yych = *++p; + if (yych <= 0x8F) + goto yy715; + if (yych <= 0xBF) + goto yy732; + goto yy715; + yy735: + yych = *++p; + if (yych <= 0x7F) + goto yy715; + if (yych <= 0xBF) + goto yy732; + goto yy715; + yy736: + yych = *++p; + if (yych <= 0x7F) + goto yy715; + if (yych <= 0x8F) + goto yy732; + goto yy715; + } } // Scan a closing code fence with length at least len. -bufsize_t _scan_close_code_fence(const unsigned char *p) -{ +bufsize_t _scan_close_code_fence(const unsigned char *p) { const unsigned char *marker = NULL; const unsigned char *start = p; -{ - unsigned char yych; - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 128, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 32, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - yych = *p; - if (yych == '`') goto yy845; - if (yych == '~') goto yy846; - ++p; -yy844: - { return 0; } -yy845: - yych = *(marker = ++p); - if (yych == '`') goto yy847; - goto yy844; -yy846: - yych = *(marker = ++p); - if (yych == '~') goto yy849; - goto yy844; -yy847: - yych = *++p; - if (yybm[0+yych] & 32) { - goto yy850; - } -yy848: - p = marker; - goto yy844; -yy849: - yych = *++p; - if (yybm[0+yych] & 64) { - goto yy852; - } - goto yy848; -yy850: - yych = *++p; - if (yybm[0+yych] & 32) { - goto yy850; - } - if (yych <= '\f') { - if (yych <= 0x08) goto yy848; - if (yych <= '\t') { - marker = p; - goto yy854; - } - if (yych <= '\n') { - marker = p; - goto yy856; - } - goto yy848; - } else { - if (yych <= '\r') { - marker = p; - goto yy856; - } - if (yych == ' ') { - marker = p; - goto yy854; - } - goto yy848; - } -yy852: - yych = *++p; - if (yybm[0+yych] & 64) { - goto yy852; - } - if (yych <= '\f') { - if (yych <= 0x08) goto yy848; - if (yych <= '\t') { - marker = p; - goto yy858; - } - if (yych <= '\n') { - marker = p; - goto yy860; - } - goto yy848; - } else { - if (yych <= '\r') { - marker = p; - goto yy860; - } - if (yych == ' ') { - marker = p; - goto yy858; - } - goto yy848; - } -yy854: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy854; - } - if (yych <= 0x08) goto yy848; - if (yych <= '\n') goto yy856; - if (yych != '\r') goto yy848; -yy856: - ++p; - p = marker; - { return (bufsize_t)(p - start); } -yy858: - yych = *++p; - if (yych <= '\f') { - if (yych <= 0x08) goto yy848; - if (yych <= '\t') goto yy858; - if (yych >= '\v') goto yy848; - } else { - if (yych <= '\r') goto yy860; - if (yych == ' ') goto yy858; - goto yy848; - } -yy860: - ++p; - p = marker; - { return (bufsize_t)(p - start); } -} - + { + unsigned char yych; + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }; + yych = *p; + if (yych == '`') + goto yy739; + if (yych == '~') + goto yy740; + ++p; + yy738 : { return 0; } + yy739: + yych = *(marker = ++p); + if (yych == '`') + goto yy741; + goto yy738; + yy740: + yych = *(marker = ++p); + if (yych == '~') + goto yy743; + goto yy738; + yy741: + yych = *++p; + if (yybm[0 + yych] & 32) { + goto yy744; + } + yy742: + p = marker; + goto yy738; + yy743: + yych = *++p; + if (yybm[0 + yych] & 64) { + goto yy745; + } + goto yy742; + yy744: + yych = *++p; + if (yybm[0 + yych] & 32) { + goto yy744; + } + if (yych <= '\f') { + if (yych <= 0x08) + goto yy742; + if (yych <= '\t') { + marker = p; + goto yy746; + } + if (yych <= '\n') { + marker = p; + goto yy747; + } + goto yy742; + } else { + if (yych <= '\r') { + marker = p; + goto yy747; + } + if (yych == ' ') { + marker = p; + goto yy746; + } + goto yy742; + } + yy745: + yych = *++p; + if (yybm[0 + yych] & 64) { + goto yy745; + } + if (yych <= '\f') { + if (yych <= 0x08) + goto yy742; + if (yych <= '\t') { + marker = p; + goto yy748; + } + if (yych <= '\n') { + marker = p; + goto yy749; + } + goto yy742; + } else { + if (yych <= '\r') { + marker = p; + goto yy749; + } + if (yych == ' ') { + marker = p; + goto yy748; + } + goto yy742; + } + yy746: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy746; + } + if (yych <= 0x08) + goto yy742; + if (yych <= '\n') + goto yy747; + if (yych != '\r') + goto yy742; + yy747: + ++p; + p = marker; + { return (bufsize_t)(p - start); } + yy748: + yych = *++p; + if (yych <= '\f') { + if (yych <= 0x08) + goto yy742; + if (yych <= '\t') + goto yy748; + if (yych >= '\v') + goto yy742; + } else { + if (yych <= '\r') + goto yy749; + if (yych == ' ') + goto yy748; + goto yy742; + } + yy749: + ++p; + p = marker; + { return (bufsize_t)(p - start); } + } } // Scans an entity. // Returns number of chars matched. -bufsize_t _scan_entity(const unsigned char *p) -{ +bufsize_t _scan_entity(const unsigned char *p) { const unsigned char *marker = NULL; const unsigned char *start = p; -{ - unsigned char yych; - yych = *p; - if (yych == '&') goto yy866; - ++p; -yy865: - { return 0; } -yy866: - yych = *(marker = ++p); - if (yych <= '@') { - if (yych != '#') goto yy865; - } else { - if (yych <= 'Z') goto yy869; - if (yych <= '`') goto yy865; - if (yych <= 'z') goto yy869; - goto yy865; - } - yych = *++p; - if (yych <= 'W') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy870; - } else { - if (yych <= 'X') goto yy871; - if (yych == 'x') goto yy871; - } -yy868: - p = marker; - goto yy865; -yy869: - yych = *++p; - if (yych <= '@') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy872; - goto yy868; - } else { - if (yych <= 'Z') goto yy872; - if (yych <= '`') goto yy868; - if (yych <= 'z') goto yy872; - goto yy868; - } -yy870: - yych = *++p; - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy873; - if (yych == ';') goto yy874; - goto yy868; -yy871: - yych = *++p; - if (yych <= '@') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy876; - goto yy868; - } else { - if (yych <= 'F') goto yy876; - if (yych <= '`') goto yy868; - if (yych <= 'f') goto yy876; - goto yy868; - } -yy872: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy877; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - goto yy877; - } else { - if (yych <= '`') goto yy868; - if (yych <= 'z') goto yy877; - goto yy868; - } - } -yy873: - yych = *++p; - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy878; - if (yych != ';') goto yy868; -yy874: - ++p; - { return (bufsize_t)(p - start); } -yy876: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy879; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'F') { - if (yych <= '@') goto yy868; - goto yy879; - } else { - if (yych <= '`') goto yy868; - if (yych <= 'f') goto yy879; - goto yy868; - } - } -yy877: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy880; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - goto yy880; - } else { - if (yych <= '`') goto yy868; - if (yych <= 'z') goto yy880; - goto yy868; - } - } -yy878: - yych = *++p; - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy881; - if (yych == ';') goto yy874; - goto yy868; -yy879: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy882; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'F') { - if (yych <= '@') goto yy868; - goto yy882; - } else { - if (yych <= '`') goto yy868; - if (yych <= 'f') goto yy882; - goto yy868; - } - } -yy880: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy883; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - goto yy883; - } else { - if (yych <= '`') goto yy868; - if (yych <= 'z') goto yy883; - goto yy868; - } - } -yy881: - yych = *++p; - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy884; - if (yych == ';') goto yy874; - goto yy868; -yy882: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy885; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'F') { - if (yych <= '@') goto yy868; - goto yy885; - } else { - if (yych <= '`') goto yy868; - if (yych <= 'f') goto yy885; - goto yy868; - } - } -yy883: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy886; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - goto yy886; - } else { - if (yych <= '`') goto yy868; - if (yych <= 'z') goto yy886; - goto yy868; - } - } -yy884: - yych = *++p; - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy887; - if (yych == ';') goto yy874; - goto yy868; -yy885: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy888; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'F') { - if (yych <= '@') goto yy868; - goto yy888; - } else { - if (yych <= '`') goto yy868; - if (yych <= 'f') goto yy888; - goto yy868; - } - } -yy886: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy889; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - goto yy889; - } else { - if (yych <= '`') goto yy868; - if (yych <= 'z') goto yy889; - goto yy868; - } - } -yy887: - yych = *++p; - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy890; - if (yych == ';') goto yy874; - goto yy868; -yy888: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy890; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'F') { - if (yych <= '@') goto yy868; - goto yy890; - } else { - if (yych <= '`') goto yy868; - if (yych <= 'f') goto yy890; - goto yy868; - } - } -yy889: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy891; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - goto yy891; - } else { - if (yych <= '`') goto yy868; - if (yych <= 'z') goto yy891; - goto yy868; - } - } -yy890: - yych = *++p; - if (yych == ';') goto yy874; - goto yy868; -yy891: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy892; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - } else { - if (yych <= '`') goto yy868; - if (yych >= '{') goto yy868; - } - } -yy892: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy893; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - } else { - if (yych <= '`') goto yy868; - if (yych >= '{') goto yy868; - } - } -yy893: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy894; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - } else { - if (yych <= '`') goto yy868; - if (yych >= '{') goto yy868; - } - } -yy894: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy895; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - } else { - if (yych <= '`') goto yy868; - if (yych >= '{') goto yy868; - } - } -yy895: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy896; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - } else { - if (yych <= '`') goto yy868; - if (yych >= '{') goto yy868; - } - } -yy896: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy897; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - } else { - if (yych <= '`') goto yy868; - if (yych >= '{') goto yy868; - } - } -yy897: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy898; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - } else { - if (yych <= '`') goto yy868; - if (yych >= '{') goto yy868; - } - } -yy898: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy899; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - } else { - if (yych <= '`') goto yy868; - if (yych >= '{') goto yy868; - } - } -yy899: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy900; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - } else { - if (yych <= '`') goto yy868; - if (yych >= '{') goto yy868; - } - } -yy900: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy901; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - } else { - if (yych <= '`') goto yy868; - if (yych >= '{') goto yy868; - } - } -yy901: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy902; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - } else { - if (yych <= '`') goto yy868; - if (yych >= '{') goto yy868; - } - } -yy902: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy903; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - } else { - if (yych <= '`') goto yy868; - if (yych >= '{') goto yy868; - } - } -yy903: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy904; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - } else { - if (yych <= '`') goto yy868; - if (yych >= '{') goto yy868; - } - } -yy904: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy905; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - } else { - if (yych <= '`') goto yy868; - if (yych >= '{') goto yy868; - } - } -yy905: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy906; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - } else { - if (yych <= '`') goto yy868; - if (yych >= '{') goto yy868; - } - } -yy906: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy907; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - } else { - if (yych <= '`') goto yy868; - if (yych >= '{') goto yy868; - } - } -yy907: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy908; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - } else { - if (yych <= '`') goto yy868; - if (yych >= '{') goto yy868; - } - } -yy908: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy909; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - } else { - if (yych <= '`') goto yy868; - if (yych >= '{') goto yy868; - } - } -yy909: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy910; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - } else { - if (yych <= '`') goto yy868; - if (yych >= '{') goto yy868; - } - } -yy910: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy911; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - } else { - if (yych <= '`') goto yy868; - if (yych >= '{') goto yy868; - } - } -yy911: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy912; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - } else { - if (yych <= '`') goto yy868; - if (yych >= '{') goto yy868; - } - } -yy912: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy913; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - } else { - if (yych <= '`') goto yy868; - if (yych >= '{') goto yy868; - } - } -yy913: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy914; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - } else { - if (yych <= '`') goto yy868; - if (yych >= '{') goto yy868; - } - } -yy914: - yych = *++p; - if (yych <= ';') { - if (yych <= '/') goto yy868; - if (yych <= '9') goto yy890; - if (yych <= ':') goto yy868; - goto yy874; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy868; - goto yy890; - } else { - if (yych <= '`') goto yy868; - if (yych <= 'z') goto yy890; - goto yy868; - } - } -} - + { + unsigned char yych; + yych = *p; + if (yych == '&') + goto yy752; + ++p; + yy751 : { return 0; } + yy752: + yych = *(marker = ++p); + if (yych <= '@') { + if (yych != '#') + goto yy751; + } else { + if (yych <= 'Z') + goto yy754; + if (yych <= '`') + goto yy751; + if (yych <= 'z') + goto yy754; + goto yy751; + } + yych = *++p; + if (yych <= 'W') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy755; + } else { + if (yych <= 'X') + goto yy756; + if (yych == 'x') + goto yy756; + } + yy753: + p = marker; + goto yy751; + yy754: + yych = *++p; + if (yych <= '@') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy757; + goto yy753; + } else { + if (yych <= 'Z') + goto yy757; + if (yych <= '`') + goto yy753; + if (yych <= 'z') + goto yy757; + goto yy753; + } + yy755: + yych = *++p; + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy758; + if (yych == ';') + goto yy759; + goto yy753; + yy756: + yych = *++p; + if (yych <= '@') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy760; + goto yy753; + } else { + if (yych <= 'F') + goto yy760; + if (yych <= '`') + goto yy753; + if (yych <= 'f') + goto yy760; + goto yy753; + } + yy757: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy761; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + goto yy761; + } else { + if (yych <= '`') + goto yy753; + if (yych <= 'z') + goto yy761; + goto yy753; + } + } + yy758: + yych = *++p; + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy762; + if (yych != ';') + goto yy753; + yy759: + ++p; + { return (bufsize_t)(p - start); } + yy760: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy763; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'F') { + if (yych <= '@') + goto yy753; + goto yy763; + } else { + if (yych <= '`') + goto yy753; + if (yych <= 'f') + goto yy763; + goto yy753; + } + } + yy761: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy764; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + goto yy764; + } else { + if (yych <= '`') + goto yy753; + if (yych <= 'z') + goto yy764; + goto yy753; + } + } + yy762: + yych = *++p; + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy765; + if (yych == ';') + goto yy759; + goto yy753; + yy763: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy766; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'F') { + if (yych <= '@') + goto yy753; + goto yy766; + } else { + if (yych <= '`') + goto yy753; + if (yych <= 'f') + goto yy766; + goto yy753; + } + } + yy764: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy767; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + goto yy767; + } else { + if (yych <= '`') + goto yy753; + if (yych <= 'z') + goto yy767; + goto yy753; + } + } + yy765: + yych = *++p; + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy768; + if (yych == ';') + goto yy759; + goto yy753; + yy766: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy769; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'F') { + if (yych <= '@') + goto yy753; + goto yy769; + } else { + if (yych <= '`') + goto yy753; + if (yych <= 'f') + goto yy769; + goto yy753; + } + } + yy767: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy770; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + goto yy770; + } else { + if (yych <= '`') + goto yy753; + if (yych <= 'z') + goto yy770; + goto yy753; + } + } + yy768: + yych = *++p; + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy771; + if (yych == ';') + goto yy759; + goto yy753; + yy769: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy772; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'F') { + if (yych <= '@') + goto yy753; + goto yy772; + } else { + if (yych <= '`') + goto yy753; + if (yych <= 'f') + goto yy772; + goto yy753; + } + } + yy770: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy773; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + goto yy773; + } else { + if (yych <= '`') + goto yy753; + if (yych <= 'z') + goto yy773; + goto yy753; + } + } + yy771: + yych = *++p; + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy774; + if (yych == ';') + goto yy759; + goto yy753; + yy772: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy774; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'F') { + if (yych <= '@') + goto yy753; + goto yy774; + } else { + if (yych <= '`') + goto yy753; + if (yych <= 'f') + goto yy774; + goto yy753; + } + } + yy773: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy775; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + goto yy775; + } else { + if (yych <= '`') + goto yy753; + if (yych <= 'z') + goto yy775; + goto yy753; + } + } + yy774: + yych = *++p; + if (yych == ';') + goto yy759; + goto yy753; + yy775: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy776; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + } else { + if (yych <= '`') + goto yy753; + if (yych >= '{') + goto yy753; + } + } + yy776: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy777; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + } else { + if (yych <= '`') + goto yy753; + if (yych >= '{') + goto yy753; + } + } + yy777: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy778; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + } else { + if (yych <= '`') + goto yy753; + if (yych >= '{') + goto yy753; + } + } + yy778: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy779; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + } else { + if (yych <= '`') + goto yy753; + if (yych >= '{') + goto yy753; + } + } + yy779: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy780; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + } else { + if (yych <= '`') + goto yy753; + if (yych >= '{') + goto yy753; + } + } + yy780: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy781; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + } else { + if (yych <= '`') + goto yy753; + if (yych >= '{') + goto yy753; + } + } + yy781: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy782; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + } else { + if (yych <= '`') + goto yy753; + if (yych >= '{') + goto yy753; + } + } + yy782: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy783; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + } else { + if (yych <= '`') + goto yy753; + if (yych >= '{') + goto yy753; + } + } + yy783: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy784; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + } else { + if (yych <= '`') + goto yy753; + if (yych >= '{') + goto yy753; + } + } + yy784: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy785; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + } else { + if (yych <= '`') + goto yy753; + if (yych >= '{') + goto yy753; + } + } + yy785: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy786; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + } else { + if (yych <= '`') + goto yy753; + if (yych >= '{') + goto yy753; + } + } + yy786: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy787; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + } else { + if (yych <= '`') + goto yy753; + if (yych >= '{') + goto yy753; + } + } + yy787: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy788; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + } else { + if (yych <= '`') + goto yy753; + if (yych >= '{') + goto yy753; + } + } + yy788: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy789; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + } else { + if (yych <= '`') + goto yy753; + if (yych >= '{') + goto yy753; + } + } + yy789: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy790; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + } else { + if (yych <= '`') + goto yy753; + if (yych >= '{') + goto yy753; + } + } + yy790: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy791; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + } else { + if (yych <= '`') + goto yy753; + if (yych >= '{') + goto yy753; + } + } + yy791: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy792; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + } else { + if (yych <= '`') + goto yy753; + if (yych >= '{') + goto yy753; + } + } + yy792: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy793; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + } else { + if (yych <= '`') + goto yy753; + if (yych >= '{') + goto yy753; + } + } + yy793: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy794; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + } else { + if (yych <= '`') + goto yy753; + if (yych >= '{') + goto yy753; + } + } + yy794: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy795; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + } else { + if (yych <= '`') + goto yy753; + if (yych >= '{') + goto yy753; + } + } + yy795: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy796; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + } else { + if (yych <= '`') + goto yy753; + if (yych >= '{') + goto yy753; + } + } + yy796: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy797; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + } else { + if (yych <= '`') + goto yy753; + if (yych >= '{') + goto yy753; + } + } + yy797: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy798; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + } else { + if (yych <= '`') + goto yy753; + if (yych >= '{') + goto yy753; + } + } + yy798: + yych = *++p; + if (yych <= ';') { + if (yych <= '/') + goto yy753; + if (yych <= '9') + goto yy774; + if (yych <= ':') + goto yy753; + goto yy759; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy753; + goto yy774; + } else { + if (yych <= '`') + goto yy753; + if (yych <= 'z') + goto yy774; + goto yy753; + } + } + } } // Returns positive value if a URL begins in a way that is potentially // dangerous, with javascript:, vbscript:, file:, or data:, otherwise 0. -bufsize_t _scan_dangerous_url(const unsigned char *p) -{ +bufsize_t _scan_dangerous_url(const unsigned char *p) { const unsigned char *marker = NULL; const unsigned char *start = p; -{ - unsigned char yych; - unsigned int yyaccept = 0; - yych = *p; - if (yych <= 'V') { - if (yych <= 'F') { - if (yych == 'D') goto yy919; - if (yych >= 'F') goto yy920; - } else { - if (yych == 'J') goto yy921; - if (yych >= 'V') goto yy922; - } - } else { - if (yych <= 'f') { - if (yych == 'd') goto yy919; - if (yych >= 'f') goto yy920; - } else { - if (yych <= 'j') { - if (yych >= 'j') goto yy921; - } else { - if (yych == 'v') goto yy922; - } - } - } - ++p; -yy918: - { return 0; } -yy919: - yyaccept = 0; - yych = *(marker = ++p); - if (yych == 'A') goto yy923; - if (yych == 'a') goto yy923; - goto yy918; -yy920: - yyaccept = 0; - yych = *(marker = ++p); - if (yych == 'I') goto yy925; - if (yych == 'i') goto yy925; - goto yy918; -yy921: - yyaccept = 0; - yych = *(marker = ++p); - if (yych == 'A') goto yy926; - if (yych == 'a') goto yy926; - goto yy918; -yy922: - yyaccept = 0; - yych = *(marker = ++p); - if (yych == 'B') goto yy927; - if (yych == 'b') goto yy927; - goto yy918; -yy923: - yych = *++p; - if (yych == 'T') goto yy928; - if (yych == 't') goto yy928; -yy924: - p = marker; - if (yyaccept == 0) { - goto yy918; - } else { - goto yy936; - } -yy925: - yych = *++p; - if (yych == 'L') goto yy929; - if (yych == 'l') goto yy929; - goto yy924; -yy926: - yych = *++p; - if (yych == 'V') goto yy930; - if (yych == 'v') goto yy930; - goto yy924; -yy927: - yych = *++p; - if (yych == 'S') goto yy931; - if (yych == 's') goto yy931; - goto yy924; -yy928: - yych = *++p; - if (yych == 'A') goto yy932; - if (yych == 'a') goto yy932; - goto yy924; -yy929: - yych = *++p; - if (yych == 'E') goto yy933; - if (yych == 'e') goto yy933; - goto yy924; -yy930: - yych = *++p; - if (yych == 'A') goto yy927; - if (yych == 'a') goto yy927; - goto yy924; -yy931: - yych = *++p; - if (yych == 'C') goto yy934; - if (yych == 'c') goto yy934; - goto yy924; -yy932: - yych = *++p; - if (yych == ':') goto yy935; - goto yy924; -yy933: - yych = *++p; - if (yych == ':') goto yy937; - goto yy924; -yy934: - yych = *++p; - if (yych == 'R') goto yy938; - if (yych == 'r') goto yy938; - goto yy924; -yy935: - yyaccept = 1; - yych = *(marker = ++p); - if (yych == 'I') goto yy939; - if (yych == 'i') goto yy939; -yy936: - { return (bufsize_t)(p - start); } -yy937: - ++p; - goto yy936; -yy938: - yych = *++p; - if (yych == 'I') goto yy940; - if (yych == 'i') goto yy940; - goto yy924; -yy939: - yych = *++p; - if (yych == 'M') goto yy941; - if (yych == 'm') goto yy941; - goto yy924; -yy940: - yych = *++p; - if (yych == 'P') goto yy942; - if (yych == 'p') goto yy942; - goto yy924; -yy941: - yych = *++p; - if (yych == 'A') goto yy943; - if (yych == 'a') goto yy943; - goto yy924; -yy942: - yych = *++p; - if (yych == 'T') goto yy933; - if (yych == 't') goto yy933; - goto yy924; -yy943: - yych = *++p; - if (yych == 'G') goto yy944; - if (yych != 'g') goto yy924; -yy944: - yych = *++p; - if (yych == 'E') goto yy945; - if (yych != 'e') goto yy924; -yy945: - yych = *++p; - if (yych != '/') goto yy924; - yych = *++p; - if (yych <= 'W') { - if (yych <= 'J') { - if (yych == 'G') goto yy947; - if (yych <= 'I') goto yy924; - goto yy948; - } else { - if (yych == 'P') goto yy949; - if (yych <= 'V') goto yy924; - goto yy950; - } - } else { - if (yych <= 'j') { - if (yych == 'g') goto yy947; - if (yych <= 'i') goto yy924; - goto yy948; - } else { - if (yych <= 'p') { - if (yych <= 'o') goto yy924; - goto yy949; - } else { - if (yych == 'w') goto yy950; - goto yy924; - } - } - } -yy947: - yych = *++p; - if (yych == 'I') goto yy951; - if (yych == 'i') goto yy951; - goto yy924; -yy948: - yych = *++p; - if (yych == 'P') goto yy952; - if (yych == 'p') goto yy952; - goto yy924; -yy949: - yych = *++p; - if (yych == 'N') goto yy953; - if (yych == 'n') goto yy953; - goto yy924; -yy950: - yych = *++p; - if (yych == 'E') goto yy954; - if (yych == 'e') goto yy954; - goto yy924; -yy951: - yych = *++p; - if (yych == 'F') goto yy955; - if (yych == 'f') goto yy955; - goto yy924; -yy952: - yych = *++p; - if (yych == 'E') goto yy953; - if (yych != 'e') goto yy924; -yy953: - yych = *++p; - if (yych == 'G') goto yy955; - if (yych == 'g') goto yy955; - goto yy924; -yy954: - yych = *++p; - if (yych == 'B') goto yy957; - if (yych == 'b') goto yy957; - goto yy924; -yy955: - ++p; - { return 0; } -yy957: - yych = *++p; - if (yych == 'P') goto yy955; - if (yych == 'p') goto yy955; - goto yy924; -} - + { + unsigned char yych; + unsigned int yyaccept = 0; + yych = *p; + if (yych <= 'V') { + if (yych <= 'F') { + if (yych == 'D') + goto yy801; + if (yych >= 'F') + goto yy802; + } else { + if (yych == 'J') + goto yy803; + if (yych >= 'V') + goto yy804; + } + } else { + if (yych <= 'f') { + if (yych == 'd') + goto yy801; + if (yych >= 'f') + goto yy802; + } else { + if (yych <= 'j') { + if (yych >= 'j') + goto yy803; + } else { + if (yych == 'v') + goto yy804; + } + } + } + ++p; + yy800 : { return 0; } + yy801: + yyaccept = 0; + yych = *(marker = ++p); + if (yych == 'A') + goto yy805; + if (yych == 'a') + goto yy805; + goto yy800; + yy802: + yyaccept = 0; + yych = *(marker = ++p); + if (yych == 'I') + goto yy807; + if (yych == 'i') + goto yy807; + goto yy800; + yy803: + yyaccept = 0; + yych = *(marker = ++p); + if (yych == 'A') + goto yy808; + if (yych == 'a') + goto yy808; + goto yy800; + yy804: + yyaccept = 0; + yych = *(marker = ++p); + if (yych == 'B') + goto yy809; + if (yych == 'b') + goto yy809; + goto yy800; + yy805: + yych = *++p; + if (yych == 'T') + goto yy810; + if (yych == 't') + goto yy810; + yy806: + p = marker; + if (yyaccept == 0) { + goto yy800; + } else { + goto yy818; + } + yy807: + yych = *++p; + if (yych == 'L') + goto yy811; + if (yych == 'l') + goto yy811; + goto yy806; + yy808: + yych = *++p; + if (yych == 'V') + goto yy812; + if (yych == 'v') + goto yy812; + goto yy806; + yy809: + yych = *++p; + if (yych == 'S') + goto yy813; + if (yych == 's') + goto yy813; + goto yy806; + yy810: + yych = *++p; + if (yych == 'A') + goto yy814; + if (yych == 'a') + goto yy814; + goto yy806; + yy811: + yych = *++p; + if (yych == 'E') + goto yy815; + if (yych == 'e') + goto yy815; + goto yy806; + yy812: + yych = *++p; + if (yych == 'A') + goto yy809; + if (yych == 'a') + goto yy809; + goto yy806; + yy813: + yych = *++p; + if (yych == 'C') + goto yy816; + if (yych == 'c') + goto yy816; + goto yy806; + yy814: + yych = *++p; + if (yych == ':') + goto yy817; + goto yy806; + yy815: + yych = *++p; + if (yych == ':') + goto yy819; + goto yy806; + yy816: + yych = *++p; + if (yych == 'R') + goto yy820; + if (yych == 'r') + goto yy820; + goto yy806; + yy817: + yyaccept = 1; + yych = *(marker = ++p); + if (yych == 'I') + goto yy821; + if (yych == 'i') + goto yy821; + yy818 : { return (bufsize_t)(p - start); } + yy819: + ++p; + goto yy818; + yy820: + yych = *++p; + if (yych == 'I') + goto yy822; + if (yych == 'i') + goto yy822; + goto yy806; + yy821: + yych = *++p; + if (yych == 'M') + goto yy823; + if (yych == 'm') + goto yy823; + goto yy806; + yy822: + yych = *++p; + if (yych == 'P') + goto yy824; + if (yych == 'p') + goto yy824; + goto yy806; + yy823: + yych = *++p; + if (yych == 'A') + goto yy825; + if (yych == 'a') + goto yy825; + goto yy806; + yy824: + yych = *++p; + if (yych == 'T') + goto yy815; + if (yych == 't') + goto yy815; + goto yy806; + yy825: + yych = *++p; + if (yych == 'G') + goto yy826; + if (yych != 'g') + goto yy806; + yy826: + yych = *++p; + if (yych == 'E') + goto yy827; + if (yych != 'e') + goto yy806; + yy827: + yych = *++p; + if (yych != '/') + goto yy806; + yych = *++p; + if (yych <= 'W') { + if (yych <= 'J') { + if (yych == 'G') + goto yy828; + if (yych <= 'I') + goto yy806; + goto yy829; + } else { + if (yych == 'P') + goto yy830; + if (yych <= 'V') + goto yy806; + goto yy831; + } + } else { + if (yych <= 'j') { + if (yych == 'g') + goto yy828; + if (yych <= 'i') + goto yy806; + goto yy829; + } else { + if (yych <= 'p') { + if (yych <= 'o') + goto yy806; + goto yy830; + } else { + if (yych == 'w') + goto yy831; + goto yy806; + } + } + } + yy828: + yych = *++p; + if (yych == 'I') + goto yy832; + if (yych == 'i') + goto yy832; + goto yy806; + yy829: + yych = *++p; + if (yych == 'P') + goto yy833; + if (yych == 'p') + goto yy833; + goto yy806; + yy830: + yych = *++p; + if (yych == 'N') + goto yy834; + if (yych == 'n') + goto yy834; + goto yy806; + yy831: + yych = *++p; + if (yych == 'E') + goto yy835; + if (yych == 'e') + goto yy835; + goto yy806; + yy832: + yych = *++p; + if (yych == 'F') + goto yy836; + if (yych == 'f') + goto yy836; + goto yy806; + yy833: + yych = *++p; + if (yych == 'E') + goto yy834; + if (yych != 'e') + goto yy806; + yy834: + yych = *++p; + if (yych == 'G') + goto yy836; + if (yych == 'g') + goto yy836; + goto yy806; + yy835: + yych = *++p; + if (yych == 'B') + goto yy837; + if (yych == 'b') + goto yy837; + goto yy806; + yy836: + ++p; + { return 0; } + yy837: + yych = *++p; + if (yych == 'P') + goto yy836; + if (yych == 'p') + goto yy836; + goto yy806; + } } // Scans a footnote definition opening. -bufsize_t _scan_footnote_definition(const unsigned char *p) -{ +bufsize_t _scan_footnote_definition(const unsigned char *p) { const unsigned char *marker = NULL; const unsigned char *start = p; -{ - unsigned char yych; - static const unsigned char yybm[] = { - 0, 64, 64, 64, 64, 64, 64, 64, - 64, 128, 0, 64, 64, 0, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 128, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 0, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 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, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - yych = *p; - if (yych == '[') goto yy962; - ++p; -yy961: - { return 0; } -yy962: - yych = *(marker = ++p); - if (yych != '^') goto yy961; - yych = *++p; - if (yych != ']') goto yy966; -yy964: - p = marker; - goto yy961; -yy965: - yych = *++p; -yy966: - if (yybm[0+yych] & 64) { - goto yy965; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= ' ') goto yy964; - if (yych <= ']') goto yy974; - goto yy964; - } else { - if (yych <= 0xDF) goto yy967; - if (yych <= 0xE0) goto yy968; - goto yy969; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy970; - if (yych <= 0xEF) goto yy969; - goto yy971; - } else { - if (yych <= 0xF3) goto yy972; - if (yych <= 0xF4) goto yy973; - goto yy964; - } - } -yy967: - yych = *++p; - if (yych <= 0x7F) goto yy964; - if (yych <= 0xBF) goto yy965; - goto yy964; -yy968: - yych = *++p; - if (yych <= 0x9F) goto yy964; - if (yych <= 0xBF) goto yy967; - goto yy964; -yy969: - yych = *++p; - if (yych <= 0x7F) goto yy964; - if (yych <= 0xBF) goto yy967; - goto yy964; -yy970: - yych = *++p; - if (yych <= 0x7F) goto yy964; - if (yych <= 0x9F) goto yy967; - goto yy964; -yy971: - yych = *++p; - if (yych <= 0x8F) goto yy964; - if (yych <= 0xBF) goto yy969; - goto yy964; -yy972: - yych = *++p; - if (yych <= 0x7F) goto yy964; - if (yych <= 0xBF) goto yy969; - goto yy964; -yy973: - yych = *++p; - if (yych <= 0x7F) goto yy964; - if (yych <= 0x8F) goto yy969; - goto yy964; -yy974: - yych = *++p; - if (yych != ':') goto yy964; -yy975: - yych = *++p; - if (yybm[0+yych] & 128) { - goto yy975; - } - { return (bufsize_t)(p - start); } -} - + { + unsigned char yych; + static const unsigned char yybm[] = { + 0, 64, 64, 64, 64, 64, 64, 64, 64, 128, 0, 64, 64, 0, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 128, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }; + yych = *p; + if (yych == '[') + goto yy840; + ++p; + yy839 : { return 0; } + yy840: + yych = *(marker = ++p); + if (yych != '^') + goto yy839; + yych = *++p; + if (yych != ']') + goto yy843; + yy841: + p = marker; + goto yy839; + yy842: + yych = *++p; + yy843: + if (yybm[0 + yych] & 64) { + goto yy842; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= ' ') + goto yy841; + if (yych <= ']') + goto yy851; + goto yy841; + } else { + if (yych <= 0xDF) + goto yy844; + if (yych <= 0xE0) + goto yy845; + goto yy846; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy847; + if (yych <= 0xEF) + goto yy846; + goto yy848; + } else { + if (yych <= 0xF3) + goto yy849; + if (yych <= 0xF4) + goto yy850; + goto yy841; + } + } + yy844: + yych = *++p; + if (yych <= 0x7F) + goto yy841; + if (yych <= 0xBF) + goto yy842; + goto yy841; + yy845: + yych = *++p; + if (yych <= 0x9F) + goto yy841; + if (yych <= 0xBF) + goto yy844; + goto yy841; + yy846: + yych = *++p; + if (yych <= 0x7F) + goto yy841; + if (yych <= 0xBF) + goto yy844; + goto yy841; + yy847: + yych = *++p; + if (yych <= 0x7F) + goto yy841; + if (yych <= 0x9F) + goto yy844; + goto yy841; + yy848: + yych = *++p; + if (yych <= 0x8F) + goto yy841; + if (yych <= 0xBF) + goto yy846; + goto yy841; + yy849: + yych = *++p; + if (yych <= 0x7F) + goto yy841; + if (yych <= 0xBF) + goto yy846; + goto yy841; + yy850: + yych = *++p; + if (yych <= 0x7F) + goto yy841; + if (yych <= 0x8F) + goto yy846; + goto yy841; + yy851: + yych = *++p; + if (yych != ':') + goto yy841; + yy852: + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy852; + } + { return (bufsize_t)(p - start); } + } } diff --git a/src/scanners.h b/src/scanners.h index 8861f8dd3..7e6a10aeb 100644 --- a/src/scanners.h +++ b/src/scanners.h @@ -15,6 +15,10 @@ bufsize_t _scan_autolink_uri(const unsigned char *p); bufsize_t _scan_autolink_email(const unsigned char *p); bufsize_t _scan_html_tag(const unsigned char *p); bufsize_t _scan_liberal_html_tag(const unsigned char *p); +bufsize_t _scan_html_comment(const unsigned char *p); +bufsize_t _scan_html_pi(const unsigned char *p); +bufsize_t _scan_html_declaration(const unsigned char *p); +bufsize_t _scan_html_cdata(const unsigned char *p); bufsize_t _scan_html_block_start(const unsigned char *p); bufsize_t _scan_html_block_start_7(const unsigned char *p); bufsize_t _scan_html_block_end_1(const unsigned char *p); @@ -37,6 +41,10 @@ bufsize_t _scan_footnote_definition(const unsigned char *p); #define scan_autolink_email(c, n) _scan_at(&_scan_autolink_email, c, n) #define scan_html_tag(c, n) _scan_at(&_scan_html_tag, c, n) #define scan_liberal_html_tag(c, n) _scan_at(&_scan_liberal_html_tag, c, n) +#define scan_html_comment(c, n) _scan_at(&_scan_html_comment, c, n) +#define scan_html_pi(c, n) _scan_at(&_scan_html_pi, c, n) +#define scan_html_declaration(c, n) _scan_at(&_scan_html_declaration, c, n) +#define scan_html_cdata(c, n) _scan_at(&_scan_html_cdata, c, n) #define scan_html_block_start(c, n) _scan_at(&_scan_html_block_start, c, n) #define scan_html_block_start_7(c, n) _scan_at(&_scan_html_block_start_7, c, n) #define scan_html_block_end_1(c, n) _scan_at(&_scan_html_block_end_1, c, n) diff --git a/src/scanners.re b/src/scanners.re index 241a10fda..ac4b9cf4c 100644 --- a/src/scanners.re +++ b/src/scanners.re @@ -37,7 +37,7 @@ bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c, tagname = [A-Za-z][A-Za-z0-9-]*; - blocktagname = 'address'|'article'|'aside'|'base'|'basefont'|'blockquote'|'body'|'caption'|'center'|'col'|'colgroup'|'dd'|'details'|'dialog'|'dir'|'div'|'dl'|'dt'|'fieldset'|'figcaption'|'figure'|'footer'|'form'|'frame'|'frameset'|'h1'|'h2'|'h3'|'h4'|'h5'|'h6'|'head'|'header'|'hr'|'html'|'iframe'|'legend'|'li'|'link'|'main'|'menu'|'menuitem'|'nav'|'noframes'|'ol'|'optgroup'|'option'|'p'|'param'|'section'|'title'|'summary'|'table'|'tbody'|'td'|'tfoot'|'th'|'thead'|'title'|'tr'|'track'|'ul'; + blocktagname = 'address'|'article'|'aside'|'base'|'basefont'|'blockquote'|'body'|'caption'|'center'|'col'|'colgroup'|'dd'|'details'|'dialog'|'dir'|'div'|'dl'|'dt'|'fieldset'|'figcaption'|'figure'|'footer'|'form'|'frame'|'frameset'|'h1'|'h2'|'h3'|'h4'|'h5'|'h6'|'head'|'header'|'hr'|'html'|'iframe'|'legend'|'li'|'link'|'main'|'menu'|'menuitem'|'nav'|'noframes'|'ol'|'optgroup'|'option'|'p'|'param'|'section'|'source'|'title'|'summary'|'table'|'tbody'|'td'|'tfoot'|'th'|'thead'|'title'|'tr'|'track'|'ul'; attributename = [a-zA-Z_:][a-zA-Z0-9:._-]*; @@ -54,16 +54,15 @@ bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c, opentag = tagname attribute* spacechar* [/]? [>]; closetag = [/] tagname spacechar* [>]; - htmlcomment = "!---->" | ("!--" ([-]? [^\x00>-]) ([-]? [^\x00-])* "-->"); + htmlcomment = "--" ([^\x00-]+ | "-" [^\x00-] | "--" [^\x00>])* "-->"; - processinginstruction = "?" ([^?>\x00]+ | [?][^>\x00] | [>])* "?>"; + processinginstruction = ([^?>\x00]+ | [?][^>\x00] | [>])+; - declaration = "!" [A-Z]+ spacechar+ [^>\x00]* ">"; + declaration = [A-Z]+ spacechar+ [^>\x00]*; - cdata = "![CDATA[" ([^\]\x00]+ | "]" [^\]\x00] | "]]" [^>\x00])* "]]>"; + cdata = "CDATA[" ([^\]\x00]+ | "]" [^\]\x00] | "]]" [^>\x00])*; - htmltag = opentag | closetag | htmlcomment | processinginstruction | - declaration | cdata; + htmltag = opentag | closetag; in_parens_nosp = [(] (reg_char|escaped_char|[\\])* [)]; @@ -133,6 +132,46 @@ bufsize_t _scan_liberal_html_tag(const unsigned char *p) */ } +bufsize_t _scan_html_comment(const unsigned char *p) +{ + const unsigned char *marker = NULL; + const unsigned char *start = p; +/*!re2c + htmlcomment { return (bufsize_t)(p - start); } + * { return 0; } +*/ +} + +bufsize_t _scan_html_pi(const unsigned char *p) +{ + const unsigned char *marker = NULL; + const unsigned char *start = p; +/*!re2c + processinginstruction { return (bufsize_t)(p - start); } + * { return 0; } +*/ +} + +bufsize_t _scan_html_declaration(const unsigned char *p) +{ + const unsigned char *marker = NULL; + const unsigned char *start = p; +/*!re2c + declaration { return (bufsize_t)(p - start); } + * { return 0; } +*/ +} + +bufsize_t _scan_html_cdata(const unsigned char *p) +{ + const unsigned char *marker = NULL; + const unsigned char *start = p; +/*!re2c + cdata { return (bufsize_t)(p - start); } + * { return 0; } +*/ +} + // Try to match an HTML block tag start line, returning // an integer code for the type of block (1-6, matching the spec). // #7 is handled by a separate function, below. @@ -140,7 +179,7 @@ bufsize_t _scan_html_block_start(const unsigned char *p) { const unsigned char *marker = NULL; /*!re2c - [<] ('script'|'pre'|'style') (spacechar | [>]) { return 1; } + [<] ('script'|'pre'|'textarea'|'style') (spacechar | [>]) { return 1; } '"; + htmlcomment = "-->" | "--->" | "--" ([^\x00-]+ | "-" [^\x00-] | "--" [^\x00>])+ "-->"; processinginstruction = ([^?>\x00]+ | [?][^>\x00] | [>])+; From 39ca0d9dba83478cc70f6cacb231409164803650 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Thu, 8 Sep 2022 10:50:03 -0700 Subject: [PATCH 10/60] Fixed HTML comment scanning. Need to handle this case: ` and -->`. Since the scanner finds the longest match, we had to move some of the logic outside of the scanner. --- src/inlines.c | 15 +- src/scanners.c | 7116 +++++++++++++++++++++++------------------------ src/scanners.re | 2 +- test/spec.txt | 48 +- 4 files changed, 3567 insertions(+), 3614 deletions(-) diff --git a/src/inlines.c b/src/inlines.c index 004878d52..f148bad7c 100644 --- a/src/inlines.c +++ b/src/inlines.c @@ -909,10 +909,17 @@ static cmark_node *handle_pointy_brace(subject *subj, int options) { int c = subj->input.data[subj->pos]; if (c == '!') { c = subj->input.data[subj->pos+1]; - if (c == '-') { - matchlen = scan_html_comment(&subj->input, subj->pos + 1); - if (matchlen > 0) - matchlen += 1; // prefix "input.data[subj->pos+2] == '-') { + if (subj->input.data[subj->pos+3] == '>') { + matchlen = 4; + } else if (subj->input.data[subj->pos+3] == '-' && + subj->input.data[subj->pos+4] == '>') { + matchlen = 5; + } else { + matchlen = scan_html_comment(&subj->input, subj->pos + 1); + if (matchlen > 0) + matchlen += 1; // prefix "<" + } } else if (c == '[') { if ((subj->flags & FLAG_SKIP_HTML_CDATA) == 0) { matchlen = scan_html_cdata(&subj->input, subj->pos + 2); diff --git a/src/scanners.c b/src/scanners.c index bac8dd319..19720601d 100644 --- a/src/scanners.c +++ b/src/scanners.c @@ -5676,7 +5676,6 @@ bufsize_t _scan_html_comment(const unsigned char *p) { { unsigned char yych; - unsigned int yyaccept = 0; static const unsigned char yybm[] = { 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, @@ -5704,200 +5703,161 @@ bufsize_t _scan_html_comment(const unsigned char *p) { ++p; yy224 : { return 0; } yy225: - yyaccept = 0; yych = *(marker = ++p); if (yych != '-') goto yy224; - yych = *++p; - if (yych == '-') - goto yy229; - if (yych == '>') - goto yy230; - goto yy228; yy226: - p = marker; - if (yyaccept == 0) { - goto yy224; + yych = *++p; + if (yybm[0 + yych] & 128) { + goto yy226; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= 0x00) + goto yy227; + if (yych <= '-') + goto yy228; + } else { + if (yych <= 0xDF) + goto yy229; + if (yych <= 0xE0) + goto yy230; + goto yy231; + } } else { - goto yy231; + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy232; + if (yych <= 0xEF) + goto yy231; + goto yy233; + } else { + if (yych <= 0xF3) + goto yy234; + if (yych <= 0xF4) + goto yy235; + } } yy227: - yych = *++p; + p = marker; + goto yy224; yy228: + yych = *++p; if (yybm[0 + yych] & 128) { - goto yy227; + goto yy226; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x00) - goto yy226; + goto yy227; if (yych <= '-') - goto yy239; - goto yy226; + goto yy236; + goto yy227; } else { if (yych <= 0xDF) - goto yy232; + goto yy229; if (yych <= 0xE0) - goto yy233; - goto yy234; + goto yy230; + goto yy231; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy235; + goto yy232; if (yych <= 0xEF) - goto yy234; - goto yy236; + goto yy231; + goto yy233; } else { if (yych <= 0xF3) - goto yy237; + goto yy234; if (yych <= 0xF4) - goto yy238; - goto yy226; + goto yy235; + goto yy227; } } yy229: - yych = *++p; - if (yych == '-') - goto yy240; - if (yych != '>') - goto yy228; - yy230: - yyaccept = 1; - yych = *(marker = ++p); - if (yych <= 0x00) - goto yy231; - if (yych <= 0x7F) - goto yy228; - if (yych <= 0xC1) - goto yy231; - if (yych <= 0xF4) - goto yy228; - yy231 : { return (bufsize_t)(p - start); } - yy232: yych = *++p; if (yych <= 0x7F) - goto yy226; - if (yych <= 0xBF) goto yy227; - goto yy226; - yy233: + if (yych <= 0xBF) + goto yy226; + goto yy227; + yy230: yych = *++p; if (yych <= 0x9F) - goto yy226; + goto yy227; if (yych <= 0xBF) - goto yy232; - goto yy226; - yy234: + goto yy229; + goto yy227; + yy231: yych = *++p; if (yych <= 0x7F) - goto yy226; + goto yy227; if (yych <= 0xBF) - goto yy232; - goto yy226; - yy235: + goto yy229; + goto yy227; + yy232: yych = *++p; if (yych <= 0x7F) - goto yy226; + goto yy227; if (yych <= 0x9F) - goto yy232; - goto yy226; - yy236: + goto yy229; + goto yy227; + yy233: yych = *++p; if (yych <= 0x8F) - goto yy226; + goto yy227; if (yych <= 0xBF) - goto yy234; - goto yy226; - yy237: + goto yy231; + goto yy227; + yy234: yych = *++p; if (yych <= 0x7F) - goto yy226; + goto yy227; if (yych <= 0xBF) - goto yy234; - goto yy226; - yy238: + goto yy231; + goto yy227; + yy235: yych = *++p; if (yych <= 0x7F) - goto yy226; - if (yych <= 0x8F) - goto yy234; - goto yy226; - yy239: - yych = *++p; - if (yybm[0 + yych] & 128) { - goto yy227; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x00) - goto yy226; - if (yych <= '-') - goto yy241; - goto yy226; - } else { - if (yych <= 0xDF) - goto yy232; - if (yych <= 0xE0) - goto yy233; - goto yy234; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy235; - if (yych <= 0xEF) - goto yy234; - goto yy236; - } else { - if (yych <= 0xF3) - goto yy237; - if (yych <= 0xF4) - goto yy238; - goto yy226; - } - } - yy240: - yych = *++p; - if (yych == '-') goto yy227; - if (yych == '>') - goto yy226; - goto yy228; - yy241: + if (yych <= 0x8F) + goto yy231; + goto yy227; + yy236: yych = *++p; if (yych <= 0xE0) { if (yych <= '>') { if (yych <= 0x00) - goto yy226; - if (yych <= '=') goto yy227; + if (yych <= '=') + goto yy226; } else { if (yych <= 0x7F) - goto yy227; - if (yych <= 0xC1) goto yy226; + if (yych <= 0xC1) + goto yy227; if (yych <= 0xDF) - goto yy232; - goto yy233; + goto yy229; + goto yy230; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy235; - goto yy234; + goto yy232; + goto yy231; } else { if (yych <= 0xF0) - goto yy236; + goto yy233; if (yych <= 0xF3) - goto yy237; + goto yy234; if (yych <= 0xF4) - goto yy238; - goto yy226; + goto yy235; + goto yy227; } } ++p; - goto yy231; + { return (bufsize_t)(p - start); } } } @@ -5931,235 +5891,235 @@ bufsize_t _scan_html_pi(const unsigned char *p) { }; yych = *p; if (yybm[0 + yych] & 128) { - goto yy245; + goto yy240; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x00) - goto yy243; + goto yy238; if (yych <= '?') - goto yy248; + goto yy243; } else { if (yych <= 0xDF) - goto yy249; + goto yy244; if (yych <= 0xE0) - goto yy250; - goto yy251; + goto yy245; + goto yy246; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy252; + goto yy247; if (yych <= 0xEF) - goto yy251; - goto yy253; + goto yy246; + goto yy248; } else { if (yych <= 0xF3) - goto yy254; + goto yy249; if (yych <= 0xF4) - goto yy255; + goto yy250; } } - yy243: + yy238: ++p; - yy244 : { return 0; } - yy245: + yy239 : { return 0; } + yy240: yyaccept = 0; yych = *(marker = ++p); - yy246: + yy241: if (yybm[0 + yych] & 128) { - goto yy245; + goto yy240; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x00) - goto yy247; + goto yy242; if (yych <= '?') - goto yy256; + goto yy251; } else { if (yych <= 0xDF) - goto yy258; + goto yy253; if (yych <= 0xE0) - goto yy259; - goto yy260; + goto yy254; + goto yy255; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy261; + goto yy256; if (yych <= 0xEF) - goto yy260; - goto yy262; + goto yy255; + goto yy257; } else { if (yych <= 0xF3) - goto yy263; + goto yy258; if (yych <= 0xF4) - goto yy264; + goto yy259; } } - yy247 : { return (bufsize_t)(p - start); } - yy248: + yy242 : { return (bufsize_t)(p - start); } + yy243: yyaccept = 1; yych = *(marker = ++p); if (yych <= '?') { if (yych <= 0x00) - goto yy244; + goto yy239; if (yych <= '=') - goto yy246; + goto yy241; if (yych <= '>') - goto yy244; - goto yy245; + goto yy239; + goto yy240; } else { if (yych <= 0x7F) - goto yy246; + goto yy241; if (yych <= 0xC1) - goto yy244; + goto yy239; if (yych <= 0xF4) - goto yy246; - goto yy244; + goto yy241; + goto yy239; } - yy249: + yy244: yych = *++p; if (yych <= 0x7F) - goto yy244; + goto yy239; if (yych <= 0xBF) - goto yy245; - goto yy244; - yy250: + goto yy240; + goto yy239; + yy245: yyaccept = 1; yych = *(marker = ++p); if (yych <= 0x9F) - goto yy244; + goto yy239; if (yych <= 0xBF) - goto yy258; - goto yy244; - yy251: + goto yy253; + goto yy239; + yy246: yyaccept = 1; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy244; + goto yy239; if (yych <= 0xBF) - goto yy258; - goto yy244; - yy252: + goto yy253; + goto yy239; + yy247: yyaccept = 1; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy244; + goto yy239; if (yych <= 0x9F) - goto yy258; - goto yy244; - yy253: + goto yy253; + goto yy239; + yy248: yyaccept = 1; yych = *(marker = ++p); if (yych <= 0x8F) - goto yy244; + goto yy239; if (yych <= 0xBF) - goto yy260; - goto yy244; - yy254: + goto yy255; + goto yy239; + yy249: yyaccept = 1; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy244; + goto yy239; if (yych <= 0xBF) - goto yy260; - goto yy244; - yy255: + goto yy255; + goto yy239; + yy250: yyaccept = 1; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy244; + goto yy239; if (yych <= 0x8F) - goto yy260; - goto yy244; - yy256: + goto yy255; + goto yy239; + yy251: yych = *++p; if (yych <= 0xE0) { if (yych <= '>') { if (yych <= 0x00) - goto yy257; + goto yy252; if (yych <= '=') - goto yy245; + goto yy240; } else { if (yych <= 0x7F) - goto yy245; + goto yy240; if (yych <= 0xC1) - goto yy257; + goto yy252; if (yych <= 0xDF) - goto yy258; - goto yy259; + goto yy253; + goto yy254; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy261; - goto yy260; + goto yy256; + goto yy255; } else { if (yych <= 0xF0) - goto yy262; + goto yy257; if (yych <= 0xF3) - goto yy263; + goto yy258; if (yych <= 0xF4) - goto yy264; + goto yy259; } } - yy257: + yy252: p = marker; if (yyaccept == 0) { - goto yy247; + goto yy242; } else { - goto yy244; + goto yy239; } - yy258: + yy253: yych = *++p; if (yych <= 0x7F) - goto yy257; + goto yy252; if (yych <= 0xBF) - goto yy245; - goto yy257; - yy259: + goto yy240; + goto yy252; + yy254: yych = *++p; if (yych <= 0x9F) - goto yy257; + goto yy252; if (yych <= 0xBF) - goto yy258; - goto yy257; - yy260: + goto yy253; + goto yy252; + yy255: yych = *++p; if (yych <= 0x7F) - goto yy257; + goto yy252; if (yych <= 0xBF) - goto yy258; - goto yy257; - yy261: + goto yy253; + goto yy252; + yy256: yych = *++p; if (yych <= 0x7F) - goto yy257; + goto yy252; if (yych <= 0x9F) - goto yy258; - goto yy257; - yy262: + goto yy253; + goto yy252; + yy257: yych = *++p; if (yych <= 0x8F) - goto yy257; + goto yy252; if (yych <= 0xBF) - goto yy260; - goto yy257; - yy263: + goto yy255; + goto yy252; + yy258: yych = *++p; if (yych <= 0x7F) - goto yy257; + goto yy252; if (yych <= 0xBF) - goto yy260; - goto yy257; - yy264: + goto yy255; + goto yy252; + yy259: yych = *++p; if (yych <= 0x7F) - goto yy257; + goto yy252; if (yych <= 0x8F) - goto yy260; - goto yy257; + goto yy255; + goto yy252; } } @@ -6193,121 +6153,121 @@ bufsize_t _scan_html_declaration(const unsigned char *p) { }; yych = *p; if (yych <= '@') - goto yy266; + goto yy261; if (yych <= 'Z') - goto yy268; - yy266: + goto yy263; + yy261: ++p; - yy267 : { return 0; } - yy268: + yy262 : { return 0; } + yy263: yyaccept = 0; yych = *(marker = ++p); if (yybm[0 + yych] & 128) { - goto yy271; + goto yy266; } if (yych <= 0x08) - goto yy267; + goto yy262; if (yych <= '\r') - goto yy269; + goto yy264; if (yych != ' ') - goto yy267; - yy269: + goto yy262; + yy264: yyaccept = 1; yych = *(marker = ++p); if (yybm[0 + yych] & 64) { - goto yy269; + goto yy264; } if (yych <= 0xED) { if (yych <= 0xDF) { if (yych >= 0xC2) - goto yy273; + goto yy268; } else { if (yych <= 0xE0) - goto yy274; + goto yy269; if (yych <= 0xEC) - goto yy275; - goto yy276; + goto yy270; + goto yy271; } } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy275; - goto yy277; + goto yy270; + goto yy272; } else { if (yych <= 0xF3) - goto yy278; + goto yy273; if (yych <= 0xF4) - goto yy279; + goto yy274; } } - yy270 : { return (bufsize_t)(p - start); } - yy271: + yy265 : { return (bufsize_t)(p - start); } + yy266: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy271; + goto yy266; } if (yych <= 0x08) - goto yy272; + goto yy267; if (yych <= '\r') - goto yy269; + goto yy264; if (yych == ' ') - goto yy269; - yy272: + goto yy264; + yy267: p = marker; if (yyaccept == 0) { - goto yy267; + goto yy262; } else { - goto yy270; + goto yy265; } - yy273: + yy268: yych = *++p; if (yych <= 0x7F) - goto yy272; + goto yy267; if (yych <= 0xBF) - goto yy269; - goto yy272; - yy274: + goto yy264; + goto yy267; + yy269: yych = *++p; if (yych <= 0x9F) - goto yy272; + goto yy267; if (yych <= 0xBF) - goto yy273; - goto yy272; - yy275: + goto yy268; + goto yy267; + yy270: yych = *++p; if (yych <= 0x7F) - goto yy272; + goto yy267; if (yych <= 0xBF) - goto yy273; - goto yy272; - yy276: + goto yy268; + goto yy267; + yy271: yych = *++p; if (yych <= 0x7F) - goto yy272; + goto yy267; if (yych <= 0x9F) - goto yy273; - goto yy272; - yy277: + goto yy268; + goto yy267; + yy272: yych = *++p; if (yych <= 0x8F) - goto yy272; + goto yy267; if (yych <= 0xBF) - goto yy275; - goto yy272; - yy278: + goto yy270; + goto yy267; + yy273: yych = *++p; if (yych <= 0x7F) - goto yy272; + goto yy267; if (yych <= 0xBF) - goto yy275; - goto yy272; - yy279: + goto yy270; + goto yy267; + yy274: yych = *++p; if (yych <= 0x7F) - goto yy272; + goto yy267; if (yych <= 0x8F) - goto yy275; - goto yy272; + goto yy270; + goto yy267; } } @@ -6341,195 +6301,195 @@ bufsize_t _scan_html_cdata(const unsigned char *p) { }; yych = *p; if (yych == 'C') - goto yy282; + goto yy277; if (yych == 'c') - goto yy282; + goto yy277; ++p; - yy281 : { return 0; } - yy282: + yy276 : { return 0; } + yy277: yyaccept = 0; yych = *(marker = ++p); if (yych == 'D') - goto yy283; + goto yy278; if (yych != 'd') - goto yy281; - yy283: + goto yy276; + yy278: yych = *++p; if (yych == 'A') - goto yy285; + goto yy280; if (yych == 'a') - goto yy285; - yy284: + goto yy280; + yy279: p = marker; if (yyaccept == 0) { - goto yy281; + goto yy276; } else { - goto yy289; + goto yy284; } - yy285: + yy280: yych = *++p; if (yych == 'T') - goto yy286; + goto yy281; if (yych != 't') - goto yy284; - yy286: + goto yy279; + yy281: yych = *++p; if (yych == 'A') - goto yy287; + goto yy282; if (yych != 'a') - goto yy284; - yy287: + goto yy279; + yy282: yych = *++p; if (yych != '[') - goto yy284; - yy288: + goto yy279; + yy283: yyaccept = 1; yych = *(marker = ++p); if (yybm[0 + yych] & 128) { - goto yy288; + goto yy283; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x00) - goto yy289; + goto yy284; if (yych <= ']') - goto yy290; + goto yy285; } else { if (yych <= 0xDF) - goto yy291; + goto yy286; if (yych <= 0xE0) - goto yy292; - goto yy293; + goto yy287; + goto yy288; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy294; + goto yy289; if (yych <= 0xEF) - goto yy293; - goto yy295; + goto yy288; + goto yy290; } else { if (yych <= 0xF3) - goto yy296; + goto yy291; if (yych <= 0xF4) - goto yy297; + goto yy292; } } - yy289 : { return (bufsize_t)(p - start); } - yy290: + yy284 : { return (bufsize_t)(p - start); } + yy285: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy288; + goto yy283; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x00) - goto yy284; + goto yy279; if (yych <= ']') - goto yy298; - goto yy284; + goto yy293; + goto yy279; } else { if (yych <= 0xDF) - goto yy291; + goto yy286; if (yych <= 0xE0) - goto yy292; - goto yy293; + goto yy287; + goto yy288; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy294; + goto yy289; if (yych <= 0xEF) - goto yy293; - goto yy295; + goto yy288; + goto yy290; } else { if (yych <= 0xF3) - goto yy296; + goto yy291; if (yych <= 0xF4) - goto yy297; - goto yy284; + goto yy292; + goto yy279; } } - yy291: + yy286: yych = *++p; if (yych <= 0x7F) - goto yy284; + goto yy279; if (yych <= 0xBF) - goto yy288; - goto yy284; - yy292: + goto yy283; + goto yy279; + yy287: yych = *++p; if (yych <= 0x9F) - goto yy284; + goto yy279; if (yych <= 0xBF) - goto yy291; - goto yy284; - yy293: + goto yy286; + goto yy279; + yy288: yych = *++p; if (yych <= 0x7F) - goto yy284; + goto yy279; if (yych <= 0xBF) - goto yy291; - goto yy284; - yy294: + goto yy286; + goto yy279; + yy289: yych = *++p; if (yych <= 0x7F) - goto yy284; + goto yy279; if (yych <= 0x9F) - goto yy291; - goto yy284; - yy295: + goto yy286; + goto yy279; + yy290: yych = *++p; if (yych <= 0x8F) - goto yy284; + goto yy279; if (yych <= 0xBF) - goto yy293; - goto yy284; - yy296: + goto yy288; + goto yy279; + yy291: yych = *++p; if (yych <= 0x7F) - goto yy284; + goto yy279; if (yych <= 0xBF) - goto yy293; - goto yy284; - yy297: + goto yy288; + goto yy279; + yy292: yych = *++p; if (yych <= 0x7F) - goto yy284; + goto yy279; if (yych <= 0x8F) - goto yy293; - goto yy284; - yy298: + goto yy288; + goto yy279; + yy293: yych = *++p; if (yych <= 0xE0) { if (yych <= '>') { if (yych <= 0x00) - goto yy284; + goto yy279; if (yych <= '=') - goto yy288; - goto yy284; + goto yy283; + goto yy279; } else { if (yych <= 0x7F) - goto yy288; + goto yy283; if (yych <= 0xC1) - goto yy284; + goto yy279; if (yych <= 0xDF) - goto yy291; - goto yy292; + goto yy286; + goto yy287; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy294; - goto yy293; + goto yy289; + goto yy288; } else { if (yych <= 0xF0) - goto yy295; + goto yy290; if (yych <= 0xF3) - goto yy296; + goto yy291; if (yych <= 0xF4) - goto yy297; - goto yy284; + goto yy292; + goto yy279; } } } @@ -6545,216 +6505,216 @@ bufsize_t _scan_html_block_start(const unsigned char *p) { unsigned char yych; yych = *p; if (yych == '<') - goto yy301; + goto yy296; ++p; - yy300 : { return 0; } - yy301: + yy295 : { return 0; } + yy296: yych = *(marker = ++p); switch (yych) { case '!': - goto yy302; + goto yy297; case '/': - goto yy304; + goto yy299; case '?': - goto yy305; + goto yy300; case 'A': case 'a': - goto yy306; + goto yy301; case 'B': case 'b': - goto yy307; + goto yy302; case 'C': case 'c': - goto yy308; + goto yy303; case 'D': case 'd': - goto yy309; + goto yy304; case 'F': case 'f': - goto yy310; + goto yy305; case 'H': case 'h': - goto yy311; + goto yy306; case 'I': case 'i': - goto yy312; + goto yy307; case 'L': case 'l': - goto yy313; + goto yy308; case 'M': case 'm': - goto yy314; + goto yy309; case 'N': case 'n': - goto yy315; + goto yy310; case 'O': case 'o': - goto yy316; + goto yy311; case 'P': case 'p': - goto yy317; + goto yy312; case 'S': case 's': - goto yy318; + goto yy313; case 'T': case 't': - goto yy319; + goto yy314; case 'U': case 'u': - goto yy320; + goto yy315; default: - goto yy300; + goto yy295; } - yy302: + yy297: yych = *++p; if (yych <= '@') { if (yych == '-') - goto yy321; + goto yy316; } else { if (yych <= 'Z') - goto yy322; + goto yy317; if (yych <= '[') - goto yy323; + goto yy318; } - yy303: + yy298: p = marker; - goto yy300; - yy304: + goto yy295; + yy299: yych = *++p; switch (yych) { case 'A': case 'a': - goto yy306; + goto yy301; case 'B': case 'b': - goto yy307; + goto yy302; case 'C': case 'c': - goto yy308; + goto yy303; case 'D': case 'd': - goto yy309; + goto yy304; case 'F': case 'f': - goto yy310; + goto yy305; case 'H': case 'h': - goto yy311; + goto yy306; case 'I': case 'i': - goto yy312; + goto yy307; case 'L': case 'l': - goto yy313; + goto yy308; case 'M': case 'm': - goto yy314; + goto yy309; case 'N': case 'n': - goto yy315; + goto yy310; case 'O': case 'o': - goto yy316; + goto yy311; case 'P': case 'p': - goto yy324; + goto yy319; case 'S': case 's': - goto yy325; + goto yy320; case 'T': case 't': - goto yy326; + goto yy321; case 'U': case 'u': - goto yy320; + goto yy315; default: - goto yy303; + goto yy298; } - yy305: + yy300: ++p; { return 3; } - yy306: + yy301: yych = *++p; if (yych <= 'S') { if (yych <= 'D') { if (yych <= 'C') - goto yy303; - goto yy327; + goto yy298; + goto yy322; } else { if (yych <= 'Q') - goto yy303; + goto yy298; if (yych <= 'R') - goto yy328; - goto yy329; + goto yy323; + goto yy324; } } else { if (yych <= 'q') { if (yych == 'd') - goto yy327; - goto yy303; + goto yy322; + goto yy298; } else { if (yych <= 'r') - goto yy328; + goto yy323; if (yych <= 's') - goto yy329; - goto yy303; + goto yy324; + goto yy298; } } - yy307: + yy302: yych = *++p; if (yych <= 'O') { if (yych <= 'K') { if (yych == 'A') - goto yy330; - goto yy303; + goto yy325; + goto yy298; } else { if (yych <= 'L') - goto yy331; + goto yy326; if (yych <= 'N') - goto yy303; - goto yy332; + goto yy298; + goto yy327; } } else { if (yych <= 'k') { if (yych == 'a') - goto yy330; - goto yy303; + goto yy325; + goto yy298; } else { if (yych <= 'l') - goto yy331; + goto yy326; if (yych == 'o') - goto yy332; - goto yy303; + goto yy327; + goto yy298; } } - yy308: + yy303: yych = *++p; if (yych <= 'O') { if (yych <= 'D') { if (yych == 'A') - goto yy333; - goto yy303; + goto yy328; + goto yy298; } else { if (yych <= 'E') - goto yy334; + goto yy329; if (yych <= 'N') - goto yy303; - goto yy335; + goto yy298; + goto yy330; } } else { if (yych <= 'd') { if (yych == 'a') - goto yy333; - goto yy303; + goto yy328; + goto yy298; } else { if (yych <= 'e') - goto yy334; + goto yy329; if (yych == 'o') - goto yy335; - goto yy303; + goto yy330; + goto yy298; } } - yy309: + yy304: yych = *++p; switch (yych) { case 'D': @@ -6763,1541 +6723,1541 @@ bufsize_t _scan_html_block_start(const unsigned char *p) { case 'd': case 'l': case 't': - goto yy336; + goto yy331; case 'E': case 'e': - goto yy337; + goto yy332; case 'I': case 'i': - goto yy338; + goto yy333; default: - goto yy303; + goto yy298; } - yy310: + yy305: yych = *++p; if (yych <= 'R') { if (yych <= 'N') { if (yych == 'I') - goto yy339; - goto yy303; + goto yy334; + goto yy298; } else { if (yych <= 'O') - goto yy340; + goto yy335; if (yych <= 'Q') - goto yy303; - goto yy341; + goto yy298; + goto yy336; } } else { if (yych <= 'n') { if (yych == 'i') - goto yy339; - goto yy303; + goto yy334; + goto yy298; } else { if (yych <= 'o') - goto yy340; + goto yy335; if (yych == 'r') - goto yy341; - goto yy303; + goto yy336; + goto yy298; } } - yy311: + yy306: yych = *++p; if (yych <= 'S') { if (yych <= 'D') { if (yych <= '0') - goto yy303; + goto yy298; if (yych <= '6') - goto yy336; - goto yy303; + goto yy331; + goto yy298; } else { if (yych <= 'E') - goto yy342; + goto yy337; if (yych == 'R') - goto yy336; - goto yy303; + goto yy331; + goto yy298; } } else { if (yych <= 'q') { if (yych <= 'T') - goto yy343; + goto yy338; if (yych == 'e') - goto yy342; - goto yy303; + goto yy337; + goto yy298; } else { if (yych <= 'r') - goto yy336; + goto yy331; if (yych == 't') - goto yy343; - goto yy303; + goto yy338; + goto yy298; } } - yy312: + yy307: yych = *++p; if (yych == 'F') - goto yy344; + goto yy339; if (yych == 'f') - goto yy344; - goto yy303; - yy313: + goto yy339; + goto yy298; + yy308: yych = *++p; if (yych <= 'I') { if (yych == 'E') - goto yy345; + goto yy340; if (yych <= 'H') - goto yy303; - goto yy346; + goto yy298; + goto yy341; } else { if (yych <= 'e') { if (yych <= 'd') - goto yy303; - goto yy345; + goto yy298; + goto yy340; } else { if (yych == 'i') - goto yy346; - goto yy303; + goto yy341; + goto yy298; } } - yy314: + yy309: yych = *++p; if (yych <= 'E') { if (yych == 'A') - goto yy347; + goto yy342; if (yych <= 'D') - goto yy303; - goto yy348; + goto yy298; + goto yy343; } else { if (yych <= 'a') { if (yych <= '`') - goto yy303; - goto yy347; + goto yy298; + goto yy342; } else { if (yych == 'e') - goto yy348; - goto yy303; + goto yy343; + goto yy298; } } - yy315: + yy310: yych = *++p; if (yych <= 'O') { if (yych == 'A') - goto yy349; + goto yy344; if (yych <= 'N') - goto yy303; - goto yy350; + goto yy298; + goto yy345; } else { if (yych <= 'a') { if (yych <= '`') - goto yy303; - goto yy349; + goto yy298; + goto yy344; } else { if (yych == 'o') - goto yy350; - goto yy303; + goto yy345; + goto yy298; } } - yy316: + yy311: yych = *++p; if (yych <= 'P') { if (yych == 'L') - goto yy336; + goto yy331; if (yych <= 'O') - goto yy303; - goto yy351; + goto yy298; + goto yy346; } else { if (yych <= 'l') { if (yych <= 'k') - goto yy303; - goto yy336; + goto yy298; + goto yy331; } else { if (yych == 'p') - goto yy351; - goto yy303; + goto yy346; + goto yy298; } } - yy317: + yy312: yych = *++p; if (yych <= '>') { if (yych <= ' ') { if (yych <= 0x08) - goto yy303; + goto yy298; if (yych <= '\r') - goto yy352; + goto yy347; if (yych <= 0x1F) - goto yy303; - goto yy352; + goto yy298; + goto yy347; } else { if (yych == '/') - goto yy353; + goto yy348; if (yych <= '=') - goto yy303; - goto yy352; + goto yy298; + goto yy347; } } else { if (yych <= 'R') { if (yych == 'A') - goto yy354; + goto yy349; if (yych <= 'Q') - goto yy303; - goto yy355; + goto yy298; + goto yy350; } else { if (yych <= 'a') { if (yych <= '`') - goto yy303; - goto yy354; + goto yy298; + goto yy349; } else { if (yych == 'r') - goto yy355; - goto yy303; + goto yy350; + goto yy298; } } } - yy318: + yy313: yych = *++p; switch (yych) { case 'C': case 'c': - goto yy356; + goto yy351; case 'E': case 'e': - goto yy357; + goto yy352; case 'O': case 'o': - goto yy358; + goto yy353; case 'T': case 't': - goto yy359; + goto yy354; case 'U': case 'u': - goto yy360; + goto yy355; default: - goto yy303; + goto yy298; } - yy319: + yy314: yych = *++p; switch (yych) { case 'A': case 'a': - goto yy361; + goto yy356; case 'B': case 'b': - goto yy362; + goto yy357; case 'D': case 'd': - goto yy336; + goto yy331; case 'E': case 'e': - goto yy363; + goto yy358; case 'F': case 'f': - goto yy364; + goto yy359; case 'H': case 'h': - goto yy365; + goto yy360; case 'I': case 'i': - goto yy366; + goto yy361; case 'R': case 'r': - goto yy367; + goto yy362; default: - goto yy303; + goto yy298; } - yy320: + yy315: yych = *++p; if (yych == 'L') - goto yy336; + goto yy331; if (yych == 'l') - goto yy336; - goto yy303; - yy321: + goto yy331; + goto yy298; + yy316: yych = *++p; if (yych == '-') - goto yy368; - goto yy303; - yy322: + goto yy363; + goto yy298; + yy317: ++p; { return 4; } - yy323: + yy318: yych = *++p; if (yych == 'C') - goto yy369; + goto yy364; if (yych == 'c') - goto yy369; - goto yy303; - yy324: + goto yy364; + goto yy298; + yy319: yych = *++p; if (yych <= '/') { if (yych <= 0x1F) { if (yych <= 0x08) - goto yy303; + goto yy298; if (yych <= '\r') - goto yy352; - goto yy303; + goto yy347; + goto yy298; } else { if (yych <= ' ') - goto yy352; + goto yy347; if (yych <= '.') - goto yy303; - goto yy353; + goto yy298; + goto yy348; } } else { if (yych <= '@') { if (yych == '>') - goto yy352; - goto yy303; + goto yy347; + goto yy298; } else { if (yych <= 'A') - goto yy354; + goto yy349; if (yych == 'a') - goto yy354; - goto yy303; + goto yy349; + goto yy298; } } - yy325: + yy320: yych = *++p; if (yych <= 'U') { if (yych <= 'N') { if (yych == 'E') - goto yy357; - goto yy303; + goto yy352; + goto yy298; } else { if (yych <= 'O') - goto yy358; + goto yy353; if (yych <= 'T') - goto yy303; - goto yy360; + goto yy298; + goto yy355; } } else { if (yych <= 'n') { if (yych == 'e') - goto yy357; - goto yy303; + goto yy352; + goto yy298; } else { if (yych <= 'o') - goto yy358; + goto yy353; if (yych == 'u') - goto yy360; - goto yy303; + goto yy355; + goto yy298; } } - yy326: + yy321: yych = *++p; switch (yych) { case 'A': case 'a': - goto yy361; + goto yy356; case 'B': case 'b': - goto yy362; + goto yy357; case 'D': case 'd': - goto yy336; + goto yy331; case 'F': case 'f': - goto yy364; + goto yy359; case 'H': case 'h': - goto yy365; + goto yy360; case 'I': case 'i': - goto yy366; + goto yy361; case 'R': case 'r': - goto yy367; + goto yy362; default: - goto yy303; + goto yy298; } - yy327: + yy322: yych = *++p; if (yych == 'D') - goto yy370; + goto yy365; if (yych == 'd') - goto yy370; - goto yy303; - yy328: + goto yy365; + goto yy298; + yy323: yych = *++p; if (yych == 'T') - goto yy371; + goto yy366; if (yych == 't') - goto yy371; - goto yy303; - yy329: + goto yy366; + goto yy298; + yy324: yych = *++p; if (yych == 'I') - goto yy372; + goto yy367; if (yych == 'i') - goto yy372; - goto yy303; - yy330: + goto yy367; + goto yy298; + yy325: yych = *++p; if (yych == 'S') - goto yy373; + goto yy368; if (yych == 's') - goto yy373; - goto yy303; - yy331: + goto yy368; + goto yy298; + yy326: yych = *++p; if (yych == 'O') - goto yy374; + goto yy369; if (yych == 'o') - goto yy374; - goto yy303; - yy332: + goto yy369; + goto yy298; + yy327: yych = *++p; if (yych == 'D') - goto yy375; + goto yy370; if (yych == 'd') - goto yy375; - goto yy303; - yy333: + goto yy370; + goto yy298; + yy328: yych = *++p; if (yych == 'P') - goto yy376; + goto yy371; if (yych == 'p') - goto yy376; - goto yy303; - yy334: + goto yy371; + goto yy298; + yy329: yych = *++p; if (yych == 'N') - goto yy377; + goto yy372; if (yych == 'n') - goto yy377; - goto yy303; - yy335: + goto yy372; + goto yy298; + yy330: yych = *++p; if (yych == 'L') - goto yy378; + goto yy373; if (yych == 'l') - goto yy378; - goto yy303; - yy336: + goto yy373; + goto yy298; + yy331: yych = *++p; if (yych <= ' ') { if (yych <= 0x08) - goto yy303; + goto yy298; if (yych <= '\r') - goto yy352; + goto yy347; if (yych <= 0x1F) - goto yy303; - goto yy352; + goto yy298; + goto yy347; } else { if (yych <= '/') { if (yych <= '.') - goto yy303; - goto yy353; + goto yy298; + goto yy348; } else { if (yych == '>') - goto yy352; - goto yy303; + goto yy347; + goto yy298; } } - yy337: + yy332: yych = *++p; if (yych == 'T') - goto yy379; + goto yy374; if (yych == 't') - goto yy379; - goto yy303; - yy338: + goto yy374; + goto yy298; + yy333: yych = *++p; if (yych <= 'V') { if (yych <= 'Q') { if (yych == 'A') - goto yy380; - goto yy303; + goto yy375; + goto yy298; } else { if (yych <= 'R') - goto yy336; + goto yy331; if (yych <= 'U') - goto yy303; - goto yy336; + goto yy298; + goto yy331; } } else { if (yych <= 'q') { if (yych == 'a') - goto yy380; - goto yy303; + goto yy375; + goto yy298; } else { if (yych <= 'r') - goto yy336; + goto yy331; if (yych == 'v') - goto yy336; - goto yy303; + goto yy331; + goto yy298; } } - yy339: + yy334: yych = *++p; if (yych <= 'G') { if (yych == 'E') - goto yy381; + goto yy376; if (yych <= 'F') - goto yy303; - goto yy382; + goto yy298; + goto yy377; } else { if (yych <= 'e') { if (yych <= 'd') - goto yy303; - goto yy381; + goto yy298; + goto yy376; } else { if (yych == 'g') - goto yy382; - goto yy303; + goto yy377; + goto yy298; } } - yy340: + yy335: yych = *++p; if (yych <= 'R') { if (yych == 'O') - goto yy377; + goto yy372; if (yych <= 'Q') - goto yy303; - goto yy383; + goto yy298; + goto yy378; } else { if (yych <= 'o') { if (yych <= 'n') - goto yy303; - goto yy377; + goto yy298; + goto yy372; } else { if (yych == 'r') - goto yy383; - goto yy303; + goto yy378; + goto yy298; } } - yy341: + yy336: yych = *++p; if (yych == 'A') - goto yy384; + goto yy379; if (yych == 'a') - goto yy384; - goto yy303; - yy342: + goto yy379; + goto yy298; + yy337: yych = *++p; if (yych == 'A') - goto yy385; + goto yy380; if (yych == 'a') - goto yy385; - goto yy303; - yy343: + goto yy380; + goto yy298; + yy338: yych = *++p; if (yych == 'M') - goto yy320; + goto yy315; if (yych == 'm') - goto yy320; - goto yy303; - yy344: + goto yy315; + goto yy298; + yy339: yych = *++p; if (yych == 'R') - goto yy386; + goto yy381; if (yych == 'r') - goto yy386; - goto yy303; - yy345: + goto yy381; + goto yy298; + yy340: yych = *++p; if (yych == 'G') - goto yy387; + goto yy382; if (yych == 'g') - goto yy387; - goto yy303; - yy346: + goto yy382; + goto yy298; + yy341: yych = *++p; if (yych <= '/') { if (yych <= 0x1F) { if (yych <= 0x08) - goto yy303; + goto yy298; if (yych <= '\r') - goto yy352; - goto yy303; + goto yy347; + goto yy298; } else { if (yych <= ' ') - goto yy352; + goto yy347; if (yych <= '.') - goto yy303; - goto yy353; + goto yy298; + goto yy348; } } else { if (yych <= 'M') { if (yych == '>') - goto yy352; - goto yy303; + goto yy347; + goto yy298; } else { if (yych <= 'N') - goto yy388; + goto yy383; if (yych == 'n') - goto yy388; - goto yy303; + goto yy383; + goto yy298; } } - yy347: + yy342: yych = *++p; if (yych == 'I') - goto yy389; + goto yy384; if (yych == 'i') - goto yy389; - goto yy303; - yy348: + goto yy384; + goto yy298; + yy343: yych = *++p; if (yych == 'N') - goto yy390; + goto yy385; if (yych == 'n') - goto yy390; - goto yy303; - yy349: + goto yy385; + goto yy298; + yy344: yych = *++p; if (yych == 'V') - goto yy336; + goto yy331; if (yych == 'v') - goto yy336; - goto yy303; - yy350: + goto yy331; + goto yy298; + yy345: yych = *++p; if (yych == 'F') - goto yy391; + goto yy386; if (yych == 'f') - goto yy391; - goto yy303; - yy351: + goto yy386; + goto yy298; + yy346: yych = *++p; if (yych == 'T') - goto yy392; + goto yy387; if (yych == 't') - goto yy392; - goto yy303; - yy352: + goto yy387; + goto yy298; + yy347: ++p; { return 6; } - yy353: + yy348: yych = *++p; if (yych == '>') - goto yy352; - goto yy303; - yy354: + goto yy347; + goto yy298; + yy349: yych = *++p; if (yych == 'R') - goto yy393; + goto yy388; if (yych == 'r') - goto yy393; - goto yy303; - yy355: + goto yy388; + goto yy298; + yy350: yych = *++p; if (yych == 'E') - goto yy394; + goto yy389; if (yych == 'e') - goto yy394; - goto yy303; - yy356: + goto yy389; + goto yy298; + yy351: yych = *++p; if (yych == 'R') - goto yy395; + goto yy390; if (yych == 'r') - goto yy395; - goto yy303; - yy357: + goto yy390; + goto yy298; + yy352: yych = *++p; if (yych == 'C') - goto yy376; + goto yy371; if (yych == 'c') - goto yy376; - goto yy303; - yy358: + goto yy371; + goto yy298; + yy353: yych = *++p; if (yych == 'U') - goto yy396; + goto yy391; if (yych == 'u') - goto yy396; - goto yy303; - yy359: + goto yy391; + goto yy298; + yy354: yych = *++p; if (yych == 'Y') - goto yy397; + goto yy392; if (yych == 'y') - goto yy397; - goto yy303; - yy360: + goto yy392; + goto yy298; + yy355: yych = *++p; if (yych == 'M') - goto yy398; + goto yy393; if (yych == 'm') - goto yy398; - goto yy303; - yy361: + goto yy393; + goto yy298; + yy356: yych = *++p; if (yych == 'B') - goto yy399; + goto yy394; if (yych == 'b') - goto yy399; - goto yy303; - yy362: + goto yy394; + goto yy298; + yy357: yych = *++p; if (yych == 'O') - goto yy332; + goto yy327; if (yych == 'o') - goto yy332; - goto yy303; - yy363: + goto yy327; + goto yy298; + yy358: yych = *++p; if (yych == 'X') - goto yy400; + goto yy395; if (yych == 'x') - goto yy400; - goto yy303; - yy364: + goto yy395; + goto yy298; + yy359: yych = *++p; if (yych == 'O') - goto yy401; + goto yy396; if (yych == 'o') - goto yy401; - goto yy303; - yy365: + goto yy396; + goto yy298; + yy360: yych = *++p; if (yych <= '/') { if (yych <= 0x1F) { if (yych <= 0x08) - goto yy303; + goto yy298; if (yych <= '\r') - goto yy352; - goto yy303; + goto yy347; + goto yy298; } else { if (yych <= ' ') - goto yy352; + goto yy347; if (yych <= '.') - goto yy303; - goto yy353; + goto yy298; + goto yy348; } } else { if (yych <= 'D') { if (yych == '>') - goto yy352; - goto yy303; + goto yy347; + goto yy298; } else { if (yych <= 'E') - goto yy402; + goto yy397; if (yych == 'e') - goto yy402; - goto yy303; + goto yy397; + goto yy298; } } - yy366: + yy361: yych = *++p; if (yych == 'T') - goto yy399; + goto yy394; if (yych == 't') - goto yy399; - goto yy303; - yy367: + goto yy394; + goto yy298; + yy362: yych = *++p; if (yych <= '/') { if (yych <= 0x1F) { if (yych <= 0x08) - goto yy303; + goto yy298; if (yych <= '\r') - goto yy352; - goto yy303; + goto yy347; + goto yy298; } else { if (yych <= ' ') - goto yy352; + goto yy347; if (yych <= '.') - goto yy303; - goto yy353; + goto yy298; + goto yy348; } } else { if (yych <= '@') { if (yych == '>') - goto yy352; - goto yy303; + goto yy347; + goto yy298; } else { if (yych <= 'A') - goto yy403; + goto yy398; if (yych == 'a') - goto yy403; - goto yy303; + goto yy398; + goto yy298; } } - yy368: + yy363: ++p; { return 2; } - yy369: + yy364: yych = *++p; if (yych == 'D') - goto yy404; + goto yy399; if (yych == 'd') - goto yy404; - goto yy303; - yy370: + goto yy399; + goto yy298; + yy365: yych = *++p; if (yych == 'R') - goto yy405; + goto yy400; if (yych == 'r') - goto yy405; - goto yy303; - yy371: + goto yy400; + goto yy298; + yy366: yych = *++p; if (yych == 'I') - goto yy406; + goto yy401; if (yych == 'i') - goto yy406; - goto yy303; - yy372: + goto yy401; + goto yy298; + yy367: yych = *++p; if (yych == 'D') - goto yy407; + goto yy402; if (yych == 'd') - goto yy407; - goto yy303; - yy373: + goto yy402; + goto yy298; + yy368: yych = *++p; if (yych == 'E') - goto yy408; + goto yy403; if (yych == 'e') - goto yy408; - goto yy303; - yy374: + goto yy403; + goto yy298; + yy369: yych = *++p; if (yych == 'C') - goto yy409; + goto yy404; if (yych == 'c') - goto yy409; - goto yy303; - yy375: + goto yy404; + goto yy298; + yy370: yych = *++p; if (yych == 'Y') - goto yy336; + goto yy331; if (yych == 'y') - goto yy336; - goto yy303; - yy376: + goto yy331; + goto yy298; + yy371: yych = *++p; if (yych == 'T') - goto yy410; + goto yy405; if (yych == 't') - goto yy410; - goto yy303; - yy377: + goto yy405; + goto yy298; + yy372: yych = *++p; if (yych == 'T') - goto yy411; + goto yy406; if (yych == 't') - goto yy411; - goto yy303; - yy378: + goto yy406; + goto yy298; + yy373: yych = *++p; if (yych <= '/') { if (yych <= 0x1F) { if (yych <= 0x08) - goto yy303; + goto yy298; if (yych <= '\r') - goto yy352; - goto yy303; + goto yy347; + goto yy298; } else { if (yych <= ' ') - goto yy352; + goto yy347; if (yych <= '.') - goto yy303; - goto yy353; + goto yy298; + goto yy348; } } else { if (yych <= 'F') { if (yych == '>') - goto yy352; - goto yy303; + goto yy347; + goto yy298; } else { if (yych <= 'G') - goto yy412; + goto yy407; if (yych == 'g') - goto yy412; - goto yy303; + goto yy407; + goto yy298; } } - yy379: + yy374: yych = *++p; if (yych == 'A') - goto yy413; + goto yy408; if (yych == 'a') - goto yy413; - goto yy303; - yy380: + goto yy408; + goto yy298; + yy375: yych = *++p; if (yych == 'L') - goto yy414; + goto yy409; if (yych == 'l') - goto yy414; - goto yy303; - yy381: + goto yy409; + goto yy298; + yy376: yych = *++p; if (yych == 'L') - goto yy415; + goto yy410; if (yych == 'l') - goto yy415; - goto yy303; - yy382: + goto yy410; + goto yy298; + yy377: yych = *++p; if (yych <= 'U') { if (yych == 'C') - goto yy416; + goto yy411; if (yych <= 'T') - goto yy303; - goto yy417; + goto yy298; + goto yy412; } else { if (yych <= 'c') { if (yych <= 'b') - goto yy303; - goto yy416; + goto yy298; + goto yy411; } else { if (yych == 'u') - goto yy417; - goto yy303; + goto yy412; + goto yy298; } } - yy383: + yy378: yych = *++p; if (yych == 'M') - goto yy336; + goto yy331; if (yych == 'm') - goto yy336; - goto yy303; - yy384: + goto yy331; + goto yy298; + yy379: yych = *++p; if (yych == 'M') - goto yy418; + goto yy413; if (yych == 'm') - goto yy418; - goto yy303; - yy385: + goto yy413; + goto yy298; + yy380: yych = *++p; if (yych == 'D') - goto yy419; + goto yy414; if (yych == 'd') - goto yy419; - goto yy303; - yy386: + goto yy414; + goto yy298; + yy381: yych = *++p; if (yych == 'A') - goto yy420; + goto yy415; if (yych == 'a') - goto yy420; - goto yy303; - yy387: + goto yy415; + goto yy298; + yy382: yych = *++p; if (yych == 'E') - goto yy421; + goto yy416; if (yych == 'e') - goto yy421; - goto yy303; - yy388: + goto yy416; + goto yy298; + yy383: yych = *++p; if (yych == 'K') - goto yy336; + goto yy331; if (yych == 'k') - goto yy336; - goto yy303; - yy389: + goto yy331; + goto yy298; + yy384: yych = *++p; if (yych == 'N') - goto yy336; + goto yy331; if (yych == 'n') - goto yy336; - goto yy303; - yy390: + goto yy331; + goto yy298; + yy385: yych = *++p; if (yych == 'U') - goto yy422; + goto yy417; if (yych == 'u') - goto yy422; - goto yy303; - yy391: + goto yy417; + goto yy298; + yy386: yych = *++p; if (yych == 'R') - goto yy423; + goto yy418; if (yych == 'r') - goto yy423; - goto yy303; - yy392: + goto yy418; + goto yy298; + yy387: yych = *++p; if (yych <= 'I') { if (yych == 'G') - goto yy412; + goto yy407; if (yych <= 'H') - goto yy303; - goto yy424; + goto yy298; + goto yy419; } else { if (yych <= 'g') { if (yych <= 'f') - goto yy303; - goto yy412; + goto yy298; + goto yy407; } else { if (yych == 'i') - goto yy424; - goto yy303; + goto yy419; + goto yy298; } } - yy393: + yy388: yych = *++p; if (yych == 'A') - goto yy383; + goto yy378; if (yych == 'a') - goto yy383; - goto yy303; - yy394: + goto yy378; + goto yy298; + yy389: yych = *++p; if (yych <= 0x1F) { if (yych <= 0x08) - goto yy303; + goto yy298; if (yych <= '\r') - goto yy425; - goto yy303; + goto yy420; + goto yy298; } else { if (yych <= ' ') - goto yy425; + goto yy420; if (yych == '>') - goto yy425; - goto yy303; + goto yy420; + goto yy298; } - yy395: + yy390: yych = *++p; if (yych == 'I') - goto yy426; + goto yy421; if (yych == 'i') - goto yy426; - goto yy303; - yy396: + goto yy421; + goto yy298; + yy391: yych = *++p; if (yych == 'R') - goto yy427; + goto yy422; if (yych == 'r') - goto yy427; - goto yy303; - yy397: + goto yy422; + goto yy298; + yy392: yych = *++p; if (yych == 'L') - goto yy355; + goto yy350; if (yych == 'l') - goto yy355; - goto yy303; - yy398: + goto yy350; + goto yy298; + yy393: yych = *++p; if (yych == 'M') - goto yy428; + goto yy423; if (yych == 'm') - goto yy428; - goto yy303; - yy399: + goto yy423; + goto yy298; + yy394: yych = *++p; if (yych == 'L') - goto yy407; + goto yy402; if (yych == 'l') - goto yy407; - goto yy303; - yy400: + goto yy402; + goto yy298; + yy395: yych = *++p; if (yych == 'T') - goto yy429; + goto yy424; if (yych == 't') - goto yy429; - goto yy303; - yy401: + goto yy424; + goto yy298; + yy396: yych = *++p; if (yych == 'O') - goto yy430; + goto yy425; if (yych == 'o') - goto yy430; - goto yy303; - yy402: + goto yy425; + goto yy298; + yy397: yych = *++p; if (yych == 'A') - goto yy431; + goto yy426; if (yych == 'a') - goto yy431; - goto yy303; - yy403: + goto yy426; + goto yy298; + yy398: yych = *++p; if (yych == 'C') - goto yy388; + goto yy383; if (yych == 'c') - goto yy388; - goto yy303; - yy404: + goto yy383; + goto yy298; + yy399: yych = *++p; if (yych == 'A') - goto yy432; + goto yy427; if (yych == 'a') - goto yy432; - goto yy303; - yy405: + goto yy427; + goto yy298; + yy400: yych = *++p; if (yych == 'E') - goto yy433; + goto yy428; if (yych == 'e') - goto yy433; - goto yy303; - yy406: + goto yy428; + goto yy298; + yy401: yych = *++p; if (yych == 'C') - goto yy399; + goto yy394; if (yych == 'c') - goto yy399; - goto yy303; - yy407: + goto yy394; + goto yy298; + yy402: yych = *++p; if (yych == 'E') - goto yy336; + goto yy331; if (yych == 'e') - goto yy336; - goto yy303; - yy408: + goto yy331; + goto yy298; + yy403: yych = *++p; if (yych <= '/') { if (yych <= 0x1F) { if (yych <= 0x08) - goto yy303; + goto yy298; if (yych <= '\r') - goto yy352; - goto yy303; + goto yy347; + goto yy298; } else { if (yych <= ' ') - goto yy352; + goto yy347; if (yych <= '.') - goto yy303; - goto yy353; + goto yy298; + goto yy348; } } else { if (yych <= 'E') { if (yych == '>') - goto yy352; - goto yy303; + goto yy347; + goto yy298; } else { if (yych <= 'F') - goto yy434; + goto yy429; if (yych == 'f') - goto yy434; - goto yy303; + goto yy429; + goto yy298; } } - yy409: + yy404: yych = *++p; if (yych == 'K') - goto yy435; + goto yy430; if (yych == 'k') - goto yy435; - goto yy303; - yy410: + goto yy430; + goto yy298; + yy405: yych = *++p; if (yych == 'I') - goto yy424; + goto yy419; if (yych == 'i') - goto yy424; - goto yy303; - yy411: + goto yy419; + goto yy298; + yy406: yych = *++p; if (yych == 'E') - goto yy436; + goto yy431; if (yych == 'e') - goto yy436; - goto yy303; - yy412: + goto yy431; + goto yy298; + yy407: yych = *++p; if (yych == 'R') - goto yy437; + goto yy432; if (yych == 'r') - goto yy437; - goto yy303; - yy413: + goto yy432; + goto yy298; + yy408: yych = *++p; if (yych == 'I') - goto yy438; + goto yy433; if (yych == 'i') - goto yy438; - goto yy303; - yy414: + goto yy433; + goto yy298; + yy409: yych = *++p; if (yych == 'O') - goto yy439; + goto yy434; if (yych == 'o') - goto yy439; - goto yy303; - yy415: + goto yy434; + goto yy298; + yy410: yych = *++p; if (yych == 'D') - goto yy440; + goto yy435; if (yych == 'd') - goto yy440; - goto yy303; - yy416: + goto yy435; + goto yy298; + yy411: yych = *++p; if (yych == 'A') - goto yy333; + goto yy328; if (yych == 'a') - goto yy333; - goto yy303; - yy417: + goto yy328; + goto yy298; + yy412: yych = *++p; if (yych == 'R') - goto yy407; + goto yy402; if (yych == 'r') - goto yy407; - goto yy303; - yy418: + goto yy402; + goto yy298; + yy413: yych = *++p; if (yych == 'E') - goto yy441; + goto yy436; if (yych == 'e') - goto yy441; - goto yy303; - yy419: + goto yy436; + goto yy298; + yy414: yych = *++p; if (yych <= '/') { if (yych <= 0x1F) { if (yych <= 0x08) - goto yy303; + goto yy298; if (yych <= '\r') - goto yy352; - goto yy303; + goto yy347; + goto yy298; } else { if (yych <= ' ') - goto yy352; + goto yy347; if (yych <= '.') - goto yy303; - goto yy353; + goto yy298; + goto yy348; } } else { if (yych <= 'D') { if (yych == '>') - goto yy352; - goto yy303; + goto yy347; + goto yy298; } else { if (yych <= 'E') - goto yy436; + goto yy431; if (yych == 'e') - goto yy436; - goto yy303; + goto yy431; + goto yy298; } } - yy420: + yy415: yych = *++p; if (yych == 'M') - goto yy407; + goto yy402; if (yych == 'm') - goto yy407; - goto yy303; - yy421: + goto yy402; + goto yy298; + yy416: yych = *++p; if (yych == 'N') - goto yy431; + goto yy426; if (yych == 'n') - goto yy431; - goto yy303; - yy422: + goto yy426; + goto yy298; + yy417: yych = *++p; if (yych <= '/') { if (yych <= 0x1F) { if (yych <= 0x08) - goto yy303; + goto yy298; if (yych <= '\r') - goto yy352; - goto yy303; + goto yy347; + goto yy298; } else { if (yych <= ' ') - goto yy352; + goto yy347; if (yych <= '.') - goto yy303; - goto yy353; + goto yy298; + goto yy348; } } else { if (yych <= 'H') { if (yych == '>') - goto yy352; - goto yy303; + goto yy347; + goto yy298; } else { if (yych <= 'I') - goto yy442; + goto yy437; if (yych == 'i') - goto yy442; - goto yy303; + goto yy437; + goto yy298; } } - yy423: + yy418: yych = *++p; if (yych == 'A') - goto yy443; + goto yy438; if (yych == 'a') - goto yy443; - goto yy303; - yy424: + goto yy438; + goto yy298; + yy419: yych = *++p; if (yych == 'O') - goto yy389; + goto yy384; if (yych == 'o') - goto yy389; - goto yy303; - yy425: + goto yy384; + goto yy298; + yy420: ++p; { return 1; } - yy426: + yy421: yych = *++p; if (yych == 'P') - goto yy444; + goto yy439; if (yych == 'p') - goto yy444; - goto yy303; - yy427: + goto yy439; + goto yy298; + yy422: yych = *++p; if (yych == 'C') - goto yy407; + goto yy402; if (yych == 'c') - goto yy407; - goto yy303; - yy428: + goto yy402; + goto yy298; + yy423: yych = *++p; if (yych == 'A') - goto yy445; + goto yy440; if (yych == 'a') - goto yy445; - goto yy303; - yy429: + goto yy440; + goto yy298; + yy424: yych = *++p; if (yych == 'A') - goto yy446; + goto yy441; if (yych == 'a') - goto yy446; - goto yy303; - yy430: + goto yy441; + goto yy298; + yy425: yych = *++p; if (yych == 'T') - goto yy336; + goto yy331; if (yych == 't') - goto yy336; - goto yy303; - yy431: + goto yy331; + goto yy298; + yy426: yych = *++p; if (yych == 'D') - goto yy336; + goto yy331; if (yych == 'd') - goto yy336; - goto yy303; - yy432: + goto yy331; + goto yy298; + yy427: yych = *++p; if (yych == 'T') - goto yy447; + goto yy442; if (yych == 't') - goto yy447; - goto yy303; - yy433: + goto yy442; + goto yy298; + yy428: yych = *++p; if (yych == 'S') - goto yy448; + goto yy443; if (yych == 's') - goto yy448; - goto yy303; - yy434: + goto yy443; + goto yy298; + yy429: yych = *++p; if (yych == 'O') - goto yy449; + goto yy444; if (yych == 'o') - goto yy449; - goto yy303; - yy435: + goto yy444; + goto yy298; + yy430: yych = *++p; if (yych == 'Q') - goto yy450; + goto yy445; if (yych == 'q') - goto yy450; - goto yy303; - yy436: + goto yy445; + goto yy298; + yy431: yych = *++p; if (yych == 'R') - goto yy336; + goto yy331; if (yych == 'r') - goto yy336; - goto yy303; - yy437: + goto yy331; + goto yy298; + yy432: yych = *++p; if (yych == 'O') - goto yy451; + goto yy446; if (yych == 'o') - goto yy451; - goto yy303; - yy438: + goto yy446; + goto yy298; + yy433: yych = *++p; if (yych == 'L') - goto yy448; + goto yy443; if (yych == 'l') - goto yy448; - goto yy303; - yy439: + goto yy443; + goto yy298; + yy434: yych = *++p; if (yych == 'G') - goto yy336; + goto yy331; if (yych == 'g') - goto yy336; - goto yy303; - yy440: + goto yy331; + goto yy298; + yy435: yych = *++p; if (yych == 'S') - goto yy452; + goto yy447; if (yych == 's') - goto yy452; - goto yy303; - yy441: + goto yy447; + goto yy298; + yy436: yych = *++p; if (yych <= '/') { if (yych <= 0x1F) { if (yych <= 0x08) - goto yy303; + goto yy298; if (yych <= '\r') - goto yy352; - goto yy303; + goto yy347; + goto yy298; } else { if (yych <= ' ') - goto yy352; + goto yy347; if (yych <= '.') - goto yy303; - goto yy353; + goto yy298; + goto yy348; } } else { if (yych <= 'R') { if (yych == '>') - goto yy352; - goto yy303; + goto yy347; + goto yy298; } else { if (yych <= 'S') - goto yy452; + goto yy447; if (yych == 's') - goto yy452; - goto yy303; + goto yy447; + goto yy298; } } - yy442: + yy437: yych = *++p; if (yych == 'T') - goto yy453; + goto yy448; if (yych == 't') - goto yy453; - goto yy303; - yy443: + goto yy448; + goto yy298; + yy438: yych = *++p; if (yych == 'M') - goto yy454; + goto yy449; if (yych == 'm') - goto yy454; - goto yy303; - yy444: + goto yy449; + goto yy298; + yy439: yych = *++p; if (yych == 'T') - goto yy394; + goto yy389; if (yych == 't') - goto yy394; - goto yy303; - yy445: + goto yy389; + goto yy298; + yy440: yych = *++p; if (yych == 'R') - goto yy375; + goto yy370; if (yych == 'r') - goto yy375; - goto yy303; - yy446: + goto yy370; + goto yy298; + yy441: yych = *++p; if (yych == 'R') - goto yy455; + goto yy450; if (yych == 'r') - goto yy455; - goto yy303; - yy447: + goto yy450; + goto yy298; + yy442: yych = *++p; if (yych == 'A') - goto yy456; + goto yy451; if (yych == 'a') - goto yy456; - goto yy303; - yy448: + goto yy451; + goto yy298; + yy443: yych = *++p; if (yych == 'S') - goto yy336; + goto yy331; if (yych == 's') - goto yy336; - goto yy303; - yy449: + goto yy331; + goto yy298; + yy444: yych = *++p; if (yych == 'N') - goto yy430; + goto yy425; if (yych == 'n') - goto yy430; - goto yy303; - yy450: + goto yy425; + goto yy298; + yy445: yych = *++p; if (yych == 'U') - goto yy457; + goto yy452; if (yych == 'u') - goto yy457; - goto yy303; - yy451: + goto yy452; + goto yy298; + yy446: yych = *++p; if (yych == 'U') - goto yy458; + goto yy453; if (yych == 'u') - goto yy458; - goto yy303; - yy452: + goto yy453; + goto yy298; + yy447: yych = *++p; if (yych == 'E') - goto yy430; + goto yy425; if (yych == 'e') - goto yy430; - goto yy303; - yy453: + goto yy425; + goto yy298; + yy448: yych = *++p; if (yych == 'E') - goto yy383; + goto yy378; if (yych == 'e') - goto yy383; - goto yy303; - yy454: + goto yy378; + goto yy298; + yy449: yych = *++p; if (yych == 'E') - goto yy448; + goto yy443; if (yych == 'e') - goto yy448; - goto yy303; - yy455: + goto yy443; + goto yy298; + yy450: yych = *++p; if (yych == 'E') - goto yy459; + goto yy454; if (yych == 'e') - goto yy459; - goto yy303; - yy456: + goto yy454; + goto yy298; + yy451: yych = *++p; if (yych == '[') - goto yy460; - goto yy303; - yy457: + goto yy455; + goto yy298; + yy452: yych = *++p; if (yych == 'O') - goto yy461; + goto yy456; if (yych == 'o') - goto yy461; - goto yy303; - yy458: + goto yy456; + goto yy298; + yy453: yych = *++p; if (yych == 'P') - goto yy336; + goto yy331; if (yych == 'p') - goto yy336; - goto yy303; - yy459: + goto yy331; + goto yy298; + yy454: yych = *++p; if (yych == 'A') - goto yy394; + goto yy389; if (yych == 'a') - goto yy394; - goto yy303; - yy460: + goto yy389; + goto yy298; + yy455: ++p; { return 5; } - yy461: + yy456: yych = *++p; if (yych == 'T') - goto yy407; + goto yy402; if (yych == 't') - goto yy407; - goto yy303; + goto yy402; + goto yy298; } } @@ -8332,557 +8292,557 @@ bufsize_t _scan_html_block_start_7(const unsigned char *p) { }; yych = *p; if (yych == '<') - goto yy464; + goto yy459; ++p; - yy463 : { return 0; } - yy464: + yy458 : { return 0; } + yy459: yyaccept = 0; yych = *(marker = ++p); if (yych <= '@') { if (yych != '/') - goto yy463; + goto yy458; } else { if (yych <= 'Z') - goto yy466; + goto yy461; if (yych <= '`') - goto yy463; + goto yy458; if (yych <= 'z') - goto yy466; - goto yy463; + goto yy461; + goto yy458; } yych = *++p; if (yych <= '@') - goto yy465; + goto yy460; if (yych <= 'Z') - goto yy467; + goto yy462; if (yych <= '`') - goto yy465; + goto yy460; if (yych <= 'z') - goto yy467; - yy465: + goto yy462; + yy460: p = marker; if (yyaccept == 0) { - goto yy463; + goto yy458; } else { - goto yy474; + goto yy469; } - yy466: + yy461: yych = *++p; if (yybm[0 + yych] & 2) { - goto yy468; + goto yy463; } if (yych <= '=') { if (yych <= '.') { if (yych == '-') - goto yy466; - goto yy465; + goto yy461; + goto yy460; } else { if (yych <= '/') - goto yy469; + goto yy464; if (yych <= '9') - goto yy466; - goto yy465; + goto yy461; + goto yy460; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy470; - if (yych <= '@') goto yy465; - goto yy466; + if (yych <= '@') + goto yy460; + goto yy461; } else { if (yych <= '`') - goto yy465; + goto yy460; if (yych <= 'z') - goto yy466; - goto yy465; + goto yy461; + goto yy460; } } - yy467: + yy462: yych = *++p; if (yych <= '/') { if (yych <= 0x1F) { if (yych <= 0x08) - goto yy465; + goto yy460; if (yych <= '\r') - goto yy471; - goto yy465; + goto yy466; + goto yy460; } else { if (yych <= ' ') - goto yy471; + goto yy466; if (yych == '-') - goto yy467; - goto yy465; + goto yy462; + goto yy460; } } else { if (yych <= '@') { if (yych <= '9') - goto yy467; + goto yy462; if (yych == '>') - goto yy470; - goto yy465; + goto yy465; + goto yy460; } else { if (yych <= 'Z') - goto yy467; + goto yy462; if (yych <= '`') - goto yy465; + goto yy460; if (yych <= 'z') - goto yy467; - goto yy465; + goto yy462; + goto yy460; } } - yy468: + yy463: yych = *++p; if (yybm[0 + yych] & 2) { - goto yy468; + goto yy463; } if (yych <= '>') { if (yych <= '9') { if (yych != '/') - goto yy465; + goto yy460; } else { if (yych <= ':') - goto yy472; + goto yy467; if (yych <= '=') - goto yy465; - goto yy470; + goto yy460; + goto yy465; } } else { if (yych <= '^') { if (yych <= '@') - goto yy465; + goto yy460; if (yych <= 'Z') - goto yy472; - goto yy465; + goto yy467; + goto yy460; } else { if (yych == '`') - goto yy465; + goto yy460; if (yych <= 'z') - goto yy472; - goto yy465; + goto yy467; + goto yy460; } } - yy469: + yy464: yych = *++p; if (yych != '>') - goto yy465; - yy470: + goto yy460; + yy465: yych = *++p; if (yybm[0 + yych] & 4) { - goto yy470; + goto yy465; } if (yych <= 0x08) - goto yy465; + goto yy460; if (yych <= '\n') - goto yy473; + goto yy468; if (yych <= '\v') - goto yy465; + goto yy460; if (yych <= '\r') - goto yy475; - goto yy465; - yy471: + goto yy470; + goto yy460; + yy466: yych = *++p; if (yych <= 0x1F) { if (yych <= 0x08) - goto yy465; + goto yy460; if (yych <= '\r') - goto yy471; - goto yy465; + goto yy466; + goto yy460; } else { if (yych <= ' ') - goto yy471; + goto yy466; if (yych == '>') - goto yy470; - goto yy465; + goto yy465; + goto yy460; } - yy472: + yy467: yych = *++p; if (yybm[0 + yych] & 8) { - goto yy472; + goto yy467; } if (yych <= ',') { if (yych <= '\r') { if (yych <= 0x08) - goto yy465; - goto yy476; + goto yy460; + goto yy471; } else { if (yych == ' ') - goto yy476; - goto yy465; + goto yy471; + goto yy460; } } else { if (yych <= '<') { if (yych <= '/') - goto yy469; - goto yy465; + goto yy464; + goto yy460; } else { if (yych <= '=') - goto yy477; + goto yy472; if (yych <= '>') - goto yy470; - goto yy465; + goto yy465; + goto yy460; } } - yy473: + yy468: yyaccept = 1; yych = *(marker = ++p); if (yybm[0 + yych] & 4) { - goto yy470; + goto yy465; } if (yych <= 0x08) - goto yy474; + goto yy469; if (yych <= '\n') - goto yy473; + goto yy468; if (yych <= '\v') - goto yy474; + goto yy469; if (yych <= '\r') - goto yy475; - yy474 : { return 7; } - yy475: + goto yy470; + yy469 : { return 7; } + yy470: ++p; - goto yy474; - yy476: + goto yy469; + yy471: yych = *++p; if (yych <= '<') { if (yych <= ' ') { if (yych <= 0x08) - goto yy465; + goto yy460; if (yych <= '\r') - goto yy476; + goto yy471; if (yych <= 0x1F) - goto yy465; - goto yy476; + goto yy460; + goto yy471; } else { if (yych <= '/') { if (yych <= '.') - goto yy465; - goto yy469; + goto yy460; + goto yy464; } else { if (yych == ':') - goto yy472; - goto yy465; + goto yy467; + goto yy460; } } } else { if (yych <= 'Z') { if (yych <= '=') - goto yy477; + goto yy472; if (yych <= '>') - goto yy470; - if (yych <= '@') goto yy465; - goto yy472; + if (yych <= '@') + goto yy460; + goto yy467; } else { if (yych <= '_') { if (yych <= '^') - goto yy465; - goto yy472; + goto yy460; + goto yy467; } else { if (yych <= '`') - goto yy465; + goto yy460; if (yych <= 'z') - goto yy472; - goto yy465; + goto yy467; + goto yy460; } } } - yy477: + yy472: yych = *++p; if (yybm[0 + yych] & 32) { - goto yy478; + goto yy473; } if (yych <= 0xE0) { if (yych <= '"') { if (yych <= 0x00) - goto yy465; + goto yy460; if (yych <= ' ') - goto yy477; - goto yy479; + goto yy472; + goto yy474; } else { if (yych <= '\'') - goto yy480; + goto yy475; if (yych <= 0xC1) - goto yy465; + goto yy460; if (yych <= 0xDF) - goto yy481; - goto yy482; + goto yy476; + goto yy477; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy484; - goto yy483; + goto yy479; + goto yy478; } else { if (yych <= 0xF0) - goto yy485; + goto yy480; if (yych <= 0xF3) - goto yy486; + goto yy481; if (yych <= 0xF4) - goto yy487; - goto yy465; + goto yy482; + goto yy460; } } - yy478: + yy473: yych = *++p; if (yybm[0 + yych] & 32) { - goto yy478; + goto yy473; } if (yych <= 0xE0) { if (yych <= '=') { if (yych <= 0x00) - goto yy465; + goto yy460; if (yych <= ' ') - goto yy468; - goto yy465; + goto yy463; + goto yy460; } else { if (yych <= '>') - goto yy470; - if (yych <= 0xC1) goto yy465; + if (yych <= 0xC1) + goto yy460; if (yych <= 0xDF) - goto yy481; - goto yy482; + goto yy476; + goto yy477; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy484; - goto yy483; + goto yy479; + goto yy478; } else { if (yych <= 0xF0) - goto yy485; + goto yy480; if (yych <= 0xF3) - goto yy486; + goto yy481; if (yych <= 0xF4) - goto yy487; - goto yy465; + goto yy482; + goto yy460; } } - yy479: + yy474: yych = *++p; if (yybm[0 + yych] & 64) { - goto yy479; + goto yy474; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x00) - goto yy465; + goto yy460; if (yych <= '"') - goto yy488; - goto yy465; + goto yy483; + goto yy460; } else { if (yych <= 0xDF) - goto yy489; + goto yy484; if (yych <= 0xE0) - goto yy490; - goto yy491; + goto yy485; + goto yy486; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy492; + goto yy487; if (yych <= 0xEF) - goto yy491; - goto yy493; + goto yy486; + goto yy488; } else { if (yych <= 0xF3) - goto yy494; + goto yy489; if (yych <= 0xF4) - goto yy495; - goto yy465; + goto yy490; + goto yy460; } } - yy480: + yy475: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy480; + goto yy475; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x00) - goto yy465; + goto yy460; if (yych <= '\'') - goto yy488; - goto yy465; + goto yy483; + goto yy460; } else { if (yych <= 0xDF) - goto yy496; + goto yy491; if (yych <= 0xE0) - goto yy497; - goto yy498; + goto yy492; + goto yy493; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy499; + goto yy494; if (yych <= 0xEF) - goto yy498; - goto yy500; + goto yy493; + goto yy495; } else { if (yych <= 0xF3) - goto yy501; + goto yy496; if (yych <= 0xF4) - goto yy502; - goto yy465; + goto yy497; + goto yy460; } } - yy481: + yy476: yych = *++p; if (yych <= 0x7F) - goto yy465; + goto yy460; if (yych <= 0xBF) - goto yy478; - goto yy465; - yy482: + goto yy473; + goto yy460; + yy477: yych = *++p; if (yych <= 0x9F) - goto yy465; + goto yy460; if (yych <= 0xBF) - goto yy481; - goto yy465; - yy483: + goto yy476; + goto yy460; + yy478: yych = *++p; if (yych <= 0x7F) - goto yy465; + goto yy460; if (yych <= 0xBF) - goto yy481; - goto yy465; - yy484: + goto yy476; + goto yy460; + yy479: yych = *++p; if (yych <= 0x7F) - goto yy465; + goto yy460; if (yych <= 0x9F) - goto yy481; - goto yy465; - yy485: + goto yy476; + goto yy460; + yy480: yych = *++p; if (yych <= 0x8F) - goto yy465; + goto yy460; if (yych <= 0xBF) - goto yy483; - goto yy465; - yy486: + goto yy478; + goto yy460; + yy481: yych = *++p; if (yych <= 0x7F) - goto yy465; + goto yy460; if (yych <= 0xBF) - goto yy483; - goto yy465; - yy487: + goto yy478; + goto yy460; + yy482: yych = *++p; if (yych <= 0x7F) - goto yy465; + goto yy460; if (yych <= 0x8F) - goto yy483; - goto yy465; - yy488: + goto yy478; + goto yy460; + yy483: yych = *++p; if (yybm[0 + yych] & 2) { - goto yy468; + goto yy463; } if (yych == '/') - goto yy469; + goto yy464; if (yych == '>') - goto yy470; - goto yy465; - yy489: + goto yy465; + goto yy460; + yy484: yych = *++p; if (yych <= 0x7F) - goto yy465; + goto yy460; if (yych <= 0xBF) - goto yy479; - goto yy465; - yy490: + goto yy474; + goto yy460; + yy485: yych = *++p; if (yych <= 0x9F) - goto yy465; + goto yy460; if (yych <= 0xBF) - goto yy489; - goto yy465; - yy491: + goto yy484; + goto yy460; + yy486: yych = *++p; if (yych <= 0x7F) - goto yy465; + goto yy460; if (yych <= 0xBF) - goto yy489; - goto yy465; - yy492: + goto yy484; + goto yy460; + yy487: yych = *++p; if (yych <= 0x7F) - goto yy465; + goto yy460; if (yych <= 0x9F) - goto yy489; - goto yy465; - yy493: + goto yy484; + goto yy460; + yy488: yych = *++p; if (yych <= 0x8F) - goto yy465; + goto yy460; if (yych <= 0xBF) - goto yy491; - goto yy465; - yy494: + goto yy486; + goto yy460; + yy489: yych = *++p; if (yych <= 0x7F) - goto yy465; + goto yy460; if (yych <= 0xBF) - goto yy491; - goto yy465; - yy495: + goto yy486; + goto yy460; + yy490: yych = *++p; if (yych <= 0x7F) - goto yy465; + goto yy460; if (yych <= 0x8F) - goto yy491; - goto yy465; - yy496: + goto yy486; + goto yy460; + yy491: yych = *++p; if (yych <= 0x7F) - goto yy465; + goto yy460; if (yych <= 0xBF) - goto yy480; - goto yy465; - yy497: + goto yy475; + goto yy460; + yy492: yych = *++p; if (yych <= 0x9F) - goto yy465; + goto yy460; if (yych <= 0xBF) - goto yy496; - goto yy465; - yy498: + goto yy491; + goto yy460; + yy493: yych = *++p; if (yych <= 0x7F) - goto yy465; + goto yy460; if (yych <= 0xBF) - goto yy496; - goto yy465; - yy499: + goto yy491; + goto yy460; + yy494: yych = *++p; if (yych <= 0x7F) - goto yy465; + goto yy460; if (yych <= 0x9F) - goto yy496; - goto yy465; - yy500: + goto yy491; + goto yy460; + yy495: yych = *++p; if (yych <= 0x8F) - goto yy465; + goto yy460; if (yych <= 0xBF) - goto yy498; - goto yy465; - yy501: + goto yy493; + goto yy460; + yy496: yych = *++p; if (yych <= 0x7F) - goto yy465; + goto yy460; if (yych <= 0xBF) - goto yy498; - goto yy465; - yy502: + goto yy493; + goto yy460; + yy497: yych = *++p; if (yych <= 0x7F) - goto yy465; + goto yy460; if (yych <= 0x8F) - goto yy498; - goto yy465; + goto yy493; + goto yy460; } } @@ -8915,1168 +8875,1168 @@ bufsize_t _scan_html_block_end_1(const unsigned char *p) { if (yych <= 0xDF) { if (yych <= ';') { if (yych <= 0x00) - goto yy504; + goto yy499; if (yych != '\n') - goto yy506; + goto yy501; } else { if (yych <= '<') - goto yy507; + goto yy502; if (yych <= 0x7F) - goto yy506; + goto yy501; if (yych >= 0xC2) - goto yy508; + goto yy503; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) - goto yy509; + goto yy504; if (yych == 0xED) - goto yy511; - goto yy510; + goto yy506; + goto yy505; } else { if (yych <= 0xF0) - goto yy512; + goto yy507; if (yych <= 0xF3) - goto yy513; + goto yy508; if (yych <= 0xF4) - goto yy514; + goto yy509; } } - yy504: + yy499: ++p; - yy505 : { return 0; } - yy506: + yy500 : { return 0; } + yy501: yyaccept = 0; yych = *(marker = ++p); if (yych <= '\n') { if (yych <= 0x00) - goto yy505; + goto yy500; if (yych <= '\t') - goto yy516; - goto yy505; + goto yy511; + goto yy500; } else { if (yych <= 0x7F) - goto yy516; + goto yy511; if (yych <= 0xC1) - goto yy505; + goto yy500; if (yych <= 0xF4) - goto yy516; - goto yy505; + goto yy511; + goto yy500; } - yy507: + yy502: yyaccept = 0; yych = *(marker = ++p); if (yych <= '.') { if (yych <= 0x00) - goto yy505; + goto yy500; if (yych == '\n') - goto yy505; - goto yy516; + goto yy500; + goto yy511; } else { if (yych <= 0x7F) { if (yych <= '/') - goto yy526; - goto yy516; + goto yy521; + goto yy511; } else { if (yych <= 0xC1) - goto yy505; + goto yy500; if (yych <= 0xF4) - goto yy516; - goto yy505; + goto yy511; + goto yy500; } } - yy508: + yy503: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy505; + goto yy500; if (yych <= 0xBF) - goto yy515; - goto yy505; - yy509: + goto yy510; + goto yy500; + yy504: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x9F) - goto yy505; + goto yy500; if (yych <= 0xBF) - goto yy519; - goto yy505; - yy510: + goto yy514; + goto yy500; + yy505: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy505; + goto yy500; if (yych <= 0xBF) - goto yy519; - goto yy505; - yy511: + goto yy514; + goto yy500; + yy506: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy505; + goto yy500; if (yych <= 0x9F) - goto yy519; - goto yy505; - yy512: + goto yy514; + goto yy500; + yy507: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x8F) - goto yy505; + goto yy500; if (yych <= 0xBF) - goto yy521; - goto yy505; - yy513: + goto yy516; + goto yy500; + yy508: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy505; + goto yy500; if (yych <= 0xBF) - goto yy521; - goto yy505; - yy514: + goto yy516; + goto yy500; + yy509: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy505; + goto yy500; if (yych <= 0x8F) - goto yy521; - goto yy505; - yy515: + goto yy516; + goto yy500; + yy510: yych = *++p; - yy516: + yy511: if (yybm[0 + yych] & 64) { - goto yy515; + goto yy510; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= '\n') - goto yy517; + goto yy512; if (yych <= '<') - goto yy518; + goto yy513; } else { if (yych <= 0xDF) - goto yy519; + goto yy514; if (yych <= 0xE0) - goto yy520; - goto yy521; + goto yy515; + goto yy516; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy522; + goto yy517; if (yych <= 0xEF) - goto yy521; - goto yy523; + goto yy516; + goto yy518; } else { if (yych <= 0xF3) - goto yy524; + goto yy519; if (yych <= 0xF4) - goto yy525; + goto yy520; } } - yy517: + yy512: p = marker; if (yyaccept == 0) { - goto yy505; + goto yy500; } else { - goto yy539; + goto yy534; } - yy518: + yy513: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy518; + goto yy513; } if (yych <= 0xDF) { if (yych <= '.') { if (yych <= 0x00) - goto yy517; + goto yy512; if (yych == '\n') - goto yy517; - goto yy515; + goto yy512; + goto yy510; } else { if (yych <= '/') - goto yy526; + goto yy521; if (yych <= 0x7F) - goto yy515; + goto yy510; if (yych <= 0xC1) - goto yy517; + goto yy512; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) - goto yy520; + goto yy515; if (yych == 0xED) - goto yy522; - goto yy521; + goto yy517; + goto yy516; } else { if (yych <= 0xF0) - goto yy523; + goto yy518; if (yych <= 0xF3) - goto yy524; + goto yy519; if (yych <= 0xF4) - goto yy525; - goto yy517; + goto yy520; + goto yy512; } } - yy519: + yy514: yych = *++p; if (yych <= 0x7F) - goto yy517; + goto yy512; if (yych <= 0xBF) - goto yy515; - goto yy517; - yy520: + goto yy510; + goto yy512; + yy515: yych = *++p; if (yych <= 0x9F) - goto yy517; + goto yy512; if (yych <= 0xBF) - goto yy519; - goto yy517; - yy521: + goto yy514; + goto yy512; + yy516: yych = *++p; if (yych <= 0x7F) - goto yy517; + goto yy512; if (yych <= 0xBF) - goto yy519; - goto yy517; - yy522: + goto yy514; + goto yy512; + yy517: yych = *++p; if (yych <= 0x7F) - goto yy517; + goto yy512; if (yych <= 0x9F) - goto yy519; - goto yy517; - yy523: + goto yy514; + goto yy512; + yy518: yych = *++p; if (yych <= 0x8F) - goto yy517; + goto yy512; if (yych <= 0xBF) - goto yy521; - goto yy517; - yy524: + goto yy516; + goto yy512; + yy519: yych = *++p; if (yych <= 0x7F) - goto yy517; + goto yy512; if (yych <= 0xBF) - goto yy521; - goto yy517; - yy525: + goto yy516; + goto yy512; + yy520: yych = *++p; if (yych <= 0x7F) - goto yy517; + goto yy512; if (yych <= 0x8F) - goto yy521; - goto yy517; - yy526: + goto yy516; + goto yy512; + yy521: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy518; + goto yy513; } if (yych <= 's') { if (yych <= 'R') { if (yych <= '\n') { if (yych <= 0x00) - goto yy517; + goto yy512; if (yych <= '\t') - goto yy515; - goto yy517; + goto yy510; + goto yy512; } else { if (yych != 'P') - goto yy515; + goto yy510; } } else { if (yych <= 'o') { if (yych <= 'S') - goto yy528; - if (yych <= 'T') - goto yy529; - goto yy515; + goto yy523; + if (yych <= 'T') + goto yy524; + goto yy510; } else { if (yych <= 'p') - goto yy527; + goto yy522; if (yych <= 'r') - goto yy515; - goto yy528; + goto yy510; + goto yy523; } } } else { if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 't') - goto yy529; + goto yy524; if (yych <= 0x7F) - goto yy515; - goto yy517; + goto yy510; + goto yy512; } else { if (yych <= 0xDF) - goto yy519; + goto yy514; if (yych <= 0xE0) - goto yy520; - goto yy521; + goto yy515; + goto yy516; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy522; + goto yy517; if (yych <= 0xEF) - goto yy521; - goto yy523; + goto yy516; + goto yy518; } else { if (yych <= 0xF3) - goto yy524; + goto yy519; if (yych <= 0xF4) - goto yy525; - goto yy517; + goto yy520; + goto yy512; } } } - yy527: + yy522: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy518; + goto yy513; } if (yych <= 0xC1) { if (yych <= 'Q') { if (yych <= 0x00) - goto yy517; + goto yy512; if (yych == '\n') - goto yy517; - goto yy515; + goto yy512; + goto yy510; } else { if (yych <= 'q') { if (yych <= 'R') - goto yy530; - goto yy515; + goto yy525; + goto yy510; } else { if (yych <= 'r') - goto yy530; + goto yy525; if (yych <= 0x7F) - goto yy515; - goto yy517; + goto yy510; + goto yy512; } } } else { if (yych <= 0xED) { if (yych <= 0xDF) - goto yy519; + goto yy514; if (yych <= 0xE0) - goto yy520; + goto yy515; if (yych <= 0xEC) - goto yy521; - goto yy522; + goto yy516; + goto yy517; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy521; - goto yy523; + goto yy516; + goto yy518; } else { if (yych <= 0xF3) - goto yy524; + goto yy519; if (yych <= 0xF4) - goto yy525; - goto yy517; + goto yy520; + goto yy512; } } } - yy528: + yy523: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy518; + goto yy513; } if (yych <= 't') { if (yych <= 'C') { if (yych <= '\t') { if (yych <= 0x00) - goto yy517; - goto yy515; + goto yy512; + goto yy510; } else { if (yych <= '\n') - goto yy517; + goto yy512; if (yych <= 'B') - goto yy515; - goto yy531; + goto yy510; + goto yy526; } } else { if (yych <= 'b') { if (yych == 'T') - goto yy532; - goto yy515; + goto yy527; + goto yy510; } else { if (yych <= 'c') - goto yy531; + goto yy526; if (yych <= 's') - goto yy515; - goto yy532; + goto yy510; + goto yy527; } } } else { if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x7F) - goto yy515; - goto yy517; + goto yy510; + goto yy512; } else { if (yych <= 0xDF) - goto yy519; + goto yy514; if (yych <= 0xE0) - goto yy520; - goto yy521; + goto yy515; + goto yy516; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy522; + goto yy517; if (yych <= 0xEF) - goto yy521; - goto yy523; + goto yy516; + goto yy518; } else { if (yych <= 0xF3) - goto yy524; + goto yy519; if (yych <= 0xF4) - goto yy525; - goto yy517; + goto yy520; + goto yy512; } } } - yy529: + yy524: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy518; + goto yy513; } if (yych <= 0xC1) { if (yych <= 'D') { if (yych <= 0x00) - goto yy517; + goto yy512; if (yych == '\n') - goto yy517; - goto yy515; + goto yy512; + goto yy510; } else { if (yych <= 'd') { if (yych <= 'E') - goto yy533; - goto yy515; + goto yy528; + goto yy510; } else { if (yych <= 'e') - goto yy533; + goto yy528; if (yych <= 0x7F) - goto yy515; - goto yy517; + goto yy510; + goto yy512; } } } else { if (yych <= 0xED) { if (yych <= 0xDF) - goto yy519; + goto yy514; if (yych <= 0xE0) - goto yy520; + goto yy515; if (yych <= 0xEC) - goto yy521; - goto yy522; + goto yy516; + goto yy517; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy521; - goto yy523; + goto yy516; + goto yy518; } else { if (yych <= 0xF3) - goto yy524; + goto yy519; if (yych <= 0xF4) - goto yy525; - goto yy517; + goto yy520; + goto yy512; } } } - yy530: + yy525: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy518; + goto yy513; } if (yych <= 0xC1) { if (yych <= 'D') { if (yych <= 0x00) - goto yy517; + goto yy512; if (yych == '\n') - goto yy517; - goto yy515; + goto yy512; + goto yy510; } else { if (yych <= 'd') { if (yych <= 'E') - goto yy534; - goto yy515; + goto yy529; + goto yy510; } else { if (yych <= 'e') - goto yy534; + goto yy529; if (yych <= 0x7F) - goto yy515; - goto yy517; + goto yy510; + goto yy512; } } } else { if (yych <= 0xED) { if (yych <= 0xDF) - goto yy519; + goto yy514; if (yych <= 0xE0) - goto yy520; + goto yy515; if (yych <= 0xEC) - goto yy521; - goto yy522; + goto yy516; + goto yy517; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy521; - goto yy523; + goto yy516; + goto yy518; } else { if (yych <= 0xF3) - goto yy524; + goto yy519; if (yych <= 0xF4) - goto yy525; - goto yy517; + goto yy520; + goto yy512; } } } - yy531: + yy526: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy518; + goto yy513; } if (yych <= 0xC1) { if (yych <= 'Q') { if (yych <= 0x00) - goto yy517; + goto yy512; if (yych == '\n') - goto yy517; - goto yy515; + goto yy512; + goto yy510; } else { if (yych <= 'q') { if (yych <= 'R') - goto yy535; - goto yy515; + goto yy530; + goto yy510; } else { if (yych <= 'r') - goto yy535; + goto yy530; if (yych <= 0x7F) - goto yy515; - goto yy517; + goto yy510; + goto yy512; } } } else { if (yych <= 0xED) { if (yych <= 0xDF) - goto yy519; + goto yy514; if (yych <= 0xE0) - goto yy520; + goto yy515; if (yych <= 0xEC) - goto yy521; - goto yy522; + goto yy516; + goto yy517; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy521; - goto yy523; + goto yy516; + goto yy518; } else { if (yych <= 0xF3) - goto yy524; + goto yy519; if (yych <= 0xF4) - goto yy525; - goto yy517; + goto yy520; + goto yy512; } } } - yy532: + yy527: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy518; + goto yy513; } if (yych <= 0xC1) { if (yych <= 'X') { if (yych <= 0x00) - goto yy517; + goto yy512; if (yych == '\n') - goto yy517; - goto yy515; + goto yy512; + goto yy510; } else { if (yych <= 'x') { if (yych <= 'Y') - goto yy536; - goto yy515; + goto yy531; + goto yy510; } else { if (yych <= 'y') - goto yy536; + goto yy531; if (yych <= 0x7F) - goto yy515; - goto yy517; + goto yy510; + goto yy512; } } } else { if (yych <= 0xED) { if (yych <= 0xDF) - goto yy519; + goto yy514; if (yych <= 0xE0) - goto yy520; + goto yy515; if (yych <= 0xEC) - goto yy521; - goto yy522; + goto yy516; + goto yy517; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy521; - goto yy523; + goto yy516; + goto yy518; } else { if (yych <= 0xF3) - goto yy524; + goto yy519; if (yych <= 0xF4) - goto yy525; - goto yy517; + goto yy520; + goto yy512; } } } - yy533: + yy528: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy518; + goto yy513; } if (yych <= 0xC1) { if (yych <= 'W') { if (yych <= 0x00) - goto yy517; + goto yy512; if (yych == '\n') - goto yy517; - goto yy515; + goto yy512; + goto yy510; } else { if (yych <= 'w') { if (yych <= 'X') - goto yy537; - goto yy515; + goto yy532; + goto yy510; } else { if (yych <= 'x') - goto yy537; + goto yy532; if (yych <= 0x7F) - goto yy515; - goto yy517; + goto yy510; + goto yy512; } } } else { if (yych <= 0xED) { if (yych <= 0xDF) - goto yy519; + goto yy514; if (yych <= 0xE0) - goto yy520; + goto yy515; if (yych <= 0xEC) - goto yy521; - goto yy522; + goto yy516; + goto yy517; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy521; - goto yy523; + goto yy516; + goto yy518; } else { if (yych <= 0xF3) - goto yy524; + goto yy519; if (yych <= 0xF4) - goto yy525; - goto yy517; + goto yy520; + goto yy512; } } } - yy534: + yy529: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy518; + goto yy513; } if (yych <= 0xDF) { if (yych <= '=') { if (yych <= 0x00) - goto yy517; + goto yy512; if (yych == '\n') - goto yy517; - goto yy515; + goto yy512; + goto yy510; } else { if (yych <= '>') - goto yy538; + goto yy533; if (yych <= 0x7F) - goto yy515; + goto yy510; if (yych <= 0xC1) - goto yy517; - goto yy519; + goto yy512; + goto yy514; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) - goto yy520; + goto yy515; if (yych == 0xED) - goto yy522; - goto yy521; + goto yy517; + goto yy516; } else { if (yych <= 0xF0) - goto yy523; + goto yy518; if (yych <= 0xF3) - goto yy524; + goto yy519; if (yych <= 0xF4) - goto yy525; - goto yy517; + goto yy520; + goto yy512; } } - yy535: + yy530: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy518; + goto yy513; } if (yych <= 0xC1) { if (yych <= 'H') { if (yych <= 0x00) - goto yy517; + goto yy512; if (yych == '\n') - goto yy517; - goto yy515; + goto yy512; + goto yy510; } else { if (yych <= 'h') { if (yych <= 'I') - goto yy540; - goto yy515; + goto yy535; + goto yy510; } else { if (yych <= 'i') - goto yy540; + goto yy535; if (yych <= 0x7F) - goto yy515; - goto yy517; + goto yy510; + goto yy512; } } } else { if (yych <= 0xED) { if (yych <= 0xDF) - goto yy519; + goto yy514; if (yych <= 0xE0) - goto yy520; + goto yy515; if (yych <= 0xEC) - goto yy521; - goto yy522; + goto yy516; + goto yy517; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy521; - goto yy523; + goto yy516; + goto yy518; } else { if (yych <= 0xF3) - goto yy524; + goto yy519; if (yych <= 0xF4) - goto yy525; - goto yy517; + goto yy520; + goto yy512; } } } - yy536: + yy531: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy518; + goto yy513; } if (yych <= 0xC1) { if (yych <= 'K') { if (yych <= 0x00) - goto yy517; + goto yy512; if (yych == '\n') - goto yy517; - goto yy515; + goto yy512; + goto yy510; } else { if (yych <= 'k') { if (yych <= 'L') - goto yy530; - goto yy515; + goto yy525; + goto yy510; } else { if (yych <= 'l') - goto yy530; + goto yy525; if (yych <= 0x7F) - goto yy515; - goto yy517; + goto yy510; + goto yy512; } } } else { if (yych <= 0xED) { if (yych <= 0xDF) - goto yy519; + goto yy514; if (yych <= 0xE0) - goto yy520; + goto yy515; if (yych <= 0xEC) - goto yy521; - goto yy522; + goto yy516; + goto yy517; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy521; - goto yy523; + goto yy516; + goto yy518; } else { if (yych <= 0xF3) - goto yy524; + goto yy519; if (yych <= 0xF4) - goto yy525; - goto yy517; + goto yy520; + goto yy512; } } } - yy537: + yy532: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy518; + goto yy513; } if (yych <= 0xC1) { if (yych <= 'S') { if (yych <= 0x00) - goto yy517; + goto yy512; if (yych == '\n') - goto yy517; - goto yy515; + goto yy512; + goto yy510; } else { if (yych <= 's') { if (yych <= 'T') - goto yy541; - goto yy515; + goto yy536; + goto yy510; } else { if (yych <= 't') - goto yy541; + goto yy536; if (yych <= 0x7F) - goto yy515; - goto yy517; + goto yy510; + goto yy512; } } } else { if (yych <= 0xED) { if (yych <= 0xDF) - goto yy519; + goto yy514; if (yych <= 0xE0) - goto yy520; + goto yy515; if (yych <= 0xEC) - goto yy521; - goto yy522; + goto yy516; + goto yy517; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy521; - goto yy523; + goto yy516; + goto yy518; } else { if (yych <= 0xF3) - goto yy524; + goto yy519; if (yych <= 0xF4) - goto yy525; - goto yy517; + goto yy520; + goto yy512; } } } - yy538: + yy533: yyaccept = 1; yych = *(marker = ++p); if (yybm[0 + yych] & 64) { - goto yy515; + goto yy510; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= '\n') - goto yy539; + goto yy534; if (yych <= '<') - goto yy518; + goto yy513; } else { if (yych <= 0xDF) - goto yy519; + goto yy514; if (yych <= 0xE0) - goto yy520; - goto yy521; + goto yy515; + goto yy516; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy522; + goto yy517; if (yych <= 0xEF) - goto yy521; - goto yy523; + goto yy516; + goto yy518; } else { if (yych <= 0xF3) - goto yy524; + goto yy519; if (yych <= 0xF4) - goto yy525; + goto yy520; } } - yy539 : { return (bufsize_t)(p - start); } - yy540: + yy534 : { return (bufsize_t)(p - start); } + yy535: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy518; + goto yy513; } if (yych <= 0xC1) { if (yych <= 'O') { if (yych <= 0x00) - goto yy517; + goto yy512; if (yych == '\n') - goto yy517; - goto yy515; + goto yy512; + goto yy510; } else { if (yych <= 'o') { if (yych <= 'P') - goto yy542; - goto yy515; + goto yy537; + goto yy510; } else { if (yych <= 'p') - goto yy542; + goto yy537; if (yych <= 0x7F) - goto yy515; - goto yy517; + goto yy510; + goto yy512; } } } else { if (yych <= 0xED) { if (yych <= 0xDF) - goto yy519; + goto yy514; if (yych <= 0xE0) - goto yy520; + goto yy515; if (yych <= 0xEC) - goto yy521; - goto yy522; + goto yy516; + goto yy517; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy521; - goto yy523; + goto yy516; + goto yy518; } else { if (yych <= 0xF3) - goto yy524; + goto yy519; if (yych <= 0xF4) - goto yy525; - goto yy517; + goto yy520; + goto yy512; } } } - yy541: + yy536: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy518; + goto yy513; } if (yych <= 0xC1) { if (yych <= '@') { if (yych <= 0x00) - goto yy517; + goto yy512; if (yych == '\n') - goto yy517; - goto yy515; + goto yy512; + goto yy510; } else { if (yych <= '`') { if (yych <= 'A') - goto yy543; - goto yy515; + goto yy538; + goto yy510; } else { if (yych <= 'a') - goto yy543; + goto yy538; if (yych <= 0x7F) - goto yy515; - goto yy517; + goto yy510; + goto yy512; } } } else { if (yych <= 0xED) { if (yych <= 0xDF) - goto yy519; + goto yy514; if (yych <= 0xE0) - goto yy520; + goto yy515; if (yych <= 0xEC) - goto yy521; - goto yy522; + goto yy516; + goto yy517; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy521; - goto yy523; + goto yy516; + goto yy518; } else { if (yych <= 0xF3) - goto yy524; + goto yy519; if (yych <= 0xF4) - goto yy525; - goto yy517; + goto yy520; + goto yy512; } } } - yy542: + yy537: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy518; + goto yy513; } if (yych <= 0xC1) { if (yych <= 'S') { if (yych <= 0x00) - goto yy517; + goto yy512; if (yych == '\n') - goto yy517; - goto yy515; + goto yy512; + goto yy510; } else { if (yych <= 's') { if (yych <= 'T') - goto yy534; - goto yy515; + goto yy529; + goto yy510; } else { if (yych <= 't') - goto yy534; + goto yy529; if (yych <= 0x7F) - goto yy515; - goto yy517; + goto yy510; + goto yy512; } } } else { if (yych <= 0xED) { if (yych <= 0xDF) - goto yy519; + goto yy514; if (yych <= 0xE0) - goto yy520; + goto yy515; if (yych <= 0xEC) - goto yy521; - goto yy522; + goto yy516; + goto yy517; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy521; - goto yy523; + goto yy516; + goto yy518; } else { if (yych <= 0xF3) - goto yy524; + goto yy519; if (yych <= 0xF4) - goto yy525; - goto yy517; + goto yy520; + goto yy512; } } } - yy543: + yy538: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy518; + goto yy513; } if (yych <= 0xC1) { if (yych <= 'Q') { if (yych <= 0x00) - goto yy517; + goto yy512; if (yych == '\n') - goto yy517; - goto yy515; + goto yy512; + goto yy510; } else { if (yych <= 'q') { if (yych >= 'S') - goto yy515; + goto yy510; } else { if (yych <= 'r') - goto yy544; + goto yy539; if (yych <= 0x7F) - goto yy515; - goto yy517; + goto yy510; + goto yy512; } } } else { if (yych <= 0xED) { if (yych <= 0xDF) - goto yy519; + goto yy514; if (yych <= 0xE0) - goto yy520; + goto yy515; if (yych <= 0xEC) - goto yy521; - goto yy522; + goto yy516; + goto yy517; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy521; - goto yy523; + goto yy516; + goto yy518; } else { if (yych <= 0xF3) - goto yy524; + goto yy519; if (yych <= 0xF4) - goto yy525; - goto yy517; + goto yy520; + goto yy512; } } } - yy544: + yy539: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy518; + goto yy513; } if (yych <= 0xC1) { if (yych <= 'D') { if (yych <= 0x00) - goto yy517; + goto yy512; if (yych == '\n') - goto yy517; - goto yy515; + goto yy512; + goto yy510; } else { if (yych <= 'd') { if (yych >= 'F') - goto yy515; + goto yy510; } else { if (yych <= 'e') - goto yy545; + goto yy540; if (yych <= 0x7F) - goto yy515; - goto yy517; + goto yy510; + goto yy512; } } } else { if (yych <= 0xED) { if (yych <= 0xDF) - goto yy519; + goto yy514; if (yych <= 0xE0) - goto yy520; + goto yy515; if (yych <= 0xEC) - goto yy521; - goto yy522; + goto yy516; + goto yy517; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy521; - goto yy523; + goto yy516; + goto yy518; } else { if (yych <= 0xF3) - goto yy524; + goto yy519; if (yych <= 0xF4) - goto yy525; - goto yy517; + goto yy520; + goto yy512; } } } - yy545: + yy540: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy518; + goto yy513; } if (yych <= 0xC1) { if (yych <= '@') { if (yych <= 0x00) - goto yy517; + goto yy512; if (yych == '\n') - goto yy517; - goto yy515; + goto yy512; + goto yy510; } else { if (yych <= '`') { if (yych <= 'A') - goto yy534; - goto yy515; + goto yy529; + goto yy510; } else { if (yych <= 'a') - goto yy534; + goto yy529; if (yych <= 0x7F) - goto yy515; - goto yy517; + goto yy510; + goto yy512; } } } else { if (yych <= 0xED) { if (yych <= 0xDF) - goto yy519; + goto yy514; if (yych <= 0xE0) - goto yy520; + goto yy515; if (yych <= 0xEC) - goto yy521; - goto yy522; + goto yy516; + goto yy517; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy521; - goto yy523; + goto yy516; + goto yy518; } else { if (yych <= 0xF3) - goto yy524; + goto yy519; if (yych <= 0xF4) - goto yy525; - goto yy517; + goto yy520; + goto yy512; } } } @@ -10112,326 +10072,326 @@ bufsize_t _scan_html_block_end_2(const unsigned char *p) { if (yych <= 0xDF) { if (yych <= ',') { if (yych <= 0x00) - goto yy547; + goto yy542; if (yych != '\n') - goto yy549; + goto yy544; } else { if (yych <= '-') - goto yy550; + goto yy545; if (yych <= 0x7F) - goto yy549; + goto yy544; if (yych >= 0xC2) - goto yy551; + goto yy546; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) - goto yy552; + goto yy547; if (yych == 0xED) - goto yy554; - goto yy553; + goto yy549; + goto yy548; } else { if (yych <= 0xF0) - goto yy555; + goto yy550; if (yych <= 0xF3) - goto yy556; + goto yy551; if (yych <= 0xF4) - goto yy557; + goto yy552; } } - yy547: + yy542: ++p; - yy548 : { return 0; } - yy549: + yy543 : { return 0; } + yy544: yyaccept = 0; yych = *(marker = ++p); if (yych <= '\n') { if (yych <= 0x00) - goto yy548; + goto yy543; if (yych <= '\t') - goto yy559; - goto yy548; + goto yy554; + goto yy543; } else { if (yych <= 0x7F) - goto yy559; + goto yy554; if (yych <= 0xC1) - goto yy548; + goto yy543; if (yych <= 0xF4) - goto yy559; - goto yy548; + goto yy554; + goto yy543; } - yy550: + yy545: yyaccept = 0; yych = *(marker = ++p); if (yybm[0 + yych] & 128) { - goto yy569; + goto yy564; } if (yych <= '\n') { if (yych <= 0x00) - goto yy548; + goto yy543; if (yych <= '\t') - goto yy559; - goto yy548; + goto yy554; + goto yy543; } else { if (yych <= 0x7F) - goto yy559; + goto yy554; if (yych <= 0xC1) - goto yy548; + goto yy543; if (yych <= 0xF4) - goto yy559; - goto yy548; + goto yy554; + goto yy543; } - yy551: + yy546: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy548; + goto yy543; if (yych <= 0xBF) - goto yy558; - goto yy548; - yy552: + goto yy553; + goto yy543; + yy547: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x9F) - goto yy548; + goto yy543; if (yych <= 0xBF) - goto yy562; - goto yy548; - yy553: + goto yy557; + goto yy543; + yy548: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy548; + goto yy543; if (yych <= 0xBF) - goto yy562; - goto yy548; - yy554: + goto yy557; + goto yy543; + yy549: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy548; + goto yy543; if (yych <= 0x9F) - goto yy562; - goto yy548; - yy555: + goto yy557; + goto yy543; + yy550: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x8F) - goto yy548; + goto yy543; if (yych <= 0xBF) - goto yy564; - goto yy548; - yy556: + goto yy559; + goto yy543; + yy551: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy548; + goto yy543; if (yych <= 0xBF) - goto yy564; - goto yy548; - yy557: + goto yy559; + goto yy543; + yy552: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy548; + goto yy543; if (yych <= 0x8F) - goto yy564; - goto yy548; - yy558: + goto yy559; + goto yy543; + yy553: yych = *++p; - yy559: + yy554: if (yybm[0 + yych] & 64) { - goto yy558; + goto yy553; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= '\n') - goto yy560; + goto yy555; if (yych <= '-') - goto yy561; + goto yy556; } else { if (yych <= 0xDF) - goto yy562; + goto yy557; if (yych <= 0xE0) - goto yy563; - goto yy564; + goto yy558; + goto yy559; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy565; + goto yy560; if (yych <= 0xEF) - goto yy564; - goto yy566; + goto yy559; + goto yy561; } else { if (yych <= 0xF3) - goto yy567; + goto yy562; if (yych <= 0xF4) - goto yy568; + goto yy563; } } - yy560: + yy555: p = marker; if (yyaccept == 0) { - goto yy548; + goto yy543; } else { - goto yy571; + goto yy566; } - yy561: + yy556: yych = *++p; if (yybm[0 + yych] & 64) { - goto yy558; + goto yy553; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= '\n') - goto yy560; + goto yy555; if (yych <= '-') - goto yy569; - goto yy560; + goto yy564; + goto yy555; } else { if (yych <= 0xDF) - goto yy562; + goto yy557; if (yych <= 0xE0) - goto yy563; - goto yy564; + goto yy558; + goto yy559; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy565; + goto yy560; if (yych <= 0xEF) - goto yy564; - goto yy566; + goto yy559; + goto yy561; } else { if (yych <= 0xF3) - goto yy567; + goto yy562; if (yych <= 0xF4) - goto yy568; - goto yy560; + goto yy563; + goto yy555; } } - yy562: + yy557: yych = *++p; if (yych <= 0x7F) - goto yy560; + goto yy555; if (yych <= 0xBF) - goto yy558; - goto yy560; - yy563: + goto yy553; + goto yy555; + yy558: yych = *++p; if (yych <= 0x9F) - goto yy560; + goto yy555; if (yych <= 0xBF) - goto yy562; - goto yy560; - yy564: + goto yy557; + goto yy555; + yy559: yych = *++p; if (yych <= 0x7F) - goto yy560; + goto yy555; if (yych <= 0xBF) - goto yy562; - goto yy560; - yy565: + goto yy557; + goto yy555; + yy560: yych = *++p; if (yych <= 0x7F) - goto yy560; + goto yy555; if (yych <= 0x9F) - goto yy562; - goto yy560; - yy566: + goto yy557; + goto yy555; + yy561: yych = *++p; if (yych <= 0x8F) - goto yy560; + goto yy555; if (yych <= 0xBF) - goto yy564; - goto yy560; - yy567: + goto yy559; + goto yy555; + yy562: yych = *++p; if (yych <= 0x7F) - goto yy560; + goto yy555; if (yych <= 0xBF) - goto yy564; - goto yy560; - yy568: + goto yy559; + goto yy555; + yy563: yych = *++p; if (yych <= 0x7F) - goto yy560; + goto yy555; if (yych <= 0x8F) - goto yy564; - goto yy560; - yy569: + goto yy559; + goto yy555; + yy564: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy569; + goto yy564; } if (yych <= 0xDF) { if (yych <= '=') { if (yych <= 0x00) - goto yy560; + goto yy555; if (yych == '\n') - goto yy560; - goto yy558; + goto yy555; + goto yy553; } else { if (yych <= '>') - goto yy570; + goto yy565; if (yych <= 0x7F) - goto yy558; + goto yy553; if (yych <= 0xC1) - goto yy560; - goto yy562; + goto yy555; + goto yy557; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) - goto yy563; + goto yy558; if (yych == 0xED) - goto yy565; - goto yy564; + goto yy560; + goto yy559; } else { if (yych <= 0xF0) - goto yy566; + goto yy561; if (yych <= 0xF3) - goto yy567; + goto yy562; if (yych <= 0xF4) - goto yy568; - goto yy560; + goto yy563; + goto yy555; } } - yy570: + yy565: yyaccept = 1; yych = *(marker = ++p); if (yybm[0 + yych] & 64) { - goto yy558; + goto yy553; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= '\n') - goto yy571; + goto yy566; if (yych <= '-') - goto yy561; + goto yy556; } else { if (yych <= 0xDF) - goto yy562; + goto yy557; if (yych <= 0xE0) - goto yy563; - goto yy564; + goto yy558; + goto yy559; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy565; + goto yy560; if (yych <= 0xEF) - goto yy564; - goto yy566; + goto yy559; + goto yy561; } else { if (yych <= 0xF3) - goto yy567; + goto yy562; if (yych <= 0xF4) - goto yy568; + goto yy563; } } - yy571 : { return (bufsize_t)(p - start); } + yy566 : { return (bufsize_t)(p - start); } } } @@ -10464,292 +10424,292 @@ bufsize_t _scan_html_block_end_3(const unsigned char *p) { if (yych <= 0xDF) { if (yych <= '>') { if (yych <= 0x00) - goto yy573; + goto yy568; if (yych != '\n') - goto yy575; + goto yy570; } else { if (yych <= '?') - goto yy576; + goto yy571; if (yych <= 0x7F) - goto yy575; + goto yy570; if (yych >= 0xC2) - goto yy577; + goto yy572; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) - goto yy578; + goto yy573; if (yych == 0xED) - goto yy580; - goto yy579; + goto yy575; + goto yy574; } else { if (yych <= 0xF0) - goto yy581; + goto yy576; if (yych <= 0xF3) - goto yy582; + goto yy577; if (yych <= 0xF4) - goto yy583; + goto yy578; } } - yy573: + yy568: ++p; - yy574 : { return 0; } - yy575: + yy569 : { return 0; } + yy570: yyaccept = 0; yych = *(marker = ++p); if (yych <= '\n') { if (yych <= 0x00) - goto yy574; + goto yy569; if (yych <= '\t') - goto yy585; - goto yy574; + goto yy580; + goto yy569; } else { if (yych <= 0x7F) - goto yy585; + goto yy580; if (yych <= 0xC1) - goto yy574; + goto yy569; if (yych <= 0xF4) - goto yy585; - goto yy574; + goto yy580; + goto yy569; } - yy576: + yy571: yyaccept = 0; yych = *(marker = ++p); if (yych <= '=') { if (yych <= 0x00) - goto yy574; + goto yy569; if (yych == '\n') - goto yy574; - goto yy585; + goto yy569; + goto yy580; } else { if (yych <= 0x7F) { if (yych <= '>') - goto yy595; - goto yy585; + goto yy590; + goto yy580; } else { if (yych <= 0xC1) - goto yy574; + goto yy569; if (yych <= 0xF4) - goto yy585; - goto yy574; + goto yy580; + goto yy569; } } - yy577: + yy572: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy574; + goto yy569; if (yych <= 0xBF) - goto yy584; - goto yy574; - yy578: + goto yy579; + goto yy569; + yy573: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x9F) - goto yy574; + goto yy569; if (yych <= 0xBF) - goto yy588; - goto yy574; - yy579: + goto yy583; + goto yy569; + yy574: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy574; + goto yy569; if (yych <= 0xBF) - goto yy588; - goto yy574; - yy580: + goto yy583; + goto yy569; + yy575: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy574; + goto yy569; if (yych <= 0x9F) - goto yy588; - goto yy574; - yy581: + goto yy583; + goto yy569; + yy576: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x8F) - goto yy574; + goto yy569; if (yych <= 0xBF) - goto yy590; - goto yy574; - yy582: + goto yy585; + goto yy569; + yy577: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy574; + goto yy569; if (yych <= 0xBF) - goto yy590; - goto yy574; - yy583: + goto yy585; + goto yy569; + yy578: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy574; + goto yy569; if (yych <= 0x8F) - goto yy590; - goto yy574; - yy584: + goto yy585; + goto yy569; + yy579: yych = *++p; - yy585: + yy580: if (yybm[0 + yych] & 64) { - goto yy584; + goto yy579; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= '\n') - goto yy586; + goto yy581; if (yych <= '?') - goto yy587; + goto yy582; } else { if (yych <= 0xDF) - goto yy588; + goto yy583; if (yych <= 0xE0) - goto yy589; - goto yy590; + goto yy584; + goto yy585; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy591; + goto yy586; if (yych <= 0xEF) - goto yy590; - goto yy592; + goto yy585; + goto yy587; } else { if (yych <= 0xF3) - goto yy593; + goto yy588; if (yych <= 0xF4) - goto yy594; + goto yy589; } } - yy586: + yy581: p = marker; if (yyaccept == 0) { - goto yy574; + goto yy569; } else { - goto yy596; + goto yy591; } - yy587: + yy582: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy587; + goto yy582; } if (yych <= 0xDF) { if (yych <= '=') { if (yych <= 0x00) - goto yy586; + goto yy581; if (yych == '\n') - goto yy586; - goto yy584; + goto yy581; + goto yy579; } else { if (yych <= '>') - goto yy595; + goto yy590; if (yych <= 0x7F) - goto yy584; + goto yy579; if (yych <= 0xC1) - goto yy586; + goto yy581; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) - goto yy589; + goto yy584; if (yych == 0xED) - goto yy591; - goto yy590; + goto yy586; + goto yy585; } else { if (yych <= 0xF0) - goto yy592; + goto yy587; if (yych <= 0xF3) - goto yy593; + goto yy588; if (yych <= 0xF4) - goto yy594; - goto yy586; + goto yy589; + goto yy581; } } - yy588: + yy583: yych = *++p; if (yych <= 0x7F) - goto yy586; + goto yy581; if (yych <= 0xBF) - goto yy584; - goto yy586; - yy589: + goto yy579; + goto yy581; + yy584: yych = *++p; if (yych <= 0x9F) - goto yy586; + goto yy581; if (yych <= 0xBF) - goto yy588; - goto yy586; - yy590: + goto yy583; + goto yy581; + yy585: yych = *++p; if (yych <= 0x7F) - goto yy586; + goto yy581; if (yych <= 0xBF) - goto yy588; - goto yy586; - yy591: + goto yy583; + goto yy581; + yy586: yych = *++p; if (yych <= 0x7F) - goto yy586; + goto yy581; if (yych <= 0x9F) - goto yy588; - goto yy586; - yy592: + goto yy583; + goto yy581; + yy587: yych = *++p; if (yych <= 0x8F) - goto yy586; + goto yy581; if (yych <= 0xBF) - goto yy590; - goto yy586; - yy593: + goto yy585; + goto yy581; + yy588: yych = *++p; if (yych <= 0x7F) - goto yy586; + goto yy581; if (yych <= 0xBF) - goto yy590; - goto yy586; - yy594: + goto yy585; + goto yy581; + yy589: yych = *++p; if (yych <= 0x7F) - goto yy586; + goto yy581; if (yych <= 0x8F) - goto yy590; - goto yy586; - yy595: + goto yy585; + goto yy581; + yy590: yyaccept = 1; yych = *(marker = ++p); if (yybm[0 + yych] & 64) { - goto yy584; + goto yy579; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= '\n') - goto yy596; + goto yy591; if (yych <= '?') - goto yy587; + goto yy582; } else { if (yych <= 0xDF) - goto yy588; + goto yy583; if (yych <= 0xE0) - goto yy589; - goto yy590; + goto yy584; + goto yy585; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy591; + goto yy586; if (yych <= 0xEF) - goto yy590; - goto yy592; + goto yy585; + goto yy587; } else { if (yych <= 0xF3) - goto yy593; + goto yy588; if (yych <= 0xF4) - goto yy594; + goto yy589; } } - yy596 : { return (bufsize_t)(p - start); } + yy591 : { return (bufsize_t)(p - start); } } } @@ -10784,237 +10744,237 @@ bufsize_t _scan_html_block_end_4(const unsigned char *p) { }; yych = *p; if (yybm[0 + yych] & 64) { - goto yy601; + goto yy596; } if (yych <= 0xE0) { if (yych <= '\n') { if (yych <= 0x00) - goto yy598; + goto yy593; if (yych <= '\t') - goto yy600; + goto yy595; } else { if (yych <= 0x7F) - goto yy600; + goto yy595; if (yych <= 0xC1) - goto yy598; + goto yy593; if (yych <= 0xDF) - goto yy603; - goto yy604; + goto yy598; + goto yy599; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy606; - goto yy605; + goto yy601; + goto yy600; } else { if (yych <= 0xF0) - goto yy607; + goto yy602; if (yych <= 0xF3) - goto yy608; + goto yy603; if (yych <= 0xF4) - goto yy609; + goto yy604; } } - yy598: + yy593: ++p; - yy599 : { return 0; } - yy600: + yy594 : { return 0; } + yy595: yyaccept = 0; yych = *(marker = ++p); if (yych <= '\n') { if (yych <= 0x00) - goto yy599; + goto yy594; if (yych <= '\t') - goto yy611; - goto yy599; + goto yy606; + goto yy594; } else { if (yych <= 0x7F) - goto yy611; + goto yy606; if (yych <= 0xC1) - goto yy599; + goto yy594; if (yych <= 0xF4) - goto yy611; - goto yy599; + goto yy606; + goto yy594; } - yy601: + yy596: yyaccept = 1; yych = *(marker = ++p); if (yybm[0 + yych] & 128) { - goto yy610; + goto yy605; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= '\n') - goto yy602; + goto yy597; if (yych <= '>') - goto yy601; + goto yy596; } else { if (yych <= 0xDF) - goto yy613; + goto yy608; if (yych <= 0xE0) - goto yy614; - goto yy615; + goto yy609; + goto yy610; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy616; + goto yy611; if (yych <= 0xEF) - goto yy615; - goto yy617; + goto yy610; + goto yy612; } else { if (yych <= 0xF3) - goto yy618; + goto yy613; if (yych <= 0xF4) - goto yy619; + goto yy614; } } - yy602 : { return (bufsize_t)(p - start); } - yy603: + yy597 : { return (bufsize_t)(p - start); } + yy598: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy599; + goto yy594; if (yych <= 0xBF) - goto yy610; - goto yy599; - yy604: + goto yy605; + goto yy594; + yy599: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x9F) - goto yy599; + goto yy594; if (yych <= 0xBF) - goto yy613; - goto yy599; - yy605: + goto yy608; + goto yy594; + yy600: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy599; + goto yy594; if (yych <= 0xBF) - goto yy613; - goto yy599; - yy606: + goto yy608; + goto yy594; + yy601: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy599; + goto yy594; if (yych <= 0x9F) - goto yy613; - goto yy599; - yy607: + goto yy608; + goto yy594; + yy602: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x8F) - goto yy599; + goto yy594; if (yych <= 0xBF) - goto yy615; - goto yy599; - yy608: + goto yy610; + goto yy594; + yy603: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy599; + goto yy594; if (yych <= 0xBF) - goto yy615; - goto yy599; - yy609: + goto yy610; + goto yy594; + yy604: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy599; + goto yy594; if (yych <= 0x8F) - goto yy615; - goto yy599; - yy610: + goto yy610; + goto yy594; + yy605: yych = *++p; - yy611: + yy606: if (yybm[0 + yych] & 128) { - goto yy610; + goto yy605; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= '\n') - goto yy612; + goto yy607; if (yych <= '>') - goto yy601; + goto yy596; } else { if (yych <= 0xDF) - goto yy613; + goto yy608; if (yych <= 0xE0) - goto yy614; - goto yy615; + goto yy609; + goto yy610; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy616; + goto yy611; if (yych <= 0xEF) - goto yy615; - goto yy617; + goto yy610; + goto yy612; } else { if (yych <= 0xF3) - goto yy618; + goto yy613; if (yych <= 0xF4) - goto yy619; + goto yy614; } } - yy612: + yy607: p = marker; if (yyaccept == 0) { - goto yy599; + goto yy594; } else { - goto yy602; + goto yy597; } - yy613: + yy608: yych = *++p; if (yych <= 0x7F) - goto yy612; + goto yy607; if (yych <= 0xBF) - goto yy610; - goto yy612; - yy614: + goto yy605; + goto yy607; + yy609: yych = *++p; if (yych <= 0x9F) - goto yy612; + goto yy607; if (yych <= 0xBF) - goto yy613; - goto yy612; - yy615: + goto yy608; + goto yy607; + yy610: yych = *++p; if (yych <= 0x7F) - goto yy612; + goto yy607; if (yych <= 0xBF) - goto yy613; - goto yy612; - yy616: + goto yy608; + goto yy607; + yy611: yych = *++p; if (yych <= 0x7F) - goto yy612; + goto yy607; if (yych <= 0x9F) - goto yy613; - goto yy612; - yy617: + goto yy608; + goto yy607; + yy612: yych = *++p; if (yych <= 0x8F) - goto yy612; + goto yy607; if (yych <= 0xBF) - goto yy615; - goto yy612; - yy618: + goto yy610; + goto yy607; + yy613: yych = *++p; if (yych <= 0x7F) - goto yy612; + goto yy607; if (yych <= 0xBF) - goto yy615; - goto yy612; - yy619: + goto yy610; + goto yy607; + yy614: yych = *++p; if (yych <= 0x7F) - goto yy612; + goto yy607; if (yych <= 0x8F) - goto yy615; - goto yy612; + goto yy610; + goto yy607; } } @@ -11047,326 +11007,326 @@ bufsize_t _scan_html_block_end_5(const unsigned char *p) { if (yych <= 0xDF) { if (yych <= '\\') { if (yych <= 0x00) - goto yy621; + goto yy616; if (yych != '\n') - goto yy623; + goto yy618; } else { if (yych <= ']') - goto yy624; + goto yy619; if (yych <= 0x7F) - goto yy623; + goto yy618; if (yych >= 0xC2) - goto yy625; + goto yy620; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) - goto yy626; + goto yy621; if (yych == 0xED) - goto yy628; - goto yy627; + goto yy623; + goto yy622; } else { if (yych <= 0xF0) - goto yy629; + goto yy624; if (yych <= 0xF3) - goto yy630; + goto yy625; if (yych <= 0xF4) - goto yy631; + goto yy626; } } - yy621: + yy616: ++p; - yy622 : { return 0; } - yy623: + yy617 : { return 0; } + yy618: yyaccept = 0; yych = *(marker = ++p); if (yych <= '\n') { if (yych <= 0x00) - goto yy622; + goto yy617; if (yych <= '\t') - goto yy633; - goto yy622; + goto yy628; + goto yy617; } else { if (yych <= 0x7F) - goto yy633; + goto yy628; if (yych <= 0xC1) - goto yy622; + goto yy617; if (yych <= 0xF4) - goto yy633; - goto yy622; + goto yy628; + goto yy617; } - yy624: + yy619: yyaccept = 0; yych = *(marker = ++p); if (yybm[0 + yych] & 128) { - goto yy643; + goto yy638; } if (yych <= '\n') { if (yych <= 0x00) - goto yy622; + goto yy617; if (yych <= '\t') - goto yy633; - goto yy622; + goto yy628; + goto yy617; } else { if (yych <= 0x7F) - goto yy633; + goto yy628; if (yych <= 0xC1) - goto yy622; + goto yy617; if (yych <= 0xF4) - goto yy633; - goto yy622; + goto yy628; + goto yy617; } - yy625: + yy620: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy622; + goto yy617; if (yych <= 0xBF) - goto yy632; - goto yy622; - yy626: + goto yy627; + goto yy617; + yy621: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x9F) - goto yy622; + goto yy617; if (yych <= 0xBF) - goto yy636; - goto yy622; - yy627: + goto yy631; + goto yy617; + yy622: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy622; + goto yy617; if (yych <= 0xBF) - goto yy636; - goto yy622; - yy628: + goto yy631; + goto yy617; + yy623: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy622; + goto yy617; if (yych <= 0x9F) - goto yy636; - goto yy622; - yy629: + goto yy631; + goto yy617; + yy624: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x8F) - goto yy622; + goto yy617; if (yych <= 0xBF) - goto yy638; - goto yy622; - yy630: + goto yy633; + goto yy617; + yy625: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy622; + goto yy617; if (yych <= 0xBF) - goto yy638; - goto yy622; - yy631: + goto yy633; + goto yy617; + yy626: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x7F) - goto yy622; + goto yy617; if (yych <= 0x8F) - goto yy638; - goto yy622; - yy632: + goto yy633; + goto yy617; + yy627: yych = *++p; - yy633: + yy628: if (yybm[0 + yych] & 64) { - goto yy632; + goto yy627; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= '\n') - goto yy634; + goto yy629; if (yych <= ']') - goto yy635; + goto yy630; } else { if (yych <= 0xDF) - goto yy636; + goto yy631; if (yych <= 0xE0) - goto yy637; - goto yy638; + goto yy632; + goto yy633; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy639; + goto yy634; if (yych <= 0xEF) - goto yy638; - goto yy640; + goto yy633; + goto yy635; } else { if (yych <= 0xF3) - goto yy641; + goto yy636; if (yych <= 0xF4) - goto yy642; + goto yy637; } } - yy634: + yy629: p = marker; if (yyaccept == 0) { - goto yy622; + goto yy617; } else { - goto yy645; + goto yy640; } - yy635: + yy630: yych = *++p; if (yybm[0 + yych] & 64) { - goto yy632; + goto yy627; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= '\n') - goto yy634; + goto yy629; if (yych <= ']') - goto yy643; - goto yy634; + goto yy638; + goto yy629; } else { if (yych <= 0xDF) - goto yy636; + goto yy631; if (yych <= 0xE0) - goto yy637; - goto yy638; + goto yy632; + goto yy633; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy639; + goto yy634; if (yych <= 0xEF) - goto yy638; - goto yy640; + goto yy633; + goto yy635; } else { if (yych <= 0xF3) - goto yy641; + goto yy636; if (yych <= 0xF4) - goto yy642; - goto yy634; + goto yy637; + goto yy629; } } - yy636: + yy631: yych = *++p; if (yych <= 0x7F) - goto yy634; + goto yy629; if (yych <= 0xBF) - goto yy632; - goto yy634; - yy637: + goto yy627; + goto yy629; + yy632: yych = *++p; if (yych <= 0x9F) - goto yy634; + goto yy629; if (yych <= 0xBF) - goto yy636; - goto yy634; - yy638: + goto yy631; + goto yy629; + yy633: yych = *++p; if (yych <= 0x7F) - goto yy634; + goto yy629; if (yych <= 0xBF) - goto yy636; - goto yy634; - yy639: + goto yy631; + goto yy629; + yy634: yych = *++p; if (yych <= 0x7F) - goto yy634; + goto yy629; if (yych <= 0x9F) - goto yy636; - goto yy634; - yy640: + goto yy631; + goto yy629; + yy635: yych = *++p; if (yych <= 0x8F) - goto yy634; + goto yy629; if (yych <= 0xBF) - goto yy638; - goto yy634; - yy641: + goto yy633; + goto yy629; + yy636: yych = *++p; if (yych <= 0x7F) - goto yy634; + goto yy629; if (yych <= 0xBF) - goto yy638; - goto yy634; - yy642: + goto yy633; + goto yy629; + yy637: yych = *++p; if (yych <= 0x7F) - goto yy634; + goto yy629; if (yych <= 0x8F) - goto yy638; - goto yy634; - yy643: + goto yy633; + goto yy629; + yy638: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy643; + goto yy638; } if (yych <= 0xDF) { if (yych <= '=') { if (yych <= 0x00) - goto yy634; + goto yy629; if (yych == '\n') - goto yy634; - goto yy632; + goto yy629; + goto yy627; } else { if (yych <= '>') - goto yy644; + goto yy639; if (yych <= 0x7F) - goto yy632; + goto yy627; if (yych <= 0xC1) - goto yy634; - goto yy636; + goto yy629; + goto yy631; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) - goto yy637; + goto yy632; if (yych == 0xED) - goto yy639; - goto yy638; + goto yy634; + goto yy633; } else { if (yych <= 0xF0) - goto yy640; + goto yy635; if (yych <= 0xF3) - goto yy641; + goto yy636; if (yych <= 0xF4) - goto yy642; - goto yy634; + goto yy637; + goto yy629; } } - yy644: + yy639: yyaccept = 1; yych = *(marker = ++p); if (yybm[0 + yych] & 64) { - goto yy632; + goto yy627; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= '\n') - goto yy645; + goto yy640; if (yych <= ']') - goto yy635; + goto yy630; } else { if (yych <= 0xDF) - goto yy636; + goto yy631; if (yych <= 0xE0) - goto yy637; - goto yy638; + goto yy632; + goto yy633; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy639; + goto yy634; if (yych <= 0xEF) - goto yy638; - goto yy640; + goto yy633; + goto yy635; } else { if (yych <= 0xF3) - goto yy641; + goto yy636; if (yych <= 0xF4) - goto yy642; + goto yy637; } } - yy645 : { return (bufsize_t)(p - start); } + yy640 : { return (bufsize_t)(p - start); } } } @@ -11404,533 +11364,533 @@ bufsize_t _scan_link_title(const unsigned char *p) { yych = *p; if (yych <= '&') { if (yych == '"') - goto yy648; + goto yy643; } else { if (yych <= '\'') - goto yy649; + goto yy644; if (yych <= '(') - goto yy650; + goto yy645; } ++p; - yy647 : { return 0; } - yy648: + yy642 : { return 0; } + yy643: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x00) - goto yy647; + goto yy642; if (yych <= 0x7F) - goto yy652; - if (yych <= 0xC1) goto yy647; + if (yych <= 0xC1) + goto yy642; if (yych <= 0xF4) - goto yy652; - goto yy647; - yy649: + goto yy647; + goto yy642; + yy644: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x00) - goto yy647; + goto yy642; if (yych <= 0x7F) - goto yy665; + goto yy660; if (yych <= 0xC1) - goto yy647; + goto yy642; if (yych <= 0xF4) - goto yy665; - goto yy647; - yy650: + goto yy660; + goto yy642; + yy645: yyaccept = 0; yych = *(marker = ++p); if (yych <= '(') { if (yych <= 0x00) - goto yy647; + goto yy642; if (yych <= '\'') - goto yy677; - goto yy647; + goto yy672; + goto yy642; } else { if (yych <= 0x7F) - goto yy677; + goto yy672; if (yych <= 0xC1) - goto yy647; + goto yy642; if (yych <= 0xF4) - goto yy677; - goto yy647; + goto yy672; + goto yy642; } - yy651: + yy646: yych = *++p; - yy652: + yy647: if (yybm[0 + yych] & 16) { - goto yy651; + goto yy646; } if (yych <= 0xE0) { if (yych <= '\\') { if (yych <= 0x00) - goto yy653; + goto yy648; if (yych <= '"') - goto yy654; - goto yy656; + goto yy649; + goto yy651; } else { if (yych <= 0xC1) - goto yy653; + goto yy648; if (yych <= 0xDF) - goto yy657; - goto yy658; + goto yy652; + goto yy653; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy660; - goto yy659; + goto yy655; + goto yy654; } else { if (yych <= 0xF0) - goto yy661; + goto yy656; if (yych <= 0xF3) - goto yy662; + goto yy657; if (yych <= 0xF4) - goto yy663; + goto yy658; } } - yy653: + yy648: p = marker; if (yyaccept <= 1) { if (yyaccept == 0) { - goto yy647; + goto yy642; } else { - goto yy655; + goto yy650; } } else { if (yyaccept == 2) { - goto yy667; + goto yy662; } else { - goto yy679; + goto yy674; } } - yy654: + yy649: ++p; - yy655 : { return (bufsize_t)(p - start); } - yy656: + yy650 : { return (bufsize_t)(p - start); } + yy651: yych = *++p; if (yybm[0 + yych] & 16) { - goto yy651; + goto yy646; } if (yych <= 0xE0) { if (yych <= '\\') { if (yych <= 0x00) - goto yy653; + goto yy648; if (yych <= '"') - goto yy688; - goto yy656; + goto yy683; + goto yy651; } else { if (yych <= 0xC1) - goto yy653; + goto yy648; if (yych >= 0xE0) - goto yy658; + goto yy653; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy660; - goto yy659; + goto yy655; + goto yy654; } else { if (yych <= 0xF0) - goto yy661; + goto yy656; if (yych <= 0xF3) - goto yy662; + goto yy657; if (yych <= 0xF4) - goto yy663; - goto yy653; + goto yy658; + goto yy648; } } - yy657: + yy652: yych = *++p; if (yych <= 0x7F) - goto yy653; + goto yy648; if (yych <= 0xBF) - goto yy651; - goto yy653; - yy658: + goto yy646; + goto yy648; + yy653: yych = *++p; if (yych <= 0x9F) - goto yy653; + goto yy648; if (yych <= 0xBF) - goto yy657; - goto yy653; - yy659: + goto yy652; + goto yy648; + yy654: yych = *++p; if (yych <= 0x7F) - goto yy653; + goto yy648; if (yych <= 0xBF) - goto yy657; - goto yy653; - yy660: + goto yy652; + goto yy648; + yy655: yych = *++p; if (yych <= 0x7F) - goto yy653; + goto yy648; if (yych <= 0x9F) - goto yy657; - goto yy653; - yy661: + goto yy652; + goto yy648; + yy656: yych = *++p; if (yych <= 0x8F) - goto yy653; + goto yy648; if (yych <= 0xBF) - goto yy659; - goto yy653; - yy662: + goto yy654; + goto yy648; + yy657: yych = *++p; if (yych <= 0x7F) - goto yy653; + goto yy648; if (yych <= 0xBF) - goto yy659; - goto yy653; - yy663: + goto yy654; + goto yy648; + yy658: yych = *++p; if (yych <= 0x7F) - goto yy653; + goto yy648; if (yych <= 0x8F) - goto yy659; - goto yy653; - yy664: + goto yy654; + goto yy648; + yy659: yych = *++p; - yy665: + yy660: if (yybm[0 + yych] & 64) { - goto yy664; + goto yy659; } if (yych <= 0xE0) { if (yych <= '\\') { if (yych <= 0x00) - goto yy653; + goto yy648; if (yych >= '(') - goto yy668; + goto yy663; } else { if (yych <= 0xC1) - goto yy653; + goto yy648; if (yych <= 0xDF) - goto yy669; - goto yy670; + goto yy664; + goto yy665; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy672; - goto yy671; + goto yy667; + goto yy666; } else { if (yych <= 0xF0) - goto yy673; + goto yy668; if (yych <= 0xF3) - goto yy674; + goto yy669; if (yych <= 0xF4) - goto yy675; - goto yy653; + goto yy670; + goto yy648; } } - yy666: + yy661: ++p; - yy667 : { return (bufsize_t)(p - start); } - yy668: + yy662 : { return (bufsize_t)(p - start); } + yy663: yych = *++p; if (yybm[0 + yych] & 64) { - goto yy664; + goto yy659; } if (yych <= 0xE0) { if (yych <= '\\') { if (yych <= 0x00) - goto yy653; + goto yy648; if (yych <= '\'') - goto yy689; - goto yy668; + goto yy684; + goto yy663; } else { if (yych <= 0xC1) - goto yy653; + goto yy648; if (yych >= 0xE0) - goto yy670; + goto yy665; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy672; - goto yy671; + goto yy667; + goto yy666; } else { if (yych <= 0xF0) - goto yy673; + goto yy668; if (yych <= 0xF3) - goto yy674; + goto yy669; if (yych <= 0xF4) - goto yy675; - goto yy653; + goto yy670; + goto yy648; } } - yy669: + yy664: yych = *++p; if (yych <= 0x7F) - goto yy653; + goto yy648; if (yych <= 0xBF) - goto yy664; - goto yy653; - yy670: + goto yy659; + goto yy648; + yy665: yych = *++p; if (yych <= 0x9F) - goto yy653; + goto yy648; if (yych <= 0xBF) - goto yy669; - goto yy653; - yy671: + goto yy664; + goto yy648; + yy666: yych = *++p; if (yych <= 0x7F) - goto yy653; + goto yy648; if (yych <= 0xBF) - goto yy669; - goto yy653; - yy672: + goto yy664; + goto yy648; + yy667: yych = *++p; if (yych <= 0x7F) - goto yy653; + goto yy648; if (yych <= 0x9F) - goto yy669; - goto yy653; - yy673: + goto yy664; + goto yy648; + yy668: yych = *++p; if (yych <= 0x8F) - goto yy653; + goto yy648; if (yych <= 0xBF) - goto yy671; - goto yy653; - yy674: + goto yy666; + goto yy648; + yy669: yych = *++p; if (yych <= 0x7F) - goto yy653; + goto yy648; if (yych <= 0xBF) - goto yy671; - goto yy653; - yy675: + goto yy666; + goto yy648; + yy670: yych = *++p; if (yych <= 0x7F) - goto yy653; + goto yy648; if (yych <= 0x8F) - goto yy671; - goto yy653; - yy676: + goto yy666; + goto yy648; + yy671: yych = *++p; - yy677: + yy672: if (yybm[0 + yych] & 128) { - goto yy676; + goto yy671; } if (yych <= 0xE0) { if (yych <= '\\') { if (yych <= '(') - goto yy653; + goto yy648; if (yych >= '*') - goto yy680; + goto yy675; } else { if (yych <= 0xC1) - goto yy653; + goto yy648; if (yych <= 0xDF) - goto yy681; - goto yy682; + goto yy676; + goto yy677; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy684; - goto yy683; + goto yy679; + goto yy678; } else { if (yych <= 0xF0) - goto yy685; + goto yy680; if (yych <= 0xF3) - goto yy686; + goto yy681; if (yych <= 0xF4) - goto yy687; - goto yy653; + goto yy682; + goto yy648; } } - yy678: + yy673: ++p; - yy679 : { return (bufsize_t)(p - start); } - yy680: + yy674 : { return (bufsize_t)(p - start); } + yy675: yych = *++p; if (yych <= 0xDF) { if (yych <= '[') { if (yych <= 0x00) - goto yy653; + goto yy648; if (yych == ')') - goto yy690; - goto yy676; + goto yy685; + goto yy671; } else { if (yych <= '\\') - goto yy680; + goto yy675; if (yych <= 0x7F) - goto yy676; + goto yy671; if (yych <= 0xC1) - goto yy653; + goto yy648; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) - goto yy682; + goto yy677; if (yych == 0xED) - goto yy684; - goto yy683; + goto yy679; + goto yy678; } else { if (yych <= 0xF0) - goto yy685; + goto yy680; if (yych <= 0xF3) - goto yy686; + goto yy681; if (yych <= 0xF4) - goto yy687; - goto yy653; + goto yy682; + goto yy648; } } - yy681: + yy676: yych = *++p; if (yych <= 0x7F) - goto yy653; + goto yy648; if (yych <= 0xBF) - goto yy676; - goto yy653; - yy682: + goto yy671; + goto yy648; + yy677: yych = *++p; if (yych <= 0x9F) - goto yy653; + goto yy648; if (yych <= 0xBF) - goto yy681; - goto yy653; - yy683: + goto yy676; + goto yy648; + yy678: yych = *++p; if (yych <= 0x7F) - goto yy653; + goto yy648; if (yych <= 0xBF) - goto yy681; - goto yy653; - yy684: + goto yy676; + goto yy648; + yy679: yych = *++p; if (yych <= 0x7F) - goto yy653; + goto yy648; if (yych <= 0x9F) - goto yy681; - goto yy653; - yy685: + goto yy676; + goto yy648; + yy680: yych = *++p; if (yych <= 0x8F) - goto yy653; + goto yy648; if (yych <= 0xBF) - goto yy683; - goto yy653; - yy686: + goto yy678; + goto yy648; + yy681: yych = *++p; if (yych <= 0x7F) - goto yy653; + goto yy648; if (yych <= 0xBF) - goto yy683; - goto yy653; - yy687: + goto yy678; + goto yy648; + yy682: yych = *++p; if (yych <= 0x7F) - goto yy653; + goto yy648; if (yych <= 0x8F) - goto yy683; - goto yy653; - yy688: + goto yy678; + goto yy648; + yy683: yyaccept = 1; yych = *(marker = ++p); if (yybm[0 + yych] & 16) { - goto yy651; + goto yy646; } if (yych <= 0xE0) { if (yych <= '\\') { if (yych <= 0x00) - goto yy655; + goto yy650; if (yych <= '"') - goto yy654; - goto yy656; + goto yy649; + goto yy651; } else { if (yych <= 0xC1) - goto yy655; + goto yy650; if (yych <= 0xDF) - goto yy657; - goto yy658; + goto yy652; + goto yy653; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy660; - goto yy659; + goto yy655; + goto yy654; } else { if (yych <= 0xF0) - goto yy661; + goto yy656; if (yych <= 0xF3) - goto yy662; + goto yy657; if (yych <= 0xF4) - goto yy663; - goto yy655; + goto yy658; + goto yy650; } } - yy689: + yy684: yyaccept = 2; yych = *(marker = ++p); if (yybm[0 + yych] & 64) { - goto yy664; + goto yy659; } if (yych <= 0xE0) { if (yych <= '\\') { if (yych <= 0x00) - goto yy667; + goto yy662; if (yych <= '\'') - goto yy666; - goto yy668; + goto yy661; + goto yy663; } else { if (yych <= 0xC1) - goto yy667; + goto yy662; if (yych <= 0xDF) - goto yy669; - goto yy670; + goto yy664; + goto yy665; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy672; - goto yy671; + goto yy667; + goto yy666; } else { if (yych <= 0xF0) - goto yy673; + goto yy668; if (yych <= 0xF3) - goto yy674; + goto yy669; if (yych <= 0xF4) - goto yy675; - goto yy667; + goto yy670; + goto yy662; } } - yy690: + yy685: yyaccept = 3; yych = *(marker = ++p); if (yybm[0 + yych] & 128) { - goto yy676; + goto yy671; } if (yych <= 0xE0) { if (yych <= '\\') { if (yych <= '(') - goto yy679; + goto yy674; if (yych <= ')') - goto yy678; - goto yy680; + goto yy673; + goto yy675; } else { if (yych <= 0xC1) - goto yy679; + goto yy674; if (yych <= 0xDF) - goto yy681; - goto yy682; + goto yy676; + goto yy677; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy684; - goto yy683; + goto yy679; + goto yy678; } else { if (yych <= 0xF0) - goto yy685; + goto yy680; if (yych <= 0xF3) - goto yy686; + goto yy681; if (yych <= 0xF4) - goto yy687; - goto yy679; + goto yy682; + goto yy674; } } } @@ -11959,14 +11919,14 @@ bufsize_t _scan_spacechars(const unsigned char *p) { }; yych = *p; if (yybm[0 + yych] & 128) { - goto yy692; + goto yy687; } ++p; { return 0; } - yy692: + yy687: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy692; + goto yy687; } { return (bufsize_t)(p - start); } } @@ -11995,115 +11955,115 @@ bufsize_t _scan_atx_heading_start(const unsigned char *p) { }; yych = *p; if (yych == '#') - goto yy695; + goto yy690; ++p; - yy694 : { return 0; } - yy695: + yy689 : { return 0; } + yy690: yych = *(marker = ++p); if (yybm[0 + yych] & 128) { - goto yy696; + goto yy691; } if (yych <= '\f') { if (yych <= 0x08) - goto yy694; + goto yy689; if (yych <= '\n') - goto yy698; - goto yy694; + goto yy693; + goto yy689; } else { if (yych <= '\r') - goto yy698; + goto yy693; if (yych == '#') - goto yy699; - goto yy694; + goto yy694; + goto yy689; } - yy696: + yy691: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy696; + goto yy691; } - yy697 : { return (bufsize_t)(p - start); } - yy698: + yy692 : { return (bufsize_t)(p - start); } + yy693: ++p; - goto yy697; - yy699: + goto yy692; + yy694: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy696; + goto yy691; } if (yych <= '\f') { if (yych <= 0x08) - goto yy700; + goto yy695; if (yych <= '\n') - goto yy698; + goto yy693; } else { if (yych <= '\r') - goto yy698; + goto yy693; if (yych == '#') - goto yy701; + goto yy696; } - yy700: + yy695: p = marker; - goto yy694; - yy701: + goto yy689; + yy696: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy696; + goto yy691; } if (yych <= '\f') { if (yych <= 0x08) - goto yy700; + goto yy695; if (yych <= '\n') - goto yy698; - goto yy700; + goto yy693; + goto yy695; } else { if (yych <= '\r') - goto yy698; + goto yy693; if (yych != '#') - goto yy700; + goto yy695; } yych = *++p; if (yybm[0 + yych] & 128) { - goto yy696; + goto yy691; } if (yych <= '\f') { if (yych <= 0x08) - goto yy700; + goto yy695; if (yych <= '\n') - goto yy698; - goto yy700; + goto yy693; + goto yy695; } else { if (yych <= '\r') - goto yy698; + goto yy693; if (yych != '#') - goto yy700; + goto yy695; } yych = *++p; if (yybm[0 + yych] & 128) { - goto yy696; + goto yy691; } if (yych <= '\f') { if (yych <= 0x08) - goto yy700; + goto yy695; if (yych <= '\n') - goto yy698; - goto yy700; + goto yy693; + goto yy695; } else { if (yych <= '\r') - goto yy698; + goto yy693; if (yych != '#') - goto yy700; + goto yy695; } yych = *++p; if (yybm[0 + yych] & 128) { - goto yy696; + goto yy691; } if (yych <= 0x08) - goto yy700; + goto yy695; if (yych <= '\n') - goto yy698; + goto yy693; if (yych == '\r') - goto yy698; - goto yy700; + goto yy693; + goto yy695; } } @@ -12130,122 +12090,122 @@ bufsize_t _scan_setext_heading_line(const unsigned char *p) { }; yych = *p; if (yych == '-') - goto yy704; + goto yy699; if (yych == '=') - goto yy705; + goto yy700; ++p; - yy703 : { return 0; } - yy704: + yy698 : { return 0; } + yy699: yych = *(marker = ++p); if (yybm[0 + yych] & 64) { - goto yy710; + goto yy705; } if (yych <= '\f') { if (yych <= 0x08) - goto yy703; + goto yy698; if (yych <= '\n') - goto yy707; - goto yy703; + goto yy702; + goto yy698; } else { if (yych <= '\r') - goto yy707; + goto yy702; if (yych == ' ') - goto yy707; - goto yy703; + goto yy702; + goto yy698; } - yy705: + yy700: yych = *(marker = ++p); if (yybm[0 + yych] & 128) { - goto yy714; + goto yy709; } if (yych <= '\f') { if (yych <= 0x08) - goto yy703; + goto yy698; if (yych <= '\n') - goto yy712; - goto yy703; + goto yy707; + goto yy698; } else { if (yych <= '\r') - goto yy712; + goto yy707; if (yych == ' ') - goto yy712; - goto yy703; + goto yy707; + goto yy698; } - yy706: + yy701: yych = *++p; - yy707: + yy702: if (yybm[0 + yych] & 32) { - goto yy706; + goto yy701; } if (yych <= 0x08) - goto yy708; + goto yy703; if (yych <= '\n') - goto yy709; + goto yy704; if (yych == '\r') - goto yy709; - yy708: + goto yy704; + yy703: p = marker; - goto yy703; - yy709: + goto yy698; + yy704: ++p; { return 2; } - yy710: + yy705: yych = *++p; if (yybm[0 + yych] & 32) { - goto yy706; + goto yy701; } if (yych <= '\f') { if (yych <= 0x08) - goto yy708; + goto yy703; if (yych <= '\n') - goto yy709; - goto yy708; + goto yy704; + goto yy703; } else { if (yych <= '\r') - goto yy709; + goto yy704; if (yych == '-') - goto yy710; - goto yy708; + goto yy705; + goto yy703; } - yy711: + yy706: yych = *++p; - yy712: + yy707: if (yych <= '\f') { if (yych <= 0x08) - goto yy708; + goto yy703; if (yych <= '\t') - goto yy711; + goto yy706; if (yych >= '\v') - goto yy708; + goto yy703; } else { if (yych <= '\r') - goto yy713; + goto yy708; if (yych == ' ') - goto yy711; - goto yy708; + goto yy706; + goto yy703; } - yy713: + yy708: ++p; { return 1; } - yy714: + yy709: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy714; + goto yy709; } if (yych <= '\f') { if (yych <= 0x08) - goto yy708; + goto yy703; if (yych <= '\t') - goto yy711; + goto yy706; if (yych <= '\n') - goto yy713; - goto yy708; + goto yy708; + goto yy703; } else { if (yych <= '\r') - goto yy713; + goto yy708; if (yych == ' ') - goto yy711; - goto yy708; + goto yy706; + goto yy703; } } } @@ -12280,321 +12240,321 @@ bufsize_t _scan_open_code_fence(const unsigned char *p) { }; yych = *p; if (yych == '`') - goto yy717; + goto yy712; if (yych == '~') - goto yy718; + goto yy713; ++p; - yy716 : { return 0; } - yy717: + yy711 : { return 0; } + yy712: yych = *(marker = ++p); if (yych == '`') - goto yy719; - goto yy716; - yy718: + goto yy714; + goto yy711; + yy713: yych = *(marker = ++p); if (yych == '~') - goto yy721; - goto yy716; - yy719: + goto yy716; + goto yy711; + yy714: yych = *++p; if (yybm[0 + yych] & 16) { - goto yy722; + goto yy717; } - yy720: + yy715: p = marker; - goto yy716; - yy721: + goto yy711; + yy716: yych = *++p; if (yybm[0 + yych] & 32) { - goto yy723; + goto yy718; } - goto yy720; - yy722: + goto yy715; + yy717: yych = *++p; if (yybm[0 + yych] & 16) { - goto yy722; + goto yy717; } if (yych <= 0xDF) { if (yych <= '\f') { if (yych <= 0x00) - goto yy720; + goto yy715; if (yych == '\n') { marker = p; - goto yy725; + goto yy720; } marker = p; - goto yy724; + goto yy719; } else { if (yych <= '\r') { marker = p; - goto yy725; + goto yy720; } if (yych <= 0x7F) { marker = p; - goto yy724; + goto yy719; } if (yych <= 0xC1) - goto yy720; + goto yy715; marker = p; - goto yy726; + goto yy721; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) { marker = p; - goto yy727; + goto yy722; } if (yych == 0xED) { marker = p; - goto yy729; + goto yy724; } marker = p; - goto yy728; + goto yy723; } else { if (yych <= 0xF0) { marker = p; - goto yy730; + goto yy725; } if (yych <= 0xF3) { marker = p; - goto yy731; + goto yy726; } if (yych <= 0xF4) { marker = p; - goto yy732; + goto yy727; } - goto yy720; + goto yy715; } } - yy723: + yy718: yych = *++p; if (yybm[0 + yych] & 32) { - goto yy723; + goto yy718; } if (yych <= 0xDF) { if (yych <= '\f') { if (yych <= 0x00) - goto yy720; + goto yy715; if (yych == '\n') { marker = p; - goto yy734; + goto yy729; } marker = p; - goto yy733; + goto yy728; } else { if (yych <= '\r') { marker = p; - goto yy734; + goto yy729; } if (yych <= 0x7F) { marker = p; - goto yy733; + goto yy728; } if (yych <= 0xC1) - goto yy720; + goto yy715; marker = p; - goto yy735; + goto yy730; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) { marker = p; - goto yy736; + goto yy731; } if (yych == 0xED) { marker = p; - goto yy738; + goto yy733; } marker = p; - goto yy737; + goto yy732; } else { if (yych <= 0xF0) { marker = p; - goto yy739; + goto yy734; } if (yych <= 0xF3) { marker = p; - goto yy740; + goto yy735; } if (yych <= 0xF4) { marker = p; - goto yy741; + goto yy736; } - goto yy720; + goto yy715; } } - yy724: + yy719: yych = *++p; if (yybm[0 + yych] & 64) { - goto yy724; + goto yy719; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x00) - goto yy720; + goto yy715; if (yych >= 0x0E) - goto yy720; + goto yy715; } else { if (yych <= 0xDF) - goto yy726; + goto yy721; if (yych <= 0xE0) - goto yy727; - goto yy728; + goto yy722; + goto yy723; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy729; + goto yy724; if (yych <= 0xEF) - goto yy728; - goto yy730; + goto yy723; + goto yy725; } else { if (yych <= 0xF3) - goto yy731; + goto yy726; if (yych <= 0xF4) - goto yy732; - goto yy720; + goto yy727; + goto yy715; } } - yy725: + yy720: ++p; p = marker; { return (bufsize_t)(p - start); } - yy726: + yy721: yych = *++p; if (yych <= 0x7F) - goto yy720; + goto yy715; if (yych <= 0xBF) - goto yy724; - goto yy720; - yy727: + goto yy719; + goto yy715; + yy722: yych = *++p; if (yych <= 0x9F) - goto yy720; + goto yy715; if (yych <= 0xBF) - goto yy726; - goto yy720; - yy728: + goto yy721; + goto yy715; + yy723: yych = *++p; if (yych <= 0x7F) - goto yy720; + goto yy715; if (yych <= 0xBF) - goto yy726; - goto yy720; - yy729: + goto yy721; + goto yy715; + yy724: yych = *++p; if (yych <= 0x7F) - goto yy720; + goto yy715; if (yych <= 0x9F) - goto yy726; - goto yy720; - yy730: + goto yy721; + goto yy715; + yy725: yych = *++p; if (yych <= 0x8F) - goto yy720; + goto yy715; if (yych <= 0xBF) - goto yy728; - goto yy720; - yy731: + goto yy723; + goto yy715; + yy726: yych = *++p; if (yych <= 0x7F) - goto yy720; + goto yy715; if (yych <= 0xBF) - goto yy728; - goto yy720; - yy732: + goto yy723; + goto yy715; + yy727: yych = *++p; if (yych <= 0x7F) - goto yy720; + goto yy715; if (yych <= 0x8F) - goto yy728; - goto yy720; - yy733: + goto yy723; + goto yy715; + yy728: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy733; + goto yy728; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x00) - goto yy720; + goto yy715; if (yych >= 0x0E) - goto yy720; + goto yy715; } else { if (yych <= 0xDF) - goto yy735; + goto yy730; if (yych <= 0xE0) - goto yy736; - goto yy737; + goto yy731; + goto yy732; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy738; + goto yy733; if (yych <= 0xEF) - goto yy737; - goto yy739; + goto yy732; + goto yy734; } else { if (yych <= 0xF3) - goto yy740; + goto yy735; if (yych <= 0xF4) - goto yy741; - goto yy720; + goto yy736; + goto yy715; } } - yy734: + yy729: ++p; p = marker; { return (bufsize_t)(p - start); } - yy735: + yy730: yych = *++p; if (yych <= 0x7F) - goto yy720; + goto yy715; if (yych <= 0xBF) - goto yy733; - goto yy720; - yy736: + goto yy728; + goto yy715; + yy731: yych = *++p; if (yych <= 0x9F) - goto yy720; + goto yy715; if (yych <= 0xBF) - goto yy735; - goto yy720; - yy737: + goto yy730; + goto yy715; + yy732: yych = *++p; if (yych <= 0x7F) - goto yy720; + goto yy715; if (yych <= 0xBF) - goto yy735; - goto yy720; - yy738: + goto yy730; + goto yy715; + yy733: yych = *++p; if (yych <= 0x7F) - goto yy720; + goto yy715; if (yych <= 0x9F) - goto yy735; - goto yy720; - yy739: + goto yy730; + goto yy715; + yy734: yych = *++p; if (yych <= 0x8F) - goto yy720; + goto yy715; if (yych <= 0xBF) - goto yy737; - goto yy720; - yy740: + goto yy732; + goto yy715; + yy735: yych = *++p; if (yych <= 0x7F) - goto yy720; + goto yy715; if (yych <= 0xBF) - goto yy737; - goto yy720; - yy741: + goto yy732; + goto yy715; + yy736: yych = *++p; if (yych <= 0x7F) - goto yy720; + goto yy715; if (yych <= 0x8F) - goto yy737; - goto yy720; + goto yy732; + goto yy715; } } @@ -12621,123 +12581,123 @@ bufsize_t _scan_close_code_fence(const unsigned char *p) { }; yych = *p; if (yych == '`') - goto yy744; + goto yy739; if (yych == '~') - goto yy745; + goto yy740; ++p; - yy743 : { return 0; } - yy744: + yy738 : { return 0; } + yy739: yych = *(marker = ++p); if (yych == '`') - goto yy746; - goto yy743; - yy745: + goto yy741; + goto yy738; + yy740: yych = *(marker = ++p); if (yych == '~') - goto yy748; - goto yy743; - yy746: + goto yy743; + goto yy738; + yy741: yych = *++p; if (yybm[0 + yych] & 32) { - goto yy749; + goto yy744; } - yy747: + yy742: p = marker; - goto yy743; - yy748: + goto yy738; + yy743: yych = *++p; if (yybm[0 + yych] & 64) { - goto yy750; + goto yy745; } - goto yy747; - yy749: + goto yy742; + yy744: yych = *++p; if (yybm[0 + yych] & 32) { - goto yy749; + goto yy744; } if (yych <= '\f') { if (yych <= 0x08) - goto yy747; + goto yy742; if (yych <= '\t') { marker = p; - goto yy751; + goto yy746; } if (yych <= '\n') { marker = p; - goto yy752; + goto yy747; } - goto yy747; + goto yy742; } else { if (yych <= '\r') { marker = p; - goto yy752; + goto yy747; } if (yych == ' ') { marker = p; - goto yy751; + goto yy746; } - goto yy747; + goto yy742; } - yy750: + yy745: yych = *++p; if (yybm[0 + yych] & 64) { - goto yy750; + goto yy745; } if (yych <= '\f') { if (yych <= 0x08) - goto yy747; + goto yy742; if (yych <= '\t') { marker = p; - goto yy753; + goto yy748; } if (yych <= '\n') { marker = p; - goto yy754; + goto yy749; } - goto yy747; + goto yy742; } else { if (yych <= '\r') { marker = p; - goto yy754; + goto yy749; } if (yych == ' ') { marker = p; - goto yy753; + goto yy748; } - goto yy747; + goto yy742; } - yy751: + yy746: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy751; + goto yy746; } if (yych <= 0x08) - goto yy747; + goto yy742; if (yych <= '\n') - goto yy752; - if (yych != '\r') goto yy747; - yy752: + if (yych != '\r') + goto yy742; + yy747: ++p; p = marker; { return (bufsize_t)(p - start); } - yy753: + yy748: yych = *++p; if (yych <= '\f') { if (yych <= 0x08) - goto yy747; + goto yy742; if (yych <= '\t') - goto yy753; + goto yy748; if (yych >= '\v') - goto yy747; + goto yy742; } else { if (yych <= '\r') - goto yy754; + goto yy749; if (yych == ' ') - goto yy753; - goto yy747; + goto yy748; + goto yy742; } - yy754: + yy749: ++p; p = marker; { return (bufsize_t)(p - start); } @@ -12754,890 +12714,890 @@ bufsize_t _scan_entity(const unsigned char *p) { unsigned char yych; yych = *p; if (yych == '&') - goto yy757; + goto yy752; ++p; - yy756 : { return 0; } - yy757: + yy751 : { return 0; } + yy752: yych = *(marker = ++p); if (yych <= '@') { if (yych != '#') - goto yy756; + goto yy751; } else { if (yych <= 'Z') - goto yy759; + goto yy754; if (yych <= '`') - goto yy756; + goto yy751; if (yych <= 'z') - goto yy759; - goto yy756; + goto yy754; + goto yy751; } yych = *++p; if (yych <= 'W') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy760; + goto yy755; } else { if (yych <= 'X') - goto yy761; + goto yy756; if (yych == 'x') - goto yy761; + goto yy756; } - yy758: + yy753: p = marker; - goto yy756; - yy759: + goto yy751; + yy754: yych = *++p; if (yych <= '@') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy762; - goto yy758; + goto yy757; + goto yy753; } else { if (yych <= 'Z') - goto yy762; + goto yy757; if (yych <= '`') - goto yy758; + goto yy753; if (yych <= 'z') - goto yy762; - goto yy758; + goto yy757; + goto yy753; } - yy760: + yy755: yych = *++p; if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy763; + goto yy758; if (yych == ';') - goto yy764; - goto yy758; - yy761: + goto yy759; + goto yy753; + yy756: yych = *++p; if (yych <= '@') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy765; - goto yy758; + goto yy760; + goto yy753; } else { if (yych <= 'F') - goto yy765; + goto yy760; if (yych <= '`') - goto yy758; + goto yy753; if (yych <= 'f') - goto yy765; - goto yy758; + goto yy760; + goto yy753; } - yy762: + yy757: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy766; + goto yy761; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; - goto yy766; + goto yy753; + goto yy761; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych <= 'z') - goto yy766; - goto yy758; + goto yy761; + goto yy753; } } - yy763: + yy758: yych = *++p; if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy767; + goto yy762; if (yych != ';') - goto yy758; - yy764: + goto yy753; + yy759: ++p; { return (bufsize_t)(p - start); } - yy765: + yy760: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy768; + goto yy763; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'F') { if (yych <= '@') - goto yy758; - goto yy768; + goto yy753; + goto yy763; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych <= 'f') - goto yy768; - goto yy758; + goto yy763; + goto yy753; } } - yy766: + yy761: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy769; + goto yy764; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; - goto yy769; + goto yy753; + goto yy764; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych <= 'z') - goto yy769; - goto yy758; + goto yy764; + goto yy753; } } - yy767: + yy762: yych = *++p; if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy770; + goto yy765; if (yych == ';') - goto yy764; - goto yy758; - yy768: + goto yy759; + goto yy753; + yy763: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy771; + goto yy766; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'F') { if (yych <= '@') - goto yy758; - goto yy771; + goto yy753; + goto yy766; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych <= 'f') - goto yy771; - goto yy758; + goto yy766; + goto yy753; } } - yy769: + yy764: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy772; + goto yy767; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; - goto yy772; + goto yy753; + goto yy767; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych <= 'z') - goto yy772; - goto yy758; + goto yy767; + goto yy753; } } - yy770: + yy765: yych = *++p; if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy773; + goto yy768; if (yych == ';') - goto yy764; - goto yy758; - yy771: + goto yy759; + goto yy753; + yy766: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy774; + goto yy769; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'F') { if (yych <= '@') - goto yy758; - goto yy774; + goto yy753; + goto yy769; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych <= 'f') - goto yy774; - goto yy758; + goto yy769; + goto yy753; } } - yy772: + yy767: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy775; + goto yy770; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; - goto yy775; + goto yy753; + goto yy770; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych <= 'z') - goto yy775; - goto yy758; + goto yy770; + goto yy753; } } - yy773: + yy768: yych = *++p; if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy776; + goto yy771; if (yych == ';') - goto yy764; - goto yy758; - yy774: + goto yy759; + goto yy753; + yy769: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy777; + goto yy772; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'F') { if (yych <= '@') - goto yy758; - goto yy777; + goto yy753; + goto yy772; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych <= 'f') - goto yy777; - goto yy758; + goto yy772; + goto yy753; } } - yy775: + yy770: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy778; + goto yy773; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; - goto yy778; + goto yy753; + goto yy773; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych <= 'z') - goto yy778; - goto yy758; + goto yy773; + goto yy753; } } - yy776: + yy771: yych = *++p; if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy779; + goto yy774; if (yych == ';') - goto yy764; - goto yy758; - yy777: + goto yy759; + goto yy753; + yy772: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy779; + goto yy774; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'F') { if (yych <= '@') - goto yy758; - goto yy779; + goto yy753; + goto yy774; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych <= 'f') - goto yy779; - goto yy758; + goto yy774; + goto yy753; } } - yy778: + yy773: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy780; + goto yy775; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; - goto yy780; + goto yy753; + goto yy775; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych <= 'z') - goto yy780; - goto yy758; + goto yy775; + goto yy753; } } - yy779: + yy774: yych = *++p; if (yych == ';') - goto yy764; - goto yy758; - yy780: + goto yy759; + goto yy753; + yy775: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy781; + goto yy776; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; + goto yy753; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych >= '{') - goto yy758; + goto yy753; } } - yy781: + yy776: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy782; + goto yy777; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; + goto yy753; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych >= '{') - goto yy758; + goto yy753; } } - yy782: + yy777: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy783; + goto yy778; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; + goto yy753; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych >= '{') - goto yy758; + goto yy753; } } - yy783: + yy778: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy784; + goto yy779; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; + goto yy753; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych >= '{') - goto yy758; + goto yy753; } } - yy784: + yy779: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy785; + goto yy780; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; + goto yy753; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych >= '{') - goto yy758; + goto yy753; } } - yy785: + yy780: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy786; + goto yy781; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; + goto yy753; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych >= '{') - goto yy758; + goto yy753; } } - yy786: + yy781: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy787; + goto yy782; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; + goto yy753; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych >= '{') - goto yy758; + goto yy753; } } - yy787: + yy782: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy788; + goto yy783; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; + goto yy753; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych >= '{') - goto yy758; + goto yy753; } } - yy788: + yy783: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy789; + goto yy784; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; + goto yy753; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych >= '{') - goto yy758; + goto yy753; } } - yy789: + yy784: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy790; + goto yy785; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; + goto yy753; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych >= '{') - goto yy758; + goto yy753; } } - yy790: + yy785: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy791; + goto yy786; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; + goto yy753; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych >= '{') - goto yy758; + goto yy753; } } - yy791: + yy786: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy792; + goto yy787; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; + goto yy753; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych >= '{') - goto yy758; + goto yy753; } } - yy792: + yy787: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy793; + goto yy788; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; + goto yy753; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych >= '{') - goto yy758; + goto yy753; } } - yy793: + yy788: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy794; + goto yy789; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; + goto yy753; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych >= '{') - goto yy758; + goto yy753; } } - yy794: + yy789: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy795; + goto yy790; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; + goto yy753; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych >= '{') - goto yy758; + goto yy753; } } - yy795: + yy790: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy796; + goto yy791; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; + goto yy753; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych >= '{') - goto yy758; + goto yy753; } } - yy796: + yy791: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy797; + goto yy792; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; + goto yy753; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych >= '{') - goto yy758; + goto yy753; } } - yy797: + yy792: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy798; + goto yy793; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; + goto yy753; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych >= '{') - goto yy758; + goto yy753; } } - yy798: + yy793: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy799; + goto yy794; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; + goto yy753; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych >= '{') - goto yy758; + goto yy753; } } - yy799: + yy794: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy800; + goto yy795; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; + goto yy753; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych >= '{') - goto yy758; + goto yy753; } } - yy800: + yy795: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy801; + goto yy796; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; + goto yy753; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych >= '{') - goto yy758; + goto yy753; } } - yy801: + yy796: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy802; + goto yy797; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; + goto yy753; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych >= '{') - goto yy758; + goto yy753; } } - yy802: + yy797: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy803; + goto yy798; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; + goto yy753; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych >= '{') - goto yy758; + goto yy753; } } - yy803: + yy798: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy758; + goto yy753; if (yych <= '9') - goto yy779; + goto yy774; if (yych <= ':') - goto yy758; - goto yy764; + goto yy753; + goto yy759; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy758; - goto yy779; + goto yy753; + goto yy774; } else { if (yych <= '`') - goto yy758; + goto yy753; if (yych <= 'z') - goto yy779; - goto yy758; + goto yy774; + goto yy753; } } } @@ -13656,305 +13616,305 @@ bufsize_t _scan_dangerous_url(const unsigned char *p) { if (yych <= 'V') { if (yych <= 'F') { if (yych == 'D') - goto yy806; + goto yy801; if (yych >= 'F') - goto yy807; + goto yy802; } else { if (yych == 'J') - goto yy808; + goto yy803; if (yych >= 'V') - goto yy809; + goto yy804; } } else { if (yych <= 'f') { if (yych == 'd') - goto yy806; + goto yy801; if (yych >= 'f') - goto yy807; + goto yy802; } else { if (yych <= 'j') { if (yych >= 'j') - goto yy808; + goto yy803; } else { if (yych == 'v') - goto yy809; + goto yy804; } } } ++p; - yy805 : { return 0; } - yy806: + yy800 : { return 0; } + yy801: yyaccept = 0; yych = *(marker = ++p); if (yych == 'A') - goto yy810; + goto yy805; if (yych == 'a') - goto yy810; - goto yy805; - yy807: + goto yy805; + goto yy800; + yy802: yyaccept = 0; yych = *(marker = ++p); if (yych == 'I') - goto yy812; + goto yy807; if (yych == 'i') - goto yy812; - goto yy805; - yy808: + goto yy807; + goto yy800; + yy803: yyaccept = 0; yych = *(marker = ++p); if (yych == 'A') - goto yy813; + goto yy808; if (yych == 'a') - goto yy813; - goto yy805; - yy809: + goto yy808; + goto yy800; + yy804: yyaccept = 0; yych = *(marker = ++p); if (yych == 'B') - goto yy814; + goto yy809; if (yych == 'b') - goto yy814; - goto yy805; - yy810: + goto yy809; + goto yy800; + yy805: yych = *++p; if (yych == 'T') - goto yy815; + goto yy810; if (yych == 't') - goto yy815; - yy811: + goto yy810; + yy806: p = marker; if (yyaccept == 0) { - goto yy805; + goto yy800; } else { - goto yy823; + goto yy818; } - yy812: + yy807: yych = *++p; if (yych == 'L') - goto yy816; + goto yy811; if (yych == 'l') - goto yy816; - goto yy811; - yy813: + goto yy811; + goto yy806; + yy808: yych = *++p; if (yych == 'V') - goto yy817; + goto yy812; if (yych == 'v') - goto yy817; - goto yy811; - yy814: + goto yy812; + goto yy806; + yy809: yych = *++p; if (yych == 'S') - goto yy818; + goto yy813; if (yych == 's') - goto yy818; - goto yy811; - yy815: + goto yy813; + goto yy806; + yy810: yych = *++p; if (yych == 'A') - goto yy819; + goto yy814; if (yych == 'a') - goto yy819; - goto yy811; - yy816: + goto yy814; + goto yy806; + yy811: yych = *++p; if (yych == 'E') - goto yy820; + goto yy815; if (yych == 'e') - goto yy820; - goto yy811; - yy817: + goto yy815; + goto yy806; + yy812: yych = *++p; if (yych == 'A') - goto yy814; + goto yy809; if (yych == 'a') - goto yy814; - goto yy811; - yy818: + goto yy809; + goto yy806; + yy813: yych = *++p; if (yych == 'C') - goto yy821; + goto yy816; if (yych == 'c') - goto yy821; - goto yy811; - yy819: + goto yy816; + goto yy806; + yy814: yych = *++p; if (yych == ':') - goto yy822; - goto yy811; - yy820: + goto yy817; + goto yy806; + yy815: yych = *++p; if (yych == ':') - goto yy824; - goto yy811; - yy821: + goto yy819; + goto yy806; + yy816: yych = *++p; if (yych == 'R') - goto yy825; + goto yy820; if (yych == 'r') - goto yy825; - goto yy811; - yy822: + goto yy820; + goto yy806; + yy817: yyaccept = 1; yych = *(marker = ++p); if (yych == 'I') - goto yy826; + goto yy821; if (yych == 'i') - goto yy826; - yy823 : { return (bufsize_t)(p - start); } - yy824: + goto yy821; + yy818 : { return (bufsize_t)(p - start); } + yy819: ++p; - goto yy823; - yy825: + goto yy818; + yy820: yych = *++p; if (yych == 'I') - goto yy827; + goto yy822; if (yych == 'i') - goto yy827; - goto yy811; - yy826: + goto yy822; + goto yy806; + yy821: yych = *++p; if (yych == 'M') - goto yy828; + goto yy823; if (yych == 'm') - goto yy828; - goto yy811; - yy827: + goto yy823; + goto yy806; + yy822: yych = *++p; if (yych == 'P') - goto yy829; + goto yy824; if (yych == 'p') - goto yy829; - goto yy811; - yy828: + goto yy824; + goto yy806; + yy823: yych = *++p; if (yych == 'A') - goto yy830; + goto yy825; if (yych == 'a') - goto yy830; - goto yy811; - yy829: + goto yy825; + goto yy806; + yy824: yych = *++p; if (yych == 'T') - goto yy820; + goto yy815; if (yych == 't') - goto yy820; - goto yy811; - yy830: + goto yy815; + goto yy806; + yy825: yych = *++p; if (yych == 'G') - goto yy831; + goto yy826; if (yych != 'g') - goto yy811; - yy831: + goto yy806; + yy826: yych = *++p; if (yych == 'E') - goto yy832; + goto yy827; if (yych != 'e') - goto yy811; - yy832: + goto yy806; + yy827: yych = *++p; if (yych != '/') - goto yy811; + goto yy806; yych = *++p; if (yych <= 'W') { if (yych <= 'J') { if (yych == 'G') - goto yy833; + goto yy828; if (yych <= 'I') - goto yy811; - goto yy834; + goto yy806; + goto yy829; } else { if (yych == 'P') - goto yy835; + goto yy830; if (yych <= 'V') - goto yy811; - goto yy836; + goto yy806; + goto yy831; } } else { if (yych <= 'j') { if (yych == 'g') - goto yy833; + goto yy828; if (yych <= 'i') - goto yy811; - goto yy834; + goto yy806; + goto yy829; } else { if (yych <= 'p') { if (yych <= 'o') - goto yy811; - goto yy835; + goto yy806; + goto yy830; } else { if (yych == 'w') - goto yy836; - goto yy811; + goto yy831; + goto yy806; } } } - yy833: + yy828: yych = *++p; if (yych == 'I') - goto yy837; + goto yy832; if (yych == 'i') - goto yy837; - goto yy811; - yy834: + goto yy832; + goto yy806; + yy829: yych = *++p; if (yych == 'P') - goto yy838; + goto yy833; if (yych == 'p') - goto yy838; - goto yy811; - yy835: + goto yy833; + goto yy806; + yy830: yych = *++p; if (yych == 'N') - goto yy839; + goto yy834; if (yych == 'n') - goto yy839; - goto yy811; - yy836: + goto yy834; + goto yy806; + yy831: yych = *++p; if (yych == 'E') - goto yy840; + goto yy835; if (yych == 'e') - goto yy840; - goto yy811; - yy837: + goto yy835; + goto yy806; + yy832: yych = *++p; if (yych == 'F') - goto yy841; + goto yy836; if (yych == 'f') - goto yy841; - goto yy811; - yy838: + goto yy836; + goto yy806; + yy833: yych = *++p; if (yych == 'E') - goto yy839; + goto yy834; if (yych != 'e') - goto yy811; - yy839: + goto yy806; + yy834: yych = *++p; if (yych == 'G') - goto yy841; + goto yy836; if (yych == 'g') - goto yy841; - goto yy811; - yy840: + goto yy836; + goto yy806; + yy835: yych = *++p; if (yych == 'B') - goto yy842; + goto yy837; if (yych == 'b') - goto yy842; - goto yy811; - yy841: + goto yy837; + goto yy806; + yy836: ++p; { return 0; } - yy842: + yy837: yych = *++p; if (yych == 'P') - goto yy841; + goto yy836; if (yych == 'p') - goto yy841; - goto yy811; + goto yy836; + goto yy806; } } @@ -13985,111 +13945,111 @@ bufsize_t _scan_footnote_definition(const unsigned char *p) { }; yych = *p; if (yych == '[') - goto yy845; + goto yy840; ++p; - yy844 : { return 0; } - yy845: + yy839 : { return 0; } + yy840: yych = *(marker = ++p); if (yych != '^') - goto yy844; + goto yy839; yych = *++p; if (yych != ']') - goto yy848; - yy846: + goto yy843; + yy841: p = marker; - goto yy844; - yy847: + goto yy839; + yy842: yych = *++p; - yy848: + yy843: if (yybm[0 + yych] & 64) { - goto yy847; + goto yy842; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= ' ') - goto yy846; + goto yy841; if (yych <= ']') - goto yy856; - goto yy846; + goto yy851; + goto yy841; } else { if (yych <= 0xDF) - goto yy849; + goto yy844; if (yych <= 0xE0) - goto yy850; - goto yy851; + goto yy845; + goto yy846; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy852; + goto yy847; if (yych <= 0xEF) - goto yy851; - goto yy853; + goto yy846; + goto yy848; } else { if (yych <= 0xF3) - goto yy854; + goto yy849; if (yych <= 0xF4) - goto yy855; - goto yy846; + goto yy850; + goto yy841; } } - yy849: + yy844: yych = *++p; if (yych <= 0x7F) - goto yy846; + goto yy841; if (yych <= 0xBF) - goto yy847; - goto yy846; - yy850: + goto yy842; + goto yy841; + yy845: yych = *++p; if (yych <= 0x9F) - goto yy846; + goto yy841; if (yych <= 0xBF) - goto yy849; - goto yy846; - yy851: + goto yy844; + goto yy841; + yy846: yych = *++p; if (yych <= 0x7F) - goto yy846; + goto yy841; if (yych <= 0xBF) - goto yy849; - goto yy846; - yy852: + goto yy844; + goto yy841; + yy847: yych = *++p; if (yych <= 0x7F) - goto yy846; + goto yy841; if (yych <= 0x9F) - goto yy849; - goto yy846; - yy853: + goto yy844; + goto yy841; + yy848: yych = *++p; if (yych <= 0x8F) - goto yy846; + goto yy841; if (yych <= 0xBF) - goto yy851; - goto yy846; - yy854: + goto yy846; + goto yy841; + yy849: yych = *++p; if (yych <= 0x7F) - goto yy846; + goto yy841; if (yych <= 0xBF) - goto yy851; - goto yy846; - yy855: + goto yy846; + goto yy841; + yy850: yych = *++p; if (yych <= 0x7F) - goto yy846; + goto yy841; if (yych <= 0x8F) - goto yy851; - goto yy846; - yy856: + goto yy846; + goto yy841; + yy851: yych = *++p; if (yych != ':') - goto yy846; - yy857: + goto yy841; + yy852: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy857; + goto yy852; } { return (bufsize_t)(p - start); } } diff --git a/src/scanners.re b/src/scanners.re index 138fc4286..ac4b9cf4c 100644 --- a/src/scanners.re +++ b/src/scanners.re @@ -54,7 +54,7 @@ bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c, opentag = tagname attribute* spacechar* [/]? [>]; closetag = [/] tagname spacechar* [>]; - htmlcomment = "-->" | "--->" | "--" ([^\x00-]+ | "-" [^\x00-] | "--" [^\x00>])+ "-->"; + htmlcomment = "--" ([^\x00-]+ | "-" [^\x00-] | "--" [^\x00>])* "-->"; processinginstruction = ([^?>\x00]+ | [?][^>\x00] | [>])+; diff --git a/test/spec.txt b/test/spec.txt index 170276156..eaab9032d 100644 --- a/test/spec.txt +++ b/test/spec.txt @@ -130,7 +130,7 @@ questions it does not answer: not require that. This is hardly a "corner case," and divergences between implementations on this issue often lead to surprises for users in real documents. (See [this comment by John - Gruber](http://article.gmane.org/gmane.text.markdown.general/1997).) + Gruber](https://web.archive.org/web/20170611172104/http://article.gmane.org/gmane.text.markdown.general/1997).) 2. Is a blank line needed before a block quote or heading? Most implementations do not require the blank line. However, @@ -138,7 +138,7 @@ questions it does not answer: also to ambiguities in parsing (note that some implementations put the heading inside the blockquote, while others do not). (John Gruber has also spoken [in favor of requiring the blank - lines](http://article.gmane.org/gmane.text.markdown.general/2146).) + lines](https://web.archive.org/web/20170611172104/http://article.gmane.org/gmane.text.markdown.general/2146).) 3. Is a blank line needed before an indented code block? (`Markdown.pl` requires it, but this is not mentioned in the @@ -171,7 +171,7 @@ questions it does not answer: ``` (There are some relevant comments by John Gruber - [here](http://article.gmane.org/gmane.text.markdown.general/2554).) + [here](https://web.archive.org/web/20170611172104/http://article.gmane.org/gmane.text.markdown.general/2554).) 5. Can list markers be indented? Can ordered list markers be right-aligned? @@ -1001,10 +1001,7 @@ interpretable as a [code fence], [ATX heading][ATX headings], A [setext heading underline](@) is a sequence of `=` characters or a sequence of `-` characters, with no more than 3 -spaces indentation and any number of trailing spaces. If a line -containing a single `-` can be interpreted as an -empty [list items], it should be interpreted this way -and not as a [setext heading underline]. +spaces of indentation and any number of trailing spaces or tabs. The heading is a level 1 heading if `=` characters are used in the [setext heading underline], and a level 2 heading if `-` @@ -1638,7 +1635,7 @@ has been found, the code block contains all of the lines after the opening code fence until the end of the containing block (or document). (An alternative spec would require backtracking in the event that a closing code fence is not found. But this makes parsing -much less efficient, and there seems to be no real down side to the +much less efficient, and there seems to be no real downside to the behavior described here.) A fenced code block may interrupt a paragraph, and does not require @@ -2068,7 +2065,7 @@ followed by an uppercase ASCII letter.\ ``. -6. **Start condition:** line begins the string `<` or `` character. A [closing tag](@) consists of the string ``. -An [HTML comment](@) consists of ``, -where *text* does not start with `>` or `->`, does not end with `-`, -and does not contain `--`. (See the -[HTML5 spec](http://www.w3.org/TR/html5/syntax.html#comments).) +An [HTML comment](@) consists of ``, ``, or ``, and `-->` (see the +[HTML spec](https://html.spec.whatwg.org/multipage/parsing.html#markup-declaration-open-state)). A [processing instruction](@) consists of the string ` +foo . -

foo

+

foo

```````````````````````````````` - -```````````````````````````````` example -foo -. -

foo <!-- not a comment -- two hyphens -->

-```````````````````````````````` - - -Not comments: - ```````````````````````````````` example foo foo --> -foo +foo foo --> . -

foo <!--> foo -->

-

foo <!-- foo--->

+

foo foo -->

+

foo foo -->

```````````````````````````````` From ef5a49447d8b0fc949617ca0e878d7fed32aea5b Mon Sep 17 00:00:00 2001 From: Jeroen Ooms Date: Fri, 14 Oct 2022 13:41:46 +0200 Subject: [PATCH 11/60] Fix -Wstrict-prototypes warnings --- src/arena.c | 2 +- src/cmark-gfm.h | 4 ++-- src/cmark.c | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/arena.c b/src/arena.c index 83a15255f..13982c3fa 100644 --- a/src/arena.c +++ b/src/arena.c @@ -98,6 +98,6 @@ static void arena_free(void *ptr) { cmark_mem CMARK_ARENA_MEM_ALLOCATOR = {arena_calloc, arena_realloc, arena_free}; -cmark_mem *cmark_get_arena_mem_allocator() { +cmark_mem *cmark_get_arena_mem_allocator(void) { return &CMARK_ARENA_MEM_ALLOCATOR; } diff --git a/src/cmark-gfm.h b/src/cmark-gfm.h index 6fb28693c..f7f7b8038 100644 --- a/src/cmark-gfm.h +++ b/src/cmark-gfm.h @@ -111,13 +111,13 @@ typedef struct cmark_mem { * realloc and free. */ CMARK_GFM_EXPORT -cmark_mem *cmark_get_default_mem_allocator(); +cmark_mem *cmark_get_default_mem_allocator(void); /** An arena allocator; uses system calloc to allocate large * slabs of memory. Memory in these slabs is not reused at all. */ CMARK_GFM_EXPORT -cmark_mem *cmark_get_arena_mem_allocator(); +cmark_mem *cmark_get_arena_mem_allocator(void); /** Resets the arena allocator, quickly returning all used memory * to the operating system. diff --git a/src/cmark.c b/src/cmark.c index b3fad4b08..68c40c477 100644 --- a/src/cmark.c +++ b/src/cmark.c @@ -10,9 +10,9 @@ cmark_node_type CMARK_NODE_LAST_BLOCK = CMARK_NODE_FOOTNOTE_DEFINITION; cmark_node_type CMARK_NODE_LAST_INLINE = CMARK_NODE_FOOTNOTE_REFERENCE; -int cmark_version() { return CMARK_GFM_VERSION; } +int cmark_version(void) { return CMARK_GFM_VERSION; } -const char *cmark_version_string() { return CMARK_GFM_VERSION_STRING; } +const char *cmark_version_string(void) { return CMARK_GFM_VERSION_STRING; } static void *xcalloc(size_t nmem, size_t size) { void *ptr = calloc(nmem, size); @@ -38,7 +38,7 @@ static void xfree(void *ptr) { cmark_mem CMARK_DEFAULT_MEM_ALLOCATOR = {xcalloc, xrealloc, xfree}; -cmark_mem *cmark_get_default_mem_allocator() { +cmark_mem *cmark_get_default_mem_allocator(void) { return &CMARK_DEFAULT_MEM_ALLOCATOR; } From 5561ea7d52ee7c75519db9f3f69b49b6cea7a310 Mon Sep 17 00:00:00 2001 From: Steven Laidlaw Date: Thu, 27 Oct 2022 13:33:23 +0800 Subject: [PATCH 12/60] Updated spec.txt file to match current live version. --- .gitignore | 3 ++ test/spec.txt | 106 ++++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 89 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index d503137bb..477fd187c 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,9 @@ *.so.* *.dylib +# MacOS Files +*.DS_Store + # Executables *.exe *.out diff --git a/test/spec.txt b/test/spec.txt index 170276156..54b73580d 100644 --- a/test/spec.txt +++ b/test/spec.txt @@ -1,7 +1,7 @@ --- title: GitHub Flavored Markdown Spec -version: 0.29 -date: '2019-04-06' +version: 0.29.0.gfm.6 +date: '2022-09-14' license: '[CC-BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/)' ... @@ -2077,7 +2077,7 @@ followed by one of the strings (case-insensitive) `address`, `h1`, `h2`, `h3`, `h4`, `h5`, `h6`, `head`, `header`, `hr`, `html`, `iframe`, `legend`, `li`, `link`, `main`, `menu`, `menuitem`, `nav`, `noframes`, `ol`, `optgroup`, `option`, `p`, `param`, -`section`, `summary`, `table`, `tbody`, `td`, +`section`, `source`, `summary`, `table`, `tbody`, `td`, `tfoot`, `th`, `thead`, `title`, `tr`, `track`, `ul`, followed by [whitespace], the end of the line, the string `>`, or the string `/>`.\ @@ -5995,12 +5995,12 @@ Here are some nonentities: ```````````````````````````````` example   &x; &#; &#x; -� +� &#abcdef0; &ThisIsNotDefined; &hi?; .

&nbsp &x; &#; &#x; -&#987654321; +&#87654321; &#abcdef0; &ThisIsNotDefined; &hi?;

```````````````````````````````` @@ -7712,12 +7712,13 @@ __a GFM enables the `strikethrough` extension, where an additional emphasis type is available. -Strikethrough text is any text wrapped in two tildes (`~`). +Strikethrough text is any text wrapped in a matching pair of one or two tildes +(`~`). ```````````````````````````````` example strikethrough -~~Hi~~ Hello, world! +~~Hi~~ Hello, ~there~ world! . -

Hi Hello, world!

+

Hi Hello, there world!

```````````````````````````````` As with regular emphasis delimiters, a new paragraph will cause strikethrough @@ -7732,6 +7733,14 @@ new paragraph~~.

new paragraph~~.

```````````````````````````````` +Three or more tildes do not create a strikethrough: + +```````````````````````````````` example strikethrough +This will ~~~not~~~ strike. +. +

This will ~~~not~~~ strike.

+```````````````````````````````` + ## Links @@ -8232,9 +8241,8 @@ perform the *Unicode case fold*, strip leading and trailing matching reference link definitions, the one that comes first in the document is used. (It is desirable in such cases to emit a warning.) -The contents of the first link label are parsed as inlines, which are -used as the link's text. The link's URI and title are provided by the -matching [link reference definition]. +The link's URI and title are provided by the matching [link +reference definition]. Here is a simple example: @@ -8327,11 +8335,11 @@ emphasis grouping: ```````````````````````````````` example -[foo *bar][ref] +[foo *bar][ref]* [ref]: /uri . -

foo *bar

+

foo *bar*

```````````````````````````````` @@ -8379,11 +8387,11 @@ Matching is case-insensitive: Unicode case fold is used: ```````````````````````````````` example -[Толпой][Толпой] is a Russian word. +[ẞ] -[ТОЛПОЙ]: /url +[SS]: /url . -

Толпой is a Russian word.

+

```````````````````````````````` @@ -9295,7 +9303,7 @@ www.commonmark.org/hehttp://commonmark.org

(Visit https://encrypted.google.com/search?q=Markup+(business))

-

Anonymous FTP is available at ftp://foo.bar.baz.

```````````````````````````````` @@ -9358,6 +9363,66 @@ a.b-c_d@a.b_

a.b-c_d@a.b_

```````````````````````````````` +An [extended protocol autolink](@) will be recognised when a protocol is +recognised within any text node. Valid protocols are: + +* `mailto:` +* `xmpp:` + +The scheme of the protocol will automatically be added to the generated link. +All the rules of email address autolinking apply. + +```````````````````````````````` example autolink +mailto:foo@bar.baz + +mailto:a.b-c_d@a.b + +mailto:a.b-c_d@a.b. + +mailto:a.b-c_d@a.b/ + +mailto:a.b-c_d@a.b- + +mailto:a.b-c_d@a.b_ + +xmpp:foo@bar.baz + +xmpp:foo@bar.baz. +. +

mailto:foo@bar.baz

+

mailto:a.b-c_d@a.b

+

mailto:a.b-c_d@a.b.

+

mailto:a.b-c_d@a.b/

+

mailto:a.b-c_d@a.b-

+

mailto:a.b-c_d@a.b_

+

xmpp:foo@bar.baz

+

xmpp:foo@bar.baz.

+```````````````````````````````` + +A described in the [specification](https://datatracker.ietf.org/doc/rfc7622/) +`xmpp` offers an optional `/` followed by a resource. The resource can contain +all alphanumeric characters, as well as `@` and `.`. + +```````````````````````````````` example autolink +xmpp:foo@bar.baz/txt + +xmpp:foo@bar.baz/txt@bin + +xmpp:foo@bar.baz/txt@bin.com +. +

xmpp:foo@bar.baz/txt

+

xmpp:foo@bar.baz/txt@bin

+

xmpp:foo@bar.baz/txt@bin.com

+```````````````````````````````` + +Further `/` characters are not considered part of the domain: + +```````````````````````````````` example autolink +xmpp:foo@bar.baz/txt/bin +. +

xmpp:foo@bar.baz/txt/bin

+```````````````````````````````` + ## Raw HTML @@ -10224,3 +10289,4 @@ closers: After we're done, we remove all delimiters above `stack_bottom` from the delimiter stack. + From 09c416079329f890681d361b3c92e49f529cd8cf Mon Sep 17 00:00:00 2001 From: Steven Laidlaw Date: Thu, 27 Oct 2022 13:35:50 +0800 Subject: [PATCH 13/60] Pushed by mistake. Revert "Updated spec.txt file to match current live version." This reverts commit 5561ea7d52ee7c75519db9f3f69b49b6cea7a310. --- .gitignore | 3 -- test/spec.txt | 106 ++++++++++---------------------------------------- 2 files changed, 20 insertions(+), 89 deletions(-) diff --git a/.gitignore b/.gitignore index 477fd187c..d503137bb 100644 --- a/.gitignore +++ b/.gitignore @@ -14,9 +14,6 @@ *.so.* *.dylib -# MacOS Files -*.DS_Store - # Executables *.exe *.out diff --git a/test/spec.txt b/test/spec.txt index 54b73580d..170276156 100644 --- a/test/spec.txt +++ b/test/spec.txt @@ -1,7 +1,7 @@ --- title: GitHub Flavored Markdown Spec -version: 0.29.0.gfm.6 -date: '2022-09-14' +version: 0.29 +date: '2019-04-06' license: '[CC-BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/)' ... @@ -2077,7 +2077,7 @@ followed by one of the strings (case-insensitive) `address`, `h1`, `h2`, `h3`, `h4`, `h5`, `h6`, `head`, `header`, `hr`, `html`, `iframe`, `legend`, `li`, `link`, `main`, `menu`, `menuitem`, `nav`, `noframes`, `ol`, `optgroup`, `option`, `p`, `param`, -`section`, `source`, `summary`, `table`, `tbody`, `td`, +`section`, `summary`, `table`, `tbody`, `td`, `tfoot`, `th`, `thead`, `title`, `tr`, `track`, `ul`, followed by [whitespace], the end of the line, the string `>`, or the string `/>`.\ @@ -5995,12 +5995,12 @@ Here are some nonentities: ```````````````````````````````` example   &x; &#; &#x; -� +� &#abcdef0; &ThisIsNotDefined; &hi?; .

&nbsp &x; &#; &#x; -&#87654321; +&#987654321; &#abcdef0; &ThisIsNotDefined; &hi?;

```````````````````````````````` @@ -7712,13 +7712,12 @@ __a GFM enables the `strikethrough` extension, where an additional emphasis type is available. -Strikethrough text is any text wrapped in a matching pair of one or two tildes -(`~`). +Strikethrough text is any text wrapped in two tildes (`~`). ```````````````````````````````` example strikethrough -~~Hi~~ Hello, ~there~ world! +~~Hi~~ Hello, world! . -

Hi Hello, there world!

+

Hi Hello, world!

```````````````````````````````` As with regular emphasis delimiters, a new paragraph will cause strikethrough @@ -7733,14 +7732,6 @@ new paragraph~~.

new paragraph~~.

```````````````````````````````` -Three or more tildes do not create a strikethrough: - -```````````````````````````````` example strikethrough -This will ~~~not~~~ strike. -. -

This will ~~~not~~~ strike.

-```````````````````````````````` - ## Links @@ -8241,8 +8232,9 @@ perform the *Unicode case fold*, strip leading and trailing matching reference link definitions, the one that comes first in the document is used. (It is desirable in such cases to emit a warning.) -The link's URI and title are provided by the matching [link -reference definition]. +The contents of the first link label are parsed as inlines, which are +used as the link's text. The link's URI and title are provided by the +matching [link reference definition]. Here is a simple example: @@ -8335,11 +8327,11 @@ emphasis grouping: ```````````````````````````````` example -[foo *bar][ref]* +[foo *bar][ref] [ref]: /uri . -

foo *bar*

+

foo *bar

```````````````````````````````` @@ -8387,11 +8379,11 @@ Matching is case-insensitive: Unicode case fold is used: ```````````````````````````````` example -[ẞ] +[Толпой][Толпой] is a Russian word. -[SS]: /url +[ТОЛПОЙ]: /url . -

+

Толпой is a Russian word.

```````````````````````````````` @@ -9303,7 +9295,7 @@ www.commonmark.org/hehttp://commonmark.org

(Visit https://encrypted.google.com/search?q=Markup+(business))

+

Anonymous FTP is available at ftp://foo.bar.baz.

```````````````````````````````` @@ -9363,66 +9358,6 @@ a.b-c_d@a.b_

a.b-c_d@a.b_

```````````````````````````````` -An [extended protocol autolink](@) will be recognised when a protocol is -recognised within any text node. Valid protocols are: - -* `mailto:` -* `xmpp:` - -The scheme of the protocol will automatically be added to the generated link. -All the rules of email address autolinking apply. - -```````````````````````````````` example autolink -mailto:foo@bar.baz - -mailto:a.b-c_d@a.b - -mailto:a.b-c_d@a.b. - -mailto:a.b-c_d@a.b/ - -mailto:a.b-c_d@a.b- - -mailto:a.b-c_d@a.b_ - -xmpp:foo@bar.baz - -xmpp:foo@bar.baz. -. -

mailto:foo@bar.baz

-

mailto:a.b-c_d@a.b

-

mailto:a.b-c_d@a.b.

-

mailto:a.b-c_d@a.b/

-

mailto:a.b-c_d@a.b-

-

mailto:a.b-c_d@a.b_

-

xmpp:foo@bar.baz

-

xmpp:foo@bar.baz.

-```````````````````````````````` - -A described in the [specification](https://datatracker.ietf.org/doc/rfc7622/) -`xmpp` offers an optional `/` followed by a resource. The resource can contain -all alphanumeric characters, as well as `@` and `.`. - -```````````````````````````````` example autolink -xmpp:foo@bar.baz/txt - -xmpp:foo@bar.baz/txt@bin - -xmpp:foo@bar.baz/txt@bin.com -. -

xmpp:foo@bar.baz/txt

-

xmpp:foo@bar.baz/txt@bin

-

xmpp:foo@bar.baz/txt@bin.com

-```````````````````````````````` - -Further `/` characters are not considered part of the domain: - -```````````````````````````````` example autolink -xmpp:foo@bar.baz/txt/bin -. -

xmpp:foo@bar.baz/txt/bin

-```````````````````````````````` - ## Raw HTML @@ -10289,4 +10224,3 @@ closers: After we're done, we remove all delimiters above `stack_bottom` from the delimiter stack. - From 6a6e335709ef68cf2c616eeaf61b09ed4c654669 Mon Sep 17 00:00:00 2001 From: Steven Laidlaw Date: Thu, 27 Oct 2022 13:36:03 +0800 Subject: [PATCH 14/60] Thu 27 Oct 2022 13:36:03 AWST --- .DS_Store | Bin 0 -> 6148 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9a1fa6f9e208e5823d7c8cc350d5f199f3670285 GIT binary patch literal 6148 zcmeHKF;2ul474FgC(&FzI42?k^P~ck>eXU+(h+Z!*9+&wq?^ahIHzv*>QFpxN4!P4c~8_R1*E{a z0@u0Rvi?87SNi{Rl2%ec3j8SreAqwkcX*|$t&5jqt!?lpICDPXG|Yp7A<8i@$}tu! e$9IvGd5v@I_rf_b=!gd$sGkAqB9j8Yt-u#;lo@aU literal 0 HcmV?d00001 From e3c3a6770ce106f55bc5f67758110ad0b39d38eb Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Tue, 1 Nov 2022 17:45:53 +0000 Subject: [PATCH 15/60] Remove bogus file --- .DS_Store | Bin 6148 -> 0 bytes .gitignore | 1 + 2 files changed, 1 insertion(+) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 9a1fa6f9e208e5823d7c8cc350d5f199f3670285..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKF;2ul474FgC(&FzI42?k^P~ck>eXU+(h+Z!*9+&wq?^ahIHzv*>QFpxN4!P4c~8_R1*E{a z0@u0Rvi?87SNi{Rl2%ec3j8SreAqwkcX*|$t&5jqt!?lpICDPXG|Yp7A<8i@$}tu! e$9IvGd5v@I_rf_b=!gd$sGkAqB9j8Yt-u#;lo@aU diff --git a/.gitignore b/.gitignore index d503137bb..c325b311f 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,7 @@ build cmark.dSYM/* cmark .vscode +.DS_Store # Testing and benchmark alltests.md From 7327ccb184ebe5eee454d4615c9ec4ae3e132486 Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Wed, 2 Nov 2022 22:28:53 +0000 Subject: [PATCH 16/60] Add test for domains with underscores and fix roundtrip behavior. --- extensions/autolink.c | 13 +++++++++++++ test/extensions.txt | 9 +++++++++ 2 files changed, 22 insertions(+) diff --git a/extensions/autolink.c b/extensions/autolink.c index 838374c29..b71f53df2 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -116,7 +116,20 @@ static size_t autolink_delim(uint8_t *data, size_t link_end) { static size_t check_domain(uint8_t *data, size_t size, int allow_short) { size_t i, np = 0, uscore1 = 0, uscore2 = 0; + /* The purpose of this code is to reject urls that contain an underscore + * in one of the last two segments. Examples: + * + * www.xxx.yyy.zzz autolinked + * www.xxx.yyy._zzz not autolinked + * www.xxx._yyy.zzz not autolinked + * www._xxx.yyy.zzz autolinked + * + * The reason is that domain names are allowed to include underscores, + * but host names are not. See: https://stackoverflow.com/a/2183140 + */ for (i = 1; i < size - 1; i++) { + if (data[i] == '\\' && i < size - 2) + i++; if (data[i] == '_') uscore2++; else if (data[i] == '.') { diff --git a/test/extensions.txt b/test/extensions.txt index f36d2eaba..a1a150faa 100644 --- a/test/extensions.txt +++ b/test/extensions.txt @@ -581,6 +581,12 @@ www.github.com www.github.com/á www.google.com/a_b +Underscores not allowed in host name www.xxx.yyy._zzz + +Underscores not allowed in host name www.xxx._yyy.zzz + +Underscores allowed in domain name www._xxx.yyy.zzz + **Autolink and http://inlines** ![http://inline.com/image](http://inline.com/image) @@ -618,6 +624,9 @@ http://🍄.ga/ http://x🍄.ga/

Email me at:scyther@pokemon.com

www.github.com www.github.com/á

www.google.com/a_b

+

Underscores not allowed in host name www.xxx.yyy._zzz

+

Underscores not allowed in host name www.xxx._yyy.zzz

+

Underscores allowed in domain name www._xxx.yyy.zzz

Autolink and http://inlines

http://inline.com/image

a.w@b.c

From 23abdedbb13f8653ece2af44e3fe4c7aef28917d Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Wed, 2 Nov 2022 22:42:50 +0000 Subject: [PATCH 17/60] Fix GHSL-2022-099: avoid quadratic behavior triggered by urls with underscores. --- extensions/autolink.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/extensions/autolink.c b/extensions/autolink.c index 838374c29..9835ac1a0 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -127,8 +127,17 @@ static size_t check_domain(uint8_t *data, size_t size, int allow_short) { break; } - if (uscore1 > 0 || uscore2 > 0) - return 0; + if (uscore1 > 0 || uscore2 > 0) { + /* If the url is very long then accept it despite the underscores, + * to avoid quadratic behavior causing a denial of service. See: + * https://github.com/github/cmark-gfm/security/advisories/GHSA-29g3-96g3-jg6c + * Reasonable urls are unlikely to have more than 10 segments, so + * this extra condition shouldn't have any impact on normal usage. + */ + if (np <= 10) { + return 0; + } + } if (allow_short) { /* We don't need a valid domain in the strict sense (with From b4f0106289d0ae41b591c91ee340d455b5049c2a Mon Sep 17 00:00:00 2001 From: Nick Wellnhofer Date: Mon, 24 Aug 2020 20:06:10 +0200 Subject: [PATCH 18/60] Avoid quadratic output growth with reference links Keep track of the number bytes added through expansion of reference links and limit the total to the size of the input document. Always allow a minimum of 100KB. Unfortunately, cmark has no error handling, so all we can do is to stop expanding reference links without returning an error. This should never be an issue in practice though. The 100KB minimum alone should cover all real-world cases. See issue #354. --- src/blocks.c | 14 ++++++++++++++ src/map.c | 13 ++++++++++--- src/map.h | 3 +++ src/parser.h | 1 + src/references.c | 1 + 5 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/blocks.c b/src/blocks.c index 812713ed4..94045aba2 100644 --- a/src/blocks.c +++ b/src/blocks.c @@ -8,6 +8,7 @@ #include #include #include +#include #include "cmark_ctype.h" #include "syntax_extension.h" @@ -639,6 +640,14 @@ static cmark_node *finalize_document(cmark_parser *parser) { } finalize(parser, parser->root); + + // Limit total size of extra content created from reference links to + // document size to avoid superlinear growth. Always allow 100KB. + if (parser->total_size > 100000) + parser->refmap->max_ref_size = parser->total_size; + else + parser->refmap->max_ref_size = 100000; + process_inlines(parser, parser->refmap, parser->options); if (parser->options & CMARK_OPT_FOOTNOTES) process_footnotes(parser); @@ -698,6 +707,11 @@ static void S_parser_feed(cmark_parser *parser, const unsigned char *buffer, const unsigned char *end = buffer + len; static const uint8_t repl[] = {239, 191, 189}; + if (len > UINT_MAX - parser->total_size) + parser->total_size = UINT_MAX; + else + parser->total_size += len; + if (parser->last_buffer_ended_with_cr && *buffer == '\n') { // skip NL if last buffer ended with CR ; see #117 buffer++; diff --git a/src/map.c b/src/map.c index 9a418dfd4..fda9606a7 100644 --- a/src/map.c +++ b/src/map.c @@ -73,6 +73,7 @@ static void sort_map(cmark_map *map) { cmark_map_entry *cmark_map_lookup(cmark_map *map, cmark_chunk *label) { cmark_map_entry **ref = NULL; + cmark_map_entry *r = NULL; unsigned char *norm; if (label->len < 1 || label->len > MAX_LINK_LABEL_LENGTH) @@ -91,10 +92,15 @@ cmark_map_entry *cmark_map_lookup(cmark_map *map, cmark_chunk *label) { ref = (cmark_map_entry **)bsearch(norm, map->sorted, map->size, sizeof(cmark_map_entry *), refsearch); map->mem->free(norm); - if (!ref) - return NULL; + if (ref != NULL) { + r = ref[0]; + /* Check for expansion limit */ + if (r->size > map->max_ref_size - map->ref_size) + return NULL; + map->ref_size += r->size; + } - return ref[0]; + return r; } void cmark_map_free(cmark_map *map) { @@ -118,5 +124,6 @@ cmark_map *cmark_map_new(cmark_mem *mem, cmark_map_free_f free) { cmark_map *map = (cmark_map *)mem->calloc(1, sizeof(cmark_map)); map->mem = mem; map->free = free; + map->max_ref_size = UINT_MAX; return map; } diff --git a/src/map.h b/src/map.h index aa4c06e56..345dcf87b 100644 --- a/src/map.h +++ b/src/map.h @@ -11,6 +11,7 @@ struct cmark_map_entry { struct cmark_map_entry *next; unsigned char *label; unsigned int age; + unsigned int size; }; typedef struct cmark_map_entry cmark_map_entry; @@ -24,6 +25,8 @@ struct cmark_map { cmark_map_entry *refs; cmark_map_entry **sorted; unsigned int size; + unsigned int ref_size; + unsigned int max_ref_size; cmark_map_free_f free; }; diff --git a/src/parser.h b/src/parser.h index 245580b85..d5964c5b2 100644 --- a/src/parser.h +++ b/src/parser.h @@ -46,6 +46,7 @@ struct cmark_parser { /* Options set by the user, see the Options section in cmark.h */ int options; bool last_buffer_ended_with_cr; + unsigned int total_size; cmark_llist *syntax_extensions; cmark_llist *inline_syntax_extensions; cmark_ispunct_func backslash_ispunct; diff --git a/src/references.c b/src/references.c index 7e7f34b38..0c9d3995c 100644 --- a/src/references.c +++ b/src/references.c @@ -32,6 +32,7 @@ void cmark_reference_create(cmark_map *map, cmark_chunk *label, ref->title = cmark_clean_title(map->mem, title); ref->entry.age = map->size; ref->entry.next = map->refs; + ref->entry.size = ref->url.len + ref->title.len; map->refs = (cmark_map_entry *)ref; map->size++; From 2c62c95124ce00fad20fbbc930f79c62b20b2bb5 Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Mon, 7 Nov 2022 22:29:38 +0000 Subject: [PATCH 19/60] Pre-compute number of opening/closing parens to avoid quadratic behavior. --- extensions/autolink.c | 99 +++++++++++++++++++++---------------------- 1 file changed, 49 insertions(+), 50 deletions(-) diff --git a/extensions/autolink.c b/extensions/autolink.c index 838374c29..54d1535c8 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -35,44 +35,25 @@ static int sd_autolink_issafe(const uint8_t *link, size_t link_len) { } static size_t autolink_delim(uint8_t *data, size_t link_end) { - uint8_t cclose, copen; size_t i; + size_t closing = 0; + size_t opening = 0; - for (i = 0; i < link_end; ++i) - if (data[i] == '<') { + for (i = 0; i < link_end; ++i) { + const uint8_t c = data[i]; + if (c == '<') { link_end = i; break; + } else if (c == '(') { + opening++; + } else if (c == ')') { + closing++; } + } while (link_end > 0) { - cclose = data[link_end - 1]; - - switch (cclose) { + switch (data[link_end - 1]) { case ')': - copen = '('; - break; - default: - copen = 0; - } - - if (strchr("?!.,:*_~'\"", data[link_end - 1]) != NULL) - link_end--; - - else if (data[link_end - 1] == ';') { - size_t new_end = link_end - 2; - - while (new_end > 0 && cmark_isalpha(data[new_end])) - new_end--; - - if (new_end < link_end - 2 && data[new_end] == '&') - link_end = new_end; - else - link_end--; - } else if (copen != 0) { - size_t closing = 0; - size_t opening = 0; - i = 0; - /* Allow any number of matching brackets (as recognised in copen/cclose) * at the end of the URL. If there is a greater number of closing * brackets than opening ones, we remove one character from the end of @@ -80,34 +61,52 @@ static size_t autolink_delim(uint8_t *data, size_t link_end) { * * Examples (input text => output linked portion): * - * http://www.pokemon.com/Pikachu_(Electric) - * => http://www.pokemon.com/Pikachu_(Electric) + * http://www.pokemon.com/Pikachu_(Electric) + * => http://www.pokemon.com/Pikachu_(Electric) * - * http://www.pokemon.com/Pikachu_((Electric) - * => http://www.pokemon.com/Pikachu_((Electric) + * http://www.pokemon.com/Pikachu_((Electric) + * => http://www.pokemon.com/Pikachu_((Electric) * - * http://www.pokemon.com/Pikachu_(Electric)) - * => http://www.pokemon.com/Pikachu_(Electric) + * http://www.pokemon.com/Pikachu_(Electric)) + * => http://www.pokemon.com/Pikachu_(Electric) * - * http://www.pokemon.com/Pikachu_((Electric)) - * => http://www.pokemon.com/Pikachu_((Electric)) + * http://www.pokemon.com/Pikachu_((Electric)) + * => http://www.pokemon.com/Pikachu_((Electric)) */ - - while (i < link_end) { - if (data[i] == copen) - opening++; - else if (data[i] == cclose) - closing++; - - i++; + if (closing <= opening) { + return link_end; } + closing--; + link_end--; + break; + case '?': + case '!': + case '.': + case ',': + case ':': + case '*': + case '_': + case '~': + case '\'': + case '"': + link_end--; + break; + case ';': { + size_t new_end = link_end - 2; - if (closing <= opening) - break; + while (new_end > 0 && cmark_isalpha(data[new_end])) + new_end--; - link_end--; - } else + if (new_end < link_end - 2 && data[new_end] == '&') + link_end = new_end; + else + link_end--; break; + } + + default: + return link_end; + } } return link_end; From 84abf8923a1f20bb0046a07ba765974390ed6791 Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Wed, 9 Nov 2022 13:34:20 +0000 Subject: [PATCH 20/60] Stop searching at the previous offset to prevent quadratic behavior. --- extensions/table.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/table.c b/extensions/table.c index b9bf48404..6253c8cb7 100644 --- a/extensions/table.c +++ b/extensions/table.c @@ -157,7 +157,7 @@ static table_row *row_from_string(cmark_syntax_extension *self, cell->start_offset = offset; cell->end_offset = offset + cell_matched - 1; - while (cell->start_offset > 0 && string[cell->start_offset - 1] != '|') { + while (cell->start_offset > row->paragraph_offset && string[cell->start_offset - 1] != '|') { --cell->start_offset; ++cell->internal_offset; } From dc3c3f2eb92703d627dad8db26fb578e649e058d Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Thu, 10 Nov 2022 15:18:54 +0000 Subject: [PATCH 21/60] Use up-to-date clang-format. --- Makefile | 6 +++--- tools/Dockerfile | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index a05ba97a6..be7e46c0e 100644 --- a/Makefile +++ b/Makefile @@ -22,7 +22,7 @@ VERSION?=$(SPECVERSION) RELEASE?=CommonMark-$(VERSION) INSTALL_PREFIX?=/usr/local CLANG_CHECK?=clang-check -CLANG_FORMAT=clang-format-3.5 -style llvm -sort-includes=0 -i +CLANG_FORMAT=clang-format -style llvm -sort-includes=0 -i AFL_PATH?=/usr/local/bin .PHONY: all cmake_build leakcheck clean fuzztest test debug ubsan asan mingw archive newbench bench format update-spec afl clang-check docker libFuzzer @@ -140,7 +140,7 @@ $(EXTDIR)/ext_scanners.c: $(EXTDIR)/ext_scanners.re esac re2c --case-insensitive -b -i --no-generation-date -8 \ --encoding-policy substitute -o $@ $< - clang-format-3.5 -style llvm -i $@ + clang-format -style llvm -i $@ # We include entities.inc in the repository, so normally this # doesn't need to be regenerated: @@ -211,7 +211,7 @@ format: $(CLANG_FORMAT) src/*.c src/*.h api_test/*.c api_test/*.h format-extensions: - clang-format-3.5 -style llvm -i extensions/*.c extensions/*.h + clang-format -style llvm -i extensions/*.c extensions/*.h operf: $(CMARK) operf $< < $(BENCHFILE) > /dev/null diff --git a/tools/Dockerfile b/tools/Dockerfile index 65b7fe99e..99248e354 100644 --- a/tools/Dockerfile +++ b/tools/Dockerfile @@ -12,7 +12,7 @@ RUN apt-get update && apt-get install -y \ wget \ clang \ man \ - clang-format-3.5 \ + clang-format \ && apt-get clean RUN wget http://lcamtuf.coredump.cx/afl/releases/afl-latest.tgz && \ From 2cb4a202ddc6ca7bf5c89de29a6c64cf4d1aee4f Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Tue, 8 Nov 2022 15:27:01 +0000 Subject: [PATCH 22/60] Fix out-of-bounds read in validate_protocol --- extensions/autolink.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/extensions/autolink.c b/extensions/autolink.c index 838374c29..2e361fb1f 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -269,14 +269,20 @@ static cmark_node *match(cmark_syntax_extension *ext, cmark_parser *parser, // inline was finished in inlines.c. } -static bool validate_protocol(char protocol[], uint8_t *data, int rewind) { +static bool validate_protocol(char protocol[], uint8_t *data, int rewind, int max_rewind) { size_t len = strlen(protocol); + if (len > (size_t)(max_rewind - rewind)) { + return false; + } + // Check that the protocol matches - for (int i = 1; i <= len; i++) { - if (data[-rewind - i] != protocol[len - i]) { - return false; - } + if (memcmp(data - rewind - len, protocol, len) != 0) { + return false; + } + + if (len == (size_t)(max_rewind - rewind)) { + return true; } char prev_char = data[-rewind - len - 1]; @@ -323,12 +329,12 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset, continue; if (strchr(":", c) != NULL) { - if (validate_protocol("mailto:", data, rewind)) { + if (validate_protocol("mailto:", data, rewind, max_rewind)) { auto_mailto = false; continue; } - if (validate_protocol("xmpp:", data, rewind)) { + if (validate_protocol("xmpp:", data, rewind, max_rewind)) { auto_mailto = false; is_xmpp = true; continue; From a10978d8db028bd1fd129ee3d77d2ed2b2b45bb9 Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Mon, 14 Nov 2022 23:10:18 +0000 Subject: [PATCH 23/60] Stop scanning at '<' character to avoid quadratic loop. --- extensions/autolink.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/autolink.c b/extensions/autolink.c index 838374c29..45fc42afb 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -165,7 +165,7 @@ static cmark_node *www_match(cmark_parser *parser, cmark_node *parent, if (link_end == 0) return NULL; - while (link_end < size && !cmark_isspace(data[link_end])) + while (link_end < size && !cmark_isspace(data[link_end]) && data[link_end] != '<') link_end++; link_end = autolink_delim(data, link_end); @@ -225,7 +225,7 @@ static cmark_node *url_match(cmark_parser *parser, cmark_node *parent, return 0; link_end += domain_len; - while (link_end < size && !cmark_isspace(data[link_end])) + while (link_end < size && !cmark_isspace(data[link_end]) && data[link_end] != '<') link_end++; link_end = autolink_delim(data, link_end); From 7e49343d582ae8642250ee6cac2e72d6c30d71d5 Mon Sep 17 00:00:00 2001 From: Nick Wellnhofer Date: Tue, 13 Jul 2021 14:41:56 +0200 Subject: [PATCH 24/60] Fix quadratic behavior with smart quotes Make sure to remove matching smart quote delimiters. Otherwise, the same opener could be found over and over again, preventing the `openers_bottom` optimization from kicking in and leading to quadratic behavior when processing lots of quotes. Fixes #388. --- src/inlines.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/inlines.c b/src/inlines.c index 3cd3bc3d0..793bd6b7b 100644 --- a/src/inlines.c +++ b/src/inlines.c @@ -696,22 +696,24 @@ static void process_emphasis(cmark_parser *parser, subject *subj, delimiter *sta } else { closer = closer->next; } - } else if (closer->delim_char == '\'') { + } else if (closer->delim_char == '\'' || closer->delim_char == '"') { cmark_chunk_free(subj->mem, &closer->inl_text->as.literal); - closer->inl_text->as.literal = cmark_chunk_literal(RIGHTSINGLEQUOTE); - if (opener_found) { - cmark_chunk_free(subj->mem, &opener->inl_text->as.literal); - opener->inl_text->as.literal = cmark_chunk_literal(LEFTSINGLEQUOTE); + if (closer->delim_char == '\'') { + closer->inl_text->as.literal = cmark_chunk_literal(RIGHTSINGLEQUOTE); + } else { + closer->inl_text->as.literal = cmark_chunk_literal(RIGHTDOUBLEQUOTE); } closer = closer->next; - } else if (closer->delim_char == '"') { - cmark_chunk_free(subj->mem, &closer->inl_text->as.literal); - closer->inl_text->as.literal = cmark_chunk_literal(RIGHTDOUBLEQUOTE); if (opener_found) { cmark_chunk_free(subj->mem, &opener->inl_text->as.literal); - opener->inl_text->as.literal = cmark_chunk_literal(LEFTDOUBLEQUOTE); + if (old_closer->delim_char == '\'') { + opener->inl_text->as.literal = cmark_chunk_literal(LEFTSINGLEQUOTE); + } else { + opener->inl_text->as.literal = cmark_chunk_literal(LEFTDOUBLEQUOTE); + } + remove_delimiter(subj, opener); + remove_delimiter(subj, old_closer); } - closer = closer->next; } if (!opener_found) { // set lower bound for future searches for openers From 9deb1c6ca40e2ac55fb3fc8971ced61982b46eba Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Wed, 16 Nov 2022 23:58:18 +0000 Subject: [PATCH 25/60] Always remove delimiters to avoid quadratic behavior. --- extensions/strikethrough.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/strikethrough.c b/extensions/strikethrough.c index 8145d23b0..e08842242 100644 --- a/extensions/strikethrough.c +++ b/extensions/strikethrough.c @@ -67,6 +67,7 @@ static delimiter *insert(cmark_syntax_extension *self, cmark_parser *parser, strikethrough->end_column = closer->inl_text->start_column + closer->inl_text->as.literal.len - 1; cmark_node_free(closer->inl_text); +done: delim = closer; while (delim != NULL && delim != opener) { tmp_delim = delim->previous; @@ -76,7 +77,6 @@ static delimiter *insert(cmark_syntax_extension *self, cmark_parser *parser, cmark_inline_parser_remove_delimiter(inline_parser, opener); -done: return res; } From ac010087126dc8d2e910c0bddf42d7eb8ba9d388 Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Fri, 18 Nov 2022 13:07:12 +0000 Subject: [PATCH 26/60] Fix memory leak in row_from_string --- extensions/table.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/extensions/table.c b/extensions/table.c index 0c2598868..179248992 100644 --- a/extensions/table.c +++ b/extensions/table.c @@ -178,6 +178,8 @@ static table_row *row_from_string(cmark_syntax_extension *self, node_cell *cell = append_row_cell(parser->mem, row); if (!cell) { int_overflow_abort = 1; + cmark_strbuf_free(cell_buf); + parser->mem->free(cell_buf); break; } cell->buf = cell_buf; From 52ff04a14e374e9c3c9b59ac7b9363d9495957bd Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Tue, 22 Nov 2022 17:15:32 +0000 Subject: [PATCH 27/60] Convert tail-recursion to loop. --- extensions/autolink.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/extensions/autolink.c b/extensions/autolink.c index 2e361fb1f..d32f98058 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -292,6 +292,7 @@ static bool validate_protocol(char protocol[], uint8_t *data, int rewind, int ma } static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset, int depth) { + while (true) { // postprocess_text can recurse very deeply if there is a very long line of // '@' only. Stop at a reasonable depth to ensure it cannot crash. if (depth > 1000) return; @@ -345,8 +346,9 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset, } if (rewind == 0 || ns > 0) { - postprocess_text(parser, text, max_rewind + 1 + offset, depth + 1); - return; + offset += max_rewind + 1; + depth++; + continue; } for (link_end = 0; link_end < size; ++link_end) { @@ -367,15 +369,17 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset, if (link_end < 2 || nb != 1 || np == 0 || (!cmark_isalpha(data[link_end - 1]) && data[link_end - 1] != '.')) { - postprocess_text(parser, text, max_rewind + 1 + offset, depth + 1); - return; + offset += max_rewind + 1; + depth++; + continue; } link_end = autolink_delim(data, link_end); if (link_end == 0) { - postprocess_text(parser, text, max_rewind + 1 + offset, depth + 1); - return; + offset += max_rewind + 1; + depth++; + continue; } cmark_chunk_to_cstr(parser->mem, &text->as.literal); @@ -411,6 +415,8 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset, text->as.literal.data[text->as.literal.len] = 0; postprocess_text(parser, post, 0, depth + 1); + return; + } } static cmark_node *postprocess(cmark_syntax_extension *ext, cmark_parser *parser, cmark_node *root) { From 4a4a8a0c9a6e5c43e06f57d768580939ebefd828 Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Tue, 22 Nov 2022 17:17:13 +0000 Subject: [PATCH 28/60] indentation --- extensions/autolink.c | 184 +++++++++++++++++++++--------------------- 1 file changed, 92 insertions(+), 92 deletions(-) diff --git a/extensions/autolink.c b/extensions/autolink.c index d32f98058..ee41e3871 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -293,129 +293,129 @@ static bool validate_protocol(char protocol[], uint8_t *data, int rewind, int ma static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset, int depth) { while (true) { - // postprocess_text can recurse very deeply if there is a very long line of - // '@' only. Stop at a reasonable depth to ensure it cannot crash. - if (depth > 1000) return; - - size_t link_end; - uint8_t *data = text->as.literal.data, - *at; - size_t size = text->as.literal.len; - bool auto_mailto = true; - bool is_xmpp = false; - int rewind, max_rewind, + // postprocess_text can recurse very deeply if there is a very long line of + // '@' only. Stop at a reasonable depth to ensure it cannot crash. + if (depth > 1000) return; + + size_t link_end; + uint8_t *data = text->as.literal.data, + *at; + size_t size = text->as.literal.len; + bool auto_mailto = true; + bool is_xmpp = false; + int rewind, max_rewind, nb = 0, np = 0, ns = 0; - if (offset < 0 || (size_t)offset >= size) - return; + if (offset < 0 || (size_t)offset >= size) + return; - data += offset; - size -= offset; + data += offset; + size -= offset; - at = (uint8_t *)memchr(data, '@', size); - if (!at) - return; + at = (uint8_t *)memchr(data, '@', size); + if (!at) + return; - max_rewind = (int)(at - data); - data += max_rewind; - size -= max_rewind; + max_rewind = (int)(at - data); + data += max_rewind; + size -= max_rewind; - for (rewind = 0; rewind < max_rewind; ++rewind) { - uint8_t c = data[-rewind - 1]; + for (rewind = 0; rewind < max_rewind; ++rewind) { + uint8_t c = data[-rewind - 1]; - if (cmark_isalnum(c)) - continue; - - if (strchr(".+-_", c) != NULL) - continue; - - if (strchr(":", c) != NULL) { - if (validate_protocol("mailto:", data, rewind, max_rewind)) { - auto_mailto = false; + if (cmark_isalnum(c)) continue; - } - if (validate_protocol("xmpp:", data, rewind, max_rewind)) { - auto_mailto = false; - is_xmpp = true; + if (strchr(".+-_", c) != NULL) continue; + + if (strchr(":", c) != NULL) { + if (validate_protocol("mailto:", data, rewind, max_rewind)) { + auto_mailto = false; + continue; + } + + if (validate_protocol("xmpp:", data, rewind, max_rewind)) { + auto_mailto = false; + is_xmpp = true; + continue; + } } + + break; } - break; - } + if (rewind == 0 || ns > 0) { + offset += max_rewind + 1; + depth++; + continue; + } - if (rewind == 0 || ns > 0) { - offset += max_rewind + 1; - depth++; - continue; - } + for (link_end = 0; link_end < size; ++link_end) { + uint8_t c = data[link_end]; - for (link_end = 0; link_end < size; ++link_end) { - uint8_t c = data[link_end]; + if (cmark_isalnum(c)) + continue; - if (cmark_isalnum(c)) - continue; + if (c == '@') + nb++; + else if (c == '.' && link_end < size - 1 && cmark_isalnum(data[link_end + 1])) + np++; + else if (c == '/' && is_xmpp) + continue; + else if (c != '-' && c != '_') + break; + } - if (c == '@') - nb++; - else if (c == '.' && link_end < size - 1 && cmark_isalnum(data[link_end + 1])) - np++; - else if (c == '/' && is_xmpp) + if (link_end < 2 || nb != 1 || np == 0 || + (!cmark_isalpha(data[link_end - 1]) && data[link_end - 1] != '.')) { + offset += max_rewind + 1; + depth++; continue; - else if (c != '-' && c != '_') - break; - } - - if (link_end < 2 || nb != 1 || np == 0 || - (!cmark_isalpha(data[link_end - 1]) && data[link_end - 1] != '.')) { - offset += max_rewind + 1; - depth++; - continue; - } + } - link_end = autolink_delim(data, link_end); + link_end = autolink_delim(data, link_end); - if (link_end == 0) { - offset += max_rewind + 1; - depth++; - continue; - } + if (link_end == 0) { + offset += max_rewind + 1; + depth++; + continue; + } - cmark_chunk_to_cstr(parser->mem, &text->as.literal); + cmark_chunk_to_cstr(parser->mem, &text->as.literal); - cmark_node *link_node = cmark_node_new_with_mem(CMARK_NODE_LINK, parser->mem); - cmark_strbuf buf; - cmark_strbuf_init(parser->mem, &buf, 10); - if (auto_mailto) - cmark_strbuf_puts(&buf, "mailto:"); - cmark_strbuf_put(&buf, data - rewind, (bufsize_t)(link_end + rewind)); - link_node->as.link.url = cmark_chunk_buf_detach(&buf); + cmark_node *link_node = cmark_node_new_with_mem(CMARK_NODE_LINK, parser->mem); + cmark_strbuf buf; + cmark_strbuf_init(parser->mem, &buf, 10); + if (auto_mailto) + cmark_strbuf_puts(&buf, "mailto:"); + cmark_strbuf_put(&buf, data - rewind, (bufsize_t)(link_end + rewind)); + link_node->as.link.url = cmark_chunk_buf_detach(&buf); - cmark_node *link_text = cmark_node_new_with_mem(CMARK_NODE_TEXT, parser->mem); - cmark_chunk email = cmark_chunk_dup( + cmark_node *link_text = cmark_node_new_with_mem(CMARK_NODE_TEXT, parser->mem); + cmark_chunk email = cmark_chunk_dup( &text->as.literal, offset + max_rewind - rewind, (bufsize_t)(link_end + rewind)); - cmark_chunk_to_cstr(parser->mem, &email); - link_text->as.literal = email; - cmark_node_append_child(link_node, link_text); + cmark_chunk_to_cstr(parser->mem, &email); + link_text->as.literal = email; + cmark_node_append_child(link_node, link_text); - cmark_node_insert_after(text, link_node); + cmark_node_insert_after(text, link_node); - cmark_node *post = cmark_node_new_with_mem(CMARK_NODE_TEXT, parser->mem); - post->as.literal = cmark_chunk_dup(&text->as.literal, - (bufsize_t)(offset + max_rewind + link_end), - (bufsize_t)(size - link_end)); - cmark_chunk_to_cstr(parser->mem, &post->as.literal); + cmark_node *post = cmark_node_new_with_mem(CMARK_NODE_TEXT, parser->mem); + post->as.literal = cmark_chunk_dup(&text->as.literal, + (bufsize_t)(offset + max_rewind + link_end), + (bufsize_t)(size - link_end)); + cmark_chunk_to_cstr(parser->mem, &post->as.literal); - cmark_node_insert_after(link_node, post); + cmark_node_insert_after(link_node, post); - text->as.literal.len = offset + max_rewind - rewind; - text->as.literal.data[text->as.literal.len] = 0; + text->as.literal.len = offset + max_rewind - rewind; + text->as.literal.data[text->as.literal.len] = 0; - postprocess_text(parser, post, 0, depth + 1); - return; + postprocess_text(parser, post, 0, depth + 1); + return; } } From cfdfdc10aea9f18d0a0141586419cc113be48d6b Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Tue, 22 Nov 2022 17:29:07 +0000 Subject: [PATCH 29/60] Remove unnecessary tail call. --- extensions/autolink.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/extensions/autolink.c b/extensions/autolink.c index ee41e3871..9ca29b58d 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -414,8 +414,9 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset, text->as.literal.len = offset + max_rewind - rewind; text->as.literal.data[text->as.literal.len] = 0; - postprocess_text(parser, post, 0, depth + 1); - return; + text = post; + offset = 0; + depth++; } } From d9b6faef3107fe128a7b76d6d00879eb3995f9fa Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Wed, 23 Nov 2022 17:27:50 +0000 Subject: [PATCH 30/60] Replace return with break, so that cleanup steps can be added after the loop. --- extensions/autolink.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extensions/autolink.c b/extensions/autolink.c index 9ca29b58d..905de15a8 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -295,7 +295,7 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset, while (true) { // postprocess_text can recurse very deeply if there is a very long line of // '@' only. Stop at a reasonable depth to ensure it cannot crash. - if (depth > 1000) return; + if (depth > 1000) break; size_t link_end; uint8_t *data = text->as.literal.data, @@ -307,14 +307,14 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset, nb = 0, np = 0, ns = 0; if (offset < 0 || (size_t)offset >= size) - return; + break; data += offset; size -= offset; at = (uint8_t *)memchr(data, '@', size); if (!at) - return; + break; max_rewind = (int)(at - data); data += max_rewind; From c664b4b143725af4c861f77c38a80536b33b7e5d Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Wed, 23 Nov 2022 18:18:45 +0000 Subject: [PATCH 31/60] Don't allocate unnecessary memory during the loop. Previously, the memory allocation grew quadratically on this example: python3 -c 'print("mailto:s@p.com/" * 1000000)' | ./src/cmark-gfm -e autolink --- extensions/autolink.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/extensions/autolink.c b/extensions/autolink.c index 905de15a8..f56c99aec 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -292,6 +292,14 @@ static bool validate_protocol(char protocol[], uint8_t *data, int rewind, int ma } static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset, int depth) { + // `text` is going to be split into a list of nodes containing shorter segments + // of text, so we detach the memory buffer from text and use `cmark_chunk_dup` to + // create references to it. Later, `cmark_chunk_to_cstr` is used to convert + // the references into allocated buffers. The detached buffer is freed before we + // return. + cmark_chunk detached_chunk = text->as.literal; + text->as.literal = cmark_chunk_dup(&detached_chunk, 0, detached_chunk.len); + while (true) { // postprocess_text can recurse very deeply if there is a very long line of // '@' only. Stop at a reasonable depth to ensure it cannot crash. @@ -382,8 +390,6 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset, continue; } - cmark_chunk_to_cstr(parser->mem, &text->as.literal); - cmark_node *link_node = cmark_node_new_with_mem(CMARK_NODE_LINK, parser->mem); cmark_strbuf buf; cmark_strbuf_init(parser->mem, &buf, 10); @@ -407,17 +413,27 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset, post->as.literal = cmark_chunk_dup(&text->as.literal, (bufsize_t)(offset + max_rewind + link_end), (bufsize_t)(size - link_end)); - cmark_chunk_to_cstr(parser->mem, &post->as.literal); cmark_node_insert_after(link_node, post); text->as.literal.len = offset + max_rewind - rewind; text->as.literal.data[text->as.literal.len] = 0; + // Convert the reference to allocated memory. + assert(!text->as.literal.alloc); + cmark_chunk_to_cstr(parser->mem, &text->as.literal); + text = post; offset = 0; depth++; } + + // Convert the reference to allocated memory. + assert(!text->as.literal.alloc); + cmark_chunk_to_cstr(parser->mem, &text->as.literal); + + // Free the detached buffer. + cmark_chunk_free(parser->mem, &detached_chunk); } static cmark_node *postprocess(cmark_syntax_extension *ext, cmark_parser *parser, cmark_node *root) { From 94e81359e34c482378d08e1c0366a80a148cdd9e Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Wed, 23 Nov 2022 18:26:58 +0000 Subject: [PATCH 32/60] Simplify the code by using cmark_chunk_dup. --- extensions/autolink.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/extensions/autolink.c b/extensions/autolink.c index f56c99aec..b467b856b 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -416,11 +416,7 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset, cmark_node_insert_after(link_node, post); - text->as.literal.len = offset + max_rewind - rewind; - text->as.literal.data[text->as.literal.len] = 0; - - // Convert the reference to allocated memory. - assert(!text->as.literal.alloc); + text->as.literal = cmark_chunk_dup(&text->as.literal, 0, offset + max_rewind - rewind); cmark_chunk_to_cstr(parser->mem, &text->as.literal); text = post; From cf1e43f4d301851fb578e0bf8e4d9a7b3c0e27bf Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Wed, 23 Nov 2022 18:38:48 +0000 Subject: [PATCH 33/60] ns is always zero --- extensions/autolink.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/autolink.c b/extensions/autolink.c index b467b856b..d31414c74 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -312,7 +312,7 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset, bool auto_mailto = true; bool is_xmpp = false; int rewind, max_rewind, - nb = 0, np = 0, ns = 0; + nb = 0, np = 0; if (offset < 0 || (size_t)offset >= size) break; @@ -353,7 +353,7 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset, break; } - if (rewind == 0 || ns > 0) { + if (rewind == 0) { offset += max_rewind + 1; depth++; continue; From 7d8106a35bc0eea8a7287b11a44ad9d1fc3d7e92 Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Wed, 23 Nov 2022 18:44:18 +0000 Subject: [PATCH 34/60] Local variable clean-up. --- extensions/autolink.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/extensions/autolink.c b/extensions/autolink.c index d31414c74..76261ba2e 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -291,7 +291,9 @@ static bool validate_protocol(char protocol[], uint8_t *data, int rewind, int ma return !cmark_isalnum(prev_char); } -static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset, int depth) { +static void postprocess_text(cmark_parser *parser, cmark_node *text) { + size_t offset = 0; + size_t depth = 0; // `text` is going to be split into a list of nodes containing shorter segments // of text, so we detach the memory buffer from text and use `cmark_chunk_dup` to // create references to it. Later, `cmark_chunk_to_cstr` is used to convert @@ -311,10 +313,12 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset, size_t size = text->as.literal.len; bool auto_mailto = true; bool is_xmpp = false; - int rewind, max_rewind, - nb = 0, np = 0; + size_t rewind; + size_t max_rewind; + size_t nb = 0; + size_t np = 0; - if (offset < 0 || (size_t)offset >= size) + if (offset >= size) break; data += offset; @@ -324,7 +328,7 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset, if (!at) break; - max_rewind = (int)(at - data); + max_rewind = at - data; data += max_rewind; size -= max_rewind; @@ -456,7 +460,7 @@ static cmark_node *postprocess(cmark_syntax_extension *ext, cmark_parser *parser } if (ev == CMARK_EVENT_ENTER && node->type == CMARK_NODE_TEXT) { - postprocess_text(parser, node, 0, /*depth*/0); + postprocess_text(parser, node); } } From 96da00f39807a865b95cf184bdada9a9121260c8 Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Thu, 24 Nov 2022 12:18:14 +0000 Subject: [PATCH 35/60] Move data,size outside the loop. --- extensions/autolink.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/extensions/autolink.c b/extensions/autolink.c index 76261ba2e..0e1ab093f 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -302,15 +302,16 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { cmark_chunk detached_chunk = text->as.literal; text->as.literal = cmark_chunk_dup(&detached_chunk, 0, detached_chunk.len); + uint8_t *data = text->as.literal.data; + size_t size = text->as.literal.len; + while (true) { // postprocess_text can recurse very deeply if there is a very long line of // '@' only. Stop at a reasonable depth to ensure it cannot crash. if (depth > 1000) break; size_t link_end; - uint8_t *data = text->as.literal.data, - *at; - size_t size = text->as.literal.len; + uint8_t *at; bool auto_mailto = true; bool is_xmpp = false; size_t rewind; @@ -358,6 +359,9 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { } if (rewind == 0) { + // Reset data, size back to their values at the start of the loop. + data -= offset + max_rewind; + size += offset + max_rewind; offset += max_rewind + 1; depth++; continue; @@ -381,6 +385,9 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { if (link_end < 2 || nb != 1 || np == 0 || (!cmark_isalpha(data[link_end - 1]) && data[link_end - 1] != '.')) { + // Reset data, size back to their values at the start of the loop. + data -= offset + max_rewind; + size += offset + max_rewind; offset += max_rewind + 1; depth++; continue; @@ -389,6 +396,9 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { link_end = autolink_delim(data, link_end); if (link_end == 0) { + // Reset data, size back to their values at the start of the loop. + data -= offset + max_rewind; + size += offset + max_rewind; offset += max_rewind + 1; depth++; continue; @@ -424,6 +434,8 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { cmark_chunk_to_cstr(parser->mem, &text->as.literal); text = post; + data += link_end; + size -= link_end; offset = 0; depth++; } From e8ea8c2b2b5d64d50e5b56fc588a6cf5af8af04e Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Thu, 24 Nov 2022 12:30:08 +0000 Subject: [PATCH 36/60] Replace data with data+start so that the base address can remain constant. --- extensions/autolink.c | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/extensions/autolink.c b/extensions/autolink.c index 0e1ab093f..1377ac3bf 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -292,6 +292,7 @@ static bool validate_protocol(char protocol[], uint8_t *data, int rewind, int ma } static void postprocess_text(cmark_parser *parser, cmark_node *text) { + size_t start = 0; size_t offset = 0; size_t depth = 0; // `text` is going to be split into a list of nodes containing shorter segments @@ -322,19 +323,19 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { if (offset >= size) break; - data += offset; + start += offset; size -= offset; - at = (uint8_t *)memchr(data, '@', size); + at = (uint8_t *)memchr(data + start, '@', size); if (!at) break; - max_rewind = at - data; - data += max_rewind; + max_rewind = at - (data + start); + start += max_rewind; size -= max_rewind; for (rewind = 0; rewind < max_rewind; ++rewind) { - uint8_t c = data[-rewind - 1]; + uint8_t c = data[start - rewind - 1]; if (cmark_isalnum(c)) continue; @@ -343,12 +344,12 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { continue; if (strchr(":", c) != NULL) { - if (validate_protocol("mailto:", data, rewind, max_rewind)) { + if (validate_protocol("mailto:", data + start, rewind, max_rewind)) { auto_mailto = false; continue; } - if (validate_protocol("xmpp:", data, rewind, max_rewind)) { + if (validate_protocol("xmpp:", data + start, rewind, max_rewind)) { auto_mailto = false; is_xmpp = true; continue; @@ -359,8 +360,8 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { } if (rewind == 0) { - // Reset data, size back to their values at the start of the loop. - data -= offset + max_rewind; + // Reset start, size back to their values at the start of the loop. + start -= offset + max_rewind; size += offset + max_rewind; offset += max_rewind + 1; depth++; @@ -368,14 +369,14 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { } for (link_end = 0; link_end < size; ++link_end) { - uint8_t c = data[link_end]; + uint8_t c = data[start + link_end]; if (cmark_isalnum(c)) continue; if (c == '@') nb++; - else if (c == '.' && link_end < size - 1 && cmark_isalnum(data[link_end + 1])) + else if (c == '.' && link_end < size - 1 && cmark_isalnum(data[start + link_end + 1])) np++; else if (c == '/' && is_xmpp) continue; @@ -384,20 +385,20 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { } if (link_end < 2 || nb != 1 || np == 0 || - (!cmark_isalpha(data[link_end - 1]) && data[link_end - 1] != '.')) { - // Reset data, size back to their values at the start of the loop. - data -= offset + max_rewind; + (!cmark_isalpha(data[start + link_end - 1]) && data[start + link_end - 1] != '.')) { + // Reset start, size back to their values at the start of the loop. + start -= offset + max_rewind; size += offset + max_rewind; offset += max_rewind + 1; depth++; continue; } - link_end = autolink_delim(data, link_end); + link_end = autolink_delim(data + start, link_end); if (link_end == 0) { - // Reset data, size back to their values at the start of the loop. - data -= offset + max_rewind; + // Reset start, size back to their values at the start of the loop. + start -= offset + max_rewind; size += offset + max_rewind; offset += max_rewind + 1; depth++; @@ -409,7 +410,7 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { cmark_strbuf_init(parser->mem, &buf, 10); if (auto_mailto) cmark_strbuf_puts(&buf, "mailto:"); - cmark_strbuf_put(&buf, data - rewind, (bufsize_t)(link_end + rewind)); + cmark_strbuf_put(&buf, data + start - rewind, (bufsize_t)(link_end + rewind)); link_node->as.link.url = cmark_chunk_buf_detach(&buf); cmark_node *link_text = cmark_node_new_with_mem(CMARK_NODE_TEXT, parser->mem); @@ -434,7 +435,7 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { cmark_chunk_to_cstr(parser->mem, &text->as.literal); text = post; - data += link_end; + start += link_end; size -= link_end; offset = 0; depth++; From 76c409b0e3858acb548d9585f07190932ec32767 Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Thu, 24 Nov 2022 12:31:39 +0000 Subject: [PATCH 37/60] Rename size to remaining. --- extensions/autolink.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/extensions/autolink.c b/extensions/autolink.c index 1377ac3bf..4558d7b47 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -304,7 +304,7 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { text->as.literal = cmark_chunk_dup(&detached_chunk, 0, detached_chunk.len); uint8_t *data = text->as.literal.data; - size_t size = text->as.literal.len; + size_t remaining = text->as.literal.len; while (true) { // postprocess_text can recurse very deeply if there is a very long line of @@ -320,19 +320,19 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { size_t nb = 0; size_t np = 0; - if (offset >= size) + if (offset >= remaining) break; start += offset; - size -= offset; + remaining -= offset; - at = (uint8_t *)memchr(data + start, '@', size); + at = (uint8_t *)memchr(data + start, '@', remaining); if (!at) break; max_rewind = at - (data + start); start += max_rewind; - size -= max_rewind; + remaining -= max_rewind; for (rewind = 0; rewind < max_rewind; ++rewind) { uint8_t c = data[start - rewind - 1]; @@ -360,15 +360,15 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { } if (rewind == 0) { - // Reset start, size back to their values at the start of the loop. + // Reset start, remaining back to their values at the start of the loop. start -= offset + max_rewind; - size += offset + max_rewind; + remaining += offset + max_rewind; offset += max_rewind + 1; depth++; continue; } - for (link_end = 0; link_end < size; ++link_end) { + for (link_end = 0; link_end < remaining; ++link_end) { uint8_t c = data[start + link_end]; if (cmark_isalnum(c)) @@ -376,7 +376,7 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { if (c == '@') nb++; - else if (c == '.' && link_end < size - 1 && cmark_isalnum(data[start + link_end + 1])) + else if (c == '.' && link_end < remaining - 1 && cmark_isalnum(data[start + link_end + 1])) np++; else if (c == '/' && is_xmpp) continue; @@ -386,9 +386,9 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { if (link_end < 2 || nb != 1 || np == 0 || (!cmark_isalpha(data[start + link_end - 1]) && data[start + link_end - 1] != '.')) { - // Reset start, size back to their values at the start of the loop. + // Reset start, remaining back to their values at the start of the loop. start -= offset + max_rewind; - size += offset + max_rewind; + remaining += offset + max_rewind; offset += max_rewind + 1; depth++; continue; @@ -397,9 +397,9 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { link_end = autolink_delim(data + start, link_end); if (link_end == 0) { - // Reset start, size back to their values at the start of the loop. + // Reset start, remaining back to their values at the start of the loop. start -= offset + max_rewind; - size += offset + max_rewind; + remaining += offset + max_rewind; offset += max_rewind + 1; depth++; continue; @@ -427,7 +427,7 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { cmark_node *post = cmark_node_new_with_mem(CMARK_NODE_TEXT, parser->mem); post->as.literal = cmark_chunk_dup(&text->as.literal, (bufsize_t)(offset + max_rewind + link_end), - (bufsize_t)(size - link_end)); + (bufsize_t)(remaining - link_end)); cmark_node_insert_after(link_node, post); @@ -436,7 +436,7 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { text = post; start += link_end; - size -= link_end; + remaining -= link_end; offset = 0; depth++; } From 0b4a7fe3d0e8aff151b937478d59a91d53e7ca19 Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Thu, 24 Nov 2022 13:13:14 +0000 Subject: [PATCH 38/60] Create references from detached_chunk, not text->as.literal. --- extensions/autolink.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extensions/autolink.c b/extensions/autolink.c index 4558d7b47..b7d87ce1d 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -425,13 +425,13 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { cmark_node_insert_after(text, link_node); cmark_node *post = cmark_node_new_with_mem(CMARK_NODE_TEXT, parser->mem); - post->as.literal = cmark_chunk_dup(&text->as.literal, - (bufsize_t)(offset + max_rewind + link_end), + post->as.literal = cmark_chunk_dup(&detached_chunk, + (bufsize_t)(start + link_end), (bufsize_t)(remaining - link_end)); cmark_node_insert_after(link_node, post); - text->as.literal = cmark_chunk_dup(&text->as.literal, 0, offset + max_rewind - rewind); + text->as.literal = cmark_chunk_dup(&detached_chunk, start - offset - max_rewind, offset + max_rewind - rewind); cmark_chunk_to_cstr(parser->mem, &text->as.literal); text = post; From d3e80e08d8605febd1e07b57d6c4cfcd92a0dd8d Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Thu, 24 Nov 2022 13:57:04 +0000 Subject: [PATCH 39/60] Don't adjust start, remaining until the end of the loop. --- extensions/autolink.c | 48 ++++++++++++++++--------------------------- 1 file changed, 18 insertions(+), 30 deletions(-) diff --git a/extensions/autolink.c b/extensions/autolink.c index b7d87ce1d..ce7e1c64a 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -323,19 +323,14 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { if (offset >= remaining) break; - start += offset; - remaining -= offset; - - at = (uint8_t *)memchr(data + start, '@', remaining); + at = (uint8_t *)memchr(data + start + offset, '@', remaining - offset); if (!at) break; - max_rewind = at - (data + start); - start += max_rewind; - remaining -= max_rewind; + max_rewind = at - (data + start + offset); for (rewind = 0; rewind < max_rewind; ++rewind) { - uint8_t c = data[start - rewind - 1]; + uint8_t c = data[start + offset + max_rewind - rewind - 1]; if (cmark_isalnum(c)) continue; @@ -344,12 +339,12 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { continue; if (strchr(":", c) != NULL) { - if (validate_protocol("mailto:", data + start, rewind, max_rewind)) { + if (validate_protocol("mailto:", data + start + offset + max_rewind, rewind, max_rewind)) { auto_mailto = false; continue; } - if (validate_protocol("xmpp:", data + start, rewind, max_rewind)) { + if (validate_protocol("xmpp:", data + start + offset + max_rewind, rewind, max_rewind)) { auto_mailto = false; is_xmpp = true; continue; @@ -360,23 +355,21 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { } if (rewind == 0) { - // Reset start, remaining back to their values at the start of the loop. - start -= offset + max_rewind; - remaining += offset + max_rewind; offset += max_rewind + 1; depth++; continue; } - for (link_end = 0; link_end < remaining; ++link_end) { - uint8_t c = data[start + link_end]; + for (link_end = 0; link_end < remaining - offset - max_rewind; ++link_end) { + uint8_t c = data[start + offset + max_rewind + link_end]; if (cmark_isalnum(c)) continue; if (c == '@') nb++; - else if (c == '.' && link_end < remaining - 1 && cmark_isalnum(data[start + link_end + 1])) + else if (c == '.' && link_end < remaining - offset - max_rewind - 1 && + cmark_isalnum(data[start + offset + max_rewind + link_end + 1])) np++; else if (c == '/' && is_xmpp) continue; @@ -385,21 +378,16 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { } if (link_end < 2 || nb != 1 || np == 0 || - (!cmark_isalpha(data[start + link_end - 1]) && data[start + link_end - 1] != '.')) { - // Reset start, remaining back to their values at the start of the loop. - start -= offset + max_rewind; - remaining += offset + max_rewind; + (!cmark_isalpha(data[start + offset + max_rewind + link_end - 1]) && + data[start + offset + max_rewind + link_end - 1] != '.')) { offset += max_rewind + 1; depth++; continue; } - link_end = autolink_delim(data + start, link_end); + link_end = autolink_delim(data + start + offset + max_rewind, link_end); if (link_end == 0) { - // Reset start, remaining back to their values at the start of the loop. - start -= offset + max_rewind; - remaining += offset + max_rewind; offset += max_rewind + 1; depth++; continue; @@ -410,7 +398,7 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { cmark_strbuf_init(parser->mem, &buf, 10); if (auto_mailto) cmark_strbuf_puts(&buf, "mailto:"); - cmark_strbuf_put(&buf, data + start - rewind, (bufsize_t)(link_end + rewind)); + cmark_strbuf_put(&buf, data + start + offset + max_rewind - rewind, (bufsize_t)(link_end + rewind)); link_node->as.link.url = cmark_chunk_buf_detach(&buf); cmark_node *link_text = cmark_node_new_with_mem(CMARK_NODE_TEXT, parser->mem); @@ -426,17 +414,17 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { cmark_node *post = cmark_node_new_with_mem(CMARK_NODE_TEXT, parser->mem); post->as.literal = cmark_chunk_dup(&detached_chunk, - (bufsize_t)(start + link_end), - (bufsize_t)(remaining - link_end)); + (bufsize_t)(start + offset + max_rewind + link_end), + (bufsize_t)(remaining - offset - max_rewind - link_end)); cmark_node_insert_after(link_node, post); - text->as.literal = cmark_chunk_dup(&detached_chunk, start - offset - max_rewind, offset + max_rewind - rewind); + text->as.literal = cmark_chunk_dup(&detached_chunk, start, offset + max_rewind - rewind); cmark_chunk_to_cstr(parser->mem, &text->as.literal); text = post; - start += link_end; - remaining -= link_end; + start += offset + max_rewind + link_end; + remaining -= offset + max_rewind + link_end; offset = 0; depth++; } From 2b2bcdf561d38e5a8fccc4acc26f68cac8ed6e92 Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Thu, 24 Nov 2022 13:58:58 +0000 Subject: [PATCH 40/60] Create reference from detached_chunk, not text->as.literal. --- extensions/autolink.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/autolink.c b/extensions/autolink.c index ce7e1c64a..1e142cbde 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -403,8 +403,8 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { cmark_node *link_text = cmark_node_new_with_mem(CMARK_NODE_TEXT, parser->mem); cmark_chunk email = cmark_chunk_dup( - &text->as.literal, - offset + max_rewind - rewind, + &detached_chunk, + start + offset + max_rewind - rewind, (bufsize_t)(link_end + rewind)); cmark_chunk_to_cstr(parser->mem, &email); link_text->as.literal = email; From 8e0d2b739e72c4ec7bff64c23c9e310470103897 Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Thu, 24 Nov 2022 17:56:43 +0000 Subject: [PATCH 41/60] Restart if we find another @ character, to avoid quadratic behavior. --- extensions/autolink.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/extensions/autolink.c b/extensions/autolink.c index 1e142cbde..b52098ec9 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -317,7 +317,6 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { bool is_xmpp = false; size_t rewind; size_t max_rewind; - size_t nb = 0; size_t np = 0; if (offset >= remaining) @@ -329,6 +328,7 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { max_rewind = at - (data + start + offset); +found_at: for (rewind = 0; rewind < max_rewind; ++rewind) { uint8_t c = data[start + offset + max_rewind - rewind - 1]; @@ -360,15 +360,19 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { continue; } - for (link_end = 0; link_end < remaining - offset - max_rewind; ++link_end) { + assert(data[start + offset + max_rewind] == '@'); + for (link_end = 1; link_end < remaining - offset - max_rewind; ++link_end) { uint8_t c = data[start + offset + max_rewind + link_end]; if (cmark_isalnum(c)) continue; - if (c == '@') - nb++; - else if (c == '.' && link_end < remaining - offset - max_rewind - 1 && + if (c == '@') { + // Found another '@', so go back and try again with an updated offset and max_rewind. + offset += max_rewind + 1; + max_rewind = link_end - 1; + goto found_at; + } else if (c == '.' && link_end < remaining - offset - max_rewind - 1 && cmark_isalnum(data[start + offset + max_rewind + link_end + 1])) np++; else if (c == '/' && is_xmpp) @@ -377,10 +381,10 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { break; } - if (link_end < 2 || nb != 1 || np == 0 || + if (link_end < 2 || np == 0 || (!cmark_isalpha(data[start + offset + max_rewind + link_end - 1]) && data[start + offset + max_rewind + link_end - 1] != '.')) { - offset += max_rewind + 1; + offset += max_rewind + link_end; depth++; continue; } From c7b272b6ebb176a828340ded4abf60b2294a092b Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Thu, 24 Nov 2022 17:58:24 +0000 Subject: [PATCH 42/60] Low quality workaround for quadratic behavior is no longer needed. --- extensions/autolink.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/extensions/autolink.c b/extensions/autolink.c index b52098ec9..d77ab1bdf 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -294,7 +294,6 @@ static bool validate_protocol(char protocol[], uint8_t *data, int rewind, int ma static void postprocess_text(cmark_parser *parser, cmark_node *text) { size_t start = 0; size_t offset = 0; - size_t depth = 0; // `text` is going to be split into a list of nodes containing shorter segments // of text, so we detach the memory buffer from text and use `cmark_chunk_dup` to // create references to it. Later, `cmark_chunk_to_cstr` is used to convert @@ -307,10 +306,6 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { size_t remaining = text->as.literal.len; while (true) { - // postprocess_text can recurse very deeply if there is a very long line of - // '@' only. Stop at a reasonable depth to ensure it cannot crash. - if (depth > 1000) break; - size_t link_end; uint8_t *at; bool auto_mailto = true; @@ -356,7 +351,6 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { if (rewind == 0) { offset += max_rewind + 1; - depth++; continue; } @@ -385,7 +379,6 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { (!cmark_isalpha(data[start + offset + max_rewind + link_end - 1]) && data[start + offset + max_rewind + link_end - 1] != '.')) { offset += max_rewind + link_end; - depth++; continue; } @@ -393,7 +386,6 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { if (link_end == 0) { offset += max_rewind + 1; - depth++; continue; } @@ -430,7 +422,6 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { start += offset + max_rewind + link_end; remaining -= offset + max_rewind + link_end; offset = 0; - depth++; } // Convert the reference to allocated memory. From 7beeb47fe421dd5446700c8abef22d77c2efd15a Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Mon, 28 Nov 2022 23:21:13 +0000 Subject: [PATCH 43/60] Make sure that the chunk metadata is always initialized correctly. --- src/arena.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/arena.c b/src/arena.c index 83a15255f..6373c0d01 100644 --- a/src/arena.c +++ b/src/arena.c @@ -68,15 +68,16 @@ static void *arena_calloc(size_t nmem, size_t size) { const size_t align = sizeof(size_t) - 1; sz = (sz + align) & ~align; + struct arena_chunk *chunk; if (sz > A->sz) { - A->prev = alloc_arena_chunk(sz, A->prev); - return (uint8_t *) A->prev->ptr + sizeof(size_t); + A->prev = chunk = alloc_arena_chunk(sz, A->prev); + } else if (sz > A->sz - A->used) { + A = chunk = alloc_arena_chunk(A->sz + A->sz / 2, A); + } else { + chunk = A; } - if (sz > A->sz - A->used) { - A = alloc_arena_chunk(A->sz + A->sz / 2, A); - } - void *ptr = (uint8_t *) A->ptr + A->used; - A->used += sz; + void *ptr = (uint8_t *) chunk->ptr + chunk->used; + chunk->used += sz; *((size_t *) ptr) = sz - sizeof(size_t); return (uint8_t *) ptr + sizeof(size_t); } From 420c20a112acd75af463d8930d8d59f2d25e9cd5 Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Thu, 1 Dec 2022 18:44:38 +0000 Subject: [PATCH 44/60] Add registration mechanism for custom node flags --- api_test/main.c | 1 + extensions/table.c | 4 ++++ src/main.c | 1 + src/node.c | 34 ++++++++++++++++++++++++++++++++++ src/node.h | 33 ++++++++++++++++++++++++++------- test/cmark.py | 2 ++ 6 files changed, 68 insertions(+), 7 deletions(-) diff --git a/api_test/main.c b/api_test/main.c index 62006eaa9..8b3973825 100644 --- a/api_test/main.c +++ b/api_test/main.c @@ -1133,6 +1133,7 @@ int main() { int retval; test_batch_runner *runner = test_batch_runner_new(); + cmark_init_standard_node_flags(); version(runner); constructor(runner); accessors(runner); diff --git a/extensions/table.c b/extensions/table.c index 9fce51e8d..f079e3fd7 100644 --- a/extensions/table.c +++ b/extensions/table.c @@ -11,6 +11,9 @@ #include "table.h" #include "cmark-gfm-core-extensions.h" +// Custom node flag, initialized in `create_table_extension`. +static cmark_node__internal_flags CMARK_NODE__TABLE_VISITED; + cmark_node_type CMARK_NODE_TABLE, CMARK_NODE_TABLE_ROW, CMARK_NODE_TABLE_CELL; @@ -790,6 +793,7 @@ static int escape(cmark_syntax_extension *self, cmark_node *node, int c) { cmark_syntax_extension *create_table_extension(void) { cmark_syntax_extension *self = cmark_syntax_extension_new("table"); + cmark_register_node_flag(&CMARK_NODE__TABLE_VISITED); cmark_syntax_extension_set_match_block_func(self, matches); cmark_syntax_extension_set_open_block_func(self, try_opening_table_block); cmark_syntax_extension_set_get_type_string_func(self, get_type_string); diff --git a/src/main.c b/src/main.c index a62c4f2ca..caed771b4 100644 --- a/src/main.c +++ b/src/main.c @@ -139,6 +139,7 @@ int main(int argc, char *argv[]) { } #endif + cmark_init_standard_node_flags(); cmark_gfm_core_extensions_ensure_registered(); #ifdef USE_PLEDGE diff --git a/src/node.c b/src/node.c index 0118d6511..a28214195 100644 --- a/src/node.c +++ b/src/node.c @@ -9,6 +9,40 @@ static void S_node_unlink(cmark_node *node); #define NODE_MEM(node) cmark_node_mem(node) +cmark_node__internal_flags CMARK_NODE__OPEN = 0; +cmark_node__internal_flags CMARK_NODE__LAST_LINE_BLANK = 0; +cmark_node__internal_flags CMARK_NODE__LAST_LINE_CHECKED = 0; + +void cmark_register_node_flag(cmark_node__internal_flags *flags) { + static uint8_t shift = 0; + + // flags should be a pointer to a global variable and this function + // should only be called once to initialize its value. + if (*flags) { + fprintf(stderr, "flag initialization error in cmark_register_node_flag\n"); + abort(); + } + + // Check that we haven't run out of bits. + if (shift >= 8 * sizeof(cmark_node__internal_flags)) { + fprintf(stderr, "too many flags in cmark_register_node_flag\n"); + abort(); + } + + *flags = (cmark_node__internal_flags)1 << shift; + shift++; +} + +void cmark_init_standard_node_flags() { + static int initialized = 0; + if (!initialized) { + initialized = 1; + cmark_register_node_flag(&CMARK_NODE__OPEN); + cmark_register_node_flag(&CMARK_NODE__LAST_LINE_BLANK); + cmark_register_node_flag(&CMARK_NODE__LAST_LINE_CHECKED); + } +} + bool cmark_node_can_contain_type(cmark_node *node, cmark_node_type child_type) { if (child_type == CMARK_NODE_DOCUMENT) { return false; diff --git a/src/node.h b/src/node.h index 7ee0d6523..281258f7a 100644 --- a/src/node.h +++ b/src/node.h @@ -48,12 +48,7 @@ typedef struct { cmark_chunk on_exit; } cmark_custom; -enum cmark_node__internal_flags { - CMARK_NODE__OPEN = (1 << 0), - CMARK_NODE__LAST_LINE_BLANK = (1 << 1), - CMARK_NODE__LAST_LINE_CHECKED = (1 << 2), - CMARK_NODE__TABLE_VISITED = (1 << 3), -}; +typedef uint16_t cmark_node__internal_flags; struct cmark_node { cmark_strbuf content; @@ -73,7 +68,7 @@ struct cmark_node { int end_column; int internal_offset; uint16_t type; - uint16_t flags; + cmark_node__internal_flags flags; cmark_syntax_extension *extension; @@ -96,6 +91,30 @@ struct cmark_node { } as; }; +/** + * Syntax extensions can use this function to register a custom node + * flag. The flags are stored in the `flags` field of the `cmark_node` + * struct. The `flags` parameter should be the address of a global variable + * which will store the flag value. + */ +CMARK_GFM_EXPORT +void cmark_register_node_flag(cmark_node__internal_flags *flags); + +/** + * Standard node flags. (Initialized using `cmark_init_standard_node_flags`.) + */ +extern cmark_node__internal_flags CMARK_NODE__OPEN; +extern cmark_node__internal_flags CMARK_NODE__LAST_LINE_BLANK; +extern cmark_node__internal_flags CMARK_NODE__LAST_LINE_CHECKED; + +/** + * Uses `cmark_register_node_flag` to initialize the standard node flags. + * This function should be called at program startup time. Calling it + * multiple times has no additional effect. + */ +CMARK_GFM_EXPORT +void cmark_init_standard_node_flags(); + static CMARK_INLINE cmark_mem *cmark_node_mem(cmark_node *node) { return node->content.mem; } diff --git a/test/cmark.py b/test/cmark.py index b0eb20dbe..9d16f014d 100644 --- a/test/cmark.py +++ b/test/cmark.py @@ -13,6 +13,7 @@ def pipe_through_prog(prog, text): def parse(lib, extlib, text, extensions): cmark_gfm_core_extensions_ensure_registered = extlib.cmark_gfm_core_extensions_ensure_registered + cmark_init_standard_node_flags = lib.cmark_init_standard_node_flags find_syntax_extension = lib.cmark_find_syntax_extension find_syntax_extension.restype = c_void_p @@ -32,6 +33,7 @@ def parse(lib, extlib, text, extensions): parser_finish.restype = c_void_p parser_finish.argtypes = [c_void_p] + cmark_init_standard_node_flags() cmark_gfm_core_extensions_ensure_registered() parser = parser_new(0) From d1032f2ed1fca4e212269a3a477135a2ad9eca65 Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Fri, 2 Dec 2022 17:29:10 +0000 Subject: [PATCH 45/60] Update src/node.c Co-authored-by: Phil Turnbull --- src/node.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/node.c b/src/node.c index a28214195..80c434e30 100644 --- a/src/node.c +++ b/src/node.c @@ -9,9 +9,9 @@ static void S_node_unlink(cmark_node *node); #define NODE_MEM(node) cmark_node_mem(node) -cmark_node__internal_flags CMARK_NODE__OPEN = 0; -cmark_node__internal_flags CMARK_NODE__LAST_LINE_BLANK = 0; -cmark_node__internal_flags CMARK_NODE__LAST_LINE_CHECKED = 0; +cmark_node__internal_flags CMARK_NODE__OPEN; +cmark_node__internal_flags CMARK_NODE__LAST_LINE_BLANK; +cmark_node__internal_flags CMARK_NODE__LAST_LINE_CHECKED; void cmark_register_node_flag(cmark_node__internal_flags *flags) { static uint8_t shift = 0; From c1866d959b7b1413f63b714f3109ad27069934fe Mon Sep 17 00:00:00 2001 From: Nick Wellnhofer Date: Fri, 24 Sep 2021 11:04:17 +0200 Subject: [PATCH 46/60] Fix parsing of emphasis before links Fix a regression introduced with commit ed0a4bf. Also test the first delimiter against stack_bottom in process_emphasis. This happened to work with the old code and only resulted in an unnecessary scan. Fixes #424. --- src/inlines.c | 11 ++++++----- test/regression.txt | 8 ++++++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/inlines.c b/src/inlines.c index e1243ca2f..1aef0ab8c 100644 --- a/src/inlines.c +++ b/src/inlines.c @@ -640,7 +640,8 @@ static cmark_syntax_extension *get_extension_for_special_char(cmark_parser *pars } static void process_emphasis(cmark_parser *parser, subject *subj, bufsize_t stack_bottom) { - delimiter *closer = subj->last_delim; + delimiter *candidate; + delimiter *closer = NULL; delimiter *opener; delimiter *old_closer; bool opener_found; @@ -657,10 +658,10 @@ static void process_emphasis(cmark_parser *parser, subject *subj, bufsize_t stac } // move back to first relevant delim. - while (closer != NULL && - closer->previous != NULL && - closer->previous->position >= stack_bottom) { - closer = closer->previous; + candidate = subj->last_delim; + while (candidate != NULL && candidate->position >= stack_bottom) { + closer = candidate; + candidate = candidate->previous; } // now move forward, looking for closers, and handling each diff --git a/test/regression.txt b/test/regression.txt index d4fbe3102..844da60a2 100644 --- a/test/regression.txt +++ b/test/regression.txt @@ -366,3 +366,11 @@ Hello world .

Hello world

```````````````````````````````` + +Issue #424 - emphasis before links + +```````````````````````````````` example +*text* [link](#section) +. +

text link

+```````````````````````````````` From 9144d3ae1fc6b357f9df0dc91aa43fe0b8f4029a Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Wed, 4 Jan 2023 21:41:32 -0800 Subject: [PATCH 47/60] Fix quadratic parsing issue with repeated ``, we set a flag telling us not to try again. Resolves GHSL-2022-098 --- src/inlines.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/inlines.c b/src/inlines.c index f148bad7c..08e794195 100644 --- a/src/inlines.c +++ b/src/inlines.c @@ -48,6 +48,7 @@ typedef struct bracket { #define FLAG_SKIP_HTML_CDATA (1u << 0) #define FLAG_SKIP_HTML_DECLARATION (1u << 1) #define FLAG_SKIP_HTML_PI (1u << 2) +#define FLAG_SKIP_HTML_COMMENT (1u << 3) typedef struct subject{ cmark_mem *mem; @@ -907,7 +908,7 @@ static cmark_node *handle_pointy_brace(subject *subj, int options) { // finally, try to match an html tag if (subj->pos + 2 <= subj->input.len) { int c = subj->input.data[subj->pos]; - if (c == '!') { + if (c == '!' && (subj->flags & FLAG_SKIP_HTML_COMMENT) == 0) { c = subj->input.data[subj->pos+1]; if (c == '-' && subj->input.data[subj->pos+2] == '-') { if (subj->input.data[subj->pos+3] == '>') { @@ -917,8 +918,12 @@ static cmark_node *handle_pointy_brace(subject *subj, int options) { matchlen = 5; } else { matchlen = scan_html_comment(&subj->input, subj->pos + 1); - if (matchlen > 0) + if (matchlen > 0) { matchlen += 1; // prefix "<" + } else { // no match through end of input: set a flag so + // we don't reparse looking for -->: + subj->flags |= FLAG_SKIP_HTML_COMMENT; + } } } else if (c == '[') { if ((subj->flags & FLAG_SKIP_HTML_CDATA) == 0) { From d8cb70c80b726ab1eb9cfe522f0f35cc9c28c1df Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Wed, 4 Jan 2023 21:50:30 -0800 Subject: [PATCH 48/60] Add pathological test for repeated ': - subj->flags |= FLAG_SKIP_HTML_COMMENT; - } - } + } else { // no match through end of input: set a flag so + // we don't reparse looking for -->: + subj->flags |= FLAG_SKIP_HTML_COMMENT; + } + } } else if (c == '[') { if ((subj->flags & FLAG_SKIP_HTML_CDATA) == 0) { matchlen = scan_html_cdata(&subj->input, subj->pos + 2); From ad38ac0ce86c8fc2ef88509e294b373f0b1e25e2 Mon Sep 17 00:00:00 2001 From: Bas Alberts Date: Mon, 23 Jan 2023 14:10:59 -0500 Subject: [PATCH 53/60] Changelog for 0.29.0.gfm.7 --- changelog.txt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/changelog.txt b/changelog.txt index 05cab2ac0..b9c299760 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,18 @@ +[0.29.0.gfm.7] + + * Fixed a polynomial time complexity issue per + https://github.com/github/cmark-gfm/security/advisories/GHSA-r572-jvj2-3m8p + * Fixed an issue in which crafted markdown document could trigger an + out-of-bounds read in the validate_protocol function per + https://github.com/github/cmark-gfm/security/advisories/GHSA-c944-cv5f-hpvr + * Fixed a polynomial time complexity issue + https://github.com/github/cmark-gfm/security/advisories/GHSA-24f7-9frr-5h2r + * Fixed several polynomial time complexity issues per + https://github.com/github/cmark-gfm/security/advisories/GHSA-29g3-96g3-jg6c + * We removed an unneeded .DS_Store file (#291) + * We added a test for domains with underscores and fix roundtrip behavior (#292) + * We now use an up-to-date clang-format (#294) + [0.29.0.gfm.6] * Fixed polynomial time complexity DoS vulnerability in autolink extension From 016cf82b34f1f84229930bfa216817b5863e6691 Mon Sep 17 00:00:00 2001 From: Bas Alberts Date: Mon, 23 Jan 2023 14:43:51 -0500 Subject: [PATCH 54/60] Prevent implicit integer truncations This commit changes size integers to consistently be of type size_t to prevent implicit integer truncations during integer arithmetic. What remain are explicit truncations to (bufsize_t) which is of type int32_t. This requires additional careful consideration. --- extensions/autolink.c | 20 ++++++++++++++------ extensions/table.c | 2 +- src/map.c | 2 +- src/map.h | 10 +++++----- src/parser.h | 2 +- 5 files changed, 22 insertions(+), 14 deletions(-) diff --git a/extensions/autolink.c b/extensions/autolink.c index 182c902e2..fc4c6f2c4 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -9,6 +9,14 @@ #include #endif +// for ssize_t +#ifdef _MSC_VER +#include +typedef SSIZE_T ssize_t; +#else +#include +#endif + static int is_valid_hostchar(const uint8_t *link, size_t link_len) { int32_t ch; int r = cmark_utf8proc_iterate(link, (bufsize_t)link_len, &ch); @@ -290,10 +298,10 @@ static cmark_node *match(cmark_syntax_extension *ext, cmark_parser *parser, // inline was finished in inlines.c. } -static bool validate_protocol(char protocol[], uint8_t *data, int rewind, int max_rewind) { +static bool validate_protocol(char protocol[], uint8_t *data, size_t rewind, size_t max_rewind) { size_t len = strlen(protocol); - if (len > (size_t)(max_rewind - rewind)) { + if (len > (max_rewind - rewind)) { return false; } @@ -302,11 +310,11 @@ static bool validate_protocol(char protocol[], uint8_t *data, int rewind, int ma return false; } - if (len == (size_t)(max_rewind - rewind)) { + if (len == (max_rewind - rewind)) { return true; } - char prev_char = data[-rewind - len - 1]; + char prev_char = data[-((ssize_t)rewind) - len - 1]; // Make sure the character before the protocol is non-alphanumeric return !cmark_isalnum(prev_char); @@ -421,7 +429,7 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { cmark_node *link_text = cmark_node_new_with_mem(CMARK_NODE_TEXT, parser->mem); cmark_chunk email = cmark_chunk_dup( &detached_chunk, - start + offset + max_rewind - rewind, + (bufsize_t)(start + offset + max_rewind - rewind), (bufsize_t)(link_end + rewind)); cmark_chunk_to_cstr(parser->mem, &email); link_text->as.literal = email; @@ -436,7 +444,7 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) { cmark_node_insert_after(link_node, post); - text->as.literal = cmark_chunk_dup(&detached_chunk, start, offset + max_rewind - rewind); + text->as.literal = cmark_chunk_dup(&detached_chunk, (bufsize_t)start, (bufsize_t)(offset + max_rewind - rewind)); cmark_chunk_to_cstr(parser->mem, &text->as.literal); text = post; diff --git a/extensions/table.c b/extensions/table.c index cc8dc18c5..7f2813226 100644 --- a/extensions/table.c +++ b/extensions/table.c @@ -133,7 +133,7 @@ static node_cell* append_row_cell(cmark_mem *mem, table_row *row) { // Use realloc to double the size of the buffer. row->cells = (node_cell *)mem->realloc(row->cells, (2 * n_columns - 1) * sizeof(node_cell)); } - row->n_columns = n_columns; + row->n_columns = (uint16_t)n_columns; return &row->cells[n_columns-1]; } diff --git a/src/map.c b/src/map.c index fda9606a7..f60f8fc60 100644 --- a/src/map.c +++ b/src/map.c @@ -51,7 +51,7 @@ refsearch(const void *label, const void *p2) { } static void sort_map(cmark_map *map) { - unsigned int i = 0, last = 0, size = map->size; + size_t i = 0, last = 0, size = map->size; cmark_map_entry *r = map->refs, **sorted = NULL; sorted = (cmark_map_entry **)map->mem->calloc(size, sizeof(cmark_map_entry *)); diff --git a/src/map.h b/src/map.h index 345dcf87b..cc9b1f30c 100644 --- a/src/map.h +++ b/src/map.h @@ -10,8 +10,8 @@ extern "C" { struct cmark_map_entry { struct cmark_map_entry *next; unsigned char *label; - unsigned int age; - unsigned int size; + size_t age; + size_t size; }; typedef struct cmark_map_entry cmark_map_entry; @@ -24,9 +24,9 @@ struct cmark_map { cmark_mem *mem; cmark_map_entry *refs; cmark_map_entry **sorted; - unsigned int size; - unsigned int ref_size; - unsigned int max_ref_size; + size_t size; + size_t ref_size; + size_t max_ref_size; cmark_map_free_f free; }; diff --git a/src/parser.h b/src/parser.h index d5964c5b2..436c53f5b 100644 --- a/src/parser.h +++ b/src/parser.h @@ -46,7 +46,7 @@ struct cmark_parser { /* Options set by the user, see the Options section in cmark.h */ int options; bool last_buffer_ended_with_cr; - unsigned int total_size; + size_t total_size; cmark_llist *syntax_extensions; cmark_llist *inline_syntax_extensions; cmark_ispunct_func backslash_ispunct; From 01162c5b28d923bf96472d94821aa3b087b347ef Mon Sep 17 00:00:00 2001 From: Bas Alberts Date: Mon, 23 Jan 2023 16:39:02 -0500 Subject: [PATCH 55/60] move from ssize_t to the C standard based ptrdiff_t --- extensions/autolink.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/extensions/autolink.c b/extensions/autolink.c index fc4c6f2c4..f3b75a7e9 100644 --- a/extensions/autolink.c +++ b/extensions/autolink.c @@ -2,6 +2,7 @@ #include #include #include +#include #if defined(_WIN32) #define strncasecmp _strnicmp @@ -9,14 +10,6 @@ #include #endif -// for ssize_t -#ifdef _MSC_VER -#include -typedef SSIZE_T ssize_t; -#else -#include -#endif - static int is_valid_hostchar(const uint8_t *link, size_t link_len) { int32_t ch; int r = cmark_utf8proc_iterate(link, (bufsize_t)link_len, &ch); @@ -314,7 +307,7 @@ static bool validate_protocol(char protocol[], uint8_t *data, size_t rewind, siz return true; } - char prev_char = data[-((ssize_t)rewind) - len - 1]; + char prev_char = data[-((ptrdiff_t)rewind) - len - 1]; // Make sure the character before the protocol is non-alphanumeric return !cmark_isalnum(prev_char); From 57d5e093ef801f54bf4174c900f7a863599bb47d Mon Sep 17 00:00:00 2001 From: Bas Alberts Date: Mon, 23 Jan 2023 16:47:48 -0500 Subject: [PATCH 56/60] Update changelog for integer truncation commits --- changelog.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/changelog.txt b/changelog.txt index b9c299760..8d1e0d057 100644 --- a/changelog.txt +++ b/changelog.txt @@ -12,6 +12,8 @@ * We removed an unneeded .DS_Store file (#291) * We added a test for domains with underscores and fix roundtrip behavior (#292) * We now use an up-to-date clang-format (#294) + * We made a variety of implicit integer trunctions explicit by moving to + size_t as our standard size integer type (#302) [0.29.0.gfm.6] * Fixed polynomial time complexity DoS vulnerability in autolink extension From 46047921bf3ae4eb86a9c0f577da4b8b76c48d63 Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Tue, 24 Jan 2023 18:30:55 +0000 Subject: [PATCH 57/60] Fuzz target for finding quadratic performance issues. --- CMakeLists.txt | 12 ++++++ fuzz/CMakeLists.txt | 21 +++++++++++ fuzz/README.md | 12 ++++++ fuzz/fuzz_quadratic.c | 87 +++++++++++++++++++++++++++++++++++++++++++ fuzz/fuzzloop.sh | 28 ++++++++++++++ 5 files changed, 160 insertions(+) create mode 100644 fuzz/CMakeLists.txt create mode 100644 fuzz/README.md create mode 100644 fuzz/fuzz_quadratic.c create mode 100755 fuzz/fuzzloop.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index 135932666..96559be59 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,6 +18,15 @@ option(CMARK_TESTS "Build cmark-gfm tests and enable testing" ON) option(CMARK_STATIC "Build static libcmark-gfm library" ON) option(CMARK_SHARED "Build shared libcmark-gfm library" ON) option(CMARK_LIB_FUZZER "Build libFuzzer fuzzing harness" OFF) +option(CMARK_FUZZ_QUADRATIC "Build quadratic fuzzing harness" OFF) + +if(CMARK_FUZZ_QUADRATIC) + set(FUZZER_FLAGS "-fsanitize=fuzzer-no-link,address -g") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FUZZER_FLAGS}") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FUZZER_FLAGS}") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${FUZZER_FLAGS}") + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${FUZZER_FLAGS}") +endif() add_subdirectory(src) add_subdirectory(extensions) @@ -29,6 +38,9 @@ if(CMARK_TESTS) enable_testing() add_subdirectory(test testdir) endif() +if(CMARK_FUZZ_QUADRATIC) + add_subdirectory(fuzz) +endif() if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release" CACHE STRING diff --git a/fuzz/CMakeLists.txt b/fuzz/CMakeLists.txt new file mode 100644 index 000000000..3cae79421 --- /dev/null +++ b/fuzz/CMakeLists.txt @@ -0,0 +1,21 @@ +include_directories( + ${PROJECT_BINARY_DIR}/extensions + ${PROJECT_BINARY_DIR}/src + ../extensions + ../src +) + +macro(fuzzer name) + add_executable(${name} ${name}.c) + set_target_properties(${name} + PROPERTIES + COMPILE_FLAGS "-fsanitize=fuzzer" + LINK_FLAGS "-fsanitize=fuzzer") + if(CMARK_SHARED) + target_link_libraries(${name} libcmark-gfm-extensions libcmark-gfm) + elseif(CMARK_STATIC) + target_link_libraries(${name} libcmark-gfm-extensions_static libcmark-gfm_static) + endif() +endmacro() + +fuzzer(fuzz_quadratic) diff --git a/fuzz/README.md b/fuzz/README.md new file mode 100644 index 000000000..f77da2af3 --- /dev/null +++ b/fuzz/README.md @@ -0,0 +1,12 @@ +The quadratic fuzzer generates long sequences of repeated characters, such as ` +#include +#include +#include "cmark-gfm.h" +#include "cmark-gfm-core-extensions.h" +#include +#include +#include +#include + +const char *extension_names[] = { + "autolink", + "strikethrough", + "table", + "tagfilter", + NULL, +}; + +int LLVMFuzzerInitialize(int *argc, char ***argv) { + cmark_init_standard_node_flags(); + cmark_gfm_core_extensions_ensure_registered(); + return 0; +} + +int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { + struct __attribute__((packed)) { + int options; + int width; + uint8_t splitpoint; + uint8_t repeatlen; + } fuzz_config; + + if (size >= sizeof(fuzz_config)) { + /* The beginning of `data` is treated as fuzzer configuration */ + memcpy(&fuzz_config, data, sizeof(fuzz_config)); + + /* Test options that are used by GitHub. */ + fuzz_config.options = CMARK_OPT_UNSAFE | CMARK_OPT_FOOTNOTES | CMARK_OPT_GITHUB_PRE_LANG | CMARK_OPT_HARDBREAKS; + + /* Remainder of input is the markdown */ + const char *markdown0 = (const char *)(data + sizeof(fuzz_config)); + const size_t markdown_size0 = size - sizeof(fuzz_config); + char markdown[0x80000]; + if (markdown_size0 <= sizeof(markdown)) { + size_t markdown_size = 0; + if (fuzz_config.splitpoint <= markdown_size0 && 0 < fuzz_config.repeatlen && + fuzz_config.repeatlen <= markdown_size0 - fuzz_config.splitpoint) { + const size_t size_after_splitpoint = markdown_size0 - fuzz_config.splitpoint - fuzz_config.repeatlen; + memcpy(&markdown[markdown_size], &markdown0[0], fuzz_config.splitpoint); + markdown_size += fuzz_config.splitpoint; + + while (markdown_size + fuzz_config.repeatlen + size_after_splitpoint <= sizeof(markdown)) { + memcpy(&markdown[markdown_size], &markdown0[fuzz_config.splitpoint], + fuzz_config.repeatlen); + markdown_size += fuzz_config.repeatlen; + } + memcpy(&markdown[markdown_size], &markdown0[fuzz_config.splitpoint + fuzz_config.repeatlen], + size_after_splitpoint); + markdown_size += size_after_splitpoint; + } else { + markdown_size = markdown_size0; + memcpy(markdown, markdown0, markdown_size); + } + + cmark_parser *parser = cmark_parser_new(fuzz_config.options); + + for (const char **it = extension_names; *it; ++it) { + const char *extension_name = *it; + cmark_syntax_extension *syntax_extension = cmark_find_syntax_extension(extension_name); + if (!syntax_extension) { + fprintf(stderr, "%s is not a valid syntax extension\n", extension_name); + abort(); + } + cmark_parser_attach_syntax_extension(parser, syntax_extension); + } + + cmark_parser_feed(parser, markdown, markdown_size); + cmark_node *doc = cmark_parser_finish(parser); + + free(cmark_render_html(doc, fuzz_config.options, NULL)); + + cmark_node_free(doc); + cmark_parser_free(parser); + } + } + return 0; +} diff --git a/fuzz/fuzzloop.sh b/fuzz/fuzzloop.sh new file mode 100755 index 000000000..ff4a01b07 --- /dev/null +++ b/fuzz/fuzzloop.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# Stop when an error is found +set -e + +# Create a corpus sub-directory if it doesn't already exist. +mkdir -p corpus + +# The memory and disk usage grows over time, so this loop restarts the +# fuzzer every 4 hours. The `-merge=1` option is used to minimize the +# corpus on each iteration. +while : +do + date + echo restarting loop + + # Minimize the corpus + mv corpus/ corpus2 + mkdir corpus + echo minimizing corpus + ./fuzz/fuzz_quadratic -merge=1 corpus ../bench corpus2/ -max_len=1024 + rm -r corpus2 + + # Run the fuzzer for 4 hours + date + echo start fuzzer + ./fuzz/fuzz_quadratic corpus -dict=../test/fuzzing_dictionary -jobs=$(nproc) -workers=$(nproc) -max_len=1024 -max_total_time=14400 +done From 0685ab0e1f86d20fe95edc88538edbb3fded847b Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Tue, 24 Jan 2023 23:03:45 +0000 Subject: [PATCH 58/60] Deprecate cmark_init_standard_node_flags. --- api_test/main.c | 1 - extensions/table.c | 2 +- fuzz/fuzz_quadratic.c | 1 - src/main.c | 1 - src/node.c | 24 ++++++------------------ src/node.h | 32 +++++++++++++++++++------------- test/cmark.py | 2 -- 7 files changed, 26 insertions(+), 37 deletions(-) diff --git a/api_test/main.c b/api_test/main.c index 8b3973825..62006eaa9 100644 --- a/api_test/main.c +++ b/api_test/main.c @@ -1133,7 +1133,6 @@ int main() { int retval; test_batch_runner *runner = test_batch_runner_new(); - cmark_init_standard_node_flags(); version(runner); constructor(runner); accessors(runner); diff --git a/extensions/table.c b/extensions/table.c index 7f2813226..e53ea3154 100644 --- a/extensions/table.c +++ b/extensions/table.c @@ -12,7 +12,7 @@ #include "cmark-gfm-core-extensions.h" // Custom node flag, initialized in `create_table_extension`. -static cmark_node__internal_flags CMARK_NODE__TABLE_VISITED; +static cmark_node_internal_flags CMARK_NODE__TABLE_VISITED; cmark_node_type CMARK_NODE_TABLE, CMARK_NODE_TABLE_ROW, CMARK_NODE_TABLE_CELL; diff --git a/fuzz/fuzz_quadratic.c b/fuzz/fuzz_quadratic.c index 18914e2fd..cab1b6330 100644 --- a/fuzz/fuzz_quadratic.c +++ b/fuzz/fuzz_quadratic.c @@ -17,7 +17,6 @@ const char *extension_names[] = { }; int LLVMFuzzerInitialize(int *argc, char ***argv) { - cmark_init_standard_node_flags(); cmark_gfm_core_extensions_ensure_registered(); return 0; } diff --git a/src/main.c b/src/main.c index caed771b4..a62c4f2ca 100644 --- a/src/main.c +++ b/src/main.c @@ -139,7 +139,6 @@ int main(int argc, char *argv[]) { } #endif - cmark_init_standard_node_flags(); cmark_gfm_core_extensions_ensure_registered(); #ifdef USE_PLEDGE diff --git a/src/node.c b/src/node.c index 80c434e30..42863809b 100644 --- a/src/node.c +++ b/src/node.c @@ -9,12 +9,8 @@ static void S_node_unlink(cmark_node *node); #define NODE_MEM(node) cmark_node_mem(node) -cmark_node__internal_flags CMARK_NODE__OPEN; -cmark_node__internal_flags CMARK_NODE__LAST_LINE_BLANK; -cmark_node__internal_flags CMARK_NODE__LAST_LINE_CHECKED; - -void cmark_register_node_flag(cmark_node__internal_flags *flags) { - static uint8_t shift = 0; +void cmark_register_node_flag(cmark_node_internal_flags *flags) { + static cmark_node_internal_flags nextflag = CMARK_NODE__REGISTER_FIRST; // flags should be a pointer to a global variable and this function // should only be called once to initialize its value. @@ -24,24 +20,16 @@ void cmark_register_node_flag(cmark_node__internal_flags *flags) { } // Check that we haven't run out of bits. - if (shift >= 8 * sizeof(cmark_node__internal_flags)) { + if (nextflag == 0) { fprintf(stderr, "too many flags in cmark_register_node_flag\n"); abort(); } - *flags = (cmark_node__internal_flags)1 << shift; - shift++; + *flags = nextflag; + nextflag <<= 1; } -void cmark_init_standard_node_flags() { - static int initialized = 0; - if (!initialized) { - initialized = 1; - cmark_register_node_flag(&CMARK_NODE__OPEN); - cmark_register_node_flag(&CMARK_NODE__LAST_LINE_BLANK); - cmark_register_node_flag(&CMARK_NODE__LAST_LINE_CHECKED); - } -} +void cmark_init_standard_node_flags() {} bool cmark_node_can_contain_type(cmark_node *node, cmark_node_type child_type) { if (child_type == CMARK_NODE_DOCUMENT) { diff --git a/src/node.h b/src/node.h index 281258f7a..e025e25d6 100644 --- a/src/node.h +++ b/src/node.h @@ -48,7 +48,17 @@ typedef struct { cmark_chunk on_exit; } cmark_custom; -typedef uint16_t cmark_node__internal_flags; +enum cmark_node__internal_flags { + CMARK_NODE__OPEN = (1 << 0), + CMARK_NODE__LAST_LINE_BLANK = (1 << 1), + CMARK_NODE__LAST_LINE_CHECKED = (1 << 2), + + // Extensions can register custom flags by calling `cmark_register_node_flag`. + // This is the starting value for the custom flags. + CMARK_NODE__REGISTER_FIRST = (1 << 3), +}; + +typedef uint16_t cmark_node_internal_flags; struct cmark_node { cmark_strbuf content; @@ -68,7 +78,7 @@ struct cmark_node { int end_column; int internal_offset; uint16_t type; - cmark_node__internal_flags flags; + cmark_node_internal_flags flags; cmark_syntax_extension *extension; @@ -98,19 +108,15 @@ struct cmark_node { * which will store the flag value. */ CMARK_GFM_EXPORT -void cmark_register_node_flag(cmark_node__internal_flags *flags); - -/** - * Standard node flags. (Initialized using `cmark_init_standard_node_flags`.) - */ -extern cmark_node__internal_flags CMARK_NODE__OPEN; -extern cmark_node__internal_flags CMARK_NODE__LAST_LINE_BLANK; -extern cmark_node__internal_flags CMARK_NODE__LAST_LINE_CHECKED; +void cmark_register_node_flag(cmark_node_internal_flags *flags); /** - * Uses `cmark_register_node_flag` to initialize the standard node flags. - * This function should be called at program startup time. Calling it - * multiple times has no additional effect. + * DEPRECATED. + * + * This function was added in cmark-gfm version 0.29.0.gfm.7, and was + * required to be called at program start time, which caused + * backwards-compatibility issues in applications that use cmark-gfm as a + * library. It is now a no-op. */ CMARK_GFM_EXPORT void cmark_init_standard_node_flags(); diff --git a/test/cmark.py b/test/cmark.py index 9d16f014d..b0eb20dbe 100644 --- a/test/cmark.py +++ b/test/cmark.py @@ -13,7 +13,6 @@ def pipe_through_prog(prog, text): def parse(lib, extlib, text, extensions): cmark_gfm_core_extensions_ensure_registered = extlib.cmark_gfm_core_extensions_ensure_registered - cmark_init_standard_node_flags = lib.cmark_init_standard_node_flags find_syntax_extension = lib.cmark_find_syntax_extension find_syntax_extension.restype = c_void_p @@ -33,7 +32,6 @@ def parse(lib, extlib, text, extensions): parser_finish.restype = c_void_p parser_finish.argtypes = [c_void_p] - cmark_init_standard_node_flags() cmark_gfm_core_extensions_ensure_registered() parser = parser_new(0) From 71f87e3555844261f111125bcac4aa3fe6991448 Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Tue, 24 Jan 2023 23:19:50 +0000 Subject: [PATCH 59/60] Fix cmake warnings --- extensions/CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/extensions/CMakeLists.txt b/extensions/CMakeLists.txt index 0c007c706..135d28d5c 100644 --- a/extensions/CMakeLists.txt +++ b/extensions/CMakeLists.txt @@ -1,4 +1,3 @@ -cmake_minimum_required(VERSION 2.8) set(LIBRARY "libcmark-gfm-extensions") set(STATICLIBRARY "libcmark-gfm-extensions_static") set(LIBRARY_SOURCES @@ -24,7 +23,6 @@ include_directories(. ${CMAKE_CURRENT_BINARY_DIR}) set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE} -pg") set(CMAKE_LINKER_PROFILE "${CMAKE_LINKER_FLAGS_RELEASE} -pg") -add_compiler_export_flags() if (CMARK_SHARED) add_library(${LIBRARY} SHARED ${LIBRARY_SOURCES}) From eb32891cd817aff1772d6d2783c011e29422cc9d Mon Sep 17 00:00:00 2001 From: Bas Alberts Date: Wed, 25 Jan 2023 11:01:46 -0500 Subject: [PATCH 60/60] Changelog for 0.29.0.gfm.8 --- changelog.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/changelog.txt b/changelog.txt index 8d1e0d057..4cc5c58ec 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,8 @@ +[0.29.0.gfm.8] + + * We restored backwards compatibility by deprecating the `cmark_init_standard_node_flags()` requirement, which is now a noop (#305) + * We added a quadratic complexity fuzzing target (#304) + [0.29.0.gfm.7] * Fixed a polynomial time complexity issue per