{"tests": [ {"description":"", "input":"", "output":["ParseError",["DOCTYPE", null, null, null, false]]}, {"description":"", "input":"", "output":[["DOCTYPE", "h", null, null, true]]}, {"description":"", "input":"", "output":[["DOCTYPE", "H", null, null, true]]}, {"description":"", "input":"", "output":[["DOCTYPE", "ht", null, null, true]]}, {"description":"", "input":"", "output":[["DOCTYPE", "Ht", null, null, true]]}, {"description":"", "input":"", "output":[["DOCTYPE", "hT", null, null, true]]}, {"description":"", "input":"", "output":[["DOCTYPE", "hT", null, null, true]]}, {"description":"", "input":"", "output":[["DOCTYPE", "htm", null, null, true]]}, {"description":"", "input":"", "output":[["DOCTYPE", "Htm", null, null, true]]}, {"description":"", "input":"", "output":[["DOCTYPE", "hTM", null, null, true]]}, {"description":"", "input":"", "output":[["DOCTYPE", "html5", null, null, true]]}, {"description":"PUBLIC\u0022\u0022", "input":"", "output":[["DOCTYPE", "html", "", null, true]]}, {"description":"PUBLIC''", "input":"", "output":[["DOCTYPE", "html", "", null, true]]}, {"description":"PUBLICbogus", "input":"", "output":["ParseError",["DOCTYPE", "html", null, null, false]]}, {"description":"PUBLIC bogus", "input":"", "output":["ParseError",["DOCTYPE", "html", null, null, false]]}, {"description":"PUBLIC \u0022\u0022bogus", "input":"", "output":["ParseError",["DOCTYPE", "html", "", null, false]]}, {"description":"PUBLIC \u0022\u0022 bogus", "input":"", "output":["ParseError",["DOCTYPE", "html", "", null, false]]}, {"description":"PUBLIC \u0022\u0022 \u0022\u0022bogus", "input":"", "output":["ParseError",["DOCTYPE", "html", "", "", false]]}, {"description":"PUBLIC \u0022\u0022 \u0022\u0022 bogus", "input":"", "output":["ParseError",["DOCTYPE", "html", "", "", false]]}, {"description":"PUBLIC \u0022\u0022\u0022\u0022>", "input":"", "output":[["DOCTYPE", "html", "", "", true]]}, {"description":"PUBLIC \u0022\u0022''>", "input":"", "output":[["DOCTYPE", "html", "", "", true]]}, {"description":"SYSTEM a", "input":"", "output":["ParseError", ["DOCTYPE", "html", null, null, false]]}, {"description":"", "input":"", "output":[["Comment", "-x"]]}, {"description":"", "input":"", "output":["ParseError", ["Comment", "--x"]]}, {"description":"non-PCDATA content model flag, start tag-like string", "contentModelFlags":["PLAINTEXT","RCDATA","CDATA"], "input":"
", "output":[["Character", "
"]]}, {"description":"end tag followed by character data", "contentModelFlags":["RCDATA","CDATA"], "lastStartTag":"xxx", "input":"ABCD", "output":[["Character", "AB"],["EndTag", "xxx"],["Character", "CD"]]}, {"description":"NULL character reference", "input":"�", "output":["ParseError", ["Character", "\uFFFD"]]}, {"description":"NULL character reference", "input":"�", "output":["ParseError", ["Character", "\uFFFD"]]}, {"description":"character entity ", "input":" ", "output":["ParseError", ["Character", "\u000A"]]}, {"description":"character entity ", "input":" ", "output":["ParseError", ["Character", "\u000A"]]}, {"description":"character entities ", "input":" ", "output":["ParseError", ["Character", "\u000A\u000A"]]}, {"description":"character entity followed by a LF", "input":" \u000A", "output":["ParseError", ["Character", "\u000A\u000A"]]}, {"description":"c1 character references", "input":"€‚ƒ„…†‡", "output":[ "ParseError", ["Character", "\u20AC"], "ParseError", ["Character", "\uFFFD"], "ParseError", ["Character", "\u201A"], "ParseError", ["Character", "\u0192"], "ParseError", ["Character", "\u201E"], "ParseError", ["Character", "\u2026"], "ParseError", ["Character", "\u2020"], "ParseError", ["Character", "\u2021"] ]}, {"description":"c1 character references", "input":"ˆ‰Š‹ŒŽ", "output":[ "ParseError", ["Character", "\u02C6"], "ParseError", ["Character", "\u2030"], "ParseError", ["Character", "\u0160"], "ParseError", ["Character", "\u2039"], "ParseError", ["Character", "\u0152"], "ParseError", ["Character", "\uFFFD"], "ParseError", ["Character", "\u017D"], "ParseError", ["Character", "\uFFFD"] ]}, {"description":"c1 character references", "input":"‘’“”•–—", "output":[ "ParseError", ["Character", "\uFFFD"], "ParseError", ["Character", "\u2018"], "ParseError", ["Character", "\u2019"], "ParseError", ["Character", "\u201C"], "ParseError", ["Character", "\u201D"], "ParseError", ["Character", "\u2022"], "ParseError", ["Character", "\u2013"], "ParseError", ["Character", "\u2014"] ]}, {"description":"c1 character references", "input":"˜™š›œžŸ", "output":[ "ParseError", ["Character", "\u02DC"], "ParseError", ["Character", "\u2122"], "ParseError", ["Character", "\u0161"], "ParseError", ["Character", "\u203A"], "ParseError", ["Character", "\u0153"], "ParseError", ["Character", "\uFFFD"], "ParseError", ["Character", "\u017E"], "ParseError", ["Character", "\u0178"] ]}, {"description":"c1 character references", "input":"€‚ƒ„…†‡", "output":[ "ParseError", ["Character", "\u20AC"], "ParseError", ["Character", "\uFFFD"], "ParseError", ["Character", "\u201A"], "ParseError", ["Character", "\u0192"], "ParseError", ["Character", "\u201E"], "ParseError", ["Character", "\u2026"], "ParseError", ["Character", "\u2020"], "ParseError", ["Character", "\u2021"] ]}, {"description":"c1 character references", "input":"ˆ‰Š‹ŒŽ", "output":[ "ParseError", ["Character", "\u02C6"], "ParseError", ["Character", "\u2030"], "ParseError", ["Character", "\u0160"], "ParseError", ["Character", "\u2039"], "ParseError", ["Character", "\u0152"], "ParseError", ["Character", "\uFFFD"], "ParseError", ["Character", "\u017D"], "ParseError", ["Character", "\uFFFD"] ]}, {"description":"c1 character references", "input":"‘’“”•–—", "output":[ "ParseError", ["Character", "\uFFFD"], "ParseError", ["Character", "\u2018"], "ParseError", ["Character", "\u2019"], "ParseError", ["Character", "\u201C"], "ParseError", ["Character", "\u201D"], "ParseError", ["Character", "\u2022"], "ParseError", ["Character", "\u2013"], "ParseError", ["Character", "\u2014"] ]}, {"description":"c1 character references", "input":"˜™š›œžŸ", "output":[ "ParseError", ["Character", "\u02DC"], "ParseError", ["Character", "\u2122"], "ParseError", ["Character", "\u0161"], "ParseError", ["Character", "\u203A"], "ParseError", ["Character", "\u0153"], "ParseError", ["Character", "\uFFFD"], "ParseError", ["Character", "\u017E"], "ParseError", ["Character", "\u0178"] ]}, {"description":"surrogate character reference", "input":"�", "output":["ParseError", ["Character", "\uFFFD"]]}, {"description":"surrogate character references", "input":"��", "output":["ParseError", ["Character", "\uFFFD"], "ParseError", ["Character", "\uFFFD"]]}, {"description":"surrogate character reference", "input":"\uD800�", "output":[["Character", "\uD800"], "ParseError", ["Character", "\uFFFD"]]}, {"description":"surrogate character reference", "input":"�\uDFFF", "output":["ParseError", ["Character", "\uFFFD\uDFFF"]]}, {"description":"surrogate character reference", "input":"�", "output":["ParseError", ["Character", "\uFFFD"]]}, {"description":"surrogate character reference", "input":"�", "output":["ParseError", ["Character", "\uFFFD"]]}, {"description":"non-Unicode character reference", "input":"�", "output":["ParseError", ["Character", "\uFFFD"]]}, {"description":"non-Unicode character reference", "input":"�", "output":["ParseError", ["Character", "\uFFFD"]]}, {"description":"NULL character", "input":"\u0000", "output":["ParseError",["Character", "\uFFFD"]]}, {"description":"™", "input":"™", "output":[["Character", "\u2122"]]}, {"description":"⟨", "input":"⟨", "output":[["Character", "\u3008"]]}, {"description":"⟩", "input":"⟩", "output":[["Character", "\u3009"]]}, {"description":"&;", "input":"&;", "output":[["Character", "&;"]]}, {"description":"&HT", "input":"&\u0009", "output":[["Character", "&\u0009"]]}, {"description":"&LF", "input":"&\u000A", "output":[["Character", "&\u000A"]]}, {"description":"&VT", "input":"&\u000B", "output":[["Character", "&\u000B"]]}, {"description":"&FF", "input":"&\u000C", "output":[["Character", "&\u000C"]]}, {"description":"&SP", "input":"& ", "output":[["Character", "& "]]}, {"description":"&<", "input":"&<", "output":[["Character", "&"], "ParseError", ["Character", "<"]]}, {"description":"&

", "input":"&

", "output":[["Character", "&"], ["StartTag", "p", {}]]}, {"description":"&&", "input":"&&", "output":[["Character", "&&"]]}, {"description":"&&", "input":"&&", "output":[["Character", "&&"]]}, {"description":"&", "input":"&", "output":[["Character", "&"]]}, {"description":"named character reference w/o refc", "input":"&abc", "output":["ParseError", ["Character", "&abc"]]}, {"description":"named character reference", "input":"&abc", "output":[["Character", "&abc"]]}, {"description":"named character reference w/o refc", "input":"&abc", "output":["ParseError", ["Character", "&abc"]]}, {"description":"unknown named character reference", "input":"&abc;", "output":["ParseError", ["Character", "&abc;"]]}, {"description":"named character reference w/o refc in attr", "input":"", "output":["ParseError", ["StartTag", "a", {"href": "&abc"}]]}, {"description":"named character reference in attr", "input":"", "output":[["StartTag", "a", {"href": "&abc"}]]}, {"description":"named character reference w/o refc in attr", "input":"", "output":["ParseError", ["StartTag", "a", {"href": "&abc"}]]}, {"description":"unknown named character reference in attr", "input":"", "output":["ParseError", ["StartTag", "a", {"href": "&abc;"}]]}, {"description":"cdata end tag containing <", "contentModelFlags":["RCDATA","CDATA"], "lastStartTag":"xxx", "input":"", "output":[["Character", ""]]}, {"description":"< in tag name state", "input":"", "output":[["StartTag", "p", "output":[["StartTag", "p", {"", "output":[["StartTag", "p", {"align", "output":[["StartTag", "p", {"align":"","", "output":[["StartTag", "p", {"align":"", "output":[["StartTag", "p", {"align":"left