/* Generated by re2c 1.3 */
#include <stdlib.h>
#include "chunk.h"
#include "scanners.h"

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];

	  ptr[c->len] = '\0';
	  res = scanner(ptr + offset);
	  ptr[c->len] = lim;
        }

	return res;
}



// Try to match a scheme including colon.
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;
}

}

// Try to match URI autolink after first <, returning number of chars matched.
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;
}

}

// 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 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;
}

}

// 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[] = {
		/* 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;
		}
	}
}

}

// 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 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;
}

}

// 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)
{
  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;
}

}

// 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)
{
  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;
}

}

// Try to match an HTML block end line of type 1
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;
			}
		}
	}
}

}

// Try to match an HTML block end line of type 2
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); }
}

}

// Try to match an HTML block end line of type 3
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); }
}

}

// Try to match an HTML block end line of type 4
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;
}

}

// Try to match an HTML block end line of type 5
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); }
}

}

// 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)
{
  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;
		}
	}
}

}

// 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); }
}

}

// Match ATX heading start.
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;
}

}

// 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)
{
  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;
	}
}

}

// Scan an opening code fence.
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;
}

}

// Scan a closing code fence with length at least len.
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); }
}

}

// Scans an entity.
// Returns number of chars matched.
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;
		}
	}
}

}

// 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)
{
  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;
}

}

// Scans a footnote definition opening.
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); }
}

}
