.dotfiles/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/parse5.js.map
2024-09-21 15:05:15 -03:00

8 lines
448 KiB
Plaintext

{
"version": 3,
"sources": ["../../node_modules/parse5/dist/common/unicode.js", "../../node_modules/parse5/dist/common/error-codes.js", "../../node_modules/parse5/dist/tokenizer/preprocessor.js", "../../node_modules/parse5/dist/common/token.js", "../../node_modules/entities/lib/esm/generated/generated/decode-data-html.ts", "../../node_modules/entities/lib/esm/generated/generated/decode-data-xml.ts", "../../node_modules/entities/lib/esm/decode_codepoint.ts", "../../node_modules/entities/lib/esm/decode.ts", "../../node_modules/parse5/dist/common/html.js", "../../node_modules/parse5/dist/tokenizer/index.js", "../../node_modules/parse5/dist/parser/open-element-stack.js", "../../node_modules/parse5/dist/parser/formatting-element-list.js", "../../node_modules/parse5/dist/tree-adapters/default.js", "../../node_modules/parse5/dist/common/doctype.js", "../../node_modules/parse5/dist/common/foreign-content.js", "../../node_modules/parse5/dist/parser/index.js", "../../node_modules/entities/lib/esm/escape.ts", "../../node_modules/parse5/dist/serializer/index.js", "../../node_modules/parse5/dist/index.js"],
"sourcesContent": ["const UNDEFINED_CODE_POINTS = new Set([\n 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214,\n 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894,\n 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574,\n 1048575, 1114110, 1114111,\n]);\nexport const REPLACEMENT_CHARACTER = '\\uFFFD';\nexport var CODE_POINTS;\n(function (CODE_POINTS) {\n CODE_POINTS[CODE_POINTS[\"EOF\"] = -1] = \"EOF\";\n CODE_POINTS[CODE_POINTS[\"NULL\"] = 0] = \"NULL\";\n CODE_POINTS[CODE_POINTS[\"TABULATION\"] = 9] = \"TABULATION\";\n CODE_POINTS[CODE_POINTS[\"CARRIAGE_RETURN\"] = 13] = \"CARRIAGE_RETURN\";\n CODE_POINTS[CODE_POINTS[\"LINE_FEED\"] = 10] = \"LINE_FEED\";\n CODE_POINTS[CODE_POINTS[\"FORM_FEED\"] = 12] = \"FORM_FEED\";\n CODE_POINTS[CODE_POINTS[\"SPACE\"] = 32] = \"SPACE\";\n CODE_POINTS[CODE_POINTS[\"EXCLAMATION_MARK\"] = 33] = \"EXCLAMATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"QUOTATION_MARK\"] = 34] = \"QUOTATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"NUMBER_SIGN\"] = 35] = \"NUMBER_SIGN\";\n CODE_POINTS[CODE_POINTS[\"AMPERSAND\"] = 38] = \"AMPERSAND\";\n CODE_POINTS[CODE_POINTS[\"APOSTROPHE\"] = 39] = \"APOSTROPHE\";\n CODE_POINTS[CODE_POINTS[\"HYPHEN_MINUS\"] = 45] = \"HYPHEN_MINUS\";\n CODE_POINTS[CODE_POINTS[\"SOLIDUS\"] = 47] = \"SOLIDUS\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_0\"] = 48] = \"DIGIT_0\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_9\"] = 57] = \"DIGIT_9\";\n CODE_POINTS[CODE_POINTS[\"SEMICOLON\"] = 59] = \"SEMICOLON\";\n CODE_POINTS[CODE_POINTS[\"LESS_THAN_SIGN\"] = 60] = \"LESS_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"EQUALS_SIGN\"] = 61] = \"EQUALS_SIGN\";\n CODE_POINTS[CODE_POINTS[\"GREATER_THAN_SIGN\"] = 62] = \"GREATER_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"QUESTION_MARK\"] = 63] = \"QUESTION_MARK\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_A\"] = 65] = \"LATIN_CAPITAL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_F\"] = 70] = \"LATIN_CAPITAL_F\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_X\"] = 88] = \"LATIN_CAPITAL_X\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_Z\"] = 90] = \"LATIN_CAPITAL_Z\";\n CODE_POINTS[CODE_POINTS[\"RIGHT_SQUARE_BRACKET\"] = 93] = \"RIGHT_SQUARE_BRACKET\";\n CODE_POINTS[CODE_POINTS[\"GRAVE_ACCENT\"] = 96] = \"GRAVE_ACCENT\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_A\"] = 97] = \"LATIN_SMALL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_F\"] = 102] = \"LATIN_SMALL_F\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_X\"] = 120] = \"LATIN_SMALL_X\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_Z\"] = 122] = \"LATIN_SMALL_Z\";\n CODE_POINTS[CODE_POINTS[\"REPLACEMENT_CHARACTER\"] = 65533] = \"REPLACEMENT_CHARACTER\";\n})(CODE_POINTS = CODE_POINTS || (CODE_POINTS = {}));\nexport const SEQUENCES = {\n DASH_DASH: '--',\n CDATA_START: '[CDATA[',\n DOCTYPE: 'doctype',\n SCRIPT: 'script',\n PUBLIC: 'public',\n SYSTEM: 'system',\n};\n//Surrogates\nexport function isSurrogate(cp) {\n return cp >= 55296 && cp <= 57343;\n}\nexport function isSurrogatePair(cp) {\n return cp >= 56320 && cp <= 57343;\n}\nexport function getSurrogatePairCodePoint(cp1, cp2) {\n return (cp1 - 55296) * 1024 + 9216 + cp2;\n}\n//NOTE: excluding NULL and ASCII whitespace\nexport function isControlCodePoint(cp) {\n return ((cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n (cp >= 0x7f && cp <= 0x9f));\n}\nexport function isUndefinedCodePoint(cp) {\n return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp);\n}\n//# sourceMappingURL=unicode.js.map", "export var ERR;\n(function (ERR) {\n ERR[\"controlCharacterInInputStream\"] = \"control-character-in-input-stream\";\n ERR[\"noncharacterInInputStream\"] = \"noncharacter-in-input-stream\";\n ERR[\"surrogateInInputStream\"] = \"surrogate-in-input-stream\";\n ERR[\"nonVoidHtmlElementStartTagWithTrailingSolidus\"] = \"non-void-html-element-start-tag-with-trailing-solidus\";\n ERR[\"endTagWithAttributes\"] = \"end-tag-with-attributes\";\n ERR[\"endTagWithTrailingSolidus\"] = \"end-tag-with-trailing-solidus\";\n ERR[\"unexpectedSolidusInTag\"] = \"unexpected-solidus-in-tag\";\n ERR[\"unexpectedNullCharacter\"] = \"unexpected-null-character\";\n ERR[\"unexpectedQuestionMarkInsteadOfTagName\"] = \"unexpected-question-mark-instead-of-tag-name\";\n ERR[\"invalidFirstCharacterOfTagName\"] = \"invalid-first-character-of-tag-name\";\n ERR[\"unexpectedEqualsSignBeforeAttributeName\"] = \"unexpected-equals-sign-before-attribute-name\";\n ERR[\"missingEndTagName\"] = \"missing-end-tag-name\";\n ERR[\"unexpectedCharacterInAttributeName\"] = \"unexpected-character-in-attribute-name\";\n ERR[\"unknownNamedCharacterReference\"] = \"unknown-named-character-reference\";\n ERR[\"missingSemicolonAfterCharacterReference\"] = \"missing-semicolon-after-character-reference\";\n ERR[\"unexpectedCharacterAfterDoctypeSystemIdentifier\"] = \"unexpected-character-after-doctype-system-identifier\";\n ERR[\"unexpectedCharacterInUnquotedAttributeValue\"] = \"unexpected-character-in-unquoted-attribute-value\";\n ERR[\"eofBeforeTagName\"] = \"eof-before-tag-name\";\n ERR[\"eofInTag\"] = \"eof-in-tag\";\n ERR[\"missingAttributeValue\"] = \"missing-attribute-value\";\n ERR[\"missingWhitespaceBetweenAttributes\"] = \"missing-whitespace-between-attributes\";\n ERR[\"missingWhitespaceAfterDoctypePublicKeyword\"] = \"missing-whitespace-after-doctype-public-keyword\";\n ERR[\"missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers\"] = \"missing-whitespace-between-doctype-public-and-system-identifiers\";\n ERR[\"missingWhitespaceAfterDoctypeSystemKeyword\"] = \"missing-whitespace-after-doctype-system-keyword\";\n ERR[\"missingQuoteBeforeDoctypePublicIdentifier\"] = \"missing-quote-before-doctype-public-identifier\";\n ERR[\"missingQuoteBeforeDoctypeSystemIdentifier\"] = \"missing-quote-before-doctype-system-identifier\";\n ERR[\"missingDoctypePublicIdentifier\"] = \"missing-doctype-public-identifier\";\n ERR[\"missingDoctypeSystemIdentifier\"] = \"missing-doctype-system-identifier\";\n ERR[\"abruptDoctypePublicIdentifier\"] = \"abrupt-doctype-public-identifier\";\n ERR[\"abruptDoctypeSystemIdentifier\"] = \"abrupt-doctype-system-identifier\";\n ERR[\"cdataInHtmlContent\"] = \"cdata-in-html-content\";\n ERR[\"incorrectlyOpenedComment\"] = \"incorrectly-opened-comment\";\n ERR[\"eofInScriptHtmlCommentLikeText\"] = \"eof-in-script-html-comment-like-text\";\n ERR[\"eofInDoctype\"] = \"eof-in-doctype\";\n ERR[\"nestedComment\"] = \"nested-comment\";\n ERR[\"abruptClosingOfEmptyComment\"] = \"abrupt-closing-of-empty-comment\";\n ERR[\"eofInComment\"] = \"eof-in-comment\";\n ERR[\"incorrectlyClosedComment\"] = \"incorrectly-closed-comment\";\n ERR[\"eofInCdata\"] = \"eof-in-cdata\";\n ERR[\"absenceOfDigitsInNumericCharacterReference\"] = \"absence-of-digits-in-numeric-character-reference\";\n ERR[\"nullCharacterReference\"] = \"null-character-reference\";\n ERR[\"surrogateCharacterReference\"] = \"surrogate-character-reference\";\n ERR[\"characterReferenceOutsideUnicodeRange\"] = \"character-reference-outside-unicode-range\";\n ERR[\"controlCharacterReference\"] = \"control-character-reference\";\n ERR[\"noncharacterCharacterReference\"] = \"noncharacter-character-reference\";\n ERR[\"missingWhitespaceBeforeDoctypeName\"] = \"missing-whitespace-before-doctype-name\";\n ERR[\"missingDoctypeName\"] = \"missing-doctype-name\";\n ERR[\"invalidCharacterSequenceAfterDoctypeName\"] = \"invalid-character-sequence-after-doctype-name\";\n ERR[\"duplicateAttribute\"] = \"duplicate-attribute\";\n ERR[\"nonConformingDoctype\"] = \"non-conforming-doctype\";\n ERR[\"missingDoctype\"] = \"missing-doctype\";\n ERR[\"misplacedDoctype\"] = \"misplaced-doctype\";\n ERR[\"endTagWithoutMatchingOpenElement\"] = \"end-tag-without-matching-open-element\";\n ERR[\"closingOfElementWithOpenChildElements\"] = \"closing-of-element-with-open-child-elements\";\n ERR[\"disallowedContentInNoscriptInHead\"] = \"disallowed-content-in-noscript-in-head\";\n ERR[\"openElementsLeftAfterEof\"] = \"open-elements-left-after-eof\";\n ERR[\"abandonedHeadElementChild\"] = \"abandoned-head-element-child\";\n ERR[\"misplacedStartTagForHeadElement\"] = \"misplaced-start-tag-for-head-element\";\n ERR[\"nestedNoscriptInHead\"] = \"nested-noscript-in-head\";\n ERR[\"eofInElementThatCanContainOnlyText\"] = \"eof-in-element-that-can-contain-only-text\";\n})(ERR = ERR || (ERR = {}));\n//# sourceMappingURL=error-codes.js.map", "import { CODE_POINTS as $, getSurrogatePairCodePoint, isControlCodePoint, isSurrogate, isSurrogatePair, isUndefinedCodePoint, } from '../common/unicode.js';\nimport { ERR } from '../common/error-codes.js';\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nexport class Preprocessor {\n constructor(handler) {\n this.handler = handler;\n this.html = '';\n this.pos = -1;\n // NOTE: Initial `lastGapPos` is -2, to ensure `col` on initialisation is 0\n this.lastGapPos = -2;\n this.gapStack = [];\n this.skipNextNewLine = false;\n this.lastChunkWritten = false;\n this.endOfChunkHit = false;\n this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n this.isEol = false;\n this.lineStartPos = 0;\n this.droppedBufferSize = 0;\n this.line = 1;\n //NOTE: avoid reporting errors twice on advance/retreat\n this.lastErrOffset = -1;\n }\n /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */\n get col() {\n return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos);\n }\n get offset() {\n return this.droppedBufferSize + this.pos;\n }\n getError(code) {\n const { line, col, offset } = this;\n return {\n code,\n startLine: line,\n endLine: line,\n startCol: col,\n endCol: col,\n startOffset: offset,\n endOffset: offset,\n };\n }\n _err(code) {\n if (this.handler.onParseError && this.lastErrOffset !== this.offset) {\n this.lastErrOffset = this.offset;\n this.handler.onParseError(this.getError(code));\n }\n }\n _addGap() {\n this.gapStack.push(this.lastGapPos);\n this.lastGapPos = this.pos;\n }\n _processSurrogate(cp) {\n //NOTE: try to peek a surrogate pair\n if (this.pos !== this.html.length - 1) {\n const nextCp = this.html.charCodeAt(this.pos + 1);\n if (isSurrogatePair(nextCp)) {\n //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n this.pos++;\n //NOTE: add a gap that should be avoided during retreat\n this._addGap();\n return getSurrogatePairCodePoint(cp, nextCp);\n }\n }\n //NOTE: we are at the end of a chunk, therefore we can't infer the surrogate pair yet.\n else if (!this.lastChunkWritten) {\n this.endOfChunkHit = true;\n return $.EOF;\n }\n //NOTE: isolated surrogate\n this._err(ERR.surrogateInInputStream);\n return cp;\n }\n willDropParsedChunk() {\n return this.pos > this.bufferWaterline;\n }\n dropParsedChunk() {\n if (this.willDropParsedChunk()) {\n this.html = this.html.substring(this.pos);\n this.lineStartPos -= this.pos;\n this.droppedBufferSize += this.pos;\n this.pos = 0;\n this.lastGapPos = -2;\n this.gapStack.length = 0;\n }\n }\n write(chunk, isLastChunk) {\n if (this.html.length > 0) {\n this.html += chunk;\n }\n else {\n this.html = chunk;\n }\n this.endOfChunkHit = false;\n this.lastChunkWritten = isLastChunk;\n }\n insertHtmlAtCurrentPos(chunk) {\n this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1);\n this.endOfChunkHit = false;\n }\n startsWith(pattern, caseSensitive) {\n // Check if our buffer has enough characters\n if (this.pos + pattern.length > this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return false;\n }\n if (caseSensitive) {\n return this.html.startsWith(pattern, this.pos);\n }\n for (let i = 0; i < pattern.length; i++) {\n const cp = this.html.charCodeAt(this.pos + i) | 0x20;\n if (cp !== pattern.charCodeAt(i)) {\n return false;\n }\n }\n return true;\n }\n peek(offset) {\n const pos = this.pos + offset;\n if (pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n const code = this.html.charCodeAt(pos);\n return code === $.CARRIAGE_RETURN ? $.LINE_FEED : code;\n }\n advance() {\n this.pos++;\n //NOTE: LF should be in the last column of the line\n if (this.isEol) {\n this.isEol = false;\n this.line++;\n this.lineStartPos = this.pos;\n }\n if (this.pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n let cp = this.html.charCodeAt(this.pos);\n //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n if (cp === $.CARRIAGE_RETURN) {\n this.isEol = true;\n this.skipNextNewLine = true;\n return $.LINE_FEED;\n }\n //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n //must be ignored.\n if (cp === $.LINE_FEED) {\n this.isEol = true;\n if (this.skipNextNewLine) {\n // `line` will be bumped again in the recursive call.\n this.line--;\n this.skipNextNewLine = false;\n this._addGap();\n return this.advance();\n }\n }\n this.skipNextNewLine = false;\n if (isSurrogate(cp)) {\n cp = this._processSurrogate(cp);\n }\n //OPTIMIZATION: first check if code point is in the common allowed\n //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n //before going into detailed performance cost validation.\n const isCommonValidRange = this.handler.onParseError === null ||\n (cp > 0x1f && cp < 0x7f) ||\n cp === $.LINE_FEED ||\n cp === $.CARRIAGE_RETURN ||\n (cp > 0x9f && cp < 64976);\n if (!isCommonValidRange) {\n this._checkForProblematicCharacters(cp);\n }\n return cp;\n }\n _checkForProblematicCharacters(cp) {\n if (isControlCodePoint(cp)) {\n this._err(ERR.controlCharacterInInputStream);\n }\n else if (isUndefinedCodePoint(cp)) {\n this._err(ERR.noncharacterInInputStream);\n }\n }\n retreat(count) {\n this.pos -= count;\n while (this.pos < this.lastGapPos) {\n this.lastGapPos = this.gapStack.pop();\n this.pos--;\n }\n this.isEol = false;\n }\n}\n//# sourceMappingURL=preprocessor.js.map", "export var TokenType;\n(function (TokenType) {\n TokenType[TokenType[\"CHARACTER\"] = 0] = \"CHARACTER\";\n TokenType[TokenType[\"NULL_CHARACTER\"] = 1] = \"NULL_CHARACTER\";\n TokenType[TokenType[\"WHITESPACE_CHARACTER\"] = 2] = \"WHITESPACE_CHARACTER\";\n TokenType[TokenType[\"START_TAG\"] = 3] = \"START_TAG\";\n TokenType[TokenType[\"END_TAG\"] = 4] = \"END_TAG\";\n TokenType[TokenType[\"COMMENT\"] = 5] = \"COMMENT\";\n TokenType[TokenType[\"DOCTYPE\"] = 6] = \"DOCTYPE\";\n TokenType[TokenType[\"EOF\"] = 7] = \"EOF\";\n TokenType[TokenType[\"HIBERNATION\"] = 8] = \"HIBERNATION\";\n})(TokenType = TokenType || (TokenType = {}));\nexport function getTokenAttr(token, attrName) {\n for (let i = token.attrs.length - 1; i >= 0; i--) {\n if (token.attrs[i].name === attrName) {\n return token.attrs[i].value;\n }\n }\n return null;\n}\n//# sourceMappingURL=token.js.map", null, null, null, null, "/** All valid namespaces in HTML. */\nexport var NS;\n(function (NS) {\n NS[\"HTML\"] = \"http://www.w3.org/1999/xhtml\";\n NS[\"MATHML\"] = \"http://www.w3.org/1998/Math/MathML\";\n NS[\"SVG\"] = \"http://www.w3.org/2000/svg\";\n NS[\"XLINK\"] = \"http://www.w3.org/1999/xlink\";\n NS[\"XML\"] = \"http://www.w3.org/XML/1998/namespace\";\n NS[\"XMLNS\"] = \"http://www.w3.org/2000/xmlns/\";\n})(NS = NS || (NS = {}));\nexport var ATTRS;\n(function (ATTRS) {\n ATTRS[\"TYPE\"] = \"type\";\n ATTRS[\"ACTION\"] = \"action\";\n ATTRS[\"ENCODING\"] = \"encoding\";\n ATTRS[\"PROMPT\"] = \"prompt\";\n ATTRS[\"NAME\"] = \"name\";\n ATTRS[\"COLOR\"] = \"color\";\n ATTRS[\"FACE\"] = \"face\";\n ATTRS[\"SIZE\"] = \"size\";\n})(ATTRS = ATTRS || (ATTRS = {}));\n/**\n * The mode of the document.\n *\n * @see {@link https://dom.spec.whatwg.org/#concept-document-limited-quirks}\n */\nexport var DOCUMENT_MODE;\n(function (DOCUMENT_MODE) {\n DOCUMENT_MODE[\"NO_QUIRKS\"] = \"no-quirks\";\n DOCUMENT_MODE[\"QUIRKS\"] = \"quirks\";\n DOCUMENT_MODE[\"LIMITED_QUIRKS\"] = \"limited-quirks\";\n})(DOCUMENT_MODE = DOCUMENT_MODE || (DOCUMENT_MODE = {}));\nexport var TAG_NAMES;\n(function (TAG_NAMES) {\n TAG_NAMES[\"A\"] = \"a\";\n TAG_NAMES[\"ADDRESS\"] = \"address\";\n TAG_NAMES[\"ANNOTATION_XML\"] = \"annotation-xml\";\n TAG_NAMES[\"APPLET\"] = \"applet\";\n TAG_NAMES[\"AREA\"] = \"area\";\n TAG_NAMES[\"ARTICLE\"] = \"article\";\n TAG_NAMES[\"ASIDE\"] = \"aside\";\n TAG_NAMES[\"B\"] = \"b\";\n TAG_NAMES[\"BASE\"] = \"base\";\n TAG_NAMES[\"BASEFONT\"] = \"basefont\";\n TAG_NAMES[\"BGSOUND\"] = \"bgsound\";\n TAG_NAMES[\"BIG\"] = \"big\";\n TAG_NAMES[\"BLOCKQUOTE\"] = \"blockquote\";\n TAG_NAMES[\"BODY\"] = \"body\";\n TAG_NAMES[\"BR\"] = \"br\";\n TAG_NAMES[\"BUTTON\"] = \"button\";\n TAG_NAMES[\"CAPTION\"] = \"caption\";\n TAG_NAMES[\"CENTER\"] = \"center\";\n TAG_NAMES[\"CODE\"] = \"code\";\n TAG_NAMES[\"COL\"] = \"col\";\n TAG_NAMES[\"COLGROUP\"] = \"colgroup\";\n TAG_NAMES[\"DD\"] = \"dd\";\n TAG_NAMES[\"DESC\"] = \"desc\";\n TAG_NAMES[\"DETAILS\"] = \"details\";\n TAG_NAMES[\"DIALOG\"] = \"dialog\";\n TAG_NAMES[\"DIR\"] = \"dir\";\n TAG_NAMES[\"DIV\"] = \"div\";\n TAG_NAMES[\"DL\"] = \"dl\";\n TAG_NAMES[\"DT\"] = \"dt\";\n TAG_NAMES[\"EM\"] = \"em\";\n TAG_NAMES[\"EMBED\"] = \"embed\";\n TAG_NAMES[\"FIELDSET\"] = \"fieldset\";\n TAG_NAMES[\"FIGCAPTION\"] = \"figcaption\";\n TAG_NAMES[\"FIGURE\"] = \"figure\";\n TAG_NAMES[\"FONT\"] = \"font\";\n TAG_NAMES[\"FOOTER\"] = \"footer\";\n TAG_NAMES[\"FOREIGN_OBJECT\"] = \"foreignObject\";\n TAG_NAMES[\"FORM\"] = \"form\";\n TAG_NAMES[\"FRAME\"] = \"frame\";\n TAG_NAMES[\"FRAMESET\"] = \"frameset\";\n TAG_NAMES[\"H1\"] = \"h1\";\n TAG_NAMES[\"H2\"] = \"h2\";\n TAG_NAMES[\"H3\"] = \"h3\";\n TAG_NAMES[\"H4\"] = \"h4\";\n TAG_NAMES[\"H5\"] = \"h5\";\n TAG_NAMES[\"H6\"] = \"h6\";\n TAG_NAMES[\"HEAD\"] = \"head\";\n TAG_NAMES[\"HEADER\"] = \"header\";\n TAG_NAMES[\"HGROUP\"] = \"hgroup\";\n TAG_NAMES[\"HR\"] = \"hr\";\n TAG_NAMES[\"HTML\"] = \"html\";\n TAG_NAMES[\"I\"] = \"i\";\n TAG_NAMES[\"IMG\"] = \"img\";\n TAG_NAMES[\"IMAGE\"] = \"image\";\n TAG_NAMES[\"INPUT\"] = \"input\";\n TAG_NAMES[\"IFRAME\"] = \"iframe\";\n TAG_NAMES[\"KEYGEN\"] = \"keygen\";\n TAG_NAMES[\"LABEL\"] = \"label\";\n TAG_NAMES[\"LI\"] = \"li\";\n TAG_NAMES[\"LINK\"] = \"link\";\n TAG_NAMES[\"LISTING\"] = \"listing\";\n TAG_NAMES[\"MAIN\"] = \"main\";\n TAG_NAMES[\"MALIGNMARK\"] = \"malignmark\";\n TAG_NAMES[\"MARQUEE\"] = \"marquee\";\n TAG_NAMES[\"MATH\"] = \"math\";\n TAG_NAMES[\"MENU\"] = \"menu\";\n TAG_NAMES[\"META\"] = \"meta\";\n TAG_NAMES[\"MGLYPH\"] = \"mglyph\";\n TAG_NAMES[\"MI\"] = \"mi\";\n TAG_NAMES[\"MO\"] = \"mo\";\n TAG_NAMES[\"MN\"] = \"mn\";\n TAG_NAMES[\"MS\"] = \"ms\";\n TAG_NAMES[\"MTEXT\"] = \"mtext\";\n TAG_NAMES[\"NAV\"] = \"nav\";\n TAG_NAMES[\"NOBR\"] = \"nobr\";\n TAG_NAMES[\"NOFRAMES\"] = \"noframes\";\n TAG_NAMES[\"NOEMBED\"] = \"noembed\";\n TAG_NAMES[\"NOSCRIPT\"] = \"noscript\";\n TAG_NAMES[\"OBJECT\"] = \"object\";\n TAG_NAMES[\"OL\"] = \"ol\";\n TAG_NAMES[\"OPTGROUP\"] = \"optgroup\";\n TAG_NAMES[\"OPTION\"] = \"option\";\n TAG_NAMES[\"P\"] = \"p\";\n TAG_NAMES[\"PARAM\"] = \"param\";\n TAG_NAMES[\"PLAINTEXT\"] = \"plaintext\";\n TAG_NAMES[\"PRE\"] = \"pre\";\n TAG_NAMES[\"RB\"] = \"rb\";\n TAG_NAMES[\"RP\"] = \"rp\";\n TAG_NAMES[\"RT\"] = \"rt\";\n TAG_NAMES[\"RTC\"] = \"rtc\";\n TAG_NAMES[\"RUBY\"] = \"ruby\";\n TAG_NAMES[\"S\"] = \"s\";\n TAG_NAMES[\"SCRIPT\"] = \"script\";\n TAG_NAMES[\"SECTION\"] = \"section\";\n TAG_NAMES[\"SELECT\"] = \"select\";\n TAG_NAMES[\"SOURCE\"] = \"source\";\n TAG_NAMES[\"SMALL\"] = \"small\";\n TAG_NAMES[\"SPAN\"] = \"span\";\n TAG_NAMES[\"STRIKE\"] = \"strike\";\n TAG_NAMES[\"STRONG\"] = \"strong\";\n TAG_NAMES[\"STYLE\"] = \"style\";\n TAG_NAMES[\"SUB\"] = \"sub\";\n TAG_NAMES[\"SUMMARY\"] = \"summary\";\n TAG_NAMES[\"SUP\"] = \"sup\";\n TAG_NAMES[\"TABLE\"] = \"table\";\n TAG_NAMES[\"TBODY\"] = \"tbody\";\n TAG_NAMES[\"TEMPLATE\"] = \"template\";\n TAG_NAMES[\"TEXTAREA\"] = \"textarea\";\n TAG_NAMES[\"TFOOT\"] = \"tfoot\";\n TAG_NAMES[\"TD\"] = \"td\";\n TAG_NAMES[\"TH\"] = \"th\";\n TAG_NAMES[\"THEAD\"] = \"thead\";\n TAG_NAMES[\"TITLE\"] = \"title\";\n TAG_NAMES[\"TR\"] = \"tr\";\n TAG_NAMES[\"TRACK\"] = \"track\";\n TAG_NAMES[\"TT\"] = \"tt\";\n TAG_NAMES[\"U\"] = \"u\";\n TAG_NAMES[\"UL\"] = \"ul\";\n TAG_NAMES[\"SVG\"] = \"svg\";\n TAG_NAMES[\"VAR\"] = \"var\";\n TAG_NAMES[\"WBR\"] = \"wbr\";\n TAG_NAMES[\"XMP\"] = \"xmp\";\n})(TAG_NAMES = TAG_NAMES || (TAG_NAMES = {}));\n/**\n * Tag IDs are numeric IDs for known tag names.\n *\n * We use tag IDs to improve the performance of tag name comparisons.\n */\nexport var TAG_ID;\n(function (TAG_ID) {\n TAG_ID[TAG_ID[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n TAG_ID[TAG_ID[\"A\"] = 1] = \"A\";\n TAG_ID[TAG_ID[\"ADDRESS\"] = 2] = \"ADDRESS\";\n TAG_ID[TAG_ID[\"ANNOTATION_XML\"] = 3] = \"ANNOTATION_XML\";\n TAG_ID[TAG_ID[\"APPLET\"] = 4] = \"APPLET\";\n TAG_ID[TAG_ID[\"AREA\"] = 5] = \"AREA\";\n TAG_ID[TAG_ID[\"ARTICLE\"] = 6] = \"ARTICLE\";\n TAG_ID[TAG_ID[\"ASIDE\"] = 7] = \"ASIDE\";\n TAG_ID[TAG_ID[\"B\"] = 8] = \"B\";\n TAG_ID[TAG_ID[\"BASE\"] = 9] = \"BASE\";\n TAG_ID[TAG_ID[\"BASEFONT\"] = 10] = \"BASEFONT\";\n TAG_ID[TAG_ID[\"BGSOUND\"] = 11] = \"BGSOUND\";\n TAG_ID[TAG_ID[\"BIG\"] = 12] = \"BIG\";\n TAG_ID[TAG_ID[\"BLOCKQUOTE\"] = 13] = \"BLOCKQUOTE\";\n TAG_ID[TAG_ID[\"BODY\"] = 14] = \"BODY\";\n TAG_ID[TAG_ID[\"BR\"] = 15] = \"BR\";\n TAG_ID[TAG_ID[\"BUTTON\"] = 16] = \"BUTTON\";\n TAG_ID[TAG_ID[\"CAPTION\"] = 17] = \"CAPTION\";\n TAG_ID[TAG_ID[\"CENTER\"] = 18] = \"CENTER\";\n TAG_ID[TAG_ID[\"CODE\"] = 19] = \"CODE\";\n TAG_ID[TAG_ID[\"COL\"] = 20] = \"COL\";\n TAG_ID[TAG_ID[\"COLGROUP\"] = 21] = \"COLGROUP\";\n TAG_ID[TAG_ID[\"DD\"] = 22] = \"DD\";\n TAG_ID[TAG_ID[\"DESC\"] = 23] = \"DESC\";\n TAG_ID[TAG_ID[\"DETAILS\"] = 24] = \"DETAILS\";\n TAG_ID[TAG_ID[\"DIALOG\"] = 25] = \"DIALOG\";\n TAG_ID[TAG_ID[\"DIR\"] = 26] = \"DIR\";\n TAG_ID[TAG_ID[\"DIV\"] = 27] = \"DIV\";\n TAG_ID[TAG_ID[\"DL\"] = 28] = \"DL\";\n TAG_ID[TAG_ID[\"DT\"] = 29] = \"DT\";\n TAG_ID[TAG_ID[\"EM\"] = 30] = \"EM\";\n TAG_ID[TAG_ID[\"EMBED\"] = 31] = \"EMBED\";\n TAG_ID[TAG_ID[\"FIELDSET\"] = 32] = \"FIELDSET\";\n TAG_ID[TAG_ID[\"FIGCAPTION\"] = 33] = \"FIGCAPTION\";\n TAG_ID[TAG_ID[\"FIGURE\"] = 34] = \"FIGURE\";\n TAG_ID[TAG_ID[\"FONT\"] = 35] = \"FONT\";\n TAG_ID[TAG_ID[\"FOOTER\"] = 36] = \"FOOTER\";\n TAG_ID[TAG_ID[\"FOREIGN_OBJECT\"] = 37] = \"FOREIGN_OBJECT\";\n TAG_ID[TAG_ID[\"FORM\"] = 38] = \"FORM\";\n TAG_ID[TAG_ID[\"FRAME\"] = 39] = \"FRAME\";\n TAG_ID[TAG_ID[\"FRAMESET\"] = 40] = \"FRAMESET\";\n TAG_ID[TAG_ID[\"H1\"] = 41] = \"H1\";\n TAG_ID[TAG_ID[\"H2\"] = 42] = \"H2\";\n TAG_ID[TAG_ID[\"H3\"] = 43] = \"H3\";\n TAG_ID[TAG_ID[\"H4\"] = 44] = \"H4\";\n TAG_ID[TAG_ID[\"H5\"] = 45] = \"H5\";\n TAG_ID[TAG_ID[\"H6\"] = 46] = \"H6\";\n TAG_ID[TAG_ID[\"HEAD\"] = 47] = \"HEAD\";\n TAG_ID[TAG_ID[\"HEADER\"] = 48] = \"HEADER\";\n TAG_ID[TAG_ID[\"HGROUP\"] = 49] = \"HGROUP\";\n TAG_ID[TAG_ID[\"HR\"] = 50] = \"HR\";\n TAG_ID[TAG_ID[\"HTML\"] = 51] = \"HTML\";\n TAG_ID[TAG_ID[\"I\"] = 52] = \"I\";\n TAG_ID[TAG_ID[\"IMG\"] = 53] = \"IMG\";\n TAG_ID[TAG_ID[\"IMAGE\"] = 54] = \"IMAGE\";\n TAG_ID[TAG_ID[\"INPUT\"] = 55] = \"INPUT\";\n TAG_ID[TAG_ID[\"IFRAME\"] = 56] = \"IFRAME\";\n TAG_ID[TAG_ID[\"KEYGEN\"] = 57] = \"KEYGEN\";\n TAG_ID[TAG_ID[\"LABEL\"] = 58] = \"LABEL\";\n TAG_ID[TAG_ID[\"LI\"] = 59] = \"LI\";\n TAG_ID[TAG_ID[\"LINK\"] = 60] = \"LINK\";\n TAG_ID[TAG_ID[\"LISTING\"] = 61] = \"LISTING\";\n TAG_ID[TAG_ID[\"MAIN\"] = 62] = \"MAIN\";\n TAG_ID[TAG_ID[\"MALIGNMARK\"] = 63] = \"MALIGNMARK\";\n TAG_ID[TAG_ID[\"MARQUEE\"] = 64] = \"MARQUEE\";\n TAG_ID[TAG_ID[\"MATH\"] = 65] = \"MATH\";\n TAG_ID[TAG_ID[\"MENU\"] = 66] = \"MENU\";\n TAG_ID[TAG_ID[\"META\"] = 67] = \"META\";\n TAG_ID[TAG_ID[\"MGLYPH\"] = 68] = \"MGLYPH\";\n TAG_ID[TAG_ID[\"MI\"] = 69] = \"MI\";\n TAG_ID[TAG_ID[\"MO\"] = 70] = \"MO\";\n TAG_ID[TAG_ID[\"MN\"] = 71] = \"MN\";\n TAG_ID[TAG_ID[\"MS\"] = 72] = \"MS\";\n TAG_ID[TAG_ID[\"MTEXT\"] = 73] = \"MTEXT\";\n TAG_ID[TAG_ID[\"NAV\"] = 74] = \"NAV\";\n TAG_ID[TAG_ID[\"NOBR\"] = 75] = \"NOBR\";\n TAG_ID[TAG_ID[\"NOFRAMES\"] = 76] = \"NOFRAMES\";\n TAG_ID[TAG_ID[\"NOEMBED\"] = 77] = \"NOEMBED\";\n TAG_ID[TAG_ID[\"NOSCRIPT\"] = 78] = \"NOSCRIPT\";\n TAG_ID[TAG_ID[\"OBJECT\"] = 79] = \"OBJECT\";\n TAG_ID[TAG_ID[\"OL\"] = 80] = \"OL\";\n TAG_ID[TAG_ID[\"OPTGROUP\"] = 81] = \"OPTGROUP\";\n TAG_ID[TAG_ID[\"OPTION\"] = 82] = \"OPTION\";\n TAG_ID[TAG_ID[\"P\"] = 83] = \"P\";\n TAG_ID[TAG_ID[\"PARAM\"] = 84] = \"PARAM\";\n TAG_ID[TAG_ID[\"PLAINTEXT\"] = 85] = \"PLAINTEXT\";\n TAG_ID[TAG_ID[\"PRE\"] = 86] = \"PRE\";\n TAG_ID[TAG_ID[\"RB\"] = 87] = \"RB\";\n TAG_ID[TAG_ID[\"RP\"] = 88] = \"RP\";\n TAG_ID[TAG_ID[\"RT\"] = 89] = \"RT\";\n TAG_ID[TAG_ID[\"RTC\"] = 90] = \"RTC\";\n TAG_ID[TAG_ID[\"RUBY\"] = 91] = \"RUBY\";\n TAG_ID[TAG_ID[\"S\"] = 92] = \"S\";\n TAG_ID[TAG_ID[\"SCRIPT\"] = 93] = \"SCRIPT\";\n TAG_ID[TAG_ID[\"SECTION\"] = 94] = \"SECTION\";\n TAG_ID[TAG_ID[\"SELECT\"] = 95] = \"SELECT\";\n TAG_ID[TAG_ID[\"SOURCE\"] = 96] = \"SOURCE\";\n TAG_ID[TAG_ID[\"SMALL\"] = 97] = \"SMALL\";\n TAG_ID[TAG_ID[\"SPAN\"] = 98] = \"SPAN\";\n TAG_ID[TAG_ID[\"STRIKE\"] = 99] = \"STRIKE\";\n TAG_ID[TAG_ID[\"STRONG\"] = 100] = \"STRONG\";\n TAG_ID[TAG_ID[\"STYLE\"] = 101] = \"STYLE\";\n TAG_ID[TAG_ID[\"SUB\"] = 102] = \"SUB\";\n TAG_ID[TAG_ID[\"SUMMARY\"] = 103] = \"SUMMARY\";\n TAG_ID[TAG_ID[\"SUP\"] = 104] = \"SUP\";\n TAG_ID[TAG_ID[\"TABLE\"] = 105] = \"TABLE\";\n TAG_ID[TAG_ID[\"TBODY\"] = 106] = \"TBODY\";\n TAG_ID[TAG_ID[\"TEMPLATE\"] = 107] = \"TEMPLATE\";\n TAG_ID[TAG_ID[\"TEXTAREA\"] = 108] = \"TEXTAREA\";\n TAG_ID[TAG_ID[\"TFOOT\"] = 109] = \"TFOOT\";\n TAG_ID[TAG_ID[\"TD\"] = 110] = \"TD\";\n TAG_ID[TAG_ID[\"TH\"] = 111] = \"TH\";\n TAG_ID[TAG_ID[\"THEAD\"] = 112] = \"THEAD\";\n TAG_ID[TAG_ID[\"TITLE\"] = 113] = \"TITLE\";\n TAG_ID[TAG_ID[\"TR\"] = 114] = \"TR\";\n TAG_ID[TAG_ID[\"TRACK\"] = 115] = \"TRACK\";\n TAG_ID[TAG_ID[\"TT\"] = 116] = \"TT\";\n TAG_ID[TAG_ID[\"U\"] = 117] = \"U\";\n TAG_ID[TAG_ID[\"UL\"] = 118] = \"UL\";\n TAG_ID[TAG_ID[\"SVG\"] = 119] = \"SVG\";\n TAG_ID[TAG_ID[\"VAR\"] = 120] = \"VAR\";\n TAG_ID[TAG_ID[\"WBR\"] = 121] = \"WBR\";\n TAG_ID[TAG_ID[\"XMP\"] = 122] = \"XMP\";\n})(TAG_ID = TAG_ID || (TAG_ID = {}));\nconst TAG_NAME_TO_ID = new Map([\n [TAG_NAMES.A, TAG_ID.A],\n [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS],\n [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML],\n [TAG_NAMES.APPLET, TAG_ID.APPLET],\n [TAG_NAMES.AREA, TAG_ID.AREA],\n [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE],\n [TAG_NAMES.ASIDE, TAG_ID.ASIDE],\n [TAG_NAMES.B, TAG_ID.B],\n [TAG_NAMES.BASE, TAG_ID.BASE],\n [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT],\n [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND],\n [TAG_NAMES.BIG, TAG_ID.BIG],\n [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE],\n [TAG_NAMES.BODY, TAG_ID.BODY],\n [TAG_NAMES.BR, TAG_ID.BR],\n [TAG_NAMES.BUTTON, TAG_ID.BUTTON],\n [TAG_NAMES.CAPTION, TAG_ID.CAPTION],\n [TAG_NAMES.CENTER, TAG_ID.CENTER],\n [TAG_NAMES.CODE, TAG_ID.CODE],\n [TAG_NAMES.COL, TAG_ID.COL],\n [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP],\n [TAG_NAMES.DD, TAG_ID.DD],\n [TAG_NAMES.DESC, TAG_ID.DESC],\n [TAG_NAMES.DETAILS, TAG_ID.DETAILS],\n [TAG_NAMES.DIALOG, TAG_ID.DIALOG],\n [TAG_NAMES.DIR, TAG_ID.DIR],\n [TAG_NAMES.DIV, TAG_ID.DIV],\n [TAG_NAMES.DL, TAG_ID.DL],\n [TAG_NAMES.DT, TAG_ID.DT],\n [TAG_NAMES.EM, TAG_ID.EM],\n [TAG_NAMES.EMBED, TAG_ID.EMBED],\n [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET],\n [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION],\n [TAG_NAMES.FIGURE, TAG_ID.FIGURE],\n [TAG_NAMES.FONT, TAG_ID.FONT],\n [TAG_NAMES.FOOTER, TAG_ID.FOOTER],\n [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT],\n [TAG_NAMES.FORM, TAG_ID.FORM],\n [TAG_NAMES.FRAME, TAG_ID.FRAME],\n [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET],\n [TAG_NAMES.H1, TAG_ID.H1],\n [TAG_NAMES.H2, TAG_ID.H2],\n [TAG_NAMES.H3, TAG_ID.H3],\n [TAG_NAMES.H4, TAG_ID.H4],\n [TAG_NAMES.H5, TAG_ID.H5],\n [TAG_NAMES.H6, TAG_ID.H6],\n [TAG_NAMES.HEAD, TAG_ID.HEAD],\n [TAG_NAMES.HEADER, TAG_ID.HEADER],\n [TAG_NAMES.HGROUP, TAG_ID.HGROUP],\n [TAG_NAMES.HR, TAG_ID.HR],\n [TAG_NAMES.HTML, TAG_ID.HTML],\n [TAG_NAMES.I, TAG_ID.I],\n [TAG_NAMES.IMG, TAG_ID.IMG],\n [TAG_NAMES.IMAGE, TAG_ID.IMAGE],\n [TAG_NAMES.INPUT, TAG_ID.INPUT],\n [TAG_NAMES.IFRAME, TAG_ID.IFRAME],\n [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN],\n [TAG_NAMES.LABEL, TAG_ID.LABEL],\n [TAG_NAMES.LI, TAG_ID.LI],\n [TAG_NAMES.LINK, TAG_ID.LINK],\n [TAG_NAMES.LISTING, TAG_ID.LISTING],\n [TAG_NAMES.MAIN, TAG_ID.MAIN],\n [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK],\n [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE],\n [TAG_NAMES.MATH, TAG_ID.MATH],\n [TAG_NAMES.MENU, TAG_ID.MENU],\n [TAG_NAMES.META, TAG_ID.META],\n [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH],\n [TAG_NAMES.MI, TAG_ID.MI],\n [TAG_NAMES.MO, TAG_ID.MO],\n [TAG_NAMES.MN, TAG_ID.MN],\n [TAG_NAMES.MS, TAG_ID.MS],\n [TAG_NAMES.MTEXT, TAG_ID.MTEXT],\n [TAG_NAMES.NAV, TAG_ID.NAV],\n [TAG_NAMES.NOBR, TAG_ID.NOBR],\n [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES],\n [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED],\n [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT],\n [TAG_NAMES.OBJECT, TAG_ID.OBJECT],\n [TAG_NAMES.OL, TAG_ID.OL],\n [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP],\n [TAG_NAMES.OPTION, TAG_ID.OPTION],\n [TAG_NAMES.P, TAG_ID.P],\n [TAG_NAMES.PARAM, TAG_ID.PARAM],\n [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT],\n [TAG_NAMES.PRE, TAG_ID.PRE],\n [TAG_NAMES.RB, TAG_ID.RB],\n [TAG_NAMES.RP, TAG_ID.RP],\n [TAG_NAMES.RT, TAG_ID.RT],\n [TAG_NAMES.RTC, TAG_ID.RTC],\n [TAG_NAMES.RUBY, TAG_ID.RUBY],\n [TAG_NAMES.S, TAG_ID.S],\n [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT],\n [TAG_NAMES.SECTION, TAG_ID.SECTION],\n [TAG_NAMES.SELECT, TAG_ID.SELECT],\n [TAG_NAMES.SOURCE, TAG_ID.SOURCE],\n [TAG_NAMES.SMALL, TAG_ID.SMALL],\n [TAG_NAMES.SPAN, TAG_ID.SPAN],\n [TAG_NAMES.STRIKE, TAG_ID.STRIKE],\n [TAG_NAMES.STRONG, TAG_ID.STRONG],\n [TAG_NAMES.STYLE, TAG_ID.STYLE],\n [TAG_NAMES.SUB, TAG_ID.SUB],\n [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY],\n [TAG_NAMES.SUP, TAG_ID.SUP],\n [TAG_NAMES.TABLE, TAG_ID.TABLE],\n [TAG_NAMES.TBODY, TAG_ID.TBODY],\n [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE],\n [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA],\n [TAG_NAMES.TFOOT, TAG_ID.TFOOT],\n [TAG_NAMES.TD, TAG_ID.TD],\n [TAG_NAMES.TH, TAG_ID.TH],\n [TAG_NAMES.THEAD, TAG_ID.THEAD],\n [TAG_NAMES.TITLE, TAG_ID.TITLE],\n [TAG_NAMES.TR, TAG_ID.TR],\n [TAG_NAMES.TRACK, TAG_ID.TRACK],\n [TAG_NAMES.TT, TAG_ID.TT],\n [TAG_NAMES.U, TAG_ID.U],\n [TAG_NAMES.UL, TAG_ID.UL],\n [TAG_NAMES.SVG, TAG_ID.SVG],\n [TAG_NAMES.VAR, TAG_ID.VAR],\n [TAG_NAMES.WBR, TAG_ID.WBR],\n [TAG_NAMES.XMP, TAG_ID.XMP],\n]);\nexport function getTagID(tagName) {\n var _a;\n return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN;\n}\nconst $ = TAG_ID;\nexport const SPECIAL_ELEMENTS = {\n [NS.HTML]: new Set([\n $.ADDRESS,\n $.APPLET,\n $.AREA,\n $.ARTICLE,\n $.ASIDE,\n $.BASE,\n $.BASEFONT,\n $.BGSOUND,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.BUTTON,\n $.CAPTION,\n $.CENTER,\n $.COL,\n $.COLGROUP,\n $.DD,\n $.DETAILS,\n $.DIR,\n $.DIV,\n $.DL,\n $.DT,\n $.EMBED,\n $.FIELDSET,\n $.FIGCAPTION,\n $.FIGURE,\n $.FOOTER,\n $.FORM,\n $.FRAME,\n $.FRAMESET,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HEADER,\n $.HGROUP,\n $.HR,\n $.HTML,\n $.IFRAME,\n $.IMG,\n $.INPUT,\n $.LI,\n $.LINK,\n $.LISTING,\n $.MAIN,\n $.MARQUEE,\n $.MENU,\n $.META,\n $.NAV,\n $.NOEMBED,\n $.NOFRAMES,\n $.NOSCRIPT,\n $.OBJECT,\n $.OL,\n $.P,\n $.PARAM,\n $.PLAINTEXT,\n $.PRE,\n $.SCRIPT,\n $.SECTION,\n $.SELECT,\n $.SOURCE,\n $.STYLE,\n $.SUMMARY,\n $.TABLE,\n $.TBODY,\n $.TD,\n $.TEMPLATE,\n $.TEXTAREA,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TITLE,\n $.TR,\n $.TRACK,\n $.UL,\n $.WBR,\n $.XMP,\n ]),\n [NS.MATHML]: new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]),\n [NS.SVG]: new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]),\n [NS.XLINK]: new Set(),\n [NS.XML]: new Set(),\n [NS.XMLNS]: new Set(),\n};\nexport function isNumberedHeader(tn) {\n return tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6;\n}\nconst UNESCAPED_TEXT = new Set([\n TAG_NAMES.STYLE,\n TAG_NAMES.SCRIPT,\n TAG_NAMES.XMP,\n TAG_NAMES.IFRAME,\n TAG_NAMES.NOEMBED,\n TAG_NAMES.NOFRAMES,\n TAG_NAMES.PLAINTEXT,\n]);\nexport function hasUnescapedText(tn, scriptingEnabled) {\n return UNESCAPED_TEXT.has(tn) || (scriptingEnabled && tn === TAG_NAMES.NOSCRIPT);\n}\n//# sourceMappingURL=html.js.map", "import { Preprocessor } from './preprocessor.js';\nimport { CODE_POINTS as $, SEQUENCES as $$, REPLACEMENT_CHARACTER, isSurrogate, isUndefinedCodePoint, isControlCodePoint, } from '../common/unicode.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\nimport { htmlDecodeTree, BinTrieFlags, determineBranch } from 'entities/lib/decode.js';\nimport { ERR } from '../common/error-codes.js';\nimport { TAG_ID, getTagID } from '../common/html.js';\n//C1 Unicode control character reference replacements\nconst C1_CONTROLS_REFERENCE_REPLACEMENTS = new Map([\n [0x80, 8364],\n [0x82, 8218],\n [0x83, 402],\n [0x84, 8222],\n [0x85, 8230],\n [0x86, 8224],\n [0x87, 8225],\n [0x88, 710],\n [0x89, 8240],\n [0x8a, 352],\n [0x8b, 8249],\n [0x8c, 338],\n [0x8e, 381],\n [0x91, 8216],\n [0x92, 8217],\n [0x93, 8220],\n [0x94, 8221],\n [0x95, 8226],\n [0x96, 8211],\n [0x97, 8212],\n [0x98, 732],\n [0x99, 8482],\n [0x9a, 353],\n [0x9b, 8250],\n [0x9c, 339],\n [0x9e, 382],\n [0x9f, 376],\n]);\n//States\nvar State;\n(function (State) {\n State[State[\"DATA\"] = 0] = \"DATA\";\n State[State[\"RCDATA\"] = 1] = \"RCDATA\";\n State[State[\"RAWTEXT\"] = 2] = \"RAWTEXT\";\n State[State[\"SCRIPT_DATA\"] = 3] = \"SCRIPT_DATA\";\n State[State[\"PLAINTEXT\"] = 4] = \"PLAINTEXT\";\n State[State[\"TAG_OPEN\"] = 5] = \"TAG_OPEN\";\n State[State[\"END_TAG_OPEN\"] = 6] = \"END_TAG_OPEN\";\n State[State[\"TAG_NAME\"] = 7] = \"TAG_NAME\";\n State[State[\"RCDATA_LESS_THAN_SIGN\"] = 8] = \"RCDATA_LESS_THAN_SIGN\";\n State[State[\"RCDATA_END_TAG_OPEN\"] = 9] = \"RCDATA_END_TAG_OPEN\";\n State[State[\"RCDATA_END_TAG_NAME\"] = 10] = \"RCDATA_END_TAG_NAME\";\n State[State[\"RAWTEXT_LESS_THAN_SIGN\"] = 11] = \"RAWTEXT_LESS_THAN_SIGN\";\n State[State[\"RAWTEXT_END_TAG_OPEN\"] = 12] = \"RAWTEXT_END_TAG_OPEN\";\n State[State[\"RAWTEXT_END_TAG_NAME\"] = 13] = \"RAWTEXT_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_LESS_THAN_SIGN\"] = 14] = \"SCRIPT_DATA_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_END_TAG_OPEN\"] = 15] = \"SCRIPT_DATA_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_END_TAG_NAME\"] = 16] = \"SCRIPT_DATA_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_ESCAPE_START\"] = 17] = \"SCRIPT_DATA_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_ESCAPE_START_DASH\"] = 18] = \"SCRIPT_DATA_ESCAPE_START_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED\"] = 19] = \"SCRIPT_DATA_ESCAPED\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH\"] = 20] = \"SCRIPT_DATA_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH_DASH\"] = 21] = \"SCRIPT_DATA_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\"] = 22] = \"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\"] = 23] = \"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_NAME\"] = 24] = \"SCRIPT_DATA_ESCAPED_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_START\"] = 25] = \"SCRIPT_DATA_DOUBLE_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED\"] = 26] = \"SCRIPT_DATA_DOUBLE_ESCAPED\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\"] = 27] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\"] = 28] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\"] = 29] = \"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_END\"] = 30] = \"SCRIPT_DATA_DOUBLE_ESCAPE_END\";\n State[State[\"BEFORE_ATTRIBUTE_NAME\"] = 31] = \"BEFORE_ATTRIBUTE_NAME\";\n State[State[\"ATTRIBUTE_NAME\"] = 32] = \"ATTRIBUTE_NAME\";\n State[State[\"AFTER_ATTRIBUTE_NAME\"] = 33] = \"AFTER_ATTRIBUTE_NAME\";\n State[State[\"BEFORE_ATTRIBUTE_VALUE\"] = 34] = \"BEFORE_ATTRIBUTE_VALUE\";\n State[State[\"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"] = 35] = \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_SINGLE_QUOTED\"] = 36] = \"ATTRIBUTE_VALUE_SINGLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_UNQUOTED\"] = 37] = \"ATTRIBUTE_VALUE_UNQUOTED\";\n State[State[\"AFTER_ATTRIBUTE_VALUE_QUOTED\"] = 38] = \"AFTER_ATTRIBUTE_VALUE_QUOTED\";\n State[State[\"SELF_CLOSING_START_TAG\"] = 39] = \"SELF_CLOSING_START_TAG\";\n State[State[\"BOGUS_COMMENT\"] = 40] = \"BOGUS_COMMENT\";\n State[State[\"MARKUP_DECLARATION_OPEN\"] = 41] = \"MARKUP_DECLARATION_OPEN\";\n State[State[\"COMMENT_START\"] = 42] = \"COMMENT_START\";\n State[State[\"COMMENT_START_DASH\"] = 43] = \"COMMENT_START_DASH\";\n State[State[\"COMMENT\"] = 44] = \"COMMENT\";\n State[State[\"COMMENT_LESS_THAN_SIGN\"] = 45] = \"COMMENT_LESS_THAN_SIGN\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG\"] = 46] = \"COMMENT_LESS_THAN_SIGN_BANG\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH\"] = 47] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\"] = 48] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\";\n State[State[\"COMMENT_END_DASH\"] = 49] = \"COMMENT_END_DASH\";\n State[State[\"COMMENT_END\"] = 50] = \"COMMENT_END\";\n State[State[\"COMMENT_END_BANG\"] = 51] = \"COMMENT_END_BANG\";\n State[State[\"DOCTYPE\"] = 52] = \"DOCTYPE\";\n State[State[\"BEFORE_DOCTYPE_NAME\"] = 53] = \"BEFORE_DOCTYPE_NAME\";\n State[State[\"DOCTYPE_NAME\"] = 54] = \"DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_NAME\"] = 55] = \"AFTER_DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_KEYWORD\"] = 56] = \"AFTER_DOCTYPE_PUBLIC_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\"] = 57] = \"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\"] = 58] = \"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\"] = 59] = \"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\"] = 60] = \"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\"] = 61] = \"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_KEYWORD\"] = 62] = \"AFTER_DOCTYPE_SYSTEM_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\"] = 63] = \"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\"] = 64] = \"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\"] = 65] = \"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\"] = 66] = \"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"BOGUS_DOCTYPE\"] = 67] = \"BOGUS_DOCTYPE\";\n State[State[\"CDATA_SECTION\"] = 68] = \"CDATA_SECTION\";\n State[State[\"CDATA_SECTION_BRACKET\"] = 69] = \"CDATA_SECTION_BRACKET\";\n State[State[\"CDATA_SECTION_END\"] = 70] = \"CDATA_SECTION_END\";\n State[State[\"CHARACTER_REFERENCE\"] = 71] = \"CHARACTER_REFERENCE\";\n State[State[\"NAMED_CHARACTER_REFERENCE\"] = 72] = \"NAMED_CHARACTER_REFERENCE\";\n State[State[\"AMBIGUOUS_AMPERSAND\"] = 73] = \"AMBIGUOUS_AMPERSAND\";\n State[State[\"NUMERIC_CHARACTER_REFERENCE\"] = 74] = \"NUMERIC_CHARACTER_REFERENCE\";\n State[State[\"HEXADEMICAL_CHARACTER_REFERENCE_START\"] = 75] = \"HEXADEMICAL_CHARACTER_REFERENCE_START\";\n State[State[\"HEXADEMICAL_CHARACTER_REFERENCE\"] = 76] = \"HEXADEMICAL_CHARACTER_REFERENCE\";\n State[State[\"DECIMAL_CHARACTER_REFERENCE\"] = 77] = \"DECIMAL_CHARACTER_REFERENCE\";\n State[State[\"NUMERIC_CHARACTER_REFERENCE_END\"] = 78] = \"NUMERIC_CHARACTER_REFERENCE_END\";\n})(State || (State = {}));\n//Tokenizer initial states for different modes\nexport const TokenizerMode = {\n DATA: State.DATA,\n RCDATA: State.RCDATA,\n RAWTEXT: State.RAWTEXT,\n SCRIPT_DATA: State.SCRIPT_DATA,\n PLAINTEXT: State.PLAINTEXT,\n CDATA_SECTION: State.CDATA_SECTION,\n};\n//Utils\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isAsciiDigit(cp) {\n return cp >= $.DIGIT_0 && cp <= $.DIGIT_9;\n}\nfunction isAsciiUpper(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_Z;\n}\nfunction isAsciiLower(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_Z;\n}\nfunction isAsciiLetter(cp) {\n return isAsciiLower(cp) || isAsciiUpper(cp);\n}\nfunction isAsciiAlphaNumeric(cp) {\n return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\nfunction isAsciiUpperHexDigit(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_F;\n}\nfunction isAsciiLowerHexDigit(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_F;\n}\nfunction isAsciiHexDigit(cp) {\n return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp);\n}\nfunction toAsciiLower(cp) {\n return cp + 32;\n}\nfunction isWhitespace(cp) {\n return cp === $.SPACE || cp === $.LINE_FEED || cp === $.TABULATION || cp === $.FORM_FEED;\n}\nfunction isEntityInAttributeInvalidEnd(nextCp) {\n return nextCp === $.EQUALS_SIGN || isAsciiAlphaNumeric(nextCp);\n}\nfunction isScriptDataDoubleEscapeSequenceEnd(cp) {\n return isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN;\n}\n//Tokenizer\nexport class Tokenizer {\n constructor(options, handler) {\n this.options = options;\n this.handler = handler;\n this.paused = false;\n /** Ensures that the parsing loop isn't run multiple times at once. */\n this.inLoop = false;\n /**\n * Indicates that the current adjusted node exists, is not an element in the HTML namespace,\n * and that it is not an integration point for either MathML or HTML.\n *\n * @see {@link https://html.spec.whatwg.org/multipage/parsing.html#tree-construction}\n */\n this.inForeignNode = false;\n this.lastStartTagName = '';\n this.active = false;\n this.state = State.DATA;\n this.returnState = State.DATA;\n this.charRefCode = -1;\n this.consumedAfterSnapshot = -1;\n this.currentCharacterToken = null;\n this.currentToken = null;\n this.currentAttr = { name: '', value: '' };\n this.preprocessor = new Preprocessor(handler);\n this.currentLocation = this.getCurrentLocation(-1);\n }\n //Errors\n _err(code) {\n var _a, _b;\n (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code));\n }\n // NOTE: `offset` may never run across line boundaries.\n getCurrentLocation(offset) {\n if (!this.options.sourceCodeLocationInfo) {\n return null;\n }\n return {\n startLine: this.preprocessor.line,\n startCol: this.preprocessor.col - offset,\n startOffset: this.preprocessor.offset - offset,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n };\n }\n _runParsingLoop() {\n if (this.inLoop)\n return;\n this.inLoop = true;\n while (this.active && !this.paused) {\n this.consumedAfterSnapshot = 0;\n const cp = this._consume();\n if (!this._ensureHibernation()) {\n this._callState(cp);\n }\n }\n this.inLoop = false;\n }\n //API\n pause() {\n this.paused = true;\n }\n resume(writeCallback) {\n if (!this.paused) {\n throw new Error('Parser was already resumed');\n }\n this.paused = false;\n // Necessary for synchronous resume.\n if (this.inLoop)\n return;\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n write(chunk, isLastChunk, writeCallback) {\n this.active = true;\n this.preprocessor.write(chunk, isLastChunk);\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n insertHtmlAtCurrentPos(chunk) {\n this.active = true;\n this.preprocessor.insertHtmlAtCurrentPos(chunk);\n this._runParsingLoop();\n }\n //Hibernation\n _ensureHibernation() {\n if (this.preprocessor.endOfChunkHit) {\n this._unconsume(this.consumedAfterSnapshot);\n this.active = false;\n return true;\n }\n return false;\n }\n //Consumption\n _consume() {\n this.consumedAfterSnapshot++;\n return this.preprocessor.advance();\n }\n _unconsume(count) {\n this.consumedAfterSnapshot -= count;\n this.preprocessor.retreat(count);\n }\n _reconsumeInState(state, cp) {\n this.state = state;\n this._callState(cp);\n }\n _advanceBy(count) {\n this.consumedAfterSnapshot += count;\n for (let i = 0; i < count; i++) {\n this.preprocessor.advance();\n }\n }\n _consumeSequenceIfMatch(pattern, caseSensitive) {\n if (this.preprocessor.startsWith(pattern, caseSensitive)) {\n // We will already have consumed one character before calling this method.\n this._advanceBy(pattern.length - 1);\n return true;\n }\n return false;\n }\n //Token creation\n _createStartTagToken() {\n this.currentToken = {\n type: TokenType.START_TAG,\n tagName: '',\n tagID: TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(1),\n };\n }\n _createEndTagToken() {\n this.currentToken = {\n type: TokenType.END_TAG,\n tagName: '',\n tagID: TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(2),\n };\n }\n _createCommentToken(offset) {\n this.currentToken = {\n type: TokenType.COMMENT,\n data: '',\n location: this.getCurrentLocation(offset),\n };\n }\n _createDoctypeToken(initialName) {\n this.currentToken = {\n type: TokenType.DOCTYPE,\n name: initialName,\n forceQuirks: false,\n publicId: null,\n systemId: null,\n location: this.currentLocation,\n };\n }\n _createCharacterToken(type, chars) {\n this.currentCharacterToken = {\n type,\n chars,\n location: this.currentLocation,\n };\n }\n //Tag attributes\n _createAttr(attrNameFirstCh) {\n this.currentAttr = {\n name: attrNameFirstCh,\n value: '',\n };\n this.currentLocation = this.getCurrentLocation(0);\n }\n _leaveAttrName() {\n var _a;\n var _b;\n const token = this.currentToken;\n if (getTokenAttr(token, this.currentAttr.name) === null) {\n token.attrs.push(this.currentAttr);\n if (token.location && this.currentLocation) {\n const attrLocations = ((_a = (_b = token.location).attrs) !== null && _a !== void 0 ? _a : (_b.attrs = Object.create(null)));\n attrLocations[this.currentAttr.name] = this.currentLocation;\n // Set end location\n this._leaveAttrValue();\n }\n }\n else {\n this._err(ERR.duplicateAttribute);\n }\n }\n _leaveAttrValue() {\n if (this.currentLocation) {\n this.currentLocation.endLine = this.preprocessor.line;\n this.currentLocation.endCol = this.preprocessor.col;\n this.currentLocation.endOffset = this.preprocessor.offset;\n }\n }\n //Token emission\n prepareToken(ct) {\n this._emitCurrentCharacterToken(ct.location);\n this.currentToken = null;\n if (ct.location) {\n ct.location.endLine = this.preprocessor.line;\n ct.location.endCol = this.preprocessor.col + 1;\n ct.location.endOffset = this.preprocessor.offset + 1;\n }\n this.currentLocation = this.getCurrentLocation(-1);\n }\n emitCurrentTagToken() {\n const ct = this.currentToken;\n this.prepareToken(ct);\n ct.tagID = getTagID(ct.tagName);\n if (ct.type === TokenType.START_TAG) {\n this.lastStartTagName = ct.tagName;\n this.handler.onStartTag(ct);\n }\n else {\n if (ct.attrs.length > 0) {\n this._err(ERR.endTagWithAttributes);\n }\n if (ct.selfClosing) {\n this._err(ERR.endTagWithTrailingSolidus);\n }\n this.handler.onEndTag(ct);\n }\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentComment(ct) {\n this.prepareToken(ct);\n this.handler.onComment(ct);\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentDoctype(ct) {\n this.prepareToken(ct);\n this.handler.onDoctype(ct);\n this.preprocessor.dropParsedChunk();\n }\n _emitCurrentCharacterToken(nextLocation) {\n if (this.currentCharacterToken) {\n //NOTE: if we have a pending character token, make it's end location equal to the\n //current token's start location.\n if (nextLocation && this.currentCharacterToken.location) {\n this.currentCharacterToken.location.endLine = nextLocation.startLine;\n this.currentCharacterToken.location.endCol = nextLocation.startCol;\n this.currentCharacterToken.location.endOffset = nextLocation.startOffset;\n }\n switch (this.currentCharacterToken.type) {\n case TokenType.CHARACTER: {\n this.handler.onCharacter(this.currentCharacterToken);\n break;\n }\n case TokenType.NULL_CHARACTER: {\n this.handler.onNullCharacter(this.currentCharacterToken);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n this.handler.onWhitespaceCharacter(this.currentCharacterToken);\n break;\n }\n }\n this.currentCharacterToken = null;\n }\n }\n _emitEOFToken() {\n const location = this.getCurrentLocation(0);\n if (location) {\n location.endLine = location.startLine;\n location.endCol = location.startCol;\n location.endOffset = location.startOffset;\n }\n this._emitCurrentCharacterToken(location);\n this.handler.onEof({ type: TokenType.EOF, location });\n this.active = false;\n }\n //Characters emission\n //OPTIMIZATION: specification uses only one type of character tokens (one token per character).\n //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n //If we have a sequence of characters that belong to the same group, the parser can process it\n //as a single solid character token.\n //So, there are 3 types of character tokens in parse5:\n //1)TokenType.NULL_CHARACTER - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\\n \\r\\t \\f')\n //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n _appendCharToCurrentCharacterToken(type, ch) {\n if (this.currentCharacterToken) {\n if (this.currentCharacterToken.type !== type) {\n this.currentLocation = this.getCurrentLocation(0);\n this._emitCurrentCharacterToken(this.currentLocation);\n this.preprocessor.dropParsedChunk();\n }\n else {\n this.currentCharacterToken.chars += ch;\n return;\n }\n }\n this._createCharacterToken(type, ch);\n }\n _emitCodePoint(cp) {\n const type = isWhitespace(cp)\n ? TokenType.WHITESPACE_CHARACTER\n : cp === $.NULL\n ? TokenType.NULL_CHARACTER\n : TokenType.CHARACTER;\n this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp));\n }\n //NOTE: used when we emit characters explicitly.\n //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks.\n _emitChars(ch) {\n this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch);\n }\n // Character reference helpers\n _matchNamedCharacterReference(cp) {\n let result = null;\n let excess = 0;\n let withoutSemicolon = false;\n for (let i = 0, current = htmlDecodeTree[0]; i >= 0; cp = this._consume()) {\n i = determineBranch(htmlDecodeTree, current, i + 1, cp);\n if (i < 0)\n break;\n excess += 1;\n current = htmlDecodeTree[i];\n const masked = current & BinTrieFlags.VALUE_LENGTH;\n // If the branch is a value, store it and continue\n if (masked) {\n // The mask is the number of bytes of the value, including the current byte.\n const valueLength = (masked >> 14) - 1;\n // Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n // See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n if (cp !== $.SEMICOLON &&\n this._isCharacterReferenceInAttribute() &&\n isEntityInAttributeInvalidEnd(this.preprocessor.peek(1))) {\n //NOTE: we don't flush all consumed code points here, and instead switch back to the original state after\n //emitting an ampersand. This is fine, as alphanumeric characters won't be parsed differently in attributes.\n result = [$.AMPERSAND];\n // Skip over the value.\n i += valueLength;\n }\n else {\n // If this is a surrogate pair, consume the next two bytes.\n result =\n valueLength === 0\n ? [htmlDecodeTree[i] & ~BinTrieFlags.VALUE_LENGTH]\n : valueLength === 1\n ? [htmlDecodeTree[++i]]\n : [htmlDecodeTree[++i], htmlDecodeTree[++i]];\n excess = 0;\n withoutSemicolon = cp !== $.SEMICOLON;\n }\n if (valueLength === 0) {\n // If the value is zero-length, we're done.\n this._consume();\n break;\n }\n }\n }\n this._unconsume(excess);\n if (withoutSemicolon && !this.preprocessor.endOfChunkHit) {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n }\n // We want to emit the error above on the code point after the entity.\n // We always consume one code point too many in the loop, and we wait to\n // unconsume it until after the error is emitted.\n this._unconsume(1);\n return result;\n }\n _isCharacterReferenceInAttribute() {\n return (this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED);\n }\n _flushCodePointConsumedAsCharacterReference(cp) {\n if (this._isCharacterReferenceInAttribute()) {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n else {\n this._emitCodePoint(cp);\n }\n }\n // Calling states this way turns out to be much faster than any other approach.\n _callState(cp) {\n switch (this.state) {\n case State.DATA: {\n this._stateData(cp);\n break;\n }\n case State.RCDATA: {\n this._stateRcdata(cp);\n break;\n }\n case State.RAWTEXT: {\n this._stateRawtext(cp);\n break;\n }\n case State.SCRIPT_DATA: {\n this._stateScriptData(cp);\n break;\n }\n case State.PLAINTEXT: {\n this._statePlaintext(cp);\n break;\n }\n case State.TAG_OPEN: {\n this._stateTagOpen(cp);\n break;\n }\n case State.END_TAG_OPEN: {\n this._stateEndTagOpen(cp);\n break;\n }\n case State.TAG_NAME: {\n this._stateTagName(cp);\n break;\n }\n case State.RCDATA_LESS_THAN_SIGN: {\n this._stateRcdataLessThanSign(cp);\n break;\n }\n case State.RCDATA_END_TAG_OPEN: {\n this._stateRcdataEndTagOpen(cp);\n break;\n }\n case State.RCDATA_END_TAG_NAME: {\n this._stateRcdataEndTagName(cp);\n break;\n }\n case State.RAWTEXT_LESS_THAN_SIGN: {\n this._stateRawtextLessThanSign(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_OPEN: {\n this._stateRawtextEndTagOpen(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_NAME: {\n this._stateRawtextEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_LESS_THAN_SIGN: {\n this._stateScriptDataLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_OPEN: {\n this._stateScriptDataEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_NAME: {\n this._stateScriptDataEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START: {\n this._stateScriptDataEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START_DASH: {\n this._stateScriptDataEscapeStartDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED: {\n this._stateScriptDataEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH: {\n this._stateScriptDataEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH_DASH: {\n this._stateScriptDataEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: {\n this._stateScriptDataEscapedEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: {\n this._stateScriptDataEscapedEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: {\n this._stateScriptDataDoubleEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED: {\n this._stateScriptDataDoubleEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: {\n this._stateScriptDataDoubleEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: {\n this._stateScriptDataDoubleEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataDoubleEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: {\n this._stateScriptDataDoubleEscapeEnd(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_NAME: {\n this._stateBeforeAttributeName(cp);\n break;\n }\n case State.ATTRIBUTE_NAME: {\n this._stateAttributeName(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_NAME: {\n this._stateAfterAttributeName(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_VALUE: {\n this._stateBeforeAttributeValue(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: {\n this._stateAttributeValueDoubleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: {\n this._stateAttributeValueSingleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_UNQUOTED: {\n this._stateAttributeValueUnquoted(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_VALUE_QUOTED: {\n this._stateAfterAttributeValueQuoted(cp);\n break;\n }\n case State.SELF_CLOSING_START_TAG: {\n this._stateSelfClosingStartTag(cp);\n break;\n }\n case State.BOGUS_COMMENT: {\n this._stateBogusComment(cp);\n break;\n }\n case State.MARKUP_DECLARATION_OPEN: {\n this._stateMarkupDeclarationOpen(cp);\n break;\n }\n case State.COMMENT_START: {\n this._stateCommentStart(cp);\n break;\n }\n case State.COMMENT_START_DASH: {\n this._stateCommentStartDash(cp);\n break;\n }\n case State.COMMENT: {\n this._stateComment(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN: {\n this._stateCommentLessThanSign(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG: {\n this._stateCommentLessThanSignBang(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: {\n this._stateCommentLessThanSignBangDash(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: {\n this._stateCommentLessThanSignBangDashDash(cp);\n break;\n }\n case State.COMMENT_END_DASH: {\n this._stateCommentEndDash(cp);\n break;\n }\n case State.COMMENT_END: {\n this._stateCommentEnd(cp);\n break;\n }\n case State.COMMENT_END_BANG: {\n this._stateCommentEndBang(cp);\n break;\n }\n case State.DOCTYPE: {\n this._stateDoctype(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_NAME: {\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case State.DOCTYPE_NAME: {\n this._stateDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_NAME: {\n this._stateAfterDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: {\n this._stateAfterDoctypePublicKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateBeforeDoctypePublicIdentifier(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypePublicIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypePublicIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateAfterDoctypePublicIdentifier(cp);\n break;\n }\n case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: {\n this._stateBetweenDoctypePublicAndSystemIdentifiers(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: {\n this._stateAfterDoctypeSystemKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateBeforeDoctypeSystemIdentifier(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypeSystemIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypeSystemIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateAfterDoctypeSystemIdentifier(cp);\n break;\n }\n case State.BOGUS_DOCTYPE: {\n this._stateBogusDoctype(cp);\n break;\n }\n case State.CDATA_SECTION: {\n this._stateCdataSection(cp);\n break;\n }\n case State.CDATA_SECTION_BRACKET: {\n this._stateCdataSectionBracket(cp);\n break;\n }\n case State.CDATA_SECTION_END: {\n this._stateCdataSectionEnd(cp);\n break;\n }\n case State.CHARACTER_REFERENCE: {\n this._stateCharacterReference(cp);\n break;\n }\n case State.NAMED_CHARACTER_REFERENCE: {\n this._stateNamedCharacterReference(cp);\n break;\n }\n case State.AMBIGUOUS_AMPERSAND: {\n this._stateAmbiguousAmpersand(cp);\n break;\n }\n case State.NUMERIC_CHARACTER_REFERENCE: {\n this._stateNumericCharacterReference(cp);\n break;\n }\n case State.HEXADEMICAL_CHARACTER_REFERENCE_START: {\n this._stateHexademicalCharacterReferenceStart(cp);\n break;\n }\n case State.HEXADEMICAL_CHARACTER_REFERENCE: {\n this._stateHexademicalCharacterReference(cp);\n break;\n }\n case State.DECIMAL_CHARACTER_REFERENCE: {\n this._stateDecimalCharacterReference(cp);\n break;\n }\n case State.NUMERIC_CHARACTER_REFERENCE_END: {\n this._stateNumericCharacterReferenceEnd(cp);\n break;\n }\n default: {\n throw new Error('Unknown state');\n }\n }\n }\n // State machine\n // Data state\n //------------------------------------------------------------------\n _stateData(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.TAG_OPEN;\n break;\n }\n case $.AMPERSAND: {\n this.returnState = State.DATA;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitCodePoint(cp);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RCDATA state\n //------------------------------------------------------------------\n _stateRcdata(cp) {\n switch (cp) {\n case $.AMPERSAND: {\n this.returnState = State.RCDATA;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.RCDATA_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RAWTEXT state\n //------------------------------------------------------------------\n _stateRawtext(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.RAWTEXT_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data state\n //------------------------------------------------------------------\n _stateScriptData(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // PLAINTEXT state\n //------------------------------------------------------------------\n _statePlaintext(cp) {\n switch (cp) {\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Tag open state\n //------------------------------------------------------------------\n _stateTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createStartTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case $.EXCLAMATION_MARK: {\n this.state = State.MARKUP_DECLARATION_OPEN;\n break;\n }\n case $.SOLIDUS: {\n this.state = State.END_TAG_OPEN;\n break;\n }\n case $.QUESTION_MARK: {\n this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n this._createCommentToken(1);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('<');\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._emitChars('<');\n this.state = State.DATA;\n this._stateData(cp);\n }\n }\n }\n // End tag open state\n //------------------------------------------------------------------\n _stateEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingEndTagName);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('</');\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n }\n // Tag name state\n //------------------------------------------------------------------\n _stateTagName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.SOLIDUS: {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.tagName += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // RCDATA less-than sign state\n //------------------------------------------------------------------\n _stateRcdataLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.RCDATA_END_TAG_OPEN;\n }\n else {\n this._emitChars('<');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RCDATA end tag open state\n //------------------------------------------------------------------\n _stateRcdataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RCDATA_END_TAG_NAME;\n this._stateRcdataEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n handleSpecialEndTag(_cp) {\n if (!this.preprocessor.startsWith(this.lastStartTagName, false)) {\n return !this._ensureHibernation();\n }\n this._createEndTagToken();\n const token = this.currentToken;\n token.tagName = this.lastStartTagName;\n const cp = this.preprocessor.peek(this.lastStartTagName.length);\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n return false;\n }\n case $.SOLIDUS: {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.SELF_CLOSING_START_TAG;\n return false;\n }\n case $.GREATER_THAN_SIGN: {\n this._advanceBy(this.lastStartTagName.length);\n this.emitCurrentTagToken();\n this.state = State.DATA;\n return false;\n }\n default: {\n return !this._ensureHibernation();\n }\n }\n }\n // RCDATA end tag name state\n //------------------------------------------------------------------\n _stateRcdataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RAWTEXT less-than sign state\n //------------------------------------------------------------------\n _stateRawtextLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.RAWTEXT_END_TAG_OPEN;\n }\n else {\n this._emitChars('<');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag open state\n //------------------------------------------------------------------\n _stateRawtextEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RAWTEXT_END_TAG_NAME;\n this._stateRawtextEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag name state\n //------------------------------------------------------------------\n _stateRawtextEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // Script data less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataLessThanSign(cp) {\n switch (cp) {\n case $.SOLIDUS: {\n this.state = State.SCRIPT_DATA_END_TAG_OPEN;\n break;\n }\n case $.EXCLAMATION_MARK: {\n this.state = State.SCRIPT_DATA_ESCAPE_START;\n this._emitChars('<!');\n break;\n }\n default: {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n }\n // Script data end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_END_TAG_NAME;\n this._stateScriptDataEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStart(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPE_START_DASH;\n this._emitChars('-');\n }\n else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStartDash(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars('-');\n }\n else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escaped state\n //------------------------------------------------------------------\n _stateScriptDataEscaped(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDashDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.SCRIPT_DATA;\n this._emitChars('>');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataEscapedLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;\n }\n else if (isAsciiLetter(cp)) {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START;\n this._stateScriptDataDoubleEscapeStart(cp);\n }\n else {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME;\n this._stateScriptDataEscapedEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escape start state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeStart(cp) {\n if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for (let i = 0; i < $$.SCRIPT.length; i++) {\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n }\n else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escaped state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscaped(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDashDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.SCRIPT_DATA;\n this._emitChars('>');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END;\n this._emitChars('/');\n }\n else {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Script data double escape end state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeEnd(cp) {\n if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for (let i = 0; i < $$.SCRIPT.length; i++) {\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_ESCAPED;\n }\n else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Before attribute name state\n //------------------------------------------------------------------\n _stateBeforeAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.SOLIDUS:\n case $.GREATER_THAN_SIGN:\n case $.EOF: {\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case $.EQUALS_SIGN: {\n this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n this._createAttr('=');\n this.state = State.ATTRIBUTE_NAME;\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Attribute name state\n //------------------------------------------------------------------\n _stateAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED:\n case $.SOLIDUS:\n case $.GREATER_THAN_SIGN:\n case $.EOF: {\n this._leaveAttrName();\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case $.EQUALS_SIGN: {\n this._leaveAttrName();\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case $.QUOTATION_MARK:\n case $.APOSTROPHE:\n case $.LESS_THAN_SIGN: {\n this._err(ERR.unexpectedCharacterInAttributeName);\n this.currentAttr.name += String.fromCodePoint(cp);\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.name += REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After attribute name state\n //------------------------------------------------------------------\n _stateAfterAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.SOLIDUS: {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.EQUALS_SIGN: {\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Before attribute value state\n //------------------------------------------------------------------\n _stateBeforeAttributeValue(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingAttributeValue);\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n default: {\n this.state = State.ATTRIBUTE_VALUE_UNQUOTED;\n this._stateAttributeValueUnquoted(cp);\n }\n }\n }\n // Attribute value (double-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueDoubleQuoted(cp) {\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case $.AMPERSAND: {\n this.returnState = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (single-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueSingleQuoted(cp) {\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case $.AMPERSAND: {\n this.returnState = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (unquoted) state\n //------------------------------------------------------------------\n _stateAttributeValueUnquoted(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.AMPERSAND: {\n this.returnState = State.ATTRIBUTE_VALUE_UNQUOTED;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.QUOTATION_MARK:\n case $.APOSTROPHE:\n case $.LESS_THAN_SIGN:\n case $.EQUALS_SIGN:\n case $.GRAVE_ACCENT: {\n this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n this.currentAttr.value += String.fromCodePoint(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // After attribute value (quoted) state\n //------------------------------------------------------------------\n _stateAfterAttributeValueQuoted(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.SOLIDUS: {\n this._leaveAttrValue();\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingWhitespaceBetweenAttributes);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Self-closing start tag state\n //------------------------------------------------------------------\n _stateSelfClosingStartTag(cp) {\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n const token = this.currentToken;\n token.selfClosing = true;\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.unexpectedSolidusInTag);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Bogus comment state\n //------------------------------------------------------------------\n _stateBogusComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.data += REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Markup declaration open state\n //------------------------------------------------------------------\n _stateMarkupDeclarationOpen(cp) {\n if (this._consumeSequenceIfMatch($$.DASH_DASH, true)) {\n this._createCommentToken($$.DASH_DASH.length + 1);\n this.state = State.COMMENT_START;\n }\n else if (this._consumeSequenceIfMatch($$.DOCTYPE, false)) {\n // NOTE: Doctypes tokens are created without fixed offsets. We keep track of the moment a doctype *might* start here.\n this.currentLocation = this.getCurrentLocation($$.DOCTYPE.length + 1);\n this.state = State.DOCTYPE;\n }\n else if (this._consumeSequenceIfMatch($$.CDATA_START, true)) {\n if (this.inForeignNode) {\n this.state = State.CDATA_SECTION;\n }\n else {\n this._err(ERR.cdataInHtmlContent);\n this._createCommentToken($$.CDATA_START.length + 1);\n this.currentToken.data = '[CDATA[';\n this.state = State.BOGUS_COMMENT;\n }\n }\n //NOTE: Sequence lookups can be abrupted by hibernation. In that case, lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.incorrectlyOpenedComment);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n // Comment start state\n //------------------------------------------------------------------\n _stateCommentStart(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_START_DASH;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n const token = this.currentToken;\n this.emitCurrentComment(token);\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment start dash state\n //------------------------------------------------------------------\n _stateCommentStartDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment state\n //------------------------------------------------------------------\n _stateComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case $.LESS_THAN_SIGN: {\n token.data += '<';\n this.state = State.COMMENT_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.data += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Comment less-than sign state\n //------------------------------------------------------------------\n _stateCommentLessThanSign(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.EXCLAMATION_MARK: {\n token.data += '!';\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG;\n break;\n }\n case $.LESS_THAN_SIGN: {\n token.data += '<';\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment less-than sign bang state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBang(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH;\n }\n else {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n // Comment less-than sign bang dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDash(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;\n }\n else {\n this.state = State.COMMENT_END_DASH;\n this._stateCommentEndDash(cp);\n }\n }\n // Comment less-than sign bang dash dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDashDash(cp) {\n if (cp !== $.GREATER_THAN_SIGN && cp !== $.EOF) {\n this._err(ERR.nestedComment);\n }\n this.state = State.COMMENT_END;\n this._stateCommentEnd(cp);\n }\n // Comment end dash state\n //------------------------------------------------------------------\n _stateCommentEndDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end state\n //------------------------------------------------------------------\n _stateCommentEnd(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EXCLAMATION_MARK: {\n this.state = State.COMMENT_END_BANG;\n break;\n }\n case $.HYPHEN_MINUS: {\n token.data += '-';\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end bang state\n //------------------------------------------------------------------\n _stateCommentEndBang(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n token.data += '--!';\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.incorrectlyClosedComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--!';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // DOCTYPE state\n //------------------------------------------------------------------\n _stateDoctype(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingWhitespaceBeforeDoctypeName);\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n }\n }\n }\n // Before DOCTYPE name state\n //------------------------------------------------------------------\n _stateBeforeDoctypeName(cp) {\n if (isAsciiUpper(cp)) {\n this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp)));\n this.state = State.DOCTYPE_NAME;\n }\n else\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._createDoctypeToken(REPLACEMENT_CHARACTER);\n this.state = State.DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeName);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createDoctypeToken(String.fromCodePoint(cp));\n this.state = State.DOCTYPE_NAME;\n }\n }\n }\n // DOCTYPE name state\n //------------------------------------------------------------------\n _stateDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.AFTER_DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.name += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After DOCTYPE name state\n //------------------------------------------------------------------\n _stateAfterDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n if (this._consumeSequenceIfMatch($$.PUBLIC, false)) {\n this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD;\n }\n else if (this._consumeSequenceIfMatch($$.SYSTEM, false)) {\n this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD;\n }\n //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.invalidCharacterSequenceAfterDoctypeName);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n }\n // After DOCTYPE public keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE public identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.publicId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE public identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.publicId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Between DOCTYPE public and system identifiers state\n //------------------------------------------------------------------\n _stateBetweenDoctypePublicAndSystemIdentifiers(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // After DOCTYPE system keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE system identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.systemId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE system identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.systemId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Bogus DOCTYPE state\n //------------------------------------------------------------------\n _stateBogusDoctype(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n break;\n }\n case $.EOF: {\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n // Do nothing\n }\n }\n // CDATA section state\n //------------------------------------------------------------------\n _stateCdataSection(cp) {\n switch (cp) {\n case $.RIGHT_SQUARE_BRACKET: {\n this.state = State.CDATA_SECTION_BRACKET;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInCdata);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // CDATA section bracket state\n //------------------------------------------------------------------\n _stateCdataSectionBracket(cp) {\n if (cp === $.RIGHT_SQUARE_BRACKET) {\n this.state = State.CDATA_SECTION_END;\n }\n else {\n this._emitChars(']');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n // CDATA section end state\n //------------------------------------------------------------------\n _stateCdataSectionEnd(cp) {\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n break;\n }\n case $.RIGHT_SQUARE_BRACKET: {\n this._emitChars(']');\n break;\n }\n default: {\n this._emitChars(']]');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n }\n // Character reference state\n //------------------------------------------------------------------\n _stateCharacterReference(cp) {\n if (cp === $.NUMBER_SIGN) {\n this.state = State.NUMERIC_CHARACTER_REFERENCE;\n }\n else if (isAsciiAlphaNumeric(cp)) {\n this.state = State.NAMED_CHARACTER_REFERENCE;\n this._stateNamedCharacterReference(cp);\n }\n else {\n this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n this._reconsumeInState(this.returnState, cp);\n }\n }\n // Named character reference state\n //------------------------------------------------------------------\n _stateNamedCharacterReference(cp) {\n const matchResult = this._matchNamedCharacterReference(cp);\n //NOTE: Matching can be abrupted by hibernation. In that case, match\n //results are no longer valid and we will need to start over.\n if (this._ensureHibernation()) {\n // Stay in the state, try again.\n }\n else if (matchResult) {\n for (let i = 0; i < matchResult.length; i++) {\n this._flushCodePointConsumedAsCharacterReference(matchResult[i]);\n }\n this.state = this.returnState;\n }\n else {\n this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n this.state = State.AMBIGUOUS_AMPERSAND;\n }\n }\n // Ambiguos ampersand state\n //------------------------------------------------------------------\n _stateAmbiguousAmpersand(cp) {\n if (isAsciiAlphaNumeric(cp)) {\n this._flushCodePointConsumedAsCharacterReference(cp);\n }\n else {\n if (cp === $.SEMICOLON) {\n this._err(ERR.unknownNamedCharacterReference);\n }\n this._reconsumeInState(this.returnState, cp);\n }\n }\n // Numeric character reference state\n //------------------------------------------------------------------\n _stateNumericCharacterReference(cp) {\n this.charRefCode = 0;\n if (cp === $.LATIN_SMALL_X || cp === $.LATIN_CAPITAL_X) {\n this.state = State.HEXADEMICAL_CHARACTER_REFERENCE_START;\n }\n // Inlined decimal character reference start state\n else if (isAsciiDigit(cp)) {\n this.state = State.DECIMAL_CHARACTER_REFERENCE;\n this._stateDecimalCharacterReference(cp);\n }\n else {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n this._flushCodePointConsumedAsCharacterReference($.NUMBER_SIGN);\n this._reconsumeInState(this.returnState, cp);\n }\n }\n // Hexademical character reference start state\n //------------------------------------------------------------------\n _stateHexademicalCharacterReferenceStart(cp) {\n if (isAsciiHexDigit(cp)) {\n this.state = State.HEXADEMICAL_CHARACTER_REFERENCE;\n this._stateHexademicalCharacterReference(cp);\n }\n else {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n this._flushCodePointConsumedAsCharacterReference($.NUMBER_SIGN);\n this._unconsume(2);\n this.state = this.returnState;\n }\n }\n // Hexademical character reference state\n //------------------------------------------------------------------\n _stateHexademicalCharacterReference(cp) {\n if (isAsciiUpperHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x37;\n }\n else if (isAsciiLowerHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x57;\n }\n else if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x30;\n }\n else if (cp === $.SEMICOLON) {\n this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n }\n else {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n this._stateNumericCharacterReferenceEnd(cp);\n }\n }\n // Decimal character reference state\n //------------------------------------------------------------------\n _stateDecimalCharacterReference(cp) {\n if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 10 + cp - 0x30;\n }\n else if (cp === $.SEMICOLON) {\n this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n }\n else {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n this._stateNumericCharacterReferenceEnd(cp);\n }\n }\n // Numeric character reference end state\n //------------------------------------------------------------------\n _stateNumericCharacterReferenceEnd(cp) {\n if (this.charRefCode === $.NULL) {\n this._err(ERR.nullCharacterReference);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n }\n else if (this.charRefCode > 1114111) {\n this._err(ERR.characterReferenceOutsideUnicodeRange);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n }\n else if (isSurrogate(this.charRefCode)) {\n this._err(ERR.surrogateCharacterReference);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n }\n else if (isUndefinedCodePoint(this.charRefCode)) {\n this._err(ERR.noncharacterCharacterReference);\n }\n else if (isControlCodePoint(this.charRefCode) || this.charRefCode === $.CARRIAGE_RETURN) {\n this._err(ERR.controlCharacterReference);\n const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS.get(this.charRefCode);\n if (replacement !== undefined) {\n this.charRefCode = replacement;\n }\n }\n this._flushCodePointConsumedAsCharacterReference(this.charRefCode);\n this._reconsumeInState(this.returnState, cp);\n }\n}\n//# sourceMappingURL=index.js.map", "import { TAG_ID as $, NS, isNumberedHeader } from '../common/html.js';\n//Element utils\nconst IMPLICIT_END_TAG_REQUIRED = new Set([$.DD, $.DT, $.LI, $.OPTGROUP, $.OPTION, $.P, $.RB, $.RP, $.RT, $.RTC]);\nconst IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([\n ...IMPLICIT_END_TAG_REQUIRED,\n $.CAPTION,\n $.COLGROUP,\n $.TBODY,\n $.TD,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TR,\n]);\nconst SCOPING_ELEMENT_NS = new Map([\n [$.APPLET, NS.HTML],\n [$.CAPTION, NS.HTML],\n [$.HTML, NS.HTML],\n [$.MARQUEE, NS.HTML],\n [$.OBJECT, NS.HTML],\n [$.TABLE, NS.HTML],\n [$.TD, NS.HTML],\n [$.TEMPLATE, NS.HTML],\n [$.TH, NS.HTML],\n [$.ANNOTATION_XML, NS.MATHML],\n [$.MI, NS.MATHML],\n [$.MN, NS.MATHML],\n [$.MO, NS.MATHML],\n [$.MS, NS.MATHML],\n [$.MTEXT, NS.MATHML],\n [$.DESC, NS.SVG],\n [$.FOREIGN_OBJECT, NS.SVG],\n [$.TITLE, NS.SVG],\n]);\nconst NAMED_HEADERS = [$.H1, $.H2, $.H3, $.H4, $.H5, $.H6];\nconst TABLE_ROW_CONTEXT = [$.TR, $.TEMPLATE, $.HTML];\nconst TABLE_BODY_CONTEXT = [$.TBODY, $.TFOOT, $.THEAD, $.TEMPLATE, $.HTML];\nconst TABLE_CONTEXT = [$.TABLE, $.TEMPLATE, $.HTML];\nconst TABLE_CELLS = [$.TD, $.TH];\n//Stack of open elements\nexport class OpenElementStack {\n get currentTmplContentOrNode() {\n return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current;\n }\n constructor(document, treeAdapter, handler) {\n this.treeAdapter = treeAdapter;\n this.handler = handler;\n this.items = [];\n this.tagIDs = [];\n this.stackTop = -1;\n this.tmplCount = 0;\n this.currentTagId = $.UNKNOWN;\n this.current = document;\n }\n //Index of element\n _indexOf(element) {\n return this.items.lastIndexOf(element, this.stackTop);\n }\n //Update current element\n _isInTemplate() {\n return this.currentTagId === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\n }\n _updateCurrentElement() {\n this.current = this.items[this.stackTop];\n this.currentTagId = this.tagIDs[this.stackTop];\n }\n //Mutations\n push(element, tagID) {\n this.stackTop++;\n this.items[this.stackTop] = element;\n this.current = element;\n this.tagIDs[this.stackTop] = tagID;\n this.currentTagId = tagID;\n if (this._isInTemplate()) {\n this.tmplCount++;\n }\n this.handler.onItemPush(element, tagID, true);\n }\n pop() {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount--;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, true);\n }\n replace(oldElement, newElement) {\n const idx = this._indexOf(oldElement);\n this.items[idx] = newElement;\n if (idx === this.stackTop) {\n this.current = newElement;\n }\n }\n insertAfter(referenceElement, newElement, newElementID) {\n const insertionIdx = this._indexOf(referenceElement) + 1;\n this.items.splice(insertionIdx, 0, newElement);\n this.tagIDs.splice(insertionIdx, 0, newElementID);\n this.stackTop++;\n if (insertionIdx === this.stackTop) {\n this._updateCurrentElement();\n }\n this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop);\n }\n popUntilTagNamePopped(tagName) {\n let targetIdx = this.stackTop + 1;\n do {\n targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1);\n } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== NS.HTML);\n this.shortenToLength(targetIdx < 0 ? 0 : targetIdx);\n }\n shortenToLength(idx) {\n while (this.stackTop >= idx) {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount -= 1;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, this.stackTop < idx);\n }\n }\n popUntilElementPopped(element) {\n const idx = this._indexOf(element);\n this.shortenToLength(idx < 0 ? 0 : idx);\n }\n popUntilPopped(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(idx < 0 ? 0 : idx);\n }\n popUntilNumberedHeaderPopped() {\n this.popUntilPopped(NAMED_HEADERS, NS.HTML);\n }\n popUntilTableCellPopped() {\n this.popUntilPopped(TABLE_CELLS, NS.HTML);\n }\n popAllUpToHtmlElement() {\n //NOTE: here we assume that the root <html> element is always first in the open element stack, so\n //we perform this fast stack clean up.\n this.tmplCount = 0;\n this.shortenToLength(1);\n }\n _indexOfTagNames(tagNames, namespace) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (tagNames.includes(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) {\n return i;\n }\n }\n return -1;\n }\n clearBackTo(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(idx + 1);\n }\n clearBackToTableContext() {\n this.clearBackTo(TABLE_CONTEXT, NS.HTML);\n }\n clearBackToTableBodyContext() {\n this.clearBackTo(TABLE_BODY_CONTEXT, NS.HTML);\n }\n clearBackToTableRowContext() {\n this.clearBackTo(TABLE_ROW_CONTEXT, NS.HTML);\n }\n remove(element) {\n const idx = this._indexOf(element);\n if (idx >= 0) {\n if (idx === this.stackTop) {\n this.pop();\n }\n else {\n this.items.splice(idx, 1);\n this.tagIDs.splice(idx, 1);\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(element, false);\n }\n }\n }\n //Search\n tryPeekProperlyNestedBodyElement() {\n //Properly nested <body> element (should be second element in stack).\n return this.stackTop >= 1 && this.tagIDs[1] === $.BODY ? this.items[1] : null;\n }\n contains(element) {\n return this._indexOf(element) > -1;\n }\n getCommonAncestor(element) {\n const elementIdx = this._indexOf(element) - 1;\n return elementIdx >= 0 ? this.items[elementIdx] : null;\n }\n isRootHtmlElementCurrent() {\n return this.stackTop === 0 && this.tagIDs[0] === $.HTML;\n }\n //Element in scope\n hasInScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n if (SCOPING_ELEMENT_NS.get(tn) === ns) {\n return false;\n }\n }\n return true;\n }\n hasNumberedHeaderInScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (isNumberedHeader(tn) && ns === NS.HTML) {\n return true;\n }\n if (SCOPING_ELEMENT_NS.get(tn) === ns) {\n return false;\n }\n }\n return true;\n }\n hasInListItemScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n if (((tn === $.UL || tn === $.OL) && ns === NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) {\n return false;\n }\n }\n return true;\n }\n hasInButtonScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n if ((tn === $.BUTTON && ns === NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) {\n return false;\n }\n }\n return true;\n }\n hasInTableScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (ns !== NS.HTML) {\n continue;\n }\n if (tn === tagName) {\n return true;\n }\n if (tn === $.TABLE || tn === $.TEMPLATE || tn === $.HTML) {\n return false;\n }\n }\n return true;\n }\n hasTableBodyContextInTableScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (ns !== NS.HTML) {\n continue;\n }\n if (tn === $.TBODY || tn === $.THEAD || tn === $.TFOOT) {\n return true;\n }\n if (tn === $.TABLE || tn === $.HTML) {\n return false;\n }\n }\n return true;\n }\n hasInSelectScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (ns !== NS.HTML) {\n continue;\n }\n if (tn === tagName) {\n return true;\n }\n if (tn !== $.OPTION && tn !== $.OPTGROUP) {\n return false;\n }\n }\n return true;\n }\n //Implied end tags\n generateImpliedEndTags() {\n while (IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsThoroughly() {\n while (IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsWithExclusion(exclusionId) {\n while (this.currentTagId !== exclusionId && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n}\n//# sourceMappingURL=open-element-stack.js.map", "//Const\nconst NOAH_ARK_CAPACITY = 3;\nexport var EntryType;\n(function (EntryType) {\n EntryType[EntryType[\"Marker\"] = 0] = \"Marker\";\n EntryType[EntryType[\"Element\"] = 1] = \"Element\";\n})(EntryType = EntryType || (EntryType = {}));\nconst MARKER = { type: EntryType.Marker };\n//List of formatting elements\nexport class FormattingElementList {\n constructor(treeAdapter) {\n this.treeAdapter = treeAdapter;\n this.entries = [];\n this.bookmark = null;\n }\n //Noah Ark's condition\n //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n //lightweight heuristics without thorough attributes check.\n _getNoahArkConditionCandidates(newElement, neAttrs) {\n const candidates = [];\n const neAttrsLength = neAttrs.length;\n const neTagName = this.treeAdapter.getTagName(newElement);\n const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n for (let i = 0; i < this.entries.length; i++) {\n const entry = this.entries[i];\n if (entry.type === EntryType.Marker) {\n break;\n }\n const { element } = entry;\n if (this.treeAdapter.getTagName(element) === neTagName &&\n this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) {\n const elementAttrs = this.treeAdapter.getAttrList(element);\n if (elementAttrs.length === neAttrsLength) {\n candidates.push({ idx: i, attrs: elementAttrs });\n }\n }\n }\n return candidates;\n }\n _ensureNoahArkCondition(newElement) {\n if (this.entries.length < NOAH_ARK_CAPACITY)\n return;\n const neAttrs = this.treeAdapter.getAttrList(newElement);\n const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs);\n if (candidates.length < NOAH_ARK_CAPACITY)\n return;\n //NOTE: build attrs map for the new element, so we can perform fast lookups\n const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value]));\n let validCandidates = 0;\n //NOTE: remove bottommost candidates, until Noah's Ark condition will not be met\n for (let i = 0; i < candidates.length; i++) {\n const candidate = candidates[i];\n // We know that `candidate.attrs.length === neAttrs.length`\n if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) {\n validCandidates += 1;\n if (validCandidates >= NOAH_ARK_CAPACITY) {\n this.entries.splice(candidate.idx, 1);\n }\n }\n }\n }\n //Mutations\n insertMarker() {\n this.entries.unshift(MARKER);\n }\n pushElement(element, token) {\n this._ensureNoahArkCondition(element);\n this.entries.unshift({\n type: EntryType.Element,\n element,\n token,\n });\n }\n insertElementAfterBookmark(element, token) {\n const bookmarkIdx = this.entries.indexOf(this.bookmark);\n this.entries.splice(bookmarkIdx, 0, {\n type: EntryType.Element,\n element,\n token,\n });\n }\n removeEntry(entry) {\n const entryIndex = this.entries.indexOf(entry);\n if (entryIndex >= 0) {\n this.entries.splice(entryIndex, 1);\n }\n }\n /**\n * Clears the list of formatting elements up to the last marker.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker\n */\n clearToLastMarker() {\n const markerIdx = this.entries.indexOf(MARKER);\n if (markerIdx >= 0) {\n this.entries.splice(0, markerIdx + 1);\n }\n else {\n this.entries.length = 0;\n }\n }\n //Search\n getElementEntryInScopeWithTagName(tagName) {\n const entry = this.entries.find((entry) => entry.type === EntryType.Marker || this.treeAdapter.getTagName(entry.element) === tagName);\n return entry && entry.type === EntryType.Element ? entry : null;\n }\n getElementEntry(element) {\n return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element);\n }\n}\n//# sourceMappingURL=formatting-element-list.js.map", "import { DOCUMENT_MODE } from '../common/html.js';\nfunction createTextNode(value) {\n return {\n nodeName: '#text',\n value,\n parentNode: null,\n };\n}\nexport const defaultTreeAdapter = {\n //Node construction\n createDocument() {\n return {\n nodeName: '#document',\n mode: DOCUMENT_MODE.NO_QUIRKS,\n childNodes: [],\n };\n },\n createDocumentFragment() {\n return {\n nodeName: '#document-fragment',\n childNodes: [],\n };\n },\n createElement(tagName, namespaceURI, attrs) {\n return {\n nodeName: tagName,\n tagName,\n attrs,\n namespaceURI,\n childNodes: [],\n parentNode: null,\n };\n },\n createCommentNode(data) {\n return {\n nodeName: '#comment',\n data,\n parentNode: null,\n };\n },\n //Tree mutation\n appendChild(parentNode, newNode) {\n parentNode.childNodes.push(newNode);\n newNode.parentNode = parentNode;\n },\n insertBefore(parentNode, newNode, referenceNode) {\n const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n parentNode.childNodes.splice(insertionIdx, 0, newNode);\n newNode.parentNode = parentNode;\n },\n setTemplateContent(templateElement, contentElement) {\n templateElement.content = contentElement;\n },\n getTemplateContent(templateElement) {\n return templateElement.content;\n },\n setDocumentType(document, name, publicId, systemId) {\n const doctypeNode = document.childNodes.find((node) => node.nodeName === '#documentType');\n if (doctypeNode) {\n doctypeNode.name = name;\n doctypeNode.publicId = publicId;\n doctypeNode.systemId = systemId;\n }\n else {\n const node = {\n nodeName: '#documentType',\n name,\n publicId,\n systemId,\n parentNode: null,\n };\n defaultTreeAdapter.appendChild(document, node);\n }\n },\n setDocumentMode(document, mode) {\n document.mode = mode;\n },\n getDocumentMode(document) {\n return document.mode;\n },\n detachNode(node) {\n if (node.parentNode) {\n const idx = node.parentNode.childNodes.indexOf(node);\n node.parentNode.childNodes.splice(idx, 1);\n node.parentNode = null;\n }\n },\n insertText(parentNode, text) {\n if (parentNode.childNodes.length > 0) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n if (defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n return;\n }\n }\n defaultTreeAdapter.appendChild(parentNode, createTextNode(text));\n },\n insertTextBefore(parentNode, text, referenceNode) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n }\n else {\n defaultTreeAdapter.insertBefore(parentNode, createTextNode(text), referenceNode);\n }\n },\n adoptAttributes(recipient, attrs) {\n const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name));\n for (let j = 0; j < attrs.length; j++) {\n if (!recipientAttrsMap.has(attrs[j].name)) {\n recipient.attrs.push(attrs[j]);\n }\n }\n },\n //Tree traversing\n getFirstChild(node) {\n return node.childNodes[0];\n },\n getChildNodes(node) {\n return node.childNodes;\n },\n getParentNode(node) {\n return node.parentNode;\n },\n getAttrList(element) {\n return element.attrs;\n },\n //Node data\n getTagName(element) {\n return element.tagName;\n },\n getNamespaceURI(element) {\n return element.namespaceURI;\n },\n getTextNodeContent(textNode) {\n return textNode.value;\n },\n getCommentNodeContent(commentNode) {\n return commentNode.data;\n },\n getDocumentTypeNodeName(doctypeNode) {\n return doctypeNode.name;\n },\n getDocumentTypeNodePublicId(doctypeNode) {\n return doctypeNode.publicId;\n },\n getDocumentTypeNodeSystemId(doctypeNode) {\n return doctypeNode.systemId;\n },\n //Node types\n isTextNode(node) {\n return node.nodeName === '#text';\n },\n isCommentNode(node) {\n return node.nodeName === '#comment';\n },\n isDocumentTypeNode(node) {\n return node.nodeName === '#documentType';\n },\n isElementNode(node) {\n return Object.prototype.hasOwnProperty.call(node, 'tagName');\n },\n // Source code location\n setNodeSourceCodeLocation(node, location) {\n node.sourceCodeLocation = location;\n },\n getNodeSourceCodeLocation(node) {\n return node.sourceCodeLocation;\n },\n updateNodeSourceCodeLocation(node, endLocation) {\n node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation };\n },\n};\n//# sourceMappingURL=default.js.map", "import { DOCUMENT_MODE } from './html.js';\n//Const\nconst VALID_DOCTYPE_NAME = 'html';\nconst VALID_SYSTEM_ID = 'about:legacy-compat';\nconst QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd';\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n '+//silmaril//dtd html pro v0r11 19970101//',\n '-//as//dtd html 3.0 aswedit + extensions//',\n '-//advasoft ltd//dtd html 3.0 aswedit + extensions//',\n '-//ietf//dtd html 2.0 level 1//',\n '-//ietf//dtd html 2.0 level 2//',\n '-//ietf//dtd html 2.0 strict level 1//',\n '-//ietf//dtd html 2.0 strict level 2//',\n '-//ietf//dtd html 2.0 strict//',\n '-//ietf//dtd html 2.0//',\n '-//ietf//dtd html 2.1e//',\n '-//ietf//dtd html 3.0//',\n '-//ietf//dtd html 3.2 final//',\n '-//ietf//dtd html 3.2//',\n '-//ietf//dtd html 3//',\n '-//ietf//dtd html level 0//',\n '-//ietf//dtd html level 1//',\n '-//ietf//dtd html level 2//',\n '-//ietf//dtd html level 3//',\n '-//ietf//dtd html strict level 0//',\n '-//ietf//dtd html strict level 1//',\n '-//ietf//dtd html strict level 2//',\n '-//ietf//dtd html strict level 3//',\n '-//ietf//dtd html strict//',\n '-//ietf//dtd html//',\n '-//metrius//dtd metrius presentational//',\n '-//microsoft//dtd internet explorer 2.0 html strict//',\n '-//microsoft//dtd internet explorer 2.0 html//',\n '-//microsoft//dtd internet explorer 2.0 tables//',\n '-//microsoft//dtd internet explorer 3.0 html strict//',\n '-//microsoft//dtd internet explorer 3.0 html//',\n '-//microsoft//dtd internet explorer 3.0 tables//',\n '-//netscape comm. corp.//dtd html//',\n '-//netscape comm. corp.//dtd strict html//',\n \"-//o'reilly and associates//dtd html 2.0//\",\n \"-//o'reilly and associates//dtd html extended 1.0//\",\n \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n '-//sq//dtd html 2.0 hotmetal + extensions//',\n '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//',\n '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//',\n '-//spyglass//dtd html 2.0 extended//',\n '-//sun microsystems corp.//dtd hotjava html//',\n '-//sun microsystems corp.//dtd hotjava strict html//',\n '-//w3c//dtd html 3 1995-03-24//',\n '-//w3c//dtd html 3.2 draft//',\n '-//w3c//dtd html 3.2 final//',\n '-//w3c//dtd html 3.2//',\n '-//w3c//dtd html 3.2s draft//',\n '-//w3c//dtd html 4.0 frameset//',\n '-//w3c//dtd html 4.0 transitional//',\n '-//w3c//dtd html experimental 19960712//',\n '-//w3c//dtd html experimental 970421//',\n '-//w3c//dtd w3 html//',\n '-//w3o//dtd w3 html 3.0//',\n '-//webtechs//dtd mozilla html 2.0//',\n '-//webtechs//dtd mozilla html//',\n];\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...QUIRKS_MODE_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\nconst QUIRKS_MODE_PUBLIC_IDS = new Set([\n '-//w3o//dtd w3 html strict 3.0//en//',\n '-/w3c/dtd html 4.0 transitional/en',\n 'html',\n]);\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\n//Utils\nfunction hasPrefix(publicId, prefixes) {\n return prefixes.some((prefix) => publicId.startsWith(prefix));\n}\n//API\nexport function isConforming(token) {\n return (token.name === VALID_DOCTYPE_NAME &&\n token.publicId === null &&\n (token.systemId === null || token.systemId === VALID_SYSTEM_ID));\n}\nexport function getDocumentMode(token) {\n if (token.name !== VALID_DOCTYPE_NAME) {\n return DOCUMENT_MODE.QUIRKS;\n }\n const { systemId } = token;\n if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let { publicId } = token;\n if (publicId !== null) {\n publicId = publicId.toLowerCase();\n if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n prefixes =\n systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.LIMITED_QUIRKS;\n }\n }\n return DOCUMENT_MODE.NO_QUIRKS;\n}\n//# sourceMappingURL=doctype.js.map", "import { TAG_ID as $, NS, ATTRS, getTagID } from './html.js';\n//MIME types\nconst MIME_TYPES = {\n TEXT_HTML: 'text/html',\n APPLICATION_XML: 'application/xhtml+xml',\n};\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = new Map([\n 'attributeName',\n 'attributeType',\n 'baseFrequency',\n 'baseProfile',\n 'calcMode',\n 'clipPathUnits',\n 'diffuseConstant',\n 'edgeMode',\n 'filterUnits',\n 'glyphRef',\n 'gradientTransform',\n 'gradientUnits',\n 'kernelMatrix',\n 'kernelUnitLength',\n 'keyPoints',\n 'keySplines',\n 'keyTimes',\n 'lengthAdjust',\n 'limitingConeAngle',\n 'markerHeight',\n 'markerUnits',\n 'markerWidth',\n 'maskContentUnits',\n 'maskUnits',\n 'numOctaves',\n 'pathLength',\n 'patternContentUnits',\n 'patternTransform',\n 'patternUnits',\n 'pointsAtX',\n 'pointsAtY',\n 'pointsAtZ',\n 'preserveAlpha',\n 'preserveAspectRatio',\n 'primitiveUnits',\n 'refX',\n 'refY',\n 'repeatCount',\n 'repeatDur',\n 'requiredExtensions',\n 'requiredFeatures',\n 'specularConstant',\n 'specularExponent',\n 'spreadMethod',\n 'startOffset',\n 'stdDeviation',\n 'stitchTiles',\n 'surfaceScale',\n 'systemLanguage',\n 'tableValues',\n 'targetX',\n 'targetY',\n 'textLength',\n 'viewBox',\n 'viewTarget',\n 'xChannelSelector',\n 'yChannelSelector',\n 'zoomAndPan',\n].map((attr) => [attr.toLowerCase(), attr]));\nconst XML_ATTRS_ADJUSTMENT_MAP = new Map([\n ['xlink:actuate', { prefix: 'xlink', name: 'actuate', namespace: NS.XLINK }],\n ['xlink:arcrole', { prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK }],\n ['xlink:href', { prefix: 'xlink', name: 'href', namespace: NS.XLINK }],\n ['xlink:role', { prefix: 'xlink', name: 'role', namespace: NS.XLINK }],\n ['xlink:show', { prefix: 'xlink', name: 'show', namespace: NS.XLINK }],\n ['xlink:title', { prefix: 'xlink', name: 'title', namespace: NS.XLINK }],\n ['xlink:type', { prefix: 'xlink', name: 'type', namespace: NS.XLINK }],\n ['xml:base', { prefix: 'xml', name: 'base', namespace: NS.XML }],\n ['xml:lang', { prefix: 'xml', name: 'lang', namespace: NS.XML }],\n ['xml:space', { prefix: 'xml', name: 'space', namespace: NS.XML }],\n ['xmlns', { prefix: '', name: 'xmlns', namespace: NS.XMLNS }],\n ['xmlns:xlink', { prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS }],\n]);\n//SVG tag names adjustment map\nexport const SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([\n 'altGlyph',\n 'altGlyphDef',\n 'altGlyphItem',\n 'animateColor',\n 'animateMotion',\n 'animateTransform',\n 'clipPath',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'foreignObject',\n 'glyphRef',\n 'linearGradient',\n 'radialGradient',\n 'textPath',\n].map((tn) => [tn.toLowerCase(), tn]));\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = new Set([\n $.B,\n $.BIG,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.CENTER,\n $.CODE,\n $.DD,\n $.DIV,\n $.DL,\n $.DT,\n $.EM,\n $.EMBED,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HR,\n $.I,\n $.IMG,\n $.LI,\n $.LISTING,\n $.MENU,\n $.META,\n $.NOBR,\n $.OL,\n $.P,\n $.PRE,\n $.RUBY,\n $.S,\n $.SMALL,\n $.SPAN,\n $.STRONG,\n $.STRIKE,\n $.SUB,\n $.SUP,\n $.TABLE,\n $.TT,\n $.U,\n $.UL,\n $.VAR,\n]);\n//Check exit from foreign content\nexport function causesExit(startTagToken) {\n const tn = startTagToken.tagID;\n const isFontWithAttrs = tn === $.FONT &&\n startTagToken.attrs.some(({ name }) => name === ATTRS.COLOR || name === ATTRS.SIZE || name === ATTRS.FACE);\n return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn);\n}\n//Token adjustments\nexport function adjustTokenMathMLAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n break;\n }\n }\n}\nexport function adjustTokenSVGAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrName != null) {\n token.attrs[i].name = adjustedAttrName;\n }\n }\n}\nexport function adjustTokenXMLAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrEntry) {\n token.attrs[i].prefix = adjustedAttrEntry.prefix;\n token.attrs[i].name = adjustedAttrEntry.name;\n token.attrs[i].namespace = adjustedAttrEntry.namespace;\n }\n }\n}\nexport function adjustTokenSVGTagName(token) {\n const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName);\n if (adjustedTagName != null) {\n token.tagName = adjustedTagName;\n token.tagID = getTagID(token.tagName);\n }\n}\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n return ns === NS.MATHML && (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS || tn === $.MTEXT);\n}\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n if (ns === NS.MATHML && tn === $.ANNOTATION_XML) {\n for (let i = 0; i < attrs.length; i++) {\n if (attrs[i].name === ATTRS.ENCODING) {\n const value = attrs[i].value.toLowerCase();\n return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n }\n }\n }\n return ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);\n}\nexport function isIntegrationPoint(tn, ns, attrs, foreignNS) {\n return (((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) ||\n ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)));\n}\n//# sourceMappingURL=foreign-content.js.map", "import { Tokenizer, TokenizerMode } from '../tokenizer/index.js';\nimport { OpenElementStack } from './open-element-stack.js';\nimport { FormattingElementList, EntryType } from './formatting-element-list.js';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\nimport * as doctype from '../common/doctype.js';\nimport * as foreignContent from '../common/foreign-content.js';\nimport { ERR } from '../common/error-codes.js';\nimport * as unicode from '../common/unicode.js';\nimport { TAG_ID as $, TAG_NAMES as TN, NS, ATTRS, SPECIAL_ELEMENTS, DOCUMENT_MODE, isNumberedHeader, getTagID, } from '../common/html.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n//Insertion modes\nvar InsertionMode;\n(function (InsertionMode) {\n InsertionMode[InsertionMode[\"INITIAL\"] = 0] = \"INITIAL\";\n InsertionMode[InsertionMode[\"BEFORE_HTML\"] = 1] = \"BEFORE_HTML\";\n InsertionMode[InsertionMode[\"BEFORE_HEAD\"] = 2] = \"BEFORE_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD\"] = 3] = \"IN_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD_NO_SCRIPT\"] = 4] = \"IN_HEAD_NO_SCRIPT\";\n InsertionMode[InsertionMode[\"AFTER_HEAD\"] = 5] = \"AFTER_HEAD\";\n InsertionMode[InsertionMode[\"IN_BODY\"] = 6] = \"IN_BODY\";\n InsertionMode[InsertionMode[\"TEXT\"] = 7] = \"TEXT\";\n InsertionMode[InsertionMode[\"IN_TABLE\"] = 8] = \"IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TABLE_TEXT\"] = 9] = \"IN_TABLE_TEXT\";\n InsertionMode[InsertionMode[\"IN_CAPTION\"] = 10] = \"IN_CAPTION\";\n InsertionMode[InsertionMode[\"IN_COLUMN_GROUP\"] = 11] = \"IN_COLUMN_GROUP\";\n InsertionMode[InsertionMode[\"IN_TABLE_BODY\"] = 12] = \"IN_TABLE_BODY\";\n InsertionMode[InsertionMode[\"IN_ROW\"] = 13] = \"IN_ROW\";\n InsertionMode[InsertionMode[\"IN_CELL\"] = 14] = \"IN_CELL\";\n InsertionMode[InsertionMode[\"IN_SELECT\"] = 15] = \"IN_SELECT\";\n InsertionMode[InsertionMode[\"IN_SELECT_IN_TABLE\"] = 16] = \"IN_SELECT_IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TEMPLATE\"] = 17] = \"IN_TEMPLATE\";\n InsertionMode[InsertionMode[\"AFTER_BODY\"] = 18] = \"AFTER_BODY\";\n InsertionMode[InsertionMode[\"IN_FRAMESET\"] = 19] = \"IN_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_FRAMESET\"] = 20] = \"AFTER_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_BODY\"] = 21] = \"AFTER_AFTER_BODY\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_FRAMESET\"] = 22] = \"AFTER_AFTER_FRAMESET\";\n})(InsertionMode || (InsertionMode = {}));\nconst BASE_LOC = {\n startLine: -1,\n startCol: -1,\n startOffset: -1,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n};\nconst TABLE_STRUCTURE_TAGS = new Set([$.TABLE, $.TBODY, $.TFOOT, $.THEAD, $.TR]);\nconst defaultParserOptions = {\n scriptingEnabled: true,\n sourceCodeLocationInfo: false,\n treeAdapter: defaultTreeAdapter,\n onParseError: null,\n};\n//Parser\nexport class Parser {\n constructor(options, document, fragmentContext = null, scriptHandler = null) {\n this.fragmentContext = fragmentContext;\n this.scriptHandler = scriptHandler;\n this.currentToken = null;\n this.stopped = false;\n this.insertionMode = InsertionMode.INITIAL;\n this.originalInsertionMode = InsertionMode.INITIAL;\n this.headElement = null;\n this.formElement = null;\n /** Indicates that the current node is not an element in the HTML namespace */\n this.currentNotInHTML = false;\n /**\n * The template insertion mode stack is maintained from the left.\n * Ie. the topmost element will always have index 0.\n */\n this.tmplInsertionModeStack = [];\n this.pendingCharacterTokens = [];\n this.hasNonWhitespacePendingCharacterToken = false;\n this.framesetOk = true;\n this.skipNextNewLine = false;\n this.fosterParentingEnabled = false;\n this.options = {\n ...defaultParserOptions,\n ...options,\n };\n this.treeAdapter = this.options.treeAdapter;\n this.onParseError = this.options.onParseError;\n // Always enable location info if we report parse errors.\n if (this.onParseError) {\n this.options.sourceCodeLocationInfo = true;\n }\n this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument();\n this.tokenizer = new Tokenizer(this.options, this);\n this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : $.UNKNOWN;\n this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID);\n this.openElements = new OpenElementStack(this.document, this.treeAdapter, this);\n }\n // API\n static parse(html, options) {\n const parser = new this(options);\n parser.tokenizer.write(html, true);\n return parser.document;\n }\n static getFragmentParser(fragmentContext, options) {\n const opts = {\n ...defaultParserOptions,\n ...options,\n };\n //NOTE: use a <template> element as the fragment context if no context element was provided,\n //so we will parse in a \"forgiving\" manner\n fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : (fragmentContext = opts.treeAdapter.createElement(TN.TEMPLATE, NS.HTML, []));\n //NOTE: create a fake element which will be used as the `document` for fragment parsing.\n //This is important for jsdom, where a new `document` cannot be created. This led to\n //fragment parsing messing with the main `document`.\n const documentMock = opts.treeAdapter.createElement('documentmock', NS.HTML, []);\n const parser = new this(opts, documentMock, fragmentContext);\n if (parser.fragmentContextID === $.TEMPLATE) {\n parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n }\n parser._initTokenizerForFragmentParsing();\n parser._insertFakeRootElement();\n parser._resetInsertionMode();\n parser._findFormInFragmentContext();\n return parser;\n }\n getFragment() {\n const rootElement = this.treeAdapter.getFirstChild(this.document);\n const fragment = this.treeAdapter.createDocumentFragment();\n this._adoptNodes(rootElement, fragment);\n return fragment;\n }\n //Errors\n _err(token, code, beforeToken) {\n var _a;\n if (!this.onParseError)\n return;\n const loc = (_a = token.location) !== null && _a !== void 0 ? _a : BASE_LOC;\n const err = {\n code,\n startLine: loc.startLine,\n startCol: loc.startCol,\n startOffset: loc.startOffset,\n endLine: beforeToken ? loc.startLine : loc.endLine,\n endCol: beforeToken ? loc.startCol : loc.endCol,\n endOffset: beforeToken ? loc.startOffset : loc.endOffset,\n };\n this.onParseError(err);\n }\n //Stack events\n onItemPush(node, tid, isTop) {\n var _a, _b;\n (_b = (_a = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a, node);\n if (isTop && this.openElements.stackTop > 0)\n this._setContextModes(node, tid);\n }\n onItemPop(node, isTop) {\n var _a, _b;\n if (this.options.sourceCodeLocationInfo) {\n this._setEndLocation(node, this.currentToken);\n }\n (_b = (_a = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a, node, this.openElements.current);\n if (isTop) {\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n }\n else {\n ({ current, currentTagId } = this.openElements);\n }\n this._setContextModes(current, currentTagId);\n }\n }\n _setContextModes(current, tid) {\n const isHTML = current === this.document || this.treeAdapter.getNamespaceURI(current) === NS.HTML;\n this.currentNotInHTML = !isHTML;\n this.tokenizer.inForeignNode = !isHTML && !this._isIntegrationPoint(tid, current);\n }\n _switchToTextParsing(currentToken, nextTokenizerState) {\n this._insertElement(currentToken, NS.HTML);\n this.tokenizer.state = nextTokenizerState;\n this.originalInsertionMode = this.insertionMode;\n this.insertionMode = InsertionMode.TEXT;\n }\n switchToPlaintextParsing() {\n this.insertionMode = InsertionMode.TEXT;\n this.originalInsertionMode = InsertionMode.IN_BODY;\n this.tokenizer.state = TokenizerMode.PLAINTEXT;\n }\n //Fragment parsing\n _getAdjustedCurrentElement() {\n return this.openElements.stackTop === 0 && this.fragmentContext\n ? this.fragmentContext\n : this.openElements.current;\n }\n _findFormInFragmentContext() {\n let node = this.fragmentContext;\n while (node) {\n if (this.treeAdapter.getTagName(node) === TN.FORM) {\n this.formElement = node;\n break;\n }\n node = this.treeAdapter.getParentNode(node);\n }\n }\n _initTokenizerForFragmentParsing() {\n if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== NS.HTML) {\n return;\n }\n switch (this.fragmentContextID) {\n case $.TITLE:\n case $.TEXTAREA: {\n this.tokenizer.state = TokenizerMode.RCDATA;\n break;\n }\n case $.STYLE:\n case $.XMP:\n case $.IFRAME:\n case $.NOEMBED:\n case $.NOFRAMES:\n case $.NOSCRIPT: {\n this.tokenizer.state = TokenizerMode.RAWTEXT;\n break;\n }\n case $.SCRIPT: {\n this.tokenizer.state = TokenizerMode.SCRIPT_DATA;\n break;\n }\n case $.PLAINTEXT: {\n this.tokenizer.state = TokenizerMode.PLAINTEXT;\n break;\n }\n default:\n // Do nothing\n }\n }\n //Tree mutation\n _setDocumentType(token) {\n const name = token.name || '';\n const publicId = token.publicId || '';\n const systemId = token.systemId || '';\n this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n if (token.location) {\n const documentChildren = this.treeAdapter.getChildNodes(this.document);\n const docTypeNode = documentChildren.find((node) => this.treeAdapter.isDocumentTypeNode(node));\n if (docTypeNode) {\n this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location);\n }\n }\n }\n _attachElementToTree(element, location) {\n if (this.options.sourceCodeLocationInfo) {\n const loc = location && {\n ...location,\n startTag: location,\n };\n this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n }\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentElement(element);\n }\n else {\n const parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.appendChild(parent, element);\n }\n }\n _appendElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n }\n _insertElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n this.openElements.push(element, token.tagID);\n }\n _insertFakeElement(tagName, tagID) {\n const element = this.treeAdapter.createElement(tagName, NS.HTML, []);\n this._attachElementToTree(element, null);\n this.openElements.push(element, tagID);\n }\n _insertTemplate(token) {\n const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);\n const content = this.treeAdapter.createDocumentFragment();\n this.treeAdapter.setTemplateContent(tmpl, content);\n this._attachElementToTree(tmpl, token.location);\n this.openElements.push(tmpl, token.tagID);\n if (this.options.sourceCodeLocationInfo)\n this.treeAdapter.setNodeSourceCodeLocation(content, null);\n }\n _insertFakeRootElement() {\n const element = this.treeAdapter.createElement(TN.HTML, NS.HTML, []);\n if (this.options.sourceCodeLocationInfo)\n this.treeAdapter.setNodeSourceCodeLocation(element, null);\n this.treeAdapter.appendChild(this.openElements.current, element);\n this.openElements.push(element, $.HTML);\n }\n _appendCommentNode(token, parent) {\n const commentNode = this.treeAdapter.createCommentNode(token.data);\n this.treeAdapter.appendChild(parent, commentNode);\n if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n }\n }\n _insertCharacters(token) {\n let parent;\n let beforeElement;\n if (this._shouldFosterParentOnInsertion()) {\n ({ parent, beforeElement } = this._findFosterParentingLocation());\n if (beforeElement) {\n this.treeAdapter.insertTextBefore(parent, token.chars, beforeElement);\n }\n else {\n this.treeAdapter.insertText(parent, token.chars);\n }\n }\n else {\n parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.insertText(parent, token.chars);\n }\n if (!token.location)\n return;\n const siblings = this.treeAdapter.getChildNodes(parent);\n const textNodeIdx = beforeElement ? siblings.lastIndexOf(beforeElement) : siblings.length;\n const textNode = siblings[textNodeIdx - 1];\n //NOTE: if we have a location assigned by another token, then just update the end position\n const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n if (tnLoc) {\n const { endLine, endCol, endOffset } = token.location;\n this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n }\n else if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n }\n }\n _adoptNodes(donor, recipient) {\n for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {\n this.treeAdapter.detachNode(child);\n this.treeAdapter.appendChild(recipient, child);\n }\n }\n _setEndLocation(element, closingToken) {\n if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) {\n const ctLoc = closingToken.location;\n const tn = this.treeAdapter.getTagName(element);\n const endLoc = \n // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing\n // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.\n closingToken.type === TokenType.END_TAG && tn === closingToken.tagName\n ? {\n endTag: { ...ctLoc },\n endLine: ctLoc.endLine,\n endCol: ctLoc.endCol,\n endOffset: ctLoc.endOffset,\n }\n : {\n endLine: ctLoc.startLine,\n endCol: ctLoc.startCol,\n endOffset: ctLoc.startOffset,\n };\n this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n }\n }\n //Token processing\n shouldProcessStartTagTokenInForeignContent(token) {\n // Check that neither current === document, or ns === NS.HTML\n if (!this.currentNotInHTML)\n return false;\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n }\n else {\n ({ current, currentTagId } = this.openElements);\n }\n if (token.tagID === $.SVG &&\n this.treeAdapter.getTagName(current) === TN.ANNOTATION_XML &&\n this.treeAdapter.getNamespaceURI(current) === NS.MATHML) {\n return false;\n }\n return (\n // Check that `current` is not an integration point for HTML or MathML elements.\n this.tokenizer.inForeignNode ||\n // If it _is_ an integration point, then we might have to check that it is not an HTML\n // integration point.\n ((token.tagID === $.MGLYPH || token.tagID === $.MALIGNMARK) &&\n !this._isIntegrationPoint(currentTagId, current, NS.HTML)));\n }\n _processToken(token) {\n switch (token.type) {\n case TokenType.CHARACTER: {\n this.onCharacter(token);\n break;\n }\n case TokenType.NULL_CHARACTER: {\n this.onNullCharacter(token);\n break;\n }\n case TokenType.COMMENT: {\n this.onComment(token);\n break;\n }\n case TokenType.DOCTYPE: {\n this.onDoctype(token);\n break;\n }\n case TokenType.START_TAG: {\n this._processStartTag(token);\n break;\n }\n case TokenType.END_TAG: {\n this.onEndTag(token);\n break;\n }\n case TokenType.EOF: {\n this.onEof(token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n this.onWhitespaceCharacter(token);\n break;\n }\n }\n }\n //Integration points\n _isIntegrationPoint(tid, element, foreignNS) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n const attrs = this.treeAdapter.getAttrList(element);\n return foreignContent.isIntegrationPoint(tid, ns, attrs, foreignNS);\n }\n //Active formatting elements reconstruction\n _reconstructActiveFormattingElements() {\n const listLength = this.activeFormattingElements.entries.length;\n if (listLength) {\n const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element));\n const unopenIdx = endIndex < 0 ? listLength - 1 : endIndex - 1;\n for (let i = unopenIdx; i >= 0; i--) {\n const entry = this.activeFormattingElements.entries[i];\n this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n entry.element = this.openElements.current;\n }\n }\n }\n //Close elements\n _closeTableCell() {\n this.openElements.generateImpliedEndTags();\n this.openElements.popUntilTableCellPopped();\n this.activeFormattingElements.clearToLastMarker();\n this.insertionMode = InsertionMode.IN_ROW;\n }\n _closePElement() {\n this.openElements.generateImpliedEndTagsWithExclusion($.P);\n this.openElements.popUntilTagNamePopped($.P);\n }\n //Insertion modes\n _resetInsertionMode() {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n //Insertion mode reset map\n switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) {\n case $.TR: {\n this.insertionMode = InsertionMode.IN_ROW;\n return;\n }\n case $.TBODY:\n case $.THEAD:\n case $.TFOOT: {\n this.insertionMode = InsertionMode.IN_TABLE_BODY;\n return;\n }\n case $.CAPTION: {\n this.insertionMode = InsertionMode.IN_CAPTION;\n return;\n }\n case $.COLGROUP: {\n this.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n return;\n }\n case $.TABLE: {\n this.insertionMode = InsertionMode.IN_TABLE;\n return;\n }\n case $.BODY: {\n this.insertionMode = InsertionMode.IN_BODY;\n return;\n }\n case $.FRAMESET: {\n this.insertionMode = InsertionMode.IN_FRAMESET;\n return;\n }\n case $.SELECT: {\n this._resetInsertionModeForSelect(i);\n return;\n }\n case $.TEMPLATE: {\n this.insertionMode = this.tmplInsertionModeStack[0];\n return;\n }\n case $.HTML: {\n this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD;\n return;\n }\n case $.TD:\n case $.TH: {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_CELL;\n return;\n }\n break;\n }\n case $.HEAD: {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_HEAD;\n return;\n }\n break;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_BODY;\n }\n _resetInsertionModeForSelect(selectIdx) {\n if (selectIdx > 0) {\n for (let i = selectIdx - 1; i > 0; i--) {\n const tn = this.openElements.tagIDs[i];\n if (tn === $.TEMPLATE) {\n break;\n }\n else if (tn === $.TABLE) {\n this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE;\n return;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_SELECT;\n }\n //Foster parenting\n _isElementCausesFosterParenting(tn) {\n return TABLE_STRUCTURE_TAGS.has(tn);\n }\n _shouldFosterParentOnInsertion() {\n return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.currentTagId);\n }\n _findFosterParentingLocation() {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n const openElement = this.openElements.items[i];\n switch (this.openElements.tagIDs[i]) {\n case $.TEMPLATE: {\n if (this.treeAdapter.getNamespaceURI(openElement) === NS.HTML) {\n return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null };\n }\n break;\n }\n case $.TABLE: {\n const parent = this.treeAdapter.getParentNode(openElement);\n if (parent) {\n return { parent, beforeElement: openElement };\n }\n return { parent: this.openElements.items[i - 1], beforeElement: null };\n }\n default:\n // Do nothing\n }\n }\n return { parent: this.openElements.items[0], beforeElement: null };\n }\n _fosterParentElement(element) {\n const location = this._findFosterParentingLocation();\n if (location.beforeElement) {\n this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n }\n else {\n this.treeAdapter.appendChild(location.parent, element);\n }\n }\n //Special elements\n _isSpecialElement(element, id) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n return SPECIAL_ELEMENTS[ns].has(id);\n }\n onCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n characterInForeignContent(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE: {\n characterInBody(this, token);\n break;\n }\n case InsertionMode.TEXT:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n characterInTableText(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n onNullCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n nullCharacterInForeignContent(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n onComment(token) {\n this.skipNextNewLine = false;\n if (this.currentNotInHTML) {\n appendComment(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL:\n case InsertionMode.BEFORE_HTML:\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET: {\n appendComment(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n appendCommentToRootHtmlElement(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n appendCommentToDocument(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n onDoctype(token) {\n this.skipNextNewLine = false;\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n doctypeInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD: {\n this._err(token, ERR.misplacedDoctype);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n onStartTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n this._processStartTag(token);\n if (token.selfClosing && !token.ackSelfClosing) {\n this._err(token, ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n }\n }\n /**\n * Processes a given start tag.\n *\n * `onStartTag` checks if a self-closing tag was recognized. When a token\n * is moved inbetween multiple insertion modes, this check for self-closing\n * could lead to false positives. To avoid this, `_processStartTag` is used\n * for nested calls.\n *\n * @param token The token to process.\n */\n _processStartTag(token) {\n if (this.shouldProcessStartTagTokenInForeignContent(token)) {\n startTagInForeignContent(this, token);\n }\n else {\n this._startTagOutsideForeignContent(token);\n }\n }\n _startTagOutsideForeignContent(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n startTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n startTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n startTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n startTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n startTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY: {\n startTagInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE: {\n startTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION: {\n startTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n startTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY: {\n startTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW: {\n startTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL: {\n startTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT: {\n startTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE: {\n startTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n startTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n startTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET: {\n startTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET: {\n startTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n startTagAfterAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n startTagAfterAfterFrameset(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n onEndTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n if (this.currentNotInHTML) {\n endTagInForeignContent(this, token);\n }\n else {\n this._endTagOutsideForeignContent(token);\n }\n }\n _endTagOutsideForeignContent(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n endTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n endTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n endTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n endTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n endTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY: {\n endTagInBody(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n endTagInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE: {\n endTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION: {\n endTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n endTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY: {\n endTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW: {\n endTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL: {\n endTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT: {\n endTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE: {\n endTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n endTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n endTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET: {\n endTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET: {\n endTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n onEof(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE: {\n eofInBody(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n eofInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n eofInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n stopParsing(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n onWhitespaceCharacter(token) {\n if (this.skipNextNewLine) {\n this.skipNextNewLine = false;\n if (token.chars.charCodeAt(0) === unicode.CODE_POINTS.LINE_FEED) {\n if (token.chars.length === 1) {\n return;\n }\n token.chars = token.chars.substr(1);\n }\n }\n if (this.tokenizer.inForeignNode) {\n this._insertCharacters(token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.TEXT:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.AFTER_BODY:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n whitespaceCharacterInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n whitespaceCharacterInTableText(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n}\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n if (formattingElementEntry) {\n if (!p.openElements.contains(formattingElementEntry.element)) {\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n formattingElementEntry = null;\n }\n else if (!p.openElements.hasInScope(token.tagID)) {\n formattingElementEntry = null;\n }\n }\n else {\n genericEndTagInBody(p, token);\n }\n return formattingElementEntry;\n}\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n let furthestBlock = null;\n let idx = p.openElements.stackTop;\n for (; idx >= 0; idx--) {\n const element = p.openElements.items[idx];\n if (element === formattingElementEntry.element) {\n break;\n }\n if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) {\n furthestBlock = element;\n }\n }\n if (!furthestBlock) {\n p.openElements.shortenToLength(idx < 0 ? 0 : idx);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n }\n return furthestBlock;\n}\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n let lastElement = furthestBlock;\n let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\n //NOTE: store the next element for the next loop iteration (it may be deleted from the stack by step 9.5)\n nextElement = p.openElements.getCommonAncestor(element);\n const elementEntry = p.activeFormattingElements.getElementEntry(element);\n const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n if (shouldRemoveFromOpenElements) {\n if (counterOverflow) {\n p.activeFormattingElements.removeEntry(elementEntry);\n }\n p.openElements.remove(element);\n }\n else {\n element = aaRecreateElementFromEntry(p, elementEntry);\n if (lastElement === furthestBlock) {\n p.activeFormattingElements.bookmark = elementEntry;\n }\n p.treeAdapter.detachNode(lastElement);\n p.treeAdapter.appendChild(element, lastElement);\n lastElement = element;\n }\n }\n return lastElement;\n}\n//Step 13.7 of the algorithm\nfunction aaRecreateElementFromEntry(p, elementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(elementEntry.element);\n const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n p.openElements.replace(elementEntry.element, newElement);\n elementEntry.element = newElement;\n return newElement;\n}\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n const tn = p.treeAdapter.getTagName(commonAncestor);\n const tid = getTagID(tn);\n if (p._isElementCausesFosterParenting(tid)) {\n p._fosterParentElement(lastElement);\n }\n else {\n const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n if (tid === $.TEMPLATE && ns === NS.HTML) {\n commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n }\n p.treeAdapter.appendChild(commonAncestor, lastElement);\n }\n}\n//Steps 15-19 of the algorithm\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n const { token } = formattingElementEntry;\n const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n p._adoptNodes(furthestBlock, newElement);\n p.treeAdapter.appendChild(furthestBlock, newElement);\n p.activeFormattingElements.insertElementAfterBookmark(newElement, token);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n p.openElements.remove(formattingElementEntry.element);\n p.openElements.insertAfter(furthestBlock, newElement, token.tagID);\n}\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n const formattingElementEntry = aaObtainFormattingElementEntry(p, token);\n if (!formattingElementEntry) {\n break;\n }\n const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n if (!furthestBlock) {\n break;\n }\n p.activeFormattingElements.bookmark = formattingElementEntry;\n const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n p.treeAdapter.detachNode(lastElement);\n if (commonAncestor)\n aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n }\n}\n//Generic token handlers\n//------------------------------------------------------------------\nfunction appendComment(p, token) {\n p._appendCommentNode(token, p.openElements.currentTmplContentOrNode);\n}\nfunction appendCommentToRootHtmlElement(p, token) {\n p._appendCommentNode(token, p.openElements.items[0]);\n}\nfunction appendCommentToDocument(p, token) {\n p._appendCommentNode(token, p.document);\n}\nfunction stopParsing(p, token) {\n p.stopped = true;\n // NOTE: Set end locations for elements that remain on the open element stack.\n if (token.location) {\n // NOTE: If we are not in a fragment, `html` and `body` will stay on the stack.\n // This is a problem, as we might overwrite their end position here.\n const target = p.fragmentContext ? 0 : 2;\n for (let i = p.openElements.stackTop; i >= target; i--) {\n p._setEndLocation(p.openElements.items[i], token);\n }\n // Handle `html` and `body`\n if (!p.fragmentContext && p.openElements.stackTop >= 0) {\n const htmlElement = p.openElements.items[0];\n const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement);\n if (htmlLocation && !htmlLocation.endTag) {\n p._setEndLocation(htmlElement, token);\n if (p.openElements.stackTop >= 1) {\n const bodyElement = p.openElements.items[1];\n const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement);\n if (bodyLocation && !bodyLocation.endTag) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n }\n }\n}\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n p._setDocumentType(token);\n const mode = token.forceQuirks ? DOCUMENT_MODE.QUIRKS : doctype.getDocumentMode(token);\n if (!doctype.isConforming(token)) {\n p._err(token, ERR.nonConformingDoctype);\n }\n p.treeAdapter.setDocumentMode(p.document, mode);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n}\nfunction tokenInInitialMode(p, token) {\n p._err(token, ERR.missingDoctype, true);\n p.treeAdapter.setDocumentMode(p.document, DOCUMENT_MODE.QUIRKS);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n p._processToken(token);\n}\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n if (token.tagID === $.HTML) {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n }\n else {\n tokenBeforeHtml(p, token);\n }\n}\nfunction endTagBeforeHtml(p, token) {\n const tn = token.tagID;\n if (tn === $.HTML || tn === $.HEAD || tn === $.BODY || tn === $.BR) {\n tokenBeforeHtml(p, token);\n }\n}\nfunction tokenBeforeHtml(p, token) {\n p._insertFakeRootElement();\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n p._processToken(token);\n}\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.HEAD: {\n p._insertElement(token, NS.HTML);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n default: {\n tokenBeforeHead(p, token);\n }\n }\n}\nfunction endTagBeforeHead(p, token) {\n const tn = token.tagID;\n if (tn === $.HEAD || tn === $.BODY || tn === $.HTML || tn === $.BR) {\n tokenBeforeHead(p, token);\n }\n else {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenBeforeHead(p, token) {\n p._insertFakeElement(TN.HEAD, $.HEAD);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.TITLE: {\n p._switchToTextParsing(token, TokenizerMode.RCDATA);\n break;\n }\n case $.NOSCRIPT: {\n if (p.options.scriptingEnabled) {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n }\n else {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT;\n }\n break;\n }\n case $.NOFRAMES:\n case $.STYLE: {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n break;\n }\n case $.SCRIPT: {\n p._switchToTextParsing(token, TokenizerMode.SCRIPT_DATA);\n break;\n }\n case $.TEMPLATE: {\n p._insertTemplate(token);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TEMPLATE;\n p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n break;\n }\n case $.HEAD: {\n p._err(token, ERR.misplacedStartTagForHeadElement);\n break;\n }\n default: {\n tokenInHead(p, token);\n }\n }\n}\nfunction endTagInHead(p, token) {\n switch (token.tagID) {\n case $.HEAD: {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n break;\n }\n case $.BODY:\n case $.BR:\n case $.HTML: {\n tokenInHead(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction templateEndTagInHead(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.generateImpliedEndTagsThoroughly();\n if (p.openElements.currentTagId !== $.TEMPLATE) {\n p._err(token, ERR.closingOfElementWithOpenChildElements);\n }\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n }\n else {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenInHead(p, token) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n p._processToken(token);\n}\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BASEFONT:\n case $.BGSOUND:\n case $.HEAD:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.STYLE: {\n startTagInHead(p, token);\n break;\n }\n case $.NOSCRIPT: {\n p._err(token, ERR.nestedNoscriptInHead);\n break;\n }\n default: {\n tokenInHeadNoScript(p, token);\n }\n }\n}\nfunction endTagInHeadNoScript(p, token) {\n switch (token.tagID) {\n case $.NOSCRIPT: {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n case $.BR: {\n tokenInHeadNoScript(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenInHeadNoScript(p, token) {\n const errCode = token.type === TokenType.EOF ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n p._err(token, errCode);\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BODY: {\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_BODY;\n break;\n }\n case $.FRAMESET: {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n break;\n }\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.SCRIPT:\n case $.STYLE:\n case $.TEMPLATE:\n case $.TITLE: {\n p._err(token, ERR.abandonedHeadElementChild);\n p.openElements.push(p.headElement, $.HEAD);\n startTagInHead(p, token);\n p.openElements.remove(p.headElement);\n break;\n }\n case $.HEAD: {\n p._err(token, ERR.misplacedStartTagForHeadElement);\n break;\n }\n default: {\n tokenAfterHead(p, token);\n }\n }\n}\nfunction endTagAfterHead(p, token) {\n switch (token.tagID) {\n case $.BODY:\n case $.HTML:\n case $.BR: {\n tokenAfterHead(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenAfterHead(p, token) {\n p._insertFakeElement(TN.BODY, $.BODY);\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction modeInBody(p, token) {\n switch (token.type) {\n case TokenType.CHARACTER: {\n characterInBody(p, token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n whitespaceCharacterInBody(p, token);\n break;\n }\n case TokenType.COMMENT: {\n appendComment(p, token);\n break;\n }\n case TokenType.START_TAG: {\n startTagInBody(p, token);\n break;\n }\n case TokenType.END_TAG: {\n endTagInBody(p, token);\n break;\n }\n case TokenType.EOF: {\n eofInBody(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction whitespaceCharacterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n}\nfunction characterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction htmlStartTagInBody(p, token) {\n if (p.openElements.tmplCount === 0) {\n p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n }\n}\nfunction bodyStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement && p.openElements.tmplCount === 0) {\n p.framesetOk = false;\n p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n }\n}\nfunction framesetStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (p.framesetOk && bodyElement) {\n p.treeAdapter.detachNode(bodyElement);\n p.openElements.popAllUpToHtmlElement();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n }\n}\nfunction addressStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction numberedHeaderStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n if (isNumberedHeader(p.openElements.currentTagId)) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction preStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.framesetOk = false;\n}\nfunction formStartTagInBody(p, token) {\n const inTemplate = p.openElements.tmplCount > 0;\n if (!p.formElement || inTemplate) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n if (!inTemplate) {\n p.formElement = p.openElements.current;\n }\n }\n}\nfunction listItemStartTagInBody(p, token) {\n p.framesetOk = false;\n const tn = token.tagID;\n for (let i = p.openElements.stackTop; i >= 0; i--) {\n const elementId = p.openElements.tagIDs[i];\n if ((tn === $.LI && elementId === $.LI) ||\n ((tn === $.DD || tn === $.DT) && (elementId === $.DD || elementId === $.DT))) {\n p.openElements.generateImpliedEndTagsWithExclusion(elementId);\n p.openElements.popUntilTagNamePopped(elementId);\n break;\n }\n if (elementId !== $.ADDRESS &&\n elementId !== $.DIV &&\n elementId !== $.P &&\n p._isSpecialElement(p.openElements.items[i], elementId)) {\n break;\n }\n }\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction plaintextStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n p.tokenizer.state = TokenizerMode.PLAINTEXT;\n}\nfunction buttonStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.BUTTON)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.BUTTON);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n}\nfunction aStartTagInBody(p, token) {\n const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(TN.A);\n if (activeElementEntry) {\n callAdoptionAgency(p, token);\n p.openElements.remove(activeElementEntry.element);\n p.activeFormattingElements.removeEntry(activeElementEntry);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction bStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction nobrStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n if (p.openElements.hasInScope($.NOBR)) {\n callAdoptionAgency(p, token);\n p._reconstructActiveFormattingElements();\n }\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction appletStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n}\nfunction tableStartTagInBody(p, token) {\n if (p.treeAdapter.getDocumentMode(p.document) !== DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TABLE;\n}\nfunction areaStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction isHiddenInput(token) {\n const inputType = getTokenAttr(token, ATTRS.TYPE);\n return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE;\n}\nfunction inputStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n if (!isHiddenInput(token)) {\n p.framesetOk = false;\n }\n token.ackSelfClosing = true;\n}\nfunction paramStartTagInBody(p, token) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n}\nfunction hrStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction imageStartTagInBody(p, token) {\n token.tagName = TN.IMG;\n token.tagID = $.IMG;\n areaStartTagInBody(p, token);\n}\nfunction textareaStartTagInBody(p, token) {\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.tokenizer.state = TokenizerMode.RCDATA;\n p.originalInsertionMode = p.insertionMode;\n p.framesetOk = false;\n p.insertionMode = InsertionMode.TEXT;\n}\nfunction xmpStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._reconstructActiveFormattingElements();\n p.framesetOk = false;\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction iframeStartTagInBody(p, token) {\n p.framesetOk = false;\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\n//NOTE: here we assume that we always act as an user agent with enabled plugins, so we parse\n//<noembed> as rawtext.\nfunction noembedStartTagInBody(p, token) {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction selectStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode =\n p.insertionMode === InsertionMode.IN_TABLE ||\n p.insertionMode === InsertionMode.IN_CAPTION ||\n p.insertionMode === InsertionMode.IN_TABLE_BODY ||\n p.insertionMode === InsertionMode.IN_ROW ||\n p.insertionMode === InsertionMode.IN_CELL\n ? InsertionMode.IN_SELECT_IN_TABLE\n : InsertionMode.IN_SELECT;\n}\nfunction optgroupStartTagInBody(p, token) {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\nfunction rbStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTags();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction rtStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.RTC);\n }\n p._insertElement(token, NS.HTML);\n}\nfunction mathStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n foreignContent.adjustTokenMathMLAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, NS.MATHML);\n }\n else {\n p._insertElement(token, NS.MATHML);\n }\n token.ackSelfClosing = true;\n}\nfunction svgStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n foreignContent.adjustTokenSVGAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, NS.SVG);\n }\n else {\n p._insertElement(token, NS.SVG);\n }\n token.ackSelfClosing = true;\n}\nfunction genericStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\nfunction startTagInBody(p, token) {\n switch (token.tagID) {\n case $.I:\n case $.S:\n case $.B:\n case $.U:\n case $.EM:\n case $.TT:\n case $.BIG:\n case $.CODE:\n case $.FONT:\n case $.SMALL:\n case $.STRIKE:\n case $.STRONG: {\n bStartTagInBody(p, token);\n break;\n }\n case $.A: {\n aStartTagInBody(p, token);\n break;\n }\n case $.H1:\n case $.H2:\n case $.H3:\n case $.H4:\n case $.H5:\n case $.H6: {\n numberedHeaderStartTagInBody(p, token);\n break;\n }\n case $.P:\n case $.DL:\n case $.OL:\n case $.UL:\n case $.DIV:\n case $.DIR:\n case $.NAV:\n case $.MAIN:\n case $.MENU:\n case $.ASIDE:\n case $.CENTER:\n case $.FIGURE:\n case $.FOOTER:\n case $.HEADER:\n case $.HGROUP:\n case $.DIALOG:\n case $.DETAILS:\n case $.ADDRESS:\n case $.ARTICLE:\n case $.SECTION:\n case $.SUMMARY:\n case $.FIELDSET:\n case $.BLOCKQUOTE:\n case $.FIGCAPTION: {\n addressStartTagInBody(p, token);\n break;\n }\n case $.LI:\n case $.DD:\n case $.DT: {\n listItemStartTagInBody(p, token);\n break;\n }\n case $.BR:\n case $.IMG:\n case $.WBR:\n case $.AREA:\n case $.EMBED:\n case $.KEYGEN: {\n areaStartTagInBody(p, token);\n break;\n }\n case $.HR: {\n hrStartTagInBody(p, token);\n break;\n }\n case $.RB:\n case $.RTC: {\n rbStartTagInBody(p, token);\n break;\n }\n case $.RT:\n case $.RP: {\n rtStartTagInBody(p, token);\n break;\n }\n case $.PRE:\n case $.LISTING: {\n preStartTagInBody(p, token);\n break;\n }\n case $.XMP: {\n xmpStartTagInBody(p, token);\n break;\n }\n case $.SVG: {\n svgStartTagInBody(p, token);\n break;\n }\n case $.HTML: {\n htmlStartTagInBody(p, token);\n break;\n }\n case $.BASE:\n case $.LINK:\n case $.META:\n case $.STYLE:\n case $.TITLE:\n case $.SCRIPT:\n case $.BGSOUND:\n case $.BASEFONT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n case $.BODY: {\n bodyStartTagInBody(p, token);\n break;\n }\n case $.FORM: {\n formStartTagInBody(p, token);\n break;\n }\n case $.NOBR: {\n nobrStartTagInBody(p, token);\n break;\n }\n case $.MATH: {\n mathStartTagInBody(p, token);\n break;\n }\n case $.TABLE: {\n tableStartTagInBody(p, token);\n break;\n }\n case $.INPUT: {\n inputStartTagInBody(p, token);\n break;\n }\n case $.PARAM:\n case $.TRACK:\n case $.SOURCE: {\n paramStartTagInBody(p, token);\n break;\n }\n case $.IMAGE: {\n imageStartTagInBody(p, token);\n break;\n }\n case $.BUTTON: {\n buttonStartTagInBody(p, token);\n break;\n }\n case $.APPLET:\n case $.OBJECT:\n case $.MARQUEE: {\n appletStartTagInBody(p, token);\n break;\n }\n case $.IFRAME: {\n iframeStartTagInBody(p, token);\n break;\n }\n case $.SELECT: {\n selectStartTagInBody(p, token);\n break;\n }\n case $.OPTION:\n case $.OPTGROUP: {\n optgroupStartTagInBody(p, token);\n break;\n }\n case $.NOEMBED: {\n noembedStartTagInBody(p, token);\n break;\n }\n case $.FRAMESET: {\n framesetStartTagInBody(p, token);\n break;\n }\n case $.TEXTAREA: {\n textareaStartTagInBody(p, token);\n break;\n }\n case $.NOSCRIPT: {\n if (p.options.scriptingEnabled) {\n noembedStartTagInBody(p, token);\n }\n else {\n genericStartTagInBody(p, token);\n }\n break;\n }\n case $.PLAINTEXT: {\n plaintextStartTagInBody(p, token);\n break;\n }\n case $.COL:\n case $.TH:\n case $.TD:\n case $.TR:\n case $.HEAD:\n case $.FRAME:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.CAPTION:\n case $.COLGROUP: {\n // Ignore token\n break;\n }\n default: {\n genericStartTagInBody(p, token);\n }\n }\n}\nfunction bodyEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n //NOTE: <body> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n}\nfunction htmlEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n endTagAfterBody(p, token);\n }\n}\nfunction addressEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction formEndTagInBody(p) {\n const inTemplate = p.openElements.tmplCount > 0;\n const { formElement } = p;\n if (!inTemplate) {\n p.formElement = null;\n }\n if ((formElement || inTemplate) && p.openElements.hasInScope($.FORM)) {\n p.openElements.generateImpliedEndTags();\n if (inTemplate) {\n p.openElements.popUntilTagNamePopped($.FORM);\n }\n else if (formElement) {\n p.openElements.remove(formElement);\n }\n }\n}\nfunction pEndTagInBody(p) {\n if (!p.openElements.hasInButtonScope($.P)) {\n p._insertFakeElement(TN.P, $.P);\n }\n p._closePElement();\n}\nfunction liEndTagInBody(p) {\n if (p.openElements.hasInListItemScope($.LI)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.LI);\n p.openElements.popUntilTagNamePopped($.LI);\n }\n}\nfunction ddEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tn);\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction numberedHeaderEndTagInBody(p) {\n if (p.openElements.hasNumberedHeaderInScope()) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilNumberedHeaderPopped();\n }\n}\nfunction appletEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n }\n}\nfunction brEndTagInBody(p) {\n p._reconstructActiveFormattingElements();\n p._insertFakeElement(TN.BR, $.BR);\n p.openElements.pop();\n p.framesetOk = false;\n}\nfunction genericEndTagInBody(p, token) {\n const tn = token.tagName;\n const tid = token.tagID;\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n const elementId = p.openElements.tagIDs[i];\n // Compare the tag name here, as the tag might not be a known tag with an ID.\n if (tid === elementId && (tid !== $.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tid);\n if (p.openElements.stackTop >= i)\n p.openElements.shortenToLength(i);\n break;\n }\n if (p._isSpecialElement(element, elementId)) {\n break;\n }\n }\n}\nfunction endTagInBody(p, token) {\n switch (token.tagID) {\n case $.A:\n case $.B:\n case $.I:\n case $.S:\n case $.U:\n case $.EM:\n case $.TT:\n case $.BIG:\n case $.CODE:\n case $.FONT:\n case $.NOBR:\n case $.SMALL:\n case $.STRIKE:\n case $.STRONG: {\n callAdoptionAgency(p, token);\n break;\n }\n case $.P: {\n pEndTagInBody(p);\n break;\n }\n case $.DL:\n case $.UL:\n case $.OL:\n case $.DIR:\n case $.DIV:\n case $.NAV:\n case $.PRE:\n case $.MAIN:\n case $.MENU:\n case $.ASIDE:\n case $.BUTTON:\n case $.CENTER:\n case $.FIGURE:\n case $.FOOTER:\n case $.HEADER:\n case $.HGROUP:\n case $.DIALOG:\n case $.ADDRESS:\n case $.ARTICLE:\n case $.DETAILS:\n case $.SECTION:\n case $.SUMMARY:\n case $.LISTING:\n case $.FIELDSET:\n case $.BLOCKQUOTE:\n case $.FIGCAPTION: {\n addressEndTagInBody(p, token);\n break;\n }\n case $.LI: {\n liEndTagInBody(p);\n break;\n }\n case $.DD:\n case $.DT: {\n ddEndTagInBody(p, token);\n break;\n }\n case $.H1:\n case $.H2:\n case $.H3:\n case $.H4:\n case $.H5:\n case $.H6: {\n numberedHeaderEndTagInBody(p);\n break;\n }\n case $.BR: {\n brEndTagInBody(p);\n break;\n }\n case $.BODY: {\n bodyEndTagInBody(p, token);\n break;\n }\n case $.HTML: {\n htmlEndTagInBody(p, token);\n break;\n }\n case $.FORM: {\n formEndTagInBody(p);\n break;\n }\n case $.APPLET:\n case $.OBJECT:\n case $.MARQUEE: {\n appletEndTagInBody(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n genericEndTagInBody(p, token);\n }\n }\n}\nfunction eofInBody(p, token) {\n if (p.tmplInsertionModeStack.length > 0) {\n eofInTemplate(p, token);\n }\n else {\n stopParsing(p, token);\n }\n}\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n var _a;\n if (token.tagID === $.SCRIPT) {\n (_a = p.scriptHandler) === null || _a === void 0 ? void 0 : _a.call(p, p.openElements.current);\n }\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n}\nfunction eofInText(p, token) {\n p._err(token, ERR.eofInElementThatCanContainOnlyText);\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n p.onEof(token);\n}\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n if (TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) {\n p.pendingCharacterTokens.length = 0;\n p.hasNonWhitespacePendingCharacterToken = false;\n p.originalInsertionMode = p.insertionMode;\n p.insertionMode = InsertionMode.IN_TABLE_TEXT;\n switch (token.type) {\n case TokenType.CHARACTER: {\n characterInTableText(p, token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n whitespaceCharacterInTableText(p, token);\n break;\n }\n // Ignore null\n }\n }\n else {\n tokenInTable(p, token);\n }\n}\nfunction captionStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p.activeFormattingElements.insertMarker();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_CAPTION;\n}\nfunction colgroupStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n}\nfunction colStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(TN.COLGROUP, $.COLGROUP);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n}\nfunction tbodyStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n}\nfunction tdStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(TN.TBODY, $.TBODY);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n}\nfunction tableStartTagInTable(p, token) {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n p._processStartTag(token);\n }\n}\nfunction inputStartTagInTable(p, token) {\n if (isHiddenInput(token)) {\n p._appendElement(token, NS.HTML);\n }\n else {\n tokenInTable(p, token);\n }\n token.ackSelfClosing = true;\n}\nfunction formStartTagInTable(p, token) {\n if (!p.formElement && p.openElements.tmplCount === 0) {\n p._insertElement(token, NS.HTML);\n p.formElement = p.openElements.current;\n p.openElements.pop();\n }\n}\nfunction startTagInTable(p, token) {\n switch (token.tagID) {\n case $.TD:\n case $.TH:\n case $.TR: {\n tdStartTagInTable(p, token);\n break;\n }\n case $.STYLE:\n case $.SCRIPT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n case $.COL: {\n colStartTagInTable(p, token);\n break;\n }\n case $.FORM: {\n formStartTagInTable(p, token);\n break;\n }\n case $.TABLE: {\n tableStartTagInTable(p, token);\n break;\n }\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n tbodyStartTagInTable(p, token);\n break;\n }\n case $.INPUT: {\n inputStartTagInTable(p, token);\n break;\n }\n case $.CAPTION: {\n captionStartTagInTable(p, token);\n break;\n }\n case $.COLGROUP: {\n colgroupStartTagInTable(p, token);\n break;\n }\n default: {\n tokenInTable(p, token);\n }\n }\n}\nfunction endTagInTable(p, token) {\n switch (token.tagID) {\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TBODY:\n case $.TD:\n case $.TFOOT:\n case $.TH:\n case $.THEAD:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n tokenInTable(p, token);\n }\n }\n}\nfunction tokenInTable(p, token) {\n const savedFosterParentingState = p.fosterParentingEnabled;\n p.fosterParentingEnabled = true;\n // Process token in `In Body` mode\n modeInBody(p, token);\n p.fosterParentingEnabled = savedFosterParentingState;\n}\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n}\nfunction characterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n p.hasNonWhitespacePendingCharacterToken = true;\n}\nfunction tokenInTableText(p, token) {\n let i = 0;\n if (p.hasNonWhitespacePendingCharacterToken) {\n for (; i < p.pendingCharacterTokens.length; i++) {\n tokenInTable(p, p.pendingCharacterTokens[i]);\n }\n }\n else {\n for (; i < p.pendingCharacterTokens.length; i++) {\n p._insertCharacters(p.pendingCharacterTokens[i]);\n }\n }\n p.insertionMode = p.originalInsertionMode;\n p._processToken(token);\n}\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nconst TABLE_VOID_ELEMENTS = new Set([$.CAPTION, $.COL, $.COLGROUP, $.TBODY, $.TD, $.TFOOT, $.TH, $.THEAD, $.TR]);\nfunction startTagInCaption(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n }\n else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCaption(p, token) {\n const tn = token.tagID;\n switch (tn) {\n case $.CAPTION:\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n if (tn === $.TABLE) {\n endTagInTable(p, token);\n }\n }\n break;\n }\n case $.BODY:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TBODY:\n case $.TD:\n case $.TFOOT:\n case $.TH:\n case $.THEAD:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.COL: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n default: {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction endTagInColumnGroup(p, token) {\n switch (token.tagID) {\n case $.COLGROUP: {\n if (p.openElements.currentTagId === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n case $.COL: {\n // Ignore token\n break;\n }\n default: {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction tokenInColumnGroup(p, token) {\n if (p.openElements.currentTagId === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n p._processToken(token);\n }\n}\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n switch (token.tagID) {\n case $.TR: {\n p.openElements.clearBackToTableBodyContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_ROW;\n break;\n }\n case $.TH:\n case $.TD: {\n p.openElements.clearBackToTableBodyContext();\n p._insertFakeElement(TN.TR, $.TR);\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n break;\n }\n default: {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInTableBody(p, token) {\n const tn = token.tagID;\n switch (token.tagID) {\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case $.TABLE: {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n endTagInTable(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TD:\n case $.TH:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n switch (token.tagID) {\n case $.TH:\n case $.TD: {\n p.openElements.clearBackToTableRowContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_CELL;\n p.activeFormattingElements.insertMarker();\n break;\n }\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.TR: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n }\n break;\n }\n default: {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInRow(p, token) {\n switch (token.tagID) {\n case $.TR: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n }\n break;\n }\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TD:\n case $.TH: {\n // Ignore end tag\n break;\n }\n default: {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope($.TD) || p.openElements.hasInTableScope($.TH)) {\n p._closeTableCell();\n startTagInRow(p, token);\n }\n }\n else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCell(p, token) {\n const tn = token.tagID;\n switch (tn) {\n case $.TD:\n case $.TH: {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_ROW;\n }\n break;\n }\n case $.TABLE:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.TR: {\n if (p.openElements.hasInTableScope(tn)) {\n p._closeTableCell();\n endTagInRow(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML: {\n // Ignore token\n break;\n }\n default: {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.OPTION: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.OPTGROUP: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.INPUT:\n case $.KEYGEN:\n case $.TEXTAREA:\n case $.SELECT: {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n if (token.tagID !== $.SELECT) {\n p._processStartTag(token);\n }\n }\n break;\n }\n case $.SCRIPT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagInSelect(p, token) {\n switch (token.tagID) {\n case $.OPTGROUP: {\n if (p.openElements.stackTop > 0 &&\n p.openElements.currentTagId === $.OPTION &&\n p.openElements.tagIDs[p.openElements.stackTop - 1] === $.OPTGROUP) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n break;\n }\n case $.OPTION: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n break;\n }\n case $.SELECT: {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\n// The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p._processStartTag(token);\n }\n else {\n startTagInSelect(p, token);\n }\n}\nfunction endTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p.onEndTag(token);\n }\n }\n else {\n endTagInSelect(p, token);\n }\n}\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n switch (token.tagID) {\n // First, handle tags that can start without a mode change\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.SCRIPT:\n case $.STYLE:\n case $.TEMPLATE:\n case $.TITLE: {\n startTagInHead(p, token);\n break;\n }\n // Re-process the token in the appropriate mode\n case $.CAPTION:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE;\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n break;\n }\n case $.COL: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP;\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n break;\n }\n case $.TR: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY;\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n break;\n }\n case $.TD:\n case $.TH: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW;\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n default: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY;\n p.insertionMode = InsertionMode.IN_BODY;\n startTagInBody(p, token);\n }\n }\n}\nfunction endTagInTemplate(p, token) {\n if (token.tagID === $.TEMPLATE) {\n templateEndTagInHead(p, token);\n }\n}\nfunction eofInTemplate(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n p.onEof(token);\n }\n else {\n stopParsing(p, token);\n }\n}\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n if (token.tagID === $.HTML) {\n startTagInBody(p, token);\n }\n else {\n tokenAfterBody(p, token);\n }\n}\nfunction endTagAfterBody(p, token) {\n var _a;\n if (token.tagID === $.HTML) {\n if (!p.fragmentContext) {\n p.insertionMode = InsertionMode.AFTER_AFTER_BODY;\n }\n //NOTE: <html> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === $.HTML) {\n p._setEndLocation(p.openElements.items[0], token);\n // Update the body element, if it doesn't have an end tag\n const bodyElement = p.openElements.items[1];\n if (bodyElement && !((_a = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a === void 0 ? void 0 : _a.endTag)) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n else {\n tokenAfterBody(p, token);\n }\n}\nfunction tokenAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.FRAMESET: {\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.FRAME: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagInFrameset(p, token) {\n if (token.tagID === $.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n p.openElements.pop();\n if (!p.fragmentContext && p.openElements.currentTagId !== $.FRAMESET) {\n p.insertionMode = InsertionMode.AFTER_FRAMESET;\n }\n }\n}\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagAfterFrameset(p, token) {\n if (token.tagID === $.HTML) {\n p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET;\n }\n}\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n if (token.tagID === $.HTML) {\n startTagInBody(p, token);\n }\n else {\n tokenAfterAfterBody(p, token);\n }\n}\nfunction tokenAfterAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\n// The rules for parsing tokens in foreign content\n//------------------------------------------------------------------\nfunction nullCharacterInForeignContent(p, token) {\n token.chars = unicode.REPLACEMENT_CHARACTER;\n p._insertCharacters(token);\n}\nfunction characterInForeignContent(p, token) {\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction popUntilHtmlOrIntegrationPoint(p) {\n while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML &&\n !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) {\n p.openElements.pop();\n }\n}\nfunction startTagInForeignContent(p, token) {\n if (foreignContent.causesExit(token)) {\n popUntilHtmlOrIntegrationPoint(p);\n p._startTagOutsideForeignContent(token);\n }\n else {\n const current = p._getAdjustedCurrentElement();\n const currentNs = p.treeAdapter.getNamespaceURI(current);\n if (currentNs === NS.MATHML) {\n foreignContent.adjustTokenMathMLAttrs(token);\n }\n else if (currentNs === NS.SVG) {\n foreignContent.adjustTokenSVGTagName(token);\n foreignContent.adjustTokenSVGAttrs(token);\n }\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, currentNs);\n }\n else {\n p._insertElement(token, currentNs);\n }\n token.ackSelfClosing = true;\n }\n}\nfunction endTagInForeignContent(p, token) {\n if (token.tagID === $.P || token.tagID === $.BR) {\n popUntilHtmlOrIntegrationPoint(p);\n p._endTagOutsideForeignContent(token);\n return;\n }\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) {\n p._endTagOutsideForeignContent(token);\n break;\n }\n const tagName = p.treeAdapter.getTagName(element);\n if (tagName.toLowerCase() === token.tagName) {\n //NOTE: update the token tag name for `_setEndLocation`.\n token.tagName = tagName;\n p.openElements.shortenToLength(i);\n break;\n }\n }\n}\n//# sourceMappingURL=index.js.map", null, "import { TAG_NAMES as $, NS, hasUnescapedText } from '../common/html.js';\nimport { escapeText, escapeAttribute } from 'entities/lib/escape.js';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\n// Sets\nconst VOID_ELEMENTS = new Set([\n $.AREA,\n $.BASE,\n $.BASEFONT,\n $.BGSOUND,\n $.BR,\n $.COL,\n $.EMBED,\n $.FRAME,\n $.HR,\n $.IMG,\n $.INPUT,\n $.KEYGEN,\n $.LINK,\n $.META,\n $.PARAM,\n $.SOURCE,\n $.TRACK,\n $.WBR,\n]);\nfunction isVoidElement(node, options) {\n return (options.treeAdapter.isElementNode(node) &&\n options.treeAdapter.getNamespaceURI(node) === NS.HTML &&\n VOID_ELEMENTS.has(options.treeAdapter.getTagName(node)));\n}\nconst defaultOpts = { treeAdapter: defaultTreeAdapter, scriptingEnabled: true };\n/**\n * Serializes an AST node to an HTML string.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * // Serializes a document.\n * const html = parse5.serialize(document);\n *\n * // Serializes the <html> element content.\n * const str = parse5.serialize(document.childNodes[1]);\n *\n * console.log(str); //> '<head></head><body>Hi there!</body>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serialize(node, options) {\n const opts = { ...defaultOpts, ...options };\n if (isVoidElement(node, opts)) {\n return '';\n }\n return serializeChildNodes(node, opts);\n}\n/**\n * Serializes an AST element node to an HTML string, including the element node.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parseFragment('<div>Hello, <b>world</b>!</div>');\n *\n * // Serializes the <div> element.\n * const html = parse5.serializeOuter(document.childNodes[0]);\n *\n * console.log(str); //> '<div>Hello, <b>world</b>!</div>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serializeOuter(node, options) {\n const opts = { ...defaultOpts, ...options };\n return serializeNode(node, opts);\n}\nfunction serializeChildNodes(parentNode, options) {\n let html = '';\n // Get container of the child nodes\n const container = options.treeAdapter.isElementNode(parentNode) &&\n options.treeAdapter.getTagName(parentNode) === $.TEMPLATE &&\n options.treeAdapter.getNamespaceURI(parentNode) === NS.HTML\n ? options.treeAdapter.getTemplateContent(parentNode)\n : parentNode;\n const childNodes = options.treeAdapter.getChildNodes(container);\n if (childNodes) {\n for (const currentNode of childNodes) {\n html += serializeNode(currentNode, options);\n }\n }\n return html;\n}\nfunction serializeNode(node, options) {\n if (options.treeAdapter.isElementNode(node)) {\n return serializeElement(node, options);\n }\n if (options.treeAdapter.isTextNode(node)) {\n return serializeTextNode(node, options);\n }\n if (options.treeAdapter.isCommentNode(node)) {\n return serializeCommentNode(node, options);\n }\n if (options.treeAdapter.isDocumentTypeNode(node)) {\n return serializeDocumentTypeNode(node, options);\n }\n // Return an empty string for unknown nodes\n return '';\n}\nfunction serializeElement(node, options) {\n const tn = options.treeAdapter.getTagName(node);\n return `<${tn}${serializeAttributes(node, options)}>${isVoidElement(node, options) ? '' : `${serializeChildNodes(node, options)}</${tn}>`}`;\n}\nfunction serializeAttributes(node, { treeAdapter }) {\n let html = '';\n for (const attr of treeAdapter.getAttrList(node)) {\n html += ' ';\n if (!attr.namespace) {\n html += attr.name;\n }\n else\n switch (attr.namespace) {\n case NS.XML: {\n html += `xml:${attr.name}`;\n break;\n }\n case NS.XMLNS: {\n if (attr.name !== 'xmlns') {\n html += 'xmlns:';\n }\n html += attr.name;\n break;\n }\n case NS.XLINK: {\n html += `xlink:${attr.name}`;\n break;\n }\n default: {\n html += `${attr.prefix}:${attr.name}`;\n }\n }\n html += `=\"${escapeAttribute(attr.value)}\"`;\n }\n return html;\n}\nfunction serializeTextNode(node, options) {\n const { treeAdapter } = options;\n const content = treeAdapter.getTextNodeContent(node);\n const parent = treeAdapter.getParentNode(node);\n const parentTn = parent && treeAdapter.isElementNode(parent) && treeAdapter.getTagName(parent);\n return parentTn &&\n treeAdapter.getNamespaceURI(parent) === NS.HTML &&\n hasUnescapedText(parentTn, options.scriptingEnabled)\n ? content\n : escapeText(content);\n}\nfunction serializeCommentNode(node, { treeAdapter }) {\n return `<!--${treeAdapter.getCommentNodeContent(node)}-->`;\n}\nfunction serializeDocumentTypeNode(node, { treeAdapter }) {\n return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`;\n}\n//# sourceMappingURL=index.js.map", "import { Parser } from './parser/index.js';\nexport { defaultTreeAdapter } from './tree-adapters/default.js';\nexport { /** @internal */ Parser } from './parser/index.js';\nexport { serialize, serializeOuter } from './serializer/index.js';\nexport { ERR as ErrorCodes } from './common/error-codes.js';\n/** @internal */\nexport * as foreignContent from './common/foreign-content.js';\n/** @internal */\nexport * as html from './common/html.js';\n/** @internal */\nexport * as Token from './common/token.js';\n/** @internal */\nexport { Tokenizer, TokenizerMode } from './tokenizer/index.js';\n// Shorthands\n/**\n * Parses an HTML string.\n *\n * @param html Input HTML string.\n * @param options Parsing options.\n * @returns Document\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * console.log(document.childNodes[1].tagName); //> 'html'\n *```\n */\nexport function parse(html, options) {\n return Parser.parse(html, options);\n}\nexport function parseFragment(fragmentContext, html, options) {\n if (typeof fragmentContext === 'string') {\n options = html;\n html = fragmentContext;\n fragmentContext = null;\n }\n const parser = Parser.getFragmentParser(fragmentContext, options);\n parser.tokenizer.write(html, true);\n return parser.getFragment();\n}\n//# sourceMappingURL=index.js.map"],
"mappings": "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",
"names": ["CODE_POINTS", "ERR", "TokenType", "_a", "CharCodes", "BinTrieFlags", "EntityDecoderState", "DecodingMode", "_a", "NS", "ATTRS", "DOCUMENT_MODE", "TAG_NAMES", "TAG_ID", "_a", "State", "isAsciiAlphaNumeric", "isEntityInAttributeInvalidEnd", "_a", "EntryType", "entry", "InsertionMode", "_a"]
}