{"version":3,"file":"Hero.43a099e2.js","sources":["../../../../../../node_modules/svelte/src/runtime/internal/spread.js","../../../../../../src/lib/components/Bleed.svelte","../../../../../../src/lib/assets/icons/caution.svelte","../../../../../../src/lib/assets/icons/chevron-down.svelte","../../../../../../src/lib/assets/icons/chevron-left.svelte","../../../../../../src/lib/assets/icons/chevron-right.svelte","../../../../../../src/lib/assets/icons/chevron-up.svelte","../../../../../../src/lib/assets/icons/chevron-back-to-top.svelte","../../../../../../src/lib/assets/icons/check.svelte","../../../../../../src/lib/assets/icons/close.svelte","../../../../../../src/lib/assets/icons/confirm.svelte","../../../../../../src/lib/assets/icons/dollar.svelte","../../../../../../src/lib/assets/icons/download.svelte","../../../../../../src/lib/assets/icons/error.svelte","../../../../../../src/lib/assets/icons/euro.svelte","../../../../../../src/lib/assets/icons/external.svelte","../../../../../../src/lib/assets/icons/facebook.svelte","../../../../../../src/lib/assets/icons/favorite.svelte","../../../../../../src/lib/assets/icons/filter.svelte","../../../../../../src/lib/assets/icons/info.svelte","../../../../../../src/lib/assets/icons/instagram.svelte","../../../../../../src/lib/assets/icons/invisible.svelte","../../../../../../src/lib/assets/icons/link.svelte","../../../../../../src/lib/assets/icons/linkedin.svelte","../../../../../../src/lib/assets/icons/menu.svelte","../../../../../../src/lib/assets/icons/minus.svelte","../../../../../../src/lib/assets/icons/of-dark.svelte","../../../../../../src/lib/assets/icons/of.svelte","../../../../../../src/lib/assets/icons/plus.svelte","../../../../../../src/lib/assets/icons/pound.svelte","../../../../../../src/lib/assets/icons/store.svelte","../../../../../../src/lib/assets/icons/twitter.svelte","../../../../../../src/lib/assets/icons/visible.svelte","../../../../../../src/lib/assets/icons/yen.svelte","../../../../../../src/lib/assets/icons/youtube.svelte","../../../../../../src/lib/components/Icon.svelte","../../../../../../src/lib/utilities/url-helpers.js","../../../../../../src/lib/components/Button.svelte","../../../../../../src/lib/components/ExternalLinkLabel.svelte","../../../../../../node_modules/svelte/src/runtime/transition/index.js","../../../../../../node_modules/marked/lib/marked.esm.js","../../../../../../node_modules/linkedom/esm/shared/symbols.js","../../../../../../node_modules/entities/lib/esm/generated/decode-data-html.js","../../../../../../node_modules/entities/lib/esm/generated/decode-data-xml.js","../../../../../../node_modules/entities/lib/esm/decode_codepoint.js","../../../../../../node_modules/entities/lib/esm/decode.js","../../../../../../node_modules/htmlparser2/lib/esm/Tokenizer.js","../../../../../../node_modules/htmlparser2/lib/esm/Parser.js","../../../../../../node_modules/domelementtype/lib/esm/index.js","../../../../../../node_modules/domhandler/lib/esm/node.js","../../../../../../node_modules/domhandler/lib/esm/index.js","../../../../../../node_modules/entities/lib/esm/escape.js","../../../../../../node_modules/dom-serializer/lib/esm/foreignNames.js","../../../../../../node_modules/dom-serializer/lib/esm/index.js","../../../../../../node_modules/domutils/lib/esm/stringify.js","../../../../../../node_modules/domutils/lib/esm/traversal.js","../../../../../../node_modules/domutils/lib/esm/manipulation.js","../../../../../../node_modules/domutils/lib/esm/querying.js","../../../../../../node_modules/domutils/lib/esm/legacy.js","../../../../../../node_modules/domutils/lib/esm/helpers.js","../../../../../../node_modules/domutils/lib/esm/feeds.js","../../../../../../node_modules/htmlparser2/lib/esm/index.js","../../../../../../node_modules/linkedom/esm/shared/constants.js","../../../../../../node_modules/linkedom/esm/shared/object.js","../../../../../../node_modules/linkedom/esm/shared/utils.js","../../../../../../node_modules/linkedom/esm/shared/shadow-roots.js","../../../../../../node_modules/linkedom/esm/interface/custom-element-registry.js","../../../../../../node_modules/linkedom/esm/shared/parse-from-string.js","../../../../../../node_modules/linkedom/esm/shared/register-html-class.js","../../../../../../__vite-browser-external","../../../../../../node_modules/linkedom/commonjs/perf_hooks.cjs","../../../../../../node_modules/linkedom/esm/shared/jsdon.js","../../../../../../node_modules/linkedom/esm/interface/mutation-observer.js","../../../../../../node_modules/linkedom/esm/shared/attributes.js","../../../../../../node_modules/linkedom/esm/interface/event-target.js","../../../../../../node_modules/linkedom/esm/interface/node-list.js","../../../../../../node_modules/linkedom/esm/interface/node.js","../../../../../../node_modules/linkedom/esm/interface/attr.js","../../../../../../node_modules/linkedom/esm/shared/node.js","../../../../../../node_modules/linkedom/esm/mixin/non-document-type-child-node.js","../../../../../../node_modules/linkedom/esm/mixin/child-node.js","../../../../../../node_modules/linkedom/esm/interface/character-data.js","../../../../../../node_modules/linkedom/esm/interface/comment.js","../../../../../../node_modules/boolbase/index.js","../../../../../../node_modules/css-what/lib/es/types.js","../../../../../../node_modules/css-what/lib/es/parse.js","../../../../../../node_modules/css-select/lib/esm/sort.js","../../../../../../node_modules/css-select/lib/esm/attributes.js","../../../../../../node_modules/nth-check/lib/esm/parse.js","../../../../../../node_modules/nth-check/lib/esm/compile.js","../../../../../../node_modules/nth-check/lib/esm/index.js","../../../../../../node_modules/css-select/lib/esm/pseudo-selectors/filters.js","../../../../../../node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js","../../../../../../node_modules/css-select/lib/esm/pseudo-selectors/aliases.js","../../../../../../node_modules/css-select/lib/esm/pseudo-selectors/subselects.js","../../../../../../node_modules/css-select/lib/esm/pseudo-selectors/index.js","../../../../../../node_modules/css-select/lib/esm/general.js","../../../../../../node_modules/css-select/lib/esm/compile.js","../../../../../../node_modules/css-select/lib/esm/index.js","../../../../../../node_modules/linkedom/esm/shared/matches.js","../../../../../../node_modules/linkedom/esm/shared/text-escaper.js","../../../../../../node_modules/linkedom/esm/interface/text.js","../../../../../../node_modules/linkedom/esm/mixin/parent-node.js","../../../../../../node_modules/linkedom/esm/mixin/non-element-parent-node.js","../../../../../../node_modules/linkedom/esm/interface/document-fragment.js","../../../../../../node_modules/linkedom/esm/interface/document-type.js","../../../../../../node_modules/linkedom/esm/mixin/inner-html.js","../../../../../../node_modules/uhyphen/esm/index.js","../../../../../../node_modules/linkedom/esm/dom/string-map.js","../../../../../../node_modules/linkedom/esm/dom/token-list.js","../../../../../../node_modules/linkedom/esm/interface/css-style-declaration.js","../../../../../../node_modules/linkedom/esm/interface/event.js","../../../../../../node_modules/linkedom/esm/interface/named-node-map.js","../../../../../../node_modules/linkedom/esm/interface/shadow-root.js","../../../../../../node_modules/linkedom/esm/interface/element.js","../../../../../../node_modules/linkedom/esm/svg/element.js","../../../../../../node_modules/linkedom/esm/shared/facades.js","../../../../../../node_modules/linkedom/esm/html/element.js","../../../../../../node_modules/linkedom/esm/html/template-element.js","../../../../../../node_modules/linkedom/esm/html/html-element.js","../../../../../../node_modules/linkedom/esm/html/text-element.js","../../../../../../node_modules/linkedom/esm/html/script-element.js","../../../../../../node_modules/linkedom/esm/html/frame-element.js","../../../../../../node_modules/linkedom/esm/html/i-frame-element.js","../../../../../../node_modules/linkedom/esm/html/object-element.js","../../../../../../node_modules/linkedom/esm/html/head-element.js","../../../../../../node_modules/linkedom/esm/html/body-element.js","../../../../../../node_modules/cssom/lib/StyleSheet.js","../../../../../../node_modules/cssom/lib/CSSRule.js","../../../../../../node_modules/cssom/lib/CSSStyleRule.js","../../../../../../node_modules/cssom/lib/CSSStyleSheet.js","../../../../../../node_modules/cssom/lib/MediaList.js","../../../../../../node_modules/cssom/lib/CSSImportRule.js","../../../../../../node_modules/cssom/lib/CSSGroupingRule.js","../../../../../../node_modules/cssom/lib/CSSConditionRule.js","../../../../../../node_modules/cssom/lib/CSSMediaRule.js","../../../../../../node_modules/cssom/lib/CSSSupportsRule.js","../../../../../../node_modules/cssom/lib/CSSFontFaceRule.js","../../../../../../node_modules/cssom/lib/CSSHostRule.js","../../../../../../node_modules/cssom/lib/CSSKeyframeRule.js","../../../../../../node_modules/cssom/lib/CSSKeyframesRule.js","../../../../../../node_modules/cssom/lib/CSSValue.js","../../../../../../node_modules/cssom/lib/CSSValueExpression.js","../../../../../../node_modules/cssom/lib/MatcherList.js","../../../../../../node_modules/cssom/lib/CSSDocumentRule.js","../../../../../../node_modules/cssom/lib/parse.js","../../../../../../node_modules/cssom/lib/CSSStyleDeclaration.js","../../../../../../node_modules/cssom/lib/clone.js","../../../../../../node_modules/cssom/lib/index.js","../../../../../../node_modules/linkedom/esm/html/style-element.js","../../../../../../node_modules/linkedom/esm/html/time-element.js","../../../../../../node_modules/linkedom/esm/html/field-set-element.js","../../../../../../node_modules/linkedom/esm/html/embed-element.js","../../../../../../node_modules/linkedom/esm/html/hr-element.js","../../../../../../node_modules/linkedom/esm/html/progress-element.js","../../../../../../node_modules/linkedom/esm/html/paragraph-element.js","../../../../../../node_modules/linkedom/esm/html/table-element.js","../../../../../../node_modules/linkedom/esm/html/frame-set-element.js","../../../../../../node_modules/linkedom/esm/html/li-element.js","../../../../../../node_modules/linkedom/esm/html/base-element.js","../../../../../../node_modules/linkedom/esm/html/data-list-element.js","../../../../../../node_modules/linkedom/esm/html/input-element.js","../../../../../../node_modules/linkedom/esm/html/param-element.js","../../../../../../node_modules/linkedom/esm/html/media-element.js","../../../../../../node_modules/linkedom/esm/html/audio-element.js","../../../../../../node_modules/linkedom/esm/html/heading-element.js","../../../../../../node_modules/linkedom/esm/html/directory-element.js","../../../../../../node_modules/linkedom/esm/html/quote-element.js","../../../../../../node_modules/linkedom/commonjs/canvas-shim.cjs","../../../../../../node_modules/linkedom/commonjs/canvas.cjs","../../../../../../node_modules/linkedom/esm/html/canvas-element.js","../../../../../../node_modules/linkedom/esm/html/legend-element.js","../../../../../../node_modules/linkedom/esm/html/option-element.js","../../../../../../node_modules/linkedom/esm/html/span-element.js","../../../../../../node_modules/linkedom/esm/html/meter-element.js","../../../../../../node_modules/linkedom/esm/html/video-element.js","../../../../../../node_modules/linkedom/esm/html/table-cell-element.js","../../../../../../node_modules/linkedom/esm/html/title-element.js","../../../../../../node_modules/linkedom/esm/html/output-element.js","../../../../../../node_modules/linkedom/esm/html/table-row-element.js","../../../../../../node_modules/linkedom/esm/html/data-element.js","../../../../../../node_modules/linkedom/esm/html/menu-element.js","../../../../../../node_modules/linkedom/esm/html/select-element.js","../../../../../../node_modules/linkedom/esm/html/br-element.js","../../../../../../node_modules/linkedom/esm/html/button-element.js","../../../../../../node_modules/linkedom/esm/html/map-element.js","../../../../../../node_modules/linkedom/esm/html/opt-group-element.js","../../../../../../node_modules/linkedom/esm/html/d-list-element.js","../../../../../../node_modules/linkedom/esm/html/text-area-element.js","../../../../../../node_modules/linkedom/esm/html/font-element.js","../../../../../../node_modules/linkedom/esm/html/div-element.js","../../../../../../node_modules/linkedom/esm/html/link-element.js","../../../../../../node_modules/linkedom/esm/html/slot-element.js","../../../../../../node_modules/linkedom/esm/html/form-element.js","../../../../../../node_modules/linkedom/esm/html/image-element.js","../../../../../../node_modules/linkedom/esm/html/pre-element.js","../../../../../../node_modules/linkedom/esm/html/u-list-element.js","../../../../../../node_modules/linkedom/esm/html/meta-element.js","../../../../../../node_modules/linkedom/esm/html/picture-element.js","../../../../../../node_modules/linkedom/esm/html/area-element.js","../../../../../../node_modules/linkedom/esm/html/o-list-element.js","../../../../../../node_modules/linkedom/esm/html/table-caption-element.js","../../../../../../node_modules/linkedom/esm/html/anchor-element.js","../../../../../../node_modules/linkedom/esm/html/label-element.js","../../../../../../node_modules/linkedom/esm/html/unknown-element.js","../../../../../../node_modules/linkedom/esm/html/mod-element.js","../../../../../../node_modules/linkedom/esm/html/details-element.js","../../../../../../node_modules/linkedom/esm/html/source-element.js","../../../../../../node_modules/linkedom/esm/html/track-element.js","../../../../../../node_modules/linkedom/esm/html/marquee-element.js","../../../../../../node_modules/linkedom/esm/shared/html-classes.js","../../../../../../node_modules/linkedom/esm/shared/mime.js","../../../../../../node_modules/linkedom/esm/interface/custom-event.js","../../../../../../node_modules/linkedom/esm/interface/input-event.js","../../../../../../node_modules/linkedom/esm/interface/image.js","../../../../../../node_modules/linkedom/esm/interface/range.js","../../../../../../node_modules/linkedom/esm/interface/tree-walker.js","../../../../../../node_modules/linkedom/esm/interface/document.js","../../../../../../node_modules/linkedom/esm/index.js","../../../../../../src/lib/utilities/dom-helpers.js","../../../../../../src/lib/components/Markdown.svelte","../../../../../../src/lib/components/Image.svelte","../../../../../../src/lib/contentTypes/ImageComponent.svelte","../../../../../../node_modules/dompurify/dist/purify.js","../../../../../../node_modules/isomorphic-dompurify/browser.js","../../../../../../src/lib/utilities/components/markdown.js","../../../../../../src/lib/utilities/components/image-helpers.js","../../../../../../src/lib/components/Heading.svelte","../../../../../../src/lib/components/SocialBar.svelte","../../../../../../src/lib/components/Page/PageTitle.svelte","../../../../../../src/lib/components/Eyebrow.svelte","../../../../../../src/lib/components/Hero/Hero.svelte"],"sourcesContent":["/** @returns {{}} */\nexport function get_spread_update(levels, updates) {\n\tconst update = {};\n\tconst to_null_out = {};\n\tconst accounted_for = { $$scope: 1 };\n\tlet i = levels.length;\n\twhile (i--) {\n\t\tconst o = levels[i];\n\t\tconst n = updates[i];\n\t\tif (n) {\n\t\t\tfor (const key in o) {\n\t\t\t\tif (!(key in n)) to_null_out[key] = 1;\n\t\t\t}\n\t\t\tfor (const key in n) {\n\t\t\t\tif (!accounted_for[key]) {\n\t\t\t\t\tupdate[key] = n[key];\n\t\t\t\t\taccounted_for[key] = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlevels[i] = n;\n\t\t} else {\n\t\t\tfor (const key in o) {\n\t\t\t\taccounted_for[key] = 1;\n\t\t\t}\n\t\t}\n\t}\n\tfor (const key in to_null_out) {\n\t\tif (!(key in update)) update[key] = undefined;\n\t}\n\treturn update;\n}\n\nexport function get_spread_object(spread_props) {\n\treturn typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n","\n\n
\n \n \n
\n \n
\n
\n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n \n \n \n \n\n","\n\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n","\n \n\n","\n \n \n\n","\n \n\n","\n \n\n","\n\n{#if inheritSize}\n \n{:else}\n \n{/if}\n","export function getUrlObject(url) {\n if (!url || url.startsWith(\"/\") || url.startsWith(\"?\")) {\n return null;\n }\n\n try {\n const urlObj = new URL(url);\n return urlObj;\n } catch (e) {\n console.warn(`can't convert \"${url}\" to URL object`);\n return null;\n }\n}\n\nexport function isExternalUrl(url, currentOrigin) {\n if (!url || url.startsWith(\"/\") || url.startsWith(\"?\")) {\n return false;\n }\n\n const urlObj = getUrlObject(url);\n if (urlObj) {\n const targetOrigin = urlObj.origin;\n if (\n targetOrigin === \"https://www.obama.org\" ||\n targetOrigin === \"http://www.obama.org\" ||\n targetOrigin === \"https://obama.org\"\n ) {\n return false;\n }\n return targetOrigin !== currentOrigin;\n }\n // Default to the link being external if we can't figure out the origin\n return true;\n}\n\n/*\n correctedUrl \n a) makes internal full links relative (So www.obama.org/about becomes /about, so sveltekit will render page on static build)\n b) adds trailing slash if not \n*/\nexport function correctedUrl(url) {\n let isExternal = isExternalUrl(url);\n if (!isExternal) {\n const urlObj = getUrlObject(url);\n if (urlObj) {\n url = urlObj.pathname;\n }\n }\n return isMissingTrailingSlash(url) ? `${url}/` : url;\n}\n\nexport function isNotStaticFile(url) {\n const types = [\".pdf\", \".mp4\", \".html\", \".jpg\", \".jpeg\", \".png\", \".csv\", \".zip\"];\n return !types.some((type) => url.includes(type));\n}\n\nexport function isRootRelative(url) {\n return url.startsWith(\"/\");\n}\n\nexport function hasNoTrailingSlash(url) {\n return !url.endsWith(\"/\") && !url.match(/(\\/)?#.*$/) && !url.match(/(\\/)?\\?.*$/);\n}\n\nexport function isMissingTrailingSlash(url) {\n return !!url && isNotStaticFile(url) && isRootRelative(url) && hasNoTrailingSlash(url);\n}\n","\n\n\n {\n dispatch(\"urlDispatch\", {\n url\n });\n }}\n class=\"{getVariantClasses()} {getSizeClasses()} {clazz}\"\n style={!disabled ? getRippleColors() : null}\n data-testid={testid}\n {...$$restProps}\n target={isExternal ? \"_blank\" : null}\n rel={isExternal ? \"noopener noreferrer\" : null}\n {id}\n>\n {#if !!icon?.type && icon?.leading}\n \n {/if}\n \n {#if !!icon?.type && icon?.trailing && (!isExternal || variant == \"donate\")}\n \n {/if}\n {#if url && isExternal && variant !== \"donate\"}\n \n {/if}\n\n\n\n","\n\n\n\n\n\n {#if text}\n \n {reducedText}\n \n \n \n {lastWord}\n \n \n \n {/if}\n\nOpens in a new tab\n\n\n\n","import { cubicOut, cubicInOut, linear } from '../easing/index.js';\nimport { assign, split_css_unit, is_function } from '../internal/index.js';\n\n/**\n * Animates a `blur` filter alongside an element's opacity.\n *\n * https://svelte.dev/docs/svelte-transition#blur\n * @param {Element} node\n * @param {import('./public').BlurParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function blur(\n\tnode,\n\t{ delay = 0, duration = 400, easing = cubicInOut, amount = 5, opacity = 0 } = {}\n) {\n\tconst style = getComputedStyle(node);\n\tconst target_opacity = +style.opacity;\n\tconst f = style.filter === 'none' ? '' : style.filter;\n\tconst od = target_opacity * (1 - opacity);\n\tconst [value, unit] = split_css_unit(amount);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (_t, u) => `opacity: ${target_opacity - od * u}; filter: ${f} blur(${u * value}${unit});`\n\t};\n}\n\n/**\n * Animates the opacity of an element from 0 to the current opacity for `in` transitions and from the current opacity to 0 for `out` transitions.\n *\n * https://svelte.dev/docs/svelte-transition#fade\n * @param {Element} node\n * @param {import('./public').FadeParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function fade(node, { delay = 0, duration = 400, easing = linear } = {}) {\n\tconst o = +getComputedStyle(node).opacity;\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (t) => `opacity: ${t * o}`\n\t};\n}\n\n/**\n * Animates the x and y positions and the opacity of an element. `in` transitions animate from the provided values, passed as parameters to the element's default values. `out` transitions animate from the element's default values to the provided values.\n *\n * https://svelte.dev/docs/svelte-transition#fly\n * @param {Element} node\n * @param {import('./public').FlyParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function fly(\n\tnode,\n\t{ delay = 0, duration = 400, easing = cubicOut, x = 0, y = 0, opacity = 0 } = {}\n) {\n\tconst style = getComputedStyle(node);\n\tconst target_opacity = +style.opacity;\n\tconst transform = style.transform === 'none' ? '' : style.transform;\n\tconst od = target_opacity * (1 - opacity);\n\tconst [xValue, xUnit] = split_css_unit(x);\n\tconst [yValue, yUnit] = split_css_unit(y);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (t, u) => `\n\t\t\ttransform: ${transform} translate(${(1 - t) * xValue}${xUnit}, ${(1 - t) * yValue}${yUnit});\n\t\t\topacity: ${target_opacity - od * u}`\n\t};\n}\n\n/**\n * Slides an element in and out.\n *\n * https://svelte.dev/docs/svelte-transition#slide\n * @param {Element} node\n * @param {import('./public').SlideParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function slide(node, { delay = 0, duration = 400, easing = cubicOut, axis = 'y' } = {}) {\n\tconst style = getComputedStyle(node);\n\tconst opacity = +style.opacity;\n\tconst primary_property = axis === 'y' ? 'height' : 'width';\n\tconst primary_property_value = parseFloat(style[primary_property]);\n\tconst secondary_properties = axis === 'y' ? ['top', 'bottom'] : ['left', 'right'];\n\tconst capitalized_secondary_properties = secondary_properties.map(\n\t\t(e) => `${e[0].toUpperCase()}${e.slice(1)}`\n\t);\n\tconst padding_start_value = parseFloat(style[`padding${capitalized_secondary_properties[0]}`]);\n\tconst padding_end_value = parseFloat(style[`padding${capitalized_secondary_properties[1]}`]);\n\tconst margin_start_value = parseFloat(style[`margin${capitalized_secondary_properties[0]}`]);\n\tconst margin_end_value = parseFloat(style[`margin${capitalized_secondary_properties[1]}`]);\n\tconst border_width_start_value = parseFloat(\n\t\tstyle[`border${capitalized_secondary_properties[0]}Width`]\n\t);\n\tconst border_width_end_value = parseFloat(\n\t\tstyle[`border${capitalized_secondary_properties[1]}Width`]\n\t);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (t) =>\n\t\t\t'overflow: hidden;' +\n\t\t\t`opacity: ${Math.min(t * 20, 1) * opacity};` +\n\t\t\t`${primary_property}: ${t * primary_property_value}px;` +\n\t\t\t`padding-${secondary_properties[0]}: ${t * padding_start_value}px;` +\n\t\t\t`padding-${secondary_properties[1]}: ${t * padding_end_value}px;` +\n\t\t\t`margin-${secondary_properties[0]}: ${t * margin_start_value}px;` +\n\t\t\t`margin-${secondary_properties[1]}: ${t * margin_end_value}px;` +\n\t\t\t`border-${secondary_properties[0]}-width: ${t * border_width_start_value}px;` +\n\t\t\t`border-${secondary_properties[1]}-width: ${t * border_width_end_value}px;`\n\t};\n}\n\n/**\n * Animates the opacity and scale of an element. `in` transitions animate from an element's current (default) values to the provided values, passed as parameters. `out` transitions animate from the provided values to an element's default values.\n *\n * https://svelte.dev/docs/svelte-transition#scale\n * @param {Element} node\n * @param {import('./public').ScaleParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function scale(\n\tnode,\n\t{ delay = 0, duration = 400, easing = cubicOut, start = 0, opacity = 0 } = {}\n) {\n\tconst style = getComputedStyle(node);\n\tconst target_opacity = +style.opacity;\n\tconst transform = style.transform === 'none' ? '' : style.transform;\n\tconst sd = 1 - start;\n\tconst od = target_opacity * (1 - opacity);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (_t, u) => `\n\t\t\ttransform: ${transform} scale(${1 - sd * u});\n\t\t\topacity: ${target_opacity - od * u}\n\t\t`\n\t};\n}\n\n/**\n * Animates the stroke of an SVG element, like a snake in a tube. `in` transitions begin with the path invisible and draw the path to the screen over time. `out` transitions start in a visible state and gradually erase the path. `draw` only works with elements that have a `getTotalLength` method, like `` and ``.\n *\n * https://svelte.dev/docs/svelte-transition#draw\n * @param {SVGElement & { getTotalLength(): number }} node\n * @param {import('./public').DrawParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function draw(node, { delay = 0, speed, duration, easing = cubicInOut } = {}) {\n\tlet len = node.getTotalLength();\n\tconst style = getComputedStyle(node);\n\tif (style.strokeLinecap !== 'butt') {\n\t\tlen += parseInt(style.strokeWidth);\n\t}\n\tif (duration === undefined) {\n\t\tif (speed === undefined) {\n\t\t\tduration = 800;\n\t\t} else {\n\t\t\tduration = len / speed;\n\t\t}\n\t} else if (typeof duration === 'function') {\n\t\tduration = duration(len);\n\t}\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (_, u) => `\n\t\t\tstroke-dasharray: ${len};\n\t\t\tstroke-dashoffset: ${u * len};\n\t\t`\n\t};\n}\n\n/**\n * The `crossfade` function creates a pair of [transitions](/docs#template-syntax-element-directives-transition-fn) called `send` and `receive`. When an element is 'sent', it looks for a corresponding element being 'received', and generates a transition that transforms the element to its counterpart's position and fades it out. When an element is 'received', the reverse happens. If there is no counterpart, the `fallback` transition is used.\n *\n * https://svelte.dev/docs/svelte-transition#crossfade\n * @param {import('./public').CrossfadeParams & {\n * \tfallback?: (node: Element, params: import('./public').CrossfadeParams, intro: boolean) => import('./public').TransitionConfig;\n * }} params\n * @returns {[(node: any, params: import('./public').CrossfadeParams & { key: any; }) => () => import('./public').TransitionConfig, (node: any, params: import('./public').CrossfadeParams & { key: any; }) => () => import('./public').TransitionConfig]}\n */\nexport function crossfade({ fallback, ...defaults }) {\n\t/** @type {Map} */\n\tconst to_receive = new Map();\n\t/** @type {Map} */\n\tconst to_send = new Map();\n\t/**\n\t * @param {Element} from_node\n\t * @param {Element} node\n\t * @param {import('./public').CrossfadeParams} params\n\t * @returns {import('./public').TransitionConfig}\n\t */\n\tfunction crossfade(from_node, node, params) {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = (d) => Math.sqrt(d) * 30,\n\t\t\teasing = cubicOut\n\t\t} = assign(assign({}, defaults), params);\n\t\tconst from = from_node.getBoundingClientRect();\n\t\tconst to = node.getBoundingClientRect();\n\t\tconst dx = from.left - to.left;\n\t\tconst dy = from.top - to.top;\n\t\tconst dw = from.width / to.width;\n\t\tconst dh = from.height / to.height;\n\t\tconst d = Math.sqrt(dx * dx + dy * dy);\n\t\tconst style = getComputedStyle(node);\n\t\tconst transform = style.transform === 'none' ? '' : style.transform;\n\t\tconst opacity = +style.opacity;\n\t\treturn {\n\t\t\tdelay,\n\t\t\tduration: is_function(duration) ? duration(d) : duration,\n\t\t\teasing,\n\t\t\tcss: (t, u) => `\n\t\t\t\topacity: ${t * opacity};\n\t\t\t\ttransform-origin: top left;\n\t\t\t\ttransform: ${transform} translate(${u * dx}px,${u * dy}px) scale(${t + (1 - t) * dw}, ${\n\t\t\t\tt + (1 - t) * dh\n\t\t\t});\n\t\t\t`\n\t\t};\n\t}\n\n\t/**\n\t * @param {Map} items\n\t * @param {Map} counterparts\n\t * @param {boolean} intro\n\t * @returns {(node: any, params: import('./public').CrossfadeParams & { key: any; }) => () => import('./public').TransitionConfig}\n\t */\n\tfunction transition(items, counterparts, intro) {\n\t\treturn (node, params) => {\n\t\t\titems.set(params.key, node);\n\t\t\treturn () => {\n\t\t\t\tif (counterparts.has(params.key)) {\n\t\t\t\t\tconst other_node = counterparts.get(params.key);\n\t\t\t\t\tcounterparts.delete(params.key);\n\t\t\t\t\treturn crossfade(other_node, node, params);\n\t\t\t\t}\n\t\t\t\t// if the node is disappearing altogether\n\t\t\t\t// (i.e. wasn't claimed by the other list)\n\t\t\t\t// then we need to supply an outro\n\t\t\t\titems.delete(params.key);\n\t\t\t\treturn fallback && fallback(node, params, intro);\n\t\t\t};\n\t\t};\n\t}\n\treturn [transition(to_send, to_receive, false), transition(to_receive, to_send, true)];\n}\n","/**\n * marked v4.3.0 - a markdown parser\n * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction getDefaults() {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nlet defaults = getDefaults();\n\nfunction changeDefaults(newDefaults) {\n defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\n/**\n * @param {string} html\n */\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\n/**\n * @param {string | RegExp} regex\n * @param {string} opt\n */\nfunction edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\n/**\n * @param {boolean} sanitize\n * @param {string} base\n * @param {string} href\n */\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\n/**\n * @param {string} base\n * @param {string} href\n */\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nconst noopTest = { exec: function noopTest() {} };\n\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) { cells.shift(); }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) { cells.pop(); }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param {string} str\n * @param {string} c\n * @param {boolean} invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n}\n\n// copied from https://stackoverflow.com/a/5450113/806777\n/**\n * @param {string} pattern\n * @param {number} count\n */\nfunction repeatString(pattern, count) {\n if (count < 1) {\n return '';\n }\n let result = '';\n while (count > 1) {\n if (count & 1) {\n result += pattern;\n }\n count >>= 1;\n pattern += pattern;\n }\n return result + pattern;\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nclass Tokenizer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n token.type = 'paragraph';\n token.text = text;\n token.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item = {\n type: 'table',\n header: splitCells(cap[1]).map(c => { return { text: c }; }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => { return { text: c }; });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || (nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar)))) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + (match[0].length - rDelim.length) + rLength);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src, mangle) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src, mangle) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src, smartypants) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\nconst block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:.|\\n(?!\\n))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // () Skip orphan inside strong () Consume to delim (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a\n rDelimAst: /^(?:[^_*\\\\]|\\\\.)*?\\_\\_(?:[^_*\\\\]|\\\\.)*?\\*(?:[^_*\\\\]|\\\\.)*?(?=\\_\\_)|(?:[^*\\\\]|\\\\.)+(?=[^*])|[punct_](\\*+)(?=[\\s]|$)|(?:[^punct*_\\s\\\\]|\\\\.)(\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|(?:[^punct*_\\s\\\\]|\\\\.)(\\*+)(?=[^punct*_\\s])/,\n rDelimUnd: /^(?:[^_*\\\\]|\\\\.)*?\\*\\*(?:[^_*\\\\]|\\\\.)*?\\_(?:[^_*\\\\]|\\\\.)*?(?=\\*\\*)|(?:[^_\\\\]|\\\\.)+(?=[^_])|[punct*](\\_+)(?=[\\s]|$)|(?:[^punct*_\\s\\\\]|\\\\.)(\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\?@\\\\[\\\\]`^{|}~';\ninline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\n// lookbehind is not available on Safari as of version 16\n// inline.escapedEmSt = /(?<=(?:^|[^\\\\)(?:\\\\[^])*)\\\\[*_]/g;\ninline.escapedEmSt = /(?:^|[^\\\\])(?:\\\\\\\\)*\\\\[*_]/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim)\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nclass Lexer {\n constructor(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token, lastToken, cutSrc, lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach(function(getStartIndex) {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped em & strong delimiters\n while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index + match[0].length - 2) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n this.tokenizer.rules.inline.escapedEmSt.lastIndex--;\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach(function(getStartIndex) {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass Renderer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
'\n        + (escaped ? code : escape(code, true))\n        + '
\\n';\n }\n\n return '
'\n      + (escaped ? code : escape(code, true))\n      + '
\\n';\n }\n\n /**\n * @param {string} quote\n */\n blockquote(quote) {\n return `
\\n${quote}
\\n`;\n }\n\n html(html) {\n return html;\n }\n\n /**\n * @param {string} text\n * @param {string} level\n * @param {string} raw\n * @param {any} slugger\n */\n heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr() {\n return this.options.xhtml ? '
\\n' : '
\\n';\n }\n\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n /**\n * @param {string} text\n */\n listitem(text) {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked) {\n return ' ';\n }\n\n /**\n * @param {string} text\n */\n paragraph(text) {\n return `

    ${text}

    \\n`;\n }\n\n /**\n * @param {string} header\n * @param {string} body\n */\n table(header, body) {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n /**\n * @param {string} content\n */\n tablerow(content) {\n return `\\n${content}\\n`;\n }\n\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n * @param {string} text\n */\n strong(text) {\n return `${text}`;\n }\n\n /**\n * @param {string} text\n */\n em(text) {\n return `${text}`;\n }\n\n /**\n * @param {string} text\n */\n codespan(text) {\n return `${text}`;\n }\n\n br() {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n /**\n * @param {string} text\n */\n del(text) {\n return `${text}`;\n }\n\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text) {\n return text;\n }\n}\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nclass TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n\n em(text) {\n return text;\n }\n\n codespan(text) {\n return text;\n }\n\n del(text) {\n return text;\n }\n\n html(text) {\n return text;\n }\n\n text(text) {\n return text;\n }\n\n link(href, title, text) {\n return '' + text;\n }\n\n image(href, title, text) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n\n/**\n * Slugger generates header id\n */\nclass Slugger {\n constructor() {\n this.seen = {};\n }\n\n /**\n * @param {string} value\n */\n serialize(value) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n * @param {string} originalSlug\n * @param {boolean} isDryRun\n */\n getNextSafeSlug(originalSlug, isDryRun) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n * @param {object} [options]\n * @param {boolean} [options.dryrun] Generates the next unique slug without\n * updating the internal accumulator.\n */\n slug(value, options = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n\n/**\n * Parsing & Compiling\n */\nclass Parser {\n constructor(options) {\n this.options = options || defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer();\n this.slugger = new Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens),\n token.depth,\n unescape(this.parseInline(token.tokens, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens),\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens),\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n\nclass Hooks {\n constructor(options) {\n this.options = options || defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n}\n\nfunction onError(silent, async, callback) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n}\n\nfunction parseMarkdown(lexer, parser) {\n return (src, opt, callback) => {\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n\n const origOpt = { ...opt };\n opt = { ...marked.defaults, ...origOpt };\n const throwError = onError(opt.silent, opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkSanitizeDeprecation(opt);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens;\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e);\n }\n\n const done = function(err) {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt);\n if (opt.hooks) {\n out = opt.hooks.postprocess(out);\n }\n } catch (e) {\n err = e;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n marked.walkTokens(tokens, function(token) {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, function(err, code) {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(marked.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch (e) {\n return throwError(e);\n }\n };\n}\n\n/**\n * Marked\n */\nfunction marked(src, opt, callback) {\n return parseMarkdown(Lexer.lex, Parser.parse)(src, opt, callback);\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n marked.defaults = { ...marked.defaults, ...opt };\n changeDefaults(marked.defaults);\n return marked;\n};\n\nmarked.getDefaults = getDefaults;\n\nmarked.defaults = defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args) {\n const extensions = marked.defaults.extensions || { renderers: {}, childTokens: {} };\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n\n // set async to true if it was set to true before\n opts.async = marked.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if (ext.renderer) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if (ext.tokenizer) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if (ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = marked.defaults.renderer || new Renderer();\n for (const prop in pack.renderer) {\n const prevRenderer = renderer[prop];\n // Replace renderer with func to run extension, but fall back if false\n renderer[prop] = (...args) => {\n let ret = pack.renderer[prop].apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = marked.defaults.tokenizer || new Tokenizer();\n for (const prop in pack.tokenizer) {\n const prevTokenizer = tokenizer[prop];\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[prop] = (...args) => {\n let ret = pack.tokenizer[prop].apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = marked.defaults.hooks || new Hooks();\n for (const prop in pack.hooks) {\n const prevHook = hooks[prop];\n if (Hooks.passThroughHooks.has(prop)) {\n hooks[prop] = (arg) => {\n if (marked.defaults.async) {\n return Promise.resolve(pack.hooks[prop].call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n\n const ret = pack.hooks[prop].call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n hooks[prop] = (...args) => {\n let ret = pack.hooks[prop].apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = marked.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values = [];\n values.push(pack.walkTokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n marked.setOptions(opts);\n });\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(marked, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(marked.walkTokens(cell.tokens, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(marked.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(marked.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n marked.defaults.extensions.childTokens[token.type].forEach(function(childTokens) {\n values = values.concat(marked.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(marked.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n};\n\n/**\n * Parse Inline\n * @param {string} src\n */\nmarked.parseInline = parseMarkdown(Lexer.lexInline, Parser.parseInline);\n\n/**\n * Expose\n */\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\nmarked.Tokenizer = Tokenizer;\nmarked.Slugger = Slugger;\nmarked.Hooks = Hooks;\nmarked.parse = marked;\n\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = Parser.parse;\nconst lexer = Lexer.lex;\n\nexport { Hooks, Lexer, Parser, Renderer, Slugger, TextRenderer, Tokenizer, defaults, getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };\n","// used in Attr to signal changes\nexport const CHANGED = Symbol('changed');\n\n// used in Element to setup once classList\nexport const CLASS_LIST = Symbol('classList');\n\n// used in Document to attach once customElements\nexport const CUSTOM_ELEMENTS = Symbol('CustomElements');\n\n// used in HTMLTemplateElement\nexport const CONTENT = Symbol('content');\n\n// used in Element for data attributes\nexport const DATASET = Symbol('dataset');\n\n// used in Document to attach the DocType\nexport const DOCTYPE = Symbol('doctype');\n\n// used in parser and Document to attach once a DOMParser\nexport const DOM_PARSER = Symbol('DOMParser');\n\n// used to reference an end node\nexport const END = Symbol('end');\n\n// used in Document to make the globalThis an event target\nexport const EVENT_TARGET = Symbol('EventTarget');\n\n// used to augment a created document defaultView\nexport const GLOBALS = Symbol('globals');\n\n// used in both Canvas and Document to provide images\nexport const IMAGE = Symbol('image');\n\n// used to define Document mime type\nexport const MIME = Symbol('mime');\n\n// used in Document to attach once MutationObserver\nexport const MUTATION_OBSERVER = Symbol('MutationObserver');\n\n// used to define next node reference\nexport const NEXT = Symbol('next');\n\n// used to define Attr owner elements\nexport const OWNER_ELEMENT = Symbol('ownerElement');\n\n// used to define previous node reference\nexport const PREV = Symbol('prev');\n\n// used to define various \"private\" properties\nexport const PRIVATE = Symbol('private');\n\n// used to define the CSSStyleSheet.sheet\nexport const SHEET = Symbol('sheet');\n\n// used to define start node reference\nexport const START = Symbol('start');\n\n// used to define special CSS style attribute\nexport const STYLE = Symbol('style');\n\n// used to upgrade Custom Elements\nexport const UPGRADE = Symbol('upgrade');\n\n// used to define generic values\nexport const VALUE = Symbol('value');\n","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return 0xfffd;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport default function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode_codepoint.js.map","import htmlDecodeTree from \"./generated/decode-data-html.js\";\nimport xmlDecodeTree from \"./generated/decode-data-xml.js\";\nimport decodeCodePoint, { replaceCodePoint, fromCodePoint, } from \"./decode_codepoint.js\";\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree, xmlDecodeTree, decodeCodePoint };\nexport { replaceCodePoint, fromCodePoint } from \"./decode_codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 0b100000;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\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 */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(str, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (str.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(str, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(str, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(str, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(str, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(str, offset) {\n if (offset >= str.length) {\n return -1;\n }\n if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n }\n addToNumericResult(str, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(str, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n const char = str.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end() {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let ret = \"\";\n const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));\n return function decodeWithTrie(str, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const len = decoder.write(str, \n // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIdx, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIdx;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midVal = decodeTree[mid];\n if (midVal < char) {\n lo = mid + 1;\n }\n else if (midVal > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = getDecoder(htmlDecodeTree);\nconst xmlDecoder = getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(str, mode = DecodingMode.Legacy) {\n return htmlDecoder(str, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\n//# sourceMappingURL=decode.js.map","import { htmlDecodeTree, xmlDecodeTree, BinTrieFlags, determineBranch, replaceCodePoint, } from \"entities/lib/decode.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"Tab\"] = 9] = \"Tab\";\n CharCodes[CharCodes[\"NewLine\"] = 10] = \"NewLine\";\n CharCodes[CharCodes[\"FormFeed\"] = 12] = \"FormFeed\";\n CharCodes[CharCodes[\"CarriageReturn\"] = 13] = \"CarriageReturn\";\n CharCodes[CharCodes[\"Space\"] = 32] = \"Space\";\n CharCodes[CharCodes[\"ExclamationMark\"] = 33] = \"ExclamationMark\";\n CharCodes[CharCodes[\"Number\"] = 35] = \"Number\";\n CharCodes[CharCodes[\"Amp\"] = 38] = \"Amp\";\n CharCodes[CharCodes[\"SingleQuote\"] = 39] = \"SingleQuote\";\n CharCodes[CharCodes[\"DoubleQuote\"] = 34] = \"DoubleQuote\";\n CharCodes[CharCodes[\"Dash\"] = 45] = \"Dash\";\n CharCodes[CharCodes[\"Slash\"] = 47] = \"Slash\";\n CharCodes[CharCodes[\"Zero\"] = 48] = \"Zero\";\n CharCodes[CharCodes[\"Nine\"] = 57] = \"Nine\";\n CharCodes[CharCodes[\"Semi\"] = 59] = \"Semi\";\n CharCodes[CharCodes[\"Lt\"] = 60] = \"Lt\";\n CharCodes[CharCodes[\"Eq\"] = 61] = \"Eq\";\n CharCodes[CharCodes[\"Gt\"] = 62] = \"Gt\";\n CharCodes[CharCodes[\"Questionmark\"] = 63] = \"Questionmark\";\n CharCodes[CharCodes[\"UpperA\"] = 65] = \"UpperA\";\n CharCodes[CharCodes[\"LowerA\"] = 97] = \"LowerA\";\n CharCodes[CharCodes[\"UpperF\"] = 70] = \"UpperF\";\n CharCodes[CharCodes[\"LowerF\"] = 102] = \"LowerF\";\n CharCodes[CharCodes[\"UpperZ\"] = 90] = \"UpperZ\";\n CharCodes[CharCodes[\"LowerZ\"] = 122] = \"LowerZ\";\n CharCodes[CharCodes[\"LowerX\"] = 120] = \"LowerX\";\n CharCodes[CharCodes[\"OpeningSquareBracket\"] = 91] = \"OpeningSquareBracket\";\n})(CharCodes || (CharCodes = {}));\n/** All the states the tokenizer can be in. */\nvar State;\n(function (State) {\n State[State[\"Text\"] = 1] = \"Text\";\n State[State[\"BeforeTagName\"] = 2] = \"BeforeTagName\";\n State[State[\"InTagName\"] = 3] = \"InTagName\";\n State[State[\"InSelfClosingTag\"] = 4] = \"InSelfClosingTag\";\n State[State[\"BeforeClosingTagName\"] = 5] = \"BeforeClosingTagName\";\n State[State[\"InClosingTagName\"] = 6] = \"InClosingTagName\";\n State[State[\"AfterClosingTagName\"] = 7] = \"AfterClosingTagName\";\n // Attributes\n State[State[\"BeforeAttributeName\"] = 8] = \"BeforeAttributeName\";\n State[State[\"InAttributeName\"] = 9] = \"InAttributeName\";\n State[State[\"AfterAttributeName\"] = 10] = \"AfterAttributeName\";\n State[State[\"BeforeAttributeValue\"] = 11] = \"BeforeAttributeValue\";\n State[State[\"InAttributeValueDq\"] = 12] = \"InAttributeValueDq\";\n State[State[\"InAttributeValueSq\"] = 13] = \"InAttributeValueSq\";\n State[State[\"InAttributeValueNq\"] = 14] = \"InAttributeValueNq\";\n // Declarations\n State[State[\"BeforeDeclaration\"] = 15] = \"BeforeDeclaration\";\n State[State[\"InDeclaration\"] = 16] = \"InDeclaration\";\n // Processing instructions\n State[State[\"InProcessingInstruction\"] = 17] = \"InProcessingInstruction\";\n // Comments & CDATA\n State[State[\"BeforeComment\"] = 18] = \"BeforeComment\";\n State[State[\"CDATASequence\"] = 19] = \"CDATASequence\";\n State[State[\"InSpecialComment\"] = 20] = \"InSpecialComment\";\n State[State[\"InCommentLike\"] = 21] = \"InCommentLike\";\n // Special tags\n State[State[\"BeforeSpecialS\"] = 22] = \"BeforeSpecialS\";\n State[State[\"SpecialStartSequence\"] = 23] = \"SpecialStartSequence\";\n State[State[\"InSpecialTag\"] = 24] = \"InSpecialTag\";\n State[State[\"BeforeEntity\"] = 25] = \"BeforeEntity\";\n State[State[\"BeforeNumericEntity\"] = 26] = \"BeforeNumericEntity\";\n State[State[\"InNamedEntity\"] = 27] = \"InNamedEntity\";\n State[State[\"InNumericEntity\"] = 28] = \"InNumericEntity\";\n State[State[\"InHexEntity\"] = 29] = \"InHexEntity\";\n})(State || (State = {}));\nfunction isWhitespace(c) {\n return (c === CharCodes.Space ||\n c === CharCodes.NewLine ||\n c === CharCodes.Tab ||\n c === CharCodes.FormFeed ||\n c === CharCodes.CarriageReturn);\n}\nfunction isEndOfTagSection(c) {\n return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);\n}\nfunction isNumber(c) {\n return c >= CharCodes.Zero && c <= CharCodes.Nine;\n}\nfunction isASCIIAlpha(c) {\n return ((c >= CharCodes.LowerA && c <= CharCodes.LowerZ) ||\n (c >= CharCodes.UpperA && c <= CharCodes.UpperZ));\n}\nfunction isHexDigit(c) {\n return ((c >= CharCodes.UpperA && c <= CharCodes.UpperF) ||\n (c >= CharCodes.LowerA && c <= CharCodes.LowerF));\n}\nexport var QuoteType;\n(function (QuoteType) {\n QuoteType[QuoteType[\"NoValue\"] = 0] = \"NoValue\";\n QuoteType[QuoteType[\"Unquoted\"] = 1] = \"Unquoted\";\n QuoteType[QuoteType[\"Single\"] = 2] = \"Single\";\n QuoteType[QuoteType[\"Double\"] = 3] = \"Double\";\n})(QuoteType || (QuoteType = {}));\n/**\n * Sequences used to match longer strings.\n *\n * We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End\n * sequences with an increased offset.\n */\nconst Sequences = {\n Cdata: new Uint8Array([0x43, 0x44, 0x41, 0x54, 0x41, 0x5b]),\n CdataEnd: new Uint8Array([0x5d, 0x5d, 0x3e]),\n CommentEnd: new Uint8Array([0x2d, 0x2d, 0x3e]),\n ScriptEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74]),\n StyleEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65]),\n TitleEnd: new Uint8Array([0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65]), // ` this.sectionStart) {\n this.cbs.ontext(this.sectionStart, this.index);\n }\n this.state = State.BeforeTagName;\n this.sectionStart = this.index;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.state = State.BeforeEntity;\n }\n }\n stateSpecialStartSequence(c) {\n const isEnd = this.sequenceIndex === this.currentSequence.length;\n const isMatch = isEnd\n ? // If we are at the end of the sequence, make sure the tag name has ended\n isEndOfTagSection(c)\n : // Otherwise, do a case-insensitive comparison\n (c | 0x20) === this.currentSequence[this.sequenceIndex];\n if (!isMatch) {\n this.isSpecial = false;\n }\n else if (!isEnd) {\n this.sequenceIndex++;\n return;\n }\n this.sequenceIndex = 0;\n this.state = State.InTagName;\n this.stateInTagName(c);\n }\n /** Look for an end tag. For tags, also decode entities. */\n stateInSpecialTag(c) {\n if (this.sequenceIndex === this.currentSequence.length) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n const endOfText = this.index - this.currentSequence.length;\n if (this.sectionStart < endOfText) {\n // Spoof the index so that reported locations match up.\n const actualIndex = this.index;\n this.index = endOfText;\n this.cbs.ontext(this.sectionStart, endOfText);\n this.index = actualIndex;\n }\n this.isSpecial = false;\n this.sectionStart = endOfText + 2; // Skip over the `</`\n this.stateInClosingTagName(c);\n return; // We are done; skip the rest of the function.\n }\n this.sequenceIndex = 0;\n }\n if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) {\n this.sequenceIndex += 1;\n }\n else if (this.sequenceIndex === 0) {\n if (this.currentSequence === Sequences.TitleEnd) {\n // We have to parse entities in <title> tags.\n if (this.decodeEntities && c === CharCodes.Amp) {\n this.state = State.BeforeEntity;\n }\n }\n else if (this.fastForwardTo(CharCodes.Lt)) {\n // Outside of <title> tags, we can fast-forward.\n this.sequenceIndex = 1;\n }\n }\n else {\n // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`.\n this.sequenceIndex = Number(c === CharCodes.Lt);\n }\n }\n stateCDATASequence(c) {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n }\n else {\n this.sequenceIndex = 0;\n this.state = State.InDeclaration;\n this.stateInDeclaration(c); // Reconsume the character\n }\n }\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */\n fastForwardTo(c) {\n while (++this.index < this.buffer.length + this.offset) {\n if (this.buffer.charCodeAt(this.index - this.offset) === c) {\n return true;\n }\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */\n this.index = this.buffer.length + this.offset - 1;\n return false;\n }\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */\n stateInCommentLike(c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, this.index, 2);\n }\n else {\n this.cbs.oncomment(this.sectionStart, this.index, 2);\n }\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = State.Text;\n }\n }\n else if (this.sequenceIndex === 0) {\n // Fast-forward to the first character of the sequence\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n }\n else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n }\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n isTagStartChar(c) {\n return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n }\n startSpecial(sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this.state = State.SpecialStartSequence;\n }\n stateBeforeTagName(c) {\n if (c === CharCodes.ExclamationMark) {\n this.state = State.BeforeDeclaration;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Questionmark) {\n this.state = State.InProcessingInstruction;\n this.sectionStart = this.index + 1;\n }\n else if (this.isTagStartChar(c)) {\n const lower = c | 0x20;\n this.sectionStart = this.index;\n if (!this.xmlMode && lower === Sequences.TitleEnd[2]) {\n this.startSpecial(Sequences.TitleEnd, 3);\n }\n else {\n this.state =\n !this.xmlMode && lower === Sequences.ScriptEnd[2]\n ? State.BeforeSpecialS\n : State.InTagName;\n }\n }\n else if (c === CharCodes.Slash) {\n this.state = State.BeforeClosingTagName;\n }\n else {\n this.state = State.Text;\n this.stateText(c);\n }\n }\n stateInTagName(c) {\n if (isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateBeforeClosingTagName(c) {\n if (isWhitespace(c)) {\n // Ignore\n }\n else if (c === CharCodes.Gt) {\n this.state = State.Text;\n }\n else {\n this.state = this.isTagStartChar(c)\n ? State.InClosingTagName\n : State.InSpecialComment;\n this.sectionStart = this.index;\n }\n }\n stateInClosingTagName(c) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n this.cbs.onclosetag(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterClosingTagName;\n this.stateAfterClosingTagName(c);\n }\n }\n stateAfterClosingTagName(c) {\n // Skip everything until \">\"\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.state = State.Text;\n this.baseState = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeAttributeName(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onopentagend(this.index);\n if (this.isSpecial) {\n this.state = State.InSpecialTag;\n this.sequenceIndex = 0;\n }\n else {\n this.state = State.Text;\n }\n this.baseState = this.state;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Slash) {\n this.state = State.InSelfClosingTag;\n }\n else if (!isWhitespace(c)) {\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateInSelfClosingTag(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onselfclosingtag(this.index);\n this.state = State.Text;\n this.baseState = State.Text;\n this.sectionStart = this.index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n }\n else if (!isWhitespace(c)) {\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateInAttributeName(c) {\n if (c === CharCodes.Eq || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterAttributeName;\n this.stateAfterAttributeName(c);\n }\n }\n stateAfterAttributeName(c) {\n if (c === CharCodes.Eq) {\n this.state = State.BeforeAttributeValue;\n }\n else if (c === CharCodes.Slash || c === CharCodes.Gt) {\n this.cbs.onattribend(QuoteType.NoValue, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (!isWhitespace(c)) {\n this.cbs.onattribend(QuoteType.NoValue, this.index);\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateBeforeAttributeValue(c) {\n if (c === CharCodes.DoubleQuote) {\n this.state = State.InAttributeValueDq;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.SingleQuote) {\n this.state = State.InAttributeValueSq;\n this.sectionStart = this.index + 1;\n }\n else if (!isWhitespace(c)) {\n this.sectionStart = this.index;\n this.state = State.InAttributeValueNq;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n }\n handleInAttributeValue(c, quote) {\n if (c === quote ||\n (!this.decodeEntities && this.fastForwardTo(quote))) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(quote === CharCodes.DoubleQuote\n ? QuoteType.Double\n : QuoteType.Single, this.index);\n this.state = State.BeforeAttributeName;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.baseState = this.state;\n this.state = State.BeforeEntity;\n }\n }\n stateInAttributeValueDoubleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.DoubleQuote);\n }\n stateInAttributeValueSingleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.SingleQuote);\n }\n stateInAttributeValueNoQuotes(c) {\n if (isWhitespace(c) || c === CharCodes.Gt) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(QuoteType.Unquoted, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.baseState = this.state;\n this.state = State.BeforeEntity;\n }\n }\n stateBeforeDeclaration(c) {\n if (c === CharCodes.OpeningSquareBracket) {\n this.state = State.CDATASequence;\n this.sequenceIndex = 0;\n }\n else {\n this.state =\n c === CharCodes.Dash\n ? State.BeforeComment\n : State.InDeclaration;\n }\n }\n stateInDeclaration(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.ondeclaration(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateInProcessingInstruction(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeComment(c) {\n if (c === CharCodes.Dash) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CommentEnd;\n // Allow short comments (eg. <!-->)\n this.sequenceIndex = 2;\n this.sectionStart = this.index + 1;\n }\n else {\n this.state = State.InDeclaration;\n }\n }\n stateInSpecialComment(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeSpecialS(c) {\n const lower = c | 0x20;\n if (lower === Sequences.ScriptEnd[3]) {\n this.startSpecial(Sequences.ScriptEnd, 4);\n }\n else if (lower === Sequences.StyleEnd[3]) {\n this.startSpecial(Sequences.StyleEnd, 4);\n }\n else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n stateBeforeEntity(c) {\n // Start excess with 1 to include the '&'\n this.entityExcess = 1;\n this.entityResult = 0;\n if (c === CharCodes.Number) {\n this.state = State.BeforeNumericEntity;\n }\n else if (c === CharCodes.Amp) {\n // We have two `&` characters in a row. Stay in the current state.\n }\n else {\n this.trieIndex = 0;\n this.trieCurrent = this.entityTrie[0];\n this.state = State.InNamedEntity;\n this.stateInNamedEntity(c);\n }\n }\n stateInNamedEntity(c) {\n this.entityExcess += 1;\n this.trieIndex = determineBranch(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c);\n if (this.trieIndex < 0) {\n this.emitNamedEntity();\n this.index--;\n return;\n }\n this.trieCurrent = this.entityTrie[this.trieIndex];\n const masked = this.trieCurrent & 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 // If we have a legacy entity while parsing strictly, just skip the number of bytes\n if (!this.allowLegacyEntity() && c !== CharCodes.Semi) {\n this.trieIndex += valueLength;\n }\n else {\n // Add 1 as we have already incremented the excess\n const entityStart = this.index - this.entityExcess + 1;\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.sectionStart, entityStart);\n }\n // If this is a surrogate pair, consume the next two bytes\n this.entityResult = this.trieIndex;\n this.trieIndex += valueLength;\n this.entityExcess = 0;\n this.sectionStart = this.index + 1;\n if (valueLength === 0) {\n this.emitNamedEntity();\n }\n }\n }\n }\n emitNamedEntity() {\n this.state = this.baseState;\n if (this.entityResult === 0) {\n return;\n }\n const valueLength = (this.entityTrie[this.entityResult] & BinTrieFlags.VALUE_LENGTH) >>\n 14;\n switch (valueLength) {\n case 1: {\n this.emitCodePoint(this.entityTrie[this.entityResult] &\n ~BinTrieFlags.VALUE_LENGTH);\n break;\n }\n case 2: {\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n break;\n }\n case 3: {\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n this.emitCodePoint(this.entityTrie[this.entityResult + 2]);\n }\n }\n }\n stateBeforeNumericEntity(c) {\n if ((c | 0x20) === CharCodes.LowerX) {\n this.entityExcess++;\n this.state = State.InHexEntity;\n }\n else {\n this.state = State.InNumericEntity;\n this.stateInNumericEntity(c);\n }\n }\n emitNumericEntity(strict) {\n const entityStart = this.index - this.entityExcess - 1;\n const numberStart = entityStart + 2 + Number(this.state === State.InHexEntity);\n if (numberStart !== this.index) {\n // Emit leading data if any\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.sectionStart, entityStart);\n }\n this.sectionStart = this.index + Number(strict);\n this.emitCodePoint(replaceCodePoint(this.entityResult));\n }\n this.state = this.baseState;\n }\n stateInNumericEntity(c) {\n if (c === CharCodes.Semi) {\n this.emitNumericEntity(true);\n }\n else if (isNumber(c)) {\n this.entityResult = this.entityResult * 10 + (c - CharCodes.Zero);\n this.entityExcess++;\n }\n else {\n if (this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n }\n else {\n this.state = this.baseState;\n }\n this.index--;\n }\n }\n stateInHexEntity(c) {\n if (c === CharCodes.Semi) {\n this.emitNumericEntity(true);\n }\n else if (isNumber(c)) {\n this.entityResult = this.entityResult * 16 + (c - CharCodes.Zero);\n this.entityExcess++;\n }\n else if (isHexDigit(c)) {\n this.entityResult =\n this.entityResult * 16 + ((c | 0x20) - CharCodes.LowerA + 10);\n this.entityExcess++;\n }\n else {\n if (this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n }\n else {\n this.state = this.baseState;\n }\n this.index--;\n }\n }\n allowLegacyEntity() {\n return (!this.xmlMode &&\n (this.baseState === State.Text ||\n this.baseState === State.InSpecialTag));\n }\n /**\n * Remove data that has already been consumed from the buffer.\n */\n cleanup() {\n // If we are inside of text or attributes, emit what we already have.\n if (this.running && this.sectionStart !== this.index) {\n if (this.state === State.Text ||\n (this.state === State.InSpecialTag && this.sequenceIndex === 0)) {\n this.cbs.ontext(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n else if (this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueNq) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n }\n }\n shouldContinue() {\n return this.index < this.buffer.length + this.offset && this.running;\n }\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n parse() {\n while (this.shouldContinue()) {\n const c = this.buffer.charCodeAt(this.index - this.offset);\n switch (this.state) {\n case State.Text: {\n this.stateText(c);\n break;\n }\n case State.SpecialStartSequence: {\n this.stateSpecialStartSequence(c);\n break;\n }\n case State.InSpecialTag: {\n this.stateInSpecialTag(c);\n break;\n }\n case State.CDATASequence: {\n this.stateCDATASequence(c);\n break;\n }\n case State.InAttributeValueDq: {\n this.stateInAttributeValueDoubleQuotes(c);\n break;\n }\n case State.InAttributeName: {\n this.stateInAttributeName(c);\n break;\n }\n case State.InCommentLike: {\n this.stateInCommentLike(c);\n break;\n }\n case State.InSpecialComment: {\n this.stateInSpecialComment(c);\n break;\n }\n case State.BeforeAttributeName: {\n this.stateBeforeAttributeName(c);\n break;\n }\n case State.InTagName: {\n this.stateInTagName(c);\n break;\n }\n case State.InClosingTagName: {\n this.stateInClosingTagName(c);\n break;\n }\n case State.BeforeTagName: {\n this.stateBeforeTagName(c);\n break;\n }\n case State.AfterAttributeName: {\n this.stateAfterAttributeName(c);\n break;\n }\n case State.InAttributeValueSq: {\n this.stateInAttributeValueSingleQuotes(c);\n break;\n }\n case State.BeforeAttributeValue: {\n this.stateBeforeAttributeValue(c);\n break;\n }\n case State.BeforeClosingTagName: {\n this.stateBeforeClosingTagName(c);\n break;\n }\n case State.AfterClosingTagName: {\n this.stateAfterClosingTagName(c);\n break;\n }\n case State.BeforeSpecialS: {\n this.stateBeforeSpecialS(c);\n break;\n }\n case State.InAttributeValueNq: {\n this.stateInAttributeValueNoQuotes(c);\n break;\n }\n case State.InSelfClosingTag: {\n this.stateInSelfClosingTag(c);\n break;\n }\n case State.InDeclaration: {\n this.stateInDeclaration(c);\n break;\n }\n case State.BeforeDeclaration: {\n this.stateBeforeDeclaration(c);\n break;\n }\n case State.BeforeComment: {\n this.stateBeforeComment(c);\n break;\n }\n case State.InProcessingInstruction: {\n this.stateInProcessingInstruction(c);\n break;\n }\n case State.InNamedEntity: {\n this.stateInNamedEntity(c);\n break;\n }\n case State.BeforeEntity: {\n this.stateBeforeEntity(c);\n break;\n }\n case State.InHexEntity: {\n this.stateInHexEntity(c);\n break;\n }\n case State.InNumericEntity: {\n this.stateInNumericEntity(c);\n break;\n }\n default: {\n // `this._state === State.BeforeNumericEntity`\n this.stateBeforeNumericEntity(c);\n }\n }\n this.index++;\n }\n this.cleanup();\n }\n finish() {\n if (this.state === State.InNamedEntity) {\n this.emitNamedEntity();\n }\n // If there is remaining data, emit it in a reasonable way\n if (this.sectionStart < this.index) {\n this.handleTrailingData();\n }\n this.cbs.onend();\n }\n /** Handle any trailing data. */\n handleTrailingData() {\n const endIndex = this.buffer.length + this.offset;\n if (this.state === State.InCommentLike) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, endIndex, 0);\n }\n else {\n this.cbs.oncomment(this.sectionStart, endIndex, 0);\n }\n }\n else if (this.state === State.InNumericEntity &&\n this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n // All trailing data will have been consumed\n }\n else if (this.state === State.InHexEntity &&\n this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n // All trailing data will have been consumed\n }\n else if (this.state === State.InTagName ||\n this.state === State.BeforeAttributeName ||\n this.state === State.BeforeAttributeValue ||\n this.state === State.AfterAttributeName ||\n this.state === State.InAttributeName ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueNq ||\n this.state === State.InClosingTagName) {\n /*\n * If we are currently in an opening or closing tag, us not calling the\n * respective callback signals that the tag should be ignored.\n */\n }\n else {\n this.cbs.ontext(this.sectionStart, endIndex);\n }\n }\n emitPartial(start, endIndex) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n this.cbs.onattribdata(start, endIndex);\n }\n else {\n this.cbs.ontext(start, endIndex);\n }\n }\n emitCodePoint(cp) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n this.cbs.onattribentity(cp);\n }\n else {\n this.cbs.ontextentity(cp);\n }\n }\n}\n//# sourceMappingURL=Tokenizer.js.map","import Tokenizer, { QuoteType } from \"./Tokenizer.js\";\nimport { fromCodePoint } from \"entities/lib/decode.js\";\nconst formTags = new Set([\n \"input\",\n \"option\",\n \"optgroup\",\n \"select\",\n \"button\",\n \"datalist\",\n \"textarea\",\n]);\nconst pTag = new Set([\"p\"]);\nconst tableSectionTags = new Set([\"thead\", \"tbody\"]);\nconst ddtTags = new Set([\"dd\", \"dt\"]);\nconst rtpTags = new Set([\"rt\", \"rp\"]);\nconst openImpliesClose = new Map([\n [\"tr\", new Set([\"tr\", \"th\", \"td\"])],\n [\"th\", new Set([\"th\"])],\n [\"td\", new Set([\"thead\", \"th\", \"td\"])],\n [\"body\", new Set([\"head\", \"link\", \"script\"])],\n [\"li\", new Set([\"li\"])],\n [\"p\", pTag],\n [\"h1\", pTag],\n [\"h2\", pTag],\n [\"h3\", pTag],\n [\"h4\", pTag],\n [\"h5\", pTag],\n [\"h6\", pTag],\n [\"select\", formTags],\n [\"input\", formTags],\n [\"output\", formTags],\n [\"button\", formTags],\n [\"datalist\", formTags],\n [\"textarea\", formTags],\n [\"option\", new Set([\"option\"])],\n [\"optgroup\", new Set([\"optgroup\", \"option\"])],\n [\"dd\", ddtTags],\n [\"dt\", ddtTags],\n [\"address\", pTag],\n [\"article\", pTag],\n [\"aside\", pTag],\n [\"blockquote\", pTag],\n [\"details\", pTag],\n [\"div\", pTag],\n [\"dl\", pTag],\n [\"fieldset\", pTag],\n [\"figcaption\", pTag],\n [\"figure\", pTag],\n [\"footer\", pTag],\n [\"form\", pTag],\n [\"header\", pTag],\n [\"hr\", pTag],\n [\"main\", pTag],\n [\"nav\", pTag],\n [\"ol\", pTag],\n [\"pre\", pTag],\n [\"section\", pTag],\n [\"table\", pTag],\n [\"ul\", pTag],\n [\"rt\", rtpTags],\n [\"rp\", rtpTags],\n [\"tbody\", tableSectionTags],\n [\"tfoot\", tableSectionTags],\n]);\nconst voidElements = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\nconst foreignContextElements = new Set([\"math\", \"svg\"]);\nconst htmlIntegrationElements = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignobject\",\n \"desc\",\n \"title\",\n]);\nconst reNameEnd = /\\s|\\//;\nexport class Parser {\n constructor(cbs, options = {}) {\n var _a, _b, _c, _d, _e;\n this.options = options;\n /** The start index of the last event. */\n this.startIndex = 0;\n /** The end index of the last event. */\n this.endIndex = 0;\n /**\n * Store the start index of the current open tag,\n * so we can update the start index for attributes.\n */\n this.openTagStart = 0;\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribvalue = \"\";\n this.attribs = null;\n this.stack = [];\n this.foreignContext = [];\n this.buffers = [];\n this.bufferOffset = 0;\n /** The index of the last written buffer. Used when resuming after a `pause()`. */\n this.writeIndex = 0;\n /** Indicates whether the parser has finished running / `.end` has been called. */\n this.ended = false;\n this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};\n this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : !options.xmlMode;\n this.lowerCaseAttributeNames =\n (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : !options.xmlMode;\n this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== void 0 ? _c : Tokenizer)(this.options, this);\n (_e = (_d = this.cbs).onparserinit) === null || _e === void 0 ? void 0 : _e.call(_d, this);\n }\n // Tokenizer event handlers\n /** @internal */\n ontext(start, endIndex) {\n var _a, _b;\n const data = this.getSlice(start, endIndex);\n this.endIndex = endIndex - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);\n this.startIndex = endIndex;\n }\n /** @internal */\n ontextentity(cp) {\n var _a, _b;\n /*\n * Entities can be emitted on the character, or directly after.\n * We use the section start here to get accurate indices.\n */\n const index = this.tokenizer.getSectionStart();\n this.endIndex = index - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, fromCodePoint(cp));\n this.startIndex = index;\n }\n isVoidElement(name) {\n return !this.options.xmlMode && voidElements.has(name);\n }\n /** @internal */\n onopentagname(start, endIndex) {\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n this.emitOpenTag(name);\n }\n emitOpenTag(name) {\n var _a, _b, _c, _d;\n this.openTagStart = this.startIndex;\n this.tagname = name;\n const impliesClose = !this.options.xmlMode && openImpliesClose.get(name);\n if (impliesClose) {\n while (this.stack.length > 0 &&\n impliesClose.has(this.stack[this.stack.length - 1])) {\n const element = this.stack.pop();\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, true);\n }\n }\n if (!this.isVoidElement(name)) {\n this.stack.push(name);\n if (foreignContextElements.has(name)) {\n this.foreignContext.push(true);\n }\n else if (htmlIntegrationElements.has(name)) {\n this.foreignContext.push(false);\n }\n }\n (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name);\n if (this.cbs.onopentag)\n this.attribs = {};\n }\n endOpenTag(isImplied) {\n var _a, _b;\n this.startIndex = this.openTagStart;\n if (this.attribs) {\n (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs, isImplied);\n this.attribs = null;\n }\n if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {\n this.cbs.onclosetag(this.tagname, true);\n }\n this.tagname = \"\";\n }\n /** @internal */\n onopentagend(endIndex) {\n this.endIndex = endIndex;\n this.endOpenTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onclosetag(start, endIndex) {\n var _a, _b, _c, _d, _e, _f;\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n if (foreignContextElements.has(name) ||\n htmlIntegrationElements.has(name)) {\n this.foreignContext.pop();\n }\n if (!this.isVoidElement(name)) {\n const pos = this.stack.lastIndexOf(name);\n if (pos !== -1) {\n if (this.cbs.onclosetag) {\n let count = this.stack.length - pos;\n while (count--) {\n // We know the stack has sufficient elements.\n this.cbs.onclosetag(this.stack.pop(), count !== 0);\n }\n }\n else\n this.stack.length = pos;\n }\n else if (!this.options.xmlMode && name === \"p\") {\n // Implicit open before close\n this.emitOpenTag(\"p\");\n this.closeCurrentTag(true);\n }\n }\n else if (!this.options.xmlMode && name === \"br\") {\n // We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.\n (_b = (_a = this.cbs).onopentagname) === null || _b === void 0 ? void 0 : _b.call(_a, \"br\");\n (_d = (_c = this.cbs).onopentag) === null || _d === void 0 ? void 0 : _d.call(_c, \"br\", {}, true);\n (_f = (_e = this.cbs).onclosetag) === null || _f === void 0 ? void 0 : _f.call(_e, \"br\", false);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onselfclosingtag(endIndex) {\n this.endIndex = endIndex;\n if (this.options.xmlMode ||\n this.options.recognizeSelfClosing ||\n this.foreignContext[this.foreignContext.length - 1]) {\n this.closeCurrentTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n else {\n // Ignore the fact that the tag is self-closing.\n this.onopentagend(endIndex);\n }\n }\n closeCurrentTag(isOpenImplied) {\n var _a, _b;\n const name = this.tagname;\n this.endOpenTag(isOpenImplied);\n // Self-closing tags will be on the top of the stack\n if (this.stack[this.stack.length - 1] === name) {\n // If the opening tag isn't implied, the closing tag has to be implied.\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name, !isOpenImplied);\n this.stack.pop();\n }\n }\n /** @internal */\n onattribname(start, endIndex) {\n this.startIndex = start;\n const name = this.getSlice(start, endIndex);\n this.attribname = this.lowerCaseAttributeNames\n ? name.toLowerCase()\n : name;\n }\n /** @internal */\n onattribdata(start, endIndex) {\n this.attribvalue += this.getSlice(start, endIndex);\n }\n /** @internal */\n onattribentity(cp) {\n this.attribvalue += fromCodePoint(cp);\n }\n /** @internal */\n onattribend(quote, endIndex) {\n var _a, _b;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote === QuoteType.Double\n ? '\"'\n : quote === QuoteType.Single\n ? \"'\"\n : quote === QuoteType.NoValue\n ? undefined\n : null);\n if (this.attribs &&\n !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {\n this.attribs[this.attribname] = this.attribvalue;\n }\n this.attribvalue = \"\";\n }\n getInstructionName(value) {\n const index = value.search(reNameEnd);\n let name = index < 0 ? value : value.substr(0, index);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n return name;\n }\n /** @internal */\n ondeclaration(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`!${name}`, `!${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onprocessinginstruction(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`?${name}`, `?${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncomment(start, endIndex, offset) {\n var _a, _b, _c, _d;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, this.getSlice(start, endIndex - offset));\n (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncdata(start, endIndex, offset) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex - offset);\n if (this.options.xmlMode || this.options.recognizeCDATA) {\n (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);\n (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);\n }\n else {\n (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`);\n (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onend() {\n var _a, _b;\n if (this.cbs.onclosetag) {\n // Set the end index for all remaining tags\n this.endIndex = this.startIndex;\n for (let index = this.stack.length; index > 0; this.cbs.onclosetag(this.stack[--index], true))\n ;\n }\n (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n /**\n * Resets the parser to a blank state, ready to parse a new HTML document\n */\n reset() {\n var _a, _b, _c, _d;\n (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.tokenizer.reset();\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribs = null;\n this.stack.length = 0;\n this.startIndex = 0;\n this.endIndex = 0;\n (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);\n this.buffers.length = 0;\n this.bufferOffset = 0;\n this.writeIndex = 0;\n this.ended = false;\n }\n /**\n * Resets the parser, then parses a complete document and\n * pushes it to the handler.\n *\n * @param data Document to parse.\n */\n parseComplete(data) {\n this.reset();\n this.end(data);\n }\n getSlice(start, end) {\n while (start - this.bufferOffset >= this.buffers[0].length) {\n this.shiftBuffer();\n }\n let slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset);\n while (end - this.bufferOffset > this.buffers[0].length) {\n this.shiftBuffer();\n slice += this.buffers[0].slice(0, end - this.bufferOffset);\n }\n return slice;\n }\n shiftBuffer() {\n this.bufferOffset += this.buffers[0].length;\n this.writeIndex--;\n this.buffers.shift();\n }\n /**\n * Parses a chunk of data and calls the corresponding callbacks.\n *\n * @param chunk Chunk to parse.\n */\n write(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".write() after done!\"));\n return;\n }\n this.buffers.push(chunk);\n if (this.tokenizer.running) {\n this.tokenizer.write(chunk);\n this.writeIndex++;\n }\n }\n /**\n * Parses the end of the buffer and clears the stack, calls onend.\n *\n * @param chunk Optional final chunk to parse.\n */\n end(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".end() after done!\"));\n return;\n }\n if (chunk)\n this.write(chunk);\n this.ended = true;\n this.tokenizer.end();\n }\n /**\n * Pauses parsing. The parser won't emit events until `resume` is called.\n */\n pause() {\n this.tokenizer.pause();\n }\n /**\n * Resumes parsing after `pause` was called.\n */\n resume() {\n this.tokenizer.resume();\n while (this.tokenizer.running &&\n this.writeIndex < this.buffers.length) {\n this.tokenizer.write(this.buffers[this.writeIndex++]);\n }\n if (this.ended)\n this.tokenizer.end();\n }\n /**\n * Alias of `write`, for backwards compatibility.\n *\n * @param chunk Chunk to parse.\n * @deprecated\n */\n parseChunk(chunk) {\n this.write(chunk);\n }\n /**\n * Alias of `end`, for backwards compatibility.\n *\n * @param chunk Optional final chunk to parse.\n * @deprecated\n */\n done(chunk) {\n this.end(chunk);\n }\n}\n//# sourceMappingURL=Parser.js.map","/** Types of elements found in htmlparser2's DOM */\nexport var ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for <? ... ?> */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for <!-- ... --> */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for <script> tags */\n ElementType[\"Script\"] = \"script\";\n /** Type for <style> tags */\n ElementType[\"Style\"] = \"style\";\n /** Type for Any tag */\n ElementType[\"Tag\"] = \"tag\";\n /** Type for <![CDATA[ ... ]]> */\n ElementType[\"CDATA\"] = \"cdata\";\n /** Type for <!doctype ...> */\n ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType || (ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nexport function isTag(elem) {\n return (elem.type === ElementType.Tag ||\n elem.type === ElementType.Script ||\n elem.type === ElementType.Style);\n}\n// Exports for backwards compatibility\n/** Type for the root element of a document */\nexport const Root = ElementType.Root;\n/** Type for Text */\nexport const Text = ElementType.Text;\n/** Type for <? ... ?> */\nexport const Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\nexport const Comment = ElementType.Comment;\n/** Type for <script> tags */\nexport const Script = ElementType.Script;\n/** Type for <style> tags */\nexport const Style = ElementType.Style;\n/** Type for Any tag */\nexport const Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\nexport const CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\nexport const Doctype = ElementType.Doctype;\n","import { ElementType, isTag as isTagRaw } from \"domelementtype\";\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nexport class Node {\n constructor() {\n /** Parent of the node */\n this.parent = null;\n /** Previous sibling */\n this.prev = null;\n /** Next sibling */\n this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n this.endIndex = null;\n }\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get parentNode() {\n return this.parent;\n }\n set parentNode(parent) {\n this.parent = parent;\n }\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get previousSibling() {\n return this.prev;\n }\n set previousSibling(prev) {\n this.prev = prev;\n }\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nextSibling() {\n return this.next;\n }\n set nextSibling(next) {\n this.next = next;\n }\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\n cloneNode(recursive = false) {\n return cloneNode(this, recursive);\n }\n}\n/**\n * A node that contains some data.\n */\nexport class DataNode extends Node {\n /**\n * @param data The content of the data node\n */\n constructor(data) {\n super();\n this.data = data;\n }\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nodeValue() {\n return this.data;\n }\n set nodeValue(data) {\n this.data = data;\n }\n}\n/**\n * Text within the document.\n */\nexport class Text extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Text;\n }\n get nodeType() {\n return 3;\n }\n}\n/**\n * Comments within the document.\n */\nexport class Comment extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Comment;\n }\n get nodeType() {\n return 8;\n }\n}\n/**\n * Processing instructions, including doc types.\n */\nexport class ProcessingInstruction extends DataNode {\n constructor(name, data) {\n super(data);\n this.name = name;\n this.type = ElementType.Directive;\n }\n get nodeType() {\n return 1;\n }\n}\n/**\n * A `Node` that can have children.\n */\nexport class NodeWithChildren extends Node {\n /**\n * @param children Children of the node. Only certain node types can have children.\n */\n constructor(children) {\n super();\n this.children = children;\n }\n // Aliases\n /** First child of the node. */\n get firstChild() {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n }\n /** Last child of the node. */\n get lastChild() {\n return this.children.length > 0\n ? this.children[this.children.length - 1]\n : null;\n }\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get childNodes() {\n return this.children;\n }\n set childNodes(children) {\n this.children = children;\n }\n}\nexport class CDATA extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.CDATA;\n }\n get nodeType() {\n return 4;\n }\n}\n/**\n * The root node of the document.\n */\nexport class Document extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.Root;\n }\n get nodeType() {\n return 9;\n }\n}\n/**\n * An element within the DOM.\n */\nexport class Element extends NodeWithChildren {\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */\n constructor(name, attribs, children = [], type = name === \"script\"\n ? ElementType.Script\n : name === \"style\"\n ? ElementType.Style\n : ElementType.Tag) {\n super(children);\n this.name = name;\n this.attribs = attribs;\n this.type = type;\n }\n get nodeType() {\n return 1;\n }\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get tagName() {\n return this.name;\n }\n set tagName(name) {\n this.name = name;\n }\n get attributes() {\n return Object.keys(this.attribs).map((name) => {\n var _a, _b;\n return ({\n name,\n value: this.attribs[name],\n namespace: (_a = this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n });\n });\n }\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nexport function isTag(node) {\n return isTagRaw(node);\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nexport function isCDATA(node) {\n return node.type === ElementType.CDATA;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nexport function isText(node) {\n return node.type === ElementType.Text;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nexport function isComment(node) {\n return node.type === ElementType.Comment;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDirective(node) {\n return node.type === ElementType.Directive;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDocument(node) {\n return node.type === ElementType.Root;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has children, `false` otherwise.\n */\nexport function hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nexport function cloneNode(node, recursive = false) {\n let result;\n if (isText(node)) {\n result = new Text(node.data);\n }\n else if (isComment(node)) {\n result = new Comment(node.data);\n }\n else if (isTag(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Element(node.name, { ...node.attribs }, children);\n children.forEach((child) => (child.parent = clone));\n if (node.namespace != null) {\n clone.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone[\"x-attribsNamespace\"] = { ...node[\"x-attribsNamespace\"] };\n }\n if (node[\"x-attribsPrefix\"]) {\n clone[\"x-attribsPrefix\"] = { ...node[\"x-attribsPrefix\"] };\n }\n result = clone;\n }\n else if (isCDATA(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new CDATA(children);\n children.forEach((child) => (child.parent = clone));\n result = clone;\n }\n else if (isDocument(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Document(children);\n children.forEach((child) => (child.parent = clone));\n if (node[\"x-mode\"]) {\n clone[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone;\n }\n else if (isDirective(node)) {\n const instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n }\n else {\n throw new Error(`Not implemented yet: ${node.type}`);\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n}\nfunction cloneChildren(childs) {\n const children = childs.map((child) => cloneNode(child, true));\n for (let i = 1; i < children.length; i++) {\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n","import { ElementType } from \"domelementtype\";\nimport { Element, Text, Comment, CDATA, Document, ProcessingInstruction, } from \"./node.js\";\nexport * from \"./node.js\";\n// Default options\nconst defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nexport class DomHandler {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n constructor(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? ElementType.Tag : undefined;\n const element = new Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode } = this;\n if (lastNode && lastNode.type === ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n const node = new Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new Comment(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new Text(\"\");\n const node = new CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new ProcessingInstruction(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nexport default DomHandler;\n","export const xmlReplacer = /[\"&'<>$\\x80-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n [34, \""\"],\n [38, \"&\"],\n [39, \"'\"],\n [60, \"<\"],\n [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? (str, index) => str.codePointAt(index)\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n (c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800\n ? (c.charCodeAt(index) - 0xd800) * 0x400 +\n c.charCodeAt(index + 1) -\n 0xdc00 +\n 0x10000\n : c.charCodeAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexport function encodeXML(str) {\n let ret = \"\";\n let lastIdx = 0;\n let match;\n while ((match = xmlReplacer.exec(str)) !== null) {\n const i = match.index;\n const char = str.charCodeAt(i);\n const next = xmlCodeMap.get(char);\n if (next !== undefined) {\n ret += str.substring(lastIdx, i) + next;\n lastIdx = i + 1;\n }\n else {\n ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIdx = xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);\n }\n }\n return ret + str.substr(lastIdx);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n return function escape(data) {\n let match;\n let lastIdx = 0;\n let result = \"\";\n while ((match = regex.exec(data))) {\n if (lastIdx !== match.index) {\n result += data.substring(lastIdx, match.index);\n }\n // We know that this character will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIdx = match.index + 1;\n }\n return result + data.substring(lastIdx);\n };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = getEscaper(/[&<>'\"]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = getEscaper(/[\"&\\u00A0]/g, new Map([\n [34, \""\"],\n [38, \"&\"],\n [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = getEscaper(/[&<>\\u00A0]/g, new Map([\n [38, \"&\"],\n [60, \"<\"],\n [62, \">\"],\n [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","export const elementNames = 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 \"feDropShadow\",\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((val) => [val.toLowerCase(), val]));\nexport const attributeNames = new Map([\n \"definitionURL\",\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((val) => [val.toLowerCase(), val]));\n","/*\n * Module dependencies\n */\nimport * as ElementType from \"domelementtype\";\nimport { encodeXML, escapeAttribute, escapeText } from \"entities\";\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nimport { elementNames, attributeNames } from \"./foreignNames.js\";\nconst unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\",\n]);\nfunction replaceQuotes(value) {\n return value.replace(/\"/g, \""\");\n}\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n var _a;\n if (!attributes)\n return;\n const encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false\n ? replaceQuotes\n : opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML\n : escapeAttribute;\n return Object.keys(attributes)\n .map((key) => {\n var _a, _b;\n const value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case attribute names */\n key = (_b = attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return `${key}=\"${encode(value)}\"`;\n })\n .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nconst singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nexport function render(node, options = {}) {\n const nodes = \"length\" in node ? node : [node];\n let output = \"\";\n for (let i = 0; i < nodes.length; i++) {\n output += renderNode(nodes[i], options);\n }\n return output;\n}\nexport default render;\nfunction renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render(node.children, options);\n // @ts-expect-error We don't use `Doctype` yet\n case ElementType.Doctype:\n case ElementType.Directive:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n}\nconst foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nconst foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */\n elem.name = (_a = elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */\n if (elem.parent &&\n foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = { ...opts, xmlMode: false };\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = { ...opts, xmlMode: \"foreign\" };\n }\n let tag = `<${elem.name}`;\n const attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += ` ${attribs}`;\n }\n if (elem.children.length === 0 &&\n (opts.xmlMode\n ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n opts.selfClosingTags !== false\n : // User explicitly asked for self-closing tags, even in HTML mode\n opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n }\n else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += `</${elem.name}>`;\n }\n }\n return tag;\n}\nfunction renderDirective(elem) {\n return `<${elem.data}>`;\n}\nfunction renderText(elem, opts) {\n var _a;\n let data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false &&\n !(!opts.xmlMode &&\n elem.parent &&\n unencodedElements.has(elem.parent.name))) {\n data =\n opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML(data)\n : escapeText(data);\n }\n return data;\n}\nfunction renderCdata(elem) {\n return `<![CDATA[${elem.children[0].data}]]>`;\n}\nfunction renderComment(elem) {\n return `<!--${elem.data}-->`;\n}\n","import { isTag, isCDATA, isText, hasChildren, isComment, } from \"domhandler\";\nimport renderHTML from \"dom-serializer\";\nimport { ElementType } from \"domelementtype\";\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the outer HTML of.\n * @param options Options for serialization.\n * @returns `node`'s outer HTML.\n */\nexport function getOuterHTML(node, options) {\n return renderHTML(node, options);\n}\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the inner HTML of.\n * @param options Options for serialization.\n * @returns `node`'s inner HTML.\n */\nexport function getInnerHTML(node, options) {\n return hasChildren(node)\n ? node.children.map((node) => getOuterHTML(node, options)).join(\"\")\n : \"\";\n}\n/**\n * Get a node's inner text. Same as `textContent`, but inserts newlines for `<br>` tags. Ignores comments.\n *\n * @category Stringify\n * @deprecated Use `textContent` instead.\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n */\nexport function getText(node) {\n if (Array.isArray(node))\n return node.map(getText).join(\"\");\n if (isTag(node))\n return node.name === \"br\" ? \"\\n\" : getText(node.children);\n if (isCDATA(node))\n return getText(node.children);\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's text content. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the text content of.\n * @returns `node`'s text content.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent}\n */\nexport function textContent(node) {\n if (Array.isArray(node))\n return node.map(textContent).join(\"\");\n if (hasChildren(node) && !isComment(node)) {\n return textContent(node.children);\n }\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's inner text, ignoring `<script>` and `<style>` tags. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText}\n */\nexport function innerText(node) {\n if (Array.isArray(node))\n return node.map(innerText).join(\"\");\n if (hasChildren(node) && (node.type === ElementType.Tag || isCDATA(node))) {\n return innerText(node.children);\n }\n if (isText(node))\n return node.data;\n return \"\";\n}\n//# sourceMappingURL=stringify.js.map","import { isTag, hasChildren, } from \"domhandler\";\n/**\n * Get a node's children.\n *\n * @category Traversal\n * @param elem Node to get the children of.\n * @returns `elem`'s children, or an empty array.\n */\nexport function getChildren(elem) {\n return hasChildren(elem) ? elem.children : [];\n}\n/**\n * Get a node's parent.\n *\n * @category Traversal\n * @param elem Node to get the parent of.\n * @returns `elem`'s parent node, or `null` if `elem` is a root node.\n */\nexport function getParent(elem) {\n return elem.parent || null;\n}\n/**\n * Gets an elements siblings, including the element itself.\n *\n * Attempts to get the children through the element's parent first. If we don't\n * have a parent (the element is a root node), we walk the element's `prev` &\n * `next` to get all remaining nodes.\n *\n * @category Traversal\n * @param elem Element to get the siblings of.\n * @returns `elem`'s siblings, including `elem`.\n */\nexport function getSiblings(elem) {\n const parent = getParent(elem);\n if (parent != null)\n return getChildren(parent);\n const siblings = [elem];\n let { prev, next } = elem;\n while (prev != null) {\n siblings.unshift(prev);\n ({ prev } = prev);\n }\n while (next != null) {\n siblings.push(next);\n ({ next } = next);\n }\n return siblings;\n}\n/**\n * Gets an attribute from an element.\n *\n * @category Traversal\n * @param elem Element to check.\n * @param name Attribute name to retrieve.\n * @returns The element's attribute value, or `undefined`.\n */\nexport function getAttributeValue(elem, name) {\n var _a;\n return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name];\n}\n/**\n * Checks whether an element has an attribute.\n *\n * @category Traversal\n * @param elem Element to check.\n * @param name Attribute name to look for.\n * @returns Returns whether `elem` has the attribute `name`.\n */\nexport function hasAttrib(elem, name) {\n return (elem.attribs != null &&\n Object.prototype.hasOwnProperty.call(elem.attribs, name) &&\n elem.attribs[name] != null);\n}\n/**\n * Get the tag name of an element.\n *\n * @category Traversal\n * @param elem The element to get the name for.\n * @returns The tag name of `elem`.\n */\nexport function getName(elem) {\n return elem.name;\n}\n/**\n * Returns the next element sibling of a node.\n *\n * @category Traversal\n * @param elem The element to get the next sibling of.\n * @returns `elem`'s next sibling that is a tag, or `null` if there is no next\n * sibling.\n */\nexport function nextElementSibling(elem) {\n let { next } = elem;\n while (next !== null && !isTag(next))\n ({ next } = next);\n return next;\n}\n/**\n * Returns the previous element sibling of a node.\n *\n * @category Traversal\n * @param elem The element to get the previous sibling of.\n * @returns `elem`'s previous sibling that is a tag, or `null` if there is no\n * previous sibling.\n */\nexport function prevElementSibling(elem) {\n let { prev } = elem;\n while (prev !== null && !isTag(prev))\n ({ prev } = prev);\n return prev;\n}\n//# sourceMappingURL=traversal.js.map","/**\n * Remove an element from the dom\n *\n * @category Manipulation\n * @param elem The element to be removed\n */\nexport function removeElement(elem) {\n if (elem.prev)\n elem.prev.next = elem.next;\n if (elem.next)\n elem.next.prev = elem.prev;\n if (elem.parent) {\n const childs = elem.parent.children;\n const childsIndex = childs.lastIndexOf(elem);\n if (childsIndex >= 0) {\n childs.splice(childsIndex, 1);\n }\n }\n elem.next = null;\n elem.prev = null;\n elem.parent = null;\n}\n/**\n * Replace an element in the dom\n *\n * @category Manipulation\n * @param elem The element to be replaced\n * @param replacement The element to be added\n */\nexport function replaceElement(elem, replacement) {\n const prev = (replacement.prev = elem.prev);\n if (prev) {\n prev.next = replacement;\n }\n const next = (replacement.next = elem.next);\n if (next) {\n next.prev = replacement;\n }\n const parent = (replacement.parent = elem.parent);\n if (parent) {\n const childs = parent.children;\n childs[childs.lastIndexOf(elem)] = replacement;\n elem.parent = null;\n }\n}\n/**\n * Append a child to an element.\n *\n * @category Manipulation\n * @param parent The element to append to.\n * @param child The element to be added as a child.\n */\nexport function appendChild(parent, child) {\n removeElement(child);\n child.next = null;\n child.parent = parent;\n if (parent.children.push(child) > 1) {\n const sibling = parent.children[parent.children.length - 2];\n sibling.next = child;\n child.prev = sibling;\n }\n else {\n child.prev = null;\n }\n}\n/**\n * Append an element after another.\n *\n * @category Manipulation\n * @param elem The element to append after.\n * @param next The element be added.\n */\nexport function append(elem, next) {\n removeElement(next);\n const { parent } = elem;\n const currNext = elem.next;\n next.next = currNext;\n next.prev = elem;\n elem.next = next;\n next.parent = parent;\n if (currNext) {\n currNext.prev = next;\n if (parent) {\n const childs = parent.children;\n childs.splice(childs.lastIndexOf(currNext), 0, next);\n }\n }\n else if (parent) {\n parent.children.push(next);\n }\n}\n/**\n * Prepend a child to an element.\n *\n * @category Manipulation\n * @param parent The element to prepend before.\n * @param child The element to be added as a child.\n */\nexport function prependChild(parent, child) {\n removeElement(child);\n child.parent = parent;\n child.prev = null;\n if (parent.children.unshift(child) !== 1) {\n const sibling = parent.children[1];\n sibling.prev = child;\n child.next = sibling;\n }\n else {\n child.next = null;\n }\n}\n/**\n * Prepend an element before another.\n *\n * @category Manipulation\n * @param elem The element to prepend before.\n * @param prev The element be added.\n */\nexport function prepend(elem, prev) {\n removeElement(prev);\n const { parent } = elem;\n if (parent) {\n const childs = parent.children;\n childs.splice(childs.indexOf(elem), 0, prev);\n }\n if (elem.prev) {\n elem.prev.next = prev;\n }\n prev.parent = parent;\n prev.prev = elem.prev;\n prev.next = elem;\n elem.prev = prev;\n}\n//# sourceMappingURL=manipulation.js.map","import { isTag, hasChildren } from \"domhandler\";\n/**\n * Search a node and its children for nodes passing a test function. If `node` is not an array, it will be wrapped in one.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param node Node to search. Will be included in the result set if it matches.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nexport function filter(test, node, recurse = true, limit = Infinity) {\n return find(test, Array.isArray(node) ? node : [node], recurse, limit);\n}\n/**\n * Search an array of nodes and their children for nodes passing a test function.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nexport function find(test, nodes, recurse, limit) {\n const result = [];\n /** Stack of the arrays we are looking at. */\n const nodeStack = [nodes];\n /** Stack of the indices within the arrays. */\n const indexStack = [0];\n for (;;) {\n // First, check if the current array has any more elements to look at.\n if (indexStack[0] >= nodeStack[0].length) {\n // If we have no more arrays to look at, we are done.\n if (indexStack.length === 1) {\n return result;\n }\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n // Loop back to the start to continue with the next array.\n continue;\n }\n const elem = nodeStack[0][indexStack[0]++];\n if (test(elem)) {\n result.push(elem);\n if (--limit <= 0)\n return result;\n }\n if (recurse && hasChildren(elem) && elem.children.length > 0) {\n /*\n * Add the children to the stack. We are depth-first, so this is\n * the next array we look at.\n */\n indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\n/**\n * Finds the first element inside of an array that matches a test function. This is an alias for `Array.prototype.find`.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns The first node in the array that passes `test`.\n * @deprecated Use `Array.prototype.find` directly.\n */\nexport function findOneChild(test, nodes) {\n return nodes.find(test);\n}\n/**\n * Finds one element in a tree that passes a test.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Node or array of nodes to search.\n * @param recurse Also consider child nodes.\n * @returns The first node that passes `test`.\n */\nexport function findOne(test, nodes, recurse = true) {\n let elem = null;\n for (let i = 0; i < nodes.length && !elem; i++) {\n const node = nodes[i];\n if (!isTag(node)) {\n continue;\n }\n else if (test(node)) {\n elem = node;\n }\n else if (recurse && node.children.length > 0) {\n elem = findOne(test, node.children, true);\n }\n }\n return elem;\n}\n/**\n * Checks if a tree of nodes contains at least one node passing a test.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns Whether a tree of nodes contains at least one node passing the test.\n */\nexport function existsOne(test, nodes) {\n return nodes.some((checked) => isTag(checked) &&\n (test(checked) || existsOne(test, checked.children)));\n}\n/**\n * Search an array of nodes and their children for elements passing a test function.\n *\n * Same as `find`, but limited to elements and with less options, leading to reduced complexity.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns All nodes passing `test`.\n */\nexport function findAll(test, nodes) {\n const result = [];\n const nodeStack = [nodes];\n const indexStack = [0];\n for (;;) {\n if (indexStack[0] >= nodeStack[0].length) {\n if (nodeStack.length === 1) {\n return result;\n }\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n // Loop back to the start to continue with the next array.\n continue;\n }\n const elem = nodeStack[0][indexStack[0]++];\n if (!isTag(elem))\n continue;\n if (test(elem))\n result.push(elem);\n if (elem.children.length > 0) {\n indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\n//# sourceMappingURL=querying.js.map","import { isTag, isText } from \"domhandler\";\nimport { filter, findOne } from \"./querying.js\";\n/**\n * A map of functions to check nodes against.\n */\nconst Checks = {\n tag_name(name) {\n if (typeof name === \"function\") {\n return (elem) => isTag(elem) && name(elem.name);\n }\n else if (name === \"*\") {\n return isTag;\n }\n return (elem) => isTag(elem) && elem.name === name;\n },\n tag_type(type) {\n if (typeof type === \"function\") {\n return (elem) => type(elem.type);\n }\n return (elem) => elem.type === type;\n },\n tag_contains(data) {\n if (typeof data === \"function\") {\n return (elem) => isText(elem) && data(elem.data);\n }\n return (elem) => isText(elem) && elem.data === data;\n },\n};\n/**\n * Returns a function to check whether a node has an attribute with a particular\n * value.\n *\n * @param attrib Attribute to check.\n * @param value Attribute value to look for.\n * @returns A function to check whether the a node has an attribute with a\n * particular value.\n */\nfunction getAttribCheck(attrib, value) {\n if (typeof value === \"function\") {\n return (elem) => isTag(elem) && value(elem.attribs[attrib]);\n }\n return (elem) => isTag(elem) && elem.attribs[attrib] === value;\n}\n/**\n * Returns a function that returns `true` if either of the input functions\n * returns `true` for a node.\n *\n * @param a First function to combine.\n * @param b Second function to combine.\n * @returns A function taking a node and returning `true` if either of the input\n * functions returns `true` for the node.\n */\nfunction combineFuncs(a, b) {\n return (elem) => a(elem) || b(elem);\n}\n/**\n * Returns a function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n *\n * @param options An object describing nodes to look for.\n * @returns A function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n */\nfunction compileTest(options) {\n const funcs = Object.keys(options).map((key) => {\n const value = options[key];\n return Object.prototype.hasOwnProperty.call(Checks, key)\n ? Checks[key](value)\n : getAttribCheck(key, value);\n });\n return funcs.length === 0 ? null : funcs.reduce(combineFuncs);\n}\n/**\n * Checks whether a node matches the description in `options`.\n *\n * @category Legacy Query Functions\n * @param options An object describing nodes to look for.\n * @param node The element to test.\n * @returns Whether the element matches the description in `options`.\n */\nexport function testElement(options, node) {\n const test = compileTest(options);\n return test ? test(node) : true;\n}\n/**\n * Returns all nodes that match `options`.\n *\n * @category Legacy Query Functions\n * @param options An object describing nodes to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes that match `options`.\n */\nexport function getElements(options, nodes, recurse, limit = Infinity) {\n const test = compileTest(options);\n return test ? filter(test, nodes, recurse, limit) : [];\n}\n/**\n * Returns the node with the supplied ID.\n *\n * @category Legacy Query Functions\n * @param id The unique ID attribute value to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @returns The node with the supplied ID.\n */\nexport function getElementById(id, nodes, recurse = true) {\n if (!Array.isArray(nodes))\n nodes = [nodes];\n return findOne(getAttribCheck(\"id\", id), nodes, recurse);\n}\n/**\n * Returns all nodes with the supplied `tagName`.\n *\n * @category Legacy Query Functions\n * @param tagName Tag name to search for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `tagName`.\n */\nexport function getElementsByTagName(tagName, nodes, recurse = true, limit = Infinity) {\n return filter(Checks[\"tag_name\"](tagName), nodes, recurse, limit);\n}\n/**\n * Returns all nodes with the supplied `type`.\n *\n * @category Legacy Query Functions\n * @param type Element type to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `type`.\n */\nexport function getElementsByTagType(type, nodes, recurse = true, limit = Infinity) {\n return filter(Checks[\"tag_type\"](type), nodes, recurse, limit);\n}\n//# sourceMappingURL=legacy.js.map","import { hasChildren } from \"domhandler\";\n/**\n * Given an array of nodes, remove any member that is contained by another\n * member.\n *\n * @category Helpers\n * @param nodes Nodes to filter.\n * @returns Remaining nodes that aren't contained by other nodes.\n */\nexport function removeSubsets(nodes) {\n let idx = nodes.length;\n /*\n * Check if each node (or one of its ancestors) is already contained in the\n * array.\n */\n while (--idx >= 0) {\n const node = nodes[idx];\n /*\n * Remove the node if it is not unique.\n * We are going through the array from the end, so we only\n * have to check nodes that preceed the node under consideration in the array.\n */\n if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) {\n nodes.splice(idx, 1);\n continue;\n }\n for (let ancestor = node.parent; ancestor; ancestor = ancestor.parent) {\n if (nodes.includes(ancestor)) {\n nodes.splice(idx, 1);\n break;\n }\n }\n }\n return nodes;\n}\n/**\n * @category Helpers\n * @see {@link http://dom.spec.whatwg.org/#dom-node-comparedocumentposition}\n */\nexport var DocumentPosition;\n(function (DocumentPosition) {\n DocumentPosition[DocumentPosition[\"DISCONNECTED\"] = 1] = \"DISCONNECTED\";\n DocumentPosition[DocumentPosition[\"PRECEDING\"] = 2] = \"PRECEDING\";\n DocumentPosition[DocumentPosition[\"FOLLOWING\"] = 4] = \"FOLLOWING\";\n DocumentPosition[DocumentPosition[\"CONTAINS\"] = 8] = \"CONTAINS\";\n DocumentPosition[DocumentPosition[\"CONTAINED_BY\"] = 16] = \"CONTAINED_BY\";\n})(DocumentPosition || (DocumentPosition = {}));\n/**\n * Compare the position of one node against another node in any other document,\n * returning a bitmask with the values from {@link DocumentPosition}.\n *\n * Document order:\n * > There is an ordering, document order, defined on all the nodes in the\n * > document corresponding to the order in which the first character of the\n * > XML representation of each node occurs in the XML representation of the\n * > document after expansion of general entities. Thus, the document element\n * > node will be the first node. Element nodes occur before their children.\n * > Thus, document order orders element nodes in order of the occurrence of\n * > their start-tag in the XML (after expansion of entities). The attribute\n * > nodes of an element occur after the element and before its children. The\n * > relative order of attribute nodes is implementation-dependent.\n *\n * Source:\n * http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order\n *\n * @category Helpers\n * @param nodeA The first node to use in the comparison\n * @param nodeB The second node to use in the comparison\n * @returns A bitmask describing the input nodes' relative position.\n *\n * See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for\n * a description of these values.\n */\nexport function compareDocumentPosition(nodeA, nodeB) {\n const aParents = [];\n const bParents = [];\n if (nodeA === nodeB) {\n return 0;\n }\n let current = hasChildren(nodeA) ? nodeA : nodeA.parent;\n while (current) {\n aParents.unshift(current);\n current = current.parent;\n }\n current = hasChildren(nodeB) ? nodeB : nodeB.parent;\n while (current) {\n bParents.unshift(current);\n current = current.parent;\n }\n const maxIdx = Math.min(aParents.length, bParents.length);\n let idx = 0;\n while (idx < maxIdx && aParents[idx] === bParents[idx]) {\n idx++;\n }\n if (idx === 0) {\n return DocumentPosition.DISCONNECTED;\n }\n const sharedParent = aParents[idx - 1];\n const siblings = sharedParent.children;\n const aSibling = aParents[idx];\n const bSibling = bParents[idx];\n if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n if (sharedParent === nodeB) {\n return DocumentPosition.FOLLOWING | DocumentPosition.CONTAINED_BY;\n }\n return DocumentPosition.FOLLOWING;\n }\n if (sharedParent === nodeA) {\n return DocumentPosition.PRECEDING | DocumentPosition.CONTAINS;\n }\n return DocumentPosition.PRECEDING;\n}\n/**\n * Sort an array of nodes based on their relative position in the document,\n * removing any duplicate nodes. If the array contains nodes that do not belong\n * to the same document, sort order is unspecified.\n *\n * @category Helpers\n * @param nodes Array of DOM nodes.\n * @returns Collection of unique nodes, sorted in document order.\n */\nexport function uniqueSort(nodes) {\n nodes = nodes.filter((node, i, arr) => !arr.includes(node, i + 1));\n nodes.sort((a, b) => {\n const relative = compareDocumentPosition(a, b);\n if (relative & DocumentPosition.PRECEDING) {\n return -1;\n }\n else if (relative & DocumentPosition.FOLLOWING) {\n return 1;\n }\n return 0;\n });\n return nodes;\n}\n//# sourceMappingURL=helpers.js.map","import { textContent } from \"./stringify.js\";\nimport { getElementsByTagName } from \"./legacy.js\";\n/**\n * Get the feed object from the root of a DOM tree.\n *\n * @category Feeds\n * @param doc - The DOM to to extract the feed from.\n * @returns The feed.\n */\nexport function getFeed(doc) {\n const feedRoot = getOneElement(isValidFeed, doc);\n return !feedRoot\n ? null\n : feedRoot.name === \"feed\"\n ? getAtomFeed(feedRoot)\n : getRssFeed(feedRoot);\n}\n/**\n * Parse an Atom feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getAtomFeed(feedRoot) {\n var _a;\n const childs = feedRoot.children;\n const feed = {\n type: \"atom\",\n items: getElementsByTagName(\"entry\", childs).map((item) => {\n var _a;\n const { children } = item;\n const entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"id\", children);\n addConditionally(entry, \"title\", \"title\", children);\n const href = (_a = getOneElement(\"link\", children)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) {\n entry.link = href;\n }\n const description = fetch(\"summary\", children) || fetch(\"content\", children);\n if (description) {\n entry.description = description;\n }\n const pubDate = fetch(\"updated\", children);\n if (pubDate) {\n entry.pubDate = new Date(pubDate);\n }\n return entry;\n }),\n };\n addConditionally(feed, \"id\", \"id\", childs);\n addConditionally(feed, \"title\", \"title\", childs);\n const href = (_a = getOneElement(\"link\", childs)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) {\n feed.link = href;\n }\n addConditionally(feed, \"description\", \"subtitle\", childs);\n const updated = fetch(\"updated\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"email\", childs, true);\n return feed;\n}\n/**\n * Parse a RSS feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getRssFeed(feedRoot) {\n var _a, _b;\n const childs = (_b = (_a = getOneElement(\"channel\", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : [];\n const feed = {\n type: feedRoot.name.substr(0, 3),\n id: \"\",\n items: getElementsByTagName(\"item\", feedRoot.children).map((item) => {\n const { children } = item;\n const entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"guid\", children);\n addConditionally(entry, \"title\", \"title\", children);\n addConditionally(entry, \"link\", \"link\", children);\n addConditionally(entry, \"description\", \"description\", children);\n const pubDate = fetch(\"pubDate\", children) || fetch(\"dc:date\", children);\n if (pubDate)\n entry.pubDate = new Date(pubDate);\n return entry;\n }),\n };\n addConditionally(feed, \"title\", \"title\", childs);\n addConditionally(feed, \"link\", \"link\", childs);\n addConditionally(feed, \"description\", \"description\", childs);\n const updated = fetch(\"lastBuildDate\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"managingEditor\", childs, true);\n return feed;\n}\nconst MEDIA_KEYS_STRING = [\"url\", \"type\", \"lang\"];\nconst MEDIA_KEYS_INT = [\n \"fileSize\",\n \"bitrate\",\n \"framerate\",\n \"samplingrate\",\n \"channels\",\n \"duration\",\n \"height\",\n \"width\",\n];\n/**\n * Get all media elements of a feed item.\n *\n * @param where Nodes to search in.\n * @returns Media elements.\n */\nfunction getMediaElements(where) {\n return getElementsByTagName(\"media:content\", where).map((elem) => {\n const { attribs } = elem;\n const media = {\n medium: attribs[\"medium\"],\n isDefault: !!attribs[\"isDefault\"],\n };\n for (const attrib of MEDIA_KEYS_STRING) {\n if (attribs[attrib]) {\n media[attrib] = attribs[attrib];\n }\n }\n for (const attrib of MEDIA_KEYS_INT) {\n if (attribs[attrib]) {\n media[attrib] = parseInt(attribs[attrib], 10);\n }\n }\n if (attribs[\"expression\"]) {\n media.expression = attribs[\"expression\"];\n }\n return media;\n });\n}\n/**\n * Get one element by tag name.\n *\n * @param tagName Tag name to look for\n * @param node Node to search in\n * @returns The element or null\n */\nfunction getOneElement(tagName, node) {\n return getElementsByTagName(tagName, node, true, 1)[0];\n}\n/**\n * Get the text content of an element with a certain tag name.\n *\n * @param tagName Tag name to look for.\n * @param where Node to search in.\n * @param recurse Whether to recurse into child nodes.\n * @returns The text content of the element.\n */\nfunction fetch(tagName, where, recurse = false) {\n return textContent(getElementsByTagName(tagName, where, recurse, 1)).trim();\n}\n/**\n * Adds a property to an object if it has a value.\n *\n * @param obj Object to be extended\n * @param prop Property name\n * @param tagName Tag name that contains the conditionally added property\n * @param where Element to search for the property\n * @param recurse Whether to recurse into child nodes.\n */\nfunction addConditionally(obj, prop, tagName, where, recurse = false) {\n const val = fetch(tagName, where, recurse);\n if (val)\n obj[prop] = val;\n}\n/**\n * Checks if an element is a feed root node.\n *\n * @param value The name of the element to check.\n * @returns Whether an element is a feed root node.\n */\nfunction isValidFeed(value) {\n return value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n}\n//# sourceMappingURL=feeds.js.map","import { Parser } from \"./Parser.js\";\nexport { Parser } from \"./Parser.js\";\nimport { DomHandler, } from \"domhandler\";\nexport { DomHandler, \n// Old name for DomHandler\nDomHandler as DefaultHandler, } from \"domhandler\";\n// Helper methods\n/**\n * Parses the data, returns the resulting document.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM builder.\n */\nexport function parseDocument(data, options) {\n const handler = new DomHandler(undefined, options);\n new Parser(handler, options).end(data);\n return handler.root;\n}\n/**\n * Parses data, returns an array of the root nodes.\n *\n * Note that the root nodes still have a `Document` node as their parent.\n * Use `parseDocument` to get the `Document` node instead.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM builder.\n * @deprecated Use `parseDocument` instead.\n */\nexport function parseDOM(data, options) {\n return parseDocument(data, options).children;\n}\n/**\n * Creates a parser instance, with an attached DOM handler.\n *\n * @param callback A callback that will be called once parsing has been completed.\n * @param options Optional options for the parser and DOM builder.\n * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.\n */\nexport function createDomStream(callback, options, elementCallback) {\n const handler = new DomHandler(callback, options, elementCallback);\n return new Parser(handler, options);\n}\nexport { default as Tokenizer, } from \"./Tokenizer.js\";\n/*\n * All of the following exports exist for backwards-compatibility.\n * They should probably be removed eventually.\n */\nexport * as ElementType from \"domelementtype\";\nimport { getFeed } from \"domutils\";\nexport { getFeed } from \"domutils\";\nconst parseFeedDefaultOptions = { xmlMode: true };\n/**\n * Parse a feed.\n *\n * @param feed The feed that should be parsed, as a string.\n * @param options Optionally, options for parsing. When using this, you should set `xmlMode` to `true`.\n */\nexport function parseFeed(feed, options = parseFeedDefaultOptions) {\n return getFeed(parseDOM(feed, options));\n}\nexport * as DomUtils from \"domutils\";\n//# sourceMappingURL=index.js.map","// Internal\nexport const NODE_END = -1;\n\n// Node\nexport const ELEMENT_NODE = 1;\nexport const ATTRIBUTE_NODE = 2;\nexport const TEXT_NODE = 3;\nexport const COMMENT_NODE = 8;\nexport const DOCUMENT_NODE = 9;\nexport const DOCUMENT_TYPE_NODE = 10;\nexport const DOCUMENT_FRAGMENT_NODE = 11;\n\n// Elements\nexport const BLOCK_ELEMENTS = new Set(['ARTICLE', 'ASIDE', 'BLOCKQUOTE', 'BODY', 'BR', 'BUTTON', 'CANVAS', 'CAPTION', 'COL', 'COLGROUP', 'DD', 'DIV', 'DL', 'DT', 'EMBED', 'FIELDSET', 'FIGCAPTION', 'FIGURE', 'FOOTER', 'FORM', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'LI', 'UL', 'OL', 'P']);\n\n// TreeWalker\nexport const SHOW_ALL = -1;\nexport const SHOW_ELEMENT = 1;\nexport const SHOW_TEXT = 4;\nexport const SHOW_COMMENT = 128;\n\n// Document position\nexport const DOCUMENT_POSITION_DISCONNECTED = 0x01;\nexport const DOCUMENT_POSITION_PRECEDING = 0x02;\nexport const DOCUMENT_POSITION_FOLLOWING = 0x04;\nexport const DOCUMENT_POSITION_CONTAINS = 0x08;\nexport const DOCUMENT_POSITION_CONTAINED_BY = 0x10;\nexport const DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;\n\n// SVG\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n","const {\n assign,\n create,\n defineProperties,\n entries,\n getOwnPropertyDescriptors,\n keys,\n setPrototypeOf\n} = Object;\n\nexport {\n assign,\n create,\n defineProperties,\n entries,\n getOwnPropertyDescriptors,\n keys,\n setPrototypeOf\n};\n","import {ELEMENT_NODE} from './constants.js';\nimport {END, MIME, NEXT, PREV} from './symbols.js';\n\nconst $String = String;\nexport {$String as String};\n\nexport const getEnd = node => node.nodeType === ELEMENT_NODE ? node[END] : node;\n\nexport const ignoreCase = ({ownerDocument}) => ownerDocument[MIME].ignoreCase;\n\nexport const knownAdjacent = (prev, next) => {\n prev[NEXT] = next;\n next[PREV] = prev;\n};\n\nexport const knownBoundaries = (prev, current, next) => {\n knownAdjacent(prev, current);\n knownAdjacent(getEnd(current), next);\n};\n\nexport const knownSegment = (prev, start, end, next) => {\n knownAdjacent(prev, start);\n knownAdjacent(getEnd(end), next);\n};\n\nexport const knownSiblings = (prev, current, next) => {\n knownAdjacent(prev, current);\n knownAdjacent(current, next);\n};\n\nexport const localCase = ({localName, ownerDocument}) => {\n return ownerDocument[MIME].ignoreCase ? localName.toUpperCase() : localName;\n};\n\nexport const setAdjacent = (prev, next) => {\n if (prev)\n prev[NEXT] = next;\n if (next)\n next[PREV] = prev;\n};\n","export const shadowRoots = new WeakMap;\n","import {ELEMENT_NODE} from '../shared/constants.js';\nimport {END, NEXT, UPGRADE} from '../shared/symbols.js';\nimport {entries, setPrototypeOf} from '../shared/object.js';\nimport {shadowRoots} from '../shared/shadow-roots.js';\n\nlet reactive = false;\n\nexport const Classes = new WeakMap;\n\nexport const customElements = new WeakMap;\n\nexport const attributeChangedCallback = (element, attributeName, oldValue, newValue) => {\n if (\n reactive &&\n customElements.has(element) &&\n element.attributeChangedCallback &&\n element.constructor.observedAttributes.includes(attributeName)\n ) {\n element.attributeChangedCallback(attributeName, oldValue, newValue);\n }\n};\n\nconst createTrigger = (method, isConnected) => element => {\n if (customElements.has(element)) {\n const info = customElements.get(element);\n if (info.connected !== isConnected && element.isConnected === isConnected) {\n info.connected = isConnected;\n if (method in element)\n element[method]();\n }\n }\n};\n\nconst triggerConnected = createTrigger('connectedCallback', true);\nexport const connectedCallback = element => {\n if (reactive) {\n triggerConnected(element);\n if (shadowRoots.has(element))\n element = shadowRoots.get(element).shadowRoot;\n let {[NEXT]: next, [END]: end} = element;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE)\n triggerConnected(next);\n next = next[NEXT];\n }\n }\n};\n\nconst triggerDisconnected = createTrigger('disconnectedCallback', false);\nexport const disconnectedCallback = element => {\n if (reactive) {\n triggerDisconnected(element);\n if (shadowRoots.has(element))\n element = shadowRoots.get(element).shadowRoot;\n let {[NEXT]: next, [END]: end} = element;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE)\n triggerDisconnected(next);\n next = next[NEXT];\n }\n }\n};\n\n/**\n * @implements globalThis.CustomElementRegistry\n */\nexport class CustomElementRegistry {\n\n /**\n * @param {Document} ownerDocument\n */\n constructor(ownerDocument) {\n /**\n * @private\n */\n this.ownerDocument = ownerDocument;\n\n /**\n * @private\n */\n this.registry = new Map;\n\n /**\n * @private\n */\n this.waiting = new Map;\n\n /**\n * @private\n */\n this.active = false;\n }\n\n /**\n * @param {string} localName the custom element definition name\n * @param {Function} Class the custom element **Class** definition\n * @param {object?} options the optional object with an `extends` property\n */\n define(localName, Class, options = {}) {\n const {ownerDocument, registry, waiting} = this;\n\n if (registry.has(localName))\n throw new Error('unable to redefine ' + localName);\n\n if (Classes.has(Class))\n throw new Error('unable to redefine the same class: ' + Class);\n\n this.active = (reactive = true);\n\n const {extends: extend} = options;\n\n Classes.set(Class, {\n ownerDocument,\n options: {is: extend ? localName : ''},\n localName: extend || localName\n });\n\n const check = extend ?\n element => {\n return element.localName === extend &&\n element.getAttribute('is') === localName;\n } :\n element => element.localName === localName;\n registry.set(localName, {Class, check});\n if (waiting.has(localName)) {\n for (const resolve of waiting.get(localName))\n resolve(Class);\n waiting.delete(localName);\n }\n ownerDocument.querySelectorAll(\n extend ? `${extend}[is=\"${localName}\"]` : localName\n ).forEach(this.upgrade, this);\n }\n\n /**\n * @param {Element} element\n */\n upgrade(element) {\n if (customElements.has(element))\n return;\n const {ownerDocument, registry} = this;\n const ce = element.getAttribute('is') || element.localName;\n if (registry.has(ce)) {\n const {Class, check} = registry.get(ce);\n if (check(element)) {\n const {attributes, isConnected} = element;\n for (const attr of attributes)\n element.removeAttributeNode(attr);\n\n const values = entries(element);\n for (const [key] of values)\n delete element[key];\n\n setPrototypeOf(element, Class.prototype);\n ownerDocument[UPGRADE] = {element, values};\n new Class(ownerDocument, ce);\n\n customElements.set(element, {connected: isConnected});\n\n for (const attr of attributes)\n element.setAttributeNode(attr);\n\n if (isConnected && element.connectedCallback)\n element.connectedCallback();\n }\n }\n }\n\n /**\n * @param {string} localName the custom element definition name\n */\n whenDefined(localName) {\n const {registry, waiting} = this;\n return new Promise(resolve => {\n if (registry.has(localName))\n resolve(registry.get(localName).Class);\n else {\n if (!waiting.has(localName))\n waiting.set(localName, []);\n waiting.get(localName).push(resolve);\n }\n });\n }\n\n /**\n * @param {string} localName the custom element definition name\n * @returns {Function?} the custom element **Class**, if any\n */\n get(localName) {\n const info = this.registry.get(localName);\n return info && info.Class;\n }\n}\n","import * as HTMLParser2 from 'htmlparser2';\n\nimport {ELEMENT_NODE, SVG_NAMESPACE} from './constants.js';\nimport {CUSTOM_ELEMENTS, PREV, END, VALUE} from './symbols.js';\nimport {keys} from './object.js';\n\nimport {knownBoundaries, knownSiblings} from './utils.js';\nimport {attributeChangedCallback, connectedCallback} from '../interface/custom-element-registry.js';\n\nconst {Parser} = HTMLParser2;\n\n// import {Mime} from './mime.js';\n// const VOID_SOURCE = Mime['text/html'].voidElements.source.slice(4, -2);\n// const VOID_ELEMENTS = new RegExp(`<(${VOID_SOURCE})([^>]*?)>`, 'gi');\n// const VOID_SANITIZER = (_, $1, $2) => `<${$1}${$2}${/\\/$/.test($2) ? '' : ' /'}>`;\n// const voidSanitizer = html => html.replace(VOID_ELEMENTS, VOID_SANITIZER);\n\nlet notParsing = true;\n\nconst append = (self, node, active) => {\n const end = self[END];\n node.parentNode = self;\n knownBoundaries(end[PREV], node, end);\n if (active && node.nodeType === ELEMENT_NODE)\n connectedCallback(node);\n return node;\n};\n\nconst attribute = (element, end, attribute, value, active) => {\n attribute[VALUE] = value;\n attribute.ownerElement = element;\n knownSiblings(end[PREV], attribute, end);\n if (attribute.name === 'class')\n element.className = value;\n if (active)\n attributeChangedCallback(element, attribute.name, null, value);\n};\n\nexport const isNotParsing = () => notParsing;\n\nexport const parseFromString = (document, isHTML, markupLanguage) => {\n const {active, registry} = document[CUSTOM_ELEMENTS];\n\n let node = document;\n let ownerSVGElement = null;\n\n notParsing = false;\n\n const content = new Parser({\n // <!DOCTYPE ...>\n onprocessinginstruction(name, data) {\n if (name.toLowerCase() === '!doctype')\n document.doctype = data.slice(name.length).trim();\n },\n\n // <tagName>\n onopentag(name, attributes) {\n let create = true;\n if (isHTML) {\n if (ownerSVGElement) {\n node = append(node, document.createElementNS(SVG_NAMESPACE, name), active);\n node.ownerSVGElement = ownerSVGElement;\n create = false;\n }\n else if (name === 'svg' || name === 'SVG') {\n ownerSVGElement = document.createElementNS(SVG_NAMESPACE, name);\n node = append(node, ownerSVGElement, active);\n create = false;\n }\n else if (active) {\n const ce = name.includes('-') ? name : (attributes.is || '');\n if (ce && registry.has(ce)) {\n const {Class} = registry.get(ce);\n node = append(node, new Class, active);\n delete attributes.is;\n create = false;\n }\n }\n }\n\n if (create)\n node = append(node, document.createElement(name), false);\n\n let end = node[END];\n for (const name of keys(attributes))\n attribute(node, end, document.createAttribute(name), attributes[name], active);\n },\n\n // #text, #comment\n oncomment(data) { append(node, document.createComment(data), active); },\n ontext(text) { append(node, document.createTextNode(text), active); },\n\n // </tagName>\n onclosetag() {\n if (isHTML && node === ownerSVGElement)\n ownerSVGElement = null;\n node = node.parentNode;\n }\n }, {\n lowerCaseAttributeNames: false,\n decodeEntities: true,\n xmlMode: !isHTML\n });\n\n content.write(markupLanguage);\n content.end();\n\n notParsing = true;\n\n return document;\n};\n","export const htmlClasses = new Map;\n\nexport const registerHTMLClass = (names, Class) => {\n for (const name of [].concat(names)) {\n htmlClasses.set(name, Class);\n htmlClasses.set(name.toUpperCase(), Class);\n }\n};\n","export default {}","/* c8 ignore start */\ntry {\n const {performance} = require('perf_hooks');\n exports.performance = performance;\n}\ncatch (fallback) {\n exports.performance = {now() { return +new Date; }};\n}\n/* c8 ignore stop */\n","import {\n NODE_END,\n ATTRIBUTE_NODE,\n COMMENT_NODE,\n DOCUMENT_TYPE_NODE,\n ELEMENT_NODE,\n TEXT_NODE\n} from './constants.js';\n\nimport {END, NEXT, VALUE} from './symbols.js';\n\nimport {getEnd} from './utils.js';\n\nconst loopSegment = ({[NEXT]: next, [END]: end}, json) => {\n while (next !== end) {\n switch (next.nodeType) {\n case ATTRIBUTE_NODE:\n attrAsJSON(next, json);\n break;\n case TEXT_NODE:\n case COMMENT_NODE:\n characterDataAsJSON(next, json);\n break;\n case ELEMENT_NODE:\n elementAsJSON(next, json);\n next = getEnd(next);\n break;\n case DOCUMENT_TYPE_NODE:\n documentTypeAsJSON(next, json);\n break;\n }\n next = next[NEXT];\n }\n const last = json.length - 1;\n const value = json[last];\n if (typeof value === 'number' && value < 0)\n json[last] += NODE_END;\n else\n json.push(NODE_END);\n};\n\nexport const attrAsJSON = (attr, json) => {\n json.push(ATTRIBUTE_NODE, attr.name);\n const value = attr[VALUE].trim();\n if (value)\n json.push(value);\n};\n\nexport const characterDataAsJSON = (node, json) => {\n const value = node[VALUE];\n if (value.trim())\n json.push(node.nodeType, value);\n};\n\nexport const nonElementAsJSON = (node, json) => {\n json.push(node.nodeType);\n loopSegment(node, json);\n};\n\nexport const documentTypeAsJSON = ({name, publicId, systemId}, json) => {\n json.push(DOCUMENT_TYPE_NODE, name);\n if (publicId)\n json.push(publicId);\n if (systemId)\n json.push(systemId);\n};\n\nexport const elementAsJSON = (element, json) => {\n json.push(ELEMENT_NODE, element.localName);\n loopSegment(element, json);\n};\n","import {MUTATION_OBSERVER} from '../shared/symbols.js';\n\nconst createRecord =\n (type, target, addedNodes, removedNodes, attributeName, oldValue) =>\n ({type, target, addedNodes, removedNodes, attributeName, oldValue});\n\nconst queueAttribute = (\n observer, target, attributeName, attributeFilter, attributeOldValue, oldValue\n) => {\n if ((!attributeFilter || attributeFilter.includes(attributeName))) {\n const {callback, records, scheduled} = observer;\n records.push(createRecord(\n 'attributes', target,\n [], [],\n attributeName, attributeOldValue ? oldValue : void 0\n ));\n if (!scheduled) {\n observer.scheduled = true;\n Promise.resolve().then(() => {\n observer.scheduled = false;\n callback(records.splice(0), observer);\n });\n }\n }\n};\n\nexport const attributeChangedCallback = (element, attributeName, oldValue) => {\n const {ownerDocument} = element;\n const {active, observers} = ownerDocument[MUTATION_OBSERVER];\n if (active) {\n for (const observer of observers) {\n for (const [\n target,\n {\n childList,\n subtree,\n attributes,\n attributeFilter,\n attributeOldValue\n }\n ] of observer.nodes) {\n if (childList) {\n if (\n (subtree && (target === ownerDocument || target.contains(element))) ||\n (!subtree && target.children.includes(element))\n ) {\n queueAttribute(\n observer, element,\n attributeName, attributeFilter, attributeOldValue, oldValue\n );\n break;\n }\n }\n else if (\n attributes &&\n target === element\n ) {\n queueAttribute(\n observer, element,\n attributeName, attributeFilter, attributeOldValue, oldValue\n );\n break;\n }\n }\n }\n }\n};\n\nexport const moCallback = (element, parentNode) => {\n const {ownerDocument} = element;\n const {active, observers} = ownerDocument[MUTATION_OBSERVER];\n if (active) {\n for (const observer of observers) {\n for (const [target, {subtree, childList, characterData}] of observer.nodes) {\n if (childList) {\n if (\n (parentNode && (target === parentNode || /* c8 ignore next */(subtree && target.contains(parentNode)))) ||\n (!parentNode && ((subtree && (target === ownerDocument || /* c8 ignore next */target.contains(element))) ||\n (!subtree && target[characterData ? 'childNodes' : 'children'].includes(element))))\n ) {\n const {callback, records, scheduled} = observer;\n records.push(createRecord(\n 'childList', target,\n parentNode ? [] : [element], parentNode ? [element] : []\n ));\n if (!scheduled) {\n observer.scheduled = true;\n Promise.resolve().then(() => {\n observer.scheduled = false;\n callback(records.splice(0), observer);\n });\n }\n break;\n }\n }\n }\n }\n }\n};\n\nexport class MutationObserverClass {\n constructor(ownerDocument) {\n const observers = new Set;\n this.observers = observers;\n this.active = false;\n\n /**\n * @implements globalThis.MutationObserver\n */\n this.class = class MutationObserver {\n\n constructor(callback) {\n /**\n * @private\n */\n this.callback = callback;\n\n /**\n * @private\n */\n this.nodes = new Map;\n\n /**\n * @private\n */\n this.records = [];\n\n /**\n * @private\n */\n this.scheduled = false;\n }\n\n disconnect() {\n this.records.splice(0);\n this.nodes.clear();\n observers.delete(this);\n ownerDocument[MUTATION_OBSERVER].active = !!observers.size;\n }\n\n /**\n * @param {Element} target\n * @param {MutationObserverInit} options\n */\n observe(target, options = {\n subtree: false,\n childList: false,\n attributes: false,\n attributeFilter: null,\n attributeOldValue: false,\n characterData: false,\n // TODO: not implemented yet\n // characterDataOldValue: false\n }) {\n if (('attributeOldValue' in options) || ('attributeFilter' in options))\n options.attributes = true;\n // if ('characterDataOldValue' in options)\n // options.characterData = true;\n options.childList = !!options.childList;\n options.subtree = !!options.subtree;\n this.nodes.set(target, options);\n observers.add(this);\n ownerDocument[MUTATION_OBSERVER].active = true;\n }\n\n /**\n * @returns {MutationRecord[]}\n */\n takeRecords() { return this.records.splice(0); }\n }\n }\n}\n","import {CLASS_LIST, NEXT, PREV, VALUE} from './symbols.js';\n\nimport {knownAdjacent, knownSiblings} from './utils.js';\n\nimport {attributeChangedCallback as ceAttributes} from '../interface/custom-element-registry.js';\nimport {attributeChangedCallback as moAttributes} from '../interface/mutation-observer.js';\n\nexport const emptyAttributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'class',\n 'contenteditable',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'draggable',\n 'formnovalidate',\n 'hidden',\n 'id',\n 'ismap',\n 'itemscope',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected',\n 'style',\n 'truespeed'\n]);\n\nexport const setAttribute = (element, attribute) => {\n const {[VALUE]: value, name} = attribute;\n attribute.ownerElement = element;\n knownSiblings(element, attribute, element[NEXT]);\n if (name === 'class')\n element.className = value;\n moAttributes(element, name, null);\n ceAttributes(element, name, null, value);\n};\n\nexport const removeAttribute = (element, attribute) => {\n const {[VALUE]: value, name} = attribute;\n knownAdjacent(attribute[PREV], attribute[NEXT]);\n attribute.ownerElement = attribute[PREV] = attribute[NEXT] = null;\n if (name === 'class')\n element[CLASS_LIST] = null;\n moAttributes(element, name, value);\n ceAttributes(element, name, value, null);\n};\n\nexport const booleanAttribute = {\n get(element, name) {\n return element.hasAttribute(name);\n },\n set(element, name, value) {\n if (value)\n element.setAttribute(name, '');\n else\n element.removeAttribute(name);\n }\n};\n\nexport const numericAttribute = {\n get(element, name) {\n return parseFloat(element.getAttribute(name) || 0);\n },\n set(element, name, value) {\n element.setAttribute(name, value);\n }\n};\n\nexport const stringAttribute = {\n get(element, name) {\n return element.getAttribute(name) || '';\n },\n set(element, name, value) {\n element.setAttribute(name, value);\n }\n};\n\n/* oddly enough, this apparently is not a thing\nexport const nullableAttribute = {\n get(element, name) {\n return element.getAttribute(name);\n },\n set(element, name, value) {\n if (value === null)\n element.removeAttribute(name);\n else\n element.setAttribute(name, value);\n }\n};\n*/\n","// https://dom.spec.whatwg.org/#interface-eventtarget\n\nconst wm = new WeakMap();\n\nfunction dispatch(event, listener) {\n if (typeof listener === 'function')\n listener.call(event.target, event);\n else\n listener.handleEvent(event);\n return event._stopImmediatePropagationFlag;\n}\n\nfunction invokeListeners({currentTarget, target}) {\n const map = wm.get(currentTarget);\n if (map && map.has(this.type)) {\n const listeners = map.get(this.type);\n if (currentTarget === target) {\n this.eventPhase = this.AT_TARGET;\n } else {\n this.eventPhase = this.BUBBLING_PHASE;\n }\n\n this.currentTarget = currentTarget;\n this.target = target;\n for (const [listener, options] of listeners) {\n if (options && options.once)\n listeners.delete(listener);\n if (dispatch(this, listener))\n break;\n }\n delete this.currentTarget;\n delete this.target;\n return this.cancelBubble;\n }\n}\n\n\n/**\n * @implements globalThis.EventTarget\n */\nclass DOMEventTarget {\n\n constructor() {\n wm.set(this, new Map);\n }\n\n /**\n * @protected\n */\n _getParent() {\n return null;\n }\n\n addEventListener(type, listener, options) {\n const map = wm.get(this);\n if (!map.has(type)) \n map.set(type, new Map);\n map.get(type).set(listener, options);\n }\n\n removeEventListener(type, listener) {\n const map = wm.get(this);\n if (map.has(type)) {\n const listeners = map.get(type);\n if (listeners.delete(listener) && !listeners.size)\n map.delete(type);\n }\n }\n\n dispatchEvent(event) {\n let node = this;\n event.eventPhase = event.CAPTURING_PHASE;\n\n // intentionally simplified, specs imply way more code: https://dom.spec.whatwg.org/#event-path\n while (node) {\n if (node.dispatchEvent)\n event._path.push({currentTarget: node, target: this});\n node = event.bubbles && node._getParent && node._getParent();\n }\n event._path.some(invokeListeners, event);\n event._path = [];\n event.eventPhase = event.NONE;\n return !event.defaultPrevented;\n }\n\n}\n\nexport {DOMEventTarget as EventTarget};\n","// https://dom.spec.whatwg.org/#interface-nodelist\n\n/**\n * @implements globalThis.NodeList\n */\nexport class NodeList extends Array {\n item(i) { return i < this.length ? this[i] : null; }\n}\n","// https://dom.spec.whatwg.org/#node\n\nimport {\n ELEMENT_NODE,\n ATTRIBUTE_NODE,\n TEXT_NODE,\n COMMENT_NODE,\n DOCUMENT_NODE,\n DOCUMENT_FRAGMENT_NODE,\n DOCUMENT_TYPE_NODE,\n DOCUMENT_POSITION_DISCONNECTED,\n DOCUMENT_POSITION_PRECEDING,\n DOCUMENT_POSITION_FOLLOWING,\n DOCUMENT_POSITION_CONTAINS,\n DOCUMENT_POSITION_CONTAINED_BY,\n DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC\n} from '../shared/constants.js';\n\nimport {NEXT, PREV} from '../shared/symbols.js';\n\nimport {EventTarget} from './event-target.js';\n\nimport {NodeList} from './node-list.js';\n\nconst getParentNodeCount = ({parentNode}) => {\n let count = 0;\n while (parentNode) {\n count++;\n parentNode = parentNode.parentNode;\n }\n return count;\n};\n\n/**\n * @implements globalThis.Node\n */\nexport class Node extends EventTarget {\n\n static get ELEMENT_NODE() { return ELEMENT_NODE; }\n static get ATTRIBUTE_NODE() { return ATTRIBUTE_NODE; }\n static get TEXT_NODE() { return TEXT_NODE; }\n static get COMMENT_NODE() { return COMMENT_NODE; }\n static get DOCUMENT_NODE() { return DOCUMENT_NODE; }\n static get DOCUMENT_FRAGMENT_NODE() { return DOCUMENT_FRAGMENT_NODE; }\n static get DOCUMENT_TYPE_NODE() { return DOCUMENT_TYPE_NODE; }\n\n constructor(ownerDocument, localName, nodeType) {\n super();\n this.ownerDocument = ownerDocument;\n this.localName = localName;\n this.nodeType = nodeType;\n this.parentNode = null;\n this[NEXT] = null;\n this[PREV] = null;\n }\n\n get ELEMENT_NODE() { return ELEMENT_NODE; }\n get ATTRIBUTE_NODE() { return ATTRIBUTE_NODE; }\n get TEXT_NODE() { return TEXT_NODE; }\n get COMMENT_NODE() { return COMMENT_NODE; }\n get DOCUMENT_NODE() { return DOCUMENT_NODE; }\n get DOCUMENT_FRAGMENT_NODE() { return DOCUMENT_FRAGMENT_NODE; }\n get DOCUMENT_TYPE_NODE() { return DOCUMENT_TYPE_NODE; }\n\n get baseURI() {\n const ownerDocument = this.nodeType === DOCUMENT_NODE ?\n this : this.ownerDocument;\n if (ownerDocument) {\n const base = ownerDocument.querySelector('base');\n if (base)\n return base.getAttribute('href');\n\n const {location} = ownerDocument.defaultView;\n if (location)\n return location.href;\n }\n\n return null;\n }\n\n /* c8 ignore start */\n // mixin: node\n get isConnected() { return false; }\n get nodeName() { return this.localName; }\n get parentElement() { return null; }\n get previousSibling() { return null; }\n get previousElementSibling() { return null; }\n get nextSibling() { return null; }\n get nextElementSibling() { return null; }\n get childNodes() { return new NodeList; }\n get firstChild() { return null; }\n get lastChild() { return null; }\n\n // default values\n get nodeValue() { return null; }\n set nodeValue(value) {}\n get textContent() { return null; }\n set textContent(value) {}\n normalize() {}\n cloneNode() { return null; }\n contains() { return false; }\n /**\n * Inserts a node before a reference node as a child of this parent node.\n * @param {Node} newNode The node to be inserted.\n * @param {Node} referenceNode The node before which newNode is inserted. If this is null, then newNode is inserted at the end of node's child nodes.\n * @returns The added child\n */\n // eslint-disable-next-line no-unused-vars\n insertBefore(newNode, referenceNode) { return newNode }\n /**\n * Adds a node to the end of the list of children of this node.\n * @param {Node} child The node to append to the given parent node.\n * @returns The appended child.\n */\n appendChild(child) { return child }\n /**\n * Replaces a child node within this node\n * @param {Node} newChild The new node to replace oldChild.\n * @param {Node} oldChild The child to be replaced.\n * @returns The replaced Node. This is the same node as oldChild.\n */\n replaceChild(newChild, oldChild) { return oldChild }\n /**\n * Removes a child node from the DOM.\n * @param {Node} child A Node that is the child node to be removed from the DOM.\n * @returns The removed node.\n */\n removeChild(child) { return child }\n toString() { return ''; }\n /* c8 ignore stop */\n\n hasChildNodes() { return !!this.lastChild; }\n isSameNode(node) { return this === node; }\n\n // TODO: attributes?\n compareDocumentPosition(target) {\n let result = 0;\n if (this !== target) {\n let self = getParentNodeCount(this);\n let other = getParentNodeCount(target);\n if (self < other) {\n result += DOCUMENT_POSITION_FOLLOWING;\n if (this.contains(target))\n result += DOCUMENT_POSITION_CONTAINED_BY;\n }\n else if (other < self) {\n result += DOCUMENT_POSITION_PRECEDING;\n if (target.contains(this))\n result += DOCUMENT_POSITION_CONTAINS;\n }\n else if (self && other) {\n const {childNodes} = this.parentNode;\n if (childNodes.indexOf(this) < childNodes.indexOf(target))\n result += DOCUMENT_POSITION_FOLLOWING;\n else\n result += DOCUMENT_POSITION_PRECEDING;\n }\n if (!self || !other) {\n result += DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;\n result += DOCUMENT_POSITION_DISCONNECTED;\n }\n }\n return result;\n }\n\n isEqualNode(node) {\n if (this === node)\n return true;\n if (this.nodeType === node.nodeType) {\n switch (this.nodeType) {\n case DOCUMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE: {\n const aNodes = this.childNodes;\n const bNodes = node.childNodes;\n return aNodes.length === bNodes.length && aNodes.every((node, i) => node.isEqualNode(bNodes[i]));\n }\n }\n return this.toString() === node.toString();\n }\n return false;\n }\n\n /**\n * @protected\n */\n _getParent() {\n return this.parentNode;\n }\n\n /**\n * Calling it on an element inside a standard web page will return an HTMLDocument object representing the entire page (or <iframe>).\n * Calling it on an element inside a shadow DOM will return the associated ShadowRoot.\n * @return {ShadowRoot | HTMLDocument}\n */\n getRootNode() {\n let root = this;\n while (root.parentNode)\n root = root.parentNode;\n return root;\n }\n}\n","import {ATTRIBUTE_NODE} from '../shared/constants.js';\nimport {CHANGED, VALUE} from '../shared/symbols.js';\nimport {String} from '../shared/utils.js';\nimport {attrAsJSON} from '../shared/jsdon.js';\nimport {emptyAttributes} from '../shared/attributes.js';\n\nimport {attributeChangedCallback as moAttributes} from './mutation-observer.js';\nimport {attributeChangedCallback as ceAttributes} from './custom-element-registry.js';\n\nimport {Node} from './node.js';\n\nconst QUOTE = /\"/g;\n\n/**\n * @implements globalThis.Attr\n */\nexport class Attr extends Node {\n constructor(ownerDocument, name, value = '') {\n super(ownerDocument, '#attribute', ATTRIBUTE_NODE);\n this.ownerElement = null;\n this.name = String(name);\n this[VALUE] = String(value);\n this[CHANGED] = false;\n }\n\n get value() { return this[VALUE]; }\n set value(newValue) {\n const {[VALUE]: oldValue, name, ownerElement} = this;\n this[VALUE] = String(newValue);\n this[CHANGED] = true;\n if (ownerElement) {\n moAttributes(ownerElement, name, oldValue);\n ceAttributes(ownerElement, name, oldValue, this[VALUE]);\n }\n }\n\n cloneNode() {\n const {ownerDocument, name, [VALUE]: value} = this;\n return new Attr(ownerDocument, name, value);\n }\n\n toString() {\n const {name, [VALUE]: value} = this;\n return emptyAttributes.has(name) && !value ?\n name : `${name}=\"${value.replace(QUOTE, '"')}\"`;\n }\n\n toJSON() {\n const json = [];\n attrAsJSON(this, json);\n return json;\n }\n}\n","import {\n COMMENT_NODE,\n DOCUMENT_NODE,\n DOCUMENT_FRAGMENT_NODE,\n TEXT_NODE,\n NODE_END\n} from './constants.js';\n\nimport {START, NEXT, PREV} from './symbols.js';\nimport {getEnd} from './utils.js';\n\nexport const isConnected = ({ownerDocument, parentNode}) => {\n while (parentNode) {\n if (parentNode === ownerDocument)\n return true;\n parentNode = parentNode.parentNode || parentNode.host;\n }\n return false;\n};\n\nexport const parentElement = ({parentNode}) => {\n if (parentNode) {\n switch (parentNode.nodeType) {\n case DOCUMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE:\n return null;\n }\n }\n return parentNode;\n};\n\nexport const previousSibling = ({[PREV]: prev}) => {\n switch (prev ? prev.nodeType : 0) {\n case NODE_END:\n return prev[START];\n case TEXT_NODE:\n case COMMENT_NODE:\n return prev;\n }\n return null;\n};\n\nexport const nextSibling = node => {\n const next = getEnd(node)[NEXT];\n return next && (next.nodeType === NODE_END ? null : next);\n};\n","// https://dom.spec.whatwg.org/#nondocumenttypechildnode\n// CharacterData, Element\n\nimport {ELEMENT_NODE} from '../shared/constants.js';\n\nimport {nextSibling, previousSibling} from '../shared/node.js';\n\nexport const nextElementSibling = node => {\n let next = nextSibling(node);\n while (next && next.nodeType !== ELEMENT_NODE)\n next = nextSibling(next);\n return next;\n};\n\nexport const previousElementSibling = node => {\n let prev = previousSibling(node);\n while (prev && prev.nodeType !== ELEMENT_NODE)\n prev = previousSibling(prev);\n return prev;\n};\n","// https://dom.spec.whatwg.org/#childnode\n// CharacterData, DocumentType, Element\n\nimport {ELEMENT_NODE} from '../shared/constants.js';\nimport {NEXT, PREV} from '../shared/symbols.js';\n\nimport {getEnd, setAdjacent} from '../shared/utils.js';\n\nimport {moCallback} from '../interface/mutation-observer.js';\nimport {disconnectedCallback} from '../interface/custom-element-registry.js';\n\nconst asFragment = (ownerDocument, nodes) => {\n const fragment = ownerDocument.createDocumentFragment();\n fragment.append(...nodes);\n return fragment;\n};\n\nexport const before = (node, nodes) => {\n const {ownerDocument, parentNode} = node;\n if (parentNode)\n parentNode.insertBefore(\n asFragment(ownerDocument, nodes),\n node\n );\n};\n\nexport const after = (node, nodes) => {\n const {ownerDocument, parentNode} = node;\n if (parentNode)\n parentNode.insertBefore(\n asFragment(ownerDocument, nodes),\n getEnd(node)[NEXT]\n );\n};\n\nexport const replaceWith = (node, nodes) => {\n const {ownerDocument, parentNode} = node;\n if (parentNode) {\n parentNode.insertBefore(\n asFragment(ownerDocument, nodes),\n node\n );\n node.remove();\n }\n};\n\nexport const remove = (prev, current, next) => {\n const {parentNode, nodeType} = current;\n if (prev || next) {\n setAdjacent(prev, next);\n current[PREV] = null;\n getEnd(current)[NEXT] = null;\n }\n if (parentNode) {\n current.parentNode = null;\n moCallback(current, parentNode);\n if (nodeType === ELEMENT_NODE)\n disconnectedCallback(current);\n }\n};\n","// https://dom.spec.whatwg.org/#interface-characterdata\n\nimport {NEXT, PREV, VALUE} from '../shared/symbols.js';\nimport {String} from '../shared/utils.js';\nimport {isConnected, parentElement, previousSibling, nextSibling} from '../shared/node.js';\nimport {characterDataAsJSON} from '../shared/jsdon.js';\n\nimport {previousElementSibling, nextElementSibling} from '../mixin/non-document-type-child-node.js';\nimport {before, after, replaceWith, remove} from '../mixin/child-node.js';\n\nimport {Node} from './node.js';\nimport {moCallback} from './mutation-observer.js';\n\n/**\n * @implements globalThis.CharacterData\n */\nexport class CharacterData extends Node {\n\n constructor(ownerDocument, localName, nodeType, data) {\n super(ownerDocument, localName, nodeType);\n this[VALUE] = String(data);\n }\n\n // <Mixins>\n get isConnected() { return isConnected(this); }\n get parentElement() { return parentElement(this); }\n get previousSibling() { return previousSibling(this); }\n get nextSibling() { return nextSibling(this); }\n\n get previousElementSibling() { return previousElementSibling(this); }\n get nextElementSibling() { return nextElementSibling(this); }\n\n before(...nodes) { before(this, nodes); }\n after(...nodes) { after(this, nodes); }\n replaceWith(...nodes) { replaceWith(this, nodes); }\n remove() { remove(this[PREV], this, this[NEXT]); }\n // </Mixins>\n\n // CharacterData only\n /* c8 ignore start */\n get data() { return this[VALUE]; }\n set data(value) {\n this[VALUE] = String(value);\n moCallback(this, this.parentNode);\n }\n\n get nodeValue() { return this.data; }\n set nodeValue(value) { this.data = value; }\n\n get textContent() { return this.data; }\n set textContent(value) { this.data = value; }\n\n get length() { return this.data.length; }\n\n substringData(offset, count) {\n return this.data.substr(offset, count);\n }\n\n appendData(data) {\n this.data += data;\n }\n\n insertData(offset, data) {\n const {data: t} = this;\n this.data = t.slice(0, offset) + data + t.slice(offset);\n }\n\n deleteData(offset, count) {\n const {data: t} = this;\n this.data = t.slice(0, offset) + t.slice(offset + count);\n }\n\n replaceData(offset, count, data) {\n const {data: t} = this;\n this.data = t.slice(0, offset) + data + t.slice(offset + count);\n }\n /* c8 ignore stop */\n\n toJSON() {\n const json = [];\n characterDataAsJSON(this, json);\n return json;\n }\n}\n","import {COMMENT_NODE} from '../shared/constants.js';\nimport {VALUE} from '../shared/symbols.js';\n\nimport {CharacterData} from './character-data.js';\n\n/**\n * @implements globalThis.Comment\n */\nexport class Comment extends CharacterData {\n constructor(ownerDocument, data = '') {\n super(ownerDocument, '#comment', COMMENT_NODE, data);\n }\n\n cloneNode() {\n const {ownerDocument, [VALUE]: data} = this;\n return new Comment(ownerDocument, data);\n }\n\n toString() { return `<!--${this[VALUE]}-->`; }\n}\n","module.exports = {\n\ttrueFunc: function trueFunc(){\n\t\treturn true;\n\t},\n\tfalseFunc: function falseFunc(){\n\t\treturn false;\n\t}\n};","export var SelectorType;\n(function (SelectorType) {\n SelectorType[\"Attribute\"] = \"attribute\";\n SelectorType[\"Pseudo\"] = \"pseudo\";\n SelectorType[\"PseudoElement\"] = \"pseudo-element\";\n SelectorType[\"Tag\"] = \"tag\";\n SelectorType[\"Universal\"] = \"universal\";\n // Traversals\n SelectorType[\"Adjacent\"] = \"adjacent\";\n SelectorType[\"Child\"] = \"child\";\n SelectorType[\"Descendant\"] = \"descendant\";\n SelectorType[\"Parent\"] = \"parent\";\n SelectorType[\"Sibling\"] = \"sibling\";\n SelectorType[\"ColumnCombinator\"] = \"column-combinator\";\n})(SelectorType || (SelectorType = {}));\n/**\n * Modes for ignore case.\n *\n * This could be updated to an enum, and the object is\n * the current stand-in that will allow code to be updated\n * without big changes.\n */\nexport const IgnoreCaseMode = {\n Unknown: null,\n QuirksMode: \"quirks\",\n IgnoreCase: true,\n CaseSensitive: false,\n};\nexport var AttributeAction;\n(function (AttributeAction) {\n AttributeAction[\"Any\"] = \"any\";\n AttributeAction[\"Element\"] = \"element\";\n AttributeAction[\"End\"] = \"end\";\n AttributeAction[\"Equals\"] = \"equals\";\n AttributeAction[\"Exists\"] = \"exists\";\n AttributeAction[\"Hyphen\"] = \"hyphen\";\n AttributeAction[\"Not\"] = \"not\";\n AttributeAction[\"Start\"] = \"start\";\n})(AttributeAction || (AttributeAction = {}));\n","import { SelectorType, AttributeAction, } from \"./types\";\nconst reName = /^[^\\\\#]?(?:\\\\(?:[\\da-f]{1,6}\\s?|.)|[\\w\\-\\u00b0-\\uFFFF])+/;\nconst reEscape = /\\\\([\\da-f]{1,6}\\s?|(\\s)|.)/gi;\nconst actionTypes = new Map([\n [126 /* Tilde */, AttributeAction.Element],\n [94 /* Circumflex */, AttributeAction.Start],\n [36 /* Dollar */, AttributeAction.End],\n [42 /* Asterisk */, AttributeAction.Any],\n [33 /* ExclamationMark */, AttributeAction.Not],\n [124 /* Pipe */, AttributeAction.Hyphen],\n]);\n// Pseudos, whose data property is parsed as well.\nconst unpackPseudos = new Set([\n \"has\",\n \"not\",\n \"matches\",\n \"is\",\n \"where\",\n \"host\",\n \"host-context\",\n]);\n/**\n * Checks whether a specific selector is a traversal.\n * This is useful eg. in swapping the order of elements that\n * are not traversals.\n *\n * @param selector Selector to check.\n */\nexport function isTraversal(selector) {\n switch (selector.type) {\n case SelectorType.Adjacent:\n case SelectorType.Child:\n case SelectorType.Descendant:\n case SelectorType.Parent:\n case SelectorType.Sibling:\n case SelectorType.ColumnCombinator:\n return true;\n default:\n return false;\n }\n}\nconst stripQuotesFromPseudos = new Set([\"contains\", \"icontains\"]);\n// Unescape function taken from https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L152\nfunction funescape(_, escaped, escapedWhitespace) {\n const high = parseInt(escaped, 16) - 0x10000;\n // NaN means non-codepoint\n return high !== high || escapedWhitespace\n ? escaped\n : high < 0\n ? // BMP codepoint\n String.fromCharCode(high + 0x10000)\n : // Supplemental Plane codepoint (surrogate pair)\n String.fromCharCode((high >> 10) | 0xd800, (high & 0x3ff) | 0xdc00);\n}\nfunction unescapeCSS(str) {\n return str.replace(reEscape, funescape);\n}\nfunction isQuote(c) {\n return c === 39 /* SingleQuote */ || c === 34 /* DoubleQuote */;\n}\nfunction isWhitespace(c) {\n return (c === 32 /* Space */ ||\n c === 9 /* Tab */ ||\n c === 10 /* NewLine */ ||\n c === 12 /* FormFeed */ ||\n c === 13 /* CarriageReturn */);\n}\n/**\n * Parses `selector`, optionally with the passed `options`.\n *\n * @param selector Selector to parse.\n * @param options Options for parsing.\n * @returns Returns a two-dimensional array.\n * The first dimension represents selectors separated by commas (eg. `sub1, sub2`),\n * the second contains the relevant tokens for that selector.\n */\nexport function parse(selector) {\n const subselects = [];\n const endIndex = parseSelector(subselects, `${selector}`, 0);\n if (endIndex < selector.length) {\n throw new Error(`Unmatched selector: ${selector.slice(endIndex)}`);\n }\n return subselects;\n}\nfunction parseSelector(subselects, selector, selectorIndex) {\n let tokens = [];\n function getName(offset) {\n const match = selector.slice(selectorIndex + offset).match(reName);\n if (!match) {\n throw new Error(`Expected name, found ${selector.slice(selectorIndex)}`);\n }\n const [name] = match;\n selectorIndex += offset + name.length;\n return unescapeCSS(name);\n }\n function stripWhitespace(offset) {\n selectorIndex += offset;\n while (selectorIndex < selector.length &&\n isWhitespace(selector.charCodeAt(selectorIndex))) {\n selectorIndex++;\n }\n }\n function readValueWithParenthesis() {\n selectorIndex += 1;\n const start = selectorIndex;\n let counter = 1;\n for (; counter > 0 && selectorIndex < selector.length; selectorIndex++) {\n if (selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */ &&\n !isEscaped(selectorIndex)) {\n counter++;\n }\n else if (selector.charCodeAt(selectorIndex) ===\n 41 /* RightParenthesis */ &&\n !isEscaped(selectorIndex)) {\n counter--;\n }\n }\n if (counter) {\n throw new Error(\"Parenthesis not matched\");\n }\n return unescapeCSS(selector.slice(start, selectorIndex - 1));\n }\n function isEscaped(pos) {\n let slashCount = 0;\n while (selector.charCodeAt(--pos) === 92 /* BackSlash */)\n slashCount++;\n return (slashCount & 1) === 1;\n }\n function ensureNotTraversal() {\n if (tokens.length > 0 && isTraversal(tokens[tokens.length - 1])) {\n throw new Error(\"Did not expect successive traversals.\");\n }\n }\n function addTraversal(type) {\n if (tokens.length > 0 &&\n tokens[tokens.length - 1].type === SelectorType.Descendant) {\n tokens[tokens.length - 1].type = type;\n return;\n }\n ensureNotTraversal();\n tokens.push({ type });\n }\n function addSpecialAttribute(name, action) {\n tokens.push({\n type: SelectorType.Attribute,\n name,\n action,\n value: getName(1),\n namespace: null,\n ignoreCase: \"quirks\",\n });\n }\n /**\n * We have finished parsing the current part of the selector.\n *\n * Remove descendant tokens at the end if they exist,\n * and return the last index, so that parsing can be\n * picked up from here.\n */\n function finalizeSubselector() {\n if (tokens.length &&\n tokens[tokens.length - 1].type === SelectorType.Descendant) {\n tokens.pop();\n }\n if (tokens.length === 0) {\n throw new Error(\"Empty sub-selector\");\n }\n subselects.push(tokens);\n }\n stripWhitespace(0);\n if (selector.length === selectorIndex) {\n return selectorIndex;\n }\n loop: while (selectorIndex < selector.length) {\n const firstChar = selector.charCodeAt(selectorIndex);\n switch (firstChar) {\n // Whitespace\n case 32 /* Space */:\n case 9 /* Tab */:\n case 10 /* NewLine */:\n case 12 /* FormFeed */:\n case 13 /* CarriageReturn */: {\n if (tokens.length === 0 ||\n tokens[0].type !== SelectorType.Descendant) {\n ensureNotTraversal();\n tokens.push({ type: SelectorType.Descendant });\n }\n stripWhitespace(1);\n break;\n }\n // Traversals\n case 62 /* GreaterThan */: {\n addTraversal(SelectorType.Child);\n stripWhitespace(1);\n break;\n }\n case 60 /* LessThan */: {\n addTraversal(SelectorType.Parent);\n stripWhitespace(1);\n break;\n }\n case 126 /* Tilde */: {\n addTraversal(SelectorType.Sibling);\n stripWhitespace(1);\n break;\n }\n case 43 /* Plus */: {\n addTraversal(SelectorType.Adjacent);\n stripWhitespace(1);\n break;\n }\n // Special attribute selectors: .class, #id\n case 46 /* Period */: {\n addSpecialAttribute(\"class\", AttributeAction.Element);\n break;\n }\n case 35 /* Hash */: {\n addSpecialAttribute(\"id\", AttributeAction.Equals);\n break;\n }\n case 91 /* LeftSquareBracket */: {\n stripWhitespace(1);\n // Determine attribute name and namespace\n let name;\n let namespace = null;\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */) {\n // Equivalent to no namespace\n name = getName(1);\n }\n else if (selector.startsWith(\"*|\", selectorIndex)) {\n namespace = \"*\";\n name = getName(2);\n }\n else {\n name = getName(0);\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&\n selector.charCodeAt(selectorIndex + 1) !==\n 61 /* Equal */) {\n namespace = name;\n name = getName(1);\n }\n }\n stripWhitespace(0);\n // Determine comparison operation\n let action = AttributeAction.Exists;\n const possibleAction = actionTypes.get(selector.charCodeAt(selectorIndex));\n if (possibleAction) {\n action = possibleAction;\n if (selector.charCodeAt(selectorIndex + 1) !==\n 61 /* Equal */) {\n throw new Error(\"Expected `=`\");\n }\n stripWhitespace(2);\n }\n else if (selector.charCodeAt(selectorIndex) === 61 /* Equal */) {\n action = AttributeAction.Equals;\n stripWhitespace(1);\n }\n // Determine value\n let value = \"\";\n let ignoreCase = null;\n if (action !== \"exists\") {\n if (isQuote(selector.charCodeAt(selectorIndex))) {\n const quote = selector.charCodeAt(selectorIndex);\n let sectionEnd = selectorIndex + 1;\n while (sectionEnd < selector.length &&\n (selector.charCodeAt(sectionEnd) !== quote ||\n isEscaped(sectionEnd))) {\n sectionEnd += 1;\n }\n if (selector.charCodeAt(sectionEnd) !== quote) {\n throw new Error(\"Attribute value didn't end\");\n }\n value = unescapeCSS(selector.slice(selectorIndex + 1, sectionEnd));\n selectorIndex = sectionEnd + 1;\n }\n else {\n const valueStart = selectorIndex;\n while (selectorIndex < selector.length &&\n ((!isWhitespace(selector.charCodeAt(selectorIndex)) &&\n selector.charCodeAt(selectorIndex) !==\n 93 /* RightSquareBracket */) ||\n isEscaped(selectorIndex))) {\n selectorIndex += 1;\n }\n value = unescapeCSS(selector.slice(valueStart, selectorIndex));\n }\n stripWhitespace(0);\n // See if we have a force ignore flag\n const forceIgnore = selector.charCodeAt(selectorIndex) | 0x20;\n // If the forceIgnore flag is set (either `i` or `s`), use that value\n if (forceIgnore === 115 /* LowerS */) {\n ignoreCase = false;\n stripWhitespace(1);\n }\n else if (forceIgnore === 105 /* LowerI */) {\n ignoreCase = true;\n stripWhitespace(1);\n }\n }\n if (selector.charCodeAt(selectorIndex) !==\n 93 /* RightSquareBracket */) {\n throw new Error(\"Attribute selector didn't terminate\");\n }\n selectorIndex += 1;\n const attributeSelector = {\n type: SelectorType.Attribute,\n name,\n action,\n value,\n namespace,\n ignoreCase,\n };\n tokens.push(attributeSelector);\n break;\n }\n case 58 /* Colon */: {\n if (selector.charCodeAt(selectorIndex + 1) === 58 /* Colon */) {\n tokens.push({\n type: SelectorType.PseudoElement,\n name: getName(2).toLowerCase(),\n data: selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */\n ? readValueWithParenthesis()\n : null,\n });\n continue;\n }\n const name = getName(1).toLowerCase();\n let data = null;\n if (selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */) {\n if (unpackPseudos.has(name)) {\n if (isQuote(selector.charCodeAt(selectorIndex + 1))) {\n throw new Error(`Pseudo-selector ${name} cannot be quoted`);\n }\n data = [];\n selectorIndex = parseSelector(data, selector, selectorIndex + 1);\n if (selector.charCodeAt(selectorIndex) !==\n 41 /* RightParenthesis */) {\n throw new Error(`Missing closing parenthesis in :${name} (${selector})`);\n }\n selectorIndex += 1;\n }\n else {\n data = readValueWithParenthesis();\n if (stripQuotesFromPseudos.has(name)) {\n const quot = data.charCodeAt(0);\n if (quot === data.charCodeAt(data.length - 1) &&\n isQuote(quot)) {\n data = data.slice(1, -1);\n }\n }\n data = unescapeCSS(data);\n }\n }\n tokens.push({ type: SelectorType.Pseudo, name, data });\n break;\n }\n case 44 /* Comma */: {\n finalizeSubselector();\n tokens = [];\n stripWhitespace(1);\n break;\n }\n default: {\n if (selector.startsWith(\"/*\", selectorIndex)) {\n const endIndex = selector.indexOf(\"*/\", selectorIndex + 2);\n if (endIndex < 0) {\n throw new Error(\"Comment was not terminated\");\n }\n selectorIndex = endIndex + 2;\n // Remove leading whitespace\n if (tokens.length === 0) {\n stripWhitespace(0);\n }\n break;\n }\n let namespace = null;\n let name;\n if (firstChar === 42 /* Asterisk */) {\n selectorIndex += 1;\n name = \"*\";\n }\n else if (firstChar === 124 /* Pipe */) {\n name = \"\";\n if (selector.charCodeAt(selectorIndex + 1) === 124 /* Pipe */) {\n addTraversal(SelectorType.ColumnCombinator);\n stripWhitespace(2);\n break;\n }\n }\n else if (reName.test(selector.slice(selectorIndex))) {\n name = getName(0);\n }\n else {\n break loop;\n }\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&\n selector.charCodeAt(selectorIndex + 1) !== 124 /* Pipe */) {\n namespace = name;\n if (selector.charCodeAt(selectorIndex + 1) ===\n 42 /* Asterisk */) {\n name = \"*\";\n selectorIndex += 2;\n }\n else {\n name = getName(1);\n }\n }\n tokens.push(name === \"*\"\n ? { type: SelectorType.Universal, namespace }\n : { type: SelectorType.Tag, name, namespace });\n }\n }\n }\n finalizeSubselector();\n return selectorIndex;\n}\n","import { AttributeAction, SelectorType } from \"css-what\";\nconst procedure = new Map([\n [SelectorType.Universal, 50],\n [SelectorType.Tag, 30],\n [SelectorType.Attribute, 1],\n [SelectorType.Pseudo, 0],\n]);\nexport function isTraversal(token) {\n return !procedure.has(token.type);\n}\nconst attributes = new Map([\n [AttributeAction.Exists, 10],\n [AttributeAction.Equals, 8],\n [AttributeAction.Not, 7],\n [AttributeAction.Start, 6],\n [AttributeAction.End, 6],\n [AttributeAction.Any, 5],\n]);\n/**\n * Sort the parts of the passed selector,\n * as there is potential for optimization\n * (some types of selectors are faster than others)\n *\n * @param arr Selector to sort\n */\nexport default function sortByProcedure(arr) {\n const procs = arr.map(getProcedure);\n for (let i = 1; i < arr.length; i++) {\n const procNew = procs[i];\n if (procNew < 0)\n continue;\n for (let j = i - 1; j >= 0 && procNew < procs[j]; j--) {\n const token = arr[j + 1];\n arr[j + 1] = arr[j];\n arr[j] = token;\n procs[j + 1] = procs[j];\n procs[j] = procNew;\n }\n }\n}\nfunction getProcedure(token) {\n var _a, _b;\n let proc = (_a = procedure.get(token.type)) !== null && _a !== void 0 ? _a : -1;\n if (token.type === SelectorType.Attribute) {\n proc = (_b = attributes.get(token.action)) !== null && _b !== void 0 ? _b : 4;\n if (token.action === AttributeAction.Equals && token.name === \"id\") {\n // Prefer ID selectors (eg. #ID)\n proc = 9;\n }\n if (token.ignoreCase) {\n /*\n * IgnoreCase adds some overhead, prefer \"normal\" token\n * this is a binary operation, to ensure it's still an int\n */\n proc >>= 1;\n }\n }\n else if (token.type === SelectorType.Pseudo) {\n if (!token.data) {\n proc = 3;\n }\n else if (token.name === \"has\" || token.name === \"contains\") {\n proc = 0; // Expensive in any case\n }\n else if (Array.isArray(token.data)) {\n // Eg. :matches, :not\n proc = Math.min(...token.data.map((d) => Math.min(...d.map(getProcedure))));\n // If we have traversals, try to avoid executing this selector\n if (proc < 0) {\n proc = 0;\n }\n }\n else {\n proc = 2;\n }\n }\n return proc;\n}\n//# sourceMappingURL=sort.js.map","import boolbase from \"boolbase\";\n/**\n * All reserved characters in a regex, used for escaping.\n *\n * Taken from XRegExp, (c) 2007-2020 Steven Levithan under the MIT license\n * https://github.com/slevithan/xregexp/blob/95eeebeb8fac8754d54eafe2b4743661ac1cf028/src/xregexp.js#L794\n */\nconst reChars = /[-[\\]{}()*+?.,\\\\^$|#\\s]/g;\nfunction escapeRegex(value) {\n return value.replace(reChars, \"\\\\$&\");\n}\n/**\n * Attributes that are case-insensitive in HTML.\n *\n * @private\n * @see https://html.spec.whatwg.org/multipage/semantics-other.html#case-sensitivity-of-selectors\n */\nconst caseInsensitiveAttributes = new Set([\n \"accept\",\n \"accept-charset\",\n \"align\",\n \"alink\",\n \"axis\",\n \"bgcolor\",\n \"charset\",\n \"checked\",\n \"clear\",\n \"codetype\",\n \"color\",\n \"compact\",\n \"declare\",\n \"defer\",\n \"dir\",\n \"direction\",\n \"disabled\",\n \"enctype\",\n \"face\",\n \"frame\",\n \"hreflang\",\n \"http-equiv\",\n \"lang\",\n \"language\",\n \"link\",\n \"media\",\n \"method\",\n \"multiple\",\n \"nohref\",\n \"noresize\",\n \"noshade\",\n \"nowrap\",\n \"readonly\",\n \"rel\",\n \"rev\",\n \"rules\",\n \"scope\",\n \"scrolling\",\n \"selected\",\n \"shape\",\n \"target\",\n \"text\",\n \"type\",\n \"valign\",\n \"valuetype\",\n \"vlink\",\n]);\nfunction shouldIgnoreCase(selector, options) {\n return typeof selector.ignoreCase === \"boolean\"\n ? selector.ignoreCase\n : selector.ignoreCase === \"quirks\"\n ? !!options.quirksMode\n : !options.xmlMode && caseInsensitiveAttributes.has(selector.name);\n}\n/**\n * Attribute selectors\n */\nexport const attributeRules = {\n equals(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length === value.length &&\n attr.toLowerCase() === value &&\n next(elem));\n };\n }\n return (elem) => adapter.getAttributeValue(elem, name) === value && next(elem);\n },\n hyphen(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n const len = value.length;\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return function hyphenIC(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n (attr.length === len || attr.charAt(len) === \"-\") &&\n attr.substr(0, len).toLowerCase() === value &&\n next(elem));\n };\n }\n return function hyphen(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n (attr.length === len || attr.charAt(len) === \"-\") &&\n attr.substr(0, len) === value &&\n next(elem));\n };\n },\n element(next, data, options) {\n const { adapter } = options;\n const { name, value } = data;\n if (/\\s/.test(value)) {\n return boolbase.falseFunc;\n }\n const regex = new RegExp(`(?:^|\\\\s)${escapeRegex(value)}(?:$|\\\\s)`, shouldIgnoreCase(data, options) ? \"i\" : \"\");\n return function element(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= value.length &&\n regex.test(attr) &&\n next(elem));\n };\n },\n exists(next, { name }, { adapter }) {\n return (elem) => adapter.hasAttrib(elem, name) && next(elem);\n },\n start(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n const len = value.length;\n if (len === 0) {\n return boolbase.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= len &&\n attr.substr(0, len).toLowerCase() === value &&\n next(elem));\n };\n }\n return (elem) => {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.startsWith(value)) &&\n next(elem);\n };\n },\n end(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n const len = -value.length;\n if (len === 0) {\n return boolbase.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n var _a;\n return ((_a = adapter\n .getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.substr(len).toLowerCase()) === value && next(elem);\n };\n }\n return (elem) => {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.endsWith(value)) &&\n next(elem);\n };\n },\n any(next, data, options) {\n const { adapter } = options;\n const { name, value } = data;\n if (value === \"\") {\n return boolbase.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n const regex = new RegExp(escapeRegex(value), \"i\");\n return function anyIC(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= value.length &&\n regex.test(attr) &&\n next(elem));\n };\n }\n return (elem) => {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.includes(value)) &&\n next(elem);\n };\n },\n not(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n if (value === \"\") {\n return (elem) => !!adapter.getAttributeValue(elem, name) && next(elem);\n }\n else if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n const attr = adapter.getAttributeValue(elem, name);\n return ((attr == null ||\n attr.length !== value.length ||\n attr.toLowerCase() !== value) &&\n next(elem));\n };\n }\n return (elem) => adapter.getAttributeValue(elem, name) !== value && next(elem);\n },\n};\n//# sourceMappingURL=attributes.js.map","// Following http://www.w3.org/TR/css3-selectors/#nth-child-pseudo\n// Whitespace as per https://www.w3.org/TR/selectors-3/#lex is \" \\t\\r\\n\\f\"\nconst whitespace = new Set([9, 10, 12, 13, 32]);\nconst ZERO = \"0\".charCodeAt(0);\nconst NINE = \"9\".charCodeAt(0);\n/**\n * Parses an expression.\n *\n * @throws An `Error` if parsing fails.\n * @returns An array containing the integer step size and the integer offset of the nth rule.\n * @example nthCheck.parse(\"2n+3\"); // returns [2, 3]\n */\nexport function parse(formula) {\n formula = formula.trim().toLowerCase();\n if (formula === \"even\") {\n return [2, 0];\n }\n else if (formula === \"odd\") {\n return [2, 1];\n }\n // Parse [ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]?\n let idx = 0;\n let a = 0;\n let sign = readSign();\n let number = readNumber();\n if (idx < formula.length && formula.charAt(idx) === \"n\") {\n idx++;\n a = sign * (number !== null && number !== void 0 ? number : 1);\n skipWhitespace();\n if (idx < formula.length) {\n sign = readSign();\n skipWhitespace();\n number = readNumber();\n }\n else {\n sign = number = 0;\n }\n }\n // Throw if there is anything else\n if (number === null || idx < formula.length) {\n throw new Error(`n-th rule couldn't be parsed ('${formula}')`);\n }\n return [a, sign * number];\n function readSign() {\n if (formula.charAt(idx) === \"-\") {\n idx++;\n return -1;\n }\n if (formula.charAt(idx) === \"+\") {\n idx++;\n }\n return 1;\n }\n function readNumber() {\n const start = idx;\n let value = 0;\n while (idx < formula.length &&\n formula.charCodeAt(idx) >= ZERO &&\n formula.charCodeAt(idx) <= NINE) {\n value = value * 10 + (formula.charCodeAt(idx) - ZERO);\n idx++;\n }\n // Return `null` if we didn't read anything.\n return idx === start ? null : value;\n }\n function skipWhitespace() {\n while (idx < formula.length &&\n whitespace.has(formula.charCodeAt(idx))) {\n idx++;\n }\n }\n}\n//# sourceMappingURL=parse.js.map","import boolbase from \"boolbase\";\n/**\n * Returns a function that checks if an elements index matches the given rule\n * highly optimized to return the fastest solution.\n *\n * @param parsed A tuple [a, b], as returned by `parse`.\n * @returns A highly optimized function that returns whether an index matches the nth-check.\n * @example\n *\n * ```js\n * const check = nthCheck.compile([2, 3]);\n *\n * check(0); // `false`\n * check(1); // `false`\n * check(2); // `true`\n * check(3); // `false`\n * check(4); // `true`\n * check(5); // `false`\n * check(6); // `true`\n * ```\n */\nexport function compile(parsed) {\n const a = parsed[0];\n // Subtract 1 from `b`, to convert from one- to zero-indexed.\n const b = parsed[1] - 1;\n /*\n * When `b <= 0`, `a * n` won't be lead to any matches for `a < 0`.\n * Besides, the specification states that no elements are\n * matched when `a` and `b` are 0.\n *\n * `b < 0` here as we subtracted 1 from `b` above.\n */\n if (b < 0 && a <= 0)\n return boolbase.falseFunc;\n // When `a` is in the range -1..1, it matches any element (so only `b` is checked).\n if (a === -1)\n return (index) => index <= b;\n if (a === 0)\n return (index) => index === b;\n // When `b <= 0` and `a === 1`, they match any element.\n if (a === 1)\n return b < 0 ? boolbase.trueFunc : (index) => index >= b;\n /*\n * Otherwise, modulo can be used to check if there is a match.\n *\n * Modulo doesn't care about the sign, so let's use `a`s absolute value.\n */\n const absA = Math.abs(a);\n // Get `b mod a`, + a if this is negative.\n const bMod = ((b % absA) + absA) % absA;\n return a > 1\n ? (index) => index >= b && index % absA === bMod\n : (index) => index <= b && index % absA === bMod;\n}\n/**\n * Returns a function that produces a monotonously increasing sequence of indices.\n *\n * If the sequence has an end, the returned function will return `null` after\n * the last index in the sequence.\n *\n * @param parsed A tuple [a, b], as returned by `parse`.\n * @returns A function that produces a sequence of indices.\n * @example <caption>Always increasing (2n+3)</caption>\n *\n * ```js\n * const gen = nthCheck.generate([2, 3])\n *\n * gen() // `1`\n * gen() // `3`\n * gen() // `5`\n * gen() // `8`\n * gen() // `11`\n * ```\n *\n * @example <caption>With end value (-2n+10)</caption>\n *\n * ```js\n *\n * const gen = nthCheck.generate([-2, 5]);\n *\n * gen() // 0\n * gen() // 2\n * gen() // 4\n * gen() // null\n * ```\n */\nexport function generate(parsed) {\n const a = parsed[0];\n // Subtract 1 from `b`, to convert from one- to zero-indexed.\n let b = parsed[1] - 1;\n let n = 0;\n // Make sure to always return an increasing sequence\n if (a < 0) {\n const aPos = -a;\n // Get `b mod a`\n const minValue = ((b % aPos) + aPos) % aPos;\n return () => {\n const val = minValue + aPos * n++;\n return val > b ? null : val;\n };\n }\n if (a === 0)\n return b < 0\n ? // There are no result — always return `null`\n () => null\n : // Return `b` exactly once\n () => (n++ === 0 ? b : null);\n if (b < 0) {\n b += a * Math.ceil(-b / a);\n }\n return () => a * n++ + b;\n}\n//# sourceMappingURL=compile.js.map","import { parse } from \"./parse.js\";\nimport { compile, generate } from \"./compile.js\";\nexport { parse, compile, generate };\n/**\n * Parses and compiles a formula to a highly optimized function.\n * Combination of {@link parse} and {@link compile}.\n *\n * If the formula doesn't match any elements,\n * it returns [`boolbase`](https://github.com/fb55/boolbase)'s `falseFunc`.\n * Otherwise, a function accepting an _index_ is returned, which returns\n * whether or not the passed _index_ matches the formula.\n *\n * Note: The nth-rule starts counting at `1`, the returned function at `0`.\n *\n * @param formula The formula to compile.\n * @example\n * const check = nthCheck(\"2n+3\");\n *\n * check(0); // `false`\n * check(1); // `false`\n * check(2); // `true`\n * check(3); // `false`\n * check(4); // `true`\n * check(5); // `false`\n * check(6); // `true`\n */\nexport default function nthCheck(formula) {\n return compile(parse(formula));\n}\n/**\n * Parses and compiles a formula to a generator that produces a sequence of indices.\n * Combination of {@link parse} and {@link generate}.\n *\n * @param formula The formula to compile.\n * @returns A function that produces a sequence of indices.\n * @example <caption>Always increasing</caption>\n *\n * ```js\n * const gen = nthCheck.sequence('2n+3')\n *\n * gen() // `1`\n * gen() // `3`\n * gen() // `5`\n * gen() // `8`\n * gen() // `11`\n * ```\n *\n * @example <caption>With end value</caption>\n *\n * ```js\n *\n * const gen = nthCheck.sequence('-2n+5');\n *\n * gen() // 0\n * gen() // 2\n * gen() // 4\n * gen() // null\n * ```\n */\nexport function sequence(formula) {\n return generate(parse(formula));\n}\n//# sourceMappingURL=index.js.map","import getNCheck from \"nth-check\";\nimport boolbase from \"boolbase\";\nfunction getChildFunc(next, adapter) {\n return (elem) => {\n const parent = adapter.getParent(elem);\n return parent != null && adapter.isTag(parent) && next(elem);\n };\n}\nexport const filters = {\n contains(next, text, { adapter }) {\n return function contains(elem) {\n return next(elem) && adapter.getText(elem).includes(text);\n };\n },\n icontains(next, text, { adapter }) {\n const itext = text.toLowerCase();\n return function icontains(elem) {\n return (next(elem) &&\n adapter.getText(elem).toLowerCase().includes(itext));\n };\n },\n // Location specific methods\n \"nth-child\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthChild(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = 0; i < siblings.length; i++) {\n if (equals(elem, siblings[i]))\n break;\n if (adapter.isTag(siblings[i])) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-last-child\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthLastChild(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = siblings.length - 1; i >= 0; i--) {\n if (equals(elem, siblings[i]))\n break;\n if (adapter.isTag(siblings[i])) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-of-type\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthOfType(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === adapter.getName(elem)) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-last-of-type\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthLastOfType(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = siblings.length - 1; i >= 0; i--) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === adapter.getName(elem)) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n // TODO determine the actual root element\n root(next, _rule, { adapter }) {\n return (elem) => {\n const parent = adapter.getParent(elem);\n return (parent == null || !adapter.isTag(parent)) && next(elem);\n };\n },\n scope(next, rule, options, context) {\n const { equals } = options;\n if (!context || context.length === 0) {\n // Equivalent to :root\n return filters[\"root\"](next, rule, options);\n }\n if (context.length === 1) {\n // NOTE: can't be unpacked, as :has uses this for side-effects\n return (elem) => equals(context[0], elem) && next(elem);\n }\n return (elem) => context.includes(elem) && next(elem);\n },\n hover: dynamicStatePseudo(\"isHovered\"),\n visited: dynamicStatePseudo(\"isVisited\"),\n active: dynamicStatePseudo(\"isActive\"),\n};\n/**\n * Dynamic state pseudos. These depend on optional Adapter methods.\n *\n * @param name The name of the adapter method to call.\n * @returns Pseudo for the `filters` object.\n */\nfunction dynamicStatePseudo(name) {\n return function dynamicPseudo(next, _rule, { adapter }) {\n const func = adapter[name];\n if (typeof func !== \"function\") {\n return boolbase.falseFunc;\n }\n return function active(elem) {\n return func(elem) && next(elem);\n };\n };\n}\n//# sourceMappingURL=filters.js.map","// While filters are precompiled, pseudos get called when they are needed\nexport const pseudos = {\n empty(elem, { adapter }) {\n return !adapter.getChildren(elem).some((elem) => \n // FIXME: `getText` call is potentially expensive.\n adapter.isTag(elem) || adapter.getText(elem) !== \"\");\n },\n \"first-child\"(elem, { adapter, equals }) {\n if (adapter.prevElementSibling) {\n return adapter.prevElementSibling(elem) == null;\n }\n const firstChild = adapter\n .getSiblings(elem)\n .find((elem) => adapter.isTag(elem));\n return firstChild != null && equals(elem, firstChild);\n },\n \"last-child\"(elem, { adapter, equals }) {\n const siblings = adapter.getSiblings(elem);\n for (let i = siblings.length - 1; i >= 0; i--) {\n if (equals(elem, siblings[i]))\n return true;\n if (adapter.isTag(siblings[i]))\n break;\n }\n return false;\n },\n \"first-of-type\"(elem, { adapter, equals }) {\n const siblings = adapter.getSiblings(elem);\n const elemName = adapter.getName(elem);\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n return true;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === elemName) {\n break;\n }\n }\n return false;\n },\n \"last-of-type\"(elem, { adapter, equals }) {\n const siblings = adapter.getSiblings(elem);\n const elemName = adapter.getName(elem);\n for (let i = siblings.length - 1; i >= 0; i--) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n return true;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === elemName) {\n break;\n }\n }\n return false;\n },\n \"only-of-type\"(elem, { adapter, equals }) {\n const elemName = adapter.getName(elem);\n return adapter\n .getSiblings(elem)\n .every((sibling) => equals(elem, sibling) ||\n !adapter.isTag(sibling) ||\n adapter.getName(sibling) !== elemName);\n },\n \"only-child\"(elem, { adapter, equals }) {\n return adapter\n .getSiblings(elem)\n .every((sibling) => equals(elem, sibling) || !adapter.isTag(sibling));\n },\n};\nexport function verifyPseudoArgs(func, name, subselect, argIndex) {\n if (subselect === null) {\n if (func.length > argIndex) {\n throw new Error(`Pseudo-class :${name} requires an argument`);\n }\n }\n else if (func.length === argIndex) {\n throw new Error(`Pseudo-class :${name} doesn't have any arguments`);\n }\n}\n//# sourceMappingURL=pseudos.js.map","/**\n * Aliases are pseudos that are expressed as selectors.\n */\nexport const aliases = {\n // Links\n \"any-link\": \":is(a, area, link)[href]\",\n link: \":any-link:not(:visited)\",\n // Forms\n // https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements\n disabled: `:is(\n :is(button, input, select, textarea, optgroup, option)[disabled],\n optgroup[disabled] > option,\n fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)\n )`,\n enabled: \":not(:disabled)\",\n checked: \":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)\",\n required: \":is(input, select, textarea)[required]\",\n optional: \":is(input, select, textarea):not([required])\",\n // JQuery extensions\n // https://html.spec.whatwg.org/multipage/form-elements.html#concept-option-selectedness\n selected: \"option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)\",\n checkbox: \"[type=checkbox]\",\n file: \"[type=file]\",\n password: \"[type=password]\",\n radio: \"[type=radio]\",\n reset: \"[type=reset]\",\n image: \"[type=image]\",\n submit: \"[type=submit]\",\n parent: \":not(:empty)\",\n header: \":is(h1, h2, h3, h4, h5, h6)\",\n button: \":is(button, input[type=button])\",\n input: \":is(input, textarea, select, button)\",\n text: \"input:is(:not([type!='']), [type=text])\",\n};\n//# sourceMappingURL=aliases.js.map","import boolbase from \"boolbase\";\nimport { isTraversal } from \"../sort.js\";\n/** Used as a placeholder for :has. Will be replaced with the actual element. */\nexport const PLACEHOLDER_ELEMENT = {};\nexport function ensureIsTag(next, adapter) {\n if (next === boolbase.falseFunc)\n return boolbase.falseFunc;\n return (elem) => adapter.isTag(elem) && next(elem);\n}\nexport function getNextSiblings(elem, adapter) {\n const siblings = adapter.getSiblings(elem);\n if (siblings.length <= 1)\n return [];\n const elemIndex = siblings.indexOf(elem);\n if (elemIndex < 0 || elemIndex === siblings.length - 1)\n return [];\n return siblings.slice(elemIndex + 1).filter(adapter.isTag);\n}\nfunction copyOptions(options) {\n // Not copied: context, rootFunc\n return {\n xmlMode: !!options.xmlMode,\n lowerCaseAttributeNames: !!options.lowerCaseAttributeNames,\n lowerCaseTags: !!options.lowerCaseTags,\n quirksMode: !!options.quirksMode,\n cacheResults: !!options.cacheResults,\n pseudos: options.pseudos,\n adapter: options.adapter,\n equals: options.equals,\n };\n}\nconst is = (next, token, options, context, compileToken) => {\n const func = compileToken(token, copyOptions(options), context);\n return func === boolbase.trueFunc\n ? next\n : func === boolbase.falseFunc\n ? boolbase.falseFunc\n : (elem) => func(elem) && next(elem);\n};\n/*\n * :not, :has, :is, :matches and :where have to compile selectors\n * doing this in src/pseudos.ts would lead to circular dependencies,\n * so we add them here\n */\nexport const subselects = {\n is,\n /**\n * `:matches` and `:where` are aliases for `:is`.\n */\n matches: is,\n where: is,\n not(next, token, options, context, compileToken) {\n const func = compileToken(token, copyOptions(options), context);\n return func === boolbase.falseFunc\n ? next\n : func === boolbase.trueFunc\n ? boolbase.falseFunc\n : (elem) => !func(elem) && next(elem);\n },\n has(next, subselect, options, _context, compileToken) {\n const { adapter } = options;\n const opts = copyOptions(options);\n opts.relativeSelector = true;\n const context = subselect.some((s) => s.some(isTraversal))\n ? // Used as a placeholder. Will be replaced with the actual element.\n [PLACEHOLDER_ELEMENT]\n : undefined;\n const compiled = compileToken(subselect, opts, context);\n if (compiled === boolbase.falseFunc)\n return boolbase.falseFunc;\n const hasElement = ensureIsTag(compiled, adapter);\n // If `compiled` is `trueFunc`, we can skip this.\n if (context && compiled !== boolbase.trueFunc) {\n /*\n * `shouldTestNextSiblings` will only be true if the query starts with\n * a traversal (sibling or adjacent). That means we will always have a context.\n */\n const { shouldTestNextSiblings = false } = compiled;\n return (elem) => {\n if (!next(elem))\n return false;\n context[0] = elem;\n const childs = adapter.getChildren(elem);\n const nextElements = shouldTestNextSiblings\n ? [...childs, ...getNextSiblings(elem, adapter)]\n : childs;\n return adapter.existsOne(hasElement, nextElements);\n };\n }\n return (elem) => next(elem) &&\n adapter.existsOne(hasElement, adapter.getChildren(elem));\n },\n};\n//# sourceMappingURL=subselects.js.map","import { parse } from \"css-what\";\nimport { filters } from \"./filters.js\";\nimport { pseudos, verifyPseudoArgs } from \"./pseudos.js\";\nimport { aliases } from \"./aliases.js\";\nimport { subselects } from \"./subselects.js\";\nexport { filters, pseudos, aliases };\nexport function compilePseudoSelector(next, selector, options, context, compileToken) {\n var _a;\n const { name, data } = selector;\n if (Array.isArray(data)) {\n if (!(name in subselects)) {\n throw new Error(`Unknown pseudo-class :${name}(${data})`);\n }\n return subselects[name](next, data, options, context, compileToken);\n }\n const userPseudo = (_a = options.pseudos) === null || _a === void 0 ? void 0 : _a[name];\n const stringPseudo = typeof userPseudo === \"string\" ? userPseudo : aliases[name];\n if (typeof stringPseudo === \"string\") {\n if (data != null) {\n throw new Error(`Pseudo ${name} doesn't have any arguments`);\n }\n // The alias has to be parsed here, to make sure options are respected.\n const alias = parse(stringPseudo);\n return subselects[\"is\"](next, alias, options, context, compileToken);\n }\n if (typeof userPseudo === \"function\") {\n verifyPseudoArgs(userPseudo, name, data, 1);\n return (elem) => userPseudo(elem, data) && next(elem);\n }\n if (name in filters) {\n return filters[name](next, data, options, context);\n }\n if (name in pseudos) {\n const pseudo = pseudos[name];\n verifyPseudoArgs(pseudo, name, data, 2);\n return (elem) => pseudo(elem, options, data) && next(elem);\n }\n throw new Error(`Unknown pseudo-class :${name}`);\n}\n//# sourceMappingURL=index.js.map","import { attributeRules } from \"./attributes.js\";\nimport { compilePseudoSelector } from \"./pseudo-selectors/index.js\";\nimport { SelectorType } from \"css-what\";\nfunction getElementParent(node, adapter) {\n const parent = adapter.getParent(node);\n if (parent && adapter.isTag(parent)) {\n return parent;\n }\n return null;\n}\n/*\n * All available rules\n */\nexport function compileGeneralSelector(next, selector, options, context, compileToken) {\n const { adapter, equals } = options;\n switch (selector.type) {\n case SelectorType.PseudoElement: {\n throw new Error(\"Pseudo-elements are not supported by css-select\");\n }\n case SelectorType.ColumnCombinator: {\n throw new Error(\"Column combinators are not yet supported by css-select\");\n }\n case SelectorType.Attribute: {\n if (selector.namespace != null) {\n throw new Error(\"Namespaced attributes are not yet supported by css-select\");\n }\n if (!options.xmlMode || options.lowerCaseAttributeNames) {\n selector.name = selector.name.toLowerCase();\n }\n return attributeRules[selector.action](next, selector, options);\n }\n case SelectorType.Pseudo: {\n return compilePseudoSelector(next, selector, options, context, compileToken);\n }\n // Tags\n case SelectorType.Tag: {\n if (selector.namespace != null) {\n throw new Error(\"Namespaced tag names are not yet supported by css-select\");\n }\n let { name } = selector;\n if (!options.xmlMode || options.lowerCaseTags) {\n name = name.toLowerCase();\n }\n return function tag(elem) {\n return adapter.getName(elem) === name && next(elem);\n };\n }\n // Traversal\n case SelectorType.Descendant: {\n if (options.cacheResults === false ||\n typeof WeakSet === \"undefined\") {\n return function descendant(elem) {\n let current = elem;\n while ((current = getElementParent(current, adapter))) {\n if (next(current)) {\n return true;\n }\n }\n return false;\n };\n }\n // @ts-expect-error `ElementNode` is not extending object\n const isFalseCache = new WeakSet();\n return function cachedDescendant(elem) {\n let current = elem;\n while ((current = getElementParent(current, adapter))) {\n if (!isFalseCache.has(current)) {\n if (adapter.isTag(current) && next(current)) {\n return true;\n }\n isFalseCache.add(current);\n }\n }\n return false;\n };\n }\n case \"_flexibleDescendant\": {\n // Include element itself, only used while querying an array\n return function flexibleDescendant(elem) {\n let current = elem;\n do {\n if (next(current))\n return true;\n } while ((current = getElementParent(current, adapter)));\n return false;\n };\n }\n case SelectorType.Parent: {\n return function parent(elem) {\n return adapter\n .getChildren(elem)\n .some((elem) => adapter.isTag(elem) && next(elem));\n };\n }\n case SelectorType.Child: {\n return function child(elem) {\n const parent = adapter.getParent(elem);\n return parent != null && adapter.isTag(parent) && next(parent);\n };\n }\n case SelectorType.Sibling: {\n return function sibling(elem) {\n const siblings = adapter.getSiblings(elem);\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) && next(currentSibling)) {\n return true;\n }\n }\n return false;\n };\n }\n case SelectorType.Adjacent: {\n if (adapter.prevElementSibling) {\n return function adjacent(elem) {\n const previous = adapter.prevElementSibling(elem);\n return previous != null && next(previous);\n };\n }\n return function adjacent(elem) {\n const siblings = adapter.getSiblings(elem);\n let lastElement;\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling)) {\n lastElement = currentSibling;\n }\n }\n return !!lastElement && next(lastElement);\n };\n }\n case SelectorType.Universal: {\n if (selector.namespace != null && selector.namespace !== \"*\") {\n throw new Error(\"Namespaced universal selectors are not yet supported by css-select\");\n }\n return next;\n }\n }\n}\n//# sourceMappingURL=general.js.map","import { parse, SelectorType } from \"css-what\";\nimport boolbase from \"boolbase\";\nimport sortRules, { isTraversal } from \"./sort.js\";\nimport { compileGeneralSelector } from \"./general.js\";\nimport { ensureIsTag, PLACEHOLDER_ELEMENT, } from \"./pseudo-selectors/subselects.js\";\n/**\n * Compiles a selector to an executable function.\n *\n * @param selector Selector to compile.\n * @param options Compilation options.\n * @param context Optional context for the selector.\n */\nexport function compile(selector, options, context) {\n const next = compileUnsafe(selector, options, context);\n return ensureIsTag(next, options.adapter);\n}\nexport function compileUnsafe(selector, options, context) {\n const token = typeof selector === \"string\" ? parse(selector) : selector;\n return compileToken(token, options, context);\n}\nfunction includesScopePseudo(t) {\n return (t.type === SelectorType.Pseudo &&\n (t.name === \"scope\" ||\n (Array.isArray(t.data) &&\n t.data.some((data) => data.some(includesScopePseudo)))));\n}\nconst DESCENDANT_TOKEN = { type: SelectorType.Descendant };\nconst FLEXIBLE_DESCENDANT_TOKEN = {\n type: \"_flexibleDescendant\",\n};\nconst SCOPE_TOKEN = {\n type: SelectorType.Pseudo,\n name: \"scope\",\n data: null,\n};\n/*\n * CSS 4 Spec (Draft): 3.4.1. Absolutizing a Relative Selector\n * http://www.w3.org/TR/selectors4/#absolutizing\n */\nfunction absolutize(token, { adapter }, context) {\n // TODO Use better check if the context is a document\n const hasContext = !!(context === null || context === void 0 ? void 0 : context.every((e) => {\n const parent = adapter.isTag(e) && adapter.getParent(e);\n return e === PLACEHOLDER_ELEMENT || (parent && adapter.isTag(parent));\n }));\n for (const t of token) {\n if (t.length > 0 &&\n isTraversal(t[0]) &&\n t[0].type !== SelectorType.Descendant) {\n // Don't continue in else branch\n }\n else if (hasContext && !t.some(includesScopePseudo)) {\n t.unshift(DESCENDANT_TOKEN);\n }\n else {\n continue;\n }\n t.unshift(SCOPE_TOKEN);\n }\n}\nexport function compileToken(token, options, context) {\n var _a;\n token.forEach(sortRules);\n context = (_a = options.context) !== null && _a !== void 0 ? _a : context;\n const isArrayContext = Array.isArray(context);\n const finalContext = context && (Array.isArray(context) ? context : [context]);\n // Check if the selector is relative\n if (options.relativeSelector !== false) {\n absolutize(token, options, finalContext);\n }\n else if (token.some((t) => t.length > 0 && isTraversal(t[0]))) {\n throw new Error(\"Relative selectors are not allowed when the `relativeSelector` option is disabled\");\n }\n let shouldTestNextSiblings = false;\n const query = token\n .map((rules) => {\n if (rules.length >= 2) {\n const [first, second] = rules;\n if (first.type !== SelectorType.Pseudo ||\n first.name !== \"scope\") {\n // Ignore\n }\n else if (isArrayContext &&\n second.type === SelectorType.Descendant) {\n rules[1] = FLEXIBLE_DESCENDANT_TOKEN;\n }\n else if (second.type === SelectorType.Adjacent ||\n second.type === SelectorType.Sibling) {\n shouldTestNextSiblings = true;\n }\n }\n return compileRules(rules, options, finalContext);\n })\n .reduce(reduceRules, boolbase.falseFunc);\n query.shouldTestNextSiblings = shouldTestNextSiblings;\n return query;\n}\nfunction compileRules(rules, options, context) {\n var _a;\n return rules.reduce((previous, rule) => previous === boolbase.falseFunc\n ? boolbase.falseFunc\n : compileGeneralSelector(previous, rule, options, context, compileToken), (_a = options.rootFunc) !== null && _a !== void 0 ? _a : boolbase.trueFunc);\n}\nfunction reduceRules(a, b) {\n if (b === boolbase.falseFunc || a === boolbase.trueFunc) {\n return a;\n }\n if (a === boolbase.falseFunc || b === boolbase.trueFunc) {\n return b;\n }\n return function combine(elem) {\n return a(elem) || b(elem);\n };\n}\n//# sourceMappingURL=compile.js.map","import * as DomUtils from \"domutils\";\nimport boolbase from \"boolbase\";\nimport { compile as compileRaw, compileUnsafe, compileToken, } from \"./compile.js\";\nimport { getNextSiblings } from \"./pseudo-selectors/subselects.js\";\nconst defaultEquals = (a, b) => a === b;\nconst defaultOptions = {\n adapter: DomUtils,\n equals: defaultEquals,\n};\nfunction convertOptionFormats(options) {\n var _a, _b, _c, _d;\n /*\n * We force one format of options to the other one.\n */\n // @ts-expect-error Default options may have incompatible `Node` / `ElementNode`.\n const opts = options !== null && options !== void 0 ? options : defaultOptions;\n // @ts-expect-error Same as above.\n (_a = opts.adapter) !== null && _a !== void 0 ? _a : (opts.adapter = DomUtils);\n // @ts-expect-error `equals` does not exist on `Options`\n (_b = opts.equals) !== null && _b !== void 0 ? _b : (opts.equals = (_d = (_c = opts.adapter) === null || _c === void 0 ? void 0 : _c.equals) !== null && _d !== void 0 ? _d : defaultEquals);\n return opts;\n}\nfunction wrapCompile(func) {\n return function addAdapter(selector, options, context) {\n const opts = convertOptionFormats(options);\n return func(selector, opts, context);\n };\n}\n/**\n * Compiles the query, returns a function.\n */\nexport const compile = wrapCompile(compileRaw);\nexport const _compileUnsafe = wrapCompile(compileUnsafe);\nexport const _compileToken = wrapCompile(compileToken);\nfunction getSelectorFunc(searchFunc) {\n return function select(query, elements, options) {\n const opts = convertOptionFormats(options);\n if (typeof query !== \"function\") {\n query = compileUnsafe(query, opts, elements);\n }\n const filteredElements = prepareContext(elements, opts.adapter, query.shouldTestNextSiblings);\n return searchFunc(query, filteredElements, opts);\n };\n}\nexport function prepareContext(elems, adapter, shouldTestNextSiblings = false) {\n /*\n * Add siblings if the query requires them.\n * See https://github.com/fb55/css-select/pull/43#issuecomment-225414692\n */\n if (shouldTestNextSiblings) {\n elems = appendNextSiblings(elems, adapter);\n }\n return Array.isArray(elems)\n ? adapter.removeSubsets(elems)\n : adapter.getChildren(elems);\n}\nfunction appendNextSiblings(elem, adapter) {\n // Order matters because jQuery seems to check the children before the siblings\n const elems = Array.isArray(elem) ? elem.slice(0) : [elem];\n const elemsLength = elems.length;\n for (let i = 0; i < elemsLength; i++) {\n const nextSiblings = getNextSiblings(elems[i], adapter);\n elems.push(...nextSiblings);\n }\n return elems;\n}\n/**\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elems Elements to query. If it is an element, its children will be queried..\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns All matching elements.\n *\n */\nexport const selectAll = getSelectorFunc((query, elems, options) => query === boolbase.falseFunc || !elems || elems.length === 0\n ? []\n : options.adapter.findAll(query, elems));\n/**\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elems Elements to query. If it is an element, its children will be queried..\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns the first match, or null if there was no match.\n */\nexport const selectOne = getSelectorFunc((query, elems, options) => query === boolbase.falseFunc || !elems || elems.length === 0\n ? null\n : options.adapter.findOne(query, elems));\n/**\n * Tests whether or not an element is matched by query.\n *\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elem The element to test if it matches the query.\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns\n */\nexport function is(elem, query, options) {\n const opts = convertOptionFormats(options);\n return (typeof query === \"function\" ? query : compileRaw(query, opts))(elem);\n}\n/**\n * Alias for selectAll(query, elems, options).\n * @see [compile] for supported selector queries.\n */\nexport default selectAll;\n// Export filters, pseudos and aliases to allow users to supply their own.\n/** @deprecated Use the `pseudos` option instead. */\nexport { filters, pseudos, aliases } from \"./pseudo-selectors/index.js\";\n//# sourceMappingURL=index.js.map","import * as CSSselect from 'css-select';\n\nimport {ELEMENT_NODE, TEXT_NODE} from './constants.js';\nimport {ignoreCase} from './utils.js';\n\nconst {isArray} = Array;\n\n/* c8 ignore start */\nconst isTag = ({nodeType}) => nodeType === ELEMENT_NODE;\n\nconst existsOne = (test, elements) => elements.some(\n element => isTag(element) && (\n test(element) ||\n existsOne(test, getChildren(element))\n )\n);\n\nconst getAttributeValue = (element, name) => name === 'class' ?\n element.classList.value : element.getAttribute(name);\n\nconst getChildren = ({childNodes}) => childNodes;\n\nconst getName = (element) => {\n const {localName} = element;\n return ignoreCase(element) ? localName.toLowerCase() : localName;\n};\n\nconst getParent = ({parentNode}) => parentNode;\n\nconst getSiblings = element => {\n const {parentNode} = element;\n return parentNode ? getChildren(parentNode) : element;\n};\n\nconst getText = node => {\n if (isArray(node))\n return node.map(getText).join('');\n if (isTag(node))\n return getText(getChildren(node));\n if (node.nodeType === TEXT_NODE)\n return node.data;\n return '';\n};\n\nconst hasAttrib = (element, name) => element.hasAttribute(name);\n\nconst removeSubsets = nodes => {\n let {length} = nodes;\n while (length--) {\n const node = nodes[length];\n if (length && -1 < nodes.lastIndexOf(node, length - 1)) {\n nodes.splice(length, 1);\n continue;\n }\n for (let {parentNode} = node; parentNode; parentNode = parentNode.parentNode) {\n if (nodes.includes(parentNode)) {\n nodes.splice(length, 1);\n break;\n }\n }\n }\n return nodes;\n};\n\nconst findAll = (test, nodes) => {\n const matches = [];\n for (const node of nodes) {\n if (isTag(node)) {\n if (test(node))\n matches.push(node);\n matches.push(...findAll(test, getChildren(node)));\n }\n }\n return matches;\n};\n\nconst findOne = (test, nodes) => {\n for (let node of nodes)\n if (test(node) || (node = findOne(test, getChildren(node))))\n return node;\n return null;\n};\n/* c8 ignore stop */\n\nconst adapter = {\n isTag,\n existsOne,\n getAttributeValue,\n getChildren,\n getName,\n getParent,\n getSiblings,\n getText,\n hasAttrib,\n removeSubsets,\n findAll,\n findOne\n};\n\nexport const prepareMatch = (element, selectors) => CSSselect.compile(\n selectors,\n {\n context: selectors.includes(':scope') ? element : void 0,\n xmlMode: !ignoreCase(element),\n adapter\n }\n);\n\nexport const matches = (element, selectors) => CSSselect.is(\n element,\n selectors,\n {\n strict: true,\n context: selectors.includes(':scope') ? element : void 0,\n xmlMode: !ignoreCase(element),\n adapter\n }\n);\n","const {replace} = '';\n\n// escape\nconst ca = /[<>&\\xA0]/g;\n\nconst esca = {\n '\\xA0': ' ',\n '&': '&',\n '<': '<',\n '>': '>'\n};\n\nconst pe = m => esca[m];\n\n/**\n * Safely escape HTML entities such as `&`, `<`, `>` only.\n * @param {string} es the input to safely escape\n * @returns {string} the escaped input, and it **throws** an error if\n * the input type is unexpected, except for boolean and numbers,\n * converted as string.\n */\nexport const escape = es => replace.call(es, ca, pe);\n","import {TEXT_NODE} from '../shared/constants.js';\nimport {VALUE} from '../shared/symbols.js';\nimport {escape} from '../shared/text-escaper.js';\n\nimport {CharacterData} from './character-data.js';\n\n/**\n * @implements globalThis.Text\n */\nexport class Text extends CharacterData {\n constructor(ownerDocument, data = '') {\n super(ownerDocument, '#text', TEXT_NODE, data);\n }\n\n get wholeText() {\n const text = [];\n let {previousSibling, nextSibling} = this;\n while (previousSibling) {\n if (previousSibling.nodeType === TEXT_NODE)\n text.unshift(previousSibling[VALUE]);\n else\n break;\n previousSibling = previousSibling.previousSibling;\n }\n text.push(this[VALUE]);\n while (nextSibling) {\n if (nextSibling.nodeType === TEXT_NODE)\n text.push(nextSibling[VALUE]);\n else\n break;\n nextSibling = nextSibling.nextSibling;\n }\n return text.join('');\n }\n\n cloneNode() {\n const {ownerDocument, [VALUE]: data} = this;\n return new Text(ownerDocument, data);\n }\n\n toString() { return escape(this[VALUE]); }\n}\n","// https://dom.spec.whatwg.org/#interface-parentnode\n// Document, DocumentFragment, Element\n\nimport {\n ATTRIBUTE_NODE,\n DOCUMENT_FRAGMENT_NODE,\n ELEMENT_NODE,\n TEXT_NODE,\n NODE_END,\n COMMENT_NODE\n} from '../shared/constants.js';\n\nimport {PRIVATE, END, NEXT, PREV, START, VALUE} from '../shared/symbols.js';\n\nimport {prepareMatch} from '../shared/matches.js';\nimport {previousSibling, nextSibling} from '../shared/node.js';\nimport {getEnd, knownAdjacent, knownBoundaries, knownSegment, knownSiblings, localCase} from '../shared/utils.js';\n\nimport {Node} from '../interface/node.js';\nimport {Text} from '../interface/text.js';\nimport {NodeList} from '../interface/node-list.js';\n\nimport {moCallback} from '../interface/mutation-observer.js';\nimport {connectedCallback} from '../interface/custom-element-registry.js';\n\nimport {nextElementSibling} from './non-document-type-child-node.js';\n\nconst isNode = node => node instanceof Node;\n\nconst insert = (parentNode, child, nodes) => {\n const {ownerDocument} = parentNode;\n for (const node of nodes)\n parentNode.insertBefore(\n isNode(node) ? node : new Text(ownerDocument, node),\n child\n );\n};\n\n/** @typedef { import('../interface/element.js').Element & {\n [typeof NEXT]: NodeStruct,\n [typeof PREV]: NodeStruct,\n [typeof START]: NodeStruct,\n nodeType: typeof ATTRIBUTE_NODE | typeof DOCUMENT_FRAGMENT_NODE | typeof ELEMENT_NODE | typeof TEXT_NODE | typeof NODE_END | typeof COMMENT_NODE,\n ownerDocument: Document,\n parentNode: ParentNode,\n}} NodeStruct */\n\nexport class ParentNode extends Node {\n constructor(ownerDocument, localName, nodeType) {\n super(ownerDocument, localName, nodeType);\n this[PRIVATE] = null;\n /** @type {NodeStruct} */\n this[NEXT] = this[END] = {\n [NEXT]: null,\n [PREV]: this,\n [START]: this,\n nodeType: NODE_END,\n ownerDocument: this.ownerDocument,\n parentNode: null\n };\n }\n\n get childNodes() {\n const childNodes = new NodeList;\n let {firstChild} = this;\n while (firstChild) {\n childNodes.push(firstChild);\n firstChild = nextSibling(firstChild);\n }\n return childNodes;\n }\n\n get children() {\n const children = new NodeList;\n let {firstElementChild} = this;\n while (firstElementChild) {\n children.push(firstElementChild);\n firstElementChild = nextElementSibling(firstElementChild);\n }\n return children;\n }\n\n /**\n * @returns {NodeStruct | null}\n */\n get firstChild() {\n let {[NEXT]: next, [END]: end} = this;\n while (next.nodeType === ATTRIBUTE_NODE)\n next = next[NEXT];\n return next === end ? null : next;\n }\n\n /**\n * @returns {NodeStruct | null}\n */\n get firstElementChild() {\n let {firstChild} = this;\n while (firstChild) {\n if (firstChild.nodeType === ELEMENT_NODE)\n return firstChild;\n firstChild = nextSibling(firstChild);\n }\n return null;\n }\n\n get lastChild() {\n const prev = this[END][PREV];\n switch (prev.nodeType) {\n case NODE_END:\n return prev[START];\n case ATTRIBUTE_NODE:\n return null;\n }\n return prev === this ? null : prev;\n }\n\n get lastElementChild() {\n let {lastChild} = this;\n while (lastChild) {\n if (lastChild.nodeType === ELEMENT_NODE)\n return lastChild;\n lastChild = previousSibling(lastChild);\n }\n return null;\n }\n\n get childElementCount() {\n return this.children.length;\n }\n\n prepend(...nodes) {\n insert(this, this.firstChild, nodes);\n }\n\n append(...nodes) {\n insert(this, this[END], nodes);\n }\n\n replaceChildren(...nodes) {\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end && next.nodeType === ATTRIBUTE_NODE)\n next = next[NEXT];\n while (next !== end) {\n const after = getEnd(next)[NEXT];\n next.remove();\n next = after;\n }\n if (nodes.length)\n insert(this, end, nodes);\n }\n\n getElementsByClassName(className) {\n const elements = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (\n next.nodeType === ELEMENT_NODE &&\n next.hasAttribute('class') &&\n next.classList.has(className)\n )\n elements.push(next);\n next = next[NEXT];\n }\n return elements;\n }\n\n getElementsByTagName(tagName) {\n const elements = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && (\n next.localName === tagName ||\n localCase(next) === tagName\n ))\n elements.push(next);\n next = next[NEXT];\n }\n return elements;\n }\n\n querySelector(selectors) {\n const matches = prepareMatch(this, selectors);\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && matches(next))\n return next;\n next = next.localName === 'template' ? next[END] : next[NEXT];\n }\n return null;\n }\n\n querySelectorAll(selectors) {\n const matches = prepareMatch(this, selectors);\n const elements = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && matches(next))\n elements.push(next);\n next = next.localName === 'template' ? next[END] : next[NEXT];\n }\n return elements;\n }\n\n appendChild(node) {\n return this.insertBefore(node, this[END]);\n }\n\n contains(node) {\n let parentNode = node;\n while (parentNode && parentNode !== this)\n parentNode = parentNode.parentNode;\n return parentNode === this;\n }\n\n insertBefore(node, before = null) {\n if (node === before)\n return node;\n if (node === this)\n throw new Error('unable to append a node to itself');\n const next = before || this[END];\n switch (node.nodeType) {\n case ELEMENT_NODE:\n node.remove();\n node.parentNode = this;\n knownBoundaries(next[PREV], node, next);\n moCallback(node, null);\n connectedCallback(node);\n break;\n case DOCUMENT_FRAGMENT_NODE: {\n let {[PRIVATE]: parentNode, firstChild, lastChild} = node;\n if (firstChild) {\n knownSegment(next[PREV], firstChild, lastChild, next);\n knownAdjacent(node, node[END]);\n if (parentNode)\n parentNode.replaceChildren();\n do {\n firstChild.parentNode = this;\n moCallback(firstChild, null);\n if (firstChild.nodeType === ELEMENT_NODE)\n connectedCallback(firstChild);\n } while (\n firstChild !== lastChild &&\n (firstChild = nextSibling(firstChild))\n );\n }\n break;\n }\n case TEXT_NODE:\n case COMMENT_NODE:\n node.remove();\n /* eslint no-fallthrough:0 */\n // this covers DOCUMENT_TYPE_NODE too\n default:\n node.parentNode = this;\n knownSiblings(next[PREV], node, next);\n moCallback(node, null);\n break;\n }\n return node;\n }\n\n normalize() {\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n const {[NEXT]: $next, [PREV]: $prev, nodeType} = next;\n if (nodeType === TEXT_NODE) {\n if (!next[VALUE])\n next.remove();\n else if ($prev && $prev.nodeType === TEXT_NODE) {\n $prev.textContent += next.textContent;\n next.remove();\n }\n }\n next = $next;\n }\n }\n\n removeChild(node) {\n if (node.parentNode !== this)\n throw new Error('node is not a child');\n node.remove();\n return node;\n }\n\n replaceChild(node, replaced) {\n const next = getEnd(replaced)[NEXT];\n replaced.remove();\n this.insertBefore(node, next);\n return replaced;\n }\n}\n","// https://dom.spec.whatwg.org/#interface-nonelementparentnode\n// Document, DocumentFragment\n\nimport {ELEMENT_NODE} from '../shared/constants.js';\nimport {END, NEXT} from '../shared/symbols.js';\nimport {nonElementAsJSON} from '../shared/jsdon.js';\n\nimport {ParentNode} from './parent-node.js';\n\nexport class NonElementParentNode extends ParentNode {\n getElementById(id) {\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && next.id === id)\n return next;\n next = next[NEXT];\n }\n return null;\n }\n\n cloneNode(deep) {\n const {ownerDocument, constructor} = this;\n const nonEPN = new constructor(ownerDocument);\n if (deep) {\n const {[END]: end} = nonEPN;\n for (const node of this.childNodes)\n nonEPN.insertBefore(node.cloneNode(deep), end);\n }\n return nonEPN; \n }\n\n toString() {\n const {childNodes, localName} = this;\n return `<${localName}>${childNodes.join('')}</${localName}>`;\n }\n\n toJSON() {\n const json = [];\n nonElementAsJSON(this, json);\n return json;\n }\n}\n","import {DOCUMENT_FRAGMENT_NODE} from '../shared/constants.js';\nimport {NonElementParentNode} from '../mixin/non-element-parent-node.js';\n\n/**\n * @implements globalThis.DocumentFragment\n */\nexport class DocumentFragment extends NonElementParentNode {\n constructor(ownerDocument) {\n super(ownerDocument, '#document-fragment', DOCUMENT_FRAGMENT_NODE);\n }\n}\n","import {DOCUMENT_TYPE_NODE} from '../shared/constants.js';\nimport {documentTypeAsJSON} from '../shared/jsdon.js';\n\nimport {Node} from './node.js';\n\n/**\n * @implements globalThis.DocumentType\n */\nexport class DocumentType extends Node {\n constructor(ownerDocument, name, publicId = '', systemId = '') {\n super(ownerDocument, '#document-type', DOCUMENT_TYPE_NODE);\n this.name = name;\n this.publicId = publicId;\n this.systemId = systemId;\n }\n\n cloneNode() {\n const {ownerDocument, name, publicId, systemId} = this;\n return new DocumentType(ownerDocument, name, publicId, systemId);\n }\n\n toString() {\n const {name, publicId, systemId} = this;\n const hasPublic = 0 < publicId.length;\n const str = [name];\n if (hasPublic)\n str.push('PUBLIC', `\"${publicId}\"`);\n if (systemId.length) {\n if (!hasPublic)\n str.push('SYSTEM');\n str.push(`\"${systemId}\"`);\n }\n return `<!DOCTYPE ${str.join(' ')}>`;\n }\n\n toJSON() {\n const json = [];\n documentTypeAsJSON(this, json);\n return json;\n }\n}\n","import {ELEMENT_NODE, DOCUMENT_FRAGMENT_NODE} from '../shared/constants.js';\nimport {CUSTOM_ELEMENTS} from '../shared/symbols.js';\nimport {parseFromString} from '../shared/parse-from-string.js';\nimport {ignoreCase} from '../shared/utils.js';\n\n\n/**\n * @param {Node} node\n * @returns {String}\n */\nexport const getInnerHtml = node => node.childNodes.join('');\n\n/**\n * @param {Node} node\n * @param {String} html\n */\nexport const setInnerHtml = (node, html) => {\n const {ownerDocument} = node;\n const {constructor} = ownerDocument;\n const document = new constructor;\n document[CUSTOM_ELEMENTS] = ownerDocument[CUSTOM_ELEMENTS];\n const {childNodes} = parseFromString(document, ignoreCase(node), html);\n\n node.replaceChildren(...childNodes.map(setOwnerDocument, ownerDocument));\n};\n\nfunction setOwnerDocument(node) {\n node.ownerDocument = this;\n switch (node.nodeType) {\n case ELEMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE:\n node.childNodes.forEach(setOwnerDocument, this);\n break;\n }\n return node;\n}\n","export default camel => camel.replace(/(([A-Z0-9])([A-Z0-9][a-z]))|(([a-z0-9]+)([A-Z]))/g, '$2$5-$3$6')\n .toLowerCase();\n","import uhyphen from 'uhyphen';\nimport {setPrototypeOf} from '../shared/object.js';\n\nconst refs = new WeakMap;\n\nconst key = name => `data-${uhyphen(name)}`;\nconst prop = name => name.slice(5).replace(/-([a-z])/g, (_, $1) => $1.toUpperCase());\n\nconst handler = {\n get(dataset, name) {\n if (name in dataset)\n return refs.get(dataset).getAttribute(key(name));\n },\n\n set(dataset, name, value) {\n dataset[name] = value;\n refs.get(dataset).setAttribute(key(name), value);\n return true;\n },\n\n deleteProperty(dataset, name) {\n if (name in dataset)\n refs.get(dataset).removeAttribute(key(name));\n return delete dataset[name];\n }\n};\n\n/**\n * @implements globalThis.DOMStringMap\n */\nexport class DOMStringMap {\n /**\n * @param {Element} ref\n */\n constructor(ref) {\n for (const {name, value} of ref.attributes) {\n if (/^data-/.test(name))\n this[prop(name)] = value;\n }\n refs.set(this, ref);\n return new Proxy(this, handler);\n }\n}\n\nsetPrototypeOf(DOMStringMap.prototype, null);\n","import {OWNER_ELEMENT} from '../shared/symbols.js';\nimport {setAttribute} from '../shared/attributes.js';\n\nimport {Attr} from '../interface/attr.js';\n\nconst {add} = Set.prototype;\nconst addTokens = (self, tokens) => {\n for (const token of tokens) {\n if (token)\n add.call(self, token);\n }\n};\n\nconst update = ({[OWNER_ELEMENT]: ownerElement, value}) => {\n const attribute = ownerElement.getAttributeNode('class');\n if (attribute)\n attribute.value = value;\n else\n setAttribute(\n ownerElement,\n new Attr(ownerElement.ownerDocument, 'class', value)\n );\n};\n\n/**\n * @implements globalThis.DOMTokenList\n */\nexport class DOMTokenList extends Set {\n\n constructor(ownerElement) {\n super();\n this[OWNER_ELEMENT] = ownerElement;\n const attribute = ownerElement.getAttributeNode('class');\n if (attribute)\n addTokens(this, attribute.value.split(/\\s+/));\n }\n\n get length() { return this.size; }\n\n get value() { return [...this].join(' '); }\n\n /**\n * @param {...string} tokens\n */\n add(...tokens) {\n addTokens(this, tokens);\n update(this);\n }\n\n /**\n * @param {string} token\n */\n contains(token) { return this.has(token); }\n\n /**\n * @param {...string} tokens\n */\n remove(...tokens) {\n for (const token of tokens)\n this.delete(token);\n update(this);\n }\n\n /**\n * @param {string} token\n * @param {boolean?} force\n */\n toggle(token, force) {\n if (this.has(token)) {\n if (force)\n return true;\n this.delete(token);\n update(this);\n }\n else if (force || arguments.length === 1) {\n super.add(token);\n update(this);\n return true;\n }\n return false;\n }\n\n /**\n * @param {string} token\n * @param {string} newToken\n */\n replace(token, newToken) {\n if (this.has(token)) {\n this.delete(token);\n super.add(newToken);\n update(this);\n return true;\n }\n return false;\n }\n\n /**\n * @param {string} token\n */\n supports() { return true; }\n}\n","import uhyphen from 'uhyphen';\n\nimport {CHANGED, PRIVATE, VALUE} from '../shared/symbols.js';\n\nconst refs = new WeakMap;\n\nconst getKeys = style => [...style.keys()].filter(key => key !== PRIVATE);\n\nconst updateKeys = style => {\n const attr = refs.get(style).getAttributeNode('style');\n if (!attr || attr[CHANGED] || style.get(PRIVATE) !== attr) {\n style.clear();\n if (attr) {\n style.set(PRIVATE, attr);\n for (const rule of attr[VALUE].split(/\\s*;\\s*/)) {\n let [key, ...rest] = rule.split(':');\n if (rest.length > 0) {\n key = key.trim();\n const value = rest.join(':').trim();\n if (key && value)\n style.set(key, value);\n }\n }\n }\n }\n return attr;\n};\n\nconst handler = {\n get(style, name) {\n if (name in prototype)\n return style[name];\n updateKeys(style);\n if (name === 'length')\n return getKeys(style).length;\n if (/^\\d+$/.test(name))\n return getKeys(style)[name];\n return style.get(uhyphen(name));\n },\n\n set(style, name, value) {\n if (name === 'cssText')\n style[name] = value;\n else {\n let attr = updateKeys(style);\n if (value == null)\n style.delete(uhyphen(name));\n else\n style.set(uhyphen(name), value);\n if (!attr) {\n const element = refs.get(style);\n attr = element.ownerDocument.createAttribute('style');\n element.setAttributeNode(attr);\n style.set(PRIVATE, attr);\n }\n attr[CHANGED] = false;\n attr[VALUE] = style.toString();\n }\n return true;\n }\n};\n\n/**\n * @implements globalThis.CSSStyleDeclaration\n */\nexport class CSSStyleDeclaration extends Map {\n constructor(element) {\n super();\n refs.set(this, element);\n /* c8 ignore start */\n return new Proxy(this, handler);\n /* c8 ignore stop */\n }\n\n get cssText() {\n return this.toString();\n }\n\n set cssText(value) {\n refs.get(this).setAttribute('style', value);\n }\n\n getPropertyValue(name) {\n const self = this[PRIVATE];\n return handler.get(self, name);\n }\n\n setProperty(name, value) {\n const self = this[PRIVATE];\n handler.set(self, name, value);\n }\n\n removeProperty(name) {\n const self = this[PRIVATE];\n handler.set(self, name, null);\n }\n\n [Symbol.iterator]() {\n const keys = getKeys(this[PRIVATE]);\n const {length} = keys;\n let i = 0;\n return {\n next() {\n const done = i === length;\n return {done, value: done ? null : keys[i++]};\n }\n };\n }\n\n get[PRIVATE]() { return this; }\n\n toString() {\n const self = this[PRIVATE];\n updateKeys(self);\n const cssText = [];\n self.forEach(push, cssText);\n return cssText.join(';');\n }\n}\n\nconst {prototype} = CSSStyleDeclaration;\n\nfunction push(value, key) {\n if (key !== PRIVATE)\n this.push(`${key}:${value}`);\n}\n","// https://dom.spec.whatwg.org/#interface-event\n\n/* c8 ignore start */\n\n// Node 15 has Event but 14 and 12 don't\nconst BUBBLING_PHASE = 3;\nconst AT_TARGET = 2;\nconst CAPTURING_PHASE = 1;\nconst NONE = 0;\n\n/**\n * @implements globalThis.Event\n */\nclass GlobalEvent {\n static get BUBBLING_PHASE() { return BUBBLING_PHASE; }\n static get AT_TARGET() { return AT_TARGET; }\n static get CAPTURING_PHASE() { return CAPTURING_PHASE; }\n static get NONE() { return NONE; }\n\n constructor(type, eventInitDict = {}) {\n this.type = type;\n this.bubbles = !!eventInitDict.bubbles;\n this.cancelBubble = false;\n this._stopImmediatePropagationFlag = false;\n this.cancelable = !!eventInitDict.cancelable;\n this.eventPhase = this.NONE;\n this.timeStamp = Date.now();\n this.defaultPrevented = false;\n this.originalTarget = null;\n this.returnValue = null;\n this.srcElement = null;\n this.target = null;\n this._path = [];\n }\n\n get BUBBLING_PHASE() { return BUBBLING_PHASE; }\n get AT_TARGET() { return AT_TARGET; }\n get CAPTURING_PHASE() { return CAPTURING_PHASE; }\n get NONE() { return NONE; }\n\n preventDefault() { this.defaultPrevented = true; }\n\n // simplified implementation, should be https://dom.spec.whatwg.org/#dom-event-composedpath\n composedPath() {\n return this._path;\n }\n\n stopPropagation() {\n this.cancelBubble = true;\n }\n \n stopImmediatePropagation() {\n this.stopPropagation();\n this._stopImmediatePropagationFlag = true;\n }\n }\n\nexport {GlobalEvent as Event};\n\n/* c8 ignore stop */\n","/**\n * @implements globalThis.NamedNodeMap\n */\nexport class NamedNodeMap extends Array {\n constructor(ownerElement) {\n super();\n this.ownerElement = ownerElement;\n }\n\n getNamedItem(name) {\n return this.ownerElement.getAttributeNode(name);\n }\n\n setNamedItem(attr) {\n this.ownerElement.setAttributeNode(attr);\n this.unshift(attr);\n }\n\n removeNamedItem(name) {\n const item = this.getNamedItem(name);\n this.ownerElement.removeAttribute(name);\n this.splice(this.indexOf(item), 1);\n }\n\n item(index) {\n return index < this.length ? this[index] : null;\n }\n\n /* c8 ignore start */\n getNamedItemNS(_, name) {\n return this.getNamedItem(name);\n }\n\n setNamedItemNS(_, attr) {\n return this.setNamedItem(attr);\n }\n\n removeNamedItemNS(_, name) {\n return this.removeNamedItem(name);\n }\n /* c8 ignore stop */\n}\n","import {DOCUMENT_FRAGMENT_NODE} from '../shared/constants.js';\nimport {getInnerHtml, setInnerHtml} from '../mixin/inner-html.js';\nimport {NonElementParentNode} from '../mixin/non-element-parent-node.js';\n\n/**\n * @implements globalThis.ShadowRoot\n */\nexport class ShadowRoot extends NonElementParentNode {\n constructor(host) {\n super(host.ownerDocument, '#shadow-root', DOCUMENT_FRAGMENT_NODE);\n this.host = host;\n }\n\n get innerHTML() {\n return getInnerHtml(this);\n }\n set innerHTML(html) {\n setInnerHtml(this, html);\n }\n}\n","// https://dom.spec.whatwg.org/#interface-element\n\nimport {\n ATTRIBUTE_NODE,\n BLOCK_ELEMENTS,\n COMMENT_NODE,\n ELEMENT_NODE,\n NODE_END,\n TEXT_NODE,\n SVG_NAMESPACE\n} from '../shared/constants.js';\n\nimport {\n setAttribute, removeAttribute,\n numericAttribute, stringAttribute\n} from '../shared/attributes.js';\n\nimport {\n CLASS_LIST, DATASET, STYLE,\n END, NEXT, PREV, START,\n MIME\n} from '../shared/symbols.js';\n\nimport {\n ignoreCase,\n knownAdjacent,\n localCase\n} from '../shared/utils.js';\n\nimport {elementAsJSON} from '../shared/jsdon.js';\nimport {matches, prepareMatch} from '../shared/matches.js';\nimport {shadowRoots} from '../shared/shadow-roots.js';\n\nimport {isConnected, parentElement, previousSibling, nextSibling} from '../shared/node.js';\nimport {previousElementSibling, nextElementSibling} from '../mixin/non-document-type-child-node.js';\n\nimport {before, after, replaceWith, remove} from '../mixin/child-node.js';\nimport {getInnerHtml, setInnerHtml} from '../mixin/inner-html.js';\nimport {ParentNode} from '../mixin/parent-node.js';\n\nimport {DOMStringMap} from '../dom/string-map.js';\nimport {DOMTokenList} from '../dom/token-list.js';\n\nimport {CSSStyleDeclaration} from './css-style-declaration.js';\nimport {Event} from './event.js';\nimport {NamedNodeMap} from './named-node-map.js';\nimport {ShadowRoot} from './shadow-root.js';\nimport {NodeList} from './node-list.js';\nimport {Attr} from './attr.js';\nimport {Text} from './text.js';\n\n// <utils>\nconst attributesHandler = {\n get(target, key) {\n return key in target ? target[key] : target.find(({name}) => name === key);\n }\n};\n\nconst create = (ownerDocument, element, localName) => {\n if ('ownerSVGElement' in element) {\n const svg = ownerDocument.createElementNS(SVG_NAMESPACE, localName);\n svg.ownerSVGElement = element.ownerSVGElement;\n return svg;\n }\n return ownerDocument.createElement(localName);\n};\n\nconst isVoid = ({localName, ownerDocument}) => {\n return ownerDocument[MIME].voidElements.test(localName);\n};\n\n// </utils>\n\n/**\n * @implements globalThis.Element\n */\nexport class Element extends ParentNode {\n constructor(ownerDocument, localName) {\n super(ownerDocument, localName, ELEMENT_NODE);\n this[CLASS_LIST] = null;\n this[DATASET] = null;\n this[STYLE] = null;\n }\n\n // <Mixins>\n get isConnected() { return isConnected(this); }\n get parentElement() { return parentElement(this); }\n get previousSibling() { return previousSibling(this); }\n get nextSibling() { return nextSibling(this); }\n get namespaceURI() {\n return 'http://www.w3.org/1999/xhtml';\n }\n\n get previousElementSibling() { return previousElementSibling(this); }\n get nextElementSibling() { return nextElementSibling(this); }\n\n before(...nodes) { before(this, nodes); }\n after(...nodes) { after(this, nodes); }\n replaceWith(...nodes) { replaceWith(this, nodes); }\n remove() { remove(this[PREV], this, this[END][NEXT]); }\n // </Mixins>\n\n // <specialGetters>\n get id() { return stringAttribute.get(this, 'id'); }\n set id(value) { stringAttribute.set(this, 'id', value); }\n\n get className() { return this.classList.value; }\n set className(value) {\n const {classList} = this;\n classList.clear();\n classList.add(...value.split(/\\s+/));\n }\n\n get nodeName() { return localCase(this); }\n get tagName() { return localCase(this); }\n\n get classList() {\n return this[CLASS_LIST] || (\n this[CLASS_LIST] = new DOMTokenList(this)\n );\n }\n\n get dataset() {\n return this[DATASET] || (\n this[DATASET] = new DOMStringMap(this)\n );\n }\n\n get nonce() { return stringAttribute.get(this, 'nonce'); }\n set nonce(value) { stringAttribute.set(this, 'nonce', value); }\n\n get style() {\n return this[STYLE] || (\n this[STYLE] = new CSSStyleDeclaration(this)\n );\n }\n\n get tabIndex() { return numericAttribute.get(this, 'tabindex') || -1; }\n set tabIndex(value) { numericAttribute.set(this, 'tabindex', value); }\n // </specialGetters>\n\n\n // <contentRelated>\n get innerText() {\n const text = [];\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === TEXT_NODE) {\n text.push(next.textContent.replace(/\\s+/g, ' '));\n } else if(\n text.length && next[NEXT] != end &&\n BLOCK_ELEMENTS.has(next.tagName)\n ) {\n text.push('\\n');\n }\n next = next[NEXT];\n }\n return text.join('');\n }\n\n /**\n * @returns {String}\n */\n get textContent() {\n const text = [];\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === TEXT_NODE)\n text.push(next.textContent);\n next = next[NEXT];\n }\n return text.join('');\n }\n\n set textContent(text) {\n this.replaceChildren();\n if (text)\n this.appendChild(new Text(this.ownerDocument, text));\n }\n\n get innerHTML() {\n return getInnerHtml(this);\n }\n set innerHTML(html) {\n setInnerHtml(this, html);\n }\n\n get outerHTML() { return this.toString(); }\n set outerHTML(html) {\n const template = this.ownerDocument.createElement('');\n template.innerHTML = html;\n this.replaceWith(...template.childNodes);\n }\n // </contentRelated>\n\n // <attributes>\n get attributes() {\n const attributes = new NamedNodeMap(this);\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n attributes.push(next);\n next = next[NEXT];\n }\n return new Proxy(attributes, attributesHandler);\n }\n\n focus() { this.dispatchEvent(new Event('focus')); }\n\n getAttribute(name) {\n if (name === 'class')\n return this.className;\n const attribute = this.getAttributeNode(name);\n return attribute && attribute.value;\n }\n\n getAttributeNode(name) {\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n if (next.name === name)\n return next;\n next = next[NEXT];\n }\n return null;\n }\n\n getAttributeNames() {\n const attributes = new NodeList;\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n attributes.push(next.name);\n next = next[NEXT];\n }\n return attributes;\n }\n\n hasAttribute(name) { return !!this.getAttributeNode(name); }\n hasAttributes() { return this[NEXT].nodeType === ATTRIBUTE_NODE; }\n\n removeAttribute(name) {\n if (name === 'class' && this[CLASS_LIST])\n this[CLASS_LIST].clear();\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n if (next.name === name) {\n removeAttribute(this, next);\n return;\n }\n next = next[NEXT];\n }\n }\n\n removeAttributeNode(attribute) {\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n if (next === attribute) {\n removeAttribute(this, next);\n return;\n }\n next = next[NEXT];\n }\n }\n\n setAttribute(name, value) {\n if (name === 'class')\n this.className = value;\n else {\n const attribute = this.getAttributeNode(name);\n if (attribute)\n attribute.value = value;\n else\n setAttribute(this, new Attr(this.ownerDocument, name, value));\n }\n }\n\n setAttributeNode(attribute) {\n const {name} = attribute;\n const previously = this.getAttributeNode(name);\n if (previously !== attribute) {\n if (previously)\n this.removeAttributeNode(previously);\n const {ownerElement} = attribute;\n if (ownerElement)\n ownerElement.removeAttributeNode(attribute);\n setAttribute(this, attribute);\n }\n return previously;\n }\n\n toggleAttribute(name, force) {\n if (this.hasAttribute(name)) {\n if (!force) {\n this.removeAttribute(name);\n return false;\n }\n return true;\n }\n else if (force || arguments.length === 1) {\n this.setAttribute(name, '');\n return true;\n }\n return false;\n }\n // </attributes>\n\n // <ShadowDOM>\n get shadowRoot() {\n if (shadowRoots.has(this)) {\n const {mode, shadowRoot} = shadowRoots.get(this);\n if (mode === 'open')\n return shadowRoot;\n }\n return null;\n }\n\n attachShadow(init) {\n if (shadowRoots.has(this))\n throw new Error('operation not supported');\n // TODO: shadowRoot should be likely a specialized class that extends DocumentFragment\n // but until DSD is out, I am not sure I should spend time on this.\n const shadowRoot = new ShadowRoot(this);\n shadowRoots.set(this, {\n mode: init.mode,\n shadowRoot\n });\n return shadowRoot;\n }\n // </ShadowDOM>\n\n // <selectors>\n matches(selectors) { return matches(this, selectors); }\n closest(selectors) {\n let parentElement = this;\n const matches = prepareMatch(parentElement, selectors);\n while (parentElement && !matches(parentElement))\n parentElement = parentElement.parentElement;\n return parentElement;\n }\n // </selectors>\n\n // <insertAdjacent>\n insertAdjacentElement(position, element) {\n const {parentElement} = this;\n switch (position) {\n case 'beforebegin':\n if (parentElement) {\n parentElement.insertBefore(element, this);\n break;\n }\n return null;\n case 'afterbegin':\n this.insertBefore(element, this.firstChild);\n break;\n case 'beforeend':\n this.insertBefore(element, null);\n break;\n case 'afterend':\n if (parentElement) {\n parentElement.insertBefore(element, this.nextSibling);\n break;\n }\n return null;\n }\n return element;\n }\n\n insertAdjacentHTML(position, html) {\n const template = this.ownerDocument.createElement('template');\n template.innerHTML = html;\n this.insertAdjacentElement(position, template.content);\n }\n\n insertAdjacentText(position, text) {\n const node = this.ownerDocument.createTextNode(text);\n this.insertAdjacentElement(position, node);\n }\n // </insertAdjacent>\n\n cloneNode(deep = false) {\n const {ownerDocument, localName} = this;\n const addNext = next => {\n next.parentNode = parentNode;\n knownAdjacent($next, next);\n $next = next;\n };\n const clone = create(ownerDocument, this, localName);\n let parentNode = clone, $next = clone;\n let {[NEXT]: next, [END]: prev} = this;\n while (next !== prev && (deep || next.nodeType === ATTRIBUTE_NODE)) {\n switch (next.nodeType) {\n case NODE_END:\n knownAdjacent($next, parentNode[END]);\n $next = parentNode[END];\n parentNode = parentNode.parentNode;\n break;\n case ELEMENT_NODE: {\n const node = create(ownerDocument, next, next.localName);\n addNext(node);\n parentNode = node;\n break;\n }\n case ATTRIBUTE_NODE: {\n const attr = next.cloneNode(deep);\n attr.ownerElement = parentNode;\n addNext(attr);\n break;\n }\n case TEXT_NODE:\n case COMMENT_NODE:\n addNext(next.cloneNode(deep));\n break;\n }\n next = next[NEXT];\n }\n knownAdjacent($next, clone[END]);\n return clone;\n }\n\n // <custom>\n toString() {\n const out = [];\n const {[END]: end} = this;\n let next = {[NEXT]: this};\n let isOpened = false;\n do {\n next = next[NEXT];\n switch (next.nodeType) {\n case ATTRIBUTE_NODE: {\n const attr = ' ' + next;\n switch (attr) {\n case ' id':\n case ' class':\n case ' style':\n break;\n default:\n out.push(attr);\n }\n break;\n }\n case NODE_END: {\n const start = next[START];\n if (isOpened) {\n if ('ownerSVGElement' in start)\n out.push(' />');\n else if (isVoid(start))\n out.push(ignoreCase(start) ? '>' : ' />');\n else\n out.push(`></${start.localName}>`);\n isOpened = false;\n }\n else\n out.push(`</${start.localName}>`);\n break;\n }\n case ELEMENT_NODE:\n if (isOpened)\n out.push('>');\n if (next.toString !== this.toString) {\n out.push(next.toString());\n next = next[END];\n isOpened = false;\n }\n else {\n out.push(`<${next.localName}`);\n isOpened = true;\n }\n break;\n case TEXT_NODE:\n case COMMENT_NODE:\n out.push((isOpened ? '>' : '') + next);\n isOpened = false;\n break;\n }\n } while (next !== end);\n return out.join('');\n }\n\n toJSON() {\n const json = [];\n elementAsJSON(this, json);\n return json;\n }\n // </custom>\n\n\n /* c8 ignore start */\n getAttributeNS(_, name) { return this.getAttribute(name); }\n getElementsByTagNameNS(_, name) { return this.getElementsByTagName(name); }\n hasAttributeNS(_, name) { return this.hasAttribute(name); }\n removeAttributeNS(_, name) { this.removeAttribute(name); }\n setAttributeNS(_, name, value) { this.setAttribute(name, value); }\n setAttributeNodeNS(attr) { return this.setAttributeNode(attr); }\n /* c8 ignore stop */\n}\n","import {Element} from '../interface/element.js';\n\nconst classNames = new WeakMap;\n\nconst handler = {\n get(target, name) {\n return target[name];\n },\n set(target, name, value) {\n target[name] = value;\n return true;\n }\n};\n\n/**\n * @implements globalThis.SVGElement\n */\nexport class SVGElement extends Element {\n constructor(ownerDocument, localName, ownerSVGElement = null) {\n super(ownerDocument, localName);\n this.ownerSVGElement = ownerSVGElement;\n }\n\n get className() {\n if (!classNames.has(this))\n classNames.set(this, new Proxy({baseVal: '', animVal: ''}, handler));\n return classNames.get(this);\n }\n\n /* c8 ignore start */\n set className(value) {\n const {classList} = this;\n classList.clear();\n classList.add(...value.split(/\\s+/));\n }\n /* c8 ignore stop */\n\n get namespaceURI() {\n return 'http://www.w3.org/2000/svg';\n }\n\n getAttribute(name) {\n return name === 'class' ?\n [...this.classList].join(' ') :\n super.getAttribute(name);\n }\n\n setAttribute(name, value) {\n if (name === 'class')\n this.className = value;\n else if (name === 'style') {\n const {className} = this;\n className.baseVal = className.animVal = value;\n }\n super.setAttribute(name, value);\n }\n}\n","import {Attr as _Attr} from '../interface/attr.js';\nimport {CharacterData as _CharacterData} from '../interface/character-data.js';\nimport {Comment as _Comment} from '../interface/comment.js';\nimport {DocumentFragment as _DocumentFragment} from '../interface/document-fragment.js';\nimport {DocumentType as _DocumentType} from '../interface/document-type.js';\nimport {Element as _Element} from '../interface/element.js';\nimport {Node as _Node} from '../interface/node.js';\nimport {ShadowRoot as _ShadowRoot} from '../interface/shadow-root.js';\nimport {Text as _Text} from '../interface/text.js';\nimport {SVGElement as _SVGElement} from '../svg/element.js';\n\nimport {setPrototypeOf} from './object.js';\n\n/* c8 ignore start */\nexport const illegalConstructor = () => {\n throw new TypeError('Illegal constructor');\n};\n\nexport function Attr() { illegalConstructor(); }\nsetPrototypeOf(Attr, _Attr);\nAttr.prototype = _Attr.prototype;\n\nexport function CharacterData() { illegalConstructor(); }\nsetPrototypeOf(CharacterData, _CharacterData);\nCharacterData.prototype = _CharacterData.prototype;\n\nexport function Comment() { illegalConstructor(); }\nsetPrototypeOf(Comment, _Comment);\nComment.prototype = _Comment.prototype;\n\nexport function DocumentFragment() { illegalConstructor(); }\nsetPrototypeOf(DocumentFragment, _DocumentFragment);\nDocumentFragment.prototype = _DocumentFragment.prototype;\n\nexport function DocumentType() { illegalConstructor(); }\nsetPrototypeOf(DocumentType, _DocumentType);\nDocumentType.prototype = _DocumentType.prototype;\n\nexport function Element() { illegalConstructor(); }\nsetPrototypeOf(Element, _Element);\nElement.prototype = _Element.prototype;\n\nexport function Node() { illegalConstructor(); }\nsetPrototypeOf(Node, _Node);\nNode.prototype = _Node.prototype;\n\nexport function ShadowRoot() { illegalConstructor(); }\nsetPrototypeOf(ShadowRoot, _ShadowRoot);\nShadowRoot.prototype = _ShadowRoot.prototype;\n\nexport function Text() { illegalConstructor(); }\nsetPrototypeOf(Text, _Text);\nText.prototype = _Text.prototype;\n\nexport function SVGElement() { illegalConstructor(); }\nsetPrototypeOf(SVGElement, _SVGElement);\nSVGElement.prototype = _SVGElement.prototype;\n/* c8 ignore stop */\n\nexport const Facades = {\n Attr,\n CharacterData,\n Comment,\n DocumentFragment,\n DocumentType,\n Element,\n Node,\n ShadowRoot,\n Text,\n SVGElement\n};\n","import {END, UPGRADE} from '../shared/symbols.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {Event} from '../interface/event.js';\nimport {Element} from '../interface/element.js';\nimport {Classes, customElements} from '../interface/custom-element-registry.js';\n\nconst Level0 = new WeakMap;\nconst level0 = {\n get(element, name) {\n return Level0.has(element) && Level0.get(element)[name] || null;\n },\n set(element, name, value) {\n if (!Level0.has(element))\n Level0.set(element, {});\n const handlers = Level0.get(element);\n const type = name.slice(2);\n if (handlers[name])\n element.removeEventListener(type, handlers[name], false);\n if ((handlers[name] = value))\n element.addEventListener(type, value, false);\n }\n};\n\n/**\n * @implements globalThis.HTMLElement\n */\nexport class HTMLElement extends Element {\n\n static get observedAttributes() { return []; }\n\n constructor(ownerDocument = null, localName = '') {\n super(ownerDocument, localName);\n\n const ownerLess = !ownerDocument;\n let options;\n\n if (ownerLess) {\n const {constructor: Class} = this;\n if (!Classes.has(Class))\n throw new Error('unable to initialize this Custom Element');\n ({ownerDocument, localName, options} = Classes.get(Class));\n }\n\n if (ownerDocument[UPGRADE]) {\n const {element, values} = ownerDocument[UPGRADE];\n ownerDocument[UPGRADE] = null;\n for (const [key, value] of values)\n element[key] = value;\n return element;\n }\n\n if (ownerLess) {\n this.ownerDocument = this[END].ownerDocument = ownerDocument;\n this.localName = localName;\n customElements.set(this, {connected: false});\n if (options.is)\n this.setAttribute('is', options.is);\n }\n }\n\n /* c8 ignore start */\n\n /* TODO: what about these?\n offsetHeight\n offsetLeft\n offsetParent\n offsetTop\n offsetWidth\n */\n\n blur() { this.dispatchEvent(new Event('blur')); }\n click() { this.dispatchEvent(new Event('click')); }\n\n // Boolean getters\n get accessKeyLabel() {\n const {accessKey} = this;\n return accessKey && `Alt+Shift+${accessKey}`;\n }\n get isContentEditable() { return this.hasAttribute('contenteditable'); }\n\n // Boolean Accessors\n get contentEditable() { return booleanAttribute.get(this, 'contenteditable'); }\n set contentEditable(value) { booleanAttribute.set(this, 'contenteditable', value); }\n get draggable() { return booleanAttribute.get(this, 'draggable'); }\n set draggable(value) { booleanAttribute.set(this, 'draggable', value); }\n get hidden() { return booleanAttribute.get(this, 'hidden'); }\n set hidden(value) { booleanAttribute.set(this, 'hidden', value); }\n get spellcheck() { return booleanAttribute.get(this, 'spellcheck'); }\n set spellcheck(value) { booleanAttribute.set(this, 'spellcheck', value); }\n\n // String Accessors\n get accessKey() { return stringAttribute.get(this, 'accesskey'); }\n set accessKey(value) { stringAttribute.set(this, 'accesskey', value); }\n get dir() { return stringAttribute.get(this, 'dir'); }\n set dir(value) { stringAttribute.set(this, 'dir', value); }\n get lang() { return stringAttribute.get(this, 'lang'); }\n set lang(value) { stringAttribute.set(this, 'lang', value); }\n get title() { return stringAttribute.get(this, 'title'); }\n set title(value) { stringAttribute.set(this, 'title', value); }\n\n // DOM Level 0\n get onabort() { return level0.get(this, 'onabort'); }\n set onabort(value) { level0.set(this, 'onabort', value); }\n\n get onblur() { return level0.get(this, 'onblur'); }\n set onblur(value) { level0.set(this, 'onblur', value); }\n\n get oncancel() { return level0.get(this, 'oncancel'); }\n set oncancel(value) { level0.set(this, 'oncancel', value); }\n\n get oncanplay() { return level0.get(this, 'oncanplay'); }\n set oncanplay(value) { level0.set(this, 'oncanplay', value); }\n\n get oncanplaythrough() { return level0.get(this, 'oncanplaythrough'); }\n set oncanplaythrough(value) { level0.set(this, 'oncanplaythrough', value); }\n\n get onchange() { return level0.get(this, 'onchange'); }\n set onchange(value) { level0.set(this, 'onchange', value); }\n\n get onclick() { return level0.get(this, 'onclick'); }\n set onclick(value) { level0.set(this, 'onclick', value); }\n\n get onclose() { return level0.get(this, 'onclose'); }\n set onclose(value) { level0.set(this, 'onclose', value); }\n\n get oncontextmenu() { return level0.get(this, 'oncontextmenu'); }\n set oncontextmenu(value) { level0.set(this, 'oncontextmenu', value); }\n\n get oncuechange() { return level0.get(this, 'oncuechange'); }\n set oncuechange(value) { level0.set(this, 'oncuechange', value); }\n\n get ondblclick() { return level0.get(this, 'ondblclick'); }\n set ondblclick(value) { level0.set(this, 'ondblclick', value); }\n\n get ondrag() { return level0.get(this, 'ondrag'); }\n set ondrag(value) { level0.set(this, 'ondrag', value); }\n\n get ondragend() { return level0.get(this, 'ondragend'); }\n set ondragend(value) { level0.set(this, 'ondragend', value); }\n\n get ondragenter() { return level0.get(this, 'ondragenter'); }\n set ondragenter(value) { level0.set(this, 'ondragenter', value); }\n\n get ondragleave() { return level0.get(this, 'ondragleave'); }\n set ondragleave(value) { level0.set(this, 'ondragleave', value); }\n\n get ondragover() { return level0.get(this, 'ondragover'); }\n set ondragover(value) { level0.set(this, 'ondragover', value); }\n\n get ondragstart() { return level0.get(this, 'ondragstart'); }\n set ondragstart(value) { level0.set(this, 'ondragstart', value); }\n\n get ondrop() { return level0.get(this, 'ondrop'); }\n set ondrop(value) { level0.set(this, 'ondrop', value); }\n\n get ondurationchange() { return level0.get(this, 'ondurationchange'); }\n set ondurationchange(value) { level0.set(this, 'ondurationchange', value); }\n\n get onemptied() { return level0.get(this, 'onemptied'); }\n set onemptied(value) { level0.set(this, 'onemptied', value); }\n\n get onended() { return level0.get(this, 'onended'); }\n set onended(value) { level0.set(this, 'onended', value); }\n\n get onerror() { return level0.get(this, 'onerror'); }\n set onerror(value) { level0.set(this, 'onerror', value); }\n\n get onfocus() { return level0.get(this, 'onfocus'); }\n set onfocus(value) { level0.set(this, 'onfocus', value); }\n\n get oninput() { return level0.get(this, 'oninput'); }\n set oninput(value) { level0.set(this, 'oninput', value); }\n\n get oninvalid() { return level0.get(this, 'oninvalid'); }\n set oninvalid(value) { level0.set(this, 'oninvalid', value); }\n\n get onkeydown() { return level0.get(this, 'onkeydown'); }\n set onkeydown(value) { level0.set(this, 'onkeydown', value); }\n\n get onkeypress() { return level0.get(this, 'onkeypress'); }\n set onkeypress(value) { level0.set(this, 'onkeypress', value); }\n\n get onkeyup() { return level0.get(this, 'onkeyup'); }\n set onkeyup(value) { level0.set(this, 'onkeyup', value); }\n\n get onload() { return level0.get(this, 'onload'); }\n set onload(value) { level0.set(this, 'onload', value); }\n\n get onloadeddata() { return level0.get(this, 'onloadeddata'); }\n set onloadeddata(value) { level0.set(this, 'onloadeddata', value); }\n\n get onloadedmetadata() { return level0.get(this, 'onloadedmetadata'); }\n set onloadedmetadata(value) { level0.set(this, 'onloadedmetadata', value); }\n\n get onloadstart() { return level0.get(this, 'onloadstart'); }\n set onloadstart(value) { level0.set(this, 'onloadstart', value); }\n\n get onmousedown() { return level0.get(this, 'onmousedown'); }\n set onmousedown(value) { level0.set(this, 'onmousedown', value); }\n\n get onmouseenter() { return level0.get(this, 'onmouseenter'); }\n set onmouseenter(value) { level0.set(this, 'onmouseenter', value); }\n\n get onmouseleave() { return level0.get(this, 'onmouseleave'); }\n set onmouseleave(value) { level0.set(this, 'onmouseleave', value); }\n\n get onmousemove() { return level0.get(this, 'onmousemove'); }\n set onmousemove(value) { level0.set(this, 'onmousemove', value); }\n\n get onmouseout() { return level0.get(this, 'onmouseout'); }\n set onmouseout(value) { level0.set(this, 'onmouseout', value); }\n\n get onmouseover() { return level0.get(this, 'onmouseover'); }\n set onmouseover(value) { level0.set(this, 'onmouseover', value); }\n\n get onmouseup() { return level0.get(this, 'onmouseup'); }\n set onmouseup(value) { level0.set(this, 'onmouseup', value); }\n\n get onmousewheel() { return level0.get(this, 'onmousewheel'); }\n set onmousewheel(value) { level0.set(this, 'onmousewheel', value); }\n\n get onpause() { return level0.get(this, 'onpause'); }\n set onpause(value) { level0.set(this, 'onpause', value); }\n\n get onplay() { return level0.get(this, 'onplay'); }\n set onplay(value) { level0.set(this, 'onplay', value); }\n\n get onplaying() { return level0.get(this, 'onplaying'); }\n set onplaying(value) { level0.set(this, 'onplaying', value); }\n\n get onprogress() { return level0.get(this, 'onprogress'); }\n set onprogress(value) { level0.set(this, 'onprogress', value); }\n\n get onratechange() { return level0.get(this, 'onratechange'); }\n set onratechange(value) { level0.set(this, 'onratechange', value); }\n\n get onreset() { return level0.get(this, 'onreset'); }\n set onreset(value) { level0.set(this, 'onreset', value); }\n\n get onresize() { return level0.get(this, 'onresize'); }\n set onresize(value) { level0.set(this, 'onresize', value); }\n\n get onscroll() { return level0.get(this, 'onscroll'); }\n set onscroll(value) { level0.set(this, 'onscroll', value); }\n\n get onseeked() { return level0.get(this, 'onseeked'); }\n set onseeked(value) { level0.set(this, 'onseeked', value); }\n\n get onseeking() { return level0.get(this, 'onseeking'); }\n set onseeking(value) { level0.set(this, 'onseeking', value); }\n\n get onselect() { return level0.get(this, 'onselect'); }\n set onselect(value) { level0.set(this, 'onselect', value); }\n\n get onshow() { return level0.get(this, 'onshow'); }\n set onshow(value) { level0.set(this, 'onshow', value); }\n\n get onstalled() { return level0.get(this, 'onstalled'); }\n set onstalled(value) { level0.set(this, 'onstalled', value); }\n\n get onsubmit() { return level0.get(this, 'onsubmit'); }\n set onsubmit(value) { level0.set(this, 'onsubmit', value); }\n\n get onsuspend() { return level0.get(this, 'onsuspend'); }\n set onsuspend(value) { level0.set(this, 'onsuspend', value); }\n\n get ontimeupdate() { return level0.get(this, 'ontimeupdate'); }\n set ontimeupdate(value) { level0.set(this, 'ontimeupdate', value); }\n\n get ontoggle() { return level0.get(this, 'ontoggle'); }\n set ontoggle(value) { level0.set(this, 'ontoggle', value); }\n\n get onvolumechange() { return level0.get(this, 'onvolumechange'); }\n set onvolumechange(value) { level0.set(this, 'onvolumechange', value); }\n\n get onwaiting() { return level0.get(this, 'onwaiting'); }\n set onwaiting(value) { level0.set(this, 'onwaiting', value); }\n\n get onauxclick() { return level0.get(this, 'onauxclick'); }\n set onauxclick(value) { level0.set(this, 'onauxclick', value); }\n\n get ongotpointercapture() { return level0.get(this, 'ongotpointercapture'); }\n set ongotpointercapture(value) { level0.set(this, 'ongotpointercapture', value); }\n\n get onlostpointercapture() { return level0.get(this, 'onlostpointercapture'); }\n set onlostpointercapture(value) { level0.set(this, 'onlostpointercapture', value); }\n\n get onpointercancel() { return level0.get(this, 'onpointercancel'); }\n set onpointercancel(value) { level0.set(this, 'onpointercancel', value); }\n\n get onpointerdown() { return level0.get(this, 'onpointerdown'); }\n set onpointerdown(value) { level0.set(this, 'onpointerdown', value); }\n\n get onpointerenter() { return level0.get(this, 'onpointerenter'); }\n set onpointerenter(value) { level0.set(this, 'onpointerenter', value); }\n\n get onpointerleave() { return level0.get(this, 'onpointerleave'); }\n set onpointerleave(value) { level0.set(this, 'onpointerleave', value); }\n\n get onpointermove() { return level0.get(this, 'onpointermove'); }\n set onpointermove(value) { level0.set(this, 'onpointermove', value); }\n\n get onpointerout() { return level0.get(this, 'onpointerout'); }\n set onpointerout(value) { level0.set(this, 'onpointerout', value); }\n\n get onpointerover() { return level0.get(this, 'onpointerover'); }\n set onpointerover(value) { level0.set(this, 'onpointerover', value); }\n\n get onpointerup() { return level0.get(this, 'onpointerup'); }\n set onpointerup(value) { level0.set(this, 'onpointerup', value); }\n /* c8 ignore stop */\n\n}\n","import {CONTENT, PRIVATE} from '../shared/symbols.js';\n\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'template';\n\n/**\n * @implements globalThis.HTMLTemplateElement\n */\nclass HTMLTemplateElement extends HTMLElement {\n constructor(ownerDocument) {\n super(ownerDocument, tagName);\n const content = this.ownerDocument.createDocumentFragment();\n (this[CONTENT] = content)[PRIVATE] = this;\n }\n\n get content() {\n if (this.hasChildNodes() && !this[CONTENT].hasChildNodes()) {\n for (const node of this.childNodes)\n this[CONTENT].appendChild(node.cloneNode(true));\n }\n return this[CONTENT];\n }\n}\n\nregisterHTMLClass(tagName, HTMLTemplateElement);\n\nexport {HTMLTemplateElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLHtmlElement\n */\nexport class HTMLHtmlElement extends HTMLElement {\n constructor(ownerDocument, localName = 'html') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\nconst {toString} = HTMLElement.prototype;\n\nexport class TextElement extends HTMLElement {\n\n get innerHTML() { return this.textContent; }\n set innerHTML(html) { this.textContent = html; }\n\n toString() {\n const outerHTML = toString.call(this.cloneNode());\n return outerHTML.replace(/></, `>${this.textContent}<`);\n }\n}\n","import { booleanAttribute, stringAttribute } from '../shared/attributes.js';\nimport { registerHTMLClass } from '../shared/register-html-class.js';\n\nimport { TextElement } from './text-element.js';\n\nconst tagName = 'script';\n\n/**\n * @implements globalThis.HTMLScriptElement\n */\nclass HTMLScriptElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n get type() {\n return stringAttribute.get(this, 'type');\n }\n set type(value) {\n stringAttribute.set(this, 'type', value);\n }\n\n get src() {\n return stringAttribute.get(this, 'src');\n }\n set src(value) {\n stringAttribute.set(this, 'src', value);\n }\n\n get defer() {\n return booleanAttribute.get(this, 'defer');\n }\n\n set defer(value) {\n booleanAttribute.set(this, 'defer', value);\n }\n\n get crossOrigin() {\n return stringAttribute.get(this, 'crossorigin');\n }\n set crossOrigin(value) {\n stringAttribute.set(this, 'crossorigin', value);\n }\n\n get nomodule() {\n return booleanAttribute.get(this, 'nomodule');\n }\n set nomodule(value) {\n booleanAttribute.set(this, 'nomodule', value);\n }\n\n get referrerPolicy() {\n return stringAttribute.get(this, 'referrerpolicy');\n }\n set referrerPolicy(value) {\n stringAttribute.set(this, 'referrerpolicy', value);\n }\n\n get nonce() {\n return stringAttribute.get(this, 'nonce');\n }\n set nonce(value) {\n stringAttribute.set(this, 'nonce', value);\n }\n\n get async() {\n return booleanAttribute.get(this, 'async');\n }\n set async(value) {\n booleanAttribute.set(this, 'async', value);\n }\n\n get text() { return this.textContent; }\n set text(content) { this.textContent = content; }\n}\n\nregisterHTMLClass(tagName, HTMLScriptElement);\n\nexport { HTMLScriptElement };\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFrameElement\n */\nexport class HTMLFrameElement extends HTMLElement {\n constructor(ownerDocument, localName = 'frame') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'iframe';\n\n/**\n * @implements globalThis.HTMLIFrameElement\n */\nclass HTMLIFrameElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get src() { return stringAttribute.get(this, 'src'); }\n set src(value) { stringAttribute.set(this, 'src', value); }\n\n get srcdoc() { return stringAttribute.get(this, \"srcdoc\"); }\n set srcdoc(value) { stringAttribute.set(this, \"srcdoc\", value); }\n\n get name() { return stringAttribute.get(this, \"name\"); }\n set name(value) { stringAttribute.set(this, \"name\", value); }\n\n get allow() { return stringAttribute.get(this, \"allow\"); }\n set allow(value) { stringAttribute.set(this, \"allow\", value); }\n\n get allowFullscreen() { return booleanAttribute.get(this, \"allowfullscreen\"); }\n set allowFullscreen(value) { booleanAttribute.set(this, \"allowfullscreen\", value); }\n \n get referrerPolicy() { return stringAttribute.get(this, \"referrerpolicy\"); }\n set referrerPolicy(value) { stringAttribute.set(this, \"referrerpolicy\", value); }\n \n get loading() { return stringAttribute.get(this, \"loading\"); }\n set loading(value) { stringAttribute.set(this, \"loading\", value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLIFrameElement);\n\nexport {HTMLIFrameElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLObjectElement\n */\nexport class HTMLObjectElement extends HTMLElement {\n constructor(ownerDocument, localName = 'object') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLHeadElement\n */\nexport class HTMLHeadElement extends HTMLElement {\n constructor(ownerDocument, localName = 'head') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLBodyElement\n */\nexport class HTMLBodyElement extends HTMLElement {\n constructor(ownerDocument, localName = 'body') {\n super(ownerDocument, localName);\n }\n}\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#the-stylesheet-interface\n */\nCSSOM.StyleSheet = function StyleSheet() {\n\tthis.parentStyleSheet = null;\n};\n\n\n//.CommonJS\nexports.StyleSheet = CSSOM.StyleSheet;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#the-cssrule-interface\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSRule\n */\nCSSOM.CSSRule = function CSSRule() {\n\tthis.parentRule = null;\n\tthis.parentStyleSheet = null;\n};\n\nCSSOM.CSSRule.UNKNOWN_RULE = 0; // obsolete\nCSSOM.CSSRule.STYLE_RULE = 1;\nCSSOM.CSSRule.CHARSET_RULE = 2; // obsolete\nCSSOM.CSSRule.IMPORT_RULE = 3;\nCSSOM.CSSRule.MEDIA_RULE = 4;\nCSSOM.CSSRule.FONT_FACE_RULE = 5;\nCSSOM.CSSRule.PAGE_RULE = 6;\nCSSOM.CSSRule.KEYFRAMES_RULE = 7;\nCSSOM.CSSRule.KEYFRAME_RULE = 8;\nCSSOM.CSSRule.MARGIN_RULE = 9;\nCSSOM.CSSRule.NAMESPACE_RULE = 10;\nCSSOM.CSSRule.COUNTER_STYLE_RULE = 11;\nCSSOM.CSSRule.SUPPORTS_RULE = 12;\nCSSOM.CSSRule.DOCUMENT_RULE = 13;\nCSSOM.CSSRule.FONT_FEATURE_VALUES_RULE = 14;\nCSSOM.CSSRule.VIEWPORT_RULE = 15;\nCSSOM.CSSRule.REGION_STYLE_RULE = 16;\n\n\nCSSOM.CSSRule.prototype = {\n\tconstructor: CSSOM.CSSRule\n\t//FIXME\n};\n\n\n//.CommonJS\nexports.CSSRule = CSSOM.CSSRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssstylerule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleRule\n */\nCSSOM.CSSStyleRule = function CSSStyleRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.selectorText = \"\";\n\tthis.style = new CSSOM.CSSStyleDeclaration();\n\tthis.style.parentRule = this;\n};\n\nCSSOM.CSSStyleRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSStyleRule.prototype.constructor = CSSOM.CSSStyleRule;\nCSSOM.CSSStyleRule.prototype.type = 1;\n\nObject.defineProperty(CSSOM.CSSStyleRule.prototype, \"cssText\", {\n\tget: function() {\n\t\tvar text;\n\t\tif (this.selectorText) {\n\t\t\ttext = this.selectorText + \" {\" + this.style.cssText + \"}\";\n\t\t} else {\n\t\t\ttext = \"\";\n\t\t}\n\t\treturn text;\n\t},\n\tset: function(cssText) {\n\t\tvar rule = CSSOM.CSSStyleRule.parse(cssText);\n\t\tthis.style = rule.style;\n\t\tthis.selectorText = rule.selectorText;\n\t}\n});\n\n\n/**\n * NON-STANDARD\n * lightweight version of parse.js.\n * @param {string} ruleText\n * @return CSSStyleRule\n */\nCSSOM.CSSStyleRule.parse = function(ruleText) {\n\tvar i = 0;\n\tvar state = \"selector\";\n\tvar index;\n\tvar j = i;\n\tvar buffer = \"\";\n\n\tvar SIGNIFICANT_WHITESPACE = {\n\t\t\"selector\": true,\n\t\t\"value\": true\n\t};\n\n\tvar styleRule = new CSSOM.CSSStyleRule();\n\tvar name, priority=\"\";\n\n\tfor (var character; (character = ruleText.charAt(i)); i++) {\n\n\t\tswitch (character) {\n\n\t\tcase \" \":\n\t\tcase \"\\t\":\n\t\tcase \"\\r\":\n\t\tcase \"\\n\":\n\t\tcase \"\\f\":\n\t\t\tif (SIGNIFICANT_WHITESPACE[state]) {\n\t\t\t\t// Squash 2 or more white-spaces in the row into 1\n\t\t\t\tswitch (ruleText.charAt(i - 1)) {\n\t\t\t\t\tcase \" \":\n\t\t\t\t\tcase \"\\t\":\n\t\t\t\t\tcase \"\\r\":\n\t\t\t\t\tcase \"\\n\":\n\t\t\t\t\tcase \"\\f\":\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbuffer += \" \";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// String\n\t\tcase '\"':\n\t\t\tj = i + 1;\n\t\t\tindex = ruleText.indexOf('\"', j) + 1;\n\t\t\tif (!index) {\n\t\t\t\tthrow '\" is missing';\n\t\t\t}\n\t\t\tbuffer += ruleText.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tbreak;\n\n\t\tcase \"'\":\n\t\t\tj = i + 1;\n\t\t\tindex = ruleText.indexOf(\"'\", j) + 1;\n\t\t\tif (!index) {\n\t\t\t\tthrow \"' is missing\";\n\t\t\t}\n\t\t\tbuffer += ruleText.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tbreak;\n\n\t\t// Comment\n\t\tcase \"/\":\n\t\t\tif (ruleText.charAt(i + 1) === \"*\") {\n\t\t\t\ti += 2;\n\t\t\t\tindex = ruleText.indexOf(\"*/\", i);\n\t\t\t\tif (index === -1) {\n\t\t\t\t\tthrow new SyntaxError(\"Missing */\");\n\t\t\t\t} else {\n\t\t\t\t\ti = index + 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"{\":\n\t\t\tif (state === \"selector\") {\n\t\t\t\tstyleRule.selectorText = buffer.trim();\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"name\";\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \":\":\n\t\t\tif (state === \"name\") {\n\t\t\t\tname = buffer.trim();\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"value\";\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"!\":\n\t\t\tif (state === \"value\" && ruleText.indexOf(\"!important\", i) === i) {\n\t\t\t\tpriority = \"important\";\n\t\t\t\ti += \"important\".length;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \";\":\n\t\t\tif (state === \"value\") {\n\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\tpriority = \"\";\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"name\";\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"}\":\n\t\t\tif (state === \"value\") {\n\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\tpriority = \"\";\n\t\t\t\tbuffer = \"\";\n\t\t\t} else if (state === \"name\") {\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tstate = \"selector\";\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\n\t\t}\n\t}\n\n\treturn styleRule;\n\n};\n\n\n//.CommonJS\nexports.CSSStyleRule = CSSOM.CSSStyleRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tStyleSheet: require(\"./StyleSheet\").StyleSheet,\n\tCSSStyleRule: require(\"./CSSStyleRule\").CSSStyleRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet\n */\nCSSOM.CSSStyleSheet = function CSSStyleSheet() {\n\tCSSOM.StyleSheet.call(this);\n\tthis.cssRules = [];\n};\n\n\nCSSOM.CSSStyleSheet.prototype = new CSSOM.StyleSheet();\nCSSOM.CSSStyleSheet.prototype.constructor = CSSOM.CSSStyleSheet;\n\n\n/**\n * Used to insert a new rule into the style sheet. The new rule now becomes part of the cascade.\n *\n * sheet = new Sheet(\"body {margin: 0}\")\n * sheet.toString()\n * -> \"body{margin:0;}\"\n * sheet.insertRule(\"img {border: none}\", 0)\n * -> 0\n * sheet.toString()\n * -> \"img{border:none;}body{margin:0;}\"\n *\n * @param {string} rule\n * @param {number} index\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet-insertRule\n * @return {number} The index within the style sheet's rule collection of the newly inserted rule.\n */\nCSSOM.CSSStyleSheet.prototype.insertRule = function(rule, index) {\n\tif (index < 0 || index > this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tvar cssRule = CSSOM.parse(rule).cssRules[0];\n\tcssRule.parentStyleSheet = this;\n\tthis.cssRules.splice(index, 0, cssRule);\n\treturn index;\n};\n\n\n/**\n * Used to delete a rule from the style sheet.\n *\n * sheet = new Sheet(\"img{border:none} body{margin:0}\")\n * sheet.toString()\n * -> \"img{border:none;}body{margin:0;}\"\n * sheet.deleteRule(0)\n * sheet.toString()\n * -> \"body{margin:0;}\"\n *\n * @param {number} index within the style sheet's rule list of the rule to remove.\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet-deleteRule\n */\nCSSOM.CSSStyleSheet.prototype.deleteRule = function(index) {\n\tif (index < 0 || index >= this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tthis.cssRules.splice(index, 1);\n};\n\n\n/**\n * NON-STANDARD\n * @return {string} serialize stylesheet\n */\nCSSOM.CSSStyleSheet.prototype.toString = function() {\n\tvar result = \"\";\n\tvar rules = this.cssRules;\n\tfor (var i=0; i<rules.length; i++) {\n\t\tresult += rules[i].cssText + \"\\n\";\n\t}\n\treturn result;\n};\n\n\n//.CommonJS\nexports.CSSStyleSheet = CSSOM.CSSStyleSheet;\nCSSOM.parse = require('./parse').parse; // Cannot be included sooner due to the mutual dependency between parse.js and CSSStyleSheet.js\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#the-medialist-interface\n */\nCSSOM.MediaList = function MediaList(){\n\tthis.length = 0;\n};\n\nCSSOM.MediaList.prototype = {\n\n\tconstructor: CSSOM.MediaList,\n\n\t/**\n\t * @return {string}\n\t */\n\tget mediaText() {\n\t\treturn Array.prototype.join.call(this, \", \");\n\t},\n\n\t/**\n\t * @param {string} value\n\t */\n\tset mediaText(value) {\n\t\tvar values = value.split(\",\");\n\t\tvar length = this.length = values.length;\n\t\tfor (var i=0; i<length; i++) {\n\t\t\tthis[i] = values[i].trim();\n\t\t}\n\t},\n\n\t/**\n\t * @param {string} medium\n\t */\n\tappendMedium: function(medium) {\n\t\tif (Array.prototype.indexOf.call(this, medium) === -1) {\n\t\t\tthis[this.length] = medium;\n\t\t\tthis.length++;\n\t\t}\n\t},\n\n\t/**\n\t * @param {string} medium\n\t */\n\tdeleteMedium: function(medium) {\n\t\tvar index = Array.prototype.indexOf.call(this, medium);\n\t\tif (index !== -1) {\n\t\t\tArray.prototype.splice.call(this, index, 1);\n\t\t}\n\t}\n\n};\n\n\n//.CommonJS\nexports.MediaList = CSSOM.MediaList;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleSheet: require(\"./CSSStyleSheet\").CSSStyleSheet,\n\tMediaList: require(\"./MediaList\").MediaList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssimportrule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSImportRule\n */\nCSSOM.CSSImportRule = function CSSImportRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.href = \"\";\n\tthis.media = new CSSOM.MediaList();\n\tthis.styleSheet = new CSSOM.CSSStyleSheet();\n};\n\nCSSOM.CSSImportRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSImportRule.prototype.constructor = CSSOM.CSSImportRule;\nCSSOM.CSSImportRule.prototype.type = 3;\n\nObject.defineProperty(CSSOM.CSSImportRule.prototype, \"cssText\", {\n get: function() {\n var mediaText = this.media.mediaText;\n return \"@import url(\" + this.href + \")\" + (mediaText ? \" \" + mediaText : \"\") + \";\";\n },\n set: function(cssText) {\n var i = 0;\n\n /**\n * @import url(partial.css) screen, handheld;\n * || |\n * after-import media\n * |\n * url\n */\n var state = '';\n\n var buffer = '';\n var index;\n for (var character; (character = cssText.charAt(i)); i++) {\n\n switch (character) {\n case ' ':\n case '\\t':\n case '\\r':\n case '\\n':\n case '\\f':\n if (state === 'after-import') {\n state = 'url';\n } else {\n buffer += character;\n }\n break;\n\n case '@':\n if (!state && cssText.indexOf('@import', i) === i) {\n state = 'after-import';\n i += 'import'.length;\n buffer = '';\n }\n break;\n\n case 'u':\n if (state === 'url' && cssText.indexOf('url(', i) === i) {\n index = cssText.indexOf(')', i + 1);\n if (index === -1) {\n throw i + ': \")\" not found';\n }\n i += 'url('.length;\n var url = cssText.slice(i, index);\n if (url[0] === url[url.length - 1]) {\n if (url[0] === '\"' || url[0] === \"'\") {\n url = url.slice(1, -1);\n }\n }\n this.href = url;\n i = index;\n state = 'media';\n }\n break;\n\n case '\"':\n if (state === 'url') {\n index = cssText.indexOf('\"', i + 1);\n if (!index) {\n throw i + \": '\\\"' not found\";\n }\n this.href = cssText.slice(i + 1, index);\n i = index;\n state = 'media';\n }\n break;\n\n case \"'\":\n if (state === 'url') {\n index = cssText.indexOf(\"'\", i + 1);\n if (!index) {\n throw i + ': \"\\'\" not found';\n }\n this.href = cssText.slice(i + 1, index);\n i = index;\n state = 'media';\n }\n break;\n\n case ';':\n if (state === 'media') {\n if (buffer) {\n this.media.mediaText = buffer.trim();\n }\n }\n break;\n\n default:\n if (state === 'media') {\n buffer += character;\n }\n break;\n }\n }\n }\n});\n\n\n//.CommonJS\nexports.CSSImportRule = CSSOM.CSSImportRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/cssom/#the-cssgroupingrule-interface\n */\nCSSOM.CSSGroupingRule = function CSSGroupingRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.cssRules = [];\n};\n\nCSSOM.CSSGroupingRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSGroupingRule.prototype.constructor = CSSOM.CSSGroupingRule;\n\n\n/**\n * Used to insert a new CSS rule to a list of CSS rules.\n *\n * @example\n * cssGroupingRule.cssText\n * -> \"body{margin:0;}\"\n * cssGroupingRule.insertRule(\"img{border:none;}\", 1)\n * -> 1\n * cssGroupingRule.cssText\n * -> \"body{margin:0;}img{border:none;}\"\n *\n * @param {string} rule\n * @param {number} [index]\n * @see https://www.w3.org/TR/cssom-1/#dom-cssgroupingrule-insertrule\n * @return {number} The index within the grouping rule's collection of the newly inserted rule.\n */\n CSSOM.CSSGroupingRule.prototype.insertRule = function insertRule(rule, index) {\n\tif (index < 0 || index > this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tvar cssRule = CSSOM.parse(rule).cssRules[0];\n\tcssRule.parentRule = this;\n\tthis.cssRules.splice(index, 0, cssRule);\n\treturn index;\n};\n\n/**\n * Used to delete a rule from the grouping rule.\n *\n * cssGroupingRule.cssText\n * -> \"img{border:none;}body{margin:0;}\"\n * cssGroupingRule.deleteRule(0)\n * cssGroupingRule.cssText\n * -> \"body{margin:0;}\"\n *\n * @param {number} index within the grouping rule's rule list of the rule to remove.\n * @see https://www.w3.org/TR/cssom-1/#dom-cssgroupingrule-deleterule\n */\n CSSOM.CSSGroupingRule.prototype.deleteRule = function deleteRule(index) {\n\tif (index < 0 || index >= this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tthis.cssRules.splice(index, 1)[0].parentRule = null;\n};\n\n//.CommonJS\nexports.CSSGroupingRule = CSSOM.CSSGroupingRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n CSSRule: require(\"./CSSRule\").CSSRule,\n CSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://www.w3.org/TR/css-conditional-3/#the-cssconditionrule-interface\n */\nCSSOM.CSSConditionRule = function CSSConditionRule() {\n CSSOM.CSSGroupingRule.call(this);\n this.cssRules = [];\n};\n\nCSSOM.CSSConditionRule.prototype = new CSSOM.CSSGroupingRule();\nCSSOM.CSSConditionRule.prototype.constructor = CSSOM.CSSConditionRule;\nCSSOM.CSSConditionRule.prototype.conditionText = ''\nCSSOM.CSSConditionRule.prototype.cssText = ''\n\n//.CommonJS\nexports.CSSConditionRule = CSSOM.CSSConditionRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n\tCSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule,\n\tMediaList: require(\"./MediaList\").MediaList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssmediarule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSMediaRule\n */\nCSSOM.CSSMediaRule = function CSSMediaRule() {\n\tCSSOM.CSSConditionRule.call(this);\n\tthis.media = new CSSOM.MediaList();\n};\n\nCSSOM.CSSMediaRule.prototype = new CSSOM.CSSConditionRule();\nCSSOM.CSSMediaRule.prototype.constructor = CSSOM.CSSMediaRule;\nCSSOM.CSSMediaRule.prototype.type = 4;\n\n// https://opensource.apple.com/source/WebCore/WebCore-7611.1.21.161.3/css/CSSMediaRule.cpp\nObject.defineProperties(CSSOM.CSSMediaRule.prototype, {\n \"conditionText\": {\n get: function() {\n return this.media.mediaText;\n },\n set: function(value) {\n this.media.mediaText = value;\n },\n configurable: true,\n enumerable: true\n },\n \"cssText\": {\n get: function() {\n var cssTexts = [];\n for (var i=0, length=this.cssRules.length; i < length; i++) {\n cssTexts.push(this.cssRules[i].cssText);\n }\n return \"@media \" + this.media.mediaText + \" {\" + cssTexts.join(\"\") + \"}\";\n },\n configurable: true,\n enumerable: true\n }\n});\n\n\n//.CommonJS\nexports.CSSMediaRule = CSSOM.CSSMediaRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n CSSRule: require(\"./CSSRule\").CSSRule,\n CSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n CSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/css-conditional-3/#the-csssupportsrule-interface\n */\nCSSOM.CSSSupportsRule = function CSSSupportsRule() {\n CSSOM.CSSConditionRule.call(this);\n};\n\nCSSOM.CSSSupportsRule.prototype = new CSSOM.CSSConditionRule();\nCSSOM.CSSSupportsRule.prototype.constructor = CSSOM.CSSSupportsRule;\nCSSOM.CSSSupportsRule.prototype.type = 12;\n\nObject.defineProperty(CSSOM.CSSSupportsRule.prototype, \"cssText\", {\n get: function() {\n var cssTexts = [];\n\n for (var i = 0, length = this.cssRules.length; i < length; i++) {\n cssTexts.push(this.cssRules[i].cssText);\n }\n\n return \"@supports \" + this.conditionText + \" {\" + cssTexts.join(\"\") + \"}\";\n }\n});\n\n//.CommonJS\nexports.CSSSupportsRule = CSSOM.CSSSupportsRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#css-font-face-rule\n */\nCSSOM.CSSFontFaceRule = function CSSFontFaceRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.style = new CSSOM.CSSStyleDeclaration();\n\tthis.style.parentRule = this;\n};\n\nCSSOM.CSSFontFaceRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSFontFaceRule.prototype.constructor = CSSOM.CSSFontFaceRule;\nCSSOM.CSSFontFaceRule.prototype.type = 5;\n//FIXME\n//CSSOM.CSSFontFaceRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSFontFaceRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSFontFaceRule.cpp\nObject.defineProperty(CSSOM.CSSFontFaceRule.prototype, \"cssText\", {\n get: function() {\n return \"@font-face {\" + this.style.cssText + \"}\";\n }\n});\n\n\n//.CommonJS\nexports.CSSFontFaceRule = CSSOM.CSSFontFaceRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/shadow-dom/#host-at-rule\n */\nCSSOM.CSSHostRule = function CSSHostRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.cssRules = [];\n};\n\nCSSOM.CSSHostRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSHostRule.prototype.constructor = CSSOM.CSSHostRule;\nCSSOM.CSSHostRule.prototype.type = 1001;\n//FIXME\n//CSSOM.CSSHostRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSHostRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\nObject.defineProperty(CSSOM.CSSHostRule.prototype, \"cssText\", {\n\tget: function() {\n\t\tvar cssTexts = [];\n\t\tfor (var i=0, length=this.cssRules.length; i < length; i++) {\n\t\t\tcssTexts.push(this.cssRules[i].cssText);\n\t\t}\n\t\treturn \"@host {\" + cssTexts.join(\"\") + \"}\";\n\t}\n});\n\n\n//.CommonJS\nexports.CSSHostRule = CSSOM.CSSHostRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleDeclaration: require('./CSSStyleDeclaration').CSSStyleDeclaration\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/css3-animations/#DOM-CSSKeyframeRule\n */\nCSSOM.CSSKeyframeRule = function CSSKeyframeRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.keyText = '';\n\tthis.style = new CSSOM.CSSStyleDeclaration();\n\tthis.style.parentRule = this;\n};\n\nCSSOM.CSSKeyframeRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSKeyframeRule.prototype.constructor = CSSOM.CSSKeyframeRule;\nCSSOM.CSSKeyframeRule.prototype.type = 8;\n//FIXME\n//CSSOM.CSSKeyframeRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSKeyframeRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSKeyframeRule.cpp\nObject.defineProperty(CSSOM.CSSKeyframeRule.prototype, \"cssText\", {\n get: function() {\n return this.keyText + \" {\" + this.style.cssText + \"} \";\n }\n});\n\n\n//.CommonJS\nexports.CSSKeyframeRule = CSSOM.CSSKeyframeRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/css3-animations/#DOM-CSSKeyframesRule\n */\nCSSOM.CSSKeyframesRule = function CSSKeyframesRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.name = '';\n\tthis.cssRules = [];\n};\n\nCSSOM.CSSKeyframesRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSKeyframesRule.prototype.constructor = CSSOM.CSSKeyframesRule;\nCSSOM.CSSKeyframesRule.prototype.type = 7;\n//FIXME\n//CSSOM.CSSKeyframesRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSKeyframesRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSKeyframesRule.cpp\nObject.defineProperty(CSSOM.CSSKeyframesRule.prototype, \"cssText\", {\n get: function() {\n var cssTexts = [];\n for (var i=0, length=this.cssRules.length; i < length; i++) {\n cssTexts.push(\" \" + this.cssRules[i].cssText);\n }\n return \"@\" + (this._vendorPrefix || '') + \"keyframes \" + this.name + \" { \\n\" + cssTexts.join(\"\\n\") + \"\\n}\";\n }\n});\n\n\n//.CommonJS\nexports.CSSKeyframesRule = CSSOM.CSSKeyframesRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSValue\n *\n * TODO: add if needed\n */\nCSSOM.CSSValue = function CSSValue() {\n};\n\nCSSOM.CSSValue.prototype = {\n\tconstructor: CSSOM.CSSValue,\n\n\t// @see: http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSValue\n\tset cssText(text) {\n\t\tvar name = this._getConstructorName();\n\n\t\tthrow new Error('DOMException: property \"cssText\" of \"' + name + '\" is readonly and can not be replaced with \"' + text + '\"!');\n\t},\n\n\tget cssText() {\n\t\tvar name = this._getConstructorName();\n\n\t\tthrow new Error('getter \"cssText\" of \"' + name + '\" is not implemented!');\n\t},\n\n\t_getConstructorName: function() {\n\t\tvar s = this.constructor.toString(),\n\t\t\t\tc = s.match(/function\\s([^\\(]+)/),\n\t\t\t\tname = c[1];\n\n\t\treturn name;\n\t}\n};\n\n\n//.CommonJS\nexports.CSSValue = CSSOM.CSSValue;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSValue: require('./CSSValue').CSSValue\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://msdn.microsoft.com/en-us/library/ms537634(v=vs.85).aspx\n *\n */\nCSSOM.CSSValueExpression = function CSSValueExpression(token, idx) {\n\tthis._token = token;\n\tthis._idx = idx;\n};\n\nCSSOM.CSSValueExpression.prototype = new CSSOM.CSSValue();\nCSSOM.CSSValueExpression.prototype.constructor = CSSOM.CSSValueExpression;\n\n/**\n * parse css expression() value\n *\n * @return {Object}\n * - error:\n * or\n * - idx:\n * - expression:\n *\n * Example:\n *\n * .selector {\n *\t\tzoom: expression(documentElement.clientWidth > 1000 ? '1000px' : 'auto');\n * }\n */\nCSSOM.CSSValueExpression.prototype.parse = function() {\n\tvar token = this._token,\n\t\t\tidx = this._idx;\n\n\tvar character = '',\n\t\t\texpression = '',\n\t\t\terror = '',\n\t\t\tinfo,\n\t\t\tparen = [];\n\n\n\tfor (; ; ++idx) {\n\t\tcharacter = token.charAt(idx);\n\n\t\t// end of token\n\t\tif (character === '') {\n\t\t\terror = 'css expression error: unfinished expression!';\n\t\t\tbreak;\n\t\t}\n\n\t\tswitch(character) {\n\t\t\tcase '(':\n\t\t\t\tparen.push(character);\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\n\t\t\tcase ')':\n\t\t\t\tparen.pop(character);\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\n\t\t\tcase '/':\n\t\t\t\tif ((info = this._parseJSComment(token, idx))) { // comment?\n\t\t\t\t\tif (info.error) {\n\t\t\t\t\t\terror = 'css expression error: unfinished comment in expression!';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tidx = info.idx;\n\t\t\t\t\t\t// ignore the comment\n\t\t\t\t\t}\n\t\t\t\t} else if ((info = this._parseJSRexExp(token, idx))) { // regexp\n\t\t\t\t\tidx = info.idx;\n\t\t\t\t\texpression += info.text;\n\t\t\t\t} else { // other\n\t\t\t\t\texpression += character;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"'\":\n\t\t\tcase '\"':\n\t\t\t\tinfo = this._parseJSString(token, idx, character);\n\t\t\t\tif (info) { // string\n\t\t\t\t\tidx = info.idx;\n\t\t\t\t\texpression += info.text;\n\t\t\t\t} else {\n\t\t\t\t\texpression += character;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (error) {\n\t\t\tbreak;\n\t\t}\n\n\t\t// end of expression\n\t\tif (paren.length === 0) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tvar ret;\n\tif (error) {\n\t\tret = {\n\t\t\terror: error\n\t\t};\n\t} else {\n\t\tret = {\n\t\t\tidx: idx,\n\t\t\texpression: expression\n\t\t};\n\t}\n\n\treturn ret;\n};\n\n\n/**\n *\n * @return {Object|false}\n * - idx:\n * - text:\n * or\n * - error:\n * or\n * false\n *\n */\nCSSOM.CSSValueExpression.prototype._parseJSComment = function(token, idx) {\n\tvar nextChar = token.charAt(idx + 1),\n\t\t\ttext;\n\n\tif (nextChar === '/' || nextChar === '*') {\n\t\tvar startIdx = idx,\n\t\t\t\tendIdx,\n\t\t\t\tcommentEndChar;\n\n\t\tif (nextChar === '/') { // line comment\n\t\t\tcommentEndChar = '\\n';\n\t\t} else if (nextChar === '*') { // block comment\n\t\t\tcommentEndChar = '*/';\n\t\t}\n\n\t\tendIdx = token.indexOf(commentEndChar, startIdx + 1 + 1);\n\t\tif (endIdx !== -1) {\n\t\t\tendIdx = endIdx + commentEndChar.length - 1;\n\t\t\ttext = token.substring(idx, endIdx + 1);\n\t\t\treturn {\n\t\t\t\tidx: endIdx,\n\t\t\t\ttext: text\n\t\t\t};\n\t\t} else {\n\t\t\tvar error = 'css expression error: unfinished comment in expression!';\n\t\t\treturn {\n\t\t\t\terror: error\n\t\t\t};\n\t\t}\n\t} else {\n\t\treturn false;\n\t}\n};\n\n\n/**\n *\n * @return {Object|false}\n *\t\t\t\t\t- idx:\n *\t\t\t\t\t- text:\n *\t\t\t\t\tor \n *\t\t\t\t\tfalse\n *\n */\nCSSOM.CSSValueExpression.prototype._parseJSString = function(token, idx, sep) {\n\tvar endIdx = this._findMatchedIdx(token, idx, sep),\n\t\t\ttext;\n\n\tif (endIdx === -1) {\n\t\treturn false;\n\t} else {\n\t\ttext = token.substring(idx, endIdx + sep.length);\n\n\t\treturn {\n\t\t\tidx: endIdx,\n\t\t\ttext: text\n\t\t};\n\t}\n};\n\n\n/**\n * parse regexp in css expression\n *\n * @return {Object|false}\n *\t\t\t\t- idx:\n *\t\t\t\t- regExp:\n *\t\t\t\tor \n *\t\t\t\tfalse\n */\n\n/*\n\nall legal RegExp\n \n/a/\n(/a/)\n[/a/]\n[12, /a/]\n\n!/a/\n\n+/a/\n-/a/\n* /a/\n/ /a/\n%/a/\n\n===/a/\n!==/a/\n==/a/\n!=/a/\n>/a/\n>=/a/\n</a/\n<=/a/\n\n&/a/\n|/a/\n^/a/\n~/a/\n<</a/\n>>/a/\n>>>/a/\n\n&&/a/\n||/a/\n?/a/\n=/a/\n,/a/\n\n\t\tdelete /a/\n\t\t\t\tin /a/\ninstanceof /a/\n\t\t\t\tnew /a/\n\t\ttypeof /a/\n\t\t\tvoid /a/\n\n*/\nCSSOM.CSSValueExpression.prototype._parseJSRexExp = function(token, idx) {\n\tvar before = token.substring(0, idx).replace(/\\s+$/, \"\"),\n\t\t\tlegalRegx = [\n\t\t\t\t/^$/,\n\t\t\t\t/\\($/,\n\t\t\t\t/\\[$/,\n\t\t\t\t/\\!$/,\n\t\t\t\t/\\+$/,\n\t\t\t\t/\\-$/,\n\t\t\t\t/\\*$/,\n\t\t\t\t/\\/\\s+/,\n\t\t\t\t/\\%$/,\n\t\t\t\t/\\=$/,\n\t\t\t\t/\\>$/,\n\t\t\t\t/<$/,\n\t\t\t\t/\\&$/,\n\t\t\t\t/\\|$/,\n\t\t\t\t/\\^$/,\n\t\t\t\t/\\~$/,\n\t\t\t\t/\\?$/,\n\t\t\t\t/\\,$/,\n\t\t\t\t/delete$/,\n\t\t\t\t/in$/,\n\t\t\t\t/instanceof$/,\n\t\t\t\t/new$/,\n\t\t\t\t/typeof$/,\n\t\t\t\t/void$/\n\t\t\t];\n\n\tvar isLegal = legalRegx.some(function(reg) {\n\t\treturn reg.test(before);\n\t});\n\n\tif (!isLegal) {\n\t\treturn false;\n\t} else {\n\t\tvar sep = '/';\n\n\t\t// same logic as string\n\t\treturn this._parseJSString(token, idx, sep);\n\t}\n};\n\n\n/**\n *\n * find next sep(same line) index in `token`\n *\n * @return {Number}\n *\n */\nCSSOM.CSSValueExpression.prototype._findMatchedIdx = function(token, idx, sep) {\n\tvar startIdx = idx,\n\t\t\tendIdx;\n\n\tvar NOT_FOUND = -1;\n\n\twhile(true) {\n\t\tendIdx = token.indexOf(sep, startIdx + 1);\n\n\t\tif (endIdx === -1) { // not found\n\t\t\tendIdx = NOT_FOUND;\n\t\t\tbreak;\n\t\t} else {\n\t\t\tvar text = token.substring(idx + 1, endIdx),\n\t\t\t\t\tmatched = text.match(/\\\\+$/);\n\t\t\tif (!matched || matched[0] % 2 === 0) { // not escaped\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tstartIdx = endIdx;\n\t\t\t}\n\t\t}\n\t}\n\n\t// boundary must be in the same line(js sting or regexp)\n\tvar nextNewLineIdx = token.indexOf('\\n', idx + 1);\n\tif (nextNewLineIdx < endIdx) {\n\t\tendIdx = NOT_FOUND;\n\t}\n\n\n\treturn endIdx;\n};\n\n\n\n\n//.CommonJS\nexports.CSSValueExpression = CSSOM.CSSValueExpression;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://developer.mozilla.org/en/CSS/@-moz-document\n */\nCSSOM.MatcherList = function MatcherList(){\n this.length = 0;\n};\n\nCSSOM.MatcherList.prototype = {\n\n constructor: CSSOM.MatcherList,\n\n /**\n * @return {string}\n */\n get matcherText() {\n return Array.prototype.join.call(this, \", \");\n },\n\n /**\n * @param {string} value\n */\n set matcherText(value) {\n // just a temporary solution, actually it may be wrong by just split the value with ',', because a url can include ','.\n var values = value.split(\",\");\n var length = this.length = values.length;\n for (var i=0; i<length; i++) {\n this[i] = values[i].trim();\n }\n },\n\n /**\n * @param {string} matcher\n */\n appendMatcher: function(matcher) {\n if (Array.prototype.indexOf.call(this, matcher) === -1) {\n this[this.length] = matcher;\n this.length++;\n }\n },\n\n /**\n * @param {string} matcher\n */\n deleteMatcher: function(matcher) {\n var index = Array.prototype.indexOf.call(this, matcher);\n if (index !== -1) {\n Array.prototype.splice.call(this, index, 1);\n }\n }\n\n};\n\n\n//.CommonJS\nexports.MatcherList = CSSOM.MatcherList;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n CSSRule: require(\"./CSSRule\").CSSRule,\n MatcherList: require(\"./MatcherList\").MatcherList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://developer.mozilla.org/en/CSS/@-moz-document\n */\nCSSOM.CSSDocumentRule = function CSSDocumentRule() {\n CSSOM.CSSRule.call(this);\n this.matcher = new CSSOM.MatcherList();\n this.cssRules = [];\n};\n\nCSSOM.CSSDocumentRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSDocumentRule.prototype.constructor = CSSOM.CSSDocumentRule;\nCSSOM.CSSDocumentRule.prototype.type = 10;\n//FIXME\n//CSSOM.CSSDocumentRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSDocumentRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\nObject.defineProperty(CSSOM.CSSDocumentRule.prototype, \"cssText\", {\n get: function() {\n var cssTexts = [];\n for (var i=0, length=this.cssRules.length; i < length; i++) {\n cssTexts.push(this.cssRules[i].cssText);\n }\n return \"@-moz-document \" + this.matcher.matcherText + \" {\" + cssTexts.join(\"\") + \"}\";\n }\n});\n\n\n//.CommonJS\nexports.CSSDocumentRule = CSSOM.CSSDocumentRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @param {string} token\n */\nCSSOM.parse = function parse(token) {\n\n\tvar i = 0;\n\n\t/**\n\t\t\"before-selector\" or\n\t\t\"selector\" or\n\t\t\"atRule\" or\n\t\t\"atBlock\" or\n\t\t\"conditionBlock\" or\n\t\t\"before-name\" or\n\t\t\"name\" or\n\t\t\"before-value\" or\n\t\t\"value\"\n\t*/\n\tvar state = \"before-selector\";\n\n\tvar index;\n\tvar buffer = \"\";\n\tvar valueParenthesisDepth = 0;\n\n\tvar SIGNIFICANT_WHITESPACE = {\n\t\t\"selector\": true,\n\t\t\"value\": true,\n\t\t\"value-parenthesis\": true,\n\t\t\"atRule\": true,\n\t\t\"importRule-begin\": true,\n\t\t\"importRule\": true,\n\t\t\"atBlock\": true,\n\t\t\"conditionBlock\": true,\n\t\t'documentRule-begin': true\n\t};\n\n\tvar styleSheet = new CSSOM.CSSStyleSheet();\n\n\t// @type CSSStyleSheet|CSSMediaRule|CSSSupportsRule|CSSFontFaceRule|CSSKeyframesRule|CSSDocumentRule\n\tvar currentScope = styleSheet;\n\n\t// @type CSSMediaRule|CSSSupportsRule|CSSKeyframesRule|CSSDocumentRule\n\tvar parentRule;\n\n\tvar ancestorRules = [];\n\tvar hasAncestors = false;\n\tvar prevScope;\n\n\tvar name, priority=\"\", styleRule, mediaRule, supportsRule, importRule, fontFaceRule, keyframesRule, documentRule, hostRule;\n\n\tvar atKeyframesRegExp = /@(-(?:\\w+-)+)?keyframes/g;\n\n\tvar parseError = function(message) {\n\t\tvar lines = token.substring(0, i).split('\\n');\n\t\tvar lineCount = lines.length;\n\t\tvar charCount = lines.pop().length + 1;\n\t\tvar error = new Error(message + ' (line ' + lineCount + ', char ' + charCount + ')');\n\t\terror.line = lineCount;\n\t\t/* jshint sub : true */\n\t\terror['char'] = charCount;\n\t\terror.styleSheet = styleSheet;\n\t\tthrow error;\n\t};\n\n\tfor (var character; (character = token.charAt(i)); i++) {\n\n\t\tswitch (character) {\n\n\t\tcase \" \":\n\t\tcase \"\\t\":\n\t\tcase \"\\r\":\n\t\tcase \"\\n\":\n\t\tcase \"\\f\":\n\t\t\tif (SIGNIFICANT_WHITESPACE[state]) {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// String\n\t\tcase '\"':\n\t\t\tindex = i + 1;\n\t\t\tdo {\n\t\t\t\tindex = token.indexOf('\"', index) + 1;\n\t\t\t\tif (!index) {\n\t\t\t\t\tparseError('Unmatched \"');\n\t\t\t\t}\n\t\t\t} while (token[index - 2] === '\\\\');\n\t\t\tbuffer += token.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tswitch (state) {\n\t\t\t\tcase 'before-value':\n\t\t\t\t\tstate = 'value';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'importRule-begin':\n\t\t\t\t\tstate = 'importRule';\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"'\":\n\t\t\tindex = i + 1;\n\t\t\tdo {\n\t\t\t\tindex = token.indexOf(\"'\", index) + 1;\n\t\t\t\tif (!index) {\n\t\t\t\t\tparseError(\"Unmatched '\");\n\t\t\t\t}\n\t\t\t} while (token[index - 2] === '\\\\');\n\t\t\tbuffer += token.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tswitch (state) {\n\t\t\t\tcase 'before-value':\n\t\t\t\t\tstate = 'value';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'importRule-begin':\n\t\t\t\t\tstate = 'importRule';\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// Comment\n\t\tcase \"/\":\n\t\t\tif (token.charAt(i + 1) === \"*\") {\n\t\t\t\ti += 2;\n\t\t\t\tindex = token.indexOf(\"*/\", i);\n\t\t\t\tif (index === -1) {\n\t\t\t\t\tparseError(\"Missing */\");\n\t\t\t\t} else {\n\t\t\t\t\ti = index + 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tif (state === \"importRule-begin\") {\n\t\t\t\tbuffer += \" \";\n\t\t\t\tstate = \"importRule\";\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// At-rule\n\t\tcase \"@\":\n\t\t\tif (token.indexOf(\"@-moz-document\", i) === i) {\n\t\t\t\tstate = \"documentRule-begin\";\n\t\t\t\tdocumentRule = new CSSOM.CSSDocumentRule();\n\t\t\t\tdocumentRule.__starts = i;\n\t\t\t\ti += \"-moz-document\".length;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@media\", i) === i) {\n\t\t\t\tstate = \"atBlock\";\n\t\t\t\tmediaRule = new CSSOM.CSSMediaRule();\n\t\t\t\tmediaRule.__starts = i;\n\t\t\t\ti += \"media\".length;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@supports\", i) === i) {\n\t\t\t\tstate = \"conditionBlock\";\n\t\t\t\tsupportsRule = new CSSOM.CSSSupportsRule();\n\t\t\t\tsupportsRule.__starts = i;\n\t\t\t\ti += \"supports\".length;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@host\", i) === i) {\n\t\t\t\tstate = \"hostRule-begin\";\n\t\t\t\ti += \"host\".length;\n\t\t\t\thostRule = new CSSOM.CSSHostRule();\n\t\t\t\thostRule.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@import\", i) === i) {\n\t\t\t\tstate = \"importRule-begin\";\n\t\t\t\ti += \"import\".length;\n\t\t\t\tbuffer += \"@import\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@font-face\", i) === i) {\n\t\t\t\tstate = \"fontFaceRule-begin\";\n\t\t\t\ti += \"font-face\".length;\n\t\t\t\tfontFaceRule = new CSSOM.CSSFontFaceRule();\n\t\t\t\tfontFaceRule.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tatKeyframesRegExp.lastIndex = i;\n\t\t\t\tvar matchKeyframes = atKeyframesRegExp.exec(token);\n\t\t\t\tif (matchKeyframes && matchKeyframes.index === i) {\n\t\t\t\t\tstate = \"keyframesRule-begin\";\n\t\t\t\t\tkeyframesRule = new CSSOM.CSSKeyframesRule();\n\t\t\t\t\tkeyframesRule.__starts = i;\n\t\t\t\t\tkeyframesRule._vendorPrefix = matchKeyframes[1]; // Will come out as undefined if no prefix was found\n\t\t\t\t\ti += matchKeyframes[0].length - 1;\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (state === \"selector\") {\n\t\t\t\t\tstate = \"atRule\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\n\t\tcase \"{\":\n\t\t\tif (state === \"selector\" || state === \"atRule\") {\n\t\t\t\tstyleRule.selectorText = buffer.trim();\n\t\t\t\tstyleRule.style.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-name\";\n\t\t\t} else if (state === \"atBlock\") {\n\t\t\t\tmediaRule.media.mediaText = buffer.trim();\n\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t}\n\n\t\t\t\tcurrentScope = parentRule = mediaRule;\n\t\t\t\tmediaRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t} else if (state === \"conditionBlock\") {\n\t\t\t\tsupportsRule.conditionText = buffer.trim();\n\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t}\n\n\t\t\t\tcurrentScope = parentRule = supportsRule;\n\t\t\t\tsupportsRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t} else if (state === \"hostRule-begin\") {\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t}\n\n\t\t\t\tcurrentScope = parentRule = hostRule;\n\t\t\t\thostRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t} else if (state === \"fontFaceRule-begin\") {\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tfontFaceRule.parentRule = parentRule;\n\t\t\t\t}\n\t\t\t\tfontFaceRule.parentStyleSheet = styleSheet;\n\t\t\t\tstyleRule = fontFaceRule;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-name\";\n\t\t\t} else if (state === \"keyframesRule-begin\") {\n\t\t\t\tkeyframesRule.name = buffer.trim();\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t\tkeyframesRule.parentRule = parentRule;\n\t\t\t\t}\n\t\t\t\tkeyframesRule.parentStyleSheet = styleSheet;\n\t\t\t\tcurrentScope = parentRule = keyframesRule;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"keyframeRule-begin\";\n\t\t\t} else if (state === \"keyframeRule-begin\") {\n\t\t\t\tstyleRule = new CSSOM.CSSKeyframeRule();\n\t\t\t\tstyleRule.keyText = buffer.trim();\n\t\t\t\tstyleRule.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-name\";\n\t\t\t} else if (state === \"documentRule-begin\") {\n\t\t\t\t// FIXME: what if this '{' is in the url text of the match function?\n\t\t\t\tdocumentRule.matcher.matcherText = buffer.trim();\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t\tdocumentRule.parentRule = parentRule;\n\t\t\t\t}\n\t\t\t\tcurrentScope = parentRule = documentRule;\n\t\t\t\tdocumentRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \":\":\n\t\t\tif (state === \"name\") {\n\t\t\t\tname = buffer.trim();\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-value\";\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"(\":\n\t\t\tif (state === 'value') {\n\t\t\t\t// ie css expression mode\n\t\t\t\tif (buffer.trim() === 'expression') {\n\t\t\t\t\tvar info = (new CSSOM.CSSValueExpression(token, i)).parse();\n\n\t\t\t\t\tif (info.error) {\n\t\t\t\t\t\tparseError(info.error);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbuffer += info.expression;\n\t\t\t\t\t\ti = info.idx;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tstate = 'value-parenthesis';\n\t\t\t\t\t//always ensure this is reset to 1 on transition\n\t\t\t\t\t//from value to value-parenthesis\n\t\t\t\t\tvalueParenthesisDepth = 1;\n\t\t\t\t\tbuffer += character;\n\t\t\t\t}\n\t\t\t} else if (state === 'value-parenthesis') {\n\t\t\t\tvalueParenthesisDepth++;\n\t\t\t\tbuffer += character;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \")\":\n\t\t\tif (state === 'value-parenthesis') {\n\t\t\t\tvalueParenthesisDepth--;\n\t\t\t\tif (valueParenthesisDepth === 0) state = 'value';\n\t\t\t}\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\n\t\tcase \"!\":\n\t\t\tif (state === \"value\" && token.indexOf(\"!important\", i) === i) {\n\t\t\t\tpriority = \"important\";\n\t\t\t\ti += \"important\".length;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \";\":\n\t\t\tswitch (state) {\n\t\t\t\tcase \"value\":\n\t\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\t\tpriority = \"\";\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-name\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"atRule\":\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"importRule\":\n\t\t\t\t\timportRule = new CSSOM.CSSImportRule();\n\t\t\t\t\timportRule.parentStyleSheet = importRule.styleSheet.parentStyleSheet = styleSheet;\n\t\t\t\t\timportRule.cssText = buffer + character;\n\t\t\t\t\tstyleSheet.cssRules.push(importRule);\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbuffer += character;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"}\":\n\t\t\tswitch (state) {\n\t\t\t\tcase \"value\":\n\t\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\t\tpriority = \"\";\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase \"before-name\":\n\t\t\t\tcase \"name\":\n\t\t\t\t\tstyleRule.__ends = i + 1;\n\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\tstyleRule.parentRule = parentRule;\n\t\t\t\t\t}\n\t\t\t\t\tstyleRule.parentStyleSheet = styleSheet;\n\t\t\t\t\tcurrentScope.cssRules.push(styleRule);\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tif (currentScope.constructor === CSSOM.CSSKeyframesRule) {\n\t\t\t\t\t\tstate = \"keyframeRule-begin\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"keyframeRule-begin\":\n\t\t\t\tcase \"before-selector\":\n\t\t\t\tcase \"selector\":\n\t\t\t\t\t// End of media/supports/document rule.\n\t\t\t\t\tif (!parentRule) {\n\t\t\t\t\t\tparseError(\"Unexpected }\");\n\t\t\t\t\t}\n\n\t\t\t\t\t// Handle rules nested in @media or @supports\n\t\t\t\t\thasAncestors = ancestorRules.length > 0;\n\n\t\t\t\t\twhile (ancestorRules.length > 0) {\n\t\t\t\t\t\tparentRule = ancestorRules.pop();\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tparentRule.constructor.name === \"CSSMediaRule\"\n\t\t\t\t\t\t\t|| parentRule.constructor.name === \"CSSSupportsRule\"\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tprevScope = currentScope;\n\t\t\t\t\t\t\tcurrentScope = parentRule;\n\t\t\t\t\t\t\tcurrentScope.cssRules.push(prevScope);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (ancestorRules.length === 0) {\n\t\t\t\t\t\t\thasAncestors = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (!hasAncestors) {\n\t\t\t\t\t\tcurrentScope.__ends = i + 1;\n\t\t\t\t\t\tstyleSheet.cssRules.push(currentScope);\n\t\t\t\t\t\tcurrentScope = styleSheet;\n\t\t\t\t\t\tparentRule = null;\n\t\t\t\t\t}\n\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tswitch (state) {\n\t\t\t\tcase \"before-selector\":\n\t\t\t\t\tstate = \"selector\";\n\t\t\t\t\tstyleRule = new CSSOM.CSSStyleRule();\n\t\t\t\t\tstyleRule.__starts = i;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"before-name\":\n\t\t\t\t\tstate = \"name\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"before-value\":\n\t\t\t\t\tstate = \"value\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"importRule-begin\":\n\t\t\t\t\tstate = \"importRule\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn styleSheet;\n};\n\n\n//.CommonJS\nexports.parse = CSSOM.parse;\n// The following modules cannot be included sooner due to the mutual dependency with parse.js\nCSSOM.CSSStyleSheet = require(\"./CSSStyleSheet\").CSSStyleSheet;\nCSSOM.CSSStyleRule = require(\"./CSSStyleRule\").CSSStyleRule;\nCSSOM.CSSImportRule = require(\"./CSSImportRule\").CSSImportRule;\nCSSOM.CSSGroupingRule = require(\"./CSSGroupingRule\").CSSGroupingRule;\nCSSOM.CSSMediaRule = require(\"./CSSMediaRule\").CSSMediaRule;\nCSSOM.CSSConditionRule = require(\"./CSSConditionRule\").CSSConditionRule;\nCSSOM.CSSSupportsRule = require(\"./CSSSupportsRule\").CSSSupportsRule;\nCSSOM.CSSFontFaceRule = require(\"./CSSFontFaceRule\").CSSFontFaceRule;\nCSSOM.CSSHostRule = require(\"./CSSHostRule\").CSSHostRule;\nCSSOM.CSSStyleDeclaration = require('./CSSStyleDeclaration').CSSStyleDeclaration;\nCSSOM.CSSKeyframeRule = require('./CSSKeyframeRule').CSSKeyframeRule;\nCSSOM.CSSKeyframesRule = require('./CSSKeyframesRule').CSSKeyframesRule;\nCSSOM.CSSValueExpression = require('./CSSValueExpression').CSSValueExpression;\nCSSOM.CSSDocumentRule = require('./CSSDocumentRule').CSSDocumentRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration\n */\nCSSOM.CSSStyleDeclaration = function CSSStyleDeclaration(){\n\tthis.length = 0;\n\tthis.parentRule = null;\n\n\t// NON-STANDARD\n\tthis._importants = {};\n};\n\n\nCSSOM.CSSStyleDeclaration.prototype = {\n\n\tconstructor: CSSOM.CSSStyleDeclaration,\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-getPropertyValue\n\t * @return {string} the value of the property if it has been explicitly set for this declaration block.\n\t * Returns the empty string if the property has not been set.\n\t */\n\tgetPropertyValue: function(name) {\n\t\treturn this[name] || \"\";\n\t},\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @param {string} value\n\t * @param {string} [priority=null] \"important\" or null\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-setProperty\n\t */\n\tsetProperty: function(name, value, priority) {\n\t\tif (this[name]) {\n\t\t\t// Property already exist. Overwrite it.\n\t\t\tvar index = Array.prototype.indexOf.call(this, name);\n\t\t\tif (index < 0) {\n\t\t\t\tthis[this.length] = name;\n\t\t\t\tthis.length++;\n\t\t\t}\n\t\t} else {\n\t\t\t// New property.\n\t\t\tthis[this.length] = name;\n\t\t\tthis.length++;\n\t\t}\n\t\tthis[name] = value + \"\";\n\t\tthis._importants[name] = priority;\n\t},\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-removeProperty\n\t * @return {string} the value of the property if it has been explicitly set for this declaration block.\n\t * Returns the empty string if the property has not been set or the property name does not correspond to a known CSS property.\n\t */\n\tremoveProperty: function(name) {\n\t\tif (!(name in this)) {\n\t\t\treturn \"\";\n\t\t}\n\t\tvar index = Array.prototype.indexOf.call(this, name);\n\t\tif (index < 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tvar prevValue = this[name];\n\t\tthis[name] = \"\";\n\n\t\t// That's what WebKit and Opera do\n\t\tArray.prototype.splice.call(this, index, 1);\n\n\t\t// That's what Firefox does\n\t\t//this[index] = \"\"\n\n\t\treturn prevValue;\n\t},\n\n\tgetPropertyCSSValue: function() {\n\t\t//FIXME\n\t},\n\n\t/**\n\t *\n\t * @param {String} name\n\t */\n\tgetPropertyPriority: function(name) {\n\t\treturn this._importants[name] || \"\";\n\t},\n\n\n\t/**\n\t * element.style.overflow = \"auto\"\n\t * element.style.getPropertyShorthand(\"overflow-x\")\n\t * -> \"overflow\"\n\t */\n\tgetPropertyShorthand: function() {\n\t\t//FIXME\n\t},\n\n\tisPropertyImplicit: function() {\n\t\t//FIXME\n\t},\n\n\t// Doesn't work in IE < 9\n\tget cssText(){\n\t\tvar properties = [];\n\t\tfor (var i=0, length=this.length; i < length; ++i) {\n\t\t\tvar name = this[i];\n\t\t\tvar value = this.getPropertyValue(name);\n\t\t\tvar priority = this.getPropertyPriority(name);\n\t\t\tif (priority) {\n\t\t\t\tpriority = \" !\" + priority;\n\t\t\t}\n\t\t\tproperties[i] = name + \": \" + value + priority + \";\";\n\t\t}\n\t\treturn properties.join(\" \");\n\t},\n\n\tset cssText(text){\n\t\tvar i, name;\n\t\tfor (i = this.length; i--;) {\n\t\t\tname = this[i];\n\t\t\tthis[name] = \"\";\n\t\t}\n\t\tArray.prototype.splice.call(this, 0, this.length);\n\t\tthis._importants = {};\n\n\t\tvar dummyRule = CSSOM.parse('#bogus{' + text + '}').cssRules[0].style;\n\t\tvar length = dummyRule.length;\n\t\tfor (i = 0; i < length; ++i) {\n\t\t\tname = dummyRule[i];\n\t\t\tthis.setProperty(dummyRule[i], dummyRule.getPropertyValue(name), dummyRule.getPropertyPriority(name));\n\t\t}\n\t}\n};\n\n\n//.CommonJS\nexports.CSSStyleDeclaration = CSSOM.CSSStyleDeclaration;\nCSSOM.parse = require('./parse').parse; // Cannot be included sooner due to the mutual dependency between parse.js and CSSStyleDeclaration.js\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSStyleSheet: require(\"./CSSStyleSheet\").CSSStyleSheet,\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleRule: require(\"./CSSStyleRule\").CSSStyleRule,\n\tCSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n\tCSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule,\n\tCSSMediaRule: require(\"./CSSMediaRule\").CSSMediaRule,\n\tCSSSupportsRule: require(\"./CSSSupportsRule\").CSSSupportsRule,\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSKeyframeRule: require('./CSSKeyframeRule').CSSKeyframeRule,\n\tCSSKeyframesRule: require('./CSSKeyframesRule').CSSKeyframesRule\n};\n///CommonJS\n\n\n/**\n * Produces a deep copy of stylesheet — the instance variables of stylesheet are copied recursively.\n * @param {CSSStyleSheet|CSSOM.CSSStyleSheet} stylesheet\n * @nosideeffects\n * @return {CSSOM.CSSStyleSheet}\n */\nCSSOM.clone = function clone(stylesheet) {\n\n\tvar cloned = new CSSOM.CSSStyleSheet();\n\n\tvar rules = stylesheet.cssRules;\n\tif (!rules) {\n\t\treturn cloned;\n\t}\n\n\tfor (var i = 0, rulesLength = rules.length; i < rulesLength; i++) {\n\t\tvar rule = rules[i];\n\t\tvar ruleClone = cloned.cssRules[i] = new rule.constructor();\n\n\t\tvar style = rule.style;\n\t\tif (style) {\n\t\t\tvar styleClone = ruleClone.style = new CSSOM.CSSStyleDeclaration();\n\t\t\tfor (var j = 0, styleLength = style.length; j < styleLength; j++) {\n\t\t\t\tvar name = styleClone[j] = style[j];\n\t\t\t\tstyleClone[name] = style[name];\n\t\t\t\tstyleClone._importants[name] = style.getPropertyPriority(name);\n\t\t\t}\n\t\t\tstyleClone.length = style.length;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('keyText')) {\n\t\t\truleClone.keyText = rule.keyText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('selectorText')) {\n\t\t\truleClone.selectorText = rule.selectorText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('mediaText')) {\n\t\t\truleClone.mediaText = rule.mediaText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('conditionText')) {\n\t\t\truleClone.conditionText = rule.conditionText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('cssRules')) {\n\t\t\truleClone.cssRules = clone(rule).cssRules;\n\t\t}\n\t}\n\n\treturn cloned;\n\n};\n\n//.CommonJS\nexports.clone = CSSOM.clone;\n///CommonJS\n","'use strict';\n\nexports.CSSStyleDeclaration = require('./CSSStyleDeclaration').CSSStyleDeclaration;\nexports.CSSRule = require('./CSSRule').CSSRule;\nexports.CSSGroupingRule = require('./CSSGroupingRule').CSSGroupingRule;\nexports.CSSConditionRule = require('./CSSConditionRule').CSSConditionRule;\nexports.CSSStyleRule = require('./CSSStyleRule').CSSStyleRule;\nexports.MediaList = require('./MediaList').MediaList;\nexports.CSSMediaRule = require('./CSSMediaRule').CSSMediaRule;\nexports.CSSSupportsRule = require('./CSSSupportsRule').CSSSupportsRule;\nexports.CSSImportRule = require('./CSSImportRule').CSSImportRule;\nexports.CSSFontFaceRule = require('./CSSFontFaceRule').CSSFontFaceRule;\nexports.CSSHostRule = require('./CSSHostRule').CSSHostRule;\nexports.StyleSheet = require('./StyleSheet').StyleSheet;\nexports.CSSStyleSheet = require('./CSSStyleSheet').CSSStyleSheet;\nexports.CSSKeyframesRule = require('./CSSKeyframesRule').CSSKeyframesRule;\nexports.CSSKeyframeRule = require('./CSSKeyframeRule').CSSKeyframeRule;\nexports.MatcherList = require('./MatcherList').MatcherList;\nexports.CSSDocumentRule = require('./CSSDocumentRule').CSSDocumentRule;\nexports.CSSValue = require('./CSSValue').CSSValue;\nexports.CSSValueExpression = require('./CSSValueExpression').CSSValueExpression;\nexports.parse = require('./parse').parse;\nexports.clone = require('./clone').clone;\n","import {parse} from 'cssom';\n\nimport {registerHTMLClass} from '../shared/register-html-class.js';\nimport {SHEET} from '../shared/symbols.js';\n\nimport {TextElement} from './text-element.js';\n\nconst tagName = 'style';\n\n/**\n * @implements globalThis.HTMLStyleElement\n */\nclass HTMLStyleElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n this[SHEET] = null;\n }\n\n get sheet() {\n const sheet = this[SHEET];\n if (sheet !== null) {\n return sheet;\n }\n return this[SHEET] = parse(this.textContent);\n }\n\n get innerHTML() {\n return super.innerHTML || '';\n }\n set innerHTML(value) {\n super.textContent = value;\n this[SHEET] = null;\n }\n get innerText() {\n return super.innerText || '';\n }\n set innerText(value) {\n super.textContent = value;\n this[SHEET] = null;\n }\n get textContent() {\n return super.textContent || '';\n }\n set textContent(value) {\n super.textContent = value;\n this[SHEET] = null;\n }\n}\n\nregisterHTMLClass(tagName, HTMLStyleElement);\n\nexport {HTMLStyleElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTimeElement\n */\nexport class HTMLTimeElement extends HTMLElement {\n constructor(ownerDocument, localName = 'time') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFieldSetElement\n */\nexport class HTMLFieldSetElement extends HTMLElement {\n constructor(ownerDocument, localName = 'fieldset') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLEmbedElement\n */\nexport class HTMLEmbedElement extends HTMLElement {\n constructor(ownerDocument, localName = 'embed') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLHRElement\n */\nexport class HTMLHRElement extends HTMLElement {\n constructor(ownerDocument, localName = 'hr') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLProgressElement\n */\nexport class HTMLProgressElement extends HTMLElement {\n constructor(ownerDocument, localName = 'progress') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLParagraphElement\n */\nexport class HTMLParagraphElement extends HTMLElement {\n constructor(ownerDocument, localName = 'p') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableElement\n */\nexport class HTMLTableElement extends HTMLElement {\n constructor(ownerDocument, localName = 'table') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFrameSetElement\n */\nexport class HTMLFrameSetElement extends HTMLElement {\n constructor(ownerDocument, localName = 'frameset') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLLIElement\n */\nexport class HTMLLIElement extends HTMLElement {\n constructor(ownerDocument, localName = 'li') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLBaseElement\n */\nexport class HTMLBaseElement extends HTMLElement {\n constructor(ownerDocument, localName = 'base') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDataListElement\n */\nexport class HTMLDataListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'datalist') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'input';\n\n/**\n * @implements globalThis.HTMLInputElement\n */\nclass HTMLInputElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get autofocus() { return booleanAttribute.get(this, 'autofocus') || -1; }\n set autofocus(value) { booleanAttribute.set(this, 'autofocus', value); }\n\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n get placeholder() { return this.getAttribute('placeholder'); }\n set placeholder(value) { this.setAttribute('placeholder', value); }\n\n get type() { return this.getAttribute('type'); }\n set type(value) { this.setAttribute('type', value); }\n\n get value() { return stringAttribute.get(this, 'value'); }\n set value(value) { stringAttribute.set(this, 'value', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLInputElement);\n\nexport {HTMLInputElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLParamElement\n */\nexport class HTMLParamElement extends HTMLElement {\n constructor(ownerDocument, localName = 'param') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMediaElement\n */\nexport class HTMLMediaElement extends HTMLElement {\n constructor(ownerDocument, localName = 'media') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLAudioElement\n */\nexport class HTMLAudioElement extends HTMLElement {\n constructor(ownerDocument, localName = 'audio') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'h1';\n\n/**\n * @implements globalThis.HTMLHeadingElement\n */\nclass HTMLHeadingElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n}\n\nregisterHTMLClass([tagName, 'h2', 'h3', 'h4', 'h5', 'h6'], HTMLHeadingElement);\n\nexport {HTMLHeadingElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDirectoryElement\n */\nexport class HTMLDirectoryElement extends HTMLElement {\n constructor(ownerDocument, localName = 'dir') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLQuoteElement\n */\nexport class HTMLQuoteElement extends HTMLElement {\n constructor(ownerDocument, localName = 'quote') {\n super(ownerDocument, localName);\n }\n}\n","class Canvas {\n constructor(width, height) {\n this.width = width;\n this.height = height;\n }\n getContext() {\n return null;\n }\n toDataURL() {\n return '';\n }\n}\n\nmodule.exports = {\n createCanvas: (width, height) => new Canvas(width, height),\n};\n","/* c8 ignore start */\ntry {\n module.exports = require('canvas');\n} catch (fallback) {\n module.exports = require('./canvas-shim.cjs');\n}\n/* c8 ignore stop */\n","import {IMAGE} from '../shared/symbols.js';\n\nimport {registerHTMLClass} from '../shared/register-html-class.js';\nimport {numericAttribute} from '../shared/attributes.js';\n\nimport Canvas from '../../commonjs/canvas.cjs';\n\nimport {HTMLElement} from './element.js';\n\nconst {createCanvas} = Canvas;\n\nconst tagName = 'canvas';\n\n/**\n * @implements globalThis.HTMLCanvasElement\n */\nclass HTMLCanvasElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n this[IMAGE] = createCanvas(300, 150);\n }\n\n get width() {\n return this[IMAGE].width;\n }\n\n set width(value) {\n numericAttribute.set(this, 'width', value);\n this[IMAGE].width = value;\n }\n\n get height() {\n return this[IMAGE].height;\n }\n\n set height(value) {\n numericAttribute.set(this, 'height', value);\n this[IMAGE].height = value;\n }\n\n getContext(type) {\n return this[IMAGE].getContext(type);\n }\n\n toDataURL(...args) {\n return this[IMAGE].toDataURL(...args);\n }\n}\n\nregisterHTMLClass(tagName, HTMLCanvasElement);\n\nexport {HTMLCanvasElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLLegendElement\n */\nexport class HTMLLegendElement extends HTMLElement {\n constructor(ownerDocument, localName = 'legend') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nconst tagName = 'option';\n\n/**\n * @implements globalThis.HTMLOptionElement\n */\nclass HTMLOptionElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get value() { return stringAttribute.get(this, 'value'); }\n set value(value) { stringAttribute.set(this, 'value', value); }\n /* c8 ignore stop */\n\n get selected() { return booleanAttribute.get(this, 'selected'); }\n set selected(value) {\n const option = this.parentElement?.querySelector('option[selected]');\n if (option && option !== this)\n option.selected = false;\n booleanAttribute.set(this, 'selected', value);\n }\n}\n\nregisterHTMLClass(tagName, HTMLOptionElement);\n\nexport {HTMLOptionElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLSpanElement\n */\nexport class HTMLSpanElement extends HTMLElement {\n constructor(ownerDocument, localName = 'span') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMeterElement\n */\nexport class HTMLMeterElement extends HTMLElement {\n constructor(ownerDocument, localName = 'meter') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLVideoElement\n */\nexport class HTMLVideoElement extends HTMLElement {\n constructor(ownerDocument, localName = 'video') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableCellElement\n */\nexport class HTMLTableCellElement extends HTMLElement {\n constructor(ownerDocument, localName = 'td') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {TextElement} from './text-element.js';\n\nconst tagName = 'title';\n\n/**\n * @implements globalThis.HTMLTitleElement\n */\nclass HTMLTitleElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n}\n\nregisterHTMLClass(tagName, HTMLTitleElement);\n\nexport {HTMLTitleElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLOutputElement\n */\nexport class HTMLOutputElement extends HTMLElement {\n constructor(ownerDocument, localName = 'output') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableRowElement\n */\nexport class HTMLTableRowElement extends HTMLElement {\n constructor(ownerDocument, localName = 'tr') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDataElement\n */\nexport class HTMLDataElement extends HTMLElement {\n constructor(ownerDocument, localName = 'data') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMenuElement\n */\nexport class HTMLMenuElement extends HTMLElement {\n constructor(ownerDocument, localName = 'menu') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\nimport {NodeList} from '../interface/node-list.js';\n\nconst tagName = 'select';\n\n/**\n * @implements globalThis.HTMLSelectElement\n */\nclass HTMLSelectElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n get options() {\n let children = new NodeList;\n let {firstElementChild} = this;\n while (firstElementChild) {\n if (firstElementChild.tagName === 'OPTGROUP')\n children.push(...firstElementChild.children);\n else\n children.push(firstElementChild);\n firstElementChild = firstElementChild.nextElementSibling;\n }\n return children;\n }\n\n /* c8 ignore start */\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n /* c8 ignore stop */\n\n get value() { return this.querySelector('option[selected]')?.value; }\n}\n\nregisterHTMLClass(tagName, HTMLSelectElement);\n\nexport {HTMLSelectElement};\n\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLBRElement\n */\nexport class HTMLBRElement extends HTMLElement {\n constructor(ownerDocument, localName = 'br') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'button';\n\n/**\n * @implements globalThis.HTMLButtonElement\n */\nclass HTMLButtonElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n get type() { return this.getAttribute('type'); }\n set type(value) { this.setAttribute('type', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLButtonElement);\n\nexport {HTMLButtonElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMapElement\n */\nexport class HTMLMapElement extends HTMLElement {\n constructor(ownerDocument, localName = 'map') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLOptGroupElement\n */\nexport class HTMLOptGroupElement extends HTMLElement {\n constructor(ownerDocument, localName = 'optgroup') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDListElement\n */\nexport class HTMLDListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'dl') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute} from '../shared/attributes.js';\n\nimport {TextElement} from './text-element.js';\n\nconst tagName = 'textarea';\n\n/**\n * @implements globalThis.HTMLTextAreaElement\n */\nclass HTMLTextAreaElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n get placeholder() { return this.getAttribute('placeholder'); }\n set placeholder(value) { this.setAttribute('placeholder', value); }\n\n get type() { return this.getAttribute('type'); }\n set type(value) { this.setAttribute('type', value); }\n\n get value() { return this.textContent; }\n set value(content) { this.textContent = content; }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLTextAreaElement);\n\nexport {HTMLTextAreaElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFontElement\n */\nexport class HTMLFontElement extends HTMLElement {\n constructor(ownerDocument, localName = 'font') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDivElement\n */\nexport class HTMLDivElement extends HTMLElement {\n constructor(ownerDocument, localName = 'div') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'link';\n\n/**\n * @implements globalThis.HTMLLinkElement\n */\nclass HTMLLinkElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */ // copy paste from img.src, already covered\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get href() { return stringAttribute.get(this, 'href'); }\n set href(value) { stringAttribute.set(this, 'href', value); }\n\n get hreflang() { return stringAttribute.get(this, 'hreflang'); }\n set hreflang(value) { stringAttribute.set(this, 'hreflang', value); }\n\n get media() { return stringAttribute.get(this, 'media'); }\n set media(value) { stringAttribute.set(this, 'media', value); }\n\n get rel() { return stringAttribute.get(this, 'rel'); }\n set rel(value) { stringAttribute.set(this, 'rel', value); }\n\n get type() { return stringAttribute.get(this, 'type'); }\n set type(value) { stringAttribute.set(this, 'type', value); }\n /* c8 ignore stop */\n\n}\n\nregisterHTMLClass(tagName, HTMLLinkElement);\n\nexport {HTMLLinkElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLSlotElement\n */\nexport class HTMLSlotElement extends HTMLElement {\n constructor(ownerDocument, localName = 'slot') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFormElement\n */\nexport class HTMLFormElement extends HTMLElement {\n constructor(ownerDocument, localName = 'form') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {numericAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'img';\n\n/**\n * @implements globalThis.HTMLImageElement\n */\nclass HTMLImageElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get alt() { return stringAttribute.get(this, 'alt'); }\n set alt(value) { stringAttribute.set(this, 'alt', value); }\n\n get sizes() { return stringAttribute.get(this, 'sizes'); }\n set sizes(value) { stringAttribute.set(this, 'sizes', value); }\n\n get src() { return stringAttribute.get(this, 'src'); }\n set src(value) { stringAttribute.set(this, 'src', value); }\n\n get srcset() { return stringAttribute.get(this, 'srcset'); }\n set srcset(value) { stringAttribute.set(this, 'srcset', value); }\n\n get title() { return stringAttribute.get(this, 'title'); }\n set title(value) { stringAttribute.set(this, 'title', value); }\n\n get width() { return numericAttribute.get(this, 'width'); }\n set width(value) { numericAttribute.set(this, 'width', value); }\n\n get height() { return numericAttribute.get(this, 'height'); }\n set height(value) { numericAttribute.set(this, 'height', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLImageElement);\n\nexport {HTMLImageElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLPreElement\n */\nexport class HTMLPreElement extends HTMLElement {\n constructor(ownerDocument, localName = 'pre') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLUListElement\n */\nexport class HTMLUListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'ul') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\nimport { stringAttribute } from '../shared/attributes.js';\n\nconst tagName = 'meta'\n/**\n * @implements globalThis.HTMLMetaElement\n */\nexport class HTMLMetaElement extends HTMLElement {\n constructor(ownerDocument, localName =tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get name() { return stringAttribute.get(this, 'name'); }\n set name(value) { stringAttribute.set(this, 'name', value); }\n\n get httpEquiv() { return stringAttribute.get(this, 'http-equiv'); }\n set httpEquiv(value) { stringAttribute.set(this, 'http-equiv', value); }\n\n get content() { return stringAttribute.get(this, 'content'); }\n set content(value) { stringAttribute.set(this, 'content', value); }\n\n get charset() { return stringAttribute.get(this, 'charset'); }\n set charset(value) { stringAttribute.set(this, 'charset', value); }\n\n get media() { return stringAttribute.get(this, 'media'); }\n set media(value) { stringAttribute.set(this, 'media', value); }\n /* c8 ignore stop */\n\n}\n\nregisterHTMLClass(tagName, HTMLMetaElement);\n\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLPictureElement\n */\nexport class HTMLPictureElement extends HTMLElement {\n constructor(ownerDocument, localName = 'picture') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLAreaElement\n */\nexport class HTMLAreaElement extends HTMLElement {\n constructor(ownerDocument, localName = 'area') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLOListElement\n */\nexport class HTMLOListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'ol') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableCaptionElement\n */\nexport class HTMLTableCaptionElement extends HTMLElement {\n constructor(ownerDocument, localName = 'caption') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'a';\n\n/**\n * @implements globalThis.HTMLAnchorElement\n */\nclass HTMLAnchorElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */ // copy paste from img.src, already covered\n get href() { return encodeURI(stringAttribute.get(this, 'href')); }\n set href(value) { stringAttribute.set(this, 'href', decodeURI(value)); }\n\n get download() { return encodeURI(stringAttribute.get(this, 'download')); }\n set download(value) { stringAttribute.set(this, 'download', decodeURI(value)); }\n\n get target() { return stringAttribute.get(this, 'target'); }\n set target(value) { stringAttribute.set(this, 'target', value); }\n\n get type() { return stringAttribute.get(this, 'type'); }\n set type(value) { stringAttribute.set(this, 'type', value); }\n /* c8 ignore stop */\n\n}\n\nregisterHTMLClass(tagName, HTMLAnchorElement);\n\nexport {HTMLAnchorElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLLabelElement\n */\nexport class HTMLLabelElement extends HTMLElement {\n constructor(ownerDocument, localName = 'label') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLUnknownElement\n */\nexport class HTMLUnknownElement extends HTMLElement {\n constructor(ownerDocument, localName = 'unknown') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLModElement\n */\nexport class HTMLModElement extends HTMLElement {\n constructor(ownerDocument, localName = 'mod') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDetailsElement\n */\nexport class HTMLDetailsElement extends HTMLElement {\n constructor(ownerDocument, localName = 'details') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'source';\n\n/**\n * @implements globalThis.HTMLSourceElement\n */\nclass HTMLSourceElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get src() { return stringAttribute.get(this, 'src'); }\n set src(value) { stringAttribute.set(this, 'src', value); }\n\n get srcset() { return stringAttribute.get(this, 'srcset'); }\n set srcset(value) { stringAttribute.set(this, 'srcset', value); }\n\n get sizes() { return stringAttribute.get(this, 'sizes'); }\n set sizes(value) { stringAttribute.set(this, 'sizes', value); }\n\n get type() { return stringAttribute.get(this, 'type'); }\n set type(value) { stringAttribute.set(this, 'type', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLSourceElement);\n\nexport {HTMLSourceElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTrackElement\n */\nexport class HTMLTrackElement extends HTMLElement {\n constructor(ownerDocument, localName = 'track') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMarqueeElement\n */\nexport class HTMLMarqueeElement extends HTMLElement {\n constructor(ownerDocument, localName = 'marquee') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from '../html/element.js';\nimport {HTMLTemplateElement} from '../html/template-element.js';\nimport {HTMLHtmlElement} from '../html/html-element.js';\nimport {HTMLScriptElement} from '../html/script-element.js';\nimport {HTMLFrameElement} from '../html/frame-element.js';\nimport {HTMLIFrameElement} from '../html/i-frame-element.js';\nimport {HTMLObjectElement} from '../html/object-element.js';\nimport {HTMLHeadElement} from '../html/head-element.js';\nimport {HTMLBodyElement} from '../html/body-element.js';\nimport {HTMLStyleElement} from '../html/style-element.js';\nimport {HTMLTimeElement} from '../html/time-element.js';\nimport {HTMLFieldSetElement} from '../html/field-set-element.js';\nimport {HTMLEmbedElement} from '../html/embed-element.js';\nimport {HTMLHRElement} from '../html/hr-element.js';\nimport {HTMLProgressElement} from '../html/progress-element.js';\nimport {HTMLParagraphElement} from '../html/paragraph-element.js';\nimport {HTMLTableElement} from '../html/table-element.js';\nimport {HTMLFrameSetElement} from '../html/frame-set-element.js';\nimport {HTMLLIElement} from '../html/li-element.js';\nimport {HTMLBaseElement} from '../html/base-element.js';\nimport {HTMLDataListElement} from '../html/data-list-element.js';\nimport {HTMLInputElement} from '../html/input-element.js';\nimport {HTMLParamElement} from '../html/param-element.js';\nimport {HTMLMediaElement} from '../html/media-element.js';\nimport {HTMLAudioElement} from '../html/audio-element.js';\nimport {HTMLHeadingElement} from '../html/heading-element.js';\nimport {HTMLDirectoryElement} from '../html/directory-element.js';\nimport {HTMLQuoteElement} from '../html/quote-element.js';\nimport {HTMLCanvasElement} from '../html/canvas-element.js';\nimport {HTMLLegendElement} from '../html/legend-element.js';\nimport {HTMLOptionElement} from '../html/option-element.js';\nimport {HTMLSpanElement} from '../html/span-element.js';\nimport {HTMLMeterElement} from '../html/meter-element.js';\nimport {HTMLVideoElement} from '../html/video-element.js';\nimport {HTMLTableCellElement} from '../html/table-cell-element.js';\nimport {HTMLTitleElement} from '../html/title-element.js';\nimport {HTMLOutputElement} from '../html/output-element.js';\nimport {HTMLTableRowElement} from '../html/table-row-element.js';\nimport {HTMLDataElement} from '../html/data-element.js';\nimport {HTMLMenuElement} from '../html/menu-element.js';\nimport {HTMLSelectElement} from '../html/select-element.js';\nimport {HTMLBRElement} from '../html/br-element.js';\nimport {HTMLButtonElement} from '../html/button-element.js';\nimport {HTMLMapElement} from '../html/map-element.js';\nimport {HTMLOptGroupElement} from '../html/opt-group-element.js';\nimport {HTMLDListElement} from '../html/d-list-element.js';\nimport {HTMLTextAreaElement} from '../html/text-area-element.js';\nimport {HTMLFontElement} from '../html/font-element.js';\nimport {HTMLDivElement} from '../html/div-element.js';\nimport {HTMLLinkElement} from '../html/link-element.js';\nimport {HTMLSlotElement} from '../html/slot-element.js';\nimport {HTMLFormElement} from '../html/form-element.js';\nimport {HTMLImageElement} from '../html/image-element.js';\nimport {HTMLPreElement} from '../html/pre-element.js';\nimport {HTMLUListElement} from '../html/u-list-element.js';\nimport {HTMLMetaElement} from '../html/meta-element.js';\nimport {HTMLPictureElement} from '../html/picture-element.js';\nimport {HTMLAreaElement} from '../html/area-element.js';\nimport {HTMLOListElement} from '../html/o-list-element.js';\nimport {HTMLTableCaptionElement} from '../html/table-caption-element.js';\nimport {HTMLAnchorElement} from '../html/anchor-element.js';\nimport {HTMLLabelElement} from '../html/label-element.js';\nimport {HTMLUnknownElement} from '../html/unknown-element.js';\nimport {HTMLModElement} from '../html/mod-element.js';\nimport {HTMLDetailsElement} from '../html/details-element.js';\nimport {HTMLSourceElement} from '../html/source-element.js';\nimport {HTMLTrackElement} from '../html/track-element.js';\nimport {HTMLMarqueeElement} from '../html/marquee-element.js';\n\nexport {\n HTMLElement,\n HTMLTemplateElement,\n HTMLHtmlElement,\n HTMLScriptElement,\n HTMLFrameElement,\n HTMLIFrameElement,\n HTMLObjectElement,\n HTMLHeadElement,\n HTMLBodyElement,\n HTMLStyleElement,\n HTMLTimeElement,\n HTMLFieldSetElement,\n HTMLEmbedElement,\n HTMLHRElement,\n HTMLProgressElement,\n HTMLParagraphElement,\n HTMLTableElement,\n HTMLFrameSetElement,\n HTMLLIElement,\n HTMLBaseElement,\n HTMLDataListElement,\n HTMLInputElement,\n HTMLParamElement,\n HTMLMediaElement,\n HTMLAudioElement,\n HTMLHeadingElement,\n HTMLDirectoryElement,\n HTMLQuoteElement,\n HTMLCanvasElement,\n HTMLLegendElement,\n HTMLOptionElement,\n HTMLSpanElement,\n HTMLMeterElement,\n HTMLVideoElement,\n HTMLTableCellElement,\n HTMLTitleElement,\n HTMLOutputElement,\n HTMLTableRowElement,\n HTMLDataElement,\n HTMLMenuElement,\n HTMLSelectElement,\n HTMLBRElement,\n HTMLButtonElement,\n HTMLMapElement,\n HTMLOptGroupElement,\n HTMLDListElement,\n HTMLTextAreaElement,\n HTMLFontElement,\n HTMLDivElement,\n HTMLLinkElement,\n HTMLSlotElement,\n HTMLFormElement,\n HTMLImageElement,\n HTMLPreElement,\n HTMLUListElement,\n HTMLMetaElement,\n HTMLPictureElement,\n HTMLAreaElement,\n HTMLOListElement,\n HTMLTableCaptionElement,\n HTMLAnchorElement,\n HTMLLabelElement,\n HTMLUnknownElement,\n HTMLModElement,\n HTMLDetailsElement,\n HTMLSourceElement,\n HTMLTrackElement,\n HTMLMarqueeElement\n};\n\nexport const HTMLClasses = {\n HTMLElement,\n HTMLTemplateElement,\n HTMLHtmlElement,\n HTMLScriptElement,\n HTMLFrameElement,\n HTMLIFrameElement,\n HTMLObjectElement,\n HTMLHeadElement,\n HTMLBodyElement,\n HTMLStyleElement,\n HTMLTimeElement,\n HTMLFieldSetElement,\n HTMLEmbedElement,\n HTMLHRElement,\n HTMLProgressElement,\n HTMLParagraphElement,\n HTMLTableElement,\n HTMLFrameSetElement,\n HTMLLIElement,\n HTMLBaseElement,\n HTMLDataListElement,\n HTMLInputElement,\n HTMLParamElement,\n HTMLMediaElement,\n HTMLAudioElement,\n HTMLHeadingElement,\n HTMLDirectoryElement,\n HTMLQuoteElement,\n HTMLCanvasElement,\n HTMLLegendElement,\n HTMLOptionElement,\n HTMLSpanElement,\n HTMLMeterElement,\n HTMLVideoElement,\n HTMLTableCellElement,\n HTMLTitleElement,\n HTMLOutputElement,\n HTMLTableRowElement,\n HTMLDataElement,\n HTMLMenuElement,\n HTMLSelectElement,\n HTMLBRElement,\n HTMLButtonElement,\n HTMLMapElement,\n HTMLOptGroupElement,\n HTMLDListElement,\n HTMLTextAreaElement,\n HTMLFontElement,\n HTMLDivElement,\n HTMLLinkElement,\n HTMLSlotElement,\n HTMLFormElement,\n HTMLImageElement,\n HTMLPreElement,\n HTMLUListElement,\n HTMLMetaElement,\n HTMLPictureElement,\n HTMLAreaElement,\n HTMLOListElement,\n HTMLTableCaptionElement,\n HTMLAnchorElement,\n HTMLLabelElement,\n HTMLUnknownElement,\n HTMLModElement,\n HTMLDetailsElement,\n HTMLSourceElement,\n HTMLTrackElement,\n HTMLMarqueeElement\n};\n","// TODO: ensure all these are text only\n// /^(?:plaintext|script|style|textarea|title|xmp)$/i\n\nconst voidElements = {test: () => true};\nexport const Mime = {\n 'text/html': {\n docType: '<!DOCTYPE html>',\n ignoreCase: true,\n voidElements: /^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i\n },\n 'image/svg+xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n },\n 'text/xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n },\n 'application/xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n },\n 'application/xhtml+xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n }\n};\n","// https://dom.spec.whatwg.org/#interface-customevent\n\n/* c8 ignore start */\n\n// One day Node might have CustomEvent too\n\nimport {Event} from './event.js';\n\n/**\n * @implements globalThis.CustomEvent\n */\nexport class CustomEvent extends Event {\n constructor(type, eventInitDict = {}) {\n super(type, eventInitDict);\n this.detail = eventInitDict.detail;\n }\n}\n\n/* c8 ignore stop */\n","// https://dom.spec.whatwg.org/#interface-customevent\n\n/* c8 ignore start */\n\n// One day Node might have CustomEvent too\n\nimport {Event} from './event.js';\n\n/**\n * @implements globalThis.InputEvent\n */\nexport class InputEvent extends Event {\n constructor(type, inputEventInit = {}) {\n super(type, inputEventInit);\n this.inputType = inputEventInit.inputType;\n this.data = inputEventInit.data;\n this.dataTransfer = inputEventInit.dataTransfer;\n this.isComposing = inputEventInit.isComposing || false;\n this.ranges = inputEventInit.ranges;\n }\n}\n/* c8 ignore stop */\n","import {HTMLImageElement} from '../html/image-element.js';\n\nexport const ImageClass = ownerDocument =>\n/**\n * @implements globalThis.Image\n */\nclass Image extends HTMLImageElement {\n constructor(width, height) {\n super(ownerDocument);\n switch (arguments.length) {\n case 1:\n this.height = width;\n this.width = width;\n break;\n case 2:\n this.height = height;\n this.width = width;\n break;\n }\n }\n};\n","// https://dom.spec.whatwg.org/#concept-live-range\n\nimport {END, NEXT, PREV, START} from '../shared/symbols.js';\n\nimport {getEnd, setAdjacent} from '../shared/utils.js';\n\nconst deleteContents = ({[START]: start, [END]: end}, fragment = null) => {\n setAdjacent(start[PREV], end[NEXT]);\n do {\n const after = getEnd(start);\n const next = after === end ? after : after[NEXT];\n if (fragment)\n fragment.insertBefore(start, fragment[END]);\n else\n start.remove();\n start = next;\n } while (start !== end);\n};\n\n/**\n * @implements globalThis.Range\n */\nexport class Range {\n constructor() {\n this[START] = null;\n this[END] = null;\n this.commonAncestorContainer = null;\n }\n\n /* TODO: this is more complicated than it looks\n setStart(node, offset) {\n this[START] = node.childNodes[offset];\n }\n\n setEnd(node, offset) {\n this[END] = getEnd(node.childNodes[offset]);\n }\n //*/\n\n insertNode(newNode) {\n this[END].parentNode.insertBefore(newNode, this[START]);\n }\n\n selectNode(node) {\n this[START] = node;\n this[END] = getEnd(node);\n }\n\n surroundContents(parentNode) {\n parentNode.replaceChildren(this.extractContents());\n }\n\n setStartBefore(node) {\n this[START] = node;\n }\n\n setStartAfter(node) {\n this[START] = node.nextSibling;\n }\n\n setEndBefore(node) {\n this[END] = getEnd(node.previousSibling);\n }\n\n setEndAfter(node) {\n this[END] = getEnd(node);\n }\n\n cloneContents() {\n let {[START]: start, [END]: end} = this;\n const fragment = start.ownerDocument.createDocumentFragment();\n while (start !== end) {\n fragment.insertBefore(start.cloneNode(true), fragment[END]);\n start = getEnd(start);\n if (start !== end)\n start = start[NEXT];\n }\n return fragment;\n }\n\n deleteContents() {\n deleteContents(this);\n }\n\n extractContents() {\n const fragment = this[START].ownerDocument.createDocumentFragment();\n deleteContents(this, fragment);\n return fragment;\n }\n\n createContextualFragment(html) {\n const template = this.commonAncestorContainer.createElement('template');\n template.innerHTML = html;\n this.selectNode(template.content);\n return template.content;\n }\n\n cloneRange() {\n const range = new Range;\n range[START] = this[START];\n range[END] = this[END];\n return range;\n }\n}\n","import {\n DOCUMENT_NODE,\n ELEMENT_NODE,\n TEXT_NODE,\n COMMENT_NODE,\n SHOW_ALL,\n SHOW_ELEMENT,\n SHOW_COMMENT,\n SHOW_TEXT\n} from '../shared/constants.js';\n\nimport {PRIVATE, END, NEXT} from '../shared/symbols.js';\n\nconst isOK = ({nodeType}, mask) => {\n switch (nodeType) {\n case ELEMENT_NODE:\n return mask & SHOW_ELEMENT;\n case TEXT_NODE:\n return mask & SHOW_TEXT;\n case COMMENT_NODE:\n return mask & SHOW_COMMENT;\n }\n return 0;\n};\n\n/**\n * @implements globalThis.TreeWalker\n */\nexport class TreeWalker {\n constructor(root, whatToShow = SHOW_ALL) {\n this.root = root;\n this.currentNode = root;\n this.whatToShow = whatToShow;\n let {[NEXT]: next, [END]: end} = root;\n if (root.nodeType === DOCUMENT_NODE) {\n const {documentElement} = root;\n next = documentElement;\n end = documentElement[END];\n }\n const nodes = [];\n while (next !== end) {\n if (isOK(next, whatToShow))\n nodes.push(next);\n next = next[NEXT];\n }\n this[PRIVATE] = {i: 0, nodes};\n }\n\n nextNode() {\n const $ = this[PRIVATE];\n this.currentNode = $.i < $.nodes.length ? $.nodes[$.i++] : null;\n return this.currentNode;\n }\n}\n","import {performance} from '../../commonjs/perf_hooks.cjs';\n\nimport {DOCUMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, SVG_NAMESPACE} from '../shared/constants.js';\n\nimport {\n CUSTOM_ELEMENTS, DOM_PARSER, GLOBALS, IMAGE, MUTATION_OBSERVER,\n DOCTYPE, END, NEXT, MIME, EVENT_TARGET, UPGRADE\n} from '../shared/symbols.js';\n\nimport {Facades, illegalConstructor} from '../shared/facades.js';\nimport {HTMLClasses} from '../shared/html-classes.js';\nimport {Mime} from '../shared/mime.js';\nimport {knownSiblings} from '../shared/utils.js';\nimport {assign, create, defineProperties, setPrototypeOf} from '../shared/object.js';\n\nimport {NonElementParentNode} from '../mixin/non-element-parent-node.js';\n\nimport {SVGElement} from '../svg/element.js';\n\nimport {Attr} from './attr.js';\nimport {Comment} from './comment.js';\nimport {CustomElementRegistry} from './custom-element-registry.js';\nimport {CustomEvent} from './custom-event.js';\nimport {DocumentFragment} from './document-fragment.js';\nimport {DocumentType} from './document-type.js';\nimport {Element} from './element.js';\nimport {Event} from './event.js';\nimport {EventTarget} from './event-target.js';\nimport {InputEvent} from './input-event.js';\nimport {ImageClass} from './image.js';\nimport {MutationObserverClass} from './mutation-observer.js';\nimport {NamedNodeMap} from './named-node-map.js';\nimport {NodeList} from './node-list.js';\nimport {Range} from './range.js';\nimport {Text} from './text.js';\nimport {TreeWalker} from './tree-walker.js';\n\nconst query = (method, ownerDocument, selectors) => {\n let {[NEXT]: next, [END]: end} = ownerDocument;\n return method.call({ownerDocument, [NEXT]: next, [END]: end}, selectors);\n};\n\nconst globalExports = assign(\n {},\n Facades,\n HTMLClasses,\n {\n CustomEvent,\n Event,\n EventTarget,\n InputEvent,\n NamedNodeMap,\n NodeList\n }\n);\n\nconst window = new WeakMap;\n\n/**\n * @implements globalThis.Document\n */\nexport class Document extends NonElementParentNode {\n constructor(type) {\n super(null, '#document', DOCUMENT_NODE);\n this[CUSTOM_ELEMENTS] = {active: false, registry: null};\n this[MUTATION_OBSERVER] = {active: false, class: null};\n this[MIME] = Mime[type];\n /** @type {DocumentType} */\n this[DOCTYPE] = null;\n this[DOM_PARSER] = null;\n this[GLOBALS] = null;\n this[IMAGE] = null;\n this[UPGRADE] = null;\n }\n\n /**\n * @type {globalThis.Document['defaultView']}\n */\n get defaultView() {\n if (!window.has(this))\n window.set(this, new Proxy(globalThis, {\n set: (target, name, value) => {\n switch (name) {\n case 'addEventListener':\n case 'removeEventListener':\n case 'dispatchEvent':\n this[EVENT_TARGET][name] = value;\n break;\n default:\n target[name] = value;\n break;\n }\n return true;\n },\n get: (globalThis, name) => {\n switch (name) {\n case 'addEventListener':\n case 'removeEventListener':\n case 'dispatchEvent':\n if (!this[EVENT_TARGET]) {\n const et = this[EVENT_TARGET] = new EventTarget;\n et.dispatchEvent = et.dispatchEvent.bind(et);\n et.addEventListener = et.addEventListener.bind(et);\n et.removeEventListener = et.removeEventListener.bind(et);\n }\n return this[EVENT_TARGET][name];\n case 'document':\n return this;\n /* c8 ignore start */\n case 'navigator':\n return {\n userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36'\n };\n /* c8 ignore stop */\n case 'window':\n return window.get(this);\n case 'customElements':\n if (!this[CUSTOM_ELEMENTS].registry)\n this[CUSTOM_ELEMENTS] = new CustomElementRegistry(this);\n return this[CUSTOM_ELEMENTS];\n case 'performance':\n return performance;\n case 'DOMParser':\n return this[DOM_PARSER];\n case 'Image':\n if (!this[IMAGE])\n this[IMAGE] = ImageClass(this);\n return this[IMAGE];\n case 'MutationObserver':\n if (!this[MUTATION_OBSERVER].class)\n this[MUTATION_OBSERVER] = new MutationObserverClass(this);\n return this[MUTATION_OBSERVER].class;\n }\n return (this[GLOBALS] && this[GLOBALS][name]) ||\n globalExports[name] ||\n globalThis[name];\n }\n }));\n return window.get(this);\n }\n\n get doctype() {\n const docType = this[DOCTYPE];\n if (docType)\n return docType;\n const {firstChild} = this;\n if (firstChild && firstChild.nodeType === DOCUMENT_TYPE_NODE)\n return (this[DOCTYPE] = firstChild);\n return null;\n }\n\n set doctype(value) {\n if (/^([a-z:]+)(\\s+system|\\s+public(\\s+\"([^\"]+)\")?)?(\\s+\"([^\"]+)\")?/i.test(value)) {\n const {$1: name, $4: publicId, $6: systemId} = RegExp;\n this[DOCTYPE] = new DocumentType(this, name, publicId, systemId);\n knownSiblings(this, this[DOCTYPE], this[NEXT]);\n }\n }\n\n get documentElement() {\n return this.firstElementChild;\n }\n\n get isConnected() { return true; }\n\n /**\n * @protected\n */\n _getParent() {\n return this[EVENT_TARGET];\n }\n\n createAttribute(name) { return new Attr(this, name); }\n createComment(textContent) { return new Comment(this, textContent); }\n createDocumentFragment() { return new DocumentFragment(this); }\n createDocumentType(name, publicId, systemId) { return new DocumentType(this, name, publicId, systemId); }\n createElement(localName) { return new Element(this, localName); }\n createRange() {\n const range = new Range;\n range.commonAncestorContainer = this;\n return range;\n }\n createTextNode(textContent) { return new Text(this, textContent); }\n createTreeWalker(root, whatToShow = -1) { return new TreeWalker(root, whatToShow); }\n createNodeIterator(root, whatToShow = -1) { return this.createTreeWalker(root, whatToShow); }\n\n createEvent(name) {\n const event = create(name === 'Event' ? new Event('') : new CustomEvent(''));\n event.initEvent = event.initCustomEvent = (\n type,\n canBubble = false,\n cancelable = false,\n detail\n ) => {\n defineProperties(event, {\n type: {value: type},\n canBubble: {value: canBubble},\n cancelable: {value: cancelable},\n detail: {value: detail}\n });\n };\n return event;\n }\n\n cloneNode(deep = false) {\n const {\n constructor,\n [CUSTOM_ELEMENTS]: customElements,\n [DOCTYPE]: doctype\n } = this;\n const document = new constructor();\n document[CUSTOM_ELEMENTS] = customElements;\n if (deep) {\n const end = document[END];\n const {childNodes} = this;\n for (let {length} = childNodes, i = 0; i < length; i++)\n document.insertBefore(childNodes[i].cloneNode(true), end);\n if (doctype)\n document[DOCTYPE] = childNodes[0];\n }\n return document;\n }\n\n importNode(externalNode) {\n // important: keep the signature length as *one*\n // or it would behave like old IE or Edge with polyfills\n const deep = 1 < arguments.length && !!arguments[1];\n const node = externalNode.cloneNode(deep);\n const {[CUSTOM_ELEMENTS]: customElements} = this;\n const {active} = customElements;\n const upgrade = element => {\n const {ownerDocument, nodeType} = element;\n element.ownerDocument = this;\n if (active && ownerDocument !== this && nodeType === ELEMENT_NODE)\n customElements.upgrade(element);\n };\n upgrade(node);\n if (deep) {\n switch (node.nodeType) {\n case ELEMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE: {\n let {[NEXT]: next, [END]: end} = node;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE)\n upgrade(next);\n next = next[NEXT];\n }\n break;\n }\n }\n }\n return node;\n }\n\n toString() { return this.childNodes.join(''); }\n\n querySelector(selectors) {\n return query(super.querySelector, this, selectors);\n }\n\n querySelectorAll(selectors) {\n return query(super.querySelectorAll, this, selectors);\n }\n\n /* c8 ignore start */\n getElementsByTagNameNS(_, name) {\n return this.getElementsByTagName(name);\n }\n createAttributeNS(_, name) {\n return this.createAttribute(name);\n }\n createElementNS(nsp, localName, options) {\n return nsp === SVG_NAMESPACE ?\n new SVGElement(this, localName, null) :\n this.createElement(localName, options);\n }\n /* c8 ignore stop */\n}\n\nsetPrototypeOf(\n globalExports.Document = function Document() {\n illegalConstructor();\n },\n Document\n).prototype = Document.prototype;\n","import {DOMParser} from './dom/parser.js';\nimport {Document as _Document} from './interface/document.js';\n\nimport {illegalConstructor} from './shared/facades.js';\nimport {setPrototypeOf} from './shared/object.js';\nexport {parseJSON, toJSON} from './shared/parse-json.js';\n\nexport * from './shared/facades.js';\nexport * from './shared/html-classes.js';\n\nexport {DOMParser};\n\nexport {CustomEvent} from './interface/custom-event.js';\nexport {Event} from './interface/event.js';\nexport {EventTarget} from './interface/event-target.js';\nexport {InputEvent} from './interface/input-event.js';\nexport {NodeList} from './interface/node-list.js';\nexport {NodeFilter} from './interface/node-filter.js';\n\nexport const parseHTML = (html, globals = null) => (new DOMParser).parseFromString(\n html, 'text/html', globals\n).defaultView;\n\nexport function Document() {\n illegalConstructor();\n}\n\nsetPrototypeOf(Document, _Document).prototype = _Document.prototype;\n","import { parseHTML } from \"linkedom\";\n\n/**\n * @param { String } string\n * @return HTMLDocument\n */\nexport function createDocumentFromString(string) {\n const parser = parseHTML(string);\n return parser.document;\n}\n\n/**\n * creates an array of parent elements sorted from closest parent of node to furthest parent of node.\n * inclusive of the element matching `condition`\n *\n * @param { HTMLElement } node\n * @param { Function } condition\n * @returns { HTMLElement[] } array of parent elements\n */\n\nexport function parentsThrough(node, condition) {\n const breakOnCondition = condition && typeof condition == \"function\";\n\n let parent = node.parentNode;\n // Escape hatch for development mode\n\n const parents = [];\n while (parent && parent.tagName !== \"BODY\") {\n parents.push(parent);\n\n if (breakOnCondition && condition(parent)) {\n return parents;\n }\n if (parent.parentNode?.id === \"svelte\") {\n parent = parent.parentNode.parentNode;\n }\n parent = parent.parentNode;\n }\n return parents;\n}\n\n/**\n * receives a string and strips its non alphanumeric characters\n *\n * @param { String } text\n * @param { String } id\n * @return a lowercase alphanumeric string\n */\nexport function textToId(text) {\n const spaces = new RegExp(/\\s/g);\n const anythingButSpacesAndLetters = /[^\\sA-Za-z0-9]/g;\n const punctuationToStrip = new RegExp(anythingButSpacesAndLetters);\n const id = text?.toLowerCase().replace(punctuationToStrip, \"\").replace(spaces, \"-\");\n return id;\n}\n\nexport function hasData(onNode, key) {\n if (!onNode) {\n return false;\n }\n if (!onNode.dataset) {\n return false;\n }\n return onNode.dataset[key] !== undefined;\n}\n\nexport function copyElement({ element, elementType, textContent, id, rootNode = document }) {\n if (!elementType) {\n console.error(\"no elementType provided to copyElement\");\n return;\n }\n const newElement = rootNode.createElement(elementType);\n [...element.attributes].forEach(({ name, value }) => {\n newElement.setAttribute(name, value);\n });\n newElement.textContent = textContent;\n newElement.id = id;\n\n return newElement;\n}\n\nexport function clickOutside(element, callbackFunction) {\n function onClick(event) {\n if (!element.contains(event.target)) {\n callbackFunction(event);\n }\n }\n\n document.body.addEventListener(\"click\", onClick);\n\n return {\n update(newCallbackFunction) {\n callbackFunction = newCallbackFunction;\n },\n destroy() {\n document.body.removeEventListener(\"click\", onClick);\n }\n };\n}\n\nexport function elementIsFullyInViewport(element) {\n const elementRect = element.getBoundingClientRect();\n const headerOffset =\n document.documentElement.style.getPropertyValue(\"--scroll-header-padding\") ?? 0;\n return (\n elementRect.top >= parseInt(headerOffset) &&\n elementRect.left >= 0 &&\n elementRect.bottom <= window.innerHeight &&\n elementRect.right <= window.innerWidth\n );\n}\n","<script>\n import { marked } from \"marked\";\n import { renderSanitizedHTML } from \"$lib/utilities\";\n import { isExternalUrl, correctedUrl } from \"$lib/utilities/url-helpers\";\n import { textToId } from \"$lib/utilities/dom-helpers\";\n\n import ExternalLinkLabel from \"$lib/components/ExternalLinkLabel.svelte\";\n import { page } from \"$app/stores\";\n import { onMount } from \"svelte\";\n\n export let input;\n export let id;\n let clazz = \"\";\n export { clazz as class };\n\n let isExternal = false;\n\n let externalLinks = {};\n let origin;\n\n $: origin = $page.url?.origin;\n\n marked.use({\n extensions: [\n {\n name: \"strong\",\n renderer(token) {\n return `<span class=\"font-bold !p-0\">${token.text}</span>`;\n }\n },\n {\n name: \"link\",\n renderer(token) {\n let href = token.href;\n let text = token.text;\n isExternal = isExternalUrl(href, origin);\n let linkToRender = correctedUrl(href);\n\n if (isExternal) {\n const externalId = `markdown-link-${id}` || `markdown-link-${textToId(text)}`;\n externalLinks[externalId] = text;\n\n return `<a\n id=\"${externalId}\"\n class=\"btn-link !p-0 markdown-external no-underline center\"\n data-sveltekit-reload\n href=\"${linkToRender}\"\n aria-haspopup=\"false\"\n aria-expanded=\"false\"\n target=\"_blank\" \n rel=\"noopener noreferrer\"\n ></a>`;\n } else {\n return `<a\n id=\"${id}\"\n class=\"btn-link !p-0\"\n data-sveltekit-reload\n href=\"${linkToRender}\"\n >${text}</a>`;\n }\n }\n }\n ]\n });\n\n marked.Renderer.prototype.paragraph = (text) => {\n return `<p class='!p-0'>${text}</p>`;\n };\n\n let htmlText = renderSanitizedHTML(input);\n\n onMount(() => {\n Object.keys(externalLinks).forEach((l) => {\n let link = document.getElementById(l);\n if (link.classList.contains(\"markdown-external\")) {\n link.classList.remove(\"markdown-external\");\n\n new ExternalLinkLabel({\n target: link,\n props: { text: externalLinks[l], iconClass: \"!inline align-top\" }\n });\n }\n });\n });\n</script>\n\n{#if input}\n <div class={clazz} {id}>\n <!-- eslint-disable-next-line svelte/no-at-html-tags -->\n {@html htmlText}\n </div>\n{/if}\n","<script>\n import { fade } from \"svelte/transition\";\n import { buildSrc, srcSetFromWidths, sizesForBreakpoints } from \"$lib/utilities\";\n import Markdown from \"$lib/components/Markdown.svelte\";\n\n // Deprecated in favor of eagerload\n export const preload = false;\n\n // Required\n export let asset;\n export let alt;\n export let id;\n\n // With Defaults\n export let containerClass = \"\";\n export let containerElement = \"figure\";\n export let elementClass = \"\";\n export let caption = \"\";\n\n const ariaId = caption ? `img-${id}` : null;\n const childElement = containerElement === \"figure\" ? \"figcaption\" : \"div\";\n\n export let resizeParams = {};\n export let dimensions = {};\n\n // Responsive Images flags.\n export let eagerload = false;\n export let responsive = false;\n\n export let widthsAt;\n\n // A sensible array of widths for srcset.\n const srcsetWidths = [180, 360, 420, 720, 850, 1250, 1670, 3200];\n $: src = buildSrc(asset, resizeParams);\n\n $: srcset = responsive\n ? srcSetFromWidths(asset?.fields?.file?.url, srcsetWidths, resizeParams)\n : undefined;\n const sizes = responsive ? sizesForBreakpoints(widthsAt) : undefined;\n</script>\n\n<svelte:element this={containerElement} class={containerClass} aria-labelledby={ariaId}>\n <img\n class={elementClass}\n {...dimensions}\n {src}\n {srcset}\n {sizes}\n {alt}\n loading={eagerload ? \"eager\" : \"lazy\"}\n in:fade\n />\n {#if caption}\n <svelte:element this={childElement} id={ariaId} class=\"pt-16 lg:pt-32 px-24 lg:px-72\">\n <div class=\"border-l-2 border-neutral-300 pl-24\">\n <Markdown input={caption} id=\"markdown-caption-${id}\" />\n </div>\n </svelte:element>\n {/if}\n</svelte:element>\n","<script>\n import { getContext } from \"svelte\";\n import Image from \"$lib/components/Image.svelte\";\n import { altTextToDisplay } from \"$lib/utilities\";\n\n export let containerClass = \"\";\n export let elementClass = \"rounded-5\";\n export let data;\n\n export let displayCaption = true;\n export let resizeParams = {};\n export let dimensions = {};\n\n // Deprecated in favor of eagerload\n export let preload = false;\n\n //Ordinarily we just use the context, but we need to override this\n //in some cases like featured images on our templates\n export let containerized = getContext(\"containerized\");\n\n // Image sizes (widths) for available breakpoints.\n // These can be set using any unit, but we recommend using vw (50vw, 100vw, etc.)\n // If you don't set these, the image will be full width at all breakpoints.\n export let lg = \"75vw\";\n export let md;\n export let sm;\n\n // Pass through following a more conventional naming convention\n export let eagerload = preload;\n // Responsive flag\n export let responsive = true;\n\n export let widthClass = \"\";\n // These don't do much other than provide the browser with\n // the correct aspect ratio for the image. But we allow\n // the user to override them if they want (e.g., if we do\n // some cropping via our image service)\n $: imageDimensions = {\n width: data.fields.imageAsset?.fields?.file?.details?.image?.width,\n height: data.fields.imageAsset?.fields?.file?.details?.image?.height,\n ...dimensions\n };\n\n $: widthClass = imageDimensions.width < 806 && !containerized ? \" md:max-w-806 mx-auto\" : \"\";\n\n export let altText = altTextToDisplay(data.fields.altText);\n altText = !data.fields?.imageIsDecorative ? altText : \"\";\n</script>\n\n<div class:embedded-content={!containerized} class:containerized-image={containerized}>\n <Image\n id={data.sys?.id}\n containerClass={`${containerClass} ${widthClass}`}\n {elementClass}\n asset={data.fields.imageAsset}\n alt={altText}\n caption={displayCaption ? data.fields.caption : null}\n {eagerload}\n {resizeParams}\n dimensions={imageDimensions}\n {responsive}\n widthsAt={{ lg, md, sm }}\n />\n</div>\n","/*! @license DOMPurify 3.0.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.5/LICENSE */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.DOMPurify = factory());\n})(this, (function () { 'use strict';\n\n const {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor\n } = Object;\n let {\n freeze,\n seal,\n create\n } = Object; // eslint-disable-line import/no-mutable-exports\n\n let {\n apply,\n construct\n } = typeof Reflect !== 'undefined' && Reflect;\n\n if (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n }\n\n if (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n }\n\n if (!seal) {\n seal = function seal(x) {\n return x;\n };\n }\n\n if (!construct) {\n construct = function construct(Func, args) {\n return new Func(...args);\n };\n }\n\n const arrayForEach = unapply(Array.prototype.forEach);\n const arrayPop = unapply(Array.prototype.pop);\n const arrayPush = unapply(Array.prototype.push);\n const stringToLowerCase = unapply(String.prototype.toLowerCase);\n const stringToString = unapply(String.prototype.toString);\n const stringMatch = unapply(String.prototype.match);\n const stringReplace = unapply(String.prototype.replace);\n const stringIndexOf = unapply(String.prototype.indexOf);\n const stringTrim = unapply(String.prototype.trim);\n const regExpTest = unapply(RegExp.prototype.test);\n const typeErrorCreate = unconstruct(TypeError);\n function unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return apply(func, thisArg, args);\n };\n }\n function unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return construct(func, args);\n };\n }\n /* Add properties to a lookup table */\n\n function addToSet(set, array, transformCaseFunc) {\n var _transformCaseFunc;\n\n transformCaseFunc = (_transformCaseFunc = transformCaseFunc) !== null && _transformCaseFunc !== void 0 ? _transformCaseFunc : stringToLowerCase;\n\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n let l = array.length;\n\n while (l--) {\n let element = array[l];\n\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n }\n /* Shallow clone an object */\n\n function clone(object) {\n const newObject = create(null);\n\n for (const [property, value] of entries(object)) {\n newObject[property] = value;\n }\n\n return newObject;\n }\n /* This method automatically checks if the prop is function\n * or getter and behaves accordingly. */\n\n function lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n }\n\n const html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']); // SVG\n\n const svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n const svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']); // List of SVG elements that are disallowed by default.\n // We still need to know them so that we can do namespace\n // checks properly in case one wants to add them to\n // allow-list.\n\n const svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n const mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']); // Similarly to SVG, we want to know all MathML elements,\n // even those that we disallow by default.\n\n const mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n const text = freeze(['#text']);\n\n const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\n const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n\n const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\n const TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\n const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n\n const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n\n const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n );\n const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\n const ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n );\n const DOCTYPE_NAME = seal(/^html$/i);\n\n var EXPRESSIONS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n MUSTACHE_EXPR: MUSTACHE_EXPR,\n ERB_EXPR: ERB_EXPR,\n TMPLIT_EXPR: TMPLIT_EXPR,\n DATA_ATTR: DATA_ATTR,\n ARIA_ATTR: ARIA_ATTR,\n IS_ALLOWED_URI: IS_ALLOWED_URI,\n IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE: ATTR_WHITESPACE,\n DOCTYPE_NAME: DOCTYPE_NAME\n });\n\n const getGlobal = () => typeof window === 'undefined' ? null : window;\n /**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {HTMLScriptElement} purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\n\n\n const _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n } // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n\n\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n };\n\n function createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n const DOMPurify = root => createDOMPurify(root);\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n\n\n DOMPurify.version = '3.0.5';\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n\n const originalDocument = window.document;\n const currentScript = originalDocument.currentScript;\n let {\n document\n } = window;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes\n } = window;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode'); // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n let trustedTypesPolicy;\n let emptyHTML = '';\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName\n } = document;\n const {\n importNode\n } = originalDocument;\n let hooks = {};\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE\n } = EXPRESSIONS;\n let {\n IS_ALLOWED_URI: IS_ALLOWED_URI$1\n } = EXPRESSIONS;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n /* Allowed attribute names */\n\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n /*\n * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n\n let CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n\n let FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n\n let FORBID_ATTR = null;\n /* Decide if ARIA attributes are okay */\n\n let ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n\n let ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n\n let SAFE_FOR_TEMPLATES = false;\n /* Decide if document with <html>... should be returned */\n\n let WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n\n let SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n\n let FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n\n let RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n\n let RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n\n let RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n\n let SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n\n let KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n\n let IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n\n let USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n /* Parsing of strict XHTML documents */\n\n let PARSER_MEDIA_TYPE;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc;\n /* Keep a reference to config to pass to hooks */\n\n let CONFIG = null;\n /* Ideally, do not touch anything below this line */\n\n /* ______________________________________________ */\n\n const formElement = document.createElement('form');\n\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n\n\n const _parseConfig = function _parseConfig(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n\n\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n\n\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE = // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE; // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = 'ALLOWED_NAMESPACES' in cfg ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), // eslint-disable-line indent\n cfg.ADD_URI_SAFE_ATTR, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), // eslint-disable-line indent\n cfg.ADD_DATA_URI_TAGS, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n\n\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, [...text]);\n ALLOWED_ATTR = [];\n\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Merge configuration parameters */\n\n\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n\n\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n\n\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n\n\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n } // Overwrite existing TrustedTypes policy.\n\n\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY; // Sign local variables required by `sanitize`.\n\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n } // If creating the internal policy succeeded sign internal variables.\n\n\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n } // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n\n\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n const MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n const HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']); // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n\n const ALL_SVG_TAGS = addToSet({}, svg$1);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n const ALL_MATHML_TAGS = addToSet({}, mathMl$1);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n /**\n *\n *\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element); // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n } // The only way to switch from MathML to SVG is via`\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n\n\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n } // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n\n\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n } // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n\n\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n } // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n\n\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n } // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n\n\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n } // For XHTML and XML documents that support custom namespaces\n\n\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n } // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n\n\n return false;\n };\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n\n\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n node.remove();\n }\n };\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n\n\n const _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n\n node.removeAttribute(name); // We void attribute values for unremovable \"is\"\" attributes\n\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n\n\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc;\n let leadingWhitespace;\n\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n\n const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n\n\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {// Syntax error if dirtyPayload is invalid xml\n }\n }\n\n const body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n\n\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n\n\n const _createIterator = function _createIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n\n\n const _isClobbered = function _isClobbered(elm) {\n return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function' || typeof elm.hasChildNodes !== 'function');\n };\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n\n\n const _isNode = function _isNode(object) {\n return typeof Node === 'object' ? object instanceof Node : object && typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n };\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n\n\n const _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n\n\n const _sanitizeElements = function _sanitizeElements(currentNode) {\n let content;\n /* Execute a hook if present */\n\n _executeHook('beforeSanitizeElements', currentNode, null);\n /* Check if element is clobbered or can clobber */\n\n\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Now let's check the element's type and name */\n\n\n const tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n\n _executeHook('uponSanitizeElement', currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n\n\n if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Remove element if anything forbids its presence */\n\n\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _basicCustomElementTest(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false;\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) return false;\n }\n /* Keep content except for bad-listed elements */\n\n\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n\n for (let i = childCount - 1; i >= 0; --i) {\n parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));\n }\n }\n }\n\n _forceRemove(currentNode);\n\n return true;\n }\n /* Check whether element has a valid namespace */\n\n\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Make sure that older browsers don't get fallback-tag mXSS */\n\n\n if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Sanitize element content to be template-safe */\n\n\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n /* Get the element's text content */\n content = currentNode.textContent;\n content = stringReplace(content, MUSTACHE_EXPR, ' ');\n content = stringReplace(content, ERB_EXPR, ' ');\n content = stringReplace(content, TMPLIT_EXPR, ' ');\n\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n\n\n _executeHook('afterSanitizeElements', currentNode, null);\n\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param {string} lcTag Lowercase tag name of containing element.\n * @param {string} lcName Lowercase attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n\n\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n\n\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if ( // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _basicCustomElementTest(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n return false;\n } else ;\n\n return true;\n };\n /**\n * _basicCustomElementCheck\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n * @param {string} tagName name of the tag of the node to sanitize\n */\n\n\n const _basicCustomElementTest = function _basicCustomElementTest(tagName) {\n return tagName.indexOf('-') > 0;\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param {Node} currentNode to sanitize\n */\n\n\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n let attr;\n let value;\n let lcName;\n let l;\n /* Execute a hook if present */\n\n _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n const {\n attributes\n } = currentNode;\n /* Check if we have attributes; if not we might have a text node */\n\n if (!attributes) {\n return;\n }\n\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR\n };\n l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n\n while (l--) {\n attr = attributes[l];\n const {\n name,\n namespaceURI\n } = attr;\n value = name === 'value' ? attr.value : stringTrim(attr.value);\n lcName = transformCaseFunc(name);\n /* Execute a hook if present */\n\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n\n _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n\n value = hookEvent.attrValue;\n /* Did the hooks approve of the attribute? */\n\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Remove attribute */\n\n\n _removeAttribute(name, currentNode);\n /* Did the hooks approve of the attribute? */\n\n\n if (!hookEvent.keepAttr) {\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n\n\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n\n\n if (SAFE_FOR_TEMPLATES) {\n value = stringReplace(value, MUSTACHE_EXPR, ' ');\n value = stringReplace(value, ERB_EXPR, ' ');\n value = stringReplace(value, TMPLIT_EXPR, ' ');\n }\n /* Is `value` valid for this attribute? */\n\n\n const lcTag = transformCaseFunc(currentNode.nodeName);\n\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n\n\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode); // Prefix the value and later re-create the attribute with the sanitized value\n\n\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Handle attributes that require Trusted Types */\n\n\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n\n case 'TrustedScriptURL':\n {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n\n\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n arrayPop(DOMPurify.removed);\n } catch (_) {}\n }\n /* Execute a hook if present */\n\n\n _executeHook('afterSanitizeAttributes', currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param {DocumentFragment} fragment to iterate over recursively\n */\n\n\n const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n let shadowNode;\n\n const shadowIterator = _createIterator(fragment);\n /* Execute a hook if present */\n\n\n _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHook('uponSanitizeShadowNode', shadowNode, null);\n /* Sanitize tags and elements */\n\n\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n /* Deep shadow DOM detected */\n\n\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n /* Check attributes, sanitize if necessary */\n\n\n _sanitizeAttributes(shadowNode);\n }\n /* Execute a hook if present */\n\n\n _executeHook('afterSanitizeShadowDOM', fragment, null);\n };\n /**\n * Sanitize\n * Public method providing core sanitation functionality\n *\n * @param {String|Node} dirty string or DOM node\n * @param {Object} configuration object\n */\n // eslint-disable-next-line complexity\n\n\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body;\n let importedNode;\n let currentNode;\n let returnNode;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n\n IS_EMPTY_INPUT = !dirty;\n\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n /* Stringify, in case dirty is an object */\n\n\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n /* Return dirty HTML if DOMPurify cannot run */\n\n\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n /* Assign config vars */\n\n\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n\n\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n\n if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n\n\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n\n\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n\n\n const nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n\n\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n /* Shadow DOM detected, sanitize it */\n\n\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n /* Check attributes, sanitize if necessary */\n\n\n _sanitizeAttributes(currentNode);\n }\n /* If we sanitized `dirty` in-place, return it. */\n\n\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n\n\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n\n\n if (SAFE_FOR_TEMPLATES) {\n serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR, ' ');\n serializedHTML = stringReplace(serializedHTML, ERB_EXPR, ' ');\n serializedHTML = stringReplace(serializedHTML, TMPLIT_EXPR, ' ');\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n /**\n * Public method to set the configuration once\n * setConfig\n *\n * @param {Object} cfg configuration object\n */\n\n\n DOMPurify.setConfig = function (cfg) {\n _parseConfig(cfg);\n\n SET_CONFIG = true;\n };\n /**\n * Public method to remove the configuration\n * clearConfig\n *\n */\n\n\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n /**\n * Public method to check if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n * isValidAttribute\n *\n * @param {string} tag Tag name of containing element.\n * @param {string} attr Attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n */\n\n\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n /**\n * AddHook\n * Public method to add DOMPurify hooks\n *\n * @param {String} entryPoint entry point for the hook to add\n * @param {Function} hookFunction function to execute\n */\n\n\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n /**\n * RemoveHook\n * Public method to remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if more are present)\n *\n * @param {String} entryPoint entry point for the hook to remove\n * @return {Function} removed(popped) hook\n */\n\n\n DOMPurify.removeHook = function (entryPoint) {\n if (hooks[entryPoint]) {\n return arrayPop(hooks[entryPoint]);\n }\n };\n /**\n * RemoveHooks\n * Public method to remove all DOMPurify hooks at a given entryPoint\n *\n * @param {String} entryPoint entry point for the hooks to remove\n */\n\n\n DOMPurify.removeHooks = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n /**\n * RemoveAllHooks\n * Public method to remove all DOMPurify hooks\n *\n */\n\n\n DOMPurify.removeAllHooks = function () {\n hooks = {};\n };\n\n return DOMPurify;\n }\n\n var purify = createDOMPurify();\n\n return purify;\n\n}));\n//# sourceMappingURL=purify.js.map\n","module.exports = window.DOMPurify || (window.DOMPurify = require('dompurify').default || require('dompurify'));","import { parse } from \"marked\";\nimport DOMPurify from \"isomorphic-dompurify\";\n\nexport function renderSanitizedHTML(input) {\n if (!input) {\n return;\n }\n\n const rawHtml = parse(input);\n return DOMPurify.sanitize(rawHtml, { ADD_ATTR: [\"target\"] });\n}\n","const CONTENTFUL_API_DEFAULTS = {\n q: 75,\n w: 1014\n};\n\nexport function contentfulImageUrlFor(url, paramOverrides = {}) {\n if (!url) {\n throw new Error(\"Asset is missing a url\");\n }\n\n // default to `webp` except for pngs and svgs\n const fm = url.endsWith(\".png\") || url.endsWith(\".svg\") ? \"\" : \"webp\";\n\n const apiParams = { ...CONTENTFUL_API_DEFAULTS, fm, ...paramOverrides };\n\n const params = new URLSearchParams();\n\n for (const key of Object.keys(apiParams)) {\n params.set(key, apiParams[key]);\n }\n\n // this is an unfortunate necessity. For some reason the `size` property\n // is not available on the params object, so we spread it and check the length.\n if ([...params].length) {\n return `${url}?${params.toString()}`;\n } else {\n return url;\n }\n}\n\nexport function buildSrc(asset, resizeParams) {\n const url = asset?.fields?.file?.url;\n if (!url) {\n return null;\n }\n\n if (!url?.startsWith(\"//images.ctfassets.net\")) {\n return url;\n }\n\n return contentfulImageUrlFor(url, resizeParams);\n}\n\n// This function is used to generate the srcset attribute for an image\n// It takes an array integers representing the widths of each image in (real) pixels\n// and generates a srcset for each.\nexport function srcSetFromWidths(url, widths = [], paramOverrides = {}) {\n if (widths.length === 0) {\n return;\n }\n\n return widths\n .map((width) => `${contentfulImageUrlFor(url, { ...paramOverrides, w: width })} ${width}w`)\n .join(\",\\n\");\n}\n\n// These values are pulled directly from our tailwind config\n// in the .tailwind.config.cjs file\nconst SCREENS = {\n sm: \"360px\",\n md: \"834px\",\n lg: \"1366px\"\n};\n\nfunction sizeForMinWidth(minWidth, size) {\n return `(min-width: ${minWidth}) ${size}`;\n}\n\nexport function sizesForBreakpoints(sizes, breakpoints = SCREENS) {\n // If there are no sizes, or all sizes are 100vw, we don't need to specify\n if (!sizes) {\n return;\n }\n if (Object.keys(sizes).length === 0) {\n return;\n }\n if (Object.values(sizes).every((size) => !size || size === \"100vw\")) {\n return;\n }\n\n // We want to control the order here because the sizes are cascading\n // and we want to make sure the smallest size is last.\n const sizeAttr = [\"lg\", \"md\", \"sm\"].flatMap((size) => {\n const minWidth = breakpoints[size];\n const sizeForWidth = sizes[size];\n\n // Ignore missing values so we can respect the cascade\n // without needing to specify all sizes\n if (!minWidth || !sizeForWidth) {\n return [];\n }\n\n return sizeForMinWidth(minWidth, sizeForWidth);\n });\n\n // Add the default size (all screen sizes < sm)\n sizeAttr.push(\"100vw\");\n\n return sizeAttr.join(\", \");\n}\n\nexport function altTextToDisplay(altText) {\n const placeholderAltValues = [\n \"placeholder\",\n \"none\",\n \"alt text missing\",\n \"gray placeholder image for qa\",\n \"missing\"\n ];\n if (altText && !placeholderAltValues.includes(altText.toLowerCase())) {\n return altText;\n } else {\n return \"\";\n }\n}\n\nexport function getImageOrientation(asset) {\n const { height, width } = asset?.fields?.file?.details?.image || {};\n\n if (!height || !width) {\n return;\n }\n\n // if the difference between height and width is within 5%, treat as square\n return height > width\n ? (height - width) / width > 0.05\n ? \"portrait\"\n : \"square\"\n : (width - height) / height > 0.05\n ? \"landscape\"\n : \"square\";\n}\n","<script>\n /* eslint-disable no-console */\n import { textToId } from \"$lib/utilities/dom-helpers\";\n\n export let idOverride = \"\";\n export let text;\n let clazz = \"\";\n export { clazz as class };\n\n const id = idOverride || textToId(text);\n const classes = `focus:underline ${clazz} block`;\n</script>\n\n<!-- This element is replaced entirely on render -->\n<span data-heading data-testid=\"heading\" class={classes} {id} tab-index={-1} {...$$restProps}>\n {text}\n</span>\n","<script>\n import { onMount } from \"svelte\";\n import Icon from \"$lib/components/Icon.svelte\";\n\n let clazz;\n export { clazz as class };\n export let iconSpacingClass = \"gap-16\";\n\n export let shareButtonsLabel = \"Share\";\n export let shareText = \"I just checked this out! You should, too!\";\n\n export let overrideURL; //Used for testing; Facebook and LinkedIn error on iFrames and Localhost\n // When this text is changed, also update the socialShare.spec.js e2e test.\n\n let socials;\n onMount(() => {\n let currentURL = overrideURL || window.location.href;\n socials = {\n // When these URLs are changed, also update the socialShare.spec.js e2e test.\n Facebook: `https://www.facebook.com/sharer/sharer.php?u=${currentURL}&src=sdkpreparse`,\n Twitter: `https://twitter.com/intent/tweet?ref_src=twsrc%5Etfw&url=${currentURL}&text=${shareText}`,\n LinkedIn: `https://www.linkedin.com/sharing/share-offsite/?url=${currentURL}`\n };\n });\n\n function openNewWindow(social, w = 312, h = 500) {\n const left = window.screen.width / 2 - w / 2 + w;\n const top = window.screen.height / 2 - h;\n\n let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,width=${w},height=${h},left=-${left},top=${top}`;\n window.open(socials[social], shareText, params);\n }\n\n const handleClick = (social) => () => openNewWindow(social);\n\n const handleKeydown = (social) => (e) => {\n if (e?.key == \"Enter\" || e?.key == \" \") {\n openNewWindow(social);\n }\n };\n\n const buttonClasses =\n \"text-black w-24 h-24 md:w-48 md:h-48 rounded-full border-2 bg-white hover:bg-neutral-100 generic-focus focus:border-none focus:drop-shadow-[0_2px_0_#98DDFB] flex flex-col\";\n</script>\n\n<div\n class={`flex flex-row items-center justify-center place-items-center gap-16 text-center ${clazz}`}\n>\n {#if shareButtonsLabel}\n <div class=\"text-black font-bold text-size-12\">{shareButtonsLabel}</div>\n {/if}\n\n {#if socials}\n <div class=\"flex {iconSpacingClass}\">\n {#each Object.keys(socials) as social}\n <button\n class={buttonClasses}\n aria-label=\"Share to {social}. Opens in a new window.\"\n on:click={handleClick(social)}\n on:keydown={handleKeydown(social)}\n >\n <Icon\n type={social.toLowerCase()}\n size=\"lg\"\n inheritSize\n class=\"pt-[15%] pb-[15%] mx-auto\"\n />\n </button>\n {/each}\n </div>\n {/if}\n</div>\n","<script context=\"module\">\n const BIG_TITLE_LENGTH_LIMIT = 25;\n const BIG_TITLE_WORD_LENGTH_LIMIT = 12;\n\n export function getPageHeadingClass(isCategoryPage, title) {\n const longTitle = title.length > BIG_TITLE_LENGTH_LIMIT;\n const containsLongWords = title.split(\" \").some((w) => w.length > BIG_TITLE_WORD_LENGTH_LIMIT);\n\n let typeStackClass = \"short-heading-1\";\n\n if (!isCategoryPage || longTitle) {\n typeStackClass = \"long-heading-1\";\n } else if (!longTitle && containsLongWords) {\n typeStackClass = \"long-heading-1 md:short-heading-1\";\n }\n return typeStackClass;\n }\n</script>\n\n<script>\n import { getContext } from \"svelte\";\n import Heading from \"../Heading.svelte\";\n\n export let title = \"\";\n\n const isCategoryPage = getContext(\"pageType\") === \"categoryPageTemplate\";\n\n let clazz = \"\";\n export { clazz as class };\n</script>\n\n<Heading\n class={`${getPageHeadingClass(isCategoryPage, title)} text-center text-neutral-900 ${clazz}`}\n text={title}\n/>\n","<script>\n export let content;\n export let link;\n\n let clazz;\n export { clazz as class };\n</script>\n\n<p data-testid=\"eyebrow\" class={`text-center text-size-16 ${clazz}`}>\n {#if link}\n <a class=\"font-extrabold generic-focus focus:text-cyan-700\" data-sveltekit-reload href={link}\n >{content}</a\n >\n {:else}\n <span class=\"font-extrabold text-neutral-600\">{content}</span>\n {/if}\n</p>\n","<script>\n import ImageComponent from \"$lib/contentTypes/ImageComponent.svelte\";\n import PageTitle from \"$lib/components/Page/PageTitle.svelte\";\n import Eyebrow from \"$lib/components/Eyebrow.svelte\";\n import SocialBar from \"$lib/components/SocialBar.svelte\";\n import Bleed from \"$lib/components/Bleed.svelte\";\n\n export let title;\n export let featuredImage = null;\n export let eyebrow = {};\n export let byline = null;\n export let parentInfo;\n export let pageRelativePathString = \"\";\n export let showSocialBar = true;\n\n let socialBarPaddingClass = \"pb-48 lg:mb-104\";\n let pageTitlePaddingClass = showSocialBar ? \"lg:pb-48 pb-24\" : \"lg:pb-72 pb-48\";\n let backgroundColorClass = \"bg-neutral-100\";\n if (featuredImage) {\n socialBarPaddingClass = \"pb-24 lg:pb-48\";\n pageTitlePaddingClass = \"pb-24 lg:pb-48\";\n }\n\n // This behavior can be overridden by specifying a breadcrumb\n if (!eyebrow.content && parentInfo) {\n eyebrow.content = parentInfo?.headline;\n // The last character of the URL will be a \"/\", so find the slash before that\n eyebrow.link =\n parentInfo?.relativeUrl ||\n pageRelativePathString.substr(\n 0,\n pageRelativePathString.lastIndexOf(\"/\", pageRelativePathString.length - 2) + 1\n );\n }\n</script>\n\n<div class=\"w-full hero\" test-id=\"hero\">\n <Bleed fullWidth fullWidthClasses={backgroundColorClass} contentClasses=\"px-24 lg:px-72\">\n <div class={`pt-48 lg:pt-72 flex flex-col ${backgroundColorClass}`}>\n <PageTitle class=\"lg:max-w-screen-lg lg:mx-auto order-2 {pageTitlePaddingClass}\" {title} />\n\n {#if eyebrow.content}\n <Eyebrow class=\"lg:pb-48 pb-24 lg:max-w-screen-lg lg:mx-auto order-1\" {...eyebrow} />\n {/if}\n\n {#if byline}\n <div class=\"lg:pb-24 pb-8 text-center lg:max-w-screen-lg lg:mx-auto order-3\">\n <!-- Byline -->\n {#if byline.author}\n <span class=\"font-bold\">{byline.author.name},</span>\n <span>{byline.author.organization}</span>\n {/if}\n <span class=\"font-bold\">{byline.publishDate}</span>\n </div>\n {/if}\n {#if showSocialBar}\n <SocialBar class={`lg:max-w-screen-lg lg:mx-auto order-4 ${socialBarPaddingClass}`} />\n {/if}\n </div>\n </Bleed>\n {#if featuredImage}\n <Bleed fullWidth fullWidthClasses=\"bg-hero lg:bg-hero-lg\" contentClasses=\"px-24 lg:px-72\">\n <div class=\"\">\n <ImageComponent\n containerClass=\"w-full place-items-center\"\n elementClass=\"object-cover w-full rounded-5 lg:max-w-screen-lg lg:m-auto\"\n data={featuredImage}\n displayCaption={false}\n containerized={true}\n lg={\"1250px\"}\n responsive\n />\n </div>\n </Bleed>\n {/if}\n</div>\n"],"names":["get_spread_update","levels","updates","update","to_null_out","accounted_for","i","o","n","key","get_spread_object","spread_props","ctx","attr","div1","div1_style_value","insert_hydration","target","div2","anchor","append_hydration","div0","current","dirty","fullWidth","$$props","fullWidthClasses","fullWidthStyles","contentClasses","svg","path","g","path0","path1","path2","svg_stroke_value","g1","g0","path3","path4","path5","path6","path7","path8","path9","type","inheritSize","sizeProp","clazz","SIZE_MAP","ICON_TYPES","Caution","ChevronDown","ChevronLeft","ChevronRight","ChevronUp","ChevronBackToTop","Check","Close","Confirm","Dollar","Download","Error","Euro","External","Facebook","Favorite","Filter","Info","Instagram","Invisible","Link","Linkedin","Menu","Minus","OfDark","Of","Plus","Pound","Store","Twitter","Visible","Yen","Youtube","size","$$invalidate","component","getUrlObject","url","isExternalUrl","currentOrigin","urlObj","targetOrigin","correctedUrl","isMissingTrailingSlash","isNotStaticFile","isRootRelative","hasNoTrailingSlash","icon_1_changes","if_block0","_a","_b","create_if_block_2","_c","_d","create_if_block_1","if_block2","create_if_block","svelte_element","svelte_element_data","svelte_element_levels","svelte_element_href_value","svelte_element_class_value","svelte_element_style_value","svelte_element_target_value","svelte_element_rel_value","create_dynamic_element","id","variant","disabled","testid","icon","dispatch","createEventDispatcher","typeProps","$page","getVariantClasses","getSizeClasses","getRippleColors","val","displayIconOnlyOnMobile","isExternal","span0","span2","span1","isolateLastWordForWrapping","text","lastWord","reducedText","word","index","array","iconSize","iconClass","textClass","singleWordWrapClass","fade","node","delay","duration","easing","linear","t","getDefaults","defaults","changeDefaults","newDefaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","escape","html","encode","unescapeTest","unescape","_","caret","edit","regex","opt","obj","name","nonWordAndColonTest","originIndependentUrl","cleanUrl","sanitize","base","href","prot","resolveUrl","baseUrls","justDomain","protocol","domain","rtrim","relativeBase","noopTest","splitCells","tableRow","count","row","match","offset","str","escaped","curr","cells","c","invert","l","suffLen","currChar","findClosingBracket","b","level","checkSanitizeDeprecation","repeatString","pattern","result","outputLink","cap","link","raw","lexer","title","token","indentCodeCompensation","matchIndentToCode","indentToCode","matchIndentInNode","indentInNode","Tokenizer$1","options","src","trimmed","top","tokens","istask","ischecked","indent","blankLine","endsWithBlankLine","line","nextLine","rawLine","itemContents","endEarly","bull","isordered","list","itemRegex","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","spacers","hasMultipleLineBreaks","tag","item","j","k","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","links","maskedSrc","prevChar","nextChar","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","hasNonSpaceChars","hasSpaceCharsOnBothEnds","mangle","prevCapZero","smartypants","block","inline","out","Lexer","Tokenizer","rules","next","leading","tabs","lastToken","cutSrc","lastParagraphClipped","extTokenizer","startIndex","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","Renderer","code","infostring","lang","quote","slugger","body","ordered","start","startatt","checked","header","content","flags","TextRenderer","Slugger","value","originalSlug","isDryRun","slug","occurenceAccumulator","Parser$2","Parser","l2","l3","cell","loose","itemBody","task","checkbox","ret","renderer","Hooks","markdown","__publicField","onError","silent","async","callback","e","msg","parseMarkdown","parser","origOpt","marked","throwError","highlight","done","err","pending","args","extensions","pack","opts","ext","prevRenderer","prop","tokenizer","prevTokenizer","hooks","prevHook","arg","walkTokens","values","childTokens","parse","CHANGED","CLASS_LIST","CUSTOM_ELEMENTS","CONTENT","DATASET","DOCTYPE","DOM_PARSER","END","EVENT_TARGET","GLOBALS","IMAGE","MIME","MUTATION_OBSERVER","NEXT","OWNER_ELEMENT","PREV","PRIVATE","SHEET","START","STYLE","UPGRADE","VALUE","htmlDecodeTree","xmlDecodeTree","decodeMap","fromCodePoint","codePoint","output","replaceCodePoint","CharCodes","TO_LOWER_BIT","BinTrieFlags","isNumber","isHexadecimalCharacter","isAsciiAlphaNumeric","isEntityInAttributeInvalidEnd","EntityDecoderState","DecodingMode","EntityDecoder","decodeTree","emitCodePoint","errors","decodeMode","end","digitCount","startIdx","char","lastCp","expectedLength","valueLength","determineBranch","consumed","getDecoder","decoder","lastIndex","len","nodeIdx","branchCount","jumpOffset","lo","hi","mid","midVal","State","isWhitespace","isEndOfTagSection","isASCIIAlpha","isHexDigit","QuoteType","Sequences","xmlMode","decodeEntities","cbs","chunk","isEnd","endOfText","actualIndex","sequence","lower","masked","entityStart","strict","endIndex","cp","formTags","pTag","tableSectionTags","ddtTags","rtpTags","openImpliesClose","voidElements","foreignContextElements","htmlIntegrationElements","reNameEnd","Parser$1","_e","data","impliesClose","element","isImplied","_f","pos","isOpenImplied","_g","_h","_j","_k","slice","ElementType","isTag","elem","Root","Text","Directive","Comment","Script","Style","Tag","CDATA","Doctype","Node$2","parent","prev","recursive","cloneNode","DataNode","Node","ProcessingInstruction","NodeWithChildren","children","attribs","isTagRaw","isCDATA","isText","isComment","isDirective","isDocument","hasChildren","cloneChildren","clone","Element","child","Document","instruction","childs","defaultOpts","DomHandler","elementCB","error","lastNode","previousSibling","xmlReplacer","xmlCodeMap","getCodePoint","encodeXML","lastIdx","getEscaper","map","escapeAttribute","escapeText","elementNames","attributeNames","unencodedElements","replaceQuotes","formatAttributes","attributes","singleTag","render","nodes","renderNode","ElementType.Root","ElementType.Doctype","ElementType.Directive","renderDirective","ElementType.Comment","renderComment","ElementType.CDATA","renderCdata","ElementType.Script","ElementType.Style","ElementType.Tag","renderTag","ElementType.Text","renderText","foreignModeIntegrationPoints","foreignElements","getOuterHTML","renderHTML","getInnerHTML","getText","textContent","innerText","getChildren","getParent","getSiblings","siblings","getAttributeValue","hasAttrib","getName","nextElementSibling","prevElementSibling","removeElement","childsIndex","replaceElement","replacement","appendChild","sibling","append","currNext","prependChild","prepend","filter","test","recurse","limit","find","nodeStack","indexStack","findOneChild","findOne","existsOne","findAll","Checks","getAttribCheck","attrib","combineFuncs","a","compileTest","funcs","testElement","getElements","getElementById","getElementsByTagName","tagName","getElementsByTagType","removeSubsets","idx","ancestor","DocumentPosition","compareDocumentPosition","nodeA","nodeB","aParents","bParents","maxIdx","sharedParent","aSibling","bSibling","uniqueSort","arr","relative","getFeed","doc","feedRoot","getOneElement","isValidFeed","getAtomFeed","getRssFeed","feed","entry","getMediaElements","addConditionally","description","fetch","pubDate","updated","MEDIA_KEYS_STRING","MEDIA_KEYS_INT","where","media","parseDocument","handler","parseDOM","createDomStream","elementCallback","parseFeedDefaultOptions","parseFeed","NODE_END","ELEMENT_NODE","ATTRIBUTE_NODE","TEXT_NODE","COMMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","BLOCK_ELEMENTS","SHOW_ALL","SHOW_ELEMENT","SHOW_TEXT","SHOW_COMMENT","DOCUMENT_POSITION_DISCONNECTED","DOCUMENT_POSITION_PRECEDING","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_CONTAINS","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC","SVG_NAMESPACE","assign","create","defineProperties","entries","getOwnPropertyDescriptors","keys","setPrototypeOf","$String","getEnd","ignoreCase","ownerDocument","knownAdjacent","knownBoundaries","knownSegment","knownSiblings","localCase","localName","setAdjacent","shadowRoots","reactive","Classes","customElements","attributeChangedCallback","attributeName","oldValue","newValue","createTrigger","method","isConnected","info","triggerConnected","connectedCallback","triggerDisconnected","disconnectedCallback","CustomElementRegistry","Class","registry","waiting","extend","check","resolve","ce","HTMLParser2","self","active","attribute","parseFromString","document","isHTML","markupLanguage","ownerSVGElement","htmlClasses","registerHTMLClass","names","__viteBrowserExternal","performance","require$$0","performance_1","perf_hooks","loopSegment","json","attrAsJSON","characterDataAsJSON","elementAsJSON","documentTypeAsJSON","last","nonElementAsJSON","publicId","systemId","createRecord","addedNodes","removedNodes","queueAttribute","observer","attributeFilter","attributeOldValue","records","scheduled","observers","childList","subtree","moCallback","parentNode","characterData","MutationObserverClass","emptyAttributes","setAttribute","moAttributes","ceAttributes","removeAttribute","booleanAttribute","numericAttribute","stringAttribute","wm","event","listener","invokeListeners","currentTarget","listeners","DOMEventTarget","NodeList","getParentNodeCount","EventTarget","nodeType","location","newNode","referenceNode","newChild","oldChild","other","childNodes","aNodes","bNodes","root","QUOTE","Attr","String","ownerElement","parentElement","nextSibling","previousElementSibling","asFragment","fragment","before","after","replaceWith","remove","CharacterData","boolbase","SelectorType","AttributeAction","reName","reEscape","actionTypes","unpackPseudos","isTraversal","selector","stripQuotesFromPseudos","funescape","escapedWhitespace","high","unescapeCSS","isQuote","subselects","parseSelector","selectorIndex","stripWhitespace","readValueWithParenthesis","counter","isEscaped","slashCount","ensureNotTraversal","addTraversal","addSpecialAttribute","action","finalizeSubselector","loop","firstChar","namespace","possibleAction","sectionEnd","valueStart","forceIgnore","attributeSelector","quot","procedure","sortByProcedure","procs","getProcedure","procNew","proc","d","reChars","escapeRegex","caseInsensitiveAttributes","shouldIgnoreCase","attributeRules","adapter","whitespace","ZERO","NINE","formula","sign","readSign","number","readNumber","skipWhitespace","compile","parsed","absA","bMod","nthCheck","getChildFunc","filters","itext","rule","equals","func","getNCheck","currentSibling","_rule","context","dynamicStatePseudo","pseudos","firstChild","elemName","verifyPseudoArgs","subselect","argIndex","aliases","PLACEHOLDER_ELEMENT","ensureIsTag","getNextSiblings","elemIndex","copyOptions","is","compileToken","_context","s","compiled","hasElement","shouldTestNextSiblings","nextElements","compilePseudoSelector","userPseudo","stringPseudo","alias","pseudo","getElementParent","compileGeneralSelector","isFalseCache","previous","lastElement","compileUnsafe","includesScopePseudo","DESCENDANT_TOKEN","FLEXIBLE_DESCENDANT_TOKEN","SCOPE_TOKEN","absolutize","hasContext","sortRules","isArrayContext","finalContext","query","first","second","compileRules","reduceRules","defaultEquals","defaultOptions","DomUtils","convertOptionFormats","wrapCompile","compileRaw","isArray","elements","length","matches","prepareMatch","selectors","CSSselect.compile","CSSselect.is","replace","ca","esca","pe","m","es","isNode","insert","ParentNode","firstElementChild","lastChild","className","$next","$prev","replaced","NonElementParentNode","deep","constructor","nonEPN","DocumentType","hasPublic","getInnerHtml","setInnerHtml","setOwnerDocument","uhyphen","camel","refs","$1","dataset","DOMStringMap","ref","add","addTokens","DOMTokenList","force","newToken","getKeys","style","updateKeys","rest","prototype","cssText","push","CSSStyleDeclaration","BUBBLING_PHASE","AT_TARGET","CAPTURING_PHASE","NONE","GlobalEvent","eventInitDict","NamedNodeMap","host","attributesHandler","isVoid","classList","template","Event","previously","mode","shadowRoot","init","ShadowRoot","position","addNext","isOpened","classNames","illegalConstructor","_Attr","_CharacterData","_Comment","DocumentFragment","_DocumentFragment","_DocumentType","_Element","_Node","_ShadowRoot","_Text","SVGElement","_SVGElement","Facades","Level0","level0","handlers","HTMLElement","ownerLess","accessKey","HTMLTemplateElement","HTMLHtmlElement","toString","TextElement","HTMLScriptElement","HTMLFrameElement","HTMLIFrameElement","HTMLObjectElement","HTMLHeadElement","HTMLBodyElement","CSSOM","StyleSheet","CSSRule","require$$1","ruleText","state","buffer","SIGNIFICANT_WHITESPACE","styleRule","priority","character","CSSStyleRule","cssRule","CSSStyleSheet","require$$2","medium","MediaList","mediaText","CSSImportRule","CSSGroupingRule","CSSConditionRule","require$$3","cssTexts","CSSMediaRule","CSSSupportsRule","CSSFontFaceRule","CSSHostRule","CSSKeyframeRule","CSSKeyframesRule","CSSValue","expression","paren","endIdx","commentEndChar","sep","legalRegx","isLegal","reg","NOT_FOUND","matched","nextNewLineIdx","CSSValueExpression","matcher","MatcherList","CSSDocumentRule","valueParenthesisDepth","styleSheet","currentScope","parentRule","ancestorRules","hasAncestors","prevScope","mediaRule","supportsRule","importRule","fontFaceRule","keyframesRule","documentRule","hostRule","atKeyframesRegExp","parseError","message","lines","lineCount","charCount","matchKeyframes","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","prevValue","properties","dummyRule","require$$14","require$$19","HTMLStyleElement","sheet","HTMLTimeElement","HTMLFieldSetElement","HTMLEmbedElement","HTMLHRElement","HTMLProgressElement","HTMLParagraphElement","HTMLTableElement","HTMLFrameSetElement","HTMLLIElement","HTMLBaseElement","HTMLDataListElement","HTMLInputElement","HTMLParamElement","HTMLMediaElement","HTMLAudioElement","HTMLHeadingElement","HTMLDirectoryElement","HTMLQuoteElement","Canvas","width","height","canvasShim","canvasModule","createCanvas","HTMLCanvasElement","HTMLLegendElement","HTMLOptionElement","option","HTMLSpanElement","HTMLMeterElement","HTMLVideoElement","HTMLTableCellElement","HTMLTitleElement","HTMLOutputElement","HTMLTableRowElement","HTMLDataElement","HTMLMenuElement","HTMLSelectElement","HTMLBRElement","HTMLButtonElement","HTMLMapElement","HTMLOptGroupElement","HTMLDListElement","HTMLTextAreaElement","HTMLFontElement","HTMLDivElement","HTMLLinkElement","HTMLSlotElement","HTMLFormElement","HTMLImageElement","HTMLPreElement","HTMLUListElement","HTMLMetaElement","HTMLPictureElement","HTMLAreaElement","HTMLOListElement","HTMLTableCaptionElement","HTMLAnchorElement","HTMLLabelElement","HTMLUnknownElement","HTMLModElement","HTMLDetailsElement","HTMLSourceElement","HTMLTrackElement","HTMLMarqueeElement","HTMLClasses","Mime","CustomEvent","InputEvent","inputEventInit","ImageClass","deleteContents","Range","range","isOK","mask","TreeWalker","whatToShow","documentElement","$","globalExports","window","globalThis","et","docType","canBubble","cancelable","detail","doctype","externalNode","upgrade","nsp","_Document","parentsThrough","condition","breakOnCondition","parents","textToId","spaces","anythingButSpacesAndLetters","punctuationToStrip","hasData","onNode","copyElement","elementType","rootNode","newElement","clickOutside","callbackFunction","onClick","newCallbackFunction","elementIsFullyInViewport","elementRect","headerOffset","div","input","externalLinks","origin","linkToRender","externalId","htmlText","renderSanitizedHTML","onMount","ExternalLinkLabel","create_dynamic_element_1","img","img_loading_value","asset","alt","containerClass","containerElement","elementClass","caption","ariaId","childElement","resizeParams","dimensions","eagerload","responsive","widthsAt","srcsetWidths","sizes","sizesForBreakpoints","buildSrc","srcset","srcSetFromWidths","image_changes","displayCaption","preload","containerized","getContext","lg","md","sm","widthClass","altText","altTextToDisplay","imageDimensions","_i","global","factory","module","this","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","apply","construct","fun","thisValue","x","Func","arrayForEach","unapply","arrayPop","arrayPush","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","regExpTest","typeErrorCreate","unconstruct","thisArg","_len","_key","_len2","_key2","addToSet","set","transformCaseFunc","_transformCaseFunc","lcElement","object","newObject","property","lookupGetter","desc","fallbackValue","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","EXPRESSIONS","getGlobal","_createTrustedTypesPolicy","trustedTypes","purifyHostElement","suffix","ATTR_NAME","policyName","scriptUrl","createDOMPurify","DOMPurify","originalDocument","currentScript","NodeFilter","DOMParser","ElementPrototype","getNextSibling","getChildNodes","getParentNode","trustedTypesPolicy","emptyHTML","implementation","createNodeIterator","createDocumentFragment","importNode","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","cfg","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","parentTagName","_forceRemove","_removeAttribute","_initDocument","leadingWhitespace","dirtyPayload","_createIterator","_isClobbered","elm","_isNode","_executeHook","entryPoint","currentNode","hook","_sanitizeElements","_basicCustomElementTest","childCount","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","namespaceURI","_sanitizeShadowDOM","shadowNode","shadowIterator","importedNode","returnNode","nodeIterator","serializedHTML","hookFunction","purify","browser","rawHtml","CONTENTFUL_API_DEFAULTS","contentfulImageUrlFor","paramOverrides","fm","apiParams","params","widths","SCREENS","sizeForMinWidth","minWidth","breakpoints","sizeAttr","sizeForWidth","getImageOrientation","span","span_data","idOverride","classes","each_blocks","buttonClasses","button","is_function","icon_changes","iconSpacingClass","shareButtonsLabel","shareText","overrideURL","socials","currentURL","openNewWindow","social","w","h","left","handleClick","handleKeydown","getPageHeadingClass","heading_changes","BIG_TITLE_LENGTH_LIMIT","BIG_TITLE_WORD_LENGTH_LIMIT","isCategoryPage","longTitle","containsLongWords","typeStackClass","p","t1_value","if_block","create_if_block_3","set_data","t1","t0","t0_value","t3","t3_value","create_if_block_4","backgroundColorClass","featuredImage","eyebrow","byline","parentInfo","pageRelativePathString","showSocialBar","socialBarPaddingClass","pageTitlePaddingClass"],"mappings":"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CAClB,CAAC,CAAC,EAOWG,GAAaH,GAAW,eAAgB,IAAI,IAAI,CACzD,CAAC,GAAI,OAAO,EACZ,CAAC,GAAI,MAAM,EACX,CAAC,GAAI,MAAM,EACX,CAAC,IAAK,QAAQ,CAClB,CAAC,CAAC,EClHWI,GAAe,IAAI,IAAI,CAChC,WACA,cACA,eACA,eACA,gBACA,mBACA,WACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,gBACA,WACA,iBACA,iBACA,UACJ,EAAE,IAAKtY,GAAQ,CAACA,EAAI,cAAeA,CAAG,CAAC,CAAC,EAC3BuY,GAAiB,IAAI,IAAI,CAClC,gBACA,gBACA,gBACA,gBACA,cACA,WACA,gBACA,kBACA,WACA,cACA,WACA,oBACA,gBACA,eACA,mBACA,YACA,aACA,WACA,eACA,oBACA,eACA,cACA,cACA,mBACA,YACA,aACA,aACA,sBACA,mBACA,eACA,YACA,YACA,YACA,gBACA,sBACA,iBACA,OACA,OACA,cACA,YACA,qBACA,mBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,eACA,iBACA,cACA,UACA,UACA,aACA,UACA,aACA,mBACA,mBACA,YACJ,EAAE,IAAKvY,GAAQ,CAACA,EAAI,YAAa,EAAEA,CAAG,CAAC,CAAC,ECvFlCwY,GAAoB,IAAI,IAAI,CAC9B,QACA,SACA,MACA,SACA,UACA,WACA,YACA,UACJ,CAAC,EACD,SAASC,GAAcrN,EAAO,CAC1B,OAAOA,EAAM,QAAQ,KAAM,QAAQ,CACvC,CAIA,SAASsN,GAAiBC,EAAYlL,EAAM,CACxC,IAAItP,EACJ,GAAI,CAACwa,EACD,OACJ,MAAMtW,IAAWlE,EAAKsP,EAAK,kBAAoB,MAAQtP,IAAO,OAASA,EAAKsP,EAAK,kBAAoB,GAC/FgL,GACAhL,EAAK,SAAWA,EAAK,iBAAmB,OACpCuK,GACAI,GACV,OAAO,OAAO,KAAKO,CAAU,EACxB,IAAKngB,GAAQ,CA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","x_google_ignoreList":[0,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,223,224]}