{"version":3,"file":"dom-helpers.aafb6300.js","sources":["../../../../../../node_modules/svelte/src/runtime/internal/spread.js","../../../../../../node_modules/@lukeed/uuid/dist/index.mjs","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/x.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/youtube.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/threads.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/search.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/playOffset.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/play.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/pause.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/menu.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/linkedIn.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/instagram.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/filter.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/facebook.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/close.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/check.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/caretUp.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/caretDown.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/arrowUpRight.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/arrowRight.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/arrowLeft.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/alert.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/utilities/logs.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/Icon.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/DynamicHeadingContext.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/DynamicHeading.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/utilities/themes.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/LoadingIndicator.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/Button.svelte","../../../../../../node_modules/svelte/src/runtime/easing/index.js","../../../../../../node_modules/svelte/src/runtime/transition/index.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/utilities/aspectRatios.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/utilities/accessibility.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/utilities/breakpoints.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/Image.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/Link.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/Grid.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/GridContainer.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/Rule.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/node_modules/marked/lib/marked.esm.js","../../../../../../node_modules/dompurify/dist/purify.cjs.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/node_modules/isomorphic-dompurify/browser.js","../../../../../../node_modules/@sveltejs/kit/src/runtime/app/stores.js","../../../../../../node_modules/tua-body-scroll-lock/dist/tua-bsl.mjs","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/Tags.svelte","../../../../../../node_modules/textfit/textFit.js","../../../../../../src/lib/utilities/constants.js","../../../../../../src/lib/utilities/url-helpers.js","../../../../../../src/lib/utilities/image.js","../../../../../../src/lib/utilities/components/image-helpers.js","../../../../../../src/lib/stores.js","../../../../../../src/lib/utilities/filters.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/shared/text-escaper.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/cdata-section.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/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"],"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","var IDX=256, HEX=[], BUFFER;\nwhile (IDX--) HEX[IDX] = (IDX + 256).toString(16).substring(1);\n\nexport function v4() {\n\tvar i=0, num, out='';\n\n\tif (!BUFFER || ((IDX + 16) > 256)) {\n\t\tBUFFER = Array(i=256);\n\t\twhile (i--) BUFFER[i] = 256 * Math.random() | 0;\n\t\ti = IDX = 0;\n\t}\n\n\tfor (; i < 16; i++) {\n\t\tnum = BUFFER[IDX + i];\n\t\tif (i==6) out += HEX[num & 15 | 64];\n\t\telse if (i==8) out += HEX[num & 63 | 128];\n\t\telse out += HEX[num];\n\n\t\tif (i & 1 && i > 1 && i < 11) out += '-';\n\t}\n\n\tIDX++;\n\treturn out;\n}\n","<svg viewBox=\"0 0 1200 1227\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...$$props}>\n  <path\n    d=\"M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z\"\n    fill=\"currentColor\"\n  />\n</svg>\n","<svg viewBox=\"0 0 48 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...$$props}>\n  <path\n    fill-rule=\"evenodd\"\n    clip-rule=\"evenodd\"\n    d=\"M39.5841 10.8294C41.3042 11.2915 42.665 12.6523 43.1271 14.3724C43.9743 17.5046 44 24.0001 44 24.0001C44 24.0001 44 30.5213 43.1528 33.6279C42.6906 35.348 41.3299 36.7087 39.6098 37.1709C36.5032 38.0181 24 38.0181 24 38.0181C24 38.0181 11.4968 38.0181 8.39025 37.1709C6.67009 36.7087 5.30937 35.348 4.84724 33.6279C4 30.4957 4 24.0001 4 24.0001C4 24.0001 4 17.5046 4.82157 14.3981C5.2837 12.6779 6.64442 11.3172 8.36457 10.8551C11.4711 10.0078 23.9743 9.98218 23.9743 9.98218C23.9743 9.98218 36.4775 9.98218 39.5841 10.8294ZM30.3671 24.0002L19.9949 30.0079V17.9925L30.3671 24.0002Z\"\n    fill=\"currentColor\"\n  />\n</svg>\n","<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"currentColor\" {...$$props}>\n  <g clip-path=\"url(#clip0_8301_571)\">\n    <path\n      d=\"M7.14728 16H7.14248C4.75528 15.984 2.92008 15.1968 1.68648 13.6608C0.590483 12.2928 0.0240828 10.3904 0.00488281 8.0064V7.9952C0.0240828 5.6096 0.590483 3.7088 1.68808 2.3408C2.92008 0.8032 4.75688 0.016 7.14248 0H7.14728H7.15208C8.98248 0.0128 10.5137 0.4832 11.7025 1.3984C12.8209 2.2592 13.6081 3.4848 14.0417 5.0432L12.6817 5.4224C11.9457 2.7824 10.0833 1.4336 7.14568 1.4128C5.20648 1.4272 3.73928 2.0368 2.78568 3.224C1.89448 4.336 1.43368 5.9424 1.41608 8C1.43368 10.0576 1.89448 11.664 2.78728 12.776C3.74088 13.9648 5.20808 14.5744 7.14728 14.5872C8.89608 14.5744 10.0529 14.1664 11.0145 13.224C12.1121 12.1488 12.0929 10.8288 11.7409 10.0256C11.5345 9.552 11.1585 9.1584 10.6513 8.8592C10.5233 9.76 10.2369 10.4896 9.79528 11.04C9.20488 11.7744 8.36808 12.176 7.30888 12.2336C6.50728 12.2768 5.73448 12.088 5.13608 11.6992C4.42728 11.24 4.01288 10.5392 3.96808 9.7232C3.92488 8.9296 4.24008 8.2 4.85448 7.6688C5.44168 7.1616 6.26728 6.864 7.24328 6.808C7.96168 6.768 8.63528 6.8 9.25608 6.9024C9.17288 6.408 9.00648 6.0144 8.75688 5.7312C8.41448 5.3408 7.88488 5.1424 7.18408 5.1376C7.17768 5.1376 7.17128 5.1376 7.16488 5.1376C6.60168 5.1376 5.83688 5.2928 5.35048 6.0176L4.17928 5.232C4.83208 4.2624 5.89128 3.728 7.16488 3.728C7.17448 3.728 7.18408 3.728 7.19368 3.728C9.32328 3.7408 10.5921 5.0448 10.7185 7.32C10.7905 7.3504 10.8625 7.3824 10.9329 7.4144C11.9265 7.8816 12.6529 8.5888 13.0353 9.4608C13.5665 10.6752 13.6161 12.6544 12.0033 14.2336C10.7697 15.44 9.27368 15.9856 7.15208 16H7.14728ZM7.81608 8.2064C7.65448 8.2064 7.49128 8.2112 7.32328 8.2208C6.09928 8.2896 5.33608 8.8512 5.37928 9.6496C5.42408 10.4864 6.34728 10.8752 7.23528 10.8272C8.05128 10.784 9.11368 10.4656 9.29288 8.3536C8.84168 8.256 8.34728 8.2064 7.81608 8.2064Z\"\n    />\n  </g>\n  <defs>\n    <clipPath id=\"clip0_8301_571\">\n      <rect width=\"14.048\" height=\"16\" fill=\"currentColor\" />\n    </clipPath>\n  </defs>\n</svg>\n","<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...$$props}>\n  <g fill=\"currentColor\" fill-rule=\"evenodd\" clip-path=\"url(#a)\" clip-rule=\"evenodd\">\n    <path\n      d=\"M6.34 10.58a4.374 4.374 0 0 0 5.193-3.374c.509-2.376-1-4.707-3.354-5.215a4.374 4.374 0 0 0-5.193 3.373c-.509 2.377 1 4.708 3.354 5.215m-.364 1.703c3.3.71 6.55-1.397 7.26-4.71C13.944 4.261 11.844 1 8.543.288s-6.55 1.397-7.26 4.71c-.708 3.311 1.393 6.573 4.693 7.285\"\n    />\n    <path d=\"m12.304 15.821-2.965-4.7 1.473-.929 2.964 4.701z\" />\n  </g>\n  <defs>\n    <clipPath id=\"a\">\n      <path fill=\"currentColor\" d=\"M0 0h16v16H0z\" />\n    </clipPath>\n  </defs>\n</svg>\n","<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...$$props}>\n  <path fill=\"currentColor\" d=\"m8 8-8 8V0z\" />\n</svg>\n","<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...$$props}>\n  <path fill=\"currentColor\" d=\"m12 8-8 8V0z\" />\n</svg>\n","<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...$$props}>\n  <path\n    fill=\"currentColor\"\n    fill-rule=\"evenodd\"\n    d=\"M4 14V2h2v12zM10 14V2h2v12z\"\n    clip-rule=\"evenodd\"\n  />\n</svg>\n","<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...$$props}>\n  <g fill=\"currentColor\" fill-rule=\"evenodd\" clip-rule=\"evenodd\">\n    <path d=\"M16 5.333H0V4h16zM16 11.333H0V10h16z\" />\n  </g>\n</svg>\n","<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"none\" {...$$props}>\n  <g clip-path=\"url(#clip0_8086_332)\">\n    <path\n      d=\"M13.6146 13.4807H11.247V9.80946C11.247 8.934 11.2312 7.80702 10.0156 7.80702C8.78243 7.80702 8.59376 8.76087 8.59376 9.74572V13.4805H6.22612V5.93084H8.49905V6.96258H8.53087C8.75834 6.57749 9.08703 6.2607 9.48195 6.04594C9.87686 5.83118 10.3232 5.72651 10.7735 5.74305C13.1732 5.74305 13.6156 7.30593 13.6156 9.33913L13.6146 13.4807ZM3.55465 4.89886C3.28291 4.89891 3.01724 4.81917 2.79127 4.66972C2.56529 4.52027 2.38916 4.30783 2.28513 4.05926C2.18109 3.8107 2.15383 3.53716 2.20679 3.27326C2.25976 3.00935 2.39058 2.76692 2.5827 2.57663C2.77481 2.38633 3.01961 2.25672 3.28612 2.20418C3.55264 2.15164 3.82889 2.17853 4.07997 2.28145C4.33105 2.38438 4.54566 2.55871 4.69668 2.7824C4.84769 3.0061 4.92832 3.26911 4.92837 3.53818C4.9284 3.71684 4.89289 3.89375 4.82387 4.05881C4.75486 4.22388 4.65369 4.37387 4.52613 4.50022C4.39856 4.62657 4.24711 4.72681 4.08042 4.79521C3.91374 4.8636 3.73508 4.89883 3.55465 4.89886ZM4.73846 13.4807H2.36837V5.93084H4.73846V13.4807ZM14.795 0.000955865H1.17864C0.86959 -0.00249744 0.571781 0.115679 0.350683 0.329518C0.129584 0.543356 0.00328353 0.83536 -0.000488281 1.14137V14.6795C0.00315444 14.9857 0.129381 15.2779 0.350472 15.4919C0.571563 15.706 0.869437 15.8244 1.17864 15.8212H14.795C15.1048 15.825 15.4035 15.7069 15.6255 15.4929C15.8474 15.2788 15.9745 14.9863 15.9788 14.6795V1.14039C15.9744 0.833777 15.8472 0.54144 15.6252 0.327607C15.4033 0.113774 15.1046 -0.00406517 14.795 -2.13266e-05\"\n      fill=\"currentColor\"\n    />\n  </g>\n  <defs>\n    <clipPath id=\"clip0_8086_332\">\n      <rect width=\"16\" height=\"16\" fill=\"currentColor\" />\n    </clipPath>\n  </defs>\n</svg>\n","<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"none\" {...$$props}>\n  <path\n    d=\"M7.99998 1.44147C10.1361 1.44147 10.3891 1.4496 11.2327 1.48809C12.0126 1.52369 12.4362 1.65401 12.7182 1.76354C13.0916 1.90867 13.3581 2.08205 13.638 2.36198C13.9179 2.64191 14.0913 2.90844 14.2364 3.28183C14.346 3.56376 14.4763 3.98735 14.5119 4.76731C14.5504 5.61091 14.5585 5.86391 14.5585 8.00002C14.5585 10.1361 14.5504 10.3891 14.5119 11.2327C14.4763 12.0127 14.346 12.4363 14.2364 12.7182C14.0913 13.0916 13.9179 13.3581 13.638 13.638C13.3581 13.918 13.0916 14.0914 12.7182 14.2365C12.4362 14.346 12.0126 14.4763 11.2327 14.5119C10.3892 14.5504 10.1362 14.5586 7.99998 14.5586C5.86375 14.5586 5.61075 14.5504 4.76731 14.5119C3.98732 14.4763 3.56373 14.346 3.28183 14.2365C2.90841 14.0914 2.64188 13.918 2.36195 13.638C2.08202 13.3581 1.90863 13.0916 1.76354 12.7182C1.65398 12.4363 1.52366 12.0127 1.48806 11.2327C1.44957 10.3891 1.44144 10.1361 1.44144 8.00002C1.44144 5.86391 1.44957 5.61091 1.48806 4.76735C1.52366 3.98735 1.65398 3.56376 1.76354 3.28183C1.90863 2.90844 2.08202 2.64191 2.36195 2.36198C2.64188 2.08205 2.90841 1.90867 3.28183 1.76354C3.56373 1.65401 3.98732 1.52369 4.76728 1.48809C5.61088 1.4496 5.86388 1.44147 7.99998 1.44147ZM7.99998 0C5.8273 0 5.5549 0.00920926 4.70161 0.0481422C3.85007 0.0870116 3.26855 0.222229 2.75966 0.420006C2.23359 0.624451 1.78745 0.897997 1.34271 1.34274C0.897966 1.78748 0.624419 2.23363 0.419974 2.7597C0.222197 3.26859 0.0869798 3.8501 0.0481104 4.70164C0.0091775 5.5549 0 5.82733 0 8.00002C0 10.1727 0.0091775 10.4451 0.0481104 11.2984C0.0869798 12.1499 0.222197 12.7314 0.419974 13.2403C0.624419 13.7664 0.897966 14.2125 1.34271 14.6573C1.78745 15.102 2.23359 15.3756 2.75966 15.58C3.26855 15.7778 3.85007 15.913 4.70161 15.9519C5.5549 15.9908 5.8273 16 7.99998 16C10.1727 16 10.4451 15.9908 11.2984 15.9519C12.1499 15.913 12.7314 15.7778 13.2403 15.58C13.7664 15.3756 14.2125 15.102 14.6573 14.6573C15.102 14.2125 15.3755 13.7664 15.58 13.2403C15.7778 12.7314 15.913 12.1499 15.9519 11.2984C15.9908 10.4451 16 10.1727 16 8.00002C16 5.82733 15.9908 5.5549 15.9519 4.70164C15.913 3.8501 15.7778 3.26859 15.58 2.7597C15.3755 2.23363 15.102 1.78748 14.6573 1.34274C14.2125 0.897997 13.7664 0.624451 13.2403 0.420006C12.7314 0.222229 12.1499 0.0870116 11.2984 0.0481422C10.4451 0.00920926 10.1727 0 7.99998 0ZM7.99998 3.89189C5.73114 3.89189 3.89186 5.73117 3.89186 8.00002C3.89186 10.2689 5.73114 12.1081 7.99998 12.1081C10.2688 12.1081 12.1081 10.2689 12.1081 8.00002C12.1081 5.73117 10.2688 3.89189 7.99998 3.89189ZM7.99998 10.6667C6.52723 10.6667 5.3333 9.47277 5.3333 8.00002C5.3333 6.52727 6.52723 5.33333 7.99998 5.33333C9.47273 5.33333 10.6667 6.52727 10.6667 8.00002C10.6667 9.47277 9.47273 10.6667 7.99998 10.6667ZM13.2304 3.72959C13.2304 4.25979 12.8006 4.68961 12.2704 4.68961C11.7402 4.68961 11.3104 4.25979 11.3104 3.72959C11.3104 3.19939 11.7402 2.7696 12.2704 2.7696C12.8006 2.7696 13.2304 3.19939 13.2304 3.72959Z\"\n    fill=\"currentColor\"\n  />\n</svg>\n","<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...$$props}>\n  <path\n    fill=\"currentcolor\"\n    fill-rule=\"evenodd\"\n    d=\"M16 5.5H0v-2h16zM16 12.5H0v-2h16z\"\n    clip-rule=\"evenodd\"\n  />\n  <path fill=\"currentcolor\" fill-rule=\"evenodd\" d=\"M3 7V2h2v5zM11 14V9h2v5z\" clip-rule=\"evenodd\" />\n</svg>\n","<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"none\" {...$$props}>\n  <g clip-path=\"url(#clip0_8086_324)\">\n    <path\n      d=\"M16 8.00002C16 3.58174 12.4183 1.81198e-05 8 1.81198e-05C3.58172 1.81198e-05 0 3.58174 0 8.00002C0 11.993 2.92548 15.3027 6.75 15.9028V10.3125H4.71875V8.00002H6.75V6.23752C6.75 4.23252 7.94434 3.12502 9.77172 3.12502C10.647 3.12502 11.5625 3.28127 11.5625 3.28127V5.25002H10.5537C9.55992 5.25002 9.25 5.86669 9.25 6.49935V8.00002H11.4688L11.1141 10.3125H9.25V15.9028C13.0745 15.3027 16 11.993 16 8.00002Z\"\n      fill=\"currentColor\"\n    />\n  </g>\n  <defs>\n    <clipPath id=\"clip0_8086_324\">\n      <rect width=\"16\" height=\"16\" fill=\"currentColor\" />\n    </clipPath>\n  </defs>\n</svg>\n","<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...$$props}>\n  <g fill=\"currentColor\" fill-rule=\"evenodd\" clip-rule=\"evenodd\">\n    <path d=\"m1.565.15 14.142 14.143-1.414 1.414L.151 1.565z\" /><path\n      d=\"M14.293.15.15 14.294l1.414 1.414L15.707 1.565z\"\n    />\n  </g>\n</svg>\n","<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...$$props}>\n  <path\n    fill=\"currentColor\"\n    fill-rule=\"evenodd\"\n    d=\"M16.5 3.293 5.744 14 .5 8.78l1.3-1.293 3.944 3.926L15.2 2z\"\n    clip-rule=\"evenodd\"\n  />\n</svg>\n","<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...$$props}>\n  <path fill=\"currentColor\" d=\"m8 4 6 6H2z\" />\n</svg>\n","<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...$$props}>\n  <path fill=\"currentColor\" d=\"M8 12 2 6h12z\" />\n</svg>\n","<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...$$props}>\n  <path\n    fill=\"currentColor\"\n    fill-rule=\"evenodd\"\n    d=\"m11.177 5.362.513 4.26 1.967-.2-.854-7.1-7.1-.854-.2 1.967 4.26.512-8.273 8.274 1.414 1.414z\"\n    clip-rule=\"evenodd\"\n  />\n</svg>\n","<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...$$props}>\n  <path\n    fill=\"currentColor\"\n    fill-rule=\"evenodd\"\n    d=\"m12.48 6.933-2.827-3.6L11.288 2 16 8l-4.712 6-1.635-1.333 2.827-3.6H0V6.933z\"\n    clip-rule=\"evenodd\"\n  />\n</svg>\n","<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...$$props}>\n  <path\n    fill=\"currentColor\"\n    fill-rule=\"evenodd\"\n    d=\"m3.52 6.933 2.827-3.6L4.712 2 0 8l4.712 6 1.635-1.333-2.828-3.6H16V6.933z\"\n    clip-rule=\"evenodd\"\n  />\n</svg>\n","<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...$$props}>\n  <path\n    fill=\"currentColor\"\n    fill-rule=\"evenodd\"\n    d=\"M7.2 9.44V3.68h1.6v5.76zM7.2 12v-1.6h1.6V12z\"\n    clip-rule=\"evenodd\"\n  />\n  <path stroke=\"currentColor\" stroke-width=\"1.33\" d=\"M.665.665h14.67v14.67H.665z\" />\n</svg>\n","/**\n * Validates a prop value against a list of valid values.\n *\n * @param {Object} params - The parameters for the function.\n * @param {string} params.componentName - The name of the component.\n * @param {string} params.propName - The name of the prop.\n * @param {string} params.propValue - The value of the prop.\n * @param {Array.<string>} params.validPropValues - The list of valid prop values.\n */\nfunction validatePropValue({ componentName, propName, propValue, validPropValues }) {\n  if (!validPropValues.includes(propValue)) {\n    /* eslint-disable no-console */\n    console.error(\n      `[${componentName} ERROR] \"${propValue}\" is not a supported ${propName} value. Must be one of: ${validPropValues.join(\n        \" \"\n      )}`\n    );\n  }\n}\n\n/** Validates an object prop value with a schema.\n * @param {Object} params - The parameters for the function.\n * @param {string} params.componentName - The name of the component.\n * @param {string} params.propName - The name of the prop.\n * @param {Object} params.propValue - The value of the prop.\n * @param {Object} params.schema - The schema for the prop validation.\n */\n\nfunction validatePropObjectWithSchema({ componentName, propName, propValue, schema }) {\n  Object.keys(schema).forEach((key) => {\n    if (schema[key] === \"array\" && !Array.isArray(propValue[key])) {\n      /* eslint-disable no-console */\n      console.error(\n        `[${componentName} ERROR] \"${propValue[key]}\" is not a supported ${propName} value for ${key} property. Must be an array`\n      );\n    } else if (schema[key] !== \"array\" && propValue[key] && typeof propValue[key] !== schema[key]) {\n      /* eslint-disable no-console */\n      console.error(\n        `[${componentName} ERROR] \"${propValue[key]}\" is not a supported ${propName} value for ${key} property. Must be a(n) ${schema[key]}`\n      );\n    }\n  });\n}\n\nexport { validatePropValue, validatePropObjectWithSchema };\n","<script context=\"module\">\n  import alert from \"../assets/icons/alert.svelte\";\n  import arrowLeft from \"../assets/icons/arrowLeft.svelte\";\n  import arrowRight from \"../assets/icons/arrowRight.svelte\";\n  import arrowUpRight from \"../assets/icons/arrowUpRight.svelte\";\n  import caretDown from \"../assets/icons/caretDown.svelte\";\n  import caretUp from \"../assets/icons/caretUp.svelte\";\n  import check from \"../assets/icons/check.svelte\";\n  import close from \"../assets/icons/close.svelte\";\n  import facebook from \"../assets/icons/facebook.svelte\";\n  import filter from \"../assets/icons/filter.svelte\";\n  import instagram from \"../assets/icons/instagram.svelte\";\n  import linkedIn from \"../assets/icons/linkedIn.svelte\";\n  import menu from \"../assets/icons/menu.svelte\";\n  import pause from \"../assets/icons/pause.svelte\";\n  import play from \"../assets/icons/play.svelte\";\n  import playOffset from \"../assets/icons/playOffset.svelte\";\n  import search from \"../assets/icons/search.svelte\";\n  import threads from \"../assets/icons/threads.svelte\";\n  import youtube from \"../assets/icons/youtube.svelte\";\n  import x from \"../assets/icons/x.svelte\";\n\n  export const ICON_NAMES = {\n    alert,\n    arrowLeft,\n    arrowRight,\n    arrowUpRight,\n    caretDown,\n    caretUp,\n    check,\n    close,\n    facebook,\n    filter,\n    instagram,\n    linkedIn,\n    menu,\n    pause,\n    play,\n    playOffset,\n    search,\n    threads,\n    youtube,\n    x\n  };\n</script>\n\n<script>\n  import { validatePropValue } from \"../utilities/logs\";\n\n  /** Primarily used for testing\n   * @type {string} */\n  export let id = null;\n\n  /**\n   * The name of the icon to be rendered.\n   * It should match one of the keys in the ICON_NAMES object.\n   * @type {keyof typeof ICON_NAMES}\n   */\n  export let name = undefined;\n\n  /** Without this tag, the size will be whatever is the enclosing container\n   * @type {boolean} */\n  export let inheritSize = false;\n\n  /**\n   * An optional CSS class to be applied to the icon.\n   * @type {string}\n   */\n  export let iconClass = \"\";\n\n  /**\n   * The component that will be rendered as the icon.\n   * It is determined by the `name` prop.\n   * @type {SvelteComponent}\n   */\n  $: component = ICON_NAMES[name];\n\n  validatePropValue({\n    componentName: \"Icon\",\n    propName: \"name\",\n    propValue: name,\n    validPropValues: Object.keys(ICON_NAMES)\n  });\n</script>\n\n<svelte:component\n  this={component}\n  aria-hidden=\"true\"\n  class={iconClass}\n  width={inheritSize ? undefined : \"16\"}\n  height={inheritSize ? undefined : \"16\"}\n  {id}\n/>\n","<script context=\"module\">\n  export const Constants = /** @type {const} */ ({\n    DynamicHeadingContext: \"DynamicHeadingContext\",\n    MaximumHeadingLevel: 6,\n    HeadingIncrement: 1\n  });\n</script>\n\n<script>\n  import { setContext, getContext } from \"svelte\";\n\n  const dynamicHeading = getContext(Constants.DynamicHeadingContext);\n  if (!dynamicHeading) {\n    setContext(Constants.DynamicHeadingContext, 1);\n  } else {\n    setContext(\n      Constants.DynamicHeadingContext,\n      dynamicHeading > Constants.MaximumHeadingLevel\n        ? Constants.MaximumHeadingLevel\n        : dynamicHeading + Constants.HeadingIncrement\n    );\n  }\n</script>\n\n<!--\n@component\nThis component defines the Heading level for the DynamicHeading component\nevery time this is nested in another DynamicHeading component, the level is incremented by 1\neg:\n```svelte\n<DynamicHeadingContext>\n  <DynamicHeading>This is an h1</DynamicHeading>\n  <DynamicHeadingContext>\n    <DynamicHeading>This is an h2</DynamicHeading>\n    <DynamicHeadingContext>\n      <DynamicHeading>This is an h3</DynamicHeading>\n    </DynamicHeadingContext>\n  </DynamicHeadingContext>\n</DynamicHeadingContext>\n-->\n<slot />\n","<script context=\"module\">\n  export const calculateResultingHeadingLevel = (\n    suggestedHeadingLevel,\n    currentDynamicHeadingLevel\n  ) => {\n    const levelSum = suggestedHeadingLevel - 1 + currentDynamicHeadingLevel;\n\n    //  Subtract 1 from suggestedHeadingLevel to get the level of the DynamicHeadingContext\n    return levelSum > Constants.MaximumHeadingLevel\n      ? Constants.MaximumHeadingLevel\n      : levelSum < 1\n        ? 1\n        : levelSum;\n  };\n</script>\n\n<script>\n  import { getContext } from \"svelte\";\n  import { Constants } from \"./DynamicHeadingContext.svelte\";\n\n  // @ts-check\n  /** Primarily used for testing\n   * @type {string} */\n  export let id = undefined;\n\n  /** For parts of the website where heading levels have to be explicitly set because they are siblings\n  of other headings.\n  Example: An Rich text Article that has both an h1, and two h2, like a blog article\n  <DynamicHeading suggestedHeadingLevel=\"1\">Cake Recipe</DynamicHeading>\n  <DynamicHeading suggestedHeadingLevel=\"2\">Ingredients</DynamicHeading>\n  <DynamicHeading suggestedHeadingLevel=\"2\">Preparation</DynamicHeading>\n\n  If the current DynamicHeadingContext is 2, the resulting heading levels will be h2, h3 and h3\n   * @type {1 | 2 | 3 | 4 |5 |6} */\n  export let suggestedHeadingLevel = 1;\n\n  // TODO make this a const after DynamicLevelContext has been added to the obama-swa.\n  let currentDynamicHeadingLevel = getContext(Constants.DynamicHeadingContext);\n  if (!currentDynamicHeadingLevel) {\n    // TODO: Since we are using SvelteKit throwing an error will abort a new build with Headings that we are not be acknowledging for, and it will also be stopped in the CI, so we can fix it before deploying.\n    // But right now it will break the tests and will need a significant effort to make it work\n    console.error(\"DynamicHeading must be used inside of a DynamicHeadingContext\");\n  }\n\n  const resultingHeadingLevel = calculateResultingHeadingLevel(\n    suggestedHeadingLevel,\n    currentDynamicHeadingLevel\n  );\n\n  let className = undefined;\n  export { className as class };\n\n  /** @type {HTMLElement} | undefined} */\n  export let ref = undefined;\n\n  const currentElement = `h${resultingHeadingLevel}`;\n</script>\n\n<!--\n@component\nThis component renders the heading level based on the context of the DynamicHeadingContext, unless the prop for suggestedHeadingLevel is set, in that case\nit will render the heading level based on the suggestedHeadingLevel prop plus the context minus 1, since headings start at 1 and not 0.\n\n```svelte\n<DynamicHeadingContext>\n  <DynamicHeading>This is an h1</DynamicHeading>\n  <DynamicHeadingContext>\n    <DynamicHeading>This is an h2</DynamicHeading>\n    <DynamicHeading suggestedHeadingLevel=\"3\">This is an h4</DynamicHeading>\n    <DynamicHeadingContext>\n      <DynamicHeading>This is an h3</DynamicHeading>\n      <DynamicHeading suggestedHeadingLevel=\"1\">This is an h3</DynamicHeading>\n    </DynamicHeadingContext>\n  </DynamicHeadingContext>\n</DynamicHeadingContext>\n```\n-->\n\n<svelte:element\n  this={currentElement}\n  {...$$props}\n  {...$$restProps}\n  {id}\n  class={className}\n  bind:this={ref}\n>\n  <slot />\n</svelte:element>\n","import COLORS from \"../design-tokens/colors\";\n\n/**\n * @typedef {Object} Theme An object of CSS classes to be applied for the theme\n * @property {string} backgroundColor\n * @property {string} hoverBackgroundColor\n * @property {string} textColor\n * @property {string} hoverTextColor\n * @property {string} translucentTextColor\n * @property {string} borderColor\n * @property {string} ruleColor\n * @property {string} componentColorTheme\n * @property {string} [focusTextColor]\n * @property {string} [focusOutlineColor]\n * @property {string} [textGradientValue]\n */\n\n/**\n * @typedef {keyof typeof STANDARD_THEMES} StandardThemeName\n\n * @typedef {keyof typeof PATTERN_THEMES} PatternThemeName\n\n * @typedef {keyof typeof DEM_FORUM_THEMES} DemForumThemeName\n\n* @typedef {StandardThemeName | PatternThemeName | DemForumThemeName} ThemeName\n */\n\n/**\n * @typedef {Object.<StandardThemeName, Theme>} ThemeTable1\n * @description An object that maps theme names to their corresponding theme configurations.\n */\nexport const STANDARD_THEMES = {\n  transparent: {\n    backgroundColor: \"bg-transparent\",\n    hoverBackgroundColor: \"hover:bg-transparent\",\n    textColor: \"text-transparent\",\n    translucentTextColor: \"text-transparent\",\n    hoverTextColor: \"hover:text-transparent\",\n    borderColor: \"border-transparent\",\n    ruleColor: \"bg-transparent\",\n    focusOutlineColor: \"focus-visible:outline-transparent\",\n    componentColorTheme: \"black\",\n    backgroundColorValue: COLORS.transparent,\n    textColorValue: COLORS.transparent\n  },\n  black: {\n    backgroundColor: \"bg-black\",\n    hoverBackgroundColor: \"hover:bg-white\",\n    textColor: \"text-white\",\n    translucentTextColor: \"text-white-60\",\n    hoverTextColor: \"hover:text-cobalt-blue\",\n    borderColor: \"border-black\",\n    ruleColor: \"bg-white\",\n    focusOutlineColor: \"focus-visible:outline-white\",\n    componentColorTheme: \"black\",\n    backgroundColorValue: COLORS.black,\n    textColorValue: COLORS.white,\n    textGradientValue: \"bg-blue-green-animated-text\"\n  },\n  white: {\n    backgroundColor: \"bg-white\",\n    hoverBackgroundColor: \"hover:bg-black\",\n    borderColor: \"border-white\",\n    textColor: \"text-black\",\n    translucentTextColor: \"text-black-60\",\n    hoverTextColor: \"hover:text-cobalt-blue\",\n    ruleColor: \"bg-black\",\n    focusTextColor: \"focus-visible:text-cobalt-blue\",\n    focusOutlineColor: \"focus-visible:outline-black\",\n    componentColorTheme: \"white\",\n    backgroundColorValue: COLORS.white,\n    textColorValue: COLORS.black,\n    textGradientValue: \"bg-dark-blue-animated-text\"\n  },\n  darkBlue: {\n    backgroundColor: \"bg-dark-blue\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-white\",\n    translucentTextColor: \"text-white-60\",\n    hoverTextColor: \"\",\n    borderColor: \"border-dark-blue\",\n    ruleColor: \"bg-white\",\n    componentColorTheme: \"black\",\n    backgroundColorValue: COLORS.darkBlue,\n    textColorValue: COLORS.white,\n    textGradientValue: \"bg-blue-green-animated-text\"\n  },\n  cobaltBlue: {\n    backgroundColor: \"bg-cobalt-blue\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-white\",\n    translucentTextColor: \"text-white\",\n    hoverTextColor: \"hover:text-white\",\n    focusOutlineColor: \"focus-visible:outline-white\",\n    borderColor: \"border-cobalt-blue\",\n    ruleColor: \"bg-white\",\n    componentColorTheme: \"black\",\n    backgroundColorValue: COLORS.cobaltBlue,\n    textColorValue: COLORS.white,\n    textGradientValue: \"bg-blue-green-animated-text\"\n  },\n  skyBlue: {\n    backgroundColor: \"bg-sky-blue\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-black\",\n    translucentTextColor: \"text-black-60\",\n    hoverTextColor: \"\",\n    borderColor: \"border-sky-blue\",\n    ruleColor: \"bg-black\",\n    componentColorTheme: \"white\",\n    backgroundColorValue: COLORS.skyBlue,\n    textColorValue: COLORS.black,\n    textGradientValue: \"bg-dark-blue-animated-text\"\n  },\n  lightBlue: {\n    backgroundColor: \"bg-light-blue\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-black\",\n    translucentTextColor: \"text-black-60\",\n    hoverTextColor: \"\",\n    borderColor: \"border-light-blue\",\n    ruleColor: \"bg-black\",\n    componentColorTheme: \"white\",\n    backgroundColorValue: COLORS.lightBlue,\n    textColorValue: COLORS.black,\n    textGradientValue: \"bg-dark-blue-animated-text\"\n  },\n  lightGrey: {\n    backgroundColor: \"bg-light-grey\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-black\",\n    translucentTextColor: \"text-black-60\",\n    hoverTextColor: \"hover:text-cobalt-blue\",\n    borderColor: \"border-light-grey\",\n    ruleColor: \"bg-black\",\n    componentColorTheme: \"white\",\n    focusTextColor: \"focus-visible:text-cobalt-blue\",\n    focusOutlineColor: \"focus-visible:outline-black\",\n    backgroundColorValue: COLORS.lightGrey,\n    textColorValue: COLORS.black,\n    textGradientValue: \"bg-dark-blue-animated-text\"\n  },\n  red: {\n    backgroundColor: \"bg-red\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-black\",\n    translucentTextColor: \"text-black-75\",\n    hoverTextColor: \"\",\n    borderColor: \"border-red\",\n    ruleColor: \"bg-black\",\n    componentColorTheme: \"white\",\n    backgroundColorValue: COLORS.red,\n    textColorValue: COLORS.black,\n    textGradientValue: \"bg-dark-blue-animated-text\"\n  },\n  orange: {\n    backgroundColor: \"bg-orange\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-black\",\n    translucentTextColor: \"text-black-75\",\n    hoverTextColor: \"\",\n    borderColor: \"border-orange\",\n    ruleColor: \"bg-black\",\n    componentColorTheme: \"white\",\n    backgroundColorValue: COLORS.orange,\n    textColorValue: COLORS.black,\n    textGradientValue: \"bg-dark-blue-animated-text\"\n  },\n  yellow: {\n    backgroundColor: \"bg-yellow\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-black\",\n    translucentTextColor: \"text-black-60\",\n    hoverTextColor: \"\",\n    borderColor: \"border-yellow\",\n    ruleColor: \"bg-black\",\n    componentColorTheme: \"white\",\n    backgroundColorValue: COLORS.yellow,\n    textColorValue: COLORS.black,\n    textGradientValue: \"bg-dark-blue-animated-text\"\n  },\n  green: {\n    backgroundColor: \"bg-green\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-white\",\n    translucentTextColor: \"text-white-80\",\n    hoverTextColor: \"\",\n    borderColor: \"border-green\",\n    ruleColor: \"bg-white\",\n    componentColorTheme: \"black\",\n    backgroundColorValue: COLORS.green,\n    textColorValue: COLORS.white,\n    textGradientValue: \"bg-blue-green-animated-text\"\n  },\n  pink: {\n    backgroundColor: \"bg-pink\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-black\",\n    translucentTextColor: \"text-black-60\",\n    hoverTextColor: \"\",\n    borderColor: \"border-pink\",\n    ruleColor: \"bg-black\",\n    componentColorTheme: \"white\",\n    backgroundColorValue: COLORS.pink,\n    textColorValue: COLORS.black,\n    textGradientValue: \"bg-dark-blue-animated-text\"\n  },\n  lightOrange: {\n    backgroundColor: \"bg-light-orange\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-black\",\n    translucentTextColor: \"text-black-60\",\n    hoverTextColor: \"\",\n    borderColor: \"border-light-orange\",\n    ruleColor: \"bg-black\",\n    componentColorTheme: \"white\",\n    backgroundColorValue: COLORS.lightOrange,\n    textColorValue: COLORS.black,\n    textGradientValue: \"bg-dark-blue-animated-text\"\n  },\n  lightYellow: {\n    backgroundColor: \"bg-light-yellow\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-black\",\n    translucentTextColor: \"text-black-60\",\n    hoverTextColor: \"\",\n    borderColor: \"border-light-yellow\",\n    ruleColor: \"bg-black\",\n    componentColorTheme: \"white\",\n    backgroundColorValue: COLORS.lightYellow,\n    textColorValue: COLORS.black,\n    textGradientValue: \"bg-dark-blue-animated-text\"\n  },\n  lightGreen: {\n    backgroundColor: \"bg-light-green\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-black\",\n    translucentTextColor: \"text-black-60\",\n    hoverTextColor: \"\",\n    borderColor: \"border-light-green\",\n    ruleColor: \"bg-black\",\n    componentColorTheme: \"white\",\n    backgroundColorValue: COLORS.lightGreen,\n    textColorValue: COLORS.black,\n    textGradientValue: \"bg-dark-blue-animated-text\"\n  },\n  goaPurple: {\n    backgroundColor: \"bg-goa-purple\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-black\",\n    translucentTextColor: \"text-black\",\n    hoverTextColor: \"\",\n    borderColor: \"border-goa-purple\",\n    ruleColor: \"bg-black\",\n    componentColorTheme: \"white\",\n    backgroundColorValue: COLORS.goaPurple,\n    textColorValue: COLORS.black,\n    textGradientValue: \"bg-dark-blue-animated-text\"\n  },\n  goaPink: {\n    backgroundColor: \"bg-goa-pink\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-black\",\n    translucentTextColor: \"text-black-80\",\n    hoverTextColor: \"\",\n    borderColor: \"border-goa-pink\",\n    ruleColor: \"bg-black\",\n    componentColorTheme: \"white\",\n    backgroundColorValue: COLORS.goaPink,\n    textColorValue: COLORS.black,\n    textGradientValue: \"bg-dark-blue-animated-text\"\n  },\n  teal: {\n    backgroundColor: \"bg-goa-teal\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-black\",\n    translucentTextColor: \"text-black-60\",\n    hoverTextColor: \"\",\n    borderColor: \"border-goa-teal\",\n    ruleColor: \"bg-black\",\n    componentColorTheme: \"white\",\n    backgroundColorValue: COLORS.goaTeal,\n    textColorValue: COLORS.black,\n    textGradientValue: \"bg-dark-blue-animated-text\"\n  },\n  darkTeal: {\n    backgroundColor: \"bg-goa-dark-teal\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-white\",\n    translucentTextColor: \"text-white\",\n    hoverTextColor: \"\",\n    borderColor: \"border-goa-dark-teal\",\n    ruleColor: \"bg-white\",\n    componentColorTheme: \"black\",\n    backgroundColorValue: COLORS.goaDarkTeal,\n    textColorValue: COLORS.white,\n    textGradientValue: \"bg-blue-green-animated-text\"\n  },\n  futurePink: {\n    backgroundColor: \"bg-future-pink\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-black\",\n    translucentTextColor: \"text-black-60\",\n    hoverTextColor: \"\",\n    borderColor: \"border-future-pink\",\n    ruleColor: \"bg-black\",\n    componentColorTheme: \"white\",\n    backgroundColorValue: COLORS.futurePink,\n    textColorValue: COLORS.black,\n    textGradientValue: \"bg-dark-blue-animated-text\"\n  },\n  futureGreen: {\n    backgroundColor: \"bg-future-green\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-black\",\n    translucentTextColor: \"text-black\",\n    hoverTextColor: \"\",\n    borderColor: \"border-future-green\",\n    ruleColor: \"bg-black\",\n    componentColorTheme: \"white\",\n    backgroundColorValue: COLORS.futureGreen,\n    textColorValue: COLORS.black,\n    textGradientValue: \"bg-dark-blue-animated-text\"\n  },\n  scholarsMaroon: {\n    backgroundColor: \"bg-scholars-maroon\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-white\",\n    translucentTextColor: \"text-white-80\",\n    hoverTextColor: \"\",\n    borderColor: \"border-scholars-maroon\",\n    ruleColor: \"bg-white\",\n    componentColorTheme: \"black\",\n    backgroundColorValue: COLORS.scholarsMaroon,\n    textColorValue: COLORS.white,\n    textGradientValue: \"bg-blue-green-animated-text\"\n  },\n  sand: {\n    backgroundColor: \"bg-scholars-sand\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-black\",\n    translucentTextColor: \"text-black-60\",\n    hoverTextColor: \"\",\n    borderColor: \"border-scholars-sand\",\n    ruleColor: \"bg-black\",\n    componentColorTheme: \"white\",\n    backgroundColorValue: COLORS.scholarsSand,\n    textColorValue: COLORS.black,\n    textGradientValue: \"bg-dark-blue-animated-text\"\n  }\n};\n\n/**\n * @typedef {Object.<PatternThemeName, Theme>} ThemeTable2\n * @description An object that maps theme names to their corresponding theme configurations.\n */\nexport const PATTERN_THEMES = {\n  skyBlueSpark: {\n    ...STANDARD_THEMES.skyBlue,\n    pattern: \"spark\"\n  },\n  darkBlueRadiate: {\n    ...STANDARD_THEMES.darkBlue,\n    pattern: \"radiate\"\n  },\n  yellowAmplify: {\n    ...STANDARD_THEMES.yellow,\n    pattern: \"amplify\"\n  }\n};\n\n/**\n * @typedef {Object.<DemForumThemeName, Theme>} ThemeTable3\n * hard-coded one-off themes\n */\nexport const DEM_FORUM_THEMES = {\n  \"Dem Forum Light Green Sky Blue\": {\n    backgroundColor: \"bg-gradient-radial from-light-green from-49% to-sky-blue to-94%\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-black\",\n    translucentTextColor: \"text-black-60\",\n    hoverTextColor: \"\",\n    borderColor: \"border-black\",\n    ruleColor: \"bg-black\",\n    componentColorTheme: \"white\",\n    backgroundColorValue: COLORS.skyBlue,\n    textColorValue: COLORS.black,\n    textGradientValue: \"bg-dark-blue-animated-text\"\n  },\n  \"Dem Forum Orange Cobalt Blue\": {\n    backgroundColor: \"bg-gradient-radial from-orange from-49% to-cobalt-blue to-94%\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-white\",\n    translucentTextColor: \"text-black-60\",\n    hoverTextColor: \"\",\n    borderColor: \"border-black\",\n    ruleColor: \"bg-white\",\n    componentColorTheme: \"black\",\n    backgroundColorValue: COLORS.cobaltBlue,\n    textColorValue: COLORS.black,\n    textGradientValue: \"bg-blue-green-animated-text\"\n  },\n  \"Dem Forum Orange Sky Blue\": {\n    backgroundColor: \"bg-gradient-radial from-orange from-49% to-sky-blue to-94%\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-black\",\n    translucentTextColor: \"text-black-60\",\n    hoverTextColor: \"\",\n    borderColor: \"border-black\",\n    ruleColor: \"bg-black\",\n    componentColorTheme: \"white\",\n    backgroundColorValue: COLORS.skyBlue,\n    textColorValue: COLORS.black,\n    textGradientValue: \"bg-dark-blue-animated-text\"\n  },\n  \"Dem Forum Yellow Cobalt Blue\": {\n    backgroundColor: \"bg-gradient-radial from-yellow from-49% to-cobalt-blue to-94%\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-white\",\n    translucentTextColor: \"text-black-60\",\n    hoverTextColor: \"\",\n    borderColor: \"border-black\",\n    ruleColor: \"bg-white\",\n    componentColorTheme: \"black\",\n    backgroundColorValue: COLORS.cobaltBlue,\n    textColorValue: COLORS.black,\n    textGradientValue: \"bg-blue-green-animated-text\"\n  },\n  \"Dem Forum Yellow Orange\": {\n    backgroundColor: \"bg-gradient-radial from-yellow from-49% to-orange to-94%\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-black\",\n    translucentTextColor: \"text-black-60\",\n    hoverTextColor: \"\",\n    borderColor: \"border-black\",\n    ruleColor: \"bg-black\",\n    componentColorTheme: \"white\",\n    backgroundColorValue: COLORS.orange,\n    textColorValue: COLORS.black,\n    textGradientValue: \"bg-dark-blue-animated-text\"\n  },\n  \"Dem Forum Yellow Sky Blue\": {\n    backgroundColor: \"bg-gradient-radial from-yellow from-49% to-sky-blue to-94%\",\n    hoverBackgroundColor: \"\",\n    textColor: \"text-black\",\n    translucentTextColor: \"text-black-60\",\n    hoverTextColor: \"\",\n    borderColor: \"border-black\",\n    ruleColor: \"bg-black\",\n    componentColorTheme: \"white\",\n    backgroundColorValue: COLORS.skyBlue,\n    textColorValue: COLORS.black,\n    textGradientValue: \"bg-dark-blue-animated-text\"\n  }\n};\n\n/**\n * @typedef {Object.<ThemeName, Theme>} ThemeTable\n * @description An object that maps theme names to their corresponding theme configurations.\n */\nexport const THEMES = {\n  ...STANDARD_THEMES,\n  ...PATTERN_THEMES,\n  ...DEM_FORUM_THEMES\n};\n\n/**\n * @type {StandardThemeName[]}\n */\nexport const STANDARD_THEME_NAMES = Object.keys(STANDARD_THEMES);\n\n/**\n * @type {PatternThemeName[]}\n */\nexport const PATTERN_THEME_NAMES = Object.keys(PATTERN_THEMES);\n\n/**\n * @type {DemForumThemeName[]}\n */\nexport const DEM_FORUM_THEME_NAMES = Object.keys(DEM_FORUM_THEMES);\n\n/**\n * @type {ThemeName[]}\n */\nexport const THEME_NAMES = Object.keys(THEMES);\n\n/**\n *\n * @param {ThemeName} themeName\n * @returns {Theme | undefined}\n */\nexport const getTheme = (themeName) => {\n  if (!themeName) {\n    return;\n  }\n\n  if (!THEME_NAMES.includes(themeName)) {\n    // eslint-disable-next-line no-console\n    console.error(\n      `[ERROR] \"${themeName}\" is not a supported theme value. Must be one of: ${THEME_NAMES.join(\n        \" \"\n      )}`\n    );\n  }\n\n  return THEMES[themeName];\n};\n","<script>\n  // @ts-check\n  import { getTheme } from \"../utilities/themes\";\n\n  /** Primarily used for testing\n   * @type {string} */\n  export let id = undefined;\n\n  /**\n   * The theme of the button used to determine if it is black or white.\n   * @type {import('../utilities/themes').ThemeName}\n   */\n  export let theme = \"white\";\n\n  /**\n   * The text to be read by screen readers\n   * @type {string}\n   */\n  export let accessibilityLabel = \"Loading\";\n\n  /** @type { string } */\n  let containerClass = \"\";\n  export { containerClass as class };\n\n  const currentTheme = getTheme(theme ?? \"white\");\n  const dotColorValue = currentTheme.textColorValue;\n  const backgroundColorValue = currentTheme.backgroundColorValue;\n</script>\n\n<span\n  {id}\n  class=\"flex w-6 items-center justify-center {containerClass}\"\n  style=\"--dot-color: {dotColorValue}; --bg-color: {backgroundColorValue};\"\n>\n  <span class=\"loading\" />\n  <span class=\"sr-only\">{accessibilityLabel}</span>\n</span>\n\n<style>\n  .loading {\n    width: 6px;\n    aspect-ratio: 1;\n    animation: dots 0.9s infinite linear;\n  }\n\n  @keyframes dots {\n    0% {\n      box-shadow:\n        9px 0 var(--dot-color),\n        -9px 0 var(--bg-color);\n      background: var(--dot-color);\n    }\n    33% {\n      box-shadow:\n        9px 0 var(--dot-color),\n        -9px 0 var(--bg-color);\n      background: var(--bg-color);\n    }\n    66% {\n      box-shadow:\n        9px 0 var(--bg-color),\n        -9px 0 var(--dot-color);\n      background: var(--bg-color);\n    }\n    100% {\n      box-shadow:\n        9px 0 var(--bg-color),\n        -9px 0 var(--dot-color);\n      background: var(--dot-color);\n    }\n  }\n</style>\n","<script context=\"module\">\n  import { THEME_NAMES } from \"../utilities/themes\";\n  export const VALID_VARIANTS = /** @type {const} */ ([\"outline\", \"filled\"]);\n  export const VALID_THEMES = THEME_NAMES;\n  export const VALID_ICON_ALIGNMENTS = [\"leading\", \"trailing\"];\n  export const VALID_TYPES = /** @type {const} */ ([\"button\", \"submit\"]);\n</script>\n\n<script>\n  // @ts-check\n  import LoadingIndicator from \"./LoadingIndicator.svelte\";\n  import { validatePropValue } from \"../utilities/logs\";\n  import { getTheme } from \"../utilities/themes\";\n  import Icon, { ICON_NAMES } from \"./Icon.svelte\";\n\n  /** Primarily used for testing\n   * @type {string | undefined} */\n  export let id = undefined;\n\n  /** @type {HTMLElement | undefined} */\n  export let ref = undefined;\n\n  /**\n   * The external class for the button element.\n   * @type {string}\n   */\n  export let buttonClass = \"\";\n\n  /**\n   * The type of variants for the button.\n   * @type {typeof VALID_VARIANTS[number]}\n   */\n  export let variant = \"outline\";\n  validatePropValue({\n    componentName: \"Button\",\n    propName: \"variant\",\n    propValue: variant,\n    validPropValues: [...VALID_VARIANTS]\n  });\n\n  /**\n   * The theme of the button used to determine if it is black or white.\n   * @type {import('../utilities/themes').ThemeName}\n   */\n  export let theme = \"white\";\n\n  validatePropValue({\n    componentName: \"Button\",\n    propName: \"theme\",\n    propValue: theme,\n    validPropValues: VALID_THEMES\n  });\n\n  /**\n   * The type of the button used to determine if it is submit button or not.\n   * @type {typeof VALID_TYPES[number]}\n   */\n  export let type = \"button\";\n  validatePropValue({\n    componentName: \"Button\",\n    propName: \"type\",\n    propValue: type,\n    validPropValues: [...VALID_TYPES]\n  });\n\n  /** @type { boolean } */\n  export let disabled = false;\n\n  /**\n   * The url of the button if it behaves as link.\n   * @type {string}\n   */\n  export let url = undefined;\n\n  /**\n   * The label of the button.\n   * @type {string}\n   */\n  export let label = undefined;\n\n  /**\n   * The aria-label of the button. Must be provided when using Icon only button.\n   * @type {string}\n   */\n  export let ariaLabel = undefined;\n\n  /**\n   * The text to be displayed when the button is in the submitting state.\n   * @type {string}\n   */\n  export let submittingText = \"Submitting, please wait.\";\n\n  /**\n   * The name of the icon to be displayed in the button.\n   * It should match one of the keys in the ICON_NAMES object.\n   * @type {keyof typeof ICON_NAMES}\n   */\n  export let iconName = undefined;\n\n  export let isLoading = false;\n\n  /**\n   * The alignment of the icon in the button.\n   * It should match one of the values in the VALID_ICON_ALIGNMENTS array.\n   * @type {string}\n   */\n  export let iconAlignment = \"leading\";\n  validatePropValue({\n    propName: \"iconAlignment\",\n    propValue: iconAlignment,\n    validPropValues: VALID_ICON_ALIGNMENTS,\n    componentName: \"Button\"\n  });\n\n  /** @type {import('../utilities/themes').Theme}*/\n  $: componentColorTheme = getTheme(theme)?.componentColorTheme ?? \"white\";\n\n  /**\n   * @type {import('../utilities/themes.js').ThemeTable}\n   */\n  const buttonThemeClasses = {\n    white: {\n      outline:\n        \"bg-transparent border-black text-black hover:text-white focus-visible:outline-black\",\n      filled: \"bg-black text-white hover:text-black border-black focus-visible:outline-black\"\n    },\n    black: {\n      outline:\n        \"bg-transparent text-white hover:text-black border-white focus-visible:outline-white\",\n      filled: \"bg-white text-black hover:text-white border-white focus-visible:outline-white\"\n    }\n  };\n\n  const hoverThemeClasses = {\n    white: {\n      outline: \"hover:bg-black\",\n      filled: \"hover:bg-transparent\"\n    },\n    black: {\n      outline: \"hover:bg-white\",\n      filled: \"hover:bg-transparent\"\n    }\n  };\n\n  const disabledThemeClasses = {\n    white: {\n      outline: \"disabled:bg-transparent disabled:border-grey disabled:text-grey\",\n      filled: \"disabled:bg-transparent disabled:text-grey disabled:border-grey\"\n    },\n    black: {\n      outline: \"disabled:bg-transparent disabled:border-grey disabled:text-grey\",\n      filled: \"disabled:bg-transparent disabled:text-grey disabled:border-grey\"\n    }\n  };\n\n  const hasValidLabel = label?.length > 0;\n  const hasIcon = $$slots.icon || iconName;\n  const spacingClasses =\n    hasIcon && !hasValidLabel ? \"p-4\" : \"px-5 py-4 lg:px-6 lg:py-4 xl:px-8 xl:py-5\";\n  const iconSpacingClasses = iconAlignment === \"leading\" ? \"mr-2 xl:mr-4\" : \"ml-2 xl:ml-4\";\n  const iconAlignmentClasses = iconAlignment === \"leading\" ? \"\" : \"order-1\";\n  $: themeClasses = buttonThemeClasses[componentColorTheme][variant];\n  $: hoverClasses = hoverThemeClasses[componentColorTheme][variant];\n  $: disabledClasses = disabledThemeClasses[componentColorTheme][variant];\n</script>\n\n<svelte:element\n  this={url ? \"a\" : \"button\"}\n  bind:this={ref}\n  {id}\n  data-sveltekit-reload={url ? true : undefined}\n  aria-label={ariaLabel}\n  type={url ? undefined : type}\n  href={url ? url : undefined}\n  role={url ? undefined : \"button\"}\n  class=\"cta-md relative border-thin {themeClasses} {disabled ? disabledClasses : ''} {!disabled &&\n  !isLoading\n    ? hoverClasses\n    : ''} {spacingClasses} flex items-center transition-colors focus-visible:outline-dashed focus-visible:outline-offset-2 {buttonClass ||\n    'relative'}\"\n  disabled={disabled || isLoading}\n  on:focus\n  on:click\n  {...$$restProps}\n>\n  {#if isLoading}\n    <LoadingIndicator\n      class=\"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 transform\"\n      {theme}\n      accessibilityLabel={submittingText}\n    />\n  {/if}\n  {#if $$slots.icon || Object.keys(ICON_NAMES).some((name) => name === iconName)}\n    <span\n      class=\"{hasValidLabel && iconSpacingClasses} {iconAlignmentClasses} {isLoading\n        ? 'invisible'\n        : ''}\"\n    >\n      <slot name=\"icon\">\n        <Icon name={iconName} />\n      </slot>\n    </span>\n  {/if}\n  {#if hasValidLabel}\n    <span class={isLoading ? \"invisible\" : \"\"}>{label}</span>\n  {/if}\n  <slot />\n</svelte:element>\n","/*\nAdapted from https://github.com/mattdesl\nDistributed under MIT License https://github.com/mattdesl/eases/blob/master/LICENSE.md\n*/\nexport { identity as linear } from '../internal/index.js';\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function backInOut(t) {\n\tconst s = 1.70158 * 1.525;\n\tif ((t *= 2) < 1) return 0.5 * (t * t * ((s + 1) * t - s));\n\treturn 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function backIn(t) {\n\tconst s = 1.70158;\n\treturn t * t * ((s + 1) * t - s);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function backOut(t) {\n\tconst s = 1.70158;\n\treturn --t * t * ((s + 1) * t + s) + 1;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function bounceOut(t) {\n\tconst a = 4.0 / 11.0;\n\tconst b = 8.0 / 11.0;\n\tconst c = 9.0 / 10.0;\n\tconst ca = 4356.0 / 361.0;\n\tconst cb = 35442.0 / 1805.0;\n\tconst cc = 16061.0 / 1805.0;\n\tconst t2 = t * t;\n\treturn t < a\n\t\t? 7.5625 * t2\n\t\t: t < b\n\t\t? 9.075 * t2 - 9.9 * t + 3.4\n\t\t: t < c\n\t\t? ca * t2 - cb * t + cc\n\t\t: 10.8 * t * t - 20.52 * t + 10.72;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function bounceInOut(t) {\n\treturn t < 0.5 ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0)) : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function bounceIn(t) {\n\treturn 1.0 - bounceOut(1.0 - t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function circInOut(t) {\n\tif ((t *= 2) < 1) return -0.5 * (Math.sqrt(1 - t * t) - 1);\n\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function circIn(t) {\n\treturn 1.0 - Math.sqrt(1.0 - t * t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function circOut(t) {\n\treturn Math.sqrt(1 - --t * t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function cubicInOut(t) {\n\treturn t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function cubicIn(t) {\n\treturn t * t * t;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function cubicOut(t) {\n\tconst f = t - 1.0;\n\treturn f * f * f + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function elasticInOut(t) {\n\treturn t < 0.5\n\t\t? 0.5 * Math.sin(((+13.0 * Math.PI) / 2) * 2.0 * t) * Math.pow(2.0, 10.0 * (2.0 * t - 1.0))\n\t\t: 0.5 *\n\t\t\t\tMath.sin(((-13.0 * Math.PI) / 2) * (2.0 * t - 1.0 + 1.0)) *\n\t\t\t\tMath.pow(2.0, -10.0 * (2.0 * t - 1.0)) +\n\t\t\t\t1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function elasticIn(t) {\n\treturn Math.sin((13.0 * t * Math.PI) / 2) * Math.pow(2.0, 10.0 * (t - 1.0));\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function elasticOut(t) {\n\treturn Math.sin((-13.0 * (t + 1.0) * Math.PI) / 2) * Math.pow(2.0, -10.0 * t) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function expoInOut(t) {\n\treturn t === 0.0 || t === 1.0\n\t\t? t\n\t\t: t < 0.5\n\t\t? +0.5 * Math.pow(2.0, 20.0 * t - 10.0)\n\t\t: -0.5 * Math.pow(2.0, 10.0 - t * 20.0) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function expoIn(t) {\n\treturn t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0));\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function expoOut(t) {\n\treturn t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quadInOut(t) {\n\tt /= 0.5;\n\tif (t < 1) return 0.5 * t * t;\n\tt--;\n\treturn -0.5 * (t * (t - 2) - 1);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quadIn(t) {\n\treturn t * t;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quadOut(t) {\n\treturn -t * (t - 2.0);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quartInOut(t) {\n\treturn t < 0.5 ? +8.0 * Math.pow(t, 4.0) : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quartIn(t) {\n\treturn Math.pow(t, 4.0);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quartOut(t) {\n\treturn Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quintInOut(t) {\n\tif ((t *= 2) < 1) return 0.5 * t * t * t * t * t;\n\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quintIn(t) {\n\treturn t * t * t * t * t;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quintOut(t) {\n\treturn --t * t * t * t * t + 1;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function sineInOut(t) {\n\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function sineIn(t) {\n\tconst v = Math.cos(t * Math.PI * 0.5);\n\tif (Math.abs(v) < 1e-14) return 1;\n\telse return 1 - v;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function sineOut(t) {\n\treturn Math.sin((t * Math.PI) / 2);\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 `<path>` and `<polyline>`.\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](https://svelte.dev/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<any, Element>} */\n\tconst to_receive = new Map();\n\t/** @type {Map<any, Element>} */\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<any, Element>} items\n\t * @param {Map<any, Element>} 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 * Aspect ratios for images.\n * @typedef {Object} ImageAspectRatios\n * @property {string} RATIO_16_9 - Aspect ratio of 16:9.\n * @property {string} RATIO_1_1 - Aspect ratio of 1:1.\n * @property {string} RATIO_4_3 - Aspect ratio of 4:3.\n * @property {string} RATIO_3_2 - Aspect ratio of 3:2.\n * @property {string} RATIO_3_4 - Aspect ratio of 3:4.\n * @property {string} RATIO_NONE - Aspect ratio of none.\n */\n\n/**\n * Image aspect ratios.\n * @type {ImageAspectRatios}\n */\nexport const IMAGE_ASPECT_RATIOS = {\n  RATIO_16_9: \"16/9\",\n  RATIO_1_1: \"1/1\",\n  RATIO_4_3: \"4/3\",\n  RATIO_3_2: \"3/2\",\n  RATIO_3_4: \"3/4\",\n  RATIO_NONE: \"none\"\n};\n\n/**\n * @typedef {Object} AspectRatioClasses\n * @property {string} aspect-1/1 - Class for aspect ratio 1:1.\n * @property {string} aspect-16/9 - Class for aspect ratio 16:9.\n * @property {string} aspect-4/3 - Class for aspect ratio 4:3.\n * @property {string} aspect-3/2 - Class for aspect ratio 3:2.\n * @property {string} aspect-3/4 - Class for aspect ratio 3:4.\n * @property {string} aspect-none - Class for aspect ratio none.\n */\nexport const ASPECT_RATIO_CLASSES = {\n  [IMAGE_ASPECT_RATIOS.RATIO_1_1]: \"aspect-1/1\",\n  [IMAGE_ASPECT_RATIOS.RATIO_16_9]: \"aspect-16/9\",\n  [IMAGE_ASPECT_RATIOS.RATIO_4_3]: \"aspect-4/3\",\n  [IMAGE_ASPECT_RATIOS.RATIO_3_2]: \"aspect-3/2\",\n  [IMAGE_ASPECT_RATIOS.RATIO_3_4]: \"aspect-3/4\",\n  [IMAGE_ASPECT_RATIOS.RATIO_NONE]: \"aspect-none\"\n};\n\n/**\n * Validates aspect ratio classes.\n *\n * @param {string} aspectRatioClasses - A string of space-separated aspect ratio Tailwind classes.\n */\nexport function validateAspectRatioClasses(aspectRatioClasses) {\n  const listOfClasses = aspectRatioClasses.split(\" \");\n  const validClasses = Object.values(ASPECT_RATIO_CLASSES);\n  const isValid = listOfClasses.every((aspectRatioClass) => {\n    return validClasses.some((validClass) => aspectRatioClass.includes(validClass));\n  });\n\n  if (!isValid) {\n    console.warn(\"Invalid aspect ratio class detected\");\n  }\n}\n","// @ts-check\n/** @typedef {Object} FocusTrapOptions\n * @property {string | undefined} triggerElementQuery\n * @property {boolean} shouldTrapFocus\n */\n\n/** @type {import('svelte/action').Action<HTMLElement, FocusTrapOptions>}  */\nexport const trapFocus = (node, options) => {\n  /** @type {AbortController | undefined} */\n  let abortController;\n  let currentOptions = options;\n  if (typeof window === \"undefined\") {\n    return;\n  }\n\n  /** @type {HTMLElement} */\n  let firstElement;\n  /** @type {HTMLElement} */\n  let secondElement;\n  /** @type {HTMLElement} */\n  let lastElement;\n\n  const focusableElements =\n    \"a:not([tabindex='-1']), area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]):not([tabindex='-1']), iframe, object, embed, *[contenteditable]\";\n\n  /** @type {(e: KeyboardEvent) => void} */\n  const onFirstElementKeydown = (e) => {\n    if (!e.shiftKey && e.code === \"Tab\") {\n      e.preventDefault();\n      secondElement.focus();\n    }\n    if (e.shiftKey && e.code === \"Tab\") {\n      e.preventDefault();\n      lastElement.focus();\n    }\n  };\n\n  /** @type {(e: KeyboardEvent) => void} */\n  const onSecondElementKeydown = (e) => {\n    if (e.shiftKey && e.code === \"Tab\") {\n      e.preventDefault();\n      firstElement.focus();\n    }\n  };\n\n  /** @type {(e: KeyboardEvent) => void} */\n  const onLastElementKeydown = (e) => {\n    if (!e.shiftKey && e.code === \"Tab\") {\n      e.preventDefault();\n      firstElement.focus();\n    }\n  };\n\n  const manageFocus = () => {\n    if (currentOptions?.shouldTrapFocus !== true) {\n      return;\n    }\n\n    abortController = new AbortController();\n    const signal = abortController.signal;\n\n    const focusableListList = node.querySelectorAll(focusableElements);\n\n    const focusableList = Array.from(focusableListList);\n\n    let triggerElement;\n    if (currentOptions?.triggerElementQuery) {\n      triggerElement = document.querySelector(options.triggerElementQuery);\n    }\n\n    if (triggerElement) {\n      focusableList.unshift(triggerElement);\n    }\n\n    if (focusableList.length < 2) {\n      return;\n    }\n\n    firstElement = /** @type {HTMLElement} */ (focusableList[0]);\n\n    // For external trigger support\n    secondElement = /** @type {HTMLElement} */ (focusableList[1]);\n\n    lastElement = /** @type {HTMLElement} */ (focusableList[focusableList.length - 1]);\n\n    firstElement?.addEventListener(\"keydown\", onFirstElementKeydown, { signal });\n    secondElement?.addEventListener(\"keydown\", onSecondElementKeydown, { signal });\n    lastElement?.addEventListener(\"keydown\", onLastElementKeydown, { signal });\n  };\n\n  const cleanUp = () => {\n    abortController?.abort();\n  };\n\n  const observationChange = () => {\n    cleanUp();\n    manageFocus();\n  };\n\n  const observer = new MutationObserver(observationChange);\n  observer.observe(node, { childList: true, subtree: true });\n\n  manageFocus();\n  return {\n    update(newOptions) {\n      currentOptions = newOptions;\n    },\n    destroy() {\n      observer.disconnect();\n      cleanUp();\n    }\n  };\n};\n","import mediaQueries from \"../design-tokens/mediaQueries\";\n// @ts-check\n\nexport const Breakpoints = /** @type {const} */ ({\n  sm: \"sm\",\n  md: \"md\",\n  lg: \"lg\",\n  xl: \"xl\"\n});\n\nexport const breakpointValues = /** @type {const} */ ({\n  [Breakpoints.sm]: 0, // No need to use media queries for small screens\n  [Breakpoints.md]: parseInt(mediaQueries[\"medium-min\"]),\n  [Breakpoints.lg]: parseInt(mediaQueries[\"large-min\"]),\n  [Breakpoints.xl]: parseInt(mediaQueries[\"xlarge-min\"])\n});\n\n/** @param {number} width */\nexport const getBreakpoint = (width) => {\n  if (width >= breakpointValues.xl) {\n    return Breakpoints.xl;\n  }\n  if (width >= breakpointValues.lg) {\n    return Breakpoints.lg;\n  }\n  if (width >= breakpointValues.md) {\n    return Breakpoints.md;\n  }\n\n  return Breakpoints.sm;\n};\n\nexport const breakpointWeights = /** @type {const} */ ({\n  [Breakpoints.sm]: 0,\n  [Breakpoints.md]: 1,\n  [Breakpoints.lg]: 2,\n  [Breakpoints.xl]: 3\n});\n\nexport const maxFontSizeMapForFullWidthText = /** @type {const} */ {\n  [Breakpoints.sm]: 195,\n  [Breakpoints.md]: 220,\n  [Breakpoints.lg]: 410,\n  [Breakpoints.xl]: 560\n};\n\nexport const isSmallOrMediumBreakpoint = (screenWidth) => {\n  const currentBreakpoint = getBreakpoint(screenWidth);\n  return breakpointWeights[currentBreakpoint] < breakpointWeights.lg;\n};\n","<script context=\"module\">\n  // @ts-check\n  /**\n   * Array of valid container elements for the Image component.\n   * @type {(\"figure\" | \"div\" | \"span\")[]}\n   */\n  export const VALID_CONTAINER_ELEMENTS = [\"figure\", \"div\", \"span\"];\n</script>\n\n<script>\n  // @ts-check\n  import { fade } from \"svelte/transition\";\n  import { validateAspectRatioClasses } from \"../utilities/aspectRatios\";\n  import { validatePropValue } from \"../utilities/logs\";\n  import { getTheme } from \"../utilities\";\n\n  /** Primarily used for testing\n   * @type {string}\n   *  */\n  export let id = null;\n\n  /**\n   * The source URL of the image.\n   * @type {string}\n   */\n  export let src;\n\n  /**\n   *\n   * @type {string} srcset - The srcset attribute for the image.\n   */\n  export let srcset;\n\n  /**\n   *\n   * @type {string} sizes - The sizes of the image.\n   */\n  export let sizes;\n\n  /**\n   * The alt text for the image, for accessibility.\n   * @type {string}\n   */\n  export let alt;\n\n  /**\n   * The theme in the card\n   * @type {import('../utilities/themes.js').StandardThemeName | undefined}\n   */\n  export let theme = undefined;\n\n  /**\n   * A string of space-separated aspect ratio Tailwind classes.\n   * @type {string}\n   * @default \"aspect-4/3\"\n   */\n  export let aspectRatioClasses = \"aspect-4/3\";\n  validateAspectRatioClasses(aspectRatioClasses);\n\n  /**\n   * The class for the container element.\n   * @type {string}\n   */\n  export let containerClass = \"\";\n\n  /**\n   * The container element for the image.\n   * @type {typeof VALID_CONTAINER_ELEMENTS[number]}\n   * @default \"figure\"\n   */\n  export let containerElement = \"figure\";\n  validatePropValue({\n    componentName: \"Image\",\n    propName: \"containerElement\",\n    propValue: containerElement,\n    validPropValues: VALID_CONTAINER_ELEMENTS\n  });\n\n  /**\n   * The class for the image element.\n   * @type {string}\n   */\n  export let elementClass = \"\";\n\n  /**\n   * Whether to eager load the image.\n   * @type {boolean}\n   */\n  export let eagerLoad = false;\n\n  /**\n   * The theme used for the image frame,\n   * doesn't really need to be reactive,\n   * but necessary to support theme switching in storybook at runtime.\n   *\n   * @type {string}\n   */\n  $: frameClasses = theme\n    ? `border-[12px] lg:border-[14px] xl:border-[16px] ${getTheme(theme)?.borderColor}`\n    : \"\";\n</script>\n\n<svelte:element this={containerElement} class=\"{aspectRatioClasses} {containerClass}\" {id}>\n  <img\n    class=\"h-full w-full object-cover object-center {frameClasses} {elementClass}\"\n    {src}\n    {alt}\n    {srcset}\n    {sizes}\n    aria-hidden={alt === \"\"}\n    loading={eagerLoad ? \"eager\" : \"lazy\"}\n    in:fade\n    data-chromatic=\"ignore\"\n  />\n</svelte:element>\n","<script context=\"module\">\n  // @ts-check\n  export const VALID_VARIANTS = [\"small\", \"large\", \"inline\"];\n</script>\n\n<script>\n  import Icon from \"./Icon.svelte\";\n  import { validatePropValue } from \"../utilities/logs\";\n  import { THEME_NAMES, getTheme } from \"../utilities/themes\";\n\n  /** Primarily used for testing\n   * @type {string} */\n  export let id = undefined;\n\n  export let theme = \"white\";\n  validatePropValue({\n    componentName: \"Button\",\n    propName: \"theme\",\n    propValue: theme,\n    validPropValues: THEME_NAMES\n  });\n  $: componentColorTheme = getTheme(theme)?.componentColorTheme ?? \"white\";\n\n  /**\n   * The variant of the link. It should be one of \"small\", \"large\", or \"inline\".\n   * @type { \"small\" | \"large\" | \"inline\" }\n   */\n  export let variant = \"small\";\n\n  validatePropValue({\n    componentName: \"Link\",\n    propName: \"variant\",\n    propValue: variant,\n    validPropValues: VALID_VARIANTS\n  });\n\n  /**\n   * The URL of the link.\n   * @type {string}\n   */\n  export let href = undefined;\n\n  /**\n   * The visible label of the link.\n   * @type {string}\n   */\n  export let label = \"\";\n\n  /**\n   * Determines if the link is disabled if it is a button.\n   * @type {boolean}\n   */\n  export let disabled = false;\n\n  /**\n   * Indicates whether the link is hidden from assistive technologies.\n   * @type {boolean}\n   */\n  export let ariaHidden = false;\n\n  /**\n   * Determines if the link is external.\n   * @type {boolean}\n   */\n  export let isExternal = false;\n\n  /**\n   * Indicates whether the link is currently being hovered.\n   * @type {boolean}\n   */\n  export let isLinkHovered = false;\n\n  /**\n   * Indicates whether the arrow should hide\n   * @type {boolean}\n   */\n  export let hideInternalLinkArrow = false;\n\n  /**\n   * Indicates whether the arrow should show on hover\n   * @type {boolean}\n   */\n  export let showLinkArrowOnHover = false;\n\n  /** @type { string } */\n  let linkClass = \"\";\n  export { linkClass as class };\n\n  const baseClasses =\n    \"outline-2 outline-offset-4 focus-visible:outline-dashed cursor-pointer relative\";\n\n  const themeClasses = {\n    white: \"text-black outline-black focus-visible:border-black\",\n    black: \"text-white outline-white focus-visible:border-white\"\n  };\n\n  const variantClasses = {\n    inline: \"inline\",\n    large: \"cta-lg flex items-center\",\n    small: \"cta-md flex items-center\"\n  };\n\n  const hoverClasses = {\n    inline: \"hover:before:w-[0px] hover:text-cobalt-blue\",\n    large: \"\",\n    small: \"\"\n  };\n\n  const disabledClasses = disabled ? \"disabled:text-grey disabled:pointer-events-none\" : \"\";\n\n  const iconClasses = {\n    inline: \"xl:w-6 xl:h-6 inline\",\n    large: \"ml-1 lg:ml-2 lg:w-6 lg:h-6\",\n    small: \"ml-1 xl:ml-2 xl:w-6 xl:h-6\"\n  };\n\n  const arrowClasses = showLinkArrowOnHover ? \"animate-opacity\" : \"\";\n\n  $: animationTriggerClass = isLinkHovered ? \"is-link-hovered\" : \"\";\n\n  const getElementType = () => {\n    let element;\n    if (href) {\n      element = \"a\";\n    } else if (ariaHidden) {\n      element = \"span\";\n    } else {\n      element = \"button\";\n    }\n    return element;\n  };\n\n  $: shouldShowArrow =\n    !(variant === \"inline\" && !isExternal) && (isExternal || !hideInternalLinkArrow);\n  $: animatedUnderlineClasses = variant !== \"inline\" ? \"animate-underline\" : \"\";\n  $: innerSpanClasses = variant == \"inline\" ? \"underline\" : \"\";\n</script>\n\n<!-- Note: this duplicated block of code is necessary because the internal {#if} Svelte code causes unwanted whitespace in the link  -->\n{#if shouldShowArrow || isExternal}\n  <svelte:element\n    this={getElementType()}\n    {id}\n    {href}\n    target={isExternal ? \"_blank\" : null}\n    rel={isExternal ? \"noopener noreferrer\" : null}\n    data-sveltekit-reload={href ? true : undefined}\n    disabled={href ? undefined : disabled}\n    aria-hidden={ariaHidden}\n    class=\"link {baseClasses} {variantClasses[variant]} {themeClasses[componentColorTheme]} \n  {disabledClasses} {linkClass} {hoverClasses[variant]} {animationTriggerClass}\"\n    role={undefined}\n    on:click\n    {...$$restProps}\n  >\n    <!-- This extra span is required here to encapsulate the child animation  -->\n    <span>\n      <span class={animatedUnderlineClasses}>\n        <span class={innerSpanClasses}>\n          <slot>{label}</slot>\n        </span>\n        {#if shouldShowArrow}\n          <span class=\"inline whitespace-nowrap {arrowClasses}\">\n            <span class=\"inline-block\">\n              <Icon\n                iconClass={iconClasses[variant]}\n                name={isExternal ? \"arrowUpRight\" : \"arrowRight\"}\n              />\n            </span>\n          </span>\n        {/if}\n      </span>\n    </span>\n    {#if isExternal}\n      <span class=\"sr-only\">(Opens in a new tab)</span>\n    {/if}\n  </svelte:element>\n{:else}\n  <svelte:element\n    this={getElementType()}\n    {id}\n    {href}\n    data-sveltekit-reload={href ? true : undefined}\n    disabled={href ? undefined : disabled}\n    aria-hidden={ariaHidden}\n    class=\"link {baseClasses} {variantClasses[variant]} {themeClasses[componentColorTheme]} \n  {disabledClasses} {linkClass} {hoverClasses[variant]} {animationTriggerClass}\"\n    role={undefined}\n    on:click\n    {...$$restProps}\n  >\n    <!-- This extra span is required here to encapsulate the child animation  -->\n    <span>\n      <span class={animatedUnderlineClasses}>\n        <span class={innerSpanClasses}>\n          <slot>{label}</slot>\n        </span>\n      </span>\n    </span>\n  </svelte:element>\n{/if}\n\n<style>\n  .animate-underline {\n    text-decoration: none;\n    background-image: linear-gradient(currentColor, currentColor);\n    background-repeat: no-repeat;\n    background-position: bottom left;\n    background-size: 0% 2px;\n    transition: background-size 300ms ease-in-out;\n  }\n\n  .animate-opacity {\n    opacity: 0;\n    transition: opacity 300ms ease-in-out;\n    margin-left: -5px;\n  }\n\n  .is-link-hovered .animate-underline,\n  .link:hover .animate-underline {\n    background-size: 100% 2px;\n    color: inherit;\n  }\n\n  .link:hover .animate-opacity,\n  .link:focus .animate-opacity {\n    opacity: 1;\n  }\n</style>\n","<script context=\"module\">\n  // @ts-check\n  /**\n   * valid grid columns for mobile, tablet and desktop\n   * @typedef {Object} GRID_COLUMNS\n   * @property {1 | 2 | 3 | 4} mobile - accepted mobile grid columns\n   * @property {1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12} tablet - accepted tablet grid columns\n   * @property {1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12} desktop - accepted desktop grid columns\n   */\n</script>\n\n<script>\n  // @ts-check\n  /** Primarily used for testing\n   * @type {string}\n   * */\n  export let id = undefined;\n\n  /** @type {HTMLElement | undefined} */\n  export let ref = undefined;\n\n  /** @type { string } */\n  export let gridElement = \"div\";\n\n  /** @type { string } */\n  export let gridClass = \"\";\n\n  /** \n  Subgrid columns for mobile, tablet and desktop\n  @type {GRID_COLUMNS} */\n  export let subGridColumns = null;\n\n  $: gridSpanMobile = subGridColumns?.mobile || 4;\n  $: gridSpanTablet = subGridColumns?.tablet || 12;\n  $: gridSpanDesktop = subGridColumns?.desktop || 12;\n\n  const mobileClasses = \"w-full grid grid-flow-row justify-stretch gap-x-grid-gutter\";\n  const mediumClasses = \"\";\n</script>\n\n<svelte:element\n  this={gridElement}\n  {id}\n  bind:this={ref}\n  style=\"--grid-span-mobile: {gridSpanMobile}; --grid-span-tablet: {gridSpanTablet}; --grid-span-desktop: {gridSpanDesktop}\"\n  class=\"grid-columns {mobileClasses} {mediumClasses} {gridClass}\"\n>\n  <slot />\n</svelte:element>\n\n<style>\n  .grid-columns {\n    grid-template-columns: repeat(var(--grid-span-mobile), minmax(0, 1fr));\n  }\n\n  @media (min-width: 680px) {\n    .grid-columns {\n      grid-template-columns: repeat(var(--grid-span-tablet), minmax(0, 1fr));\n    }\n  }\n\n  @media (min-width: 1200px) {\n    .grid-columns {\n      grid-template-columns: repeat(var(--grid-span-desktop), minmax(0, 1fr));\n    }\n  }\n</style>\n","<script>\n  // @ts-check\n  /** Primarily used for testing\n   * @type {string}\n   * */\n  export let id = undefined;\n\n  /** @type {HTMLElement | undefined} */\n  export let ref = undefined;\n\n  /** @type { string } */\n  export let containerElement = \"div\";\n\n  /** @type { \"regular\" | \"bleed\" } */\n  export let variant = \"regular\";\n\n  /** @type { string } */\n  export let containerClass = \"\";\n\n  /** @type { string } */\n  export let gridInnerClasses = \"\";\n\n  let outsideSpacingClasses = variant === \"bleed\" ? \"\" : \"px-7.5 lg:px-15\";\n</script>\n\n<svelte:element this={containerElement} {id} bind:this={ref} class={containerClass}>\n  <div\n    class=\"mx-auto h-full w-full max-w-container-content-max {outsideSpacingClasses} {gridInnerClasses}\"\n  >\n    <slot />\n  </div>\n</svelte:element>\n","<script>\n  import { getTheme } from \"../utilities/themes\";\n  import { validatePropValue } from \"../utilities/logs\";\n\n  /** Primarily used for testing\n   * @type {string}\n   * */\n  export let id = undefined;\n\n  /** @type { string } */\n  let className = \"\";\n  export { className as class };\n\n  /**\n   * The type which determines the thickness of the rule.\n   * @type {'thick' | 'thin'}\n   */\n  export let type = \"thin\";\n\n  validatePropValue({\n    componentName: \"Rule\",\n    propName: \"type\",\n    propValue: type,\n    validPropValues: [\"thin\", \"thick\"]\n  });\n\n  /**\n   * The theme of the component using the Rule.\n   * @type {import('../utilities/themes').ThemeName}\n   */\n  export let theme = \"white\";\n\n  $: themeClass = getTheme(theme)?.ruleColor || \"bg-black\";\n</script>\n\n{#if type === \"thick\"}\n  <span {id} class=\"block {themeClass} h-[8px] md:h-[10px] lg:h-[12px] {className}\" />\n{:else if type === \"thin\"}\n  <span {id} class=\"block {themeClass} h-[1px] {className}\" />\n{/if}\n","/**\n * marked v14.1.4 - a markdown parser\n * Copyright (c) 2011-2024, 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\n/**\n * Gets the original marked default options.\n */\nfunction _getDefaults() {\n    return {\n        async: false,\n        breaks: false,\n        extensions: null,\n        gfm: true,\n        hooks: null,\n        pedantic: false,\n        renderer: null,\n        silent: false,\n        tokenizer: null,\n        walkTokens: null,\n    };\n}\nlet _defaults = _getDefaults();\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    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;',\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape$1(html, encode) {\n    if (encode) {\n        if (escapeTest.test(html)) {\n            return html.replace(escapeReplace, getEscapeReplacement);\n        }\n    }\n    else {\n        if (escapeTestNoEncode.test(html)) {\n            return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n        }\n    }\n    return html;\n}\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n    let source = typeof regex === 'string' ? regex : regex.source;\n    opt = opt || '';\n    const obj = {\n        replace: (name, val) => {\n            let valSource = typeof val === 'string' ? val : val.source;\n            valSource = valSource.replace(caret, '$1');\n            source = source.replace(name, valSource);\n            return obj;\n        },\n        getRegex: () => {\n            return new RegExp(source, opt);\n        },\n    };\n    return obj;\n}\nfunction cleanUrl(href) {\n    try {\n        href = encodeURI(href).replace(/%25/g, '%');\n    }\n    catch {\n        return null;\n    }\n    return href;\n}\nconst noopTest = { exec: () => null };\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        let curr = offset;\n        while (--curr >= 0 && str[curr] === '\\\\')\n            escaped = !escaped;\n        if (escaped) {\n            // odd number of slashes means | is escaped\n            // so we leave it alone\n            return '|';\n        }\n        else {\n            // add space before unescaped |\n            return ' |';\n        }\n    }), cells = row.split(/ \\|/);\n    let i = 0;\n    // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n    if (!cells[0].trim()) {\n        cells.shift();\n    }\n    if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n        cells.pop();\n    }\n    if (count) {\n        if (cells.length > count) {\n            cells.splice(count);\n        }\n        else {\n            while (cells.length < count)\n                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 * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param 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    // Length of suffix matching the invert condition.\n    let suffLen = 0;\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        }\n        else if (currChar !== c && invert) {\n            suffLen++;\n        }\n        else {\n            break;\n        }\n    }\n    return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n    if (str.indexOf(b[1]) === -1) {\n        return -1;\n    }\n    let level = 0;\n    for (let i = 0; i < str.length; i++) {\n        if (str[i] === '\\\\') {\n            i++;\n        }\n        else if (str[i] === b[0]) {\n            level++;\n        }\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 outputLink(cap, link, raw, lexer) {\n    const href = link.href;\n    const title = link.title ? escape$1(link.title) : null;\n    const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\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$1(text),\n    };\n}\nfunction indentCodeCompensation(raw, text) {\n    const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n    if (matchIndentToCode === null) {\n        return text;\n    }\n    const indentToCode = matchIndentToCode[1];\n    return text\n        .split('\\n')\n        .map(node => {\n        const matchIndentInNode = node.match(/^\\s+/);\n        if (matchIndentInNode === null) {\n            return node;\n        }\n        const [indentInNode] = matchIndentInNode;\n        if (indentInNode.length >= indentToCode.length) {\n            return node.slice(indentToCode.length);\n        }\n        return node;\n    })\n        .join('\\n');\n}\n/**\n * Tokenizer\n */\nclass _Tokenizer {\n    options;\n    rules; // set by the lexer\n    lexer; // set by the lexer\n    constructor(options) {\n        this.options = options || _defaults;\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    code(src) {\n        const cap = this.rules.block.code.exec(src);\n        if (cap) {\n            const text = cap[0].replace(/^(?: {1,4}| {0,3}\\t)/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    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            return {\n                type: 'code',\n                raw,\n                lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n                text,\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            // remove trailing #s\n            if (/#$/.test(text)) {\n                const trimmed = rtrim(text, '#');\n                if (this.options.pedantic) {\n                    text = trimmed.trim();\n                }\n                else if (!trimmed || / $/.test(trimmed)) {\n                    // CommonMark requires space before trailing #s\n                    text = trimmed.trim();\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    hr(src) {\n        const cap = this.rules.block.hr.exec(src);\n        if (cap) {\n            return {\n                type: 'hr',\n                raw: rtrim(cap[0], '\\n'),\n            };\n        }\n    }\n    blockquote(src) {\n        const cap = this.rules.block.blockquote.exec(src);\n        if (cap) {\n            let lines = rtrim(cap[0], '\\n').split('\\n');\n            let raw = '';\n            let text = '';\n            const tokens = [];\n            while (lines.length > 0) {\n                let inBlockquote = false;\n                const currentLines = [];\n                let i;\n                for (i = 0; i < lines.length; i++) {\n                    // get lines up to a continuation\n                    if (/^ {0,3}>/.test(lines[i])) {\n                        currentLines.push(lines[i]);\n                        inBlockquote = true;\n                    }\n                    else if (!inBlockquote) {\n                        currentLines.push(lines[i]);\n                    }\n                    else {\n                        break;\n                    }\n                }\n                lines = lines.slice(i);\n                const currentRaw = currentLines.join('\\n');\n                const currentText = currentRaw\n                    // precede setext continuation with 4 spaces so it isn't a setext\n                    .replace(/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g, '\\n    $1')\n                    .replace(/^ {0,3}>[ \\t]?/gm, '');\n                raw = raw ? `${raw}\\n${currentRaw}` : currentRaw;\n                text = text ? `${text}\\n${currentText}` : currentText;\n                // parse blockquote lines as top level tokens\n                // merge paragraphs if this is a continuation\n                const top = this.lexer.state.top;\n                this.lexer.state.top = true;\n                this.lexer.blockTokens(currentText, tokens, true);\n                this.lexer.state.top = top;\n                // if there is no continuation then we are done\n                if (lines.length === 0) {\n                    break;\n                }\n                const lastToken = tokens[tokens.length - 1];\n                if (lastToken?.type === 'code') {\n                    // blockquote continuation cannot be preceded by a code block\n                    break;\n                }\n                else if (lastToken?.type === 'blockquote') {\n                    // include continuation in nested blockquote\n                    const oldToken = lastToken;\n                    const newText = oldToken.raw + '\\n' + lines.join('\\n');\n                    const newToken = this.blockquote(newText);\n                    tokens[tokens.length - 1] = newToken;\n                    raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n                    text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n                    break;\n                }\n                else if (lastToken?.type === 'list') {\n                    // include continuation in nested list\n                    const oldToken = lastToken;\n                    const newText = oldToken.raw + '\\n' + lines.join('\\n');\n                    const newToken = this.list(newText);\n                    tokens[tokens.length - 1] = newToken;\n                    raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n                    text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n                    lines = newText.substring(tokens[tokens.length - 1].raw.length).split('\\n');\n                    continue;\n                }\n            }\n            return {\n                type: 'blockquote',\n                raw,\n                tokens,\n                text,\n            };\n        }\n    }\n    list(src) {\n        let cap = this.rules.block.list.exec(src);\n        if (cap) {\n            let bull = cap[1].trim();\n            const isordered = bull.length > 1;\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            bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n            if (this.options.pedantic) {\n                bull = isordered ? bull : '[*+-]';\n            }\n            // Get next list item\n            const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n            let endsWithBlankLine = false;\n            // Check if current bullet point can start a new List Item\n            while (src) {\n                let endEarly = false;\n                let raw = '';\n                let itemContents = '';\n                if (!(cap = itemRegex.exec(src))) {\n                    break;\n                }\n                if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n                    break;\n                }\n                raw = cap[0];\n                src = src.substring(raw.length);\n                let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n                let nextLine = src.split('\\n', 1)[0];\n                let blankLine = !line.trim();\n                let indent = 0;\n                if (this.options.pedantic) {\n                    indent = 2;\n                    itemContents = line.trimStart();\n                }\n                else if (blankLine) {\n                    indent = cap[1].length + 1;\n                }\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                if (blankLine && /^[ \\t]*$/.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                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                    const htmlBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}<(?:[a-z].*>|!--)`, 'i');\n                    // Check if following lines should be included in List Item\n                    while (src) {\n                        const rawLine = src.split('\\n', 1)[0];\n                        let nextLineWithoutTabs;\n                        nextLine = rawLine;\n                        // Re-align to follow commonmark nesting rules\n                        if (this.options.pedantic) {\n                            nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, '  ');\n                            nextLineWithoutTabs = nextLine;\n                        }\n                        else {\n                            nextLineWithoutTabs = nextLine.replace(/\\t/g, '    ');\n                        }\n                        // End list item if found code fences\n                        if (fencesBeginRegex.test(nextLine)) {\n                            break;\n                        }\n                        // End list item if found start of new heading\n                        if (headingBeginRegex.test(nextLine)) {\n                            break;\n                        }\n                        // End list item if found start of html block\n                        if (htmlBeginRegex.test(nextLine)) {\n                            break;\n                        }\n                        // End list item if found start of new bullet\n                        if (nextBulletRegex.test(nextLine)) {\n                            break;\n                        }\n                        // Horizontal rule found\n                        if (hrRegex.test(nextLine)) {\n                            break;\n                        }\n                        if (nextLineWithoutTabs.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n                            itemContents += '\\n' + nextLineWithoutTabs.slice(indent);\n                        }\n                        else {\n                            // not enough indentation\n                            if (blankLine) {\n                                break;\n                            }\n                            // paragraph continuation unless last line was a different block level element\n                            if (line.replace(/\\t/g, '    ').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                            itemContents += '\\n' + nextLine;\n                        }\n                        if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n                            blankLine = true;\n                        }\n                        raw += rawLine + '\\n';\n                        src = src.substring(rawLine.length + 1);\n                        line = nextLineWithoutTabs.slice(indent);\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                    }\n                    else if (/\\n[ \\t]*\\n[ \\t]*$/.test(raw)) {\n                        endsWithBlankLine = true;\n                    }\n                }\n                let istask = null;\n                let ischecked;\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                list.items.push({\n                    type: 'list_item',\n                    raw,\n                    task: !!istask,\n                    checked: ischecked,\n                    loose: false,\n                    text: itemContents,\n                    tokens: [],\n                });\n                list.raw += raw;\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 = list.items[list.items.length - 1].raw.trimEnd();\n            list.items[list.items.length - 1].text = list.items[list.items.length - 1].text.trimEnd();\n            list.raw = list.raw.trimEnd();\n            // Item child tokens handled here at end because we needed to have the final item to trim it first\n            for (let i = 0; i < list.items.length; i++) {\n                this.lexer.state.top = false;\n                list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\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                    list.loose = hasMultipleLineBreaks;\n                }\n            }\n            // Set all items to loose if list is loose\n            if (list.loose) {\n                for (let i = 0; i < list.items.length; i++) {\n                    list.items[i].loose = true;\n                }\n            }\n            return list;\n        }\n    }\n    html(src) {\n        const cap = this.rules.block.html.exec(src);\n        if (cap) {\n            const token = {\n                type: 'html',\n                block: true,\n                raw: cap[0],\n                pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n                text: cap[0],\n            };\n            return token;\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.anyPunctuation, '$1') : '';\n            const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n            return {\n                type: 'def',\n                tag,\n                raw: cap[0],\n                href,\n                title,\n            };\n        }\n    }\n    table(src) {\n        const cap = this.rules.block.table.exec(src);\n        if (!cap) {\n            return;\n        }\n        if (!/[:|]/.test(cap[2])) {\n            // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n            return;\n        }\n        const headers = splitCells(cap[1]);\n        const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n        const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n        const item = {\n            type: 'table',\n            raw: cap[0],\n            header: [],\n            align: [],\n            rows: [],\n        };\n        if (headers.length !== aligns.length) {\n            // header and align columns must be equal, rows can be different.\n            return;\n        }\n        for (const align of aligns) {\n            if (/^ *-+: *$/.test(align)) {\n                item.align.push('right');\n            }\n            else if (/^ *:-+: *$/.test(align)) {\n                item.align.push('center');\n            }\n            else if (/^ *:-+ *$/.test(align)) {\n                item.align.push('left');\n            }\n            else {\n                item.align.push(null);\n            }\n        }\n        for (let i = 0; i < headers.length; i++) {\n            item.header.push({\n                text: headers[i],\n                tokens: this.lexer.inline(headers[i]),\n                header: true,\n                align: item.align[i],\n            });\n        }\n        for (const row of rows) {\n            item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n                return {\n                    text: cell,\n                    tokens: this.lexer.inline(cell),\n                    header: false,\n                    align: item.align[i],\n                };\n            }));\n        }\n        return item;\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    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    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    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$1(cap[1]),\n            };\n        }\n    }\n    tag(src) {\n        const cap = this.rules.inline.tag.exec(src);\n        if (cap) {\n            if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n                this.lexer.state.inLink = true;\n            }\n            else if (this.lexer.state.inLink && /^<\\/a>/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            }\n            else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n                this.lexer.state.inRawBlock = false;\n            }\n            return {\n                type: 'html',\n                raw: cap[0],\n                inLink: this.lexer.state.inLink,\n                inRawBlock: this.lexer.state.inRawBlock,\n                block: false,\n                text: cap[0],\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                // commonmark requires matching angle brackets\n                if (!(/>$/.test(trimmedUrl))) {\n                    return;\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            }\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                if (link) {\n                    href = link[1];\n                    title = link[3];\n                }\n            }\n            else {\n                title = cap[3] ? cap[3].slice(1, -1) : '';\n            }\n            href = href.trim();\n            if (/^</.test(href)) {\n                if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {\n                    // pedantic allows starting angle bracket without ending angle bracket\n                    href = href.slice(1);\n                }\n                else {\n                    href = href.slice(1, -1);\n                }\n            }\n            return outputLink(cap, {\n                href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n                title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title,\n            }, cap[0], this.lexer);\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            const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n            const link = links[linkString.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    emStrong(src, maskedSrc, prevChar = '') {\n        let match = this.rules.inline.emStrongLDelim.exec(src);\n        if (!match)\n            return;\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))\n            return;\n        const nextChar = match[1] || match[2] || '';\n        if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n            // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n            const lLength = [...match[0]].length - 1;\n            let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n            const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n            endReg.lastIndex = 0;\n            // Clip maskedSrc to same section of string as src (move to lexer?)\n            maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n            while ((match = endReg.exec(maskedSrc)) != null) {\n                rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n                if (!rDelim)\n                    continue; // skip single * in __abc*abc__\n                rLength = [...rDelim].length;\n                if (match[3] || match[4]) { // found another Left Delim\n                    delimTotal += rLength;\n                    continue;\n                }\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                delimTotal -= rLength;\n                if (delimTotal > 0)\n                    continue; // Haven't found enough closing delimiters\n                // Remove extra characters. *a*** -> *a*\n                rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n                // char length can be >1 for unicode characters;\n                const lastCharLength = [...match[0]][0].length;\n                const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\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                // 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    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$1(text, true);\n            return {\n                type: 'codespan',\n                raw: cap[0],\n                text,\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    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    autolink(src) {\n        const cap = this.rules.inline.autolink.exec(src);\n        if (cap) {\n            let text, href;\n            if (cap[2] === '@') {\n                text = escape$1(cap[1]);\n                href = 'mailto:' + text;\n            }\n            else {\n                text = escape$1(cap[1]);\n                href = text;\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    url(src) {\n        let cap;\n        if (cap = this.rules.inline.url.exec(src)) {\n            let text, href;\n            if (cap[2] === '@') {\n                text = escape$1(cap[0]);\n                href = 'mailto:' + text;\n            }\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$1(cap[0]);\n                if (cap[1] === 'www.') {\n                    href = 'http://' + cap[0];\n                }\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    inlineText(src) {\n        const cap = this.rules.inline.text.exec(src);\n        if (cap) {\n            let text;\n            if (this.lexer.state.inRawBlock) {\n                text = cap[0];\n            }\n            else {\n                text = escape$1(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 newline = /^(?:[ \\t]*(?:\\n|$))+/;\nconst blockCode = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n    .replace(/bull/g, bullet) // lists can interrupt\n    .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n    .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n    .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n    .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n    .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n    .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/)\n    .replace('label', _blockLabel)\n    .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n    .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n    .replace(/bull/g, bullet)\n    .getRegex();\nconst _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|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n    + '|tr|track|ul';\nconst _comment = /<!--(?:-?>|[\\s\\S]*?(?:-->|$))/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n    + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n    + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n    + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n    + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n    + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n    + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (6)\n    + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) open tag\n    + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) closing tag\n    + ')', 'i')\n    .replace('comment', _comment)\n    .replace('tag', _tag)\n    .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n    .getRegex();\nconst paragraph = edit(_paragraph)\n    .replace('hr', hr)\n    .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n    .replace('|lheading', '') // setext 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', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n    .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n    .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n    .replace('paragraph', paragraph)\n    .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n    blockquote,\n    code: blockCode,\n    def,\n    fences,\n    heading,\n    hr,\n    html,\n    lheading,\n    list,\n    newline,\n    paragraph,\n    table: noopTest,\n    text: blockText,\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n    + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n    + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n    .replace('hr', hr)\n    .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n    .replace('blockquote', ' {0,3}>')\n    .replace('code', '(?: {4}| {0,3}\\t)[^\\\\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', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n    .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n    .getRegex();\nconst blockGfm = {\n    ...blockNormal,\n    table: gfmTable,\n    paragraph: edit(_paragraph)\n        .replace('hr', hr)\n        .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n        .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n        .replace('table', gfmTable) // 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', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n        .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n        .getRegex(),\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n    ...blockNormal,\n    html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n        + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n        + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n        .replace('comment', _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: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n    heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n    fences: noopTest, // fences not supported\n    lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n    paragraph: edit(_paragraph)\n        .replace('hr', hr)\n        .replace('heading', ' *#{1,6} *[^\\n]')\n        .replace('lheading', lheading)\n        .replace('|table', '')\n        .replace('blockquote', ' {0,3}>')\n        .replace('|fences', '')\n        .replace('|list', '')\n        .replace('|html', '')\n        .replace('|tag', '')\n        .getRegex(),\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/;\n// list of unicode punctuation marks, plus any missing characters from CommonMark spec\nconst _punctuation = '\\\\p{P}\\\\p{S}';\nconst punctuation = edit(/^((?![*_])[\\spunctuation])/, 'u')\n    .replace(/punctuation/g, _punctuation).getRegex();\n// sequences em should skip over [title](link), `code`, <html>\nconst blockSkip = /\\[[^[\\]]*?\\]\\((?:\\\\.|[^\\\\\\(\\)]|\\((?:\\\\.|[^\\\\\\(\\)])*\\))*\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u')\n    .replace(/punct/g, _punctuation)\n    .getRegex();\nconst emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n    + '|[^*]+(?=[^*])' // Consume to delim\n    + '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n    + '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n    + '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n    + '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n    + '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n    + '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n    .replace(/punct/g, _punctuation)\n    .getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n    + '|[^_]+(?=[^_])' // Consume to delim\n    + '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n    + '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n    + '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n    + '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n    + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n    .replace(/punct/g, _punctuation)\n    .getRegex();\nconst anyPunctuation = edit(/\\\\([punct])/, 'gu')\n    .replace(/punct/g, _punctuation)\n    .getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n    .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n    .replace('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])?)+(?![-_])/)\n    .getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment'\n    + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n    + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n    + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n    + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n    + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>') // CDATA section\n    .replace('comment', _inlineComment)\n    .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n    .getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/)\n    .replace('label', _inlineLabel)\n    .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/)\n    .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n    .getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n    .replace('label', _inlineLabel)\n    .replace('ref', _blockLabel)\n    .getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n    .replace('ref', _blockLabel)\n    .getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n    .replace('reflink', reflink)\n    .replace('nolink', nolink)\n    .getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n    _backpedal: noopTest, // only used for GFM url\n    anyPunctuation,\n    autolink,\n    blockSkip,\n    br,\n    code: inlineCode,\n    del: noopTest,\n    emStrongLDelim,\n    emStrongRDelimAst,\n    emStrongRDelimUnd,\n    escape,\n    link,\n    nolink,\n    punctuation,\n    reflink,\n    reflinkSearch,\n    tag,\n    text: inlineText,\n    url: noopTest,\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n    ...inlineNormal,\n    link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n        .replace('label', _inlineLabel)\n        .getRegex(),\n    reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n        .replace('label', _inlineLabel)\n        .getRegex(),\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n    ...inlineNormal,\n    escape: edit(escape).replace('])', '~|])').getRegex(),\n    url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n        .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n        .getRegex(),\n    _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n    del: /^(~~?)(?=[^\\s~])((?:\\\\.|[^\\\\])*?(?:\\\\.|[^\\s~\\\\]))\\1(?=[^~]|$)/,\n    text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/,\n};\n/**\n * GFM + Line Breaks Inline Grammar\n */\nconst inlineBreaks = {\n    ...inlineGfm,\n    br: edit(br).replace('{2,}', '*').getRegex(),\n    text: edit(inlineGfm.text)\n        .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n        .replace(/\\{2,\\}/g, '*')\n        .getRegex(),\n};\n/**\n * exports\n */\nconst block = {\n    normal: blockNormal,\n    gfm: blockGfm,\n    pedantic: blockPedantic,\n};\nconst inline = {\n    normal: inlineNormal,\n    gfm: inlineGfm,\n    breaks: inlineBreaks,\n    pedantic: inlinePedantic,\n};\n\n/**\n * Block Lexer\n */\nclass _Lexer {\n    tokens;\n    options;\n    state;\n    tokenizer;\n    inlineQueue;\n    constructor(options) {\n        // TokenList cannot be created in one go\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        const rules = {\n            block: block.normal,\n            inline: inline.normal,\n        };\n        if (this.options.pedantic) {\n            rules.block = block.pedantic;\n            rules.inline = inline.pedantic;\n        }\n        else if (this.options.gfm) {\n            rules.block = block.gfm;\n            if (this.options.breaks) {\n                rules.inline = inline.breaks;\n            }\n            else {\n                rules.inline = inline.gfm;\n            }\n        }\n        this.tokenizer.rules = rules;\n    }\n    /**\n     * Expose Rules\n     */\n    static get rules() {\n        return {\n            block,\n            inline,\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     * Static Lex Inline Method\n     */\n    static lexInline(src, options) {\n        const lexer = new _Lexer(options);\n        return lexer.inlineTokens(src);\n    }\n    /**\n     * Preprocessing\n     */\n    lex(src) {\n        src = src\n            .replace(/\\r\\n|\\r/g, '\\n');\n        this.blockTokens(src, this.tokens);\n        for (let i = 0; i < this.inlineQueue.length; i++) {\n            const next = this.inlineQueue[i];\n            this.inlineTokens(next.src, next.tokens);\n        }\n        this.inlineQueue = [];\n        return this.tokens;\n    }\n    blockTokens(src, tokens = [], lastParagraphClipped = false) {\n        if (this.options.pedantic) {\n            src = src.replace(/\\t/g, '    ').replace(/^ +$/gm, '');\n        }\n        let token;\n        let lastToken;\n        let cutSrc;\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            // 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 unnecessary paragraph tags\n                    tokens[tokens.length - 1].raw += '\\n';\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\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                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\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            // heading\n            if (token = this.tokenizer.heading(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\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            // blockquote\n            if (token = this.tokenizer.blockquote(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\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            // html\n            if (token = this.tokenizer.html(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\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                }\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            // table (gfm)\n            if (token = this.tokenizer.table(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\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            // 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((getStartIndex) => {\n                    tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n                    if (typeof tempStart === 'number' && tempStart >= 0) {\n                        startIndex = Math.min(startIndex, tempStart);\n                    }\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                }\n                else {\n                    tokens.push(token);\n                }\n                lastParagraphClipped = (cutSrc.length !== src.length);\n                src = src.substring(token.raw.length);\n                continue;\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                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\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                }\n                else {\n                    throw new Error(errMsg);\n                }\n            }\n        }\n        this.state.top = true;\n        return tokens;\n    }\n    inline(src, tokens = []) {\n        this.inlineQueue.push({ src, tokens });\n        return tokens;\n    }\n    /**\n     * Lexing/Compiling\n     */\n    inlineTokens(src, tokens = []) {\n        let token, lastToken, cutSrc;\n        // String with links masked to avoid interference with em and strong\n        let maskedSrc = src;\n        let match;\n        let keepPrevChar, prevChar;\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) + '[' + 'a'.repeat(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) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n        }\n        // Mask out escaped characters\n        while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n            maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n        }\n        while (src) {\n            if (!keepPrevChar) {\n                prevChar = '';\n            }\n            keepPrevChar = false;\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            // escape\n            if (token = this.tokenizer.escape(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\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                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\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            // 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                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\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            // code\n            if (token = this.tokenizer.codespan(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\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            // del (gfm)\n            if (token = this.tokenizer.del(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // autolink\n            if (token = this.tokenizer.autolink(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // url (gfm)\n            if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\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((getStartIndex) => {\n                    tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n                    if (typeof tempStart === 'number' && tempStart >= 0) {\n                        startIndex = Math.min(startIndex, tempStart);\n                    }\n                });\n                if (startIndex < Infinity && startIndex >= 0) {\n                    cutSrc = src.substring(0, startIndex + 1);\n                }\n            }\n            if (token = this.tokenizer.inlineText(cutSrc)) {\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                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\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                }\n                else {\n                    throw new Error(errMsg);\n                }\n            }\n        }\n        return tokens;\n    }\n}\n\n/**\n * Renderer\n */\nclass _Renderer {\n    options;\n    parser; // set by the parser\n    constructor(options) {\n        this.options = options || _defaults;\n    }\n    space(token) {\n        return '';\n    }\n    code({ text, lang, escaped }) {\n        const langString = (lang || '').match(/^\\S*/)?.[0];\n        const code = text.replace(/\\n$/, '') + '\\n';\n        if (!langString) {\n            return '<pre><code>'\n                + (escaped ? code : escape$1(code, true))\n                + '</code></pre>\\n';\n        }\n        return '<pre><code class=\"language-'\n            + escape$1(langString)\n            + '\">'\n            + (escaped ? code : escape$1(code, true))\n            + '</code></pre>\\n';\n    }\n    blockquote({ tokens }) {\n        const body = this.parser.parse(tokens);\n        return `<blockquote>\\n${body}</blockquote>\\n`;\n    }\n    html({ text }) {\n        return text;\n    }\n    heading({ tokens, depth }) {\n        return `<h${depth}>${this.parser.parseInline(tokens)}</h${depth}>\\n`;\n    }\n    hr(token) {\n        return '<hr>\\n';\n    }\n    list(token) {\n        const ordered = token.ordered;\n        const start = token.start;\n        let body = '';\n        for (let j = 0; j < token.items.length; j++) {\n            const item = token.items[j];\n            body += this.listitem(item);\n        }\n        const type = ordered ? 'ol' : 'ul';\n        const startAttr = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n        return '<' + type + startAttr + '>\\n' + body + '</' + type + '>\\n';\n    }\n    listitem(item) {\n        let itemBody = '';\n        if (item.task) {\n            const checkbox = this.checkbox({ checked: !!item.checked });\n            if (item.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                }\n                else {\n                    item.tokens.unshift({\n                        type: 'text',\n                        raw: checkbox + ' ',\n                        text: checkbox + ' ',\n                    });\n                }\n            }\n            else {\n                itemBody += checkbox + ' ';\n            }\n        }\n        itemBody += this.parser.parse(item.tokens, !!item.loose);\n        return `<li>${itemBody}</li>\\n`;\n    }\n    checkbox({ checked }) {\n        return '<input '\n            + (checked ? 'checked=\"\" ' : '')\n            + 'disabled=\"\" type=\"checkbox\">';\n    }\n    paragraph({ tokens }) {\n        return `<p>${this.parser.parseInline(tokens)}</p>\\n`;\n    }\n    table(token) {\n        let header = '';\n        // header\n        let cell = '';\n        for (let j = 0; j < token.header.length; j++) {\n            cell += this.tablecell(token.header[j]);\n        }\n        header += this.tablerow({ text: cell });\n        let body = '';\n        for (let j = 0; j < token.rows.length; j++) {\n            const row = token.rows[j];\n            cell = '';\n            for (let k = 0; k < row.length; k++) {\n                cell += this.tablecell(row[k]);\n            }\n            body += this.tablerow({ text: cell });\n        }\n        if (body)\n            body = `<tbody>${body}</tbody>`;\n        return '<table>\\n'\n            + '<thead>\\n'\n            + header\n            + '</thead>\\n'\n            + body\n            + '</table>\\n';\n    }\n    tablerow({ text }) {\n        return `<tr>\\n${text}</tr>\\n`;\n    }\n    tablecell(token) {\n        const content = this.parser.parseInline(token.tokens);\n        const type = token.header ? 'th' : 'td';\n        const tag = token.align\n            ? `<${type} align=\"${token.align}\">`\n            : `<${type}>`;\n        return tag + content + `</${type}>\\n`;\n    }\n    /**\n     * span level renderer\n     */\n    strong({ tokens }) {\n        return `<strong>${this.parser.parseInline(tokens)}</strong>`;\n    }\n    em({ tokens }) {\n        return `<em>${this.parser.parseInline(tokens)}</em>`;\n    }\n    codespan({ text }) {\n        return `<code>${text}</code>`;\n    }\n    br(token) {\n        return '<br>';\n    }\n    del({ tokens }) {\n        return `<del>${this.parser.parseInline(tokens)}</del>`;\n    }\n    link({ href, title, tokens }) {\n        const text = this.parser.parseInline(tokens);\n        const cleanHref = cleanUrl(href);\n        if (cleanHref === null) {\n            return text;\n        }\n        href = cleanHref;\n        let out = '<a href=\"' + href + '\"';\n        if (title) {\n            out += ' title=\"' + title + '\"';\n        }\n        out += '>' + text + '</a>';\n        return out;\n    }\n    image({ href, title, text }) {\n        const cleanHref = cleanUrl(href);\n        if (cleanHref === null) {\n            return text;\n        }\n        href = cleanHref;\n        let out = `<img src=\"${href}\" alt=\"${text}\"`;\n        if (title) {\n            out += ` title=\"${title}\"`;\n        }\n        out += '>';\n        return out;\n    }\n    text(token) {\n        return 'tokens' in token && token.tokens ? this.parser.parseInline(token.tokens) : token.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    em({ text }) {\n        return text;\n    }\n    codespan({ text }) {\n        return text;\n    }\n    del({ text }) {\n        return text;\n    }\n    html({ text }) {\n        return text;\n    }\n    text({ text }) {\n        return text;\n    }\n    link({ text }) {\n        return '' + text;\n    }\n    image({ text }) {\n        return '' + text;\n    }\n    br() {\n        return '';\n    }\n}\n\n/**\n * Parsing & Compiling\n */\nclass _Parser {\n    options;\n    renderer;\n    textRenderer;\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.renderer.parser = this;\n        this.textRenderer = new _TextRenderer();\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     * Static Parse Inline Method\n     */\n    static parseInline(tokens, options) {\n        const parser = new _Parser(options);\n        return parser.parseInline(tokens);\n    }\n    /**\n     * Parse Loop\n     */\n    parse(tokens, top = true) {\n        let out = '';\n        for (let i = 0; i < tokens.length; i++) {\n            const anyToken = tokens[i];\n            // Run any renderer extensions\n            if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[anyToken.type]) {\n                const genericToken = anyToken;\n                const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n                if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(genericToken.type)) {\n                    out += ret || '';\n                    continue;\n                }\n            }\n            const token = anyToken;\n            switch (token.type) {\n                case 'space': {\n                    out += this.renderer.space(token);\n                    continue;\n                }\n                case 'hr': {\n                    out += this.renderer.hr(token);\n                    continue;\n                }\n                case 'heading': {\n                    out += this.renderer.heading(token);\n                    continue;\n                }\n                case 'code': {\n                    out += this.renderer.code(token);\n                    continue;\n                }\n                case 'table': {\n                    out += this.renderer.table(token);\n                    continue;\n                }\n                case 'blockquote': {\n                    out += this.renderer.blockquote(token);\n                    continue;\n                }\n                case 'list': {\n                    out += this.renderer.list(token);\n                    continue;\n                }\n                case 'html': {\n                    out += this.renderer.html(token);\n                    continue;\n                }\n                case 'paragraph': {\n                    out += this.renderer.paragraph(token);\n                    continue;\n                }\n                case 'text': {\n                    let textToken = token;\n                    let body = this.renderer.text(textToken);\n                    while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n                        textToken = tokens[++i];\n                        body += '\\n' + this.renderer.text(textToken);\n                    }\n                    if (top) {\n                        out += this.renderer.paragraph({\n                            type: 'paragraph',\n                            raw: body,\n                            text: body,\n                            tokens: [{ type: 'text', raw: body, text: body }],\n                        });\n                    }\n                    else {\n                        out += body;\n                    }\n                    continue;\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                    }\n                    else {\n                        throw new Error(errMsg);\n                    }\n                }\n            }\n        }\n        return out;\n    }\n    /**\n     * Parse Inline Tokens\n     */\n    parseInline(tokens, renderer) {\n        renderer = renderer || this.renderer;\n        let out = '';\n        for (let i = 0; i < tokens.length; i++) {\n            const anyToken = tokens[i];\n            // Run any renderer extensions\n            if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[anyToken.type]) {\n                const ret = this.options.extensions.renderers[anyToken.type].call({ parser: this }, anyToken);\n                if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(anyToken.type)) {\n                    out += ret || '';\n                    continue;\n                }\n            }\n            const token = anyToken;\n            switch (token.type) {\n                case 'escape': {\n                    out += renderer.text(token);\n                    break;\n                }\n                case 'html': {\n                    out += renderer.html(token);\n                    break;\n                }\n                case 'link': {\n                    out += renderer.link(token);\n                    break;\n                }\n                case 'image': {\n                    out += renderer.image(token);\n                    break;\n                }\n                case 'strong': {\n                    out += renderer.strong(token);\n                    break;\n                }\n                case 'em': {\n                    out += renderer.em(token);\n                    break;\n                }\n                case 'codespan': {\n                    out += renderer.codespan(token);\n                    break;\n                }\n                case 'br': {\n                    out += renderer.br(token);\n                    break;\n                }\n                case 'del': {\n                    out += renderer.del(token);\n                    break;\n                }\n                case 'text': {\n                    out += renderer.text(token);\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                    }\n                    else {\n                        throw new Error(errMsg);\n                    }\n                }\n            }\n        }\n        return out;\n    }\n}\n\nclass _Hooks {\n    options;\n    block;\n    constructor(options) {\n        this.options = options || _defaults;\n    }\n    static passThroughHooks = new Set([\n        'preprocess',\n        'postprocess',\n        'processAllTokens',\n    ]);\n    /**\n     * Process markdown before marked\n     */\n    preprocess(markdown) {\n        return markdown;\n    }\n    /**\n     * Process HTML after marked is finished\n     */\n    postprocess(html) {\n        return html;\n    }\n    /**\n     * Process all tokens before walk tokens\n     */\n    processAllTokens(tokens) {\n        return tokens;\n    }\n    /**\n     * Provide function to tokenize markdown\n     */\n    provideLexer() {\n        return this.block ? _Lexer.lex : _Lexer.lexInline;\n    }\n    /**\n     * Provide function to parse tokens\n     */\n    provideParser() {\n        return this.block ? _Parser.parse : _Parser.parseInline;\n    }\n}\n\nclass Marked {\n    defaults = _getDefaults();\n    options = this.setOptions;\n    parse = this.parseMarkdown(true);\n    parseInline = this.parseMarkdown(false);\n    Parser = _Parser;\n    Renderer = _Renderer;\n    TextRenderer = _TextRenderer;\n    Lexer = _Lexer;\n    Tokenizer = _Tokenizer;\n    Hooks = _Hooks;\n    constructor(...args) {\n        this.use(...args);\n    }\n    /**\n     * Run callback for every token\n     */\n    walkTokens(tokens, callback) {\n        let values = [];\n        for (const token of tokens) {\n            values = values.concat(callback.call(this, token));\n            switch (token.type) {\n                case 'table': {\n                    const tableToken = token;\n                    for (const cell of tableToken.header) {\n                        values = values.concat(this.walkTokens(cell.tokens, callback));\n                    }\n                    for (const row of tableToken.rows) {\n                        for (const cell of row) {\n                            values = values.concat(this.walkTokens(cell.tokens, callback));\n                        }\n                    }\n                    break;\n                }\n                case 'list': {\n                    const listToken = token;\n                    values = values.concat(this.walkTokens(listToken.items, callback));\n                    break;\n                }\n                default: {\n                    const genericToken = token;\n                    if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n                        this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n                            const tokens = genericToken[childTokens].flat(Infinity);\n                            values = values.concat(this.walkTokens(tokens, callback));\n                        });\n                    }\n                    else if (genericToken.tokens) {\n                        values = values.concat(this.walkTokens(genericToken.tokens, callback));\n                    }\n                }\n            }\n        }\n        return values;\n    }\n    use(...args) {\n        const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n        args.forEach((pack) => {\n            // copy options to new object\n            const opts = { ...pack };\n            // set async to true if it was set to true before\n            opts.async = this.defaults.async || opts.async || false;\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 ('renderer' in ext) { // 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                        }\n                        else {\n                            extensions.renderers[ext.name] = ext.renderer;\n                        }\n                    }\n                    if ('tokenizer' in ext) { // 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                        const extLevel = extensions[ext.level];\n                        if (extLevel) {\n                            extLevel.unshift(ext.tokenizer);\n                        }\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                                }\n                                else {\n                                    extensions.startBlock = [ext.start];\n                                }\n                            }\n                            else if (ext.level === 'inline') {\n                                if (extensions.startInline) {\n                                    extensions.startInline.push(ext.start);\n                                }\n                                else {\n                                    extensions.startInline = [ext.start];\n                                }\n                            }\n                        }\n                    }\n                    if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n                        extensions.childTokens[ext.name] = ext.childTokens;\n                    }\n                });\n                opts.extensions = extensions;\n            }\n            // ==-- Parse \"overwrite\" extensions --== //\n            if (pack.renderer) {\n                const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n                for (const prop in pack.renderer) {\n                    if (!(prop in renderer)) {\n                        throw new Error(`renderer '${prop}' does not exist`);\n                    }\n                    if (['options', 'parser'].includes(prop)) {\n                        // ignore options property\n                        continue;\n                    }\n                    const rendererProp = prop;\n                    const rendererFunc = pack.renderer[rendererProp];\n                    const prevRenderer = renderer[rendererProp];\n                    // Replace renderer with func to run extension, but fall back if false\n                    renderer[rendererProp] = (...args) => {\n                        let ret = rendererFunc.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 = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n                for (const prop in pack.tokenizer) {\n                    if (!(prop in tokenizer)) {\n                        throw new Error(`tokenizer '${prop}' does not exist`);\n                    }\n                    if (['options', 'rules', 'lexer'].includes(prop)) {\n                        // ignore options, rules, and lexer properties\n                        continue;\n                    }\n                    const tokenizerProp = prop;\n                    const tokenizerFunc = pack.tokenizer[tokenizerProp];\n                    const prevTokenizer = tokenizer[tokenizerProp];\n                    // Replace tokenizer with func to run extension, but fall back if false\n                    // @ts-expect-error cannot type tokenizer function dynamically\n                    tokenizer[tokenizerProp] = (...args) => {\n                        let ret = tokenizerFunc.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            // ==-- Parse Hooks extensions --== //\n            if (pack.hooks) {\n                const hooks = this.defaults.hooks || new _Hooks();\n                for (const prop in pack.hooks) {\n                    if (!(prop in hooks)) {\n                        throw new Error(`hook '${prop}' does not exist`);\n                    }\n                    if (['options', 'block'].includes(prop)) {\n                        // ignore options and block properties\n                        continue;\n                    }\n                    const hooksProp = prop;\n                    const hooksFunc = pack.hooks[hooksProp];\n                    const prevHook = hooks[hooksProp];\n                    if (_Hooks.passThroughHooks.has(prop)) {\n                        // @ts-expect-error cannot type hook function dynamically\n                        hooks[hooksProp] = (arg) => {\n                            if (this.defaults.async) {\n                                return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n                                    return prevHook.call(hooks, ret);\n                                });\n                            }\n                            const ret = hooksFunc.call(hooks, arg);\n                            return prevHook.call(hooks, ret);\n                        };\n                    }\n                    else {\n                        // @ts-expect-error cannot type hook function dynamically\n                        hooks[hooksProp] = (...args) => {\n                            let ret = hooksFunc.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            // ==-- Parse WalkTokens extensions --== //\n            if (pack.walkTokens) {\n                const walkTokens = this.defaults.walkTokens;\n                const packWalktokens = pack.walkTokens;\n                opts.walkTokens = function (token) {\n                    let values = [];\n                    values.push(packWalktokens.call(this, token));\n                    if (walkTokens) {\n                        values = values.concat(walkTokens.call(this, token));\n                    }\n                    return values;\n                };\n            }\n            this.defaults = { ...this.defaults, ...opts };\n        });\n        return this;\n    }\n    setOptions(opt) {\n        this.defaults = { ...this.defaults, ...opt };\n        return this;\n    }\n    lexer(src, options) {\n        return _Lexer.lex(src, options ?? this.defaults);\n    }\n    parser(tokens, options) {\n        return _Parser.parse(tokens, options ?? this.defaults);\n    }\n    parseMarkdown(blockType) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const parse = (src, options) => {\n            const origOpt = { ...options };\n            const opt = { ...this.defaults, ...origOpt };\n            const throwError = this.onError(!!opt.silent, !!opt.async);\n            // throw error if an extension set async to true but parse was called with async: false\n            if (this.defaults.async === true && origOpt.async === false) {\n                return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.'));\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            if (opt.hooks) {\n                opt.hooks.options = opt;\n                opt.hooks.block = blockType;\n            }\n            const lexer = opt.hooks ? opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline);\n            const parser = opt.hooks ? opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline);\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.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n                    .then(tokens => opt.walkTokens ? Promise.all(this.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            try {\n                if (opt.hooks) {\n                    src = opt.hooks.preprocess(src);\n                }\n                let tokens = lexer(src, opt);\n                if (opt.hooks) {\n                    tokens = opt.hooks.processAllTokens(tokens);\n                }\n                if (opt.walkTokens) {\n                    this.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            }\n            catch (e) {\n                return throwError(e);\n            }\n        };\n        return parse;\n    }\n    onError(silent, async) {\n        return (e) => {\n            e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n            if (silent) {\n                const msg = '<p>An error occurred:</p><pre>'\n                    + escape$1(e.message + '', true)\n                    + '</pre>';\n                if (async) {\n                    return Promise.resolve(msg);\n                }\n                return msg;\n            }\n            if (async) {\n                return Promise.reject(e);\n            }\n            throw e;\n        };\n    }\n}\n\nconst markedInstance = new Marked();\nfunction marked(src, opt) {\n    return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n    marked.setOptions = function (options) {\n        markedInstance.setOptions(options);\n        marked.defaults = markedInstance.defaults;\n        changeDefaults(marked.defaults);\n        return marked;\n    };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n    markedInstance.use(...args);\n    marked.defaults = markedInstance.defaults;\n    changeDefaults(marked.defaults);\n    return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n    return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\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.Hooks = _Hooks;\nmarked.parse = marked;\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 as Hooks, _Lexer as Lexer, Marked, _Parser as Parser, _Renderer as Renderer, _TextRenderer as TextRenderer, _Tokenizer as Tokenizer, _defaults as defaults, _getDefaults as getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };\n//# sourceMappingURL=marked.esm.js.map\n","/*! @license DOMPurify 3.2.4 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.4/LICENSE */\n\n'use strict';\n\nconst {\n  entries,\n  setPrototypeOf,\n  isFrozen,\n  getPrototypeOf,\n  getOwnPropertyDescriptor\n} = Object;\nlet {\n  freeze,\n  seal,\n  create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n  apply,\n  construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n  freeze = function freeze(x) {\n    return x;\n  };\n}\nif (!seal) {\n  seal = function seal(x) {\n    return x;\n  };\n}\nif (!apply) {\n  apply = function apply(fun, thisValue, args) {\n    return fun.apply(thisValue, args);\n  };\n}\nif (!construct) {\n  construct = function construct(Func, args) {\n    return new Func(...args);\n  };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction 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    return apply(func, thisArg, args);\n  };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction 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    return construct(func, args);\n  };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n  let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\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  let l = array.length;\n  while (l--) {\n    let element = array[l];\n    if (typeof element === 'string') {\n      const lcElement = transformCaseFunc(element);\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        element = lcElement;\n      }\n    }\n    set[element] = true;\n  }\n  return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n  for (let index = 0; index < array.length; index++) {\n    const isPropertyExist = objectHasOwnProperty(array, index);\n    if (!isPropertyExist) {\n      array[index] = null;\n    }\n  }\n  return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n  const newObject = create(null);\n  for (const [property, value] of entries(object)) {\n    const isPropertyExist = objectHasOwnProperty(object, property);\n    if (isPropertyExist) {\n      if (Array.isArray(value)) {\n        newObject[property] = cleanArray(value);\n      } else if (value && typeof value === 'object' && value.constructor === Object) {\n        newObject[property] = clone(value);\n      } else {\n        newObject[property] = value;\n      }\n    }\n  }\n  return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n  while (object !== null) {\n    const desc = getOwnPropertyDescriptor(object, prop);\n    if (desc) {\n      if (desc.get) {\n        return unapply(desc.get);\n      }\n      if (typeof desc.value === 'function') {\n        return unapply(desc.value);\n      }\n    }\n    object = getPrototypeOf(object);\n  }\n  function fallbackValue() {\n    return null;\n  }\n  return fallbackValue;\n}\n\nconst 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']);\nconst 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']);\nconst 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']);\n// 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.\nconst 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']);\nconst 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']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst 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', 'popover', 'popovertarget', 'popovertargetaction', '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', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', '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', 'exponent', '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', 'intercept', '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', 'slope', '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', 'tablevalues', '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']);\nconst 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']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst 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);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  ARIA_ATTR: ARIA_ATTR,\n  ATTR_WHITESPACE: ATTR_WHITESPACE,\n  CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n  DATA_ATTR: DATA_ATTR,\n  DOCTYPE_NAME: DOCTYPE_NAME,\n  ERB_EXPR: ERB_EXPR,\n  IS_ALLOWED_URI: IS_ALLOWED_URI,\n  IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n  MUSTACHE_EXPR: MUSTACHE_EXPR,\n  TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n  element: 1,\n  attribute: 2,\n  text: 3,\n  cdataSection: 4,\n  entityReference: 5,\n  // Deprecated\n  entityNode: 6,\n  // Deprecated\n  progressingInstruction: 7,\n  comment: 8,\n  document: 9,\n  documentType: 10,\n  documentFragment: 11,\n  notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n  return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n  if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n    return null;\n  }\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  let suffix = null;\n  const ATTR_NAME = 'data-tt-policy-suffix';\n  if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n    suffix = purifyHostElement.getAttribute(ATTR_NAME);\n  }\n  const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n  try {\n    return trustedTypes.createPolicy(policyName, {\n      createHTML(html) {\n        return html;\n      },\n      createScriptURL(scriptUrl) {\n        return scriptUrl;\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};\nconst _createHooksMap = function _createHooksMap() {\n  return {\n    afterSanitizeAttributes: [],\n    afterSanitizeElements: [],\n    afterSanitizeShadowDOM: [],\n    beforeSanitizeAttributes: [],\n    beforeSanitizeElements: [],\n    beforeSanitizeShadowDOM: [],\n    uponSanitizeAttribute: [],\n    uponSanitizeElement: [],\n    uponSanitizeShadowNode: []\n  };\n};\nfunction createDOMPurify() {\n  let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n  const DOMPurify = root => createDOMPurify(root);\n  DOMPurify.version = '3.2.4';\n  DOMPurify.removed = [];\n  if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\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  let {\n    document\n  } = window;\n  const originalDocument = document;\n  const currentScript = originalDocument.currentScript;\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 remove = lookupGetter(ElementPrototype, 'remove');\n  const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n  const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n  const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n  // 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  if (typeof HTMLTemplateElement === 'function') {\n    const template = document.createElement('template');\n    if (template.content && template.content.ownerDocument) {\n      document = template.content.ownerDocument;\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 = _createHooksMap();\n  /**\n   * Expose whether this browser supports running the full DOMPurify.\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    CUSTOM_ELEMENT\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  /* allowed element names */\n  let ALLOWED_TAGS = null;\n  const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n  /* Allowed attribute names */\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  let CUSTOM_ELEMENT_HANDLING = Object.seal(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  let FORBID_TAGS = null;\n  /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n  let FORBID_ATTR = null;\n  /* Decide if ARIA attributes are okay */\n  let ALLOW_ARIA_ATTR = true;\n  /* Decide if custom data attributes are okay */\n  let ALLOW_DATA_ATTR = true;\n  /* Decide if unknown protocols are okay */\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  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  let SAFE_FOR_TEMPLATES = false;\n  /* Output should be safe even for XML used within HTML and alike.\n   * This means, DOMPurify removes comments when containing risky content.\n   */\n  let SAFE_FOR_XML = true;\n  /* Decide if document with <html>... should be returned */\n  let WHOLE_DOCUMENT = false;\n  /* Track whether config is already set on this instance of DOMPurify. */\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  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  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  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  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  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  let SANITIZE_NAMED_PROPS = false;\n  const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n  /* Keep element content when removing element? */\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  let IN_PLACE = false;\n  /* Allow usage of profiles like html, svg and mathMl */\n  let USE_PROFILES = {};\n  /* Tags to ignore content of when KEEP_CONTENT is true */\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  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  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  let NAMESPACE = HTML_NAMESPACE;\n  let IS_EMPTY_INPUT = false;\n  /* Allowed XHTML+XML namespaces */\n  let ALLOWED_NAMESPACES = null;\n  const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n  let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n  let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n  // 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  const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n  /* Parsing of strict XHTML documents */\n  let PARSER_MEDIA_TYPE = null;\n  const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n  const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n  let transformCaseFunc = null;\n  /* Keep a reference to config to pass to hooks */\n  let CONFIG = null;\n  /* Ideally, do not touch anything below this line */\n  /* ______________________________________________ */\n  const formElement = document.createElement('form');\n  const isRegexOrFunction = function isRegexOrFunction(testValue) {\n    return testValue instanceof RegExp || testValue instanceof Function;\n  };\n  /**\n   * _parseConfig\n   *\n   * @param cfg optional config literal\n   */\n  // eslint-disable-next-line complexity\n  const _parseConfig = function _parseConfig() {\n    let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    if (CONFIG && CONFIG === cfg) {\n      return;\n    }\n    /* Shield configuration object from tampering */\n    if (!cfg || typeof cfg !== 'object') {\n      cfg = {};\n    }\n    /* Shield configuration object from prototype pollution */\n    cfg = clone(cfg);\n    PARSER_MEDIA_TYPE =\n    // eslint-disable-next-line unicorn/prefer-includes\n    SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n    // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n    transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n    /* Set configuration parameters */\n    ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n    ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n    ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n    URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n    DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n    FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n    FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n    FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n    USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n    ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n    ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n    ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n    ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n    SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n    SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n    WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n    RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n    RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n    RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n    FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n    SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n    SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n    KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n    IN_PLACE = cfg.IN_PLACE || false; // Default false\n    IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n    NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n    MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n    HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n    CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n    if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n      CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\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    if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n      CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n    }\n    if (SAFE_FOR_TEMPLATES) {\n      ALLOW_DATA_ATTR = false;\n    }\n    if (RETURN_DOM_FRAGMENT) {\n      RETURN_DOM = true;\n    }\n    /* Parse profile info */\n    if (USE_PROFILES) {\n      ALLOWED_TAGS = addToSet({}, text);\n      ALLOWED_ATTR = [];\n      if (USE_PROFILES.html === true) {\n        addToSet(ALLOWED_TAGS, html$1);\n        addToSet(ALLOWED_ATTR, html);\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      if (USE_PROFILES.svgFilters === true) {\n        addToSet(ALLOWED_TAGS, svgFilters);\n        addToSet(ALLOWED_ATTR, svg);\n        addToSet(ALLOWED_ATTR, xml);\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    if (cfg.ADD_TAGS) {\n      if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n        ALLOWED_TAGS = clone(ALLOWED_TAGS);\n      }\n      addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n    }\n    if (cfg.ADD_ATTR) {\n      if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n        ALLOWED_ATTR = clone(ALLOWED_ATTR);\n      }\n      addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n    }\n    if (cfg.ADD_URI_SAFE_ATTR) {\n      addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n    }\n    if (cfg.FORBID_CONTENTS) {\n      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n        FORBID_CONTENTS = clone(FORBID_CONTENTS);\n      }\n      addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n    }\n    /* Add #text in case KEEP_CONTENT is set to true */\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    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    if (ALLOWED_TAGS.table) {\n      addToSet(ALLOWED_TAGS, ['tbody']);\n      delete FORBID_TAGS.tbody;\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      if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n        throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n      }\n      // Overwrite existing TrustedTypes policy.\n      trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n      // Sign local variables required by `sanitize`.\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      }\n      // If creating the internal policy succeeded sign internal variables.\n      if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n        emptyHTML = trustedTypesPolicy.createHTML('');\n      }\n    }\n    // Prevent further manipulation of configuration.\n    // Not available in IE8, Safari 5, etc.\n    if (freeze) {\n      freeze(cfg);\n    }\n    CONFIG = cfg;\n  };\n  /* Keep track of all possible SVG and MathML tags\n   * so that we can perform the namespace checks\n   * correctly. */\n  const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n  const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n  /**\n   * @param element a DOM element whose namespace is being checked\n   * @returns Return false if the element has a\n   *  namespace that a spec-compliant parser would never\n   *  return. Return true otherwise.\n   */\n  const _checkValidNamespace = function _checkValidNamespace(element) {\n    let parent = getParentNode(element);\n    // In JSDOM, if we're inside shadow DOM, then parentNode\n    // can be null. We just simulate parent in this case.\n    if (!parent || !parent.tagName) {\n      parent = {\n        namespaceURI: NAMESPACE,\n        tagName: 'template'\n      };\n    }\n    const tagName = stringToLowerCase(element.tagName);\n    const parentTagName = stringToLowerCase(parent.tagName);\n    if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return false;\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      }\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      if (parent.namespaceURI === MATHML_NAMESPACE) {\n        return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n      }\n      // We only allow elements that are defined in SVG\n      // spec. All others are disallowed in SVG namespace.\n      return Boolean(ALL_SVG_TAGS[tagName]);\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      }\n      // The only way to switch from SVG to MathML is via\n      // <math> and HTML integration points\n      if (parent.namespaceURI === SVG_NAMESPACE) {\n        return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n      }\n      // We only allow elements that are defined in MathML\n      // spec. All others are disallowed in MathML namespace.\n      return Boolean(ALL_MATHML_TAGS[tagName]);\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      if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n        return false;\n      }\n      // We disallow tags that are specific for MathML\n      // or SVG and should never appear in HTML namespace\n      return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n    }\n    // For XHTML and XML documents that support custom namespaces\n    if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return true;\n    }\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    return false;\n  };\n  /**\n   * _forceRemove\n   *\n   * @param node a DOM node\n   */\n  const _forceRemove = function _forceRemove(node) {\n    arrayPush(DOMPurify.removed, {\n      element: node\n    });\n    try {\n      // eslint-disable-next-line unicorn/prefer-dom-node-remove\n      getParentNode(node).removeChild(node);\n    } catch (_) {\n      remove(node);\n    }\n  };\n  /**\n   * _removeAttribute\n   *\n   * @param name an Attribute name\n   * @param element a DOM node\n   */\n  const _removeAttribute = function _removeAttribute(name, element) {\n    try {\n      arrayPush(DOMPurify.removed, {\n        attribute: element.getAttributeNode(name),\n        from: element\n      });\n    } catch (_) {\n      arrayPush(DOMPurify.removed, {\n        attribute: null,\n        from: element\n      });\n    }\n    element.removeAttribute(name);\n    // We void attribute values for unremovable \"is\" attributes\n    if (name === 'is') {\n      if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n        try {\n          _forceRemove(element);\n        } catch (_) {}\n      } else {\n        try {\n          element.setAttribute(name, '');\n        } catch (_) {}\n      }\n    }\n  };\n  /**\n   * _initDocument\n   *\n   * @param dirty - a string of dirty markup\n   * @return a DOM, filled with the dirty markup\n   */\n  const _initDocument = function _initDocument(dirty) {\n    /* Create a HTML document */\n    let doc = null;\n    let leadingWhitespace = null;\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    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    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    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    if (!doc || !doc.documentElement) {\n      doc = implementation.createDocument(NAMESPACE, 'template', null);\n      try {\n        doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n      } catch (_) {\n        // Syntax error if dirtyPayload is invalid xml\n      }\n    }\n    const body = doc.body || doc.documentElement;\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    if (NAMESPACE === HTML_NAMESPACE) {\n      return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n    }\n    return WHOLE_DOCUMENT ? doc.documentElement : body;\n  };\n  /**\n   * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n   *\n   * @param root The root element or node to start traversing on.\n   * @return The created NodeIterator\n   */\n  const _createNodeIterator = function _createNodeIterator(root) {\n    return createNodeIterator.call(root.ownerDocument || root, root,\n    // eslint-disable-next-line no-bitwise\n    NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n  };\n  /**\n   * _isClobbered\n   *\n   * @param element element to check for clobbering attacks\n   * @return true if clobbered, false if safe\n   */\n  const _isClobbered = function _isClobbered(element) {\n    return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n  };\n  /**\n   * Checks whether the given object is a DOM node.\n   *\n   * @param value object to check whether it's a DOM node\n   * @return true is object is a DOM node\n   */\n  const _isNode = function _isNode(value) {\n    return typeof Node === 'function' && value instanceof Node;\n  };\n  function _executeHooks(hooks, currentNode, data) {\n    arrayForEach(hooks, hook => {\n      hook.call(DOMPurify, currentNode, data, CONFIG);\n    });\n  }\n  /**\n   * _sanitizeElements\n   *\n   * @protect nodeName\n   * @protect textContent\n   * @protect removeChild\n   * @param currentNode to check for permission to exist\n   * @return true if node was killed, false if left alive\n   */\n  const _sanitizeElements = function _sanitizeElements(currentNode) {\n    let content = null;\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n    /* Check if element is clobbered or can clobber */\n    if (_isClobbered(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Now let's check the element's type and name */\n    const tagName = transformCaseFunc(currentNode.nodeName);\n    /* Execute a hook if present */\n    _executeHooks(hooks.uponSanitizeElement, currentNode, {\n      tagName,\n      allowedTags: ALLOWED_TAGS\n    });\n    /* Detect mXSS attempts abusing namespace confusion */\n    if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove any occurrence of processing instructions */\n    if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove any kind of possibly harmful comments */\n    if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove element if anything forbids its presence */\n    if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n      /* Check if we have a custom element to handle */\n      if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n          return false;\n        }\n        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n          return false;\n        }\n      }\n      /* Keep content except for bad-listed elements */\n      if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n        const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n        const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n        if (childNodes && parentNode) {\n          const childCount = childNodes.length;\n          for (let i = childCount - 1; i >= 0; --i) {\n            const childClone = cloneNode(childNodes[i], true);\n            childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n            parentNode.insertBefore(childClone, getNextSibling(currentNode));\n          }\n        }\n      }\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Check whether element has a valid namespace */\n    if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Make sure that older browsers don't get fallback-tag mXSS */\n    if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Sanitize element content to be template-safe */\n    if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n      /* Get the element's text content */\n      content = currentNode.textContent;\n      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n        content = stringReplace(content, 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    _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n    return false;\n  };\n  /**\n   * _isValidAttribute\n   *\n   * @param lcTag Lowercase tag name of containing element.\n   * @param lcName Lowercase attribute name.\n   * @param value Attribute value.\n   * @return Returns true if `value` is valid, otherwise false.\n   */\n  // eslint-disable-next-line complexity\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    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 (\n      // 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      _isBasicCustomElement(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)) ||\n      // 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    } 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    return true;\n  };\n  /**\n   * _isBasicCustomElement\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   *\n   * @param tagName name of the tag of the node to sanitize\n   * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n   */\n  const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n    return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n  };\n  /**\n   * _sanitizeAttributes\n   *\n   * @protect attributes\n   * @protect nodeName\n   * @protect removeAttribute\n   * @protect setAttribute\n   *\n   * @param currentNode to sanitize\n   */\n  const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n    const {\n      attributes\n    } = currentNode;\n    /* Check if we have attributes; if not we might have a text node */\n    if (!attributes || _isClobbered(currentNode)) {\n      return;\n    }\n    const hookEvent = {\n      attrName: '',\n      attrValue: '',\n      keepAttr: true,\n      allowedAttributes: ALLOWED_ATTR,\n      forceKeepAttr: undefined\n    };\n    let l = attributes.length;\n    /* Go backwards over all attributes; safely remove bad ones */\n    while (l--) {\n      const attr = attributes[l];\n      const {\n        name,\n        namespaceURI,\n        value: attrValue\n      } = attr;\n      const lcName = transformCaseFunc(name);\n      let value = name === 'value' ? attrValue : stringTrim(attrValue);\n      /* Execute a hook if present */\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      _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n      value = hookEvent.attrValue;\n      /* Full DOM Clobbering protection via namespace isolation,\n       * Prefix id and name attributes with `user-content-`\n       */\n      if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n        // Remove the attribute with this value\n        _removeAttribute(name, currentNode);\n        // Prefix the value and later re-create the attribute with the sanitized value\n        value = SANITIZE_NAMED_PROPS_PREFIX + value;\n      }\n      /* Work around a security issue with comments inside attributes */\n      if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title)/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Did the hooks approve of the attribute? */\n      if (hookEvent.forceKeepAttr) {\n        continue;\n      }\n      /* Remove attribute */\n      _removeAttribute(name, currentNode);\n      /* Did the hooks approve of the attribute? */\n      if (!hookEvent.keepAttr) {\n        continue;\n      }\n      /* Work around a security issue in jQuery 3.0 */\n      if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Sanitize attribute content to be template-safe */\n      if (SAFE_FOR_TEMPLATES) {\n        arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n          value = stringReplace(value, expr, ' ');\n        });\n      }\n      /* Is `value` valid for this attribute? */\n      const lcTag = transformCaseFunc(currentNode.nodeName);\n      if (!_isValidAttribute(lcTag, lcName, value)) {\n        continue;\n      }\n      /* Handle attributes that require Trusted Types */\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            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      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        if (_isClobbered(currentNode)) {\n          _forceRemove(currentNode);\n        } else {\n          arrayPop(DOMPurify.removed);\n        }\n      } catch (_) {}\n    }\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n  };\n  /**\n   * _sanitizeShadowDOM\n   *\n   * @param fragment to iterate over recursively\n   */\n  const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n    let shadowNode = null;\n    const shadowIterator = _createNodeIterator(fragment);\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n    while (shadowNode = shadowIterator.nextNode()) {\n      /* Execute a hook if present */\n      _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n      /* Sanitize tags and elements */\n      _sanitizeElements(shadowNode);\n      /* Check attributes next */\n      _sanitizeAttributes(shadowNode);\n      /* Deep shadow DOM detected */\n      if (shadowNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(shadowNode.content);\n      }\n    }\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n  };\n  // eslint-disable-next-line complexity\n  DOMPurify.sanitize = function (dirty) {\n    let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    let body = null;\n    let importedNode = null;\n    let currentNode = null;\n    let returnNode = null;\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    IS_EMPTY_INPUT = !dirty;\n    if (IS_EMPTY_INPUT) {\n      dirty = '<!-->';\n    }\n    /* Stringify, in case dirty is an object */\n    if (typeof dirty !== 'string' && !_isNode(dirty)) {\n      if (typeof dirty.toString === 'function') {\n        dirty = dirty.toString();\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    if (!DOMPurify.isSupported) {\n      return dirty;\n    }\n    /* Assign config vars */\n    if (!SET_CONFIG) {\n      _parseConfig(cfg);\n    }\n    /* Clean up removed elements */\n    DOMPurify.removed = [];\n    /* Check if dirty is correctly typed for IN_PLACE */\n    if (typeof dirty === 'string') {\n      IN_PLACE = false;\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        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      if (importedNode.nodeType === NODE_TYPE.element && 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 &&\n      // 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      body = _initDocument(dirty);\n      /* Check we have a DOM node from the data */\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    if (body && FORCE_BODY) {\n      _forceRemove(body.firstChild);\n    }\n    /* Get node iterator */\n    const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n    /* Now start iterating over the created document */\n    while (currentNode = nodeIterator.nextNode()) {\n      /* Sanitize tags and elements */\n      _sanitizeElements(currentNode);\n      /* Check attributes next */\n      _sanitizeAttributes(currentNode);\n      /* Shadow DOM detected, sanitize it */\n      if (currentNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(currentNode.content);\n      }\n    }\n    /* If we sanitized `dirty` in-place, return it. */\n    if (IN_PLACE) {\n      return dirty;\n    }\n    /* Return sanitized string or DOM */\n    if (RETURN_DOM) {\n      if (RETURN_DOM_FRAGMENT) {\n        returnNode = createDocumentFragment.call(body.ownerDocument);\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      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      return returnNode;\n    }\n    let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n    /* Serialize doctype if allowed */\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    if (SAFE_FOR_TEMPLATES) {\n      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n        serializedHTML = stringReplace(serializedHTML, expr, ' ');\n      });\n    }\n    return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n  };\n  DOMPurify.setConfig = function () {\n    let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    _parseConfig(cfg);\n    SET_CONFIG = true;\n  };\n  DOMPurify.clearConfig = function () {\n    CONFIG = null;\n    SET_CONFIG = false;\n  };\n  DOMPurify.isValidAttribute = function (tag, attr, value) {\n    /* Initialize shared config vars if necessary. */\n    if (!CONFIG) {\n      _parseConfig({});\n    }\n    const lcTag = transformCaseFunc(tag);\n    const lcName = transformCaseFunc(attr);\n    return _isValidAttribute(lcTag, lcName, value);\n  };\n  DOMPurify.addHook = function (entryPoint, hookFunction) {\n    if (typeof hookFunction !== 'function') {\n      return;\n    }\n    arrayPush(hooks[entryPoint], hookFunction);\n  };\n  DOMPurify.removeHook = function (entryPoint, hookFunction) {\n    if (hookFunction !== undefined) {\n      const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n      return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n    }\n    return arrayPop(hooks[entryPoint]);\n  };\n  DOMPurify.removeHooks = function (entryPoint) {\n    hooks[entryPoint] = [];\n  };\n  DOMPurify.removeAllHooks = function () {\n    hooks = _createHooksMap();\n  };\n  return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nmodule.exports = purify;\n//# sourceMappingURL=purify.cjs.js.map\n","module.exports = window.DOMPurify || (window.DOMPurify = require('dompurify').default || require('dompurify'));\n","import { getContext } from 'svelte';\nimport { browser } from './environment.js';\nimport { stores as browser_stores } from '../client/singletons.js';\n\n/**\n * A function that returns all of the contextual stores. On the server, this must be called during component initialization.\n * Only use this if you need to defer store subscription until after the component has mounted, for some reason.\n */\nexport const getStores = () => {\n\tconst stores = browser ? browser_stores : getContext('__svelte__');\n\n\treturn {\n\t\t/** @type {typeof page} */\n\t\tpage: {\n\t\t\tsubscribe: stores.page.subscribe\n\t\t},\n\t\t/** @type {typeof navigating} */\n\t\tnavigating: {\n\t\t\tsubscribe: stores.navigating.subscribe\n\t\t},\n\t\t/** @type {typeof updated} */\n\t\tupdated: stores.updated\n\t};\n};\n\n/**\n * A readable store whose value contains page data.\n *\n * On the server, this store can only be subscribed to during component initialization. In the browser, it can be subscribed to at any time.\n *\n * @type {import('svelte/store').Readable<import('@sveltejs/kit').Page>}\n */\nexport const page = {\n\tsubscribe(fn) {\n\t\tconst store = __SVELTEKIT_DEV__ ? get_store('page') : getStores().page;\n\t\treturn store.subscribe(fn);\n\t}\n};\n\n/**\n * A readable store.\n * When navigating starts, its value is a `Navigation` object with `from`, `to`, `type` and (if `type === 'popstate'`) `delta` properties.\n * When navigating finishes, its value reverts to `null`.\n *\n * On the server, this store can only be subscribed to during component initialization. In the browser, it can be subscribed to at any time.\n * @type {import('svelte/store').Readable<import('@sveltejs/kit').Navigation | null>}\n */\nexport const navigating = {\n\tsubscribe(fn) {\n\t\tconst store = __SVELTEKIT_DEV__ ? get_store('navigating') : getStores().navigating;\n\t\treturn store.subscribe(fn);\n\t}\n};\n\n/**\n * A readable store whose initial value is `false`. If [`version.pollInterval`](https://kit.svelte.dev/docs/configuration#version) is a non-zero value, SvelteKit will poll for new versions of the app and update the store value to `true` when it detects one. `updated.check()` will force an immediate check, regardless of polling.\n *\n * On the server, this store can only be subscribed to during component initialization. In the browser, it can be subscribed to at any time.\n * @type {import('svelte/store').Readable<boolean> & { check(): Promise<boolean> }}\n */\nexport const updated = {\n\tsubscribe(fn) {\n\t\tconst store = __SVELTEKIT_DEV__ ? get_store('updated') : getStores().updated;\n\n\t\tif (browser) {\n\t\t\tupdated.check = store.check;\n\t\t}\n\n\t\treturn store.subscribe(fn);\n\t},\n\tcheck: () => {\n\t\tthrow new Error(\n\t\t\tbrowser\n\t\t\t\t? 'Cannot check updated store before subscribing'\n\t\t\t\t: 'Can only check updated store in browser'\n\t\t);\n\t}\n};\n\n/**\n * @template {keyof ReturnType<typeof getStores>} Name\n * @param {Name} name\n * @returns {ReturnType<typeof getStores>[Name]}\n */\nfunction get_store(name) {\n\ttry {\n\t\treturn getStores()[name];\n\t} catch (e) {\n\t\tthrow new Error(\n\t\t\t`Cannot subscribe to '${name}' store on the server outside of a Svelte component, as it is bound to the current request via component context. This prevents state from leaking between users.` +\n\t\t\t\t'For more information, see https://kit.svelte.dev/docs/state-management#avoid-shared-state-on-the-server'\n\t\t);\n\t}\n}\n","/**\n * tua-body-scroll-lock v1.5.3\n * (c) 2024 Evinma, BuptStEve\n * @license MIT\n */\n\nvar isServer = function isServer() {\n  return typeof window === 'undefined';\n};\nvar detectOS = function detectOS(ua) {\n  ua = ua || navigator.userAgent;\n  var ipad = /(iPad).*OS\\s([\\d_]+)/.test(ua);\n  var iphone = !ipad && /(iPhone\\sOS)\\s([\\d_]+)/.test(ua);\n  var android = /(Android);?[\\s/]+([\\d.]+)?/.test(ua);\n  var ios = iphone || ipad;\n  return {\n    ios: ios,\n    android: android\n  };\n};\nfunction getEventListenerOptions(options) {\n  /* istanbul ignore if */\n  if (isServer()) return false;\n  if (!options) {\n    throw new Error('options must be provided');\n  }\n  var isSupportOptions = false;\n  var listenerOptions = {\n    get passive() {\n      isSupportOptions = true;\n      return undefined;\n    }\n  };\n  /* istanbul ignore next */\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  var noop = function noop() {};\n  var testEvent = '__TUA_BSL_TEST_PASSIVE__';\n  window.addEventListener(testEvent, noop, listenerOptions);\n  window.removeEventListener(testEvent, noop, listenerOptions);\n  var capture = options.capture;\n  /* istanbul ignore next */\n  return isSupportOptions ? options : typeof capture !== 'undefined' ? capture : false;\n}\nfunction noticeRequiredTargetElement(targetElement) {\n  if (targetElement) return false;\n  if (targetElement === null) return false;\n  /* istanbul ignore if */\n  if (process.env.NODE_ENV === 'production') return false;\n  /* istanbul ignore if */\n  if (process.env.NODE_ENV !== 'test') {\n    console.warn('If scrolling is also required in the floating layer, ' + 'the target element must be provided.');\n  }\n  return true;\n}\n/**\n * Get global function that calls preventDefault\n */\nfunction getPreventEventDefault() {\n  if ('__BSL_PREVENT_DEFAULT__' in window) {\n    return window.__BSL_PREVENT_DEFAULT__;\n  }\n  window.__BSL_PREVENT_DEFAULT__ = function (event) {\n    if (!event.cancelable) return;\n    event.preventDefault();\n  };\n  return window.__BSL_PREVENT_DEFAULT__;\n}\nfunction toArray(x) {\n  if (!x) return [];\n  return Array.isArray(x) ? x : [x];\n}\n\nvar initialLockState = {\n  lockedNum: 0,\n  lockedElements: [],\n  unLockCallback: null,\n  documentListenerAdded: false,\n  initialClientPos: {\n    clientX: 0,\n    clientY: 0\n  }\n};\n/**\n * get current lockState\n * @param options\n * @returns lockState\n */\nfunction getLockState(options) {\n  if (isServer()) return initialLockState;\n  /** use local lockState */\n  if (!(options === null || options === void 0 ? void 0 : options.useGlobalLockState)) return getLockState.lockState;\n  /** use global lockState */\n  var lockState = '__BSL_LOCK_STATE__' in window ? Object.assign(Object.assign({}, initialLockState), window.__BSL_LOCK_STATE__) : initialLockState;\n  /** assign to global */\n  window.__BSL_LOCK_STATE__ = lockState;\n  return lockState;\n}\ngetLockState.lockState = initialLockState;\n\nfunction handleScroll(event, targetElement, initialClientPos) {\n  if (targetElement) {\n    var scrollTop = targetElement.scrollTop,\n      scrollLeft = targetElement.scrollLeft,\n      scrollWidth = targetElement.scrollWidth,\n      scrollHeight = targetElement.scrollHeight,\n      clientWidth = targetElement.clientWidth,\n      clientHeight = targetElement.clientHeight;\n    var clientX = event.targetTouches[0].clientX - initialClientPos.clientX;\n    var clientY = event.targetTouches[0].clientY - initialClientPos.clientY;\n    var isVertical = Math.abs(clientY) > Math.abs(clientX);\n    var isOnTop = clientY > 0 && scrollTop === 0;\n    var isOnLeft = clientX > 0 && scrollLeft === 0;\n    var isOnRight = clientX < 0 && scrollLeft + clientWidth + 1 >= scrollWidth;\n    var isOnBottom = clientY < 0 && scrollTop + clientHeight + 1 >= scrollHeight;\n    if (isVertical && (isOnTop || isOnBottom) || !isVertical && (isOnLeft || isOnRight)) {\n      return getPreventEventDefault()(event);\n    }\n  }\n  event.stopPropagation();\n  return true;\n}\n\nfunction setOverflowHiddenPc() {\n  var $html = document.documentElement;\n  var htmlStyle = Object.assign({}, $html.style);\n  var scrollBarWidth = window.innerWidth - $html.clientWidth;\n  var previousPaddingRight = parseInt(window.getComputedStyle($html).paddingRight, 10);\n  $html.style.overflow = 'hidden';\n  $html.style.boxSizing = 'border-box';\n  $html.style.paddingRight = \"\".concat(scrollBarWidth + previousPaddingRight, \"px\");\n  return function () {\n    ['overflow', 'boxSizing', 'paddingRight'].forEach(function (x) {\n      $html.style[x] = htmlStyle[x] || '';\n    });\n  };\n}\nfunction setOverflowHiddenMobile(options) {\n  var $html = document.documentElement;\n  var $body = document.body;\n  var scrollTop = $html.scrollTop || $body.scrollTop;\n  var htmlStyle = Object.assign({}, $html.style);\n  var bodyStyle = Object.assign({}, $body.style);\n  $html.style.height = '100%';\n  $html.style.overflow = 'hidden';\n  $body.style.top = \"-\".concat(scrollTop, \"px\");\n  $body.style.width = '100%';\n  $body.style.height = 'auto';\n  $body.style.position = 'fixed';\n  $body.style.overflow = (options === null || options === void 0 ? void 0 : options.overflowType) || 'hidden';\n  return function () {\n    $html.style.height = htmlStyle.height || '';\n    $html.style.overflow = htmlStyle.overflow || '';\n    ['top', 'width', 'height', 'overflow', 'position'].forEach(function (x) {\n      $body.style[x] = bodyStyle[x] || '';\n    });\n    var supportsNativeSmoothScroll = ('scrollBehavior' in document.documentElement.style);\n    if (supportsNativeSmoothScroll) {\n      window.scrollTo({\n        top: scrollTop,\n        behavior: 'instant'\n      });\n    } else {\n      window.scrollTo(0, scrollTop);\n    }\n  };\n}\n\n/**\n * lock body scroll\n * @param targetElement the element(s) still needs scrolling(iOS only)\n * @param options\n */\nfunction lock(targetElement, options) {\n  if (isServer()) return;\n  noticeRequiredTargetElement(targetElement);\n  var detectRes = detectOS();\n  var lockState = getLockState(options);\n  if (detectRes.ios) {\n    toArray(targetElement).filter(function (e) {\n      return e && lockState.lockedElements.indexOf(e) === -1;\n    }).forEach(function (element) {\n      element.ontouchstart = function (event) {\n        var _event$targetTouches$ = event.targetTouches[0],\n          clientX = _event$targetTouches$.clientX,\n          clientY = _event$targetTouches$.clientY;\n        lockState.initialClientPos = {\n          clientX: clientX,\n          clientY: clientY\n        };\n      };\n      element.ontouchmove = function (event) {\n        handleScroll(event, element, lockState.initialClientPos);\n      };\n      lockState.lockedElements.push(element);\n    });\n    addTouchMoveListener(lockState);\n  } else if (lockState.lockedNum <= 0) {\n    lockState.unLockCallback = detectRes.android ? setOverflowHiddenMobile(options) : setOverflowHiddenPc();\n  }\n  lockState.lockedNum += 1;\n}\n/**\n * unlock body scroll\n * @param targetElement the element(s) still needs scrolling(iOS only)\n * @param options\n */\nfunction unlock(targetElement, options) {\n  if (isServer()) return;\n  noticeRequiredTargetElement(targetElement);\n  var lockState = getLockState(options);\n  lockState.lockedNum -= 1;\n  if (lockState.lockedNum > 0) return;\n  if (unlockByCallback(lockState)) return;\n  toArray(targetElement).forEach(function (element) {\n    var index = lockState.lockedElements.indexOf(element);\n    if (element && index !== -1) {\n      element.ontouchmove = null;\n      element.ontouchstart = null;\n      lockState.lockedElements.splice(index, 1);\n    }\n  });\n  removeTouchMoveListener(lockState);\n}\n/**\n * clear all body locks\n * @param options\n */\nfunction clearBodyLocks(options) {\n  if (isServer()) return;\n  var lockState = getLockState(options);\n  lockState.lockedNum = 0;\n  if (unlockByCallback(lockState)) return;\n  if (lockState.lockedElements.length) {\n    var element = lockState.lockedElements.pop();\n    while (element) {\n      element.ontouchmove = null;\n      element.ontouchstart = null;\n      element = lockState.lockedElements.pop();\n    }\n  }\n  removeTouchMoveListener(lockState);\n}\nfunction unlockByCallback(lockState) {\n  if (detectOS().ios) return false;\n  if (typeof lockState.unLockCallback !== 'function') return false;\n  lockState.unLockCallback();\n  return true;\n}\nfunction addTouchMoveListener(lockState) {\n  if (!detectOS().ios) return;\n  if (lockState.documentListenerAdded) return;\n  document.addEventListener('touchmove', getPreventEventDefault(), getEventListenerOptions({\n    passive: false\n  }));\n  lockState.documentListenerAdded = true;\n}\nfunction removeTouchMoveListener(lockState) {\n  if (!lockState.documentListenerAdded) return;\n  document.removeEventListener('touchmove', getPreventEventDefault(), getEventListenerOptions({\n    passive: false\n  }));\n  lockState.documentListenerAdded = false;\n}\n\nexport { clearBodyLocks, getLockState, lock, unlock };\n","<script context=\"module\">\n  /**\n   * @typedef {Object} Tag\n   * @property {string} name\n   * @property {string} [href]\n   */\n</script>\n\n<script>\n  import { getTheme } from \"../utilities/themes\";\n\n  /** Primarily used for testing\n   * @type {string} */\n  export let id = undefined;\n\n  /**\n   * The tag in the card\n   * @type {Tag[]}\n   */\n  export let tags = null;\n\n  let componentClass = \"\";\n  export { componentClass as class };\n\n  export let bulletClass = \"\";\n\n  const defaultBulletClasses =\n    \"after:absolute after:w-1 after:h-1 after:-right-3 after:top-[50%] after:translate-y-[-50%]\";\n\n  /**\n   * The theme of the tags\n   * @type {import($lib/utilities/theme.js').ThemeName} ThemeName\n   */\n  export let theme = \"white\";\n\n  const linkThemeName = getTheme(theme).componentColorTheme ?? \"white\";\n  const linkTheme = getTheme(linkThemeName);\n</script>\n\n{#if tags.length > 0}\n  <ul {id} class=\"flex list-none flex-wrap {componentClass}\">\n    {#each tags as tag, idx}\n      <li\n        class=\"relative {idx !== tags.length - 1\n          ? `after:bg-current ${defaultBulletClasses} ${bulletClass}`\n          : ''}\"\n      >\n        {#if tag.href}\n          <a\n            label={tag.name}\n            href={tag.href}\n            class=\"hover:underline {linkTheme.textColor}\"\n            data-sveltekit-reload\n          >\n            {tag.name}\n          </a>\n        {:else if tag.name}\n          {tag.name}\n        {/if}\n      </li>\n    {/each}\n  </ul>\n{/if}\n","/**\n * textFit v2.3.1\n * Previously known as jQuery.textFit\n * 11/2014 by STRML (strml.github.com)\n * MIT License\n *\n * To use: textFit(document.getElementById('target-div'), options);\n *\n * Will make the *text* content inside a container scale to fit the container\n * The container is required to have a set width and height\n * Uses binary search to fit text with minimal layout calls.\n * Version 2.0 does not use jQuery.\n */\n/*global define:true, document:true, window:true, HTMLElement:true*/\n\n(function(root, factory) {\n  \"use strict\";\n\n  // UMD shim\n  if (typeof define === \"function\" && define.amd) {\n    // AMD\n    define([], factory);\n  } else if (typeof exports === \"object\") {\n    // Node/CommonJS\n    module.exports = factory();\n  } else {\n    // Browser\n    root.textFit = factory();\n  }\n\n}(typeof global === \"object\" ? global : this, function () {\n  \"use strict\";\n\n  var defaultSettings = {\n    alignVert: false, // if true, textFit will align vertically using css tables\n    alignHoriz: false, // if true, textFit will set text-align: center\n    multiLine: false, // if true, textFit will not set white-space: no-wrap\n    detectMultiLine: true, // disable to turn off automatic multi-line sensing\n    minFontSize: 6,\n    maxFontSize: 80,\n    reProcess: true, // if true, textFit will re-process already-fit nodes. Set to 'false' for better performance\n    widthOnly: false, // if true, textFit will fit text to element width, regardless of text height\n    alignVertWithFlexbox: false, // if true, textFit will use flexbox for vertical alignment\n  };\n\n  return function textFit(els, options) {\n\n    if (!options) options = {};\n\n    // Extend options.\n    var settings = {};\n    for(var key in defaultSettings){\n      if(options.hasOwnProperty(key)){\n        settings[key] = options[key];\n      } else {\n        settings[key] = defaultSettings[key];\n      }\n    }\n\n    // Convert jQuery objects into arrays\n    if (typeof els.toArray === \"function\") {\n      els = els.toArray();\n    }\n\n    // Support passing a single el\n    var elType = Object.prototype.toString.call(els);\n    if (elType !== '[object Array]' && elType !== '[object NodeList]' &&\n            elType !== '[object HTMLCollection]'){\n      els = [els];\n    }\n\n    // Process each el we've passed.\n    for(var i = 0; i < els.length; i++){\n      processItem(els[i], settings);\n    }\n  };\n\n  /**\n   * The meat. Given an el, make the text inside it fit its parent.\n   * @param  {DOMElement} el       Child el.\n   * @param  {Object} settings     Options for fit.\n   */\n  function processItem(el, settings){\n    if (!isElement(el) || (!settings.reProcess && el.getAttribute('textFitted'))) {\n      return false;\n    }\n\n    // Set textFitted attribute so we know this was processed.\n    if(!settings.reProcess){\n      el.setAttribute('textFitted', 1);\n    }\n\n    var innerSpan, originalHeight, originalHTML, originalWidth;\n    var low, mid, high;\n\n    // Get element data.\n    originalHTML = el.innerHTML;\n    originalWidth = innerWidth(el);\n    originalHeight = innerHeight(el);\n\n    // Don't process if we can't find box dimensions\n    if (!originalWidth || (!settings.widthOnly && !originalHeight)) {\n      if(!settings.widthOnly)\n        throw new Error('Set a static height and width on the target element ' + el.outerHTML +\n          ' before using textFit!');\n      else\n        throw new Error('Set a static width on the target element ' + el.outerHTML +\n          ' before using textFit!');\n    }\n\n    // Add textFitted span inside this container.\n    if (originalHTML.indexOf('textFitted') === -1) {\n      innerSpan = document.createElement('span');\n      innerSpan.className = 'textFitted';\n      // Inline block ensure it takes on the size of its contents, even if they are enclosed\n      // in other tags like <p>\n      innerSpan.style['display'] = 'inline-block';\n      innerSpan.innerHTML = originalHTML;\n      el.innerHTML = '';\n      el.appendChild(innerSpan);\n    } else {\n      // Reprocessing.\n      innerSpan = el.querySelector('span.textFitted');\n      // Remove vertical align if we're reprocessing.\n      if (hasClass(innerSpan, 'textFitAlignVert')){\n        innerSpan.className = innerSpan.className.replace('textFitAlignVert', '');\n        innerSpan.style['height'] = '';\n        el.className.replace('textFitAlignVertFlex', '');\n      }\n    }\n\n    // Prepare & set alignment\n    if (settings.alignHoriz) {\n      el.style['text-align'] = 'center';\n      innerSpan.style['text-align'] = 'center';\n    }\n\n    // Check if this string is multiple lines\n    // Not guaranteed to always work if you use wonky line-heights\n    var multiLine = settings.multiLine;\n    if (settings.detectMultiLine && !multiLine &&\n        innerSpan.scrollHeight >= parseInt(window.getComputedStyle(innerSpan)['font-size'], 10) * 2){\n      multiLine = true;\n    }\n\n    // If we're not treating this as a multiline string, don't let it wrap.\n    if (!multiLine) {\n      el.style['white-space'] = 'nowrap';\n    }\n\n    low = settings.minFontSize;\n    high = settings.maxFontSize;\n\n    // Binary search for highest best fit\n    var size = low;\n    while (low <= high) {\n      mid = (high + low) >> 1;\n      innerSpan.style.fontSize = mid + 'px';\n      if(innerSpan.scrollWidth <= originalWidth && (settings.widthOnly || innerSpan.scrollHeight <= originalHeight)){\n        size = mid;\n        low = mid + 1;\n      } else {\n        high = mid - 1;\n      }\n      // await injection point\n    }\n    // found, updating font if differs:\n    if( innerSpan.style.fontSize != size + 'px' ) innerSpan.style.fontSize = size + 'px';\n\n    // Our height is finalized. If we are aligning vertically, set that up.\n    if (settings.alignVert) {\n      addStyleSheet();\n      var height = innerSpan.scrollHeight;\n      if (window.getComputedStyle(el)['position'] === \"static\"){\n        el.style['position'] = 'relative';\n      }\n      if (!hasClass(innerSpan, \"textFitAlignVert\")){\n        innerSpan.className = innerSpan.className + \" textFitAlignVert\";\n      }\n      innerSpan.style['height'] = height + \"px\";\n      if (settings.alignVertWithFlexbox && !hasClass(el, \"textFitAlignVertFlex\")) {\n        el.className = el.className + \" textFitAlignVertFlex\";\n      }\n    }\n  }\n\n  // Calculate height without padding.\n  function innerHeight(el){\n    var style = window.getComputedStyle(el, null);\n    return el.clientHeight -\n      parseInt(style.getPropertyValue('padding-top'), 10) -\n      parseInt(style.getPropertyValue('padding-bottom'), 10);\n  }\n\n  // Calculate width without padding.\n  function innerWidth(el){\n    var style = window.getComputedStyle(el, null);\n    return el.clientWidth -\n      parseInt(style.getPropertyValue('padding-left'), 10) -\n      parseInt(style.getPropertyValue('padding-right'), 10);\n  }\n\n  //Returns true if it is a DOM element\n  function isElement(o){\n    return (\n      typeof HTMLElement === \"object\" ? o instanceof HTMLElement : //DOM2\n      o && typeof o === \"object\" && o !== null && o.nodeType === 1 && typeof o.nodeName===\"string\"\n    );\n  }\n\n  function hasClass(element, cls) {\n    return (' ' + element.className + ' ').indexOf(' ' + cls + ' ') > -1;\n  }\n\n  // Better than a stylesheet dependency\n  function addStyleSheet() {\n    if (document.getElementById(\"textFitStyleSheet\")) return;\n    var style = [\n      \".textFitAlignVert{\",\n        \"position: absolute;\",\n        \"top: 0; right: 0; bottom: 0; left: 0;\",\n        \"margin: auto;\",\n        \"display: flex;\",\n        \"justify-content: center;\",\n        \"flex-direction: column;\",\n      \"}\",\n      \".textFitAlignVertFlex{\",\n        \"display: flex;\",\n      \"}\",\n      \".textFitAlignVertFlex .textFitAlignVert{\",\n        \"position: static;\",\n      \"}\",].join(\"\");\n\n    var css = document.createElement(\"style\");\n    css.type = \"text/css\";\n    css.id = \"textFitStyleSheet\";\n    css.innerHTML = style;\n    document.body.appendChild(css);\n  }\n}));\n","export const VALID_CACHE_KEY_MAP = {\n  CONTRIBUTORS: \"contributors\",\n  GLOBAL_NAV: \"globalNav\",\n  JOBS: \"jobs\",\n  PAGE_DATA_MAP: \"pageDataMap\",\n  SITEMAP: \"sitemap\"\n};\n\nexport const VALID_CACHE_KEYS = Object.values(VALID_CACHE_KEY_MAP);\n\nexport const CACHE_DIRECTORY = \"tmp\";\nexport const BUILD_DIRECTORY = \"build\";\n\nexport const ITEM_PREVIEW_LIST_FORMS = {\n  Story2: \"Story 2\",\n  Story3: \"Story 3\",\n  Story3FeatureImageLeft: \"Story 3 featured: full-width left\",\n  Story3FeatureImageRight: \"Story 3 featured: full-width right\",\n  Story3FeatureTwoThirds: \"Story 3 featured: two-thirds\",\n  Story3FeatureHalf: \"Story 3 featured: half\",\n  Link2: \"Link 2\",\n  Link2Feature: \"Link 2 featured\",\n  Link3: \"Link 3\",\n  Link4: \"Link 4\",\n  Link4TitleOnly: \"Link 4 title only\",\n  Avatar4: \"Avatar 4\",\n  Avatar6: \"Avatar 6\",\n\n  // special purpose\n  Headline: \"Headline\"\n};\n\nexport const FEATURED_IMAGES_POSITIONS = {\n  Top: \"top\",\n  Left: \"left\",\n  Right: \"right\"\n};\n\nexport const PRIVACY_MANDATE_REGIONS = [\n  \"AT\",\n  \"BE\",\n  \"BG\",\n  \"HR\",\n  \"CY\",\n  \"CZ\",\n  \"DK\",\n  \"EE\",\n  \"FI\",\n  \"FR\",\n  \"DE\",\n  \"EL\",\n  \"GG\",\n  \"HU\",\n  \"IE\",\n  \"IS\",\n  \"IT\",\n  \"LI\",\n  \"LV\",\n  \"LT\",\n  \"LU\",\n  \"MT\",\n  \"NL\",\n  \"NO\",\n  \"PL\",\n  \"PT\",\n  \"RO\",\n  \"SK\",\n  \"SI\",\n  \"ES\",\n  \"SE\",\n  \"UK\",\n  \"US-CA\",\n  \"US-CO\",\n  \"US-DE\",\n  \"US-OR\"\n];\n\nexport const BANNER_COOKIE_NAME = \"of_banner\";\n\nexport const REQUIRED_COOKIES = [\n  \"_of\", //TODO: Remove this once we retire in-house cookie banner\n  \"OptanonConsent\", //Accepted or rejected cookies\n  \"OptanonAlertBoxClosed\", //Tracks when and if the Optanon alert box has been dismissed\n  BANNER_COOKIE_NAME, // whether banner has been dismissed\n  \"__stripe_mid\", //new fundraise up cookie 9/23\n  \"fundraiseup_session\", // Fundraise Up required\n  \"fundraiseup_cid\", // Fundrasise Up required\n  \"ASLBSA\", // Azure Front door\n  \"ASLBSACORS\" // Azure Front door\n];\n\nexport const BREAK_POINTS = {\n  sm: 320,\n  md: 680,\n  lg: 1200\n};\n\nexport const SALESFORCE_CONSTANTS = {\n  customHandlerEndpoint: \"https://cloud.email.obama.org/signup-autocompleteV2\",\n  webToCaseEndPoint:\n    \"https://webto.salesforce.com/servlet/servlet.WebToCase?encoding=UTF-8&orgid=00D36000001GZTv\",\n  fieldNames: {\n    orgId: \"00N1R00000TOZ8p\",\n    campaignId: \"00N1R00000TOZ8p\",\n    contactSourceUrl: \"00N3600000RtkFX\",\n    subject: \"subject\",\n    firstName: \"00N3600000Rdh4s\",\n    lastName: \"00N3600000Rdh4x\",\n    email: \"email\",\n    phone: \"phone\",\n    description: \"description\",\n    redirectUrl: \"retURL\"\n  }\n};\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\nconst INTERNAL_ORIGINS = [\"https://www.obama.org\", \"http://www.obama.org\", \"https://obama.org\"];\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 (INTERNAL_ORIGINS.includes(targetOrigin)) {\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\n/**\n * naïve helper to add the origin to url if internal\n *\n * @param {*} url\n * @param {*} currentOrigin\n * @returns\n */\nexport function getFullUrl(url, currentOrigin) {\n  if (!url) {\n    return \"\";\n  }\n\n  if (url.startsWith(\"/\") || url.startsWith(\"?\")) {\n    return `${currentOrigin}${url?.startsWith(\"/\") ? \"\" : \"/\"}${url}`;\n  }\n\n  return 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","export const IMAGE_VARIANT_MAP = {\n  \"1:1\": \"square\",\n  \"3:2\": \"landscape\",\n  \"3:4\": \"portrait\"\n};\nexport const ASPECT_RATIO_CLASSES = {\n  RATIO_1_1: \"aspect-1/1\",\n  RATIO_4_3: \"aspect-4/3\",\n  RATIO_3_2: \"aspect-3/2\",\n  RATIO_3_4: \"aspect-3/4\",\n  RATIO_AUTO: \"aspect-[auto]\"\n};\n\nexport const STORY_CARD_ASPECT_RATIO_CLASSES = {\n  RATIO_1_1: \"aspect-1/1\",\n  RATIO_3_2: \"aspect-3/2\",\n  RATIO_3_4: \"aspect-3/4\"\n};\n\n// A sensible array of widths for srcset.\nexport const SRCSET_WIDTHS = [180, 360, 420, 720, 850, 1250, 1670, 3200];\n","import { IMAGE_VARIANT_MAP, ASPECT_RATIO_CLASSES } from \"../image\";\n\n/**\n * by default, large image assets (greater than 20MB and other asset files greater than 10MB) are served from this url.\n * for reference: https://www.contentful.com/developers/docs/references/content-delivery-api/#/reference/assets\n */\nconst CONTENTFUL_LARGE_ASSET_URL_PREFIX = \"//downloads.ctfassets.net\";\n\nconst CONTENTFUL_IMAGE_CDN_PREFIX = \"//images.ctfassets.net\";\n\n/**\n * only images served from contentful image cdn support resizing params.\n * use this helper to enable resizing for large images.\n *\n * @param {string} url\n * @returns\n */\nfunction swapAssetUrl(url = \"\") {\n  return url.replace(CONTENTFUL_LARGE_ASSET_URL_PREFIX, CONTENTFUL_IMAGE_CDN_PREFIX);\n}\n\nconst 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  url = swapAssetUrl(url);\n\n  if (url?.startsWith(CONTENTFUL_IMAGE_CDN_PREFIX)) {\n    for (const key of Object.keys(apiParams)) {\n      params.set(key, apiParams[key]);\n    }\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, ignoreContentfulImgResize) {\n  let url = asset?.fields?.file?.url;\n  if (!url) {\n    return null;\n  }\n\n  url = swapAssetUrl(url);\n\n  if (ignoreContentfulImgResize || !url?.startsWith(CONTENTFUL_IMAGE_CDN_PREFIX)) {\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 || !url) {\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 from the design tokens used in the\n// tailwind config for @ObamaFoundation/of-design-system\nconst SCREENS = {\n  sm: \"320px\",\n  md: \"680px\",\n  lg: \"1200px\",\n  xl: \"1920px\"\n};\n\nfunction sizeForMinWidth(minWidth, size) {\n  return `(min-width: ${minWidth}) ${size}`;\n}\n\n/**\n *\n * @param {Partial<Record<keyof typeof SCREENS, string>>} sizes\n * @param {typeof SCREENS} breakpoints\n * @returns\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\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 = [\"xl\", \"lg\", \"md\", \"sm\"].flatMap((/** @type {keyof typeof SCREENS} */ 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\nexport const getImageAspectRatio = (asset, aspectRatio) => {\n  const imageDetails = asset?.fields?.file?.details?.image || {};\n  const { width, height } = imageDetails;\n\n  let mappedVariant = IMAGE_VARIANT_MAP[aspectRatio];\n  let calculatedVariant = IMAGE_VARIANT_MAP[\"1:1\"];\n  if (width > height) {\n    calculatedVariant = IMAGE_VARIANT_MAP[\"3:2\"];\n  } else if (width < height) {\n    calculatedVariant = IMAGE_VARIANT_MAP[\"3:4\"];\n  }\n\n  return mappedVariant || calculatedVariant;\n};\n\nexport const getClosestAspectRatioClass = (\n  width,\n  height,\n  validAspectRatios = ASPECT_RATIO_CLASSES\n) => {\n  const aspectRatio = width / height;\n\n  /* store the closest aspect ratio found in ASPECT_RATIO_CLASSES. */\n  let closestAspectRatio = null;\n\n  /* store the smallest difference between the calculated aspect ratio and the aspect ratios in ASPECT_RATIO_CLASSES. */\n  let minDifference = Infinity;\n\n  for (const ratio in validAspectRatios) {\n    if (Object.hasOwn(validAspectRatios, ratio)) {\n      const ratioValueString = validAspectRatios[ratio];\n      if (ratioValueString === \"aspect-[auto]\") {\n        continue; // Skip the \"auto\" aspect ratio\n      }\n      const calcRatios = ratioValueString.split(\"/\");\n      const ratioWidth = Number(calcRatios[0].split(\"-\")[1]);\n      const ratioHeight = Number(calcRatios[1]);\n      const ratioValue = ratioWidth / ratioHeight;\n\n      /* calculates the absolute difference between the calculated aspect ratio and the aspect ratio of the given width and height. */\n      const difference = Math.abs(aspectRatio - ratioValue);\n\n      /* calculates the new smallest difference and the current aspect ratio, respectively. */\n      if (difference < minDifference) {\n        minDifference = difference;\n        closestAspectRatio = validAspectRatios[ratio];\n      }\n    }\n  }\n  return closestAspectRatio;\n};\n","import { writable } from \"svelte/store\";\n\n// Used to set the theme of the Global Navigation\nexport const heroThemeStore = writable(\"transparent\");\n\n// Used to store applied filter items\nexport const filterItemsStore = writable([]);\n\nexport const selectedNewsletters = writable({});\n","export const getTotalNumberOfSelectedFilters = (activeFilters = []) => {\n  return activeFilters.reduce((accumulator, currentFilterGroup) => {\n    currentFilterGroup.bodyProps.options.forEach((option) => {\n      if (option.isChecked === true) {\n        accumulator++;\n      }\n    });\n    return accumulator;\n  }, 0);\n};\n\nexport const filterOutInactiveFilterGroups = (filterGroups) => {\n  return filterGroups.filter((filterGroup) => {\n    return filterGroup.bodyProps.options.some((option) => {\n      return option.isChecked;\n    });\n  });\n};\n\n/**\n * transform applied filter groups to active filters\n *\n * @param {*} selectedFilterGroups\n * @returns\n */\nexport const flattenAppliedFilterGroups = (selectedFilterGroups) =>\n  selectedFilterGroups.reduce((selectedOptions, currentFilterGroup) => {\n    currentFilterGroup.bodyProps.options.forEach((option) => {\n      if (option.isChecked) {\n        selectedOptions.push(option);\n      }\n    });\n    return selectedOptions;\n  }, []);\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 { EntityDecoder, DecodingMode, htmlDecodeTree, xmlDecodeTree, } 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[\"BeforeSpecialT\"] = 23] = \"BeforeSpecialT\";\n    State[State[\"SpecialStartSequence\"] = 24] = \"SpecialStartSequence\";\n    State[State[\"InSpecialTag\"] = 25] = \"InSpecialTag\";\n    State[State[\"InEntity\"] = 26] = \"InEntity\";\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 isASCIIAlpha(c) {\n    return ((c >= CharCodes.LowerA && c <= CharCodes.LowerZ) ||\n        (c >= CharCodes.UpperA && c <= CharCodes.UpperZ));\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]), // CDATA[\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]), // `</script`\n    StyleEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65]), // `</style`\n    TitleEnd: new Uint8Array([0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65]), // `</title`\n    TextareaEnd: new Uint8Array([\n        0x3c, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x61, 0x72, 0x65, 0x61,\n    ]), // `</textarea`\n};\nexport default class Tokenizer {\n    constructor({ xmlMode = false, decodeEntities = true, }, cbs) {\n        this.cbs = cbs;\n        /** The current state the tokenizer is in. */\n        this.state = State.Text;\n        /** The read buffer. */\n        this.buffer = \"\";\n        /** The beginning of the section that is currently being read. */\n        this.sectionStart = 0;\n        /** The index within the buffer that we are currently looking at. */\n        this.index = 0;\n        /** The start of the last entity. */\n        this.entityStart = 0;\n        /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */\n        this.baseState = State.Text;\n        /** For special parsing behavior inside of script and style tags. */\n        this.isSpecial = false;\n        /** Indicates whether the tokenizer has been paused. */\n        this.running = true;\n        /** The offset of the current buffer. */\n        this.offset = 0;\n        this.currentSequence = undefined;\n        this.sequenceIndex = 0;\n        this.xmlMode = xmlMode;\n        this.decodeEntities = decodeEntities;\n        this.entityDecoder = new EntityDecoder(xmlMode ? xmlDecodeTree : htmlDecodeTree, (cp, consumed) => this.emitCodePoint(cp, consumed));\n    }\n    reset() {\n        this.state = State.Text;\n        this.buffer = \"\";\n        this.sectionStart = 0;\n        this.index = 0;\n        this.baseState = State.Text;\n        this.currentSequence = undefined;\n        this.running = true;\n        this.offset = 0;\n    }\n    write(chunk) {\n        this.offset += this.buffer.length;\n        this.buffer = chunk;\n        this.parse();\n    }\n    end() {\n        if (this.running)\n            this.finish();\n    }\n    pause() {\n        this.running = false;\n    }\n    resume() {\n        this.running = true;\n        if (this.index < this.buffer.length + this.offset) {\n            this.parse();\n        }\n    }\n    stateText(c) {\n        if (c === CharCodes.Lt ||\n            (!this.decodeEntities && this.fastForwardTo(CharCodes.Lt))) {\n            if (this.index > 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.startEntity();\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 <title> 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.startEntity();\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) {\n                this.state = State.InTagName;\n            }\n            else if (lower === Sequences.ScriptEnd[2]) {\n                this.state = State.BeforeSpecialS;\n            }\n            else if (lower === Sequences.TitleEnd[2]) {\n                this.state = State.BeforeSpecialT;\n            }\n            else {\n                this.state = 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.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.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.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 = this.index;\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.sectionStart);\n            this.sectionStart = -1;\n            this.state = State.BeforeAttributeName;\n            this.stateBeforeAttributeName(c);\n        }\n        else if (!isWhitespace(c)) {\n            this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);\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 + 1);\n            this.state = State.BeforeAttributeName;\n        }\n        else if (this.decodeEntities && c === CharCodes.Amp) {\n            this.startEntity();\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.startEntity();\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    stateBeforeSpecialT(c) {\n        const lower = c | 0x20;\n        if (lower === Sequences.TitleEnd[3]) {\n            this.startSpecial(Sequences.TitleEnd, 4);\n        }\n        else if (lower === Sequences.TextareaEnd[3]) {\n            this.startSpecial(Sequences.TextareaEnd, 4);\n        }\n        else {\n            this.state = State.InTagName;\n            this.stateInTagName(c); // Consume the token again\n        }\n    }\n    startEntity() {\n        this.baseState = this.state;\n        this.state = State.InEntity;\n        this.entityStart = this.index;\n        this.entityDecoder.startEntity(this.xmlMode\n            ? DecodingMode.Strict\n            : this.baseState === State.Text ||\n                this.baseState === State.InSpecialTag\n                ? DecodingMode.Legacy\n                : DecodingMode.Attribute);\n    }\n    stateInEntity() {\n        const length = this.entityDecoder.write(this.buffer, this.index - this.offset);\n        // If `length` is positive, we are done with the entity.\n        if (length >= 0) {\n            this.state = this.baseState;\n            if (length === 0) {\n                this.index = this.entityStart;\n            }\n        }\n        else {\n            // Mark buffer as consumed.\n            this.index = this.offset + this.buffer.length - 1;\n        }\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.BeforeSpecialT: {\n                    this.stateBeforeSpecialT(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.InEntity: {\n                    this.stateInEntity();\n                    break;\n                }\n            }\n            this.index++;\n        }\n        this.cleanup();\n    }\n    finish() {\n        if (this.state === State.InEntity) {\n            this.entityDecoder.end();\n            this.state = this.baseState;\n        }\n        this.handleTrailingData();\n        this.cbs.onend();\n    }\n    /** Handle any trailing data. */\n    handleTrailingData() {\n        const endIndex = this.buffer.length + this.offset;\n        // If there is no remaining data, we are done.\n        if (this.sectionStart >= endIndex) {\n            return;\n        }\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.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    emitCodePoint(cp, consumed) {\n        if (this.baseState !== State.Text &&\n            this.baseState !== State.InSpecialTag) {\n            if (this.sectionStart < this.entityStart) {\n                this.cbs.onattribdata(this.sectionStart, this.entityStart);\n            }\n            this.sectionStart = this.entityStart + consumed;\n            this.index = this.sectionStart - 1;\n            this.cbs.onattribentity(cp);\n        }\n        else {\n            if (this.sectionStart < this.entityStart) {\n                this.cbs.ontext(this.sectionStart, this.entityStart);\n            }\n            this.sectionStart = this.entityStart + consumed;\n            this.index = this.sectionStart - 1;\n            this.cbs.ontextentity(cp, this.sectionStart);\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, _f;\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.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.htmlMode = !this.options.xmlMode;\n        this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : this.htmlMode;\n        this.lowerCaseAttributeNames =\n            (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : this.htmlMode;\n        this.recognizeSelfClosing =\n            (_c = options.recognizeSelfClosing) !== null && _c !== void 0 ? _c : !this.htmlMode;\n        this.tokenizer = new ((_d = options.Tokenizer) !== null && _d !== void 0 ? _d : Tokenizer)(this.options, this);\n        this.foreignContext = [!this.htmlMode];\n        (_f = (_e = this.cbs).onparserinit) === null || _f === void 0 ? void 0 : _f.call(_e, 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, endIndex) {\n        var _a, _b;\n        this.endIndex = endIndex - 1;\n        (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, fromCodePoint(cp));\n        this.startIndex = endIndex;\n    }\n    /**\n     * Checks if the current tag is a void element. Override this if you want\n     * to specify your own additional void elements.\n     */\n    isVoidElement(name) {\n        return this.htmlMode && 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.htmlMode && openImpliesClose.get(name);\n        if (impliesClose) {\n            while (this.stack.length > 0 && impliesClose.has(this.stack[0])) {\n                const element = this.stack.shift();\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.unshift(name);\n            if (this.htmlMode) {\n                if (foreignContextElements.has(name)) {\n                    this.foreignContext.unshift(true);\n                }\n                else if (htmlIntegrationElements.has(name)) {\n                    this.foreignContext.unshift(false);\n                }\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, _g, _h;\n        this.endIndex = endIndex;\n        let name = this.getSlice(start, endIndex);\n        if (this.lowerCaseTagNames) {\n            name = name.toLowerCase();\n        }\n        if (this.htmlMode &&\n            (foreignContextElements.has(name) ||\n                htmlIntegrationElements.has(name))) {\n            this.foreignContext.shift();\n        }\n        if (!this.isVoidElement(name)) {\n            const pos = this.stack.indexOf(name);\n            if (pos !== -1) {\n                for (let index = 0; index <= pos; index++) {\n                    const element = this.stack.shift();\n                    // We know the stack has sufficient elements.\n                    (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, index !== pos);\n                }\n            }\n            else if (this.htmlMode && name === \"p\") {\n                // Implicit open before close\n                this.emitOpenTag(\"p\");\n                this.closeCurrentTag(true);\n            }\n        }\n        else if (this.htmlMode && name === \"br\") {\n            // We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.\n            (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, \"br\");\n            (_f = (_e = this.cbs).onopentag) === null || _f === void 0 ? void 0 : _f.call(_e, \"br\", {}, true);\n            (_h = (_g = this.cbs).onclosetag) === null || _h === void 0 ? void 0 : _h.call(_g, \"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.recognizeSelfClosing || this.foreignContext[0]) {\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[0] === 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.shift();\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.htmlMode || 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 = 0; index < this.stack.length; index++) {\n                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.foreignContext.length = 0;\n        this.foreignContext.unshift(!this.htmlMode);\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, \"&quot;\"],\n    [38, \"&amp;\"],\n    [39, \"&apos;\"],\n    [60, \"&lt;\"],\n    [62, \"&gt;\"],\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. `&#xfc;`) 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. `&#xfc;`).\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, \"&quot;\"],\n    [38, \"&amp;\"],\n    [160, \"&nbsp;\"],\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, \"&amp;\"],\n    [60, \"&lt;\"],\n    [62, \"&gt;\"],\n    [160, \"&nbsp;\"],\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, \"&quot;\");\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 handler.\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 handler.\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, with the resulting document.\n * @param options Optional options for the parser and DOM handler.\n * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.\n */\nexport function createDocumentStream(callback, options, elementCallback) {\n    const handler = new DomHandler((error) => callback(error, handler.root), options, elementCallback);\n    return new Parser(handler, options);\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, with an array of root nodes.\n * @param options Optional options for the parser and DOM handler.\n * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.\n * @deprecated Use `createDocumentStream` instead.\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, QuoteType, } 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 CDATA_SECTION_NODE = 4;\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_CDATA_SECTION = 8;\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  /**\n   * @param {Function} Class **Class** of custom element\n   * @returns {string?} found tag name or null\n   */\n  getName(Class) {\n    if (Classes.has(Class)) {\n      const { localName } = Classes.get(Class);\n      return localName;\n    }\n    return null;\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  let parsingCData = false;\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) {\n      if (parsingCData) {\n        append(node, document.createCDATASection(text), active);\n      } else {\n        append(node, document.createTextNode(text), active);\n      }\n    },\n\n    // #cdata\n    oncdatastart() { parsingCData = true; },\n    oncdataend() { parsingCData = false; },\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  CDATA_SECTION_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      case CDATA_SECTION_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  CDATA_SECTION_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 CDATA_SECTION_NODE() { return CDATA_SECTION_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 CDATA_SECTION_NODE() { return CDATA_SECTION_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","const {replace} = '';\n\n// escape\nconst ca = /[<>&\\xA0]/g;\n\nconst esca = {\n  '\\xA0': '&#160;',\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;'\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 {ATTRIBUTE_NODE} from '../shared/constants.js';\nimport {CHANGED, VALUE} from '../shared/symbols.js';\nimport {String, ignoreCase} 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';\nimport {escape} from '../shared/text-escaper.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, name, 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    if (emptyAttributes.has(name) && !value) {\n      return ignoreCase(this) ? name : `${name}=\"\"`;\n    }\n    const escapedValue = ignoreCase(this) ? value.replace(QUOTE, '&quot;') : escape(value);\n    return `${name}=\"${escapedValue}\"`;\n  }\n\n  toJSON() {\n    const json = [];\n    attrAsJSON(this, json);\n    return json;\n  }\n}\n","import {\n  CDATA_SECTION_NODE,\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    case CDATA_SECTION_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    if (nodes.includes(node))\n      replaceWith(node, [node = node.cloneNode()]);\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 {CDATA_SECTION_NODE} from '../shared/constants.js';\nimport {VALUE} from '../shared/symbols.js';\n\nimport {CharacterData} from './character-data.js';\n\n/**\n * @implements globalThis.CDATASection\n */\nexport class CDATASection extends CharacterData {\n  constructor(ownerDocument, data = '') {\n    super(ownerDocument, '#cdatasection', CDATA_SECTION_NODE, data);\n  }\n\n  cloneNode() {\n    const {ownerDocument, [VALUE]: data} = this;\n    return new CDATASection(ownerDocument, data);\n  }\n\n  toString() { return `<![CDATA[${this[VALUE]}]]>`; }\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","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  CDATA_SECTION_NODE,\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 | typeof CDATA_SECTION_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.nodeType === ELEMENT_NODE && 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.nodeType === ELEMENT_NODE && 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      case CDATA_SECTION_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 self = this[PRIVATE];\n    updateKeys(self);\n    const keys = getKeys(self);\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\nfunction getCurrentTarget(ev) {\n  return ev.currentTarget;\n}\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.map(getCurrentTarget);\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  CDATA_SECTION_NODE,\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  String\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';\nimport {escape} from '../shared/text-escaper.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(...(String(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  getBoundingClientRect() {\n    return {\n      x: 0,\n      y: 0,\n      bottom: 0,\n      height: 0,\n      left: 0,\n      right: 0,\n      top: 0,\n      width: 0\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\n  get slot() { return stringAttribute.get(this, 'slot'); }\n  set slot(value) { stringAttribute.set(this, 'slot', 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 != null && 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 && (ignoreCase(this) ? attribute.value : escape(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        case CDATA_SECTION_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        case CDATA_SECTION_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';\nimport {String} from '../shared/utils.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(...(String(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 {CDATASection as _CDATASection} from '../interface/cdata-section.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 CDATASection() { illegalConstructor(); }\nsetPrototypeOf(CDATASection, _CDATASection);\nCDATASection.prototype = _CDATASection.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  CDATASection,\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() {\n    const clickEvent = new Event('click', {bubbles: true, cancelable: true});\n    clickEvent.button = 0;\n\n    this.dispatchEvent(clickEvent);\n  }\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';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nconst tagName = 'slot';\n\n/**\n * @implements globalThis.HTMLSlotElement\n */\nclass HTMLSlotElement extends HTMLElement {\n  constructor(ownerDocument, localName = tagName) {\n    super(ownerDocument, localName);\n  }\n\n  /* c8 ignore start */\n  get name() { return this.getAttribute('name'); }\n  set name(value) { this.setAttribute('name', value); }\n\n  assign() {}\n\n  assignedNodes(options) {\n    const isNamedSlot = !!this.name;\n    const hostChildNodes = this.getRootNode().host?.childNodes ?? [];\n    let slottables;\n\n    if (isNamedSlot) {\n      slottables = [...hostChildNodes].filter(node => node.slot === this.name);\n    } else {\n      slottables = [...hostChildNodes].filter(node => !node.slot);\n    }\n\n    if (options?.flatten) {\n      const result = [];\n\n      // Element and Text nodes are slottables. A slot can be a slottable.\n      for (let slottable of slottables) {\n        if (slottable.localName === 'slot') {\n          result.push(...slottable.assignedNodes({ flatten: true }));\n        } else {\n          result.push(slottable);\n        }\n      }\n\n      slottables = result;\n    }\n\n    // If no assigned nodes are found, it returns the slot's fallback content.\n    return slottables.length ? slottables : [...this.childNodes];\n  }\n\n  assignedElements(options) {\n    const slottables = this.assignedNodes(options).filter(n => n.nodeType === 1);\n\n    // If no assigned elements are found, it returns the slot's fallback content.\n    return slottables.length ? slottables : [...this.children];\n  }\n  /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLSlotElement);\n\nexport {HTMLSlotElement};\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(decodeURI(stringAttribute.get(this, 'href'))); }\n  set href(value) { stringAttribute.set(this, 'href', decodeURI(value)); }\n\n  get download() { return encodeURI(decodeURI(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 {SVGElement} from '../svg/element.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  // TODO: SVG elements should then create contextual fragments\n  //       that return SVG nodes\n  selectNodeContents(node) {\n    this.selectNode(node);\n    this.commonAncestorContainer = 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 { commonAncestorContainer: doc } = this;\n    const isSVG = 'ownerSVGElement' in doc;\n    const document = isSVG ? doc.ownerDocument : doc;\n    const template = document.createElement('template');\n    template.innerHTML = html;\n    let {content} = template;\n    if (isSVG) {\n      const childNodes = [...content.childNodes];\n      content = document.createDocumentFragment();\n      Object.setPrototypeOf(content, SVGElement.prototype);\n      content.ownerSVGElement = document;\n      for (const child of childNodes) {\n        Object.setPrototypeOf(child, SVGElement.prototype);\n        child.ownerSVGElement = document;\n        content.appendChild(child);\n      }\n    }\n    else\n      this.selectNode(content);\n    return 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  CDATA_SECTION_NODE,\n  COMMENT_NODE,\n  SHOW_ALL,\n  SHOW_ELEMENT,\n  SHOW_CDATA_SECTION,\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    case CDATA_SECTION_NODE:\n      return mask & SHOW_CDATA_SECTION;\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 {CDATASection} from './cdata-section.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  createCDATASection(data) { return new CDATASection(this, data); }\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      event.bubbles = !!canBubble;\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"],"names":["get_spread_update","levels","updates","update","to_null_out","accounted_for","i","o","n","key","get_spread_object","spread_props","IDX","HEX","BUFFER","v4","num","out","ctx","insert_hydration","target","svg","anchor","append_hydration","path","g","defs","clipPath","rect","path0","path1","path2","validatePropValue","componentName","propName","propValue","validPropValues","validatePropObjectWithSchema","schema","ICON_NAMES","alert","arrowLeft","arrowRight","arrowUpRight","caretDown","caretUp","check","close","facebook","filter","instagram","linkedIn","menu","pause","play","playOffset","search","threads","youtube","x","id","$$props","name","inheritSize","iconClass","$$invalidate","component","Constants","dynamicHeading","getContext","setContext","svelte_element","svelte_element_data","svelte_element_levels","create_dynamic_element","calculateResultingHeadingLevel","suggestedHeadingLevel","currentDynamicHeadingLevel","levelSum","resultingHeadingLevel","className","ref","currentElement","$$value","STANDARD_THEMES","COLORS","PATTERN_THEMES","DEM_FORUM_THEMES","THEMES","THEME_NAMES","getTheme","themeName","span2","span0","span1","theme","accessibilityLabel","containerClass","currentTheme","dotColorValue","backgroundColorValue","span","create_if_block_2","create_if_block","svelte_element_disabled_value","if_block2","dirty","svelte_element_type_value","svelte_element_href_value","svelte_element_role_value","svelte_element_class_value","current","VALID_VARIANTS","VALID_THEMES","VALID_ICON_ALIGNMENTS","VALID_TYPES","buttonClass","variant","type","disabled","url","label","ariaLabel","submittingText","iconName","isLoading","iconAlignment","buttonThemeClasses","hoverThemeClasses","disabledThemeClasses","hasValidLabel","spacingClasses","$$slots","iconSpacingClasses","iconAlignmentClasses","componentColorTheme","_a","themeClasses","hoverClasses","disabledClasses","cubicInOut","t","cubicOut","f","fade","node","delay","duration","easing","linear","fly","y","opacity","style","target_opacity","transform","od","xValue","xUnit","split_css_unit","yValue","yUnit","u","slide","axis","primary_property","primary_property_value","secondary_properties","capitalized_secondary_properties","e","padding_start_value","padding_end_value","margin_start_value","margin_end_value","border_width_start_value","border_width_end_value","IMAGE_ASPECT_RATIOS","ASPECT_RATIO_CLASSES","validateAspectRatioClasses","aspectRatioClasses","listOfClasses","validClasses","aspectRatioClass","validClass","trapFocus","options","abortController","currentOptions","firstElement","secondElement","lastElement","focusableElements","onFirstElementKeydown","onSecondElementKeydown","onLastElementKeydown","manageFocus","signal","focusableListList","focusableList","triggerElement","cleanUp","observationChange","observer","newOptions","Breakpoints","breakpointValues","mediaQueries","getBreakpoint","width","breakpointWeights","maxFontSizeMapForFullWidthText","isSmallOrMediumBreakpoint","screenWidth","currentBreakpoint","attr","img","img_class_value","img_aria_hidden_value","VALID_CONTAINER_ELEMENTS","src","srcset","sizes","alt","containerElement","elementClass","eagerLoad","frameClasses","create_dynamic_element_1","baseClasses","icon_changes","create_if_block_1","svelte_element_target_value","svelte_element_rel_value","href","ariaHidden","isExternal","isLinkHovered","hideInternalLinkArrow","showLinkArrowOnHover","linkClass","variantClasses","iconClasses","arrowClasses","getElementType","element","animationTriggerClass","shouldShowArrow","animatedUnderlineClasses","innerSpanClasses","mobileClasses","mediumClasses","svelte_element_style_value","gridElement","gridClass","subGridColumns","gridSpanMobile","gridSpanTablet","gridSpanDesktop","div","div_class_value","gridInnerClasses","outsideSpacingClasses","span_class_value","themeClass","_getDefaults","_defaults","changeDefaults","newDefaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","escape$1","html","encode","caret","edit","regex","opt","source","obj","val","valSource","cleanUrl","noopTest","splitCells","tableRow","count","row","match","offset","str","escaped","curr","cells","rtrim","c","invert","l","suffLen","currChar","findClosingBracket","b","level","outputLink","cap","link","raw","lexer","title","text","token","indentCodeCompensation","matchIndentToCode","indentToCode","matchIndentInNode","indentInNode","_Tokenizer","__publicField","trimmed","lines","tokens","inBlockquote","currentLines","currentRaw","currentText","top","lastToken","oldToken","newText","newToken","bull","isordered","list","itemRegex","endsWithBlankLine","endEarly","itemContents","line","nextLine","blankLine","indent","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","htmlBeginRegex","rawLine","nextLineWithoutTabs","istask","ischecked","spacers","hasMultipleLineBreaks","tag","headers","aligns","rows","item","align","cell","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","links","linkString","maskedSrc","prevChar","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","lastCharLength","hasNonSpaceChars","hasSpaceCharsOnBothEnds","prevCapZero","newline","blockCode","fences","hr","heading","bullet","lheading","_paragraph","blockText","_blockLabel","def","_tag","_comment","paragraph","blockquote","blockNormal","gfmTable","blockGfm","blockPedantic","escape","inlineCode","br","inlineText","_punctuation","punctuation","blockSkip","emStrongLDelim","emStrongRDelimAst","emStrongRDelimUnd","anyPunctuation","autolink","_inlineComment","_inlineLabel","reflink","nolink","reflinkSearch","inlineNormal","inlinePedantic","inlineGfm","inlineBreaks","block","inline","_Lexer","rules","next","lastParagraphClipped","cutSrc","extTokenizer","startIndex","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","_Renderer","lang","langString","code","depth","ordered","start","body","j","startAttr","itemBody","checkbox","checked","header","k","content","cleanHref","_TextRenderer","_Parser","anyToken","genericToken","ret","textToken","renderer","_Hooks","markdown","Marked","args","callback","values","tableToken","listToken","_b","childTokens","extensions","pack","opts","ext","prevRenderer","extLevel","prop","rendererProp","rendererFunc","tokenizer","tokenizerProp","tokenizerFunc","prevTokenizer","hooks","hooksProp","hooksFunc","prevHook","arg","walkTokens","packWalktokens","blockType","origOpt","throwError","parser","silent","async","msg","markedInstance","marked","parseInline","entries","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","create","apply","construct","fun","thisValue","Func","arrayForEach","unapply","arrayLastIndexOf","arrayPop","arrayPush","arraySplice","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","objectHasOwnProperty","regExpTest","typeErrorCreate","unconstruct","func","thisArg","_len","_key","_len2","_key2","addToSet","set","array","transformCaseFunc","lcElement","cleanArray","index","clone","object","newObject","property","value","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","CUSTOM_ELEMENT","EXPRESSIONS","NODE_TYPE","getGlobal","_createTrustedTypesPolicy","trustedTypes","purifyHostElement","suffix","ATTR_NAME","policyName","scriptUrl","_createHooksMap","createDOMPurify","window","DOMPurify","root","document","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","Node","Element","NodeFilter","NamedNodeMap","HTMLFormElement","DOMParser","ElementPrototype","cloneNode","remove","getNextSibling","getChildNodes","getParentNode","template","trustedTypesPolicy","emptyHTML","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","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","SAFE_FOR_XML","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","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","cfg","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","parent","tagName","parentTagName","_forceRemove","_removeAttribute","_initDocument","doc","leadingWhitespace","matches","dirtyPayload","_createNodeIterator","_isClobbered","_isNode","_executeHooks","currentNode","data","hook","_sanitizeElements","_isBasicCustomElement","parentNode","childNodes","childCount","childClone","expr","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","attributes","hookEvent","namespaceURI","attrValue","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","importedNode","returnNode","nodeIterator","serializedHTML","entryPoint","hookFunction","purify","purify_cjs","browser","require$$0","getStores","stores","browser_stores","page","fn","navigating","isServer","detectOS","ua","ipad","iphone","android","ios","getEventListenerOptions","isSupportOptions","listenerOptions","noop","testEvent","capture","getPreventEventDefault","event","toArray","initialLockState","getLockState","lockState","handleScroll","targetElement","initialClientPos","scrollTop","scrollLeft","scrollWidth","scrollHeight","clientWidth","clientHeight","clientX","clientY","isVertical","isOnTop","isOnLeft","isOnRight","isOnBottom","setOverflowHiddenPc","$html","htmlStyle","scrollBarWidth","previousPaddingRight","setOverflowHiddenMobile","$body","bodyStyle","supportsNativeSmoothScroll","lock","detectRes","_event$targetTouches$","addTouchMoveListener","unlock","unlockByCallback","removeTouchMoveListener","clearBodyLocks","ul","t_value","set_data","a","a_label_value","a_href_value","li","li_class_value","defaultBulletClasses","tags","componentClass","bulletClass","linkThemeName","linkTheme","factory","module","global","defaultSettings","els","settings","elType","processItem","el","isElement","innerSpan","originalHeight","originalHTML","originalWidth","low","mid","high","innerWidth","innerHeight","hasClass","multiLine","size","addStyleSheet","height","cls","css","ITEM_PREVIEW_LIST_FORMS","FEATURED_IMAGES_POSITIONS","PRIVACY_MANDATE_REGIONS","BANNER_COOKIE_NAME","REQUIRED_COOKIES","BREAK_POINTS","SALESFORCE_CONSTANTS","getUrlObject","INTERNAL_ORIGINS","isExternalUrl","currentOrigin","urlObj","targetOrigin","correctedUrl","isMissingTrailingSlash","getFullUrl","isNotStaticFile","isRootRelative","hasNoTrailingSlash","IMAGE_VARIANT_MAP","STORY_CARD_ASPECT_RATIO_CLASSES","SRCSET_WIDTHS","CONTENTFUL_LARGE_ASSET_URL_PREFIX","CONTENTFUL_IMAGE_CDN_PREFIX","swapAssetUrl","CONTENTFUL_API_DEFAULTS","contentfulImageUrlFor","paramOverrides","fm","apiParams","params","buildSrc","asset","resizeParams","ignoreContentfulImgResize","srcSetFromWidths","widths","SCREENS","sizeForMinWidth","minWidth","sizesForBreakpoints","breakpoints","sizeAttr","sizeForWidth","altTextToDisplay","altText","getImageAspectRatio","aspectRatio","imageDetails","_c","mappedVariant","calculatedVariant","getClosestAspectRatioClass","validAspectRatios","closestAspectRatio","minDifference","ratio","ratioValueString","calcRatios","ratioWidth","ratioHeight","ratioValue","difference","heroThemeStore","writable","filterItemsStore","selectedNewsletters","getTotalNumberOfSelectedFilters","activeFilters","accumulator","currentFilterGroup","option","filterOutInactiveFilterGroups","filterGroups","filterGroup","flattenAppliedFilterGroups","selectedFilterGroups","selectedOptions","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","base","digitCount","startIdx","char","lastCp","expectedLength","valueLength","determineBranch","result","consumed","getDecoder","decoder","lastIndex","len","nodeIdx","branchCount","jumpOffset","lo","hi","midVal","State","isWhitespace","isEndOfTagSection","isASCIIAlpha","QuoteType","Sequences","Tokenizer","xmlMode","decodeEntities","cbs","cp","chunk","isEnd","endOfText","actualIndex","sequence","lower","quote","length","endIndex","formTags","pTag","tableSectionTags","ddtTags","rtpTags","openImpliesClose","voidElements","foreignContextElements","htmlIntegrationElements","reNameEnd","Parser$1","_d","_e","_f","impliesClose","isImplied","_g","_h","pos","isOpenImplied","_j","_k","slice","ElementType","isTag","elem","Root","Text","Directive","Comment","Script","Style","Tag","CDATA","Doctype","Node$2","prev","recursive","DataNode","ProcessingInstruction","NodeWithChildren","children","attribs","isTagRaw","isCDATA","isText","isComment","isDirective","isDocument","hasChildren","cloneChildren","child","Document","instruction","childs","defaultOpts","DomHandler","elementCB","error","lastNode","previousSibling","xmlReplacer","xmlCodeMap","getCodePoint","encodeXML","lastIdx","getEscaper","map","escapeAttribute","escapeText","elementNames","attributeNames","unencodedElements","replaceQuotes","formatAttributes","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","test","recurse","limit","find","nodeStack","indexStack","findOneChild","findOne","existsOne","findAll","Checks","getAttribCheck","attrib","combineFuncs","compileTest","funcs","testElement","getElements","getElementById","getElementsByTagType","removeSubsets","idx","ancestor","DocumentPosition","compareDocumentPosition","nodeA","nodeB","aParents","bParents","maxIdx","sharedParent","aSibling","bSibling","uniqueSort","arr","relative","getFeed","feedRoot","getOneElement","isValidFeed","getAtomFeed","getRssFeed","feed","entry","getMediaElements","addConditionally","description","fetch","pubDate","updated","MEDIA_KEYS_STRING","MEDIA_KEYS_INT","where","media","parseDocument","handler","Parser","parseDOM","createDocumentStream","elementCallback","createDomStream","parseFeedDefaultOptions","parseFeed","NODE_END","ELEMENT_NODE","ATTRIBUTE_NODE","TEXT_NODE","CDATA_SECTION_NODE","COMMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","BLOCK_ELEMENTS","SHOW_ALL","SHOW_ELEMENT","SHOW_TEXT","SHOW_CDATA_SECTION","SHOW_COMMENT","DOCUMENT_POSITION_DISCONNECTED","DOCUMENT_POSITION_PRECEDING","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_CONTAINS","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC","assign","defineProperties","getOwnPropertyDescriptors","keys","$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","resolve","ce","HTMLParser2","self","active","attribute","parseFromString","isHTML","markupLanguage","ownerSVGElement","parsingCData","htmlClasses","registerHTMLClass","names","__viteBrowserExternal","performance","performance_1","perf_hooks","loopSegment","json","attrAsJSON","characterDataAsJSON","elementAsJSON","documentTypeAsJSON","last","nonElementAsJSON","publicId","systemId","createRecord","addedNodes","removedNodes","queueAttribute","attributeFilter","attributeOldValue","records","scheduled","observers","childList","subtree","moCallback","characterData","MutationObserverClass","emptyAttributes","setAttribute","moAttributes","ceAttributes","removeAttribute","booleanAttribute","numericAttribute","stringAttribute","wm","dispatch","listener","invokeListeners","currentTarget","listeners","DOMEventTarget","NodeList","getParentNodeCount","EventTarget","nodeType","location","newNode","referenceNode","newChild","oldChild","other","aNodes","bNodes","replace","ca","esca","pe","m","es","QUOTE","Attr","String","ownerElement","escapedValue","parentElement","nextSibling","previousElementSibling","asFragment","before","after","replaceWith","CDATASection","CharacterData","boolbase","SelectorType","AttributeAction","reName","reEscape","actionTypes","unpackPseudos","isTraversal","selector","stripQuotesFromPseudos","funescape","_","escapedWhitespace","unescapeCSS","isQuote","parse","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","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","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","prepareMatch","selectors","CSSselect.compile","CSSselect.is","isNode","insert","ParentNode","firstElementChild","lastChild","$next","$prev","replaced","NonElementParentNode","deep","constructor","nonEPN","DocumentType","hasPublic","getInnerHtml","setInnerHtml","setOwnerDocument","uhyphen","camel","refs","$1","dataset","DOMStringMap","add","addTokens","DOMTokenList","force","getKeys","updateKeys","rest","prototype","done","cssText","push","CSSStyleDeclaration","BUBBLING_PHASE","AT_TARGET","CAPTURING_PHASE","NONE","getCurrentTarget","ev","GlobalEvent","eventInitDict","host","attributesHandler","isVoid","classList","Event","previously","mode","shadowRoot","init","ShadowRoot","position","addNext","isOpened","classNames","illegalConstructor","_Attr","_CDATASection","_CharacterData","_Comment","_DocumentFragment","_DocumentType","_Element","_Node","_ShadowRoot","_Text","SVGElement","_SVGElement","Facades","Level0","level0","handlers","ownerLess","clickEvent","accessKey","HTMLElement","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","nextChar","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","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","canvasShim","canvasModule","createCanvas","HTMLCanvasElement","HTMLLegendElement","HTMLOptionElement","HTMLSpanElement","HTMLMeterElement","HTMLVideoElement","HTMLTableCellElement","HTMLTitleElement","HTMLOutputElement","HTMLTableRowElement","HTMLDataElement","HTMLMenuElement","HTMLSelectElement","HTMLBRElement","HTMLButtonElement","HTMLMapElement","HTMLOptGroupElement","HTMLDListElement","HTMLTextAreaElement","HTMLFontElement","HTMLDivElement","HTMLLinkElement","HTMLSlotElement","isNamedSlot","hostChildNodes","slottables","slottable","HTMLImageElement","HTMLPreElement","HTMLUListElement","HTMLMetaElement","HTMLPictureElement","HTMLAreaElement","HTMLOListElement","HTMLTableCaptionElement","HTMLAnchorElement","HTMLLabelElement","HTMLUnknownElement","HTMLModElement","HTMLDetailsElement","HTMLSourceElement","HTMLTrackElement","HTMLMarqueeElement","HTMLClasses","Mime","CustomEvent","InputEvent","inputEventInit","ImageClass","deleteContents","Range","isSVG","range","isOK","mask","TreeWalker","whatToShow","documentElement","$","globalExports","globalThis","et","docType","canBubble","cancelable","detail","doctype","externalNode","upgrade","nsp","_Document","textToId","spaces","anythingButSpacesAndLetters","punctuationToStrip"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,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,219,220,221,222,223,224,225,226,227,228,229,230]}