{"version":3,"sources":["node_modules/@esri/arcgis-html-sanitizer/dist/esm/index.js","node_modules/@arcgis/core/widgets/support/vnodeCache.js","node_modules/@arcgis/core/widgets/support/widgetUtils.js"],"sourcesContent":["/*!\n * @esri/arcgis-html-sanitizer - v4.1.0-next.3 - Wed Sep 25 2024 10:04:57 GMT-0400 (Eastern Daylight Time)\n * Copyright (c) 2024 - Environmental Systems Research Institute, Inc.\n * Apache-2.0\n * \n * js-xss\n * Copyright (c) 2012-2018 Zongmin Lei(雷宗民) \n * http://ucdok.com\n * MIT License, see https://github.com/leizongmin/js-xss/blob/master/LICENSE for details\n */\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n/* global Reflect, Promise */\n\nvar __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar lib$1 = {\n exports: {}\n};\nvar _default$1 = {};\nvar lib = {\n exports: {}\n};\nvar _default = {};\n\n/**\n * cssfilter\n *\n * @author 老雷\n */\n\nfunction getDefaultWhiteList$1() {\n // 白名单值说明:\n // true: 允许该属性\n // Function: function (val) { } 返回true表示允许该属性,其他值均表示不允许\n // RegExp: regexp.test(val) 返回true表示允许该属性,其他值均表示不允许\n // 除上面列出的值外均表示不允许\n var whiteList = {};\n whiteList['align-content'] = false; // default: auto\n whiteList['align-items'] = false; // default: auto\n whiteList['align-self'] = false; // default: auto\n whiteList['alignment-adjust'] = false; // default: auto\n whiteList['alignment-baseline'] = false; // default: baseline\n whiteList['all'] = false; // default: depending on individual properties\n whiteList['anchor-point'] = false; // default: none\n whiteList['animation'] = false; // default: depending on individual properties\n whiteList['animation-delay'] = false; // default: 0\n whiteList['animation-direction'] = false; // default: normal\n whiteList['animation-duration'] = false; // default: 0\n whiteList['animation-fill-mode'] = false; // default: none\n whiteList['animation-iteration-count'] = false; // default: 1\n whiteList['animation-name'] = false; // default: none\n whiteList['animation-play-state'] = false; // default: running\n whiteList['animation-timing-function'] = false; // default: ease\n whiteList['azimuth'] = false; // default: center\n whiteList['backface-visibility'] = false; // default: visible\n whiteList['background'] = true; // default: depending on individual properties\n whiteList['background-attachment'] = true; // default: scroll\n whiteList['background-clip'] = true; // default: border-box\n whiteList['background-color'] = true; // default: transparent\n whiteList['background-image'] = true; // default: none\n whiteList['background-origin'] = true; // default: padding-box\n whiteList['background-position'] = true; // default: 0% 0%\n whiteList['background-repeat'] = true; // default: repeat\n whiteList['background-size'] = true; // default: auto\n whiteList['baseline-shift'] = false; // default: baseline\n whiteList['binding'] = false; // default: none\n whiteList['bleed'] = false; // default: 6pt\n whiteList['bookmark-label'] = false; // default: content()\n whiteList['bookmark-level'] = false; // default: none\n whiteList['bookmark-state'] = false; // default: open\n whiteList['border'] = true; // default: depending on individual properties\n whiteList['border-bottom'] = true; // default: depending on individual properties\n whiteList['border-bottom-color'] = true; // default: current color\n whiteList['border-bottom-left-radius'] = true; // default: 0\n whiteList['border-bottom-right-radius'] = true; // default: 0\n whiteList['border-bottom-style'] = true; // default: none\n whiteList['border-bottom-width'] = true; // default: medium\n whiteList['border-collapse'] = true; // default: separate\n whiteList['border-color'] = true; // default: depending on individual properties\n whiteList['border-image'] = true; // default: none\n whiteList['border-image-outset'] = true; // default: 0\n whiteList['border-image-repeat'] = true; // default: stretch\n whiteList['border-image-slice'] = true; // default: 100%\n whiteList['border-image-source'] = true; // default: none\n whiteList['border-image-width'] = true; // default: 1\n whiteList['border-left'] = true; // default: depending on individual properties\n whiteList['border-left-color'] = true; // default: current color\n whiteList['border-left-style'] = true; // default: none\n whiteList['border-left-width'] = true; // default: medium\n whiteList['border-radius'] = true; // default: 0\n whiteList['border-right'] = true; // default: depending on individual properties\n whiteList['border-right-color'] = true; // default: current color\n whiteList['border-right-style'] = true; // default: none\n whiteList['border-right-width'] = true; // default: medium\n whiteList['border-spacing'] = true; // default: 0\n whiteList['border-style'] = true; // default: depending on individual properties\n whiteList['border-top'] = true; // default: depending on individual properties\n whiteList['border-top-color'] = true; // default: current color\n whiteList['border-top-left-radius'] = true; // default: 0\n whiteList['border-top-right-radius'] = true; // default: 0\n whiteList['border-top-style'] = true; // default: none\n whiteList['border-top-width'] = true; // default: medium\n whiteList['border-width'] = true; // default: depending on individual properties\n whiteList['bottom'] = false; // default: auto\n whiteList['box-decoration-break'] = true; // default: slice\n whiteList['box-shadow'] = true; // default: none\n whiteList['box-sizing'] = true; // default: content-box\n whiteList['box-snap'] = true; // default: none\n whiteList['box-suppress'] = true; // default: show\n whiteList['break-after'] = true; // default: auto\n whiteList['break-before'] = true; // default: auto\n whiteList['break-inside'] = true; // default: auto\n whiteList['caption-side'] = false; // default: top\n whiteList['chains'] = false; // default: none\n whiteList['clear'] = true; // default: none\n whiteList['clip'] = false; // default: auto\n whiteList['clip-path'] = false; // default: none\n whiteList['clip-rule'] = false; // default: nonzero\n whiteList['color'] = true; // default: implementation dependent\n whiteList['color-interpolation-filters'] = true; // default: auto\n whiteList['column-count'] = false; // default: auto\n whiteList['column-fill'] = false; // default: balance\n whiteList['column-gap'] = false; // default: normal\n whiteList['column-rule'] = false; // default: depending on individual properties\n whiteList['column-rule-color'] = false; // default: current color\n whiteList['column-rule-style'] = false; // default: medium\n whiteList['column-rule-width'] = false; // default: medium\n whiteList['column-span'] = false; // default: none\n whiteList['column-width'] = false; // default: auto\n whiteList['columns'] = false; // default: depending on individual properties\n whiteList['contain'] = false; // default: none\n whiteList['content'] = false; // default: normal\n whiteList['counter-increment'] = false; // default: none\n whiteList['counter-reset'] = false; // default: none\n whiteList['counter-set'] = false; // default: none\n whiteList['crop'] = false; // default: auto\n whiteList['cue'] = false; // default: depending on individual properties\n whiteList['cue-after'] = false; // default: none\n whiteList['cue-before'] = false; // default: none\n whiteList['cursor'] = false; // default: auto\n whiteList['direction'] = false; // default: ltr\n whiteList['display'] = true; // default: depending on individual properties\n whiteList['display-inside'] = true; // default: auto\n whiteList['display-list'] = true; // default: none\n whiteList['display-outside'] = true; // default: inline-level\n whiteList['dominant-baseline'] = false; // default: auto\n whiteList['elevation'] = false; // default: level\n whiteList['empty-cells'] = false; // default: show\n whiteList['filter'] = false; // default: none\n whiteList['flex'] = false; // default: depending on individual properties\n whiteList['flex-basis'] = false; // default: auto\n whiteList['flex-direction'] = false; // default: row\n whiteList['flex-flow'] = false; // default: depending on individual properties\n whiteList['flex-grow'] = false; // default: 0\n whiteList['flex-shrink'] = false; // default: 1\n whiteList['flex-wrap'] = false; // default: nowrap\n whiteList['float'] = false; // default: none\n whiteList['float-offset'] = false; // default: 0 0\n whiteList['flood-color'] = false; // default: black\n whiteList['flood-opacity'] = false; // default: 1\n whiteList['flow-from'] = false; // default: none\n whiteList['flow-into'] = false; // default: none\n whiteList['font'] = true; // default: depending on individual properties\n whiteList['font-family'] = true; // default: implementation dependent\n whiteList['font-feature-settings'] = true; // default: normal\n whiteList['font-kerning'] = true; // default: auto\n whiteList['font-language-override'] = true; // default: normal\n whiteList['font-size'] = true; // default: medium\n whiteList['font-size-adjust'] = true; // default: none\n whiteList['font-stretch'] = true; // default: normal\n whiteList['font-style'] = true; // default: normal\n whiteList['font-synthesis'] = true; // default: weight style\n whiteList['font-variant'] = true; // default: normal\n whiteList['font-variant-alternates'] = true; // default: normal\n whiteList['font-variant-caps'] = true; // default: normal\n whiteList['font-variant-east-asian'] = true; // default: normal\n whiteList['font-variant-ligatures'] = true; // default: normal\n whiteList['font-variant-numeric'] = true; // default: normal\n whiteList['font-variant-position'] = true; // default: normal\n whiteList['font-weight'] = true; // default: normal\n whiteList['grid'] = false; // default: depending on individual properties\n whiteList['grid-area'] = false; // default: depending on individual properties\n whiteList['grid-auto-columns'] = false; // default: auto\n whiteList['grid-auto-flow'] = false; // default: none\n whiteList['grid-auto-rows'] = false; // default: auto\n whiteList['grid-column'] = false; // default: depending on individual properties\n whiteList['grid-column-end'] = false; // default: auto\n whiteList['grid-column-start'] = false; // default: auto\n whiteList['grid-row'] = false; // default: depending on individual properties\n whiteList['grid-row-end'] = false; // default: auto\n whiteList['grid-row-start'] = false; // default: auto\n whiteList['grid-template'] = false; // default: depending on individual properties\n whiteList['grid-template-areas'] = false; // default: none\n whiteList['grid-template-columns'] = false; // default: none\n whiteList['grid-template-rows'] = false; // default: none\n whiteList['hanging-punctuation'] = false; // default: none\n whiteList['height'] = true; // default: auto\n whiteList['hyphens'] = false; // default: manual\n whiteList['icon'] = false; // default: auto\n whiteList['image-orientation'] = false; // default: auto\n whiteList['image-resolution'] = false; // default: normal\n whiteList['ime-mode'] = false; // default: auto\n whiteList['initial-letters'] = false; // default: normal\n whiteList['inline-box-align'] = false; // default: last\n whiteList['justify-content'] = false; // default: auto\n whiteList['justify-items'] = false; // default: auto\n whiteList['justify-self'] = false; // default: auto\n whiteList['left'] = false; // default: auto\n whiteList['letter-spacing'] = true; // default: normal\n whiteList['lighting-color'] = true; // default: white\n whiteList['line-box-contain'] = false; // default: block inline replaced\n whiteList['line-break'] = false; // default: auto\n whiteList['line-grid'] = false; // default: match-parent\n whiteList['line-height'] = false; // default: normal\n whiteList['line-snap'] = false; // default: none\n whiteList['line-stacking'] = false; // default: depending on individual properties\n whiteList['line-stacking-ruby'] = false; // default: exclude-ruby\n whiteList['line-stacking-shift'] = false; // default: consider-shifts\n whiteList['line-stacking-strategy'] = false; // default: inline-line-height\n whiteList['list-style'] = true; // default: depending on individual properties\n whiteList['list-style-image'] = true; // default: none\n whiteList['list-style-position'] = true; // default: outside\n whiteList['list-style-type'] = true; // default: disc\n whiteList['margin'] = true; // default: depending on individual properties\n whiteList['margin-bottom'] = true; // default: 0\n whiteList['margin-left'] = true; // default: 0\n whiteList['margin-right'] = true; // default: 0\n whiteList['margin-top'] = true; // default: 0\n whiteList['marker-offset'] = false; // default: auto\n whiteList['marker-side'] = false; // default: list-item\n whiteList['marks'] = false; // default: none\n whiteList['mask'] = false; // default: border-box\n whiteList['mask-box'] = false; // default: see individual properties\n whiteList['mask-box-outset'] = false; // default: 0\n whiteList['mask-box-repeat'] = false; // default: stretch\n whiteList['mask-box-slice'] = false; // default: 0 fill\n whiteList['mask-box-source'] = false; // default: none\n whiteList['mask-box-width'] = false; // default: auto\n whiteList['mask-clip'] = false; // default: border-box\n whiteList['mask-image'] = false; // default: none\n whiteList['mask-origin'] = false; // default: border-box\n whiteList['mask-position'] = false; // default: center\n whiteList['mask-repeat'] = false; // default: no-repeat\n whiteList['mask-size'] = false; // default: border-box\n whiteList['mask-source-type'] = false; // default: auto\n whiteList['mask-type'] = false; // default: luminance\n whiteList['max-height'] = true; // default: none\n whiteList['max-lines'] = false; // default: none\n whiteList['max-width'] = true; // default: none\n whiteList['min-height'] = true; // default: 0\n whiteList['min-width'] = true; // default: 0\n whiteList['move-to'] = false; // default: normal\n whiteList['nav-down'] = false; // default: auto\n whiteList['nav-index'] = false; // default: auto\n whiteList['nav-left'] = false; // default: auto\n whiteList['nav-right'] = false; // default: auto\n whiteList['nav-up'] = false; // default: auto\n whiteList['object-fit'] = false; // default: fill\n whiteList['object-position'] = false; // default: 50% 50%\n whiteList['opacity'] = false; // default: 1\n whiteList['order'] = false; // default: 0\n whiteList['orphans'] = false; // default: 2\n whiteList['outline'] = false; // default: depending on individual properties\n whiteList['outline-color'] = false; // default: invert\n whiteList['outline-offset'] = false; // default: 0\n whiteList['outline-style'] = false; // default: none\n whiteList['outline-width'] = false; // default: medium\n whiteList['overflow'] = false; // default: depending on individual properties\n whiteList['overflow-wrap'] = false; // default: normal\n whiteList['overflow-x'] = false; // default: visible\n whiteList['overflow-y'] = false; // default: visible\n whiteList['padding'] = true; // default: depending on individual properties\n whiteList['padding-bottom'] = true; // default: 0\n whiteList['padding-left'] = true; // default: 0\n whiteList['padding-right'] = true; // default: 0\n whiteList['padding-top'] = true; // default: 0\n whiteList['page'] = false; // default: auto\n whiteList['page-break-after'] = false; // default: auto\n whiteList['page-break-before'] = false; // default: auto\n whiteList['page-break-inside'] = false; // default: auto\n whiteList['page-policy'] = false; // default: start\n whiteList['pause'] = false; // default: implementation dependent\n whiteList['pause-after'] = false; // default: implementation dependent\n whiteList['pause-before'] = false; // default: implementation dependent\n whiteList['perspective'] = false; // default: none\n whiteList['perspective-origin'] = false; // default: 50% 50%\n whiteList['pitch'] = false; // default: medium\n whiteList['pitch-range'] = false; // default: 50\n whiteList['play-during'] = false; // default: auto\n whiteList['position'] = false; // default: static\n whiteList['presentation-level'] = false; // default: 0\n whiteList['quotes'] = false; // default: text\n whiteList['region-fragment'] = false; // default: auto\n whiteList['resize'] = false; // default: none\n whiteList['rest'] = false; // default: depending on individual properties\n whiteList['rest-after'] = false; // default: none\n whiteList['rest-before'] = false; // default: none\n whiteList['richness'] = false; // default: 50\n whiteList['right'] = false; // default: auto\n whiteList['rotation'] = false; // default: 0\n whiteList['rotation-point'] = false; // default: 50% 50%\n whiteList['ruby-align'] = false; // default: auto\n whiteList['ruby-merge'] = false; // default: separate\n whiteList['ruby-position'] = false; // default: before\n whiteList['shape-image-threshold'] = false; // default: 0.0\n whiteList['shape-outside'] = false; // default: none\n whiteList['shape-margin'] = false; // default: 0\n whiteList['size'] = false; // default: auto\n whiteList['speak'] = false; // default: auto\n whiteList['speak-as'] = false; // default: normal\n whiteList['speak-header'] = false; // default: once\n whiteList['speak-numeral'] = false; // default: continuous\n whiteList['speak-punctuation'] = false; // default: none\n whiteList['speech-rate'] = false; // default: medium\n whiteList['stress'] = false; // default: 50\n whiteList['string-set'] = false; // default: none\n whiteList['tab-size'] = false; // default: 8\n whiteList['table-layout'] = false; // default: auto\n whiteList['text-align'] = true; // default: start\n whiteList['text-align-last'] = true; // default: auto\n whiteList['text-combine-upright'] = true; // default: none\n whiteList['text-decoration'] = true; // default: none\n whiteList['text-decoration-color'] = true; // default: currentColor\n whiteList['text-decoration-line'] = true; // default: none\n whiteList['text-decoration-skip'] = true; // default: objects\n whiteList['text-decoration-style'] = true; // default: solid\n whiteList['text-emphasis'] = true; // default: depending on individual properties\n whiteList['text-emphasis-color'] = true; // default: currentColor\n whiteList['text-emphasis-position'] = true; // default: over right\n whiteList['text-emphasis-style'] = true; // default: none\n whiteList['text-height'] = true; // default: auto\n whiteList['text-indent'] = true; // default: 0\n whiteList['text-justify'] = true; // default: auto\n whiteList['text-orientation'] = true; // default: mixed\n whiteList['text-overflow'] = true; // default: clip\n whiteList['text-shadow'] = true; // default: none\n whiteList['text-space-collapse'] = true; // default: collapse\n whiteList['text-transform'] = true; // default: none\n whiteList['text-underline-position'] = true; // default: auto\n whiteList['text-wrap'] = true; // default: normal\n whiteList['top'] = false; // default: auto\n whiteList['transform'] = false; // default: none\n whiteList['transform-origin'] = false; // default: 50% 50% 0\n whiteList['transform-style'] = false; // default: flat\n whiteList['transition'] = false; // default: depending on individual properties\n whiteList['transition-delay'] = false; // default: 0s\n whiteList['transition-duration'] = false; // default: 0s\n whiteList['transition-property'] = false; // default: all\n whiteList['transition-timing-function'] = false; // default: ease\n whiteList['unicode-bidi'] = false; // default: normal\n whiteList['vertical-align'] = false; // default: baseline\n whiteList['visibility'] = false; // default: visible\n whiteList['voice-balance'] = false; // default: center\n whiteList['voice-duration'] = false; // default: auto\n whiteList['voice-family'] = false; // default: implementation dependent\n whiteList['voice-pitch'] = false; // default: medium\n whiteList['voice-range'] = false; // default: medium\n whiteList['voice-rate'] = false; // default: normal\n whiteList['voice-stress'] = false; // default: normal\n whiteList['voice-volume'] = false; // default: medium\n whiteList['volume'] = false; // default: medium\n whiteList['white-space'] = false; // default: normal\n whiteList['widows'] = false; // default: 2\n whiteList['width'] = true; // default: auto\n whiteList['will-change'] = false; // default: auto\n whiteList['word-break'] = true; // default: normal\n whiteList['word-spacing'] = true; // default: normal\n whiteList['word-wrap'] = true; // default: normal\n whiteList['wrap-flow'] = false; // default: auto\n whiteList['wrap-through'] = false; // default: wrap\n whiteList['writing-mode'] = false; // default: horizontal-tb\n whiteList['z-index'] = false; // default: auto\n\n return whiteList;\n}\n\n/**\n * 匹配到白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onAttr(name, value, options) {\n // do nothing\n}\n\n/**\n * 匹配到不在白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreAttr(name, value, options) {\n // do nothing\n}\nvar REGEXP_URL_JAVASCRIPT = /javascript\\s*\\:/img;\n\n/**\n * 过滤属性值\n *\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction safeAttrValue$1(name, value) {\n if (REGEXP_URL_JAVASCRIPT.test(value)) return '';\n return value;\n}\n_default.whiteList = getDefaultWhiteList$1();\n_default.getDefaultWhiteList = getDefaultWhiteList$1;\n_default.onAttr = onAttr;\n_default.onIgnoreAttr = onIgnoreAttr;\n_default.safeAttrValue = safeAttrValue$1;\nvar util$1 = {\n indexOf: function (arr, item) {\n var i, j;\n if (Array.prototype.indexOf) {\n return arr.indexOf(item);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n return -1;\n },\n forEach: function (arr, fn, scope) {\n var i, j;\n if (Array.prototype.forEach) {\n return arr.forEach(fn, scope);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n fn.call(scope, arr[i], i, arr);\n }\n },\n trim: function (str) {\n if (String.prototype.trim) {\n return str.trim();\n }\n return str.replace(/(^\\s*)|(\\s*$)/g, '');\n },\n trimRight: function (str) {\n if (String.prototype.trimRight) {\n return str.trimRight();\n }\n return str.replace(/(\\s*$)/g, '');\n }\n};\n\n/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar _$3 = util$1;\n\n/**\n * 解析style\n *\n * @param {String} css\n * @param {Function} onAttr 处理属性的函数\n * 参数格式: function (sourcePosition, position, name, value, source)\n * @return {String}\n */\nfunction parseStyle$1(css, onAttr) {\n css = _$3.trimRight(css);\n if (css[css.length - 1] !== ';') css += ';';\n var cssLength = css.length;\n var isParenthesisOpen = false;\n var lastPos = 0;\n var i = 0;\n var retCSS = '';\n function addNewAttr() {\n // 如果没有正常的闭合圆括号,则直接忽略当前属性\n if (!isParenthesisOpen) {\n var source = _$3.trim(css.slice(lastPos, i));\n var j = source.indexOf(':');\n if (j !== -1) {\n var name = _$3.trim(source.slice(0, j));\n var value = _$3.trim(source.slice(j + 1));\n // 必须有属性名称\n if (name) {\n var ret = onAttr(lastPos, retCSS.length, name, value, source);\n if (ret) retCSS += ret + '; ';\n }\n }\n }\n lastPos = i + 1;\n }\n for (; i < cssLength; i++) {\n var c = css[i];\n if (c === '/' && css[i + 1] === '*') {\n // 备注开始\n var j = css.indexOf('*/', i + 2);\n // 如果没有正常的备注结束,则后面的部分全部跳过\n if (j === -1) break;\n // 直接将当前位置调到备注结尾,并且初始化状态\n i = j + 1;\n lastPos = i + 1;\n isParenthesisOpen = false;\n } else if (c === '(') {\n isParenthesisOpen = true;\n } else if (c === ')') {\n isParenthesisOpen = false;\n } else if (c === ';') {\n if (isParenthesisOpen) ;else {\n addNewAttr();\n }\n } else if (c === '\\n') {\n addNewAttr();\n }\n }\n return _$3.trim(retCSS);\n}\nvar parser$2 = parseStyle$1;\n\n/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar DEFAULT$1 = _default;\nvar parseStyle = parser$2;\n\n/**\n * 返回值是否为空\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull$1(obj) {\n return obj === undefined || obj === null;\n}\n\n/**\n * 浅拷贝对象\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject$1(obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n return ret;\n}\n\n/**\n * 创建CSS过滤器\n *\n * @param {Object} options\n * - {Object} whiteList\n * - {Function} onAttr\n * - {Function} onIgnoreAttr\n * - {Function} safeAttrValue\n */\nfunction FilterCSS$2(options) {\n options = shallowCopyObject$1(options || {});\n options.whiteList = options.whiteList || DEFAULT$1.whiteList;\n options.onAttr = options.onAttr || DEFAULT$1.onAttr;\n options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT$1.onIgnoreAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT$1.safeAttrValue;\n this.options = options;\n}\nFilterCSS$2.prototype.process = function (css) {\n // 兼容各种奇葩输入\n css = css || '';\n css = css.toString();\n if (!css) return '';\n var me = this;\n var options = me.options;\n var whiteList = options.whiteList;\n var onAttr = options.onAttr;\n var onIgnoreAttr = options.onIgnoreAttr;\n var safeAttrValue = options.safeAttrValue;\n var retCSS = parseStyle(css, function (sourcePosition, position, name, value, source) {\n var check = whiteList[name];\n var isWhite = false;\n if (check === true) isWhite = check;else if (typeof check === 'function') isWhite = check(value);else if (check instanceof RegExp) isWhite = check.test(value);\n if (isWhite !== true) isWhite = false;\n\n // 如果过滤后 value 为空则直接忽略\n value = safeAttrValue(name, value);\n if (!value) return;\n var opts = {\n position: position,\n sourcePosition: sourcePosition,\n source: source,\n isWhite: isWhite\n };\n if (isWhite) {\n var ret = onAttr(name, value, opts);\n if (isNull$1(ret)) {\n return name + ':' + value;\n } else {\n return ret;\n }\n } else {\n var ret = onIgnoreAttr(name, value, opts);\n if (!isNull$1(ret)) {\n return ret;\n }\n }\n });\n return retCSS;\n};\nvar css = FilterCSS$2;\n\n/**\n * cssfilter\n *\n * @author 老雷\n */\n\n(function (module, exports) {\n var DEFAULT = _default;\n var FilterCSS = css;\n\n /**\n * XSS过滤\n *\n * @param {String} css 要过滤的CSS代码\n * @param {Object} options 选项:whiteList, onAttr, onIgnoreAttr\n * @return {String}\n */\n function filterCSS(html, options) {\n var xss = new FilterCSS(options);\n return xss.process(html);\n }\n\n // 输出\n exports = module.exports = filterCSS;\n exports.FilterCSS = FilterCSS;\n for (var i in DEFAULT) exports[i] = DEFAULT[i];\n})(lib, lib.exports);\nvar libExports$1 = lib.exports;\nvar util = {\n indexOf: function (arr, item) {\n var i, j;\n if (Array.prototype.indexOf) {\n return arr.indexOf(item);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n return -1;\n },\n forEach: function (arr, fn, scope) {\n var i, j;\n if (Array.prototype.forEach) {\n return arr.forEach(fn, scope);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n fn.call(scope, arr[i], i, arr);\n }\n },\n trim: function (str) {\n if (String.prototype.trim) {\n return str.trim();\n }\n return str.replace(/(^\\s*)|(\\s*$)/g, \"\");\n },\n spaceIndex: function (str) {\n var reg = /\\s|\\n|\\t/;\n var match = reg.exec(str);\n return match ? match.index : -1;\n }\n};\n\n/**\n * default settings\n *\n * @author Zongmin Lei\n */\n\nvar FilterCSS$1 = libExports$1.FilterCSS;\nvar getDefaultCSSWhiteList = libExports$1.getDefaultWhiteList;\nvar _$2 = util;\nfunction getDefaultWhiteList() {\n return {\n a: [\"target\", \"href\", \"title\"],\n abbr: [\"title\"],\n address: [],\n area: [\"shape\", \"coords\", \"href\", \"alt\"],\n article: [],\n aside: [],\n audio: [\"autoplay\", \"controls\", \"crossorigin\", \"loop\", \"muted\", \"preload\", \"src\"],\n b: [],\n bdi: [\"dir\"],\n bdo: [\"dir\"],\n big: [],\n blockquote: [\"cite\"],\n br: [],\n caption: [],\n center: [],\n cite: [],\n code: [],\n col: [\"align\", \"valign\", \"span\", \"width\"],\n colgroup: [\"align\", \"valign\", \"span\", \"width\"],\n dd: [],\n del: [\"datetime\"],\n details: [\"open\"],\n div: [],\n dl: [],\n dt: [],\n em: [],\n figcaption: [],\n figure: [],\n font: [\"color\", \"size\", \"face\"],\n footer: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n header: [],\n hr: [],\n i: [],\n img: [\"src\", \"alt\", \"title\", \"width\", \"height\"],\n ins: [\"datetime\"],\n li: [],\n mark: [],\n nav: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n section: [],\n small: [],\n span: [],\n sub: [],\n summary: [],\n sup: [],\n strong: [],\n strike: [],\n table: [\"width\", \"border\", \"align\", \"valign\"],\n tbody: [\"align\", \"valign\"],\n td: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n tfoot: [\"align\", \"valign\"],\n th: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n thead: [\"align\", \"valign\"],\n tr: [\"rowspan\", \"align\", \"valign\"],\n tt: [],\n u: [],\n ul: [],\n video: [\"autoplay\", \"controls\", \"crossorigin\", \"loop\", \"muted\", \"playsinline\", \"poster\", \"preload\", \"src\", \"height\", \"width\"]\n };\n}\nvar defaultCSSFilter = new FilterCSS$1();\n\n/**\n * default onTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onTag(tag, html, options) {\n // do nothing\n}\n\n/**\n * default onIgnoreTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreTag(tag, html, options) {\n // do nothing\n}\n\n/**\n * default onTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onTagAttr(tag, name, value) {\n // do nothing\n}\n\n/**\n * default onIgnoreTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onIgnoreTagAttr(tag, name, value) {\n // do nothing\n}\n\n/**\n * default escapeHtml function\n *\n * @param {String} html\n */\nfunction escapeHtml(html) {\n return html.replace(REGEXP_LT, \"<\").replace(REGEXP_GT, \">\");\n}\n\n/**\n * default safeAttrValue function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @param {Object} cssFilter\n * @return {String}\n */\nfunction safeAttrValue(tag, name, value, cssFilter) {\n // unescape attribute value firstly\n value = friendlyAttrValue(value);\n if (name === \"href\" || name === \"src\") {\n // filter `href` and `src` attribute\n // only allow the value that starts with `http://` | `https://` | `mailto:` | `/` | `#`\n value = _$2.trim(value);\n if (value === \"#\") return \"#\";\n if (!(value.substr(0, 7) === \"http://\" || value.substr(0, 8) === \"https://\" || value.substr(0, 7) === \"mailto:\" || value.substr(0, 4) === \"tel:\" || value.substr(0, 11) === \"data:image/\" || value.substr(0, 6) === \"ftp://\" || value.substr(0, 2) === \"./\" || value.substr(0, 3) === \"../\" || value[0] === \"#\" || value[0] === \"/\")) {\n return \"\";\n }\n } else if (name === \"background\") {\n // filter `background` attribute (maybe no use)\n // `javascript:`\n REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n return \"\";\n }\n } else if (name === \"style\") {\n // `expression()`\n REGEXP_DEFAULT_ON_TAG_ATTR_7.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_7.test(value)) {\n return \"\";\n }\n // `url()`\n REGEXP_DEFAULT_ON_TAG_ATTR_8.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_8.test(value)) {\n REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n return \"\";\n }\n }\n if (cssFilter !== false) {\n cssFilter = cssFilter || defaultCSSFilter;\n value = cssFilter.process(value);\n }\n }\n\n // escape `<>\"` before returns\n value = escapeAttrValue(value);\n return value;\n}\n\n// RegExp list\nvar REGEXP_LT = //g;\nvar REGEXP_QUOTE = /\"/g;\nvar REGEXP_QUOTE_2 = /"/g;\nvar REGEXP_ATTR_VALUE_1 = /&#([a-zA-Z0-9]*);?/gim;\nvar REGEXP_ATTR_VALUE_COLON = /:?/gim;\nvar REGEXP_ATTR_VALUE_NEWLINE = /&newline;?/gim;\n// var REGEXP_DEFAULT_ON_TAG_ATTR_3 = /\\/\\*|\\*\\//gm;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_4 = /((j\\s*a\\s*v\\s*a|v\\s*b|l\\s*i\\s*v\\s*e)\\s*s\\s*c\\s*r\\s*i\\s*p\\s*t\\s*|m\\s*o\\s*c\\s*h\\s*a):/gi;\n// var REGEXP_DEFAULT_ON_TAG_ATTR_5 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:/gi;\n// var REGEXP_DEFAULT_ON_TAG_ATTR_6 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:\\s*image\\//gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_7 = /e\\s*x\\s*p\\s*r\\s*e\\s*s\\s*s\\s*i\\s*o\\s*n\\s*\\(.*/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_8 = /u\\s*r\\s*l\\s*\\(.*/gi;\n\n/**\n * escape double quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction escapeQuote(str) {\n return str.replace(REGEXP_QUOTE, \""\");\n}\n\n/**\n * unescape double quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction unescapeQuote(str) {\n return str.replace(REGEXP_QUOTE_2, '\"');\n}\n\n/**\n * escape html entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeHtmlEntities(str) {\n return str.replace(REGEXP_ATTR_VALUE_1, function replaceUnicode(str, code) {\n return code[0] === \"x\" || code[0] === \"X\" ? String.fromCharCode(parseInt(code.substr(1), 16)) : String.fromCharCode(parseInt(code, 10));\n });\n}\n\n/**\n * escape html5 new danger entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeDangerHtml5Entities(str) {\n return str.replace(REGEXP_ATTR_VALUE_COLON, \":\").replace(REGEXP_ATTR_VALUE_NEWLINE, \" \");\n}\n\n/**\n * clear nonprintable characters\n *\n * @param {String} str\n * @return {String}\n */\nfunction clearNonPrintableCharacter(str) {\n var str2 = \"\";\n for (var i = 0, len = str.length; i < len; i++) {\n str2 += str.charCodeAt(i) < 32 ? \" \" : str.charAt(i);\n }\n return _$2.trim(str2);\n}\n\n/**\n * get friendly attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction friendlyAttrValue(str) {\n str = unescapeQuote(str);\n str = escapeHtmlEntities(str);\n str = escapeDangerHtml5Entities(str);\n str = clearNonPrintableCharacter(str);\n return str;\n}\n\n/**\n * unescape attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeAttrValue(str) {\n str = escapeQuote(str);\n str = escapeHtml(str);\n return str;\n}\n\n/**\n * `onIgnoreTag` function for removing all the tags that are not in whitelist\n */\nfunction onIgnoreTagStripAll() {\n return \"\";\n}\n\n/**\n * remove tag body\n * specify a `tags` list, if the tag is not in the `tags` list then process by the specify function (optional)\n *\n * @param {array} tags\n * @param {function} next\n */\nfunction StripTagBody(tags, next) {\n if (typeof next !== \"function\") {\n next = function () {};\n }\n var isRemoveAllTag = !Array.isArray(tags);\n function isRemoveTag(tag) {\n if (isRemoveAllTag) return true;\n return _$2.indexOf(tags, tag) !== -1;\n }\n var removeList = [];\n var posStart = false;\n return {\n onIgnoreTag: function (tag, html, options) {\n if (isRemoveTag(tag)) {\n if (options.isClosing) {\n var ret = \"[/removed]\";\n var end = options.position + ret.length;\n removeList.push([posStart !== false ? posStart : options.position, end]);\n posStart = false;\n return ret;\n } else {\n if (!posStart) {\n posStart = options.position;\n }\n return \"[removed]\";\n }\n } else {\n return next(tag, html, options);\n }\n },\n remove: function (html) {\n var rethtml = \"\";\n var lastPos = 0;\n _$2.forEach(removeList, function (pos) {\n rethtml += html.slice(lastPos, pos[0]);\n lastPos = pos[1];\n });\n rethtml += html.slice(lastPos);\n return rethtml;\n }\n };\n}\n\n/**\n * remove html comments\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripCommentTag(html) {\n var retHtml = \"\";\n var lastPos = 0;\n while (lastPos < html.length) {\n var i = html.indexOf(\"\", i);\n if (j === -1) {\n break;\n }\n lastPos = j + 3;\n }\n return retHtml;\n}\n\n/**\n * remove invisible characters\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripBlankChar(html) {\n var chars = html.split(\"\");\n chars = chars.filter(function (char) {\n var c = char.charCodeAt(0);\n if (c === 127) return false;\n if (c <= 31) {\n if (c === 10 || c === 13) return true;\n return false;\n }\n return true;\n });\n return chars.join(\"\");\n}\n_default$1.whiteList = getDefaultWhiteList();\n_default$1.getDefaultWhiteList = getDefaultWhiteList;\n_default$1.onTag = onTag;\n_default$1.onIgnoreTag = onIgnoreTag;\n_default$1.onTagAttr = onTagAttr;\n_default$1.onIgnoreTagAttr = onIgnoreTagAttr;\n_default$1.safeAttrValue = safeAttrValue;\n_default$1.escapeHtml = escapeHtml;\n_default$1.escapeQuote = escapeQuote;\n_default$1.unescapeQuote = unescapeQuote;\n_default$1.escapeHtmlEntities = escapeHtmlEntities;\n_default$1.escapeDangerHtml5Entities = escapeDangerHtml5Entities;\n_default$1.clearNonPrintableCharacter = clearNonPrintableCharacter;\n_default$1.friendlyAttrValue = friendlyAttrValue;\n_default$1.escapeAttrValue = escapeAttrValue;\n_default$1.onIgnoreTagStripAll = onIgnoreTagStripAll;\n_default$1.StripTagBody = StripTagBody;\n_default$1.stripCommentTag = stripCommentTag;\n_default$1.stripBlankChar = stripBlankChar;\n_default$1.cssFilter = defaultCSSFilter;\n_default$1.getDefaultCSSWhiteList = getDefaultCSSWhiteList;\nvar parser$1 = {};\n\n/**\n * Simple HTML Parser\n *\n * @author Zongmin Lei\n */\n\nvar _$1 = util;\n\n/**\n * get tag name\n *\n * @param {String} html e.g. ''\n * @return {String}\n */\nfunction getTagName(html) {\n var i = _$1.spaceIndex(html);\n var tagName;\n if (i === -1) {\n tagName = html.slice(1, -1);\n } else {\n tagName = html.slice(1, i + 1);\n }\n tagName = _$1.trim(tagName).toLowerCase();\n if (tagName.slice(0, 1) === \"/\") tagName = tagName.slice(1);\n if (tagName.slice(-1) === \"/\") tagName = tagName.slice(0, -1);\n return tagName;\n}\n\n/**\n * is close tag?\n *\n * @param {String} html 如:''\n * @return {Boolean}\n */\nfunction isClosing(html) {\n return html.slice(0, 2) === \"\") {\n rethtml += escapeHtml(html.slice(lastPos, tagStart));\n currentHtml = html.slice(tagStart, currentPos + 1);\n currentTagName = getTagName(currentHtml);\n rethtml += onTag(tagStart, rethtml.length, currentTagName, currentHtml, isClosing(currentHtml));\n lastPos = currentPos + 1;\n tagStart = false;\n continue;\n }\n if (c === '\"' || c === \"'\") {\n var i = 1;\n var ic = html.charAt(currentPos - i);\n while (ic.trim() === \"\" || ic === \"=\") {\n if (ic === \"=\") {\n quoteStart = c;\n continue chariterator;\n }\n ic = html.charAt(currentPos - ++i);\n }\n }\n } else {\n if (c === quoteStart) {\n quoteStart = false;\n continue;\n }\n }\n }\n }\n if (lastPos < html.length) {\n rethtml += escapeHtml(html.substr(lastPos));\n }\n return rethtml;\n}\nvar REGEXP_ILLEGAL_ATTR_NAME = /[^a-zA-Z0-9\\\\_:.-]/gim;\n\n/**\n * parse input attributes and returns processed attributes\n *\n * @param {String} html e.g. `href=\"#\" target=\"_blank\"`\n * @param {Function} onAttr e.g. `function (name, value)`\n * @return {String}\n */\nfunction parseAttr$1(html, onAttr) {\n var lastPos = 0;\n var lastMarkPos = 0;\n var retAttrs = [];\n var tmpName = false;\n var len = html.length;\n function addAttr(name, value) {\n name = _$1.trim(name);\n name = name.replace(REGEXP_ILLEGAL_ATTR_NAME, \"\").toLowerCase();\n if (name.length < 1) return;\n var ret = onAttr(name, value || \"\");\n if (ret) retAttrs.push(ret);\n }\n\n // 逐个分析字符\n for (var i = 0; i < len; i++) {\n var c = html.charAt(i);\n var v, j;\n if (tmpName === false && c === \"=\") {\n tmpName = html.slice(lastPos, i);\n lastPos = i + 1;\n lastMarkPos = html.charAt(lastPos) === '\"' || html.charAt(lastPos) === \"'\" ? lastPos : findNextQuotationMark(html, i + 1);\n continue;\n }\n if (tmpName !== false) {\n if (i === lastMarkPos) {\n j = html.indexOf(c, i + 1);\n if (j === -1) {\n break;\n } else {\n v = _$1.trim(html.slice(lastMarkPos + 1, j));\n addAttr(tmpName, v);\n tmpName = false;\n i = j;\n lastPos = i + 1;\n continue;\n }\n }\n }\n if (/\\s|\\n|\\t/.test(c)) {\n html = html.replace(/\\s|\\n|\\t/g, \" \");\n if (tmpName === false) {\n j = findNextEqual(html, i);\n if (j === -1) {\n v = _$1.trim(html.slice(lastPos, i));\n addAttr(v);\n tmpName = false;\n lastPos = i + 1;\n continue;\n } else {\n i = j - 1;\n continue;\n }\n } else {\n j = findBeforeEqual(html, i - 1);\n if (j === -1) {\n v = _$1.trim(html.slice(lastPos, i));\n v = stripQuoteWrap(v);\n addAttr(tmpName, v);\n tmpName = false;\n lastPos = i + 1;\n continue;\n } else {\n continue;\n }\n }\n }\n }\n if (lastPos < html.length) {\n if (tmpName === false) {\n addAttr(html.slice(lastPos));\n } else {\n addAttr(tmpName, stripQuoteWrap(_$1.trim(html.slice(lastPos))));\n }\n }\n return _$1.trim(retAttrs.join(\" \"));\n}\nfunction findNextEqual(str, i) {\n for (; i < str.length; i++) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"=\") return i;\n return -1;\n }\n}\nfunction findNextQuotationMark(str, i) {\n for (; i < str.length; i++) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"'\" || c === '\"') return i;\n return -1;\n }\n}\nfunction findBeforeEqual(str, i) {\n for (; i > 0; i--) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"=\") return i;\n return -1;\n }\n}\nfunction isQuoteWrapString(text) {\n if (text[0] === '\"' && text[text.length - 1] === '\"' || text[0] === \"'\" && text[text.length - 1] === \"'\") {\n return true;\n } else {\n return false;\n }\n}\nfunction stripQuoteWrap(text) {\n if (isQuoteWrapString(text)) {\n return text.substr(1, text.length - 2);\n } else {\n return text;\n }\n}\nparser$1.parseTag = parseTag$1;\nparser$1.parseAttr = parseAttr$1;\n\n/**\n * filter xss\n *\n * @author Zongmin Lei\n */\n\nvar FilterCSS = libExports$1.FilterCSS;\nvar DEFAULT = _default$1;\nvar parser = parser$1;\nvar parseTag = parser.parseTag;\nvar parseAttr = parser.parseAttr;\nvar _ = util;\n\n/**\n * returns `true` if the input value is `undefined` or `null`\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull(obj) {\n return obj === undefined || obj === null;\n}\n\n/**\n * get attributes for a tag\n *\n * @param {String} html\n * @return {Object}\n * - {String} html\n * - {Boolean} closing\n */\nfunction getAttrs(html) {\n var i = _.spaceIndex(html);\n if (i === -1) {\n return {\n html: \"\",\n closing: html[html.length - 2] === \"/\"\n };\n }\n html = _.trim(html.slice(i + 1, -1));\n var isClosing = html[html.length - 1] === \"/\";\n if (isClosing) html = _.trim(html.slice(0, -1));\n return {\n html: html,\n closing: isClosing\n };\n}\n\n/**\n * shallow copy\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject(obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n return ret;\n}\nfunction keysToLowerCase(obj) {\n var ret = {};\n for (var i in obj) {\n if (Array.isArray(obj[i])) {\n ret[i.toLowerCase()] = obj[i].map(function (item) {\n return item.toLowerCase();\n });\n } else {\n ret[i.toLowerCase()] = obj[i];\n }\n }\n return ret;\n}\n\n/**\n * FilterXSS class\n *\n * @param {Object} options\n * whiteList (or allowList), onTag, onTagAttr, onIgnoreTag,\n * onIgnoreTagAttr, safeAttrValue, escapeHtml\n * stripIgnoreTagBody, allowCommentTag, stripBlankChar\n * css{whiteList, onAttr, onIgnoreAttr} `css=false` means don't use `cssfilter`\n */\nfunction FilterXSS(options) {\n options = shallowCopyObject(options || {});\n if (options.stripIgnoreTag) {\n if (options.onIgnoreTag) {\n console.error('Notes: cannot use these two options \"stripIgnoreTag\" and \"onIgnoreTag\" at the same time');\n }\n options.onIgnoreTag = DEFAULT.onIgnoreTagStripAll;\n }\n if (options.whiteList || options.allowList) {\n options.whiteList = keysToLowerCase(options.whiteList || options.allowList);\n } else {\n options.whiteList = DEFAULT.whiteList;\n }\n options.onTag = options.onTag || DEFAULT.onTag;\n options.onTagAttr = options.onTagAttr || DEFAULT.onTagAttr;\n options.onIgnoreTag = options.onIgnoreTag || DEFAULT.onIgnoreTag;\n options.onIgnoreTagAttr = options.onIgnoreTagAttr || DEFAULT.onIgnoreTagAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n options.escapeHtml = options.escapeHtml || DEFAULT.escapeHtml;\n this.options = options;\n if (options.css === false) {\n this.cssFilter = false;\n } else {\n options.css = options.css || {};\n this.cssFilter = new FilterCSS(options.css);\n }\n}\n\n/**\n * start process and returns result\n *\n * @param {String} html\n * @return {String}\n */\nFilterXSS.prototype.process = function (html) {\n // compatible with the input\n html = html || \"\";\n html = html.toString();\n if (!html) return \"\";\n var me = this;\n var options = me.options;\n var whiteList = options.whiteList;\n var onTag = options.onTag;\n var onIgnoreTag = options.onIgnoreTag;\n var onTagAttr = options.onTagAttr;\n var onIgnoreTagAttr = options.onIgnoreTagAttr;\n var safeAttrValue = options.safeAttrValue;\n var escapeHtml = options.escapeHtml;\n var cssFilter = me.cssFilter;\n\n // remove invisible characters\n if (options.stripBlankChar) {\n html = DEFAULT.stripBlankChar(html);\n }\n\n // remove html comments\n if (!options.allowCommentTag) {\n html = DEFAULT.stripCommentTag(html);\n }\n\n // if enable stripIgnoreTagBody\n var stripIgnoreTagBody = false;\n if (options.stripIgnoreTagBody) {\n stripIgnoreTagBody = DEFAULT.StripTagBody(options.stripIgnoreTagBody, onIgnoreTag);\n onIgnoreTag = stripIgnoreTagBody.onIgnoreTag;\n }\n var retHtml = parseTag(html, function (sourcePosition, position, tag, html, isClosing) {\n var info = {\n sourcePosition: sourcePosition,\n position: position,\n isClosing: isClosing,\n isWhite: Object.prototype.hasOwnProperty.call(whiteList, tag)\n };\n\n // call `onTag()`\n var ret = onTag(tag, html, info);\n if (!isNull(ret)) return ret;\n if (info.isWhite) {\n if (info.isClosing) {\n return \"\";\n }\n var attrs = getAttrs(html);\n var whiteAttrList = whiteList[tag];\n var attrsHtml = parseAttr(attrs.html, function (name, value) {\n // call `onTagAttr()`\n var isWhiteAttr = _.indexOf(whiteAttrList, name) !== -1;\n var ret = onTagAttr(tag, name, value, isWhiteAttr);\n if (!isNull(ret)) return ret;\n if (isWhiteAttr) {\n // call `safeAttrValue()`\n value = safeAttrValue(tag, name, value, cssFilter);\n if (value) {\n return name + '=\"' + value + '\"';\n } else {\n return name;\n }\n } else {\n // call `onIgnoreTagAttr()`\n ret = onIgnoreTagAttr(tag, name, value, isWhiteAttr);\n if (!isNull(ret)) return ret;\n return;\n }\n });\n\n // build new tag html\n html = \"<\" + tag;\n if (attrsHtml) html += \" \" + attrsHtml;\n if (attrs.closing) html += \" /\";\n html += \">\";\n return html;\n } else {\n // call `onIgnoreTag()`\n ret = onIgnoreTag(tag, html, info);\n if (!isNull(ret)) return ret;\n return escapeHtml(html);\n }\n }, escapeHtml);\n\n // if enable stripIgnoreTagBody\n if (stripIgnoreTagBody) {\n retHtml = stripIgnoreTagBody.remove(retHtml);\n }\n return retHtml;\n};\nvar xss = FilterXSS;\n\n/**\n * xss\n *\n * @author Zongmin Lei\n */\n\n(function (module, exports) {\n var DEFAULT = _default$1;\n var parser = parser$1;\n var FilterXSS = xss;\n\n /**\n * filter xss function\n *\n * @param {String} html\n * @param {Object} options { whiteList, onTag, onTagAttr, onIgnoreTag, onIgnoreTagAttr, safeAttrValue, escapeHtml }\n * @return {String}\n */\n function filterXSS(html, options) {\n var xss = new FilterXSS(options);\n return xss.process(html);\n }\n exports = module.exports = filterXSS;\n exports.filterXSS = filterXSS;\n exports.FilterXSS = FilterXSS;\n (function () {\n for (var i in DEFAULT) {\n exports[i] = DEFAULT[i];\n }\n for (var j in parser) {\n exports[j] = parser[j];\n }\n })();\n\n // using `xss` on the WebWorker, output `filterXSS` to the globals\n function isWorkerEnv() {\n return typeof self !== \"undefined\" && typeof DedicatedWorkerGlobalScope !== \"undefined\" && self instanceof DedicatedWorkerGlobalScope;\n }\n if (isWorkerEnv()) {\n self.filterXSS = module.exports;\n }\n})(lib$1, lib$1.exports);\nvar libExports = lib$1.exports;\n\n/**\n * Determine if the value is a plain object.\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n */\nvar isPlainObject = function (value) {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n if (Object.prototype.toString.call(value) !== \"[object Object]\") {\n return false;\n }\n var proto = Object.getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n};\n\n/**\n * The Sanitizer Class\n *\n * @export\n * @class Sanitizer\n */\nvar Sanitizer = /** @class */function () {\n function Sanitizer(filterOptions, extendDefaults) {\n var _this = this;\n // Supported HTML Spec: https://doc.arcgis.com/en/arcgis-online/reference/supported-html.htm\n this.arcgisWhiteList = {\n a: [\"href\", \"style\", \"target\"],\n abbr: [\"title\"],\n article: [\"style\"],\n aside: [\"style\"],\n audio: [\"autoplay\", \"controls\", \"loop\", \"muted\", \"preload\"],\n b: [],\n blockquote: [\"style\"],\n br: [],\n code: [\"style\"],\n dd: [\"style\"],\n del: [\"style\"],\n details: [\"open\", \"style\"],\n div: [\"align\", \"aria-hidden\", \"aria-label\", \"style\"],\n dl: [\"style\"],\n dt: [\"style\"],\n em: [],\n figcaption: [\"style\"],\n figure: [\"style\"],\n font: [\"color\", \"face\", \"size\", \"style\"],\n footer: [\"style\"],\n h1: [\"style\"],\n h2: [\"style\"],\n h3: [\"style\"],\n h4: [\"style\"],\n h5: [\"style\"],\n h6: [\"style\"],\n header: [\"style\"],\n hr: [],\n i: [],\n img: [\"alt\", \"border\", \"height\", \"src\", \"style\", \"width\"],\n li: [],\n main: [\"style\"],\n mark: [\"style\"],\n nav: [\"style\"],\n ol: [],\n p: [\"style\"],\n pre: [\"style\"],\n section: [\"style\"],\n source: [\"media\", \"src\", \"type\"],\n span: [\"aria-hidden\", \"aria-label\", \"style\"],\n strong: [],\n sub: [\"style\"],\n summary: [\"style\"],\n sup: [\"style\"],\n table: [\"border\", \"cellpadding\", \"cellspacing\", \"height\", \"style\", \"width\"],\n tbody: [],\n tr: [\"align\", \"height\", \"style\", \"valign\"],\n td: [\"align\", \"colspan\", \"height\", \"nowrap\", \"rowspan\", \"style\", \"valign\", \"width\"],\n th: [\"align\", \"colspan\", \"height\", \"nowrap\", \"rowspan\", \"style\", \"valign\", \"width\"],\n time: [\"style\"],\n u: [],\n ul: [],\n video: [\"autoplay\", \"controls\", \"height\", \"loop\", \"muted\", \"poster\", \"preload\", \"width\"]\n };\n this.arcgisCSSWhiteList = __assign(__assign({}, libExports.getDefaultCSSWhiteList()), {\n \"align-items\": true,\n \"align-self\": true,\n \"flex\": true,\n \"flex-basis\": true,\n \"flex-direction\": true,\n \"flex-flow\": true,\n \"flex-grow\": true,\n \"flex-shrink\": true,\n \"flex-wrap\": true,\n \"float\": true,\n \"gap\": true,\n \"grid\": true,\n \"grid-area\": true,\n \"grid-auto-columns\": true,\n \"grid-auto-flow\": true,\n \"grid-auto-rows\": true,\n \"grid-column\": true,\n \"grid-column-end\": true,\n \"grid-column-start\": true,\n \"grid-row\": true,\n \"grid-row-end\": true,\n \"grid-row-start\": true,\n \"grid-template\": true,\n \"grid-template-areas\": true,\n \"grid-template-columns\": true,\n \"grid-template-rows\": true,\n \"justify-content\": true,\n \"justify-items\": true,\n \"justify-self\": true,\n \"line-height\": true,\n \"overflow\": true\n });\n this.allowedProtocols = [\"http\", \"https\", \"mailto\", \"iform\", \"tel\", \"flow\", \"lfmobile\", \"arcgis-navigator\", \"arcgis-appstudio-player\", \"arcgis-survey123\", \"arcgis-collector\", \"arcgis-workforce\", \"arcgis-explorer\", \"arcgis-trek2there\", \"arcgis-quickcapture\", \"mspbi\", \"comgooglemaps\", \"pdfefile\", \"pdfehttp\", \"pdfehttps\", \"boxapp\", \"boxemm\", \"awb\", \"awbs\", \"gropen\", \"radarscope\"];\n this.arcgisFilterOptions = {\n allowCommentTag: true,\n safeAttrValue: function (tag, name, value, cssFilter) {\n // Take over safe attribute filtering for `a` `href`, `img` `src`,\n // and `source` `src` attributes, otherwise pass onto the\n // default `XSS.safeAttrValue` method.\n if (tag === \"a\" && name === \"href\" || (tag === \"img\" || tag === \"source\") && name === \"src\") {\n return _this.sanitizeUrl(value);\n }\n return libExports.safeAttrValue(tag, name, value, cssFilter);\n }\n };\n this._entityMap = {\n \"&\": \"8\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\",\n \"/\": \"/\"\n };\n var xssFilterOptions;\n if (filterOptions && !extendDefaults) {\n // Override the defaults\n xssFilterOptions = filterOptions;\n } else if (filterOptions && extendDefaults) {\n // Extend the defaults\n xssFilterOptions = Object.create(this.arcgisFilterOptions);\n xssFilterOptions.css = {\n whiteList: this.arcgisCSSWhiteList\n };\n Object.keys(filterOptions).forEach(function (key) {\n if (key === \"whiteList\") {\n // Extend the whitelist by concatenating arrays\n xssFilterOptions.whiteList = _this._extendObjectOfArrays([_this.arcgisWhiteList, filterOptions.whiteList || {}]);\n } else if (key === \"css\") {\n var cssExtensions_1 = filterOptions.css.whiteList;\n if (cssExtensions_1 != null && filterOptions.css instanceof Object) {\n Object.keys(cssExtensions_1).forEach(function (attr) {\n return xssFilterOptions.css.whiteList[attr] = cssExtensions_1[attr];\n });\n }\n } else {\n xssFilterOptions[key] = filterOptions[key];\n }\n });\n } else {\n // Only use the defaults\n xssFilterOptions = Object.create(this.arcgisFilterOptions);\n xssFilterOptions.whiteList = this.arcgisWhiteList;\n xssFilterOptions.css = {\n whiteList: this.arcgisCSSWhiteList\n };\n }\n this.xssFilterOptions = xssFilterOptions;\n // Make this readable to tests\n this._xssFilter = new libExports.FilterXSS(xssFilterOptions);\n }\n /**\n * Sanitizes value to remove invalid HTML tags.\n *\n * Note: If the value passed does not contain a valid JSON data type (String,\n * Number, JSON Object, Array, Boolean, or null), the value will be nullified.\n *\n * @param {any} value The value to sanitize.\n * @returns {any} The sanitized value.\n * @memberof Sanitizer\n */\n Sanitizer.prototype.sanitize = function (value, options) {\n if (options === void 0) {\n options = {};\n }\n switch (typeof value) {\n case \"number\":\n if (isNaN(value) || !isFinite(value)) {\n return null;\n }\n return value;\n case \"boolean\":\n return value;\n case \"string\":\n return this._xssFilter.process(value);\n case \"object\":\n return this._iterateOverObject(value, options);\n default:\n if (options.allowUndefined && typeof value === \"undefined\") {\n return;\n }\n return null;\n }\n };\n /**\n * Sanitizes a URL string following the allowed protocols and sanitization rules.\n *\n * @param {string} value The URL to sanitize.\n * @param {{ isProtocolRequired: boolean }} options Configuration options for URL checking.\n * @returns {string} The sanitized URL if it's valid, or an empty string if the URL is invalid.\n */\n Sanitizer.prototype.sanitizeUrl = function (value, options) {\n var _a = (options !== null && options !== void 0 ? options : {}).isProtocolRequired,\n isProtocolRequired = _a === void 0 ? true : _a;\n var protocol = this._trim(value.substring(0, value.indexOf(\":\")));\n var isRootUrl = value === \"/\";\n var isUrlFragment = /^#/.test(value);\n var isValidProtocol = protocol && this.allowedProtocols.indexOf(protocol.toLowerCase()) > -1;\n if (isRootUrl || isUrlFragment || isValidProtocol) {\n return libExports.escapeAttrValue(value);\n }\n if (!protocol && !isProtocolRequired) {\n return libExports.escapeAttrValue(\"https://\".concat(value));\n }\n return \"\";\n };\n /**\n * Sanitizes an HTML attribute value.\n *\n * @param {string} tag The tagname of the HTML element.\n * @param {string} attribute The attribute name of the HTML element.\n * @param {string} value The raw value to be used for the HTML attribute value.\n * @param {XSS.ICSSFilter} [cssFilter] The CSS filter to be used.\n * @returns {string} The sanitized attribute value.\n * @memberof Sanitizer\n */\n Sanitizer.prototype.sanitizeHTMLAttribute = function (tag, attribute, value, cssFilter) {\n // use the custom safeAttrValue function if provided\n if (typeof this.xssFilterOptions.safeAttrValue === \"function\") {\n return this.xssFilterOptions.safeAttrValue(tag, attribute, value,\n // @ts-expect-error safeAttrValue does handle undefined cssFilter\n cssFilter);\n }\n // otherwise use the default\n // @ts-ignore safeAttrValue does handle undefined cssFilter\n return libExports.safeAttrValue(tag, attribute, value, cssFilter);\n };\n /**\n * Checks if a value only contains valid HTML.\n *\n * @param {any} value The value to validate.\n * @returns {boolean}\n * @memberof Sanitizer\n */\n Sanitizer.prototype.validate = function (value, options) {\n if (options === void 0) {\n options = {};\n }\n var sanitized = this.sanitize(value, options);\n return {\n isValid: value === sanitized,\n sanitized: sanitized\n };\n };\n /**\n * Encodes the following characters, `& < > \\\" ' /` to their hexadecimal HTML entity code.\n * Example: \"·\" => \"8middot;\"\n *\n * @param {string} value The value to encode.\n * @returns {string} The encoded string value.\n * @memberof Sanitizer\n */\n Sanitizer.prototype.encodeHTML = function (value) {\n var _this = this;\n return String(value).replace(/[&<>\"'\\/]/g, function (s) {\n return _this._entityMap[s];\n });\n };\n /**\n * Encodes all non-alphanumeric ASCII characters to their hexadecimal HTML entity codes.\n * Example: \"alert(document.cookie)\" => \"alert(document.cookie)\"\n *\n * @param {string} value The value to encode.\n * @returns {string} The encoded string value.\n * @memberof Sanitizer\n */\n Sanitizer.prototype.encodeAttrValue = function (value) {\n var alphanumericRE = /^[a-zA-Z0-9]$/;\n return String(value).replace(/[\\x00-\\xFF]/g, function (c, idx) {\n return !alphanumericRE.test(c) ? \"&#x\".concat(Number(value.charCodeAt(idx)).toString(16), \";\") : c;\n });\n };\n /**\n * Extends an object of arrays by by concatenating arrays of the same object\n * keys. If the if the previous key's value is not an array, the next key's\n * value will replace the previous key. This method is used for extending the\n * whiteList in the XSS filter options.\n *\n * @private\n * @param {Array<{}>} objects An array of objects.\n * @returns {{}} The extended object.\n * @memberof Sanitizer\n */\n Sanitizer.prototype._extendObjectOfArrays = function (objects) {\n var finalObj = {};\n objects.forEach(function (obj) {\n Object.keys(obj).forEach(function (key) {\n if (Array.isArray(obj[key]) && Array.isArray(finalObj[key])) {\n finalObj[key] = finalObj[key].concat(obj[key]);\n } else {\n finalObj[key] = obj[key];\n }\n });\n });\n return finalObj;\n };\n /**\n * Iterate over a plain object or array to deeply sanitize each value.\n *\n * @private\n * @param {object} obj The object to iterate over.\n * @returns {(object | null)} The sanitized object.\n * @memberof Sanitizer\n */\n Sanitizer.prototype._iterateOverObject = function (obj, options) {\n var _this = this;\n if (options === void 0) {\n options = {};\n }\n try {\n var hasChanged_1 = false;\n var changedObj = void 0;\n if (Array.isArray(obj)) {\n changedObj = obj.reduce(function (prev, value) {\n var validation = _this.validate(value, options);\n if (validation.isValid) {\n return prev.concat([value]);\n } else {\n hasChanged_1 = true;\n return prev.concat([validation.sanitized]);\n }\n }, []);\n } else if (!isPlainObject(obj)) {\n if (options.allowUndefined && typeof obj === \"undefined\") {\n return;\n }\n return null;\n } else {\n var keys = Object.keys(obj);\n changedObj = keys.reduce(function (prev, key) {\n var value = obj[key];\n var validation = _this.validate(value, options);\n if (validation.isValid) {\n prev[key] = value;\n } else {\n hasChanged_1 = true;\n prev[key] = validation.sanitized;\n }\n return prev;\n }, {});\n }\n if (hasChanged_1) {\n return changedObj;\n }\n return obj;\n } catch (err) {\n return null;\n }\n };\n /**\n * Trim whitespace from the start and ends of a string.\n * @param {string} val The string to trim.\n * @returns {string} The trimmed string.\n */\n Sanitizer.prototype._trim = function (val) {\n // @ts-ignore This is used by Jest,\n // but TypeScript errors since it assumes `trim` is always available.\n return String.prototype.trim ? val.trim() : val.replace(/(^\\s*)|(\\s*$)/g, \"\");\n };\n return Sanitizer;\n}();\nexport { Sanitizer, Sanitizer as default };","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.31/esri/copyright.txt for details.\n*/\nconst n = new Map();\nfunction t() {\n n.clear();\n}\nfunction e(t) {\n return n.get(t);\n}\nfunction c(t, e) {\n n.set(t, e);\n}\nfunction o(t) {\n n.delete(t);\n}\nexport { t as clearVNodeCache, o as deleteVNodeCache, e as getVNodeCache, c as setVNodeCache };","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.31/esri/copyright.txt for details.\n*/\nimport e from \"@esri/arcgis-html-sanitizer\";\nimport t from \"../../core/ArrayPool.js\";\nimport { handlesGroup as r, makeHandle as o } from \"../../core/handleUtils.js\";\nimport \"../../core/has.js\";\nimport \"../../core/Logger.js\";\nimport { signalFromSignalOrOptions as n } from \"../../core/promiseUtils.js\";\nimport { watch as s, syncAndInitial as i } from \"../../core/reactiveUtils.js\";\nimport { waitAnimationFrame as a } from \"../../core/scheduling.js\";\nimport { clearVNodeCache as c } from \"./vnodeCache.js\";\nfunction l(...e) {\n const r = t.acquire();\n for (let t = 0; t < e.length; t++) {\n const o = e[t],\n n = typeof o;\n if (\"string\" === n) r.push(o);else if (Array.isArray(o)) r.push.apply(r, o);else if (\"object\" === n) for (const e in o) o[e] && r.push(e);\n }\n const o = r.join(\" \");\n return t.release(r), o;\n}\nconst p = (() => {\n const e = new Map(),\n t = new ResizeObserver(t => {\n c();\n for (const r of t) e.get(r.target)?.(r);\n }),\n n = (r, n, s) => (e.set(r, n), t.observe(r, s), o(() => {\n t.unobserve(r), e.delete(r);\n }));\n return (e, t, a) => {\n let c = null;\n return r([s(() => \"function\" == typeof e ? e() : e, e => {\n c?.remove(), e && (c = n(e, t, a));\n }, i), o(() => c?.remove())]);\n };\n})();\nfunction u(e) {\n const t = e?.closest(\"[dir]\");\n return null !== t && t instanceof HTMLElement && \"rtl\" === t.dir || \"rtl\" === document.dir;\n}\nfunction f(e) {\n const t = \"data-node-ref\";\n this[e.getAttribute(t)] = null;\n}\nfunction m(e) {\n const t = \"data-node-ref\";\n this[e.getAttribute(t)] = e;\n}\nconst d = [\"dd\", \"dl\", \"dt\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"sub\", \"sup\", ...[\"animate\", \"animatetransform\", \"circle\", \"clippath\", \"defs\", \"ellipse\", \"g\", \"image\", \"line\", \"lineargradient\", \"marker\", \"mask\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialgradient\", \"rect\", \"stop\", \"svg\", \"switch\", \"symbol\", \"text\", \"textpath\", \"tspan\", \"use\"]],\n g = d.reduce((e, t) => (e[t] = [], e), {}),\n h = [\"align\", \"alink\", \"alt\", \"bgcolor\", \"border\", \"cellpadding\", \"cellspacing\", \"class\", \"color\", \"cols\", \"colspan\", \"coords\", \"d\", \"dir\", \"face\", \"height\", \"hspace\", \"ismap\", \"lang\", \"marginheight\", \"marginwidth\", \"multiple\", \"nohref\", \"noresize\", \"noshade\", \"nowrap\", \"ref\", \"rel\", \"rev\", \"rows\", \"rowspan\", \"scrolling\", \"shape\", \"span\", \"summary\", \"tabindex\", \"title\", \"usemap\", \"valign\", \"value\", \"vlink\", \"vspace\", \"width\"],\n y = new e({\n whiteList: g,\n onTagAttr: (e, t, r) => {\n const o = `${t}=\"${r}\"`;\n if (h.includes(t)) return o;\n },\n stripIgnoreTag: !0,\n stripIgnoreTagBody: [\"script\", \"style\"]\n }, !0);\nfunction v(e) {\n return \"Enter\" === e || \" \" === e;\n}\nasync function w(e, t) {\n await a(n(t));\n const r = \"function\" == typeof e ? e() : e;\n r && (\"setFocus\" in r && \"function\" == typeof r.setFocus ? await r.setFocus() : r instanceof HTMLElement && r.focus());\n}\nexport { d as additionalAllowedTags, l as classes, f as discardNode, v as isActivationKey, u as isRTL, p as onResize, y as renderingSanitizer, h as safeAttrs, w as setFocus, m as storeNode };"],"mappings":"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","names":["__assign","t","s","i","n","p","lib$1","_default$1","lib","_default","getDefaultWhiteList$1","whiteList","onAttr","name","value","options","onIgnoreAttr","REGEXP_URL_JAVASCRIPT","safeAttrValue$1","util$1","arr","item","j","fn","scope","str","_$3","parseStyle$1","css","cssLength","isParenthesisOpen","lastPos","retCSS","addNewAttr","source","ret","c","parser$2","DEFAULT$1","parseStyle","isNull$1","obj","shallowCopyObject$1","FilterCSS$2","me","safeAttrValue","sourcePosition","position","check","isWhite","opts","module","exports","DEFAULT","FilterCSS","filterCSS","html","xss","libExports$1","util","reg","match","FilterCSS$1","getDefaultCSSWhiteList","_$2","getDefaultWhiteList","defaultCSSFilter","onTag","tag","onIgnoreTag","onTagAttr","onIgnoreTagAttr","escapeHtml","REGEXP_LT","REGEXP_GT","cssFilter","friendlyAttrValue","REGEXP_DEFAULT_ON_TAG_ATTR_4","REGEXP_DEFAULT_ON_TAG_ATTR_7","REGEXP_DEFAULT_ON_TAG_ATTR_8","escapeAttrValue","REGEXP_QUOTE","REGEXP_QUOTE_2","REGEXP_ATTR_VALUE_1","REGEXP_ATTR_VALUE_COLON","REGEXP_ATTR_VALUE_NEWLINE","escapeQuote","unescapeQuote","escapeHtmlEntities","code","escapeDangerHtml5Entities","clearNonPrintableCharacter","str2","len","onIgnoreTagStripAll","StripTagBody","tags","next","isRemoveAllTag","isRemoveTag","removeList","posStart","end","rethtml","pos","stripCommentTag","retHtml","stripBlankChar","chars","char","parser$1","_$1","getTagName","tagName","isClosing","parseTag$1","tagStart","quoteStart","currentPos","currentTagName","currentHtml","chariterator","ic","REGEXP_ILLEGAL_ATTR_NAME","parseAttr$1","lastMarkPos","retAttrs","tmpName","addAttr","v","findNextQuotationMark","findNextEqual","findBeforeEqual","stripQuoteWrap","isQuoteWrapString","text","parser","parseTag","parseAttr","_","isNull","getAttrs","shallowCopyObject","keysToLowerCase","FilterXSS","stripIgnoreTagBody","info","attrs","whiteAttrList","attrsHtml","isWhiteAttr","filterXSS","isWorkerEnv","libExports","isPlainObject","proto","Sanitizer","filterOptions","extendDefaults","_this","xssFilterOptions","key","cssExtensions_1","attr","_a","isProtocolRequired","protocol","isRootUrl","isUrlFragment","isValidProtocol","attribute","sanitized","alphanumericRE","idx","objects","finalObj","hasChanged_1","changedObj","prev","validation","keys","val","n","t","e","c","o","l","t","o","n","e","p","r","a","c","d","A","u","f","m","g","h","y","Sanitizer","v","w","__async","P"],"x_google_ignoreList":[0,1,2]}